[Example] Refactor example

This commit is contained in:
SpaiR committed 2020-09-05 15:27:03 +03:00
1 parent 4e564240ca
commit 3d438a0029
4 files changed
+93 -44

No files matched your search

@@ -0,0 +1,13 @@
package imgui.internal.flag;
/**
* Store the source authority (dock node vs window) of a field
*/
public final class ImGuiDataAuthority {
private ImGuiDataAuthority() {
}
public static final int Auto = 0;
public static final int DockNode = 1;
public static final int Window = 2;
}
@@ -1,5 +1,8 @@
package imgui.internal.flag;
/**
* Extend ImGuiDockNodeFlags
*/
public final class ImGuiDockNodeFlags extends imgui.flag.ImGuiDockNodeFlags {
private ImGuiDockNodeFlags() {
}
+76 -41
View File
@@ -15,6 +15,7 @@ import org.lwjgl.BufferUtils;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import static org.lwjgl.opengl.GL32.*;
@@ -30,41 +31,78 @@ final class ExampleUi {
// Test data for payload
private String dropTargetText = "Drop Here";
// To modify background color dynamically
final float[] backgroundColor = new float[]{0.5f, 0, 0};
// Resizable input example
private final ImString resizableStr = new ImString(5);
// Toggles
private final ImBoolean showBottomDockedWindow = new ImBoolean(true);
private final ImBoolean showDemoWindow = new ImBoolean();
// Attach image example
private int dukeTexture;
private int dukeTexture = 0;
void init() throws Exception {
dukeTexture = loadTexture(ImageIO.read(new File("src/test/resources/Duke_waving.png")));
private boolean isBottomDockedWindowInit = false;
// To modify background color dynamically
final float[] backgroundColor = new float[]{0.5f, 0, 0};
void render() throws Exception {
final int dockspaceId = ImGui.getID("MyDockSpace");
showDockSpace(dockspaceId);
setupBottomDockedWindow(dockspaceId);
showBottomDockedWindow();
final ImGuiViewport mainViewport = ImGui.getMainViewport();
ImGui.setNextWindowSize(600, 300, ImGuiCond.Once);
ImGui.setNextWindowPos(mainViewport.getWorkPosX() + 10, mainViewport.getWorkPosY() + 10, ImGuiCond.Once);
ImGui.begin("Custom window"); // Start Custom window
showWindowImage();
showToggles();
ImGui.separator();
showDragNDrop();
showBackgroundPicker();
ImGui.separator();
showResizableInput();
ImGui.separator();
ImGui.newLine();
showDemoLink();
ImGui.end(); // End Custom window
if (showDemoWindow.get()) {
ImGui.showDemoWindow(showDemoWindow);
}
}
void render() {
private void showDockSpace(final int dockspaceId) {
final ImGuiViewport mainViewport = ImGui.getMainViewport();
int windowFlags = 0;
final int windowFlags = ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize
| ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoNavFocus | ImGuiWindowFlags.NoBackground;
ImGui.setNextWindowPos(mainViewport.getWorkPosX(), mainViewport.getWorkPosY());
ImGui.setNextWindowSize(mainViewport.getWorkSizeX(), mainViewport.getWorkSizeY());
ImGui.setNextWindowViewport(mainViewport.getID());
ImGui.pushStyleVar(ImGuiStyleVar.WindowRounding, 0);
ImGui.pushStyleVar(ImGuiStyleVar.WindowBorderSize, 0);
windowFlags |= ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove;
windowFlags |= ImGuiWindowFlags.NoBringToFrontOnFocus | ImGuiWindowFlags.NoNavFocus | ImGuiWindowFlags.NoBackground;
ImGui.pushStyleVar(ImGuiStyleVar.WindowPadding, 0, 0);
ImGui.begin("Dockspace Demo", windowFlags);
ImGui.popStyleVar(3);
final int dockspaceId = ImGui.getID("MyDockSpace");
ImGui.dockSpace(dockspaceId, 0, 0, ImGuiDockNodeFlags.PassthruCentralNode);
ImGui.end();
}
if (ImGui.dockBuilderGetNode(dockspaceId) == null) {
private void setupBottomDockedWindow(final int dockspaceId) {
if (!isBottomDockedWindowInit) {
ImGui.dockBuilderRemoveNode(dockspaceId);
ImGui.dockBuilderAddNode(dockspaceId, ImGuiDockNodeFlags.DockSpace);
@@ -73,34 +111,39 @@ final class ExampleUi {
ImGui.dockBuilderDockWindow("Bottom Docked Window", dockIdBottom);
ImGui.dockBuilderSetNodeSize(dockIdBottom, 150f, 150f);
ImGui.dockBuilderFinish(dockspaceId);
isBottomDockedWindowInit = true;
}
}
ImGui.dockSpace(dockspaceId, 0, 0, ImGuiDockNodeFlags.PassthruCentralNode);
ImGui.end();
private void showBottomDockedWindow() {
if (showBottomDockedWindow.get()) {
ImGui.begin("Bottom Docked Window", showBottomDockedWindow);
ImGui.begin("Bottom Docked Window", showBottomDockedWindow, ImGuiWindowFlags.AlwaysAutoResize);
ImGui.text("An example of how to create docked windows.");
ImGui.end();
}
}
ImGui.setNextWindowSize(600, 300, ImGuiCond.Once);
ImGui.setNextWindowPos(mainViewport.getWorkPosX() + 10, mainViewport.getWorkPosY() + 10, ImGuiCond.Once);
ImGui.begin("Custom window"); // Start Custom window
private void showWindowImage() throws IOException {
if (dukeTexture == 0) {
dukeTexture = loadTexture(ImageIO.read(new File("src/test/resources/Duke_waving.png")));
}
// Draw an image in the bottom-right corner of the window
final float xPoint = ImGui.getWindowPosX() + ImGui.getWindowSizeX() - 100;
final float yPoint = ImGui.getWindowPosY() + ImGui.getWindowSizeY();
ImGui.getWindowDrawList().addImage(dukeTexture, xPoint, yPoint - 180, xPoint + 100, yPoint);
}
// Checkbox to show demo window
ImGui.checkbox("Show bottom docked window", showBottomDockedWindow);
ImGui.checkbox("Show demo window", showDemoWindow);
private void showToggles() {
ImGui.checkbox("Show Demo Window", showDemoWindow);
ImGui.checkbox("Show Bottom Docked Window", showBottomDockedWindow);
if (ImGui.button("Reset Bottom Dock Window")) {
isBottomDockedWindowInit = false;
}
}
ImGui.separator();
// Drag'n'Drop functionality
private void showDragNDrop() {
ImGui.button("Drag me");
if (ImGui.beginDragDropSource()) {
ImGui.setDragDropPayloadObject("payload_type", "Test Payload");
@@ -116,16 +159,16 @@ final class ExampleUi {
}
ImGui.endDragDropTarget();
}
}
// Color picker
private void showBackgroundPicker() {
ImGui.alignTextToFramePadding();
ImGui.text("Background color:");
ImGui.sameLine();
ImGui.colorEdit3("##click_counter_col", backgroundColor, ImGuiColorEditFlags.NoInputs | ImGuiColorEditFlags.NoDragDrop);
}
ImGui.separator();
// Input field with auto-resize ability
private void showResizableInput() {
ImGui.text("You can use text inputs with auto-resizable strings!");
ImGui.inputText("Resizable input", resizableStr, ImGuiInputTextFlags.CallbackResize);
ImGui.text("text len:");
@@ -135,11 +178,9 @@ final class ExampleUi {
ImGui.text("| buffer size:");
ImGui.sameLine();
ImGui.textColored(COLOR_CORAL, Integer.toString(resizableStr.getBufferSize()));
}
ImGui.separator();
ImGui.newLine();
// Link to the original demo file
private void showDemoLink() {
ImGui.text("Consider to look the original ImGui demo: ");
ImGui.setNextItemWidth(500);
ImGui.textColored(COLOR_LIMEGREEN, IMGUI_DEMO_LINK);
@@ -147,12 +188,6 @@ final class ExampleUi {
if (ImGui.button("Copy")) {
ImGui.setClipboardText(IMGUI_DEMO_LINK);
}
ImGui.end(); // End Custom window
if (showDemoWindow.get()) {
ImGui.showDemoWindow(showDemoWindow);
}
}
private int loadTexture(final BufferedImage image) {
@@ -55,8 +55,6 @@ public final class ImGuiGlfwExample {
// ImGui context should be created as well.
imGuiGl3.init(glslVersion);
exampleUi.init();
loop();
// You should clean up after yourself in reverse order.
@@ -199,7 +197,7 @@ public final class ImGuiGlfwExample {
}
// Main application loop
private void loop() {
private void loop() throws Exception {
// Run the rendering loop until the user has attempted to close the window
while (!glfwWindowShouldClose(windowPtr)) {
startFrame();