imgui-java

JNI based binding for Dear ImGui

MIT License

Stars
594

Bot releases are visible (Hide)

imgui-java - v1.84.1.4

Published by github-actions[bot] almost 3 years ago

  • 0bbbc2e - [API] Implement ImGuiFileDialog extension (#89)
imgui-java - v1.84.1.3

Published by github-actions[bot] about 3 years ago

  • 3744297 - [API] Added multi Y ImPlot#plotShaded (#84)
imgui-java - v1.84.1.2

Published by github-actions[bot] about 3 years ago

  • 326594f - [API] Implement binding for ImGui::getWindowScrollbarRect (#81)
imgui-java - v1.84.1.1

Published by github-actions[bot] about 3 years ago

  • 4e56056 - [API] Bindings for ImGuiColorTextEdit (#79)
  • e529c61 - [API] Fix dragInt3 only shows 2 boxes
imgui-java - v1.84.1.0

Published by github-actions[bot] about 3 years ago

Consider reading the official changelog to see other Dear ImGui changes.

  • a4dd33e - [Build] Remove useless release changelog line
  • 255f2e2 - [Build] Move sourceCompatibility option to the root build file
  • babb8ed - [Build] Gradle 7.2
  • 9026dcd - [API] Dear ImGui v1.84.1
imgui-java - v1.83.3

Published by github-actions[bot] over 3 years ago

  • 78694a4 - [API] Add ImGuiContext struct and ability to switch Dear ImGui contexts (#65)
imgui-java - v1.83.2

Published by github-actions[bot] over 3 years ago

  • 34e282e - [API] Fixed window rendering on resize and white background on start up (#62)
  • 1544682 - [Build] Add workflows for automatic releases
  • 44a1a18 - [Build] Gradle 7.1.1
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