imgui-java

JNI based binding for Dear ImGui

MIT License

Stars
594

Bot releases are hidden (Show)

imgui-java -

Published by SpaiR over 3 years ago

Added ImPlot extension (#56) [@calvertdw @perrymacmurray];

imgui-java -

Published by SpaiR over 3 years ago

  • Updated Dear ImGui to v1.83 [0ed891f];
  • Dropped support of 32bit native binaries;
  • Added ImFontGlyphRangesBuilder (#51) [@abvadabra];
  • Added ImGuizmo API (#54) [@AAstroPhysiCS];
  • imgui-app.jar now contains all needed dependecies to run Dear ImGui Application.
    Previously it was still needed to add native libs and binding/lwjgl3 modules as well.

Consider reading the official changelog to see other library changes.

imgui-java -

Published by SpaiR over 3 years ago

  • Fixed Maven artifacts for native libraries with FreeType support;
  • imgui-app for Windows is now uses a FreeType version of library;
    As was said: it's safe to do that, since dll's are compiled fully statically.
imgui-java -

Published by SpaiR over 3 years ago

  • Updated ImGuiImplGl3 to the latest Dear ImGui implementation; [d1e264a66365ccd1c3c7bc94fb687aebcabae230]
  • Updated ImGuiImplGlfw to the latest Dear ImGui implementation; [e8678ef62ca458402694cb9d5d501b7a46257906]
    Now it will check GLFW version and ignore features, which are not available for user.
  • FreeType font renderer is now optional, read FreeType section for more info.
imgui-java -

Published by SpaiR over 3 years ago

  • Updated Dear ImGui to v1.82 [0ed891f];
  • Allow null to be passed as the shortcut param to MenuItem (#35) [@sh54].

Consider reading the official changelog to see other library changes.

imgui-java -

Published by SpaiR over 3 years ago

Refactored Drag & Drop API

The original Dear ImGui uses raw byte arrays as a payload data. This is fine for C++, yet unacceptable for Java.
Binding has a method setDragDropPayloadObject(), which is able to take a Java object as a payload.
Now it's the only available method and it was renamed to setDragDropPayload().

API itself was extended, so now you can pass any payload, without passing String data type.
Binding will take payload class as an identifier. For example, now you can write:

static CustomClass PAYLOAD = new CustomClass();

ImGui.setDragDropPayload(PAYLOAD);
...and later...
CustomClass payload = ImGui.acceptDragDropPayload(CustomClass.class);

Binding will do a proper typecasting automatically.

imgui-java -

Published by SpaiR over 3 years ago

  • Removed lazy-created structs. This fixes the problem which addressed to situations, when Dear ImGui context dropped, but underlying pointer for structs didn't update;
  • Added #isValidPtr()/#isNotValidPtr() to verify object uses the valid pointer;
  • ImVec2/4 and type classes are now has #set(value) method, where value is another object of that class.
    Fox example: imFloat.set(new ImFloat()) or imVec2.set(new ImVec2());
  • Added ImString#clear method to drop string content;
  • Binding API now can return ImVec2/ImVec4 directly, without "dst" argument. Under the hood, such methods will create a new object and fill it with data;
  • Added ImGuiStyle#getColors() to return float[ImGuiCol.COUNT][4] array with GUI colors;
  • Fixed ImGui#getDragDropPayloadObject() threw exception if there were no payload.
imgui-java -

Published by SpaiR over 3 years ago

  • Updated Dear ImGui to v1.81 [08bf84a];
    Breaking imgui-java changes:
    • ImGuiFreeType class has been deleted. Dear ImGui simplified the process of enabling freetype font renderer. Now, if you are using precompiled libraries, it is enabled by default;
  • Added ImDrawList methods: PrimReserve, PrimUnreserve, PrimRect, PrimRectUV, PrimQuadUV, PrimWriteVtx, PrimVtx;
  • Added ImFont methods: FindGlyph, FindGlyphNoFallback, GetCharAdvance, IsLoaded, GetDebugName, CalcTextSizeA, CalcWordWrapPositionA, RenderChar, RenderText;
  • Updated ImNodes to 868dda60d5.

Consider reading the official changelog to see other API changes.

imgui-java -

Published by SpaiR over 3 years ago

  • Updated Dear ImGui to v1.80;
  • Added new imgui-app module. More info below.
  • Added two native extensions: ImNodes and imgui-node-editor (#29) [@abvadabra];
  • Example was revamped. It was simplified, remade to use new imgui-app module and was moved into its own module. Has example of extensions usage as well;
  • Added several new methods:
    • ImGui#inputTextWithHint();
    • ImColor#hslToColor;
    • ImGui#calcItemSize (internal API);
    • ImGui#splitterBehavior (internal API);

ImGui App Module (Application abstration)

New module provides an abstraction layer to create ImGui applications. It hides all low-level routine. Every life-cycle method could be overriden with custom logic, so you can extend class in the way you need. Or just keep it as it is, if need nothing specific. Simple application may look like this:

import imgui.ImGui;
import imgui.app.Application;

public class Main extends Application {
    @Override
    protected void configure(Configuration config) {
        config.setTitle("Dear ImGui is Awesome!");
    }

    @Override
    public void process() {
        ImGui.text("Hello, World!");
    }

    public static void main(String[] args) {
        launch(new Main());
    }
}
imgui-java -

Published by SpaiR about 4 years ago

  • Updated Dear ImGui to v1.79
  • Fixed four of the ImGuiTreeNodeFlags that were all set to Framed (#26) [@silentorb]
  • Added clone() method to ImRect class

Build instruction update

Readme now has a How to Build Native Libraries section. It shows how to build natives libraries for all OS, so everyone can play with it.

imgui-java -

Published by SpaiR about 4 years ago

  • Binding will extract libraries from classpath into unique folder
  • Added ImGuiTextFilter API
imgui-java -

Published by SpaiR about 4 years ago

Added internal ImGuiItemFlags api

imgui-java -

Published by SpaiR about 4 years ago

Fixed a bug with method arguments for dockBuilderSplitNode

imgui-java -

Published by SpaiR about 4 years ago

Added support for DockBuilder API. It could be used to created windows docked from start. https://github.com/ocornut/imgui/issues/2109#issuecomment-426204357
A proper example has been added as well.

imgui-java - v1.78-1.0

Published by SpaiR about 4 years ago

WARNING!
Binding address has been updated. It's the same but with imgui-java prefix for artifacts id. Check readme to see dependencies instruction.


  • Updated Dear ImGui to v1.78.
  • Added support for multi-viewports feature. If you have your own backend implementation, take a note that this feature require a lot of effort to utilize its functionality. Use imgui.glfw.ImGuiImplGlfw implementation instead. Otherwise no guarantees provided.
  • Classes which are represent native structs was refactored. Now they have a public field ptr which points to their native structure. It's not recommended to touch this field if you don't know what are you doing.
imgui-java -

Published by SpaiR about 4 years ago

Fixed render viewport for retina displays

imgui-java -

Published by SpaiR about 4 years ago

Added ImString#isEmpty and ImString#isNotEmpty methods

imgui-java -

Published by SpaiR over 4 years ago

Minor API improvements on the Java layer

  • Methods to get only X/Y instead of full ImVec2
  • Methods to add/remove config/backend flags
imgui-java -

Published by SpaiR over 4 years ago

Update imgui-java to Dear ImGui v1.77

imgui-java -

Published by SpaiR over 4 years ago

  • Add port of GLFW backend (#13) [@ambye85]