Bloat-free Immediate Mode Graphical User interface for JVM with minimal dependencies (rewrite of dear imgui)

Overview

dear jvm imgui

Build Status license Release Size Github All Releases

(This rewrite is free but, on the same line of the original library, it needs your support to sustain its development. There are many desirable features and maintenance ahead. If you are an individual using dear imgui, please consider donating via Patreon or PayPal. If your company is using dear imgui, please consider financial support (e.g. sponsoring a few weeks/months of development. E-mail: elect86 at gmail).

Monthly donations via Patreon:
Patreon

One-off donations via PayPal:
PayPal

Btc: 3DKLj6rEZNovEh6xeVp4RU3fk3WxZvFtPM


This is the Kotlin rewrite of dear imgui (AKA ImGui), a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline enabled application. It is fast, portable, renderer agnostic and self-contained (few external dependencies).

Dear ImGui is designed to enable fast iterations and to empower programmers to create content creation tools and visualization / debug tools (as opposed to UI for the average end-user). It favors simplicity and productivity toward this goal, and lacks certain features normally found in more high-level libraries.

Dear ImGui is particularly suited to integration in games engine (for tooling), real-time 3D applications, fullscreen applications, embedded applications, or any applications on consoles platforms where operating system features are non-standard.

Dear ImGui is self-contained within a few files that you can easily copy and compile into your application/engine.

It doesn't provide the guarantee that dear imgui provides, but it is actually a much better fit for java/kotlin users.

Usage

Your code passes mouse/keyboard inputs and settings to Dear ImGui (see example applications for more details). After ImGui is setup, you can use it like in this example:

Kotlin
with(ImGui) {
    text("Hello, world %d", 123)
    button("Save"){
        // do stuff
    }
    inputText("string", buf)
    sliderFloat("float", ::f, 0f, 1f)
}
Java
imgui.text("Hello, world %d", 123);
if(imgui.button("Save")) {
    // do stuff
}
imgui.inputText("string", buf);
imgui.sliderFloat("float", f, 0f, 1f);

Result:

screenshot of sample code alongside its output with ImGui

(settings: Dark style (left), Light style (right) / Font: Roboto-Medium, 16px / Rounding: 5)

Code:

// Create a window called "My First Tool", with a menu bar.
begin("My First Tool", ::myToolActive, WindowFlag.MenuBar)
menuBar {
    menu("File") {
        menuItem("Open..", "Ctrl+O")) { /* Do stuff */ }
        menuItem("Save", "Ctrl+S"))   { /* Do stuff */ }
        menuItem("Close", "Ctrl+W"))  { myToolActive = false }
    }
}

// Edit a color (stored as FloatArray[4] or Vec4)
colorEdit4("Color", myColor);

// Plot some values
val myValues = floatArrayOf( 0.2f, 0.1f, 1f, 0.5f, 0.9f, 2.2f )
plotLines("Frame Times", myValues)
 
// Display contents in a scrolling region
textColored(Vec4(1,1,0,1), "Important Stuff")
withChild("Scrolling") {
    for (int n = 0; n < 50; n++)
        text("%04d: Some text", n)
}
end()

Result:

screenshot of sample code alongside its output with ImGui

How it works

Check out the References section if you want to understand the core principles behind the IMGUI paradigm. An IMGUI tries to minimize state duplication, state synchronization and state storage from the user's point of view. It is less error prone (less code and less bugs) than traditional retained-mode interfaces, and lends itself to create dynamic user interfaces.

Dear ImGui outputs vertex buffers and command lists that you can easily render in your application. The number of draw calls and state changes is typically very small. Because it doesn't know or touch graphics state directly, you can call ImGui commands anywhere in your code (e.g. in the middle of a running algorithm, or in the middle of your own rendering process). Refer to the sample applications in the examples/ folder for instructions on how to integrate dear imgui with your existing codebase.

A common misunderstanding is to mistake immediate mode gui for immediate mode rendering, which usually implies hammering your driver/GPU with a bunch of inefficient draw calls and state changes as the gui functions are called. This is NOT what Dear ImGui does. Dear ImGui outputs vertex buffers and a small list of draw calls batches. It never touches your GPU directly. The draw call batches are decently optimal and you can render them later, in your app or even remotely.

Dear ImGui allows you create elaborate tools as well as very short-lived ones. On the extreme side of short-liveness: using the Edit&Continue (hot code reload) feature of modern compilers you can add a few widgets to tweaks variables while your application is running, and remove the code a minute later! Dear ImGui is not just for tweaking values. You can use it to trace a running algorithm by just emitting text commands. You can use it along with your own reflection data to browse your dataset live. You can use it to expose the internals of a subsystem in your engine, to create a logger, an inspection tool, a profiler, a debugger, an entire game making editor/framework, etc.

Demo

You should be able to try the examples from test (tested on Windows/Mac/Linux) within minutes. If you can't, let me know!

OpenGL:

Vulkan:

You should refer to those also to learn how to use the imgui library.

The demo applications are unfortunately not yet DPI aware so expect some blurriness on a 4K screen. For DPI awareness you can load/reload your font at different scale, and scale your Style with style.ScaleAllSizes().

Ps: DEBUG = false to turn off debugs println()

Functional Programming / Domain Specific Language

All the functions are ported exactly as the original. Moreover, in order to take advantage of Functional Programming this port offers some comfortable constructs, giving the luxury to forget about some annoying and very error prone burden code such as the ending *Pop(), *end() and so on.

These constructs shine especially in Kotlin, where they are also inlined.

Let's take an original cpp sample and let's see how we can make it nicer:

    if (ImGui::TreeNode("Querying Status (Active/Focused/Hovered etc.)")) {            
        ImGui::Checkbox("Hovered/Active tests after Begin() for title bar testing", &test_window);
        if (test_window) {            
            ImGui::Begin("Title bar Hovered/Active tests", &test_window);
            if (ImGui::BeginPopupContextItem()) // <-- This is using IsItemHovered() {                
                if (ImGui::MenuItem("Close")) { test_window = false; }
                ImGui::EndPopup();
            }
            ImGui::Text("whatever\n");
            ImGui::End();
        }
        ImGui::TreePop();
    }

This may become in Kotlin:

    treeNode("Querying Status (Active/Focused/Hovered etc.)") {            
        checkbox("Hovered/Active tests after Begin() for title bar testing", ::test_window)
        if (test_window)
            window ("Title bar Hovered/Active tests", ::test_window) {
                popupContextItem { // <-- This is using IsItemHovered() {                    
                    menuItem("Close") { test_window = false }
                }
                text("whatever\n")
            }
    }

Or in Java:

    treeNode("Querying Status (Active/Focused/Hovered etc.)", () -> {            
        checkbox("Hovered/Active tests after Begin() for title bar testing", test_window)
        if (test_window[0])
            window ("Title bar Hovered/Active tests", test_window, () -> {
                popupContextItem(() -> { // <-- This is using IsItemHovered() {                    
                    menuItem("Close", () -> test_window = false);
                });
                text("whatever\n");
            });
    });

The demo mixes some traditional imgui-calls with these DSL calls.

Refer to the corresponding dsl object for Kotlin or dsl_ class for Java.

Native Roadmap

Some of the goals of Omar for 2018 are:

  • Finish work on gamepad/keyboard controls. (see #787)
  • Finish work on viewports and multiple OS windows management. (see #1542)
  • Finish work on docking, tabs. (see #351)
  • Make Columns better. (they are currently pretty terrible!)
  • Make the examples look better, improve styles, improve font support, make the examples hi-DPI aware.

Rewrite Roadmap

  • finish to rewrite the last few remaining methods
  • make text input and handling robust (copy/cut/undo/redo and text filters)
  • hunt down bugs

How to retrieve it:

You can find all the instructions by mary

ImGui does not impose any platform specific dependency. Therefor users must specify runtime dependencies themselves. This should be done with great care to ensure that the dependencies versions do not conflict.

Using Gradle with the following workaround is recommended to keep the manual maintenance cost low.

import org.gradle.internal.os.OperatingSystem

repositories {
    ...
    maven { url 'https://jitpack.io' }
}

dependencies {
    /*
    Each renderer will need different dependencies.
    Each one needs core.
    OpenGL needs "gl", "glfw"
    Vulkan needs "vk", "glfw"
    JOGL needs "jogl"
    OpenJFX needs "openjfx"
    
    To get all the dependencies in one sweep, create an array of the strings needed and loop through them like below.
    Any number of renderers can be added to the project like this however, you could all all of them with the array ["gl", "glfw", "core", "vk", "jogl", "openjfx"] 
    This example gets the OpenGL needed modules.
     */
    ["gl", "glfw", "core"].each {
        implementation "com.github.kotlin-graphics.imgui:$it:-SNAPSHOT"
    }
	
    switch ( OperatingSystem.current() ) {
        case OperatingSystem.WINDOWS:
            ext.lwjglNatives = "natives-windows"
            break
        case OperatingSystem.LINUX:
            ext.lwjglNatives = "natives-linux"
            break
        case OperatingSystem.MAC_OS:
            ext.lwjglNatives = "natives-macos"
            break
    }

    // Look up which modules and versions of LWJGL are required and add setup the approriate natives.
    configurations.compile.resolvedConfiguration.getResolvedArtifacts().forEach {
        if (it.moduleVersion.id.group == "org.lwjgl") {
            runtime "org.lwjgl:${it.moduleVersion.id.name}:${it.moduleVersion.id.version}:${lwjglNatives}"
        }
    }
}

Please refer to the wiki for a more detailed guide and for other systems (such as Maven, Sbt or Leiningen).

Note: total repo size is around 24.1 MB, but there are included 22.6 MB of assets (mainly fonts), this means that the actual size is around 1.5 MB. I always thought a pairs of tens of MB is negligible, but if this is not your case, then just clone and throw away the fonts you don't need or pick up the imgui-light jar from the release page. Thanks to chrjen for that.

LibGdx

On the initiative to Catvert, ImGui plays now nice also with LibGdx.

Simply follow this short wiki on how to set it up.

Gallery

User screenshots:
Gallery Part 1 (Feb 2015 to Feb 2016)
Gallery Part 2 (Feb 2016 to Aug 2016)
Gallery Part 3 (Aug 2016 to Jan 2017)
Gallery Part 4 (Jan 2017 to Aug 2017)
Gallery Part 5 (Aug 2017 to Feb 2018)
Gallery Part 6 (Feb 2018 to June 2018)
Gallery Part 7 (June 2018 to January 2019)
Gallery Part 8 (January 2019 onward)
Also see the Mega screenshots for an idea of the available features.

Various tools screenshot game

screenshot tool

screenshot demo

screenshot profiler

ImGui supports also other languages, such as japanese or chinese, initiliazed here as:

IO.fonts.addFontFromFileTTF("extraFonts/ArialUni.ttf", 18f, glyphRanges = IO.fonts.glyphRangesJapanese)!!

or here

Font font = io.getFonts().addFontFromFileTTF("extraFonts/ArialUni.ttf", 18f, new FontConfig(), io.getFonts().getGlyphRangesJapanese());
assert (font != null);

Imgur

References

The Immediate Mode GUI paradigm may at first appear unusual to some users. This is mainly because "Retained Mode" GUIs have been so widespread and predominant. The following links can give you a better understanding about how Immediate Mode GUIs works.

See the Wiki and Bindings for third-party bindings to different languages and frameworks.

Credits

Developed by Omar Cornut and every direct or indirect contributors to the GitHub. The early version of this library was developed with the support of Media Molecule and first used internally on the game Tearaway.

Omar first discovered imgui principles at Q-Games where Atman had dropped his own simple imgui implementation in the codebase, which Omar spent quite some time improving and thinking about. It turned out that Atman was exposed to the concept directly by working with Casey. When Omar moved to Media Molecule he rewrote a new library trying to overcome the flaws and limitations of the first one he's worked with. It became this library and since then he (and me) has spent an unreasonable amount of time iterating on it.

Embeds ProggyClean.ttf font by Tristan Grimmer (MIT license).

Embeds stb_textedit.h, stb_truetype.h, stb_rectpack.h by Sean Barrett (public domain).

Inspiration, feedback, and testing for early versions: Casey Muratori, Atman Binstock, Mikko Mononen, Emmanuel Briney, Stefan Kamoda, Anton Mikhailov, Matt Willis. And everybody posting feedback, questions and patches on the GitHub.

Ongoing native dear imgui development is financially supported on Patreon and by private sponsors (Kotlin imgui here)

Double-chocolate native sponsors:

  • Blizzard Entertainment
  • Media Molecule
  • Mobigame
  • Insomniac Games
  • Aras Pranckevičius
  • Lizardcube
  • Greggman
  • DotEmu
  • Nadeo

and many other private persons

I'm very grateful for the support of the persons that have directly contributed to this rewrite via bugs reports, bug fixes, discussions and other forms of support (in alphabetical order):

License

Dear JVM ImGui is licensed under the MIT License, see LICENSE for more information.

Comments
  • Imgui not compatible with Mac OS 10.11.4 and LibGDX 1.9.9

    Imgui not compatible with Mac OS 10.11.4 and LibGDX 1.9.9

    Exception in thread “main” com.badlogic.gdx.utils.GdxRuntimeException: java.lang.Exception: ERROR: 0:3: ‘’ :  version ‘150’ is not supported
    
        at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:117)
        at com.x.prototype.desktop.DesktopLauncher.main(DesktopLauncher.kt:21)
    Caused by: java.lang.Exception: ERROR: 0:3: ‘’ :  version ‘150’ is not supported
    
        at gln.objects.GlShader$Companion.createFromSource-RHQEpZs(shader.kt:70)
        at imgui.impl.ImplGL3.createDeviceObjects(ImplGL3.kt:57)
        at imgui.impl.LwjglGlfw.newFrame(LwjglGlfw.kt:107)
    
    opened by yuraj11 62
  • popupContextWindow in listBox

    popupContextWindow in listBox

    This has been working previously but now It freezes entire application with latest changes:

    listBoxHeader()
    popupContextWindow {
    ...
    }
    listBoxFooter()
    
    opened by yuraj11 40
  • Using ImGui with existing lwjgl

    Using ImGui with existing lwjgl

    Hello,

    we have existing java framework that uses lwjgl for its rendering. We want to create editor on top of it using imgui. But imgui also runs on lwjgl.

    The only gradle dependency I have is imgui, so no lwjgl, since it is already included inside .jar of our framework.

    The issue is, when I run the application, our framework initialized glfw and creates its window. Then when I create my own new glfw window and call lwjglGL3.newFrame(), it crashes on

    Exception in thread "main" java.lang.NoSuchMethodError: org.lwjgl.opengl.GL30.glGetInteger(I)I
    	at imgui.impl.LwjglGL3.createDeviceObjects(LwjglGL3.kt:210)
    	at imgui.impl.LwjglGL3.newFrame(LwjglGL3.kt:103)
    	at sk.greentube.DiceTimerApplet.tick(DiceTimerApplet.java:143)
    

    which I presume is caused by mixed lwjgl versions. Could you please help me fix it? Or what dependencies should I have inside Idea so both our framework and imgui runs at the same time (same thread)

    This is code snippet I use. tick() is called after our framework initializes GLFW and creates its window.

        @Override
        public void tick() {
            if(windowPointer == 0){
                GLFW.glfwDefaultWindowHints();
                windowPointer = GLFW.glfwCreateWindow(500, 500, "IMGUI", 0, 0);
                GLFW.glfwMakeContextCurrent(windowPointer);
            }
            
            GLFW.glfwMakeContextCurrent(windowPointer);
            lwjglGL3.newFrame(); // CRASH HERE
    
            int backBufferTextureId = GLMain.backBufferTextureId;
            int backBuffer = GLMain.backBuffer;
            imgui.text("Novo back buffer: " + backBuffer);
            imgui.text("Novo Pointer: " + backBufferTextureId);
            imgui.text("ImGui Pointer: " + windowPointer);
            imgui.image(backBufferTextureId, new Vec2(300, 300), new Vec2(0, 0), new Vec2(1, 1), new Vec4(1, 1, 1, 1), new Vec4(1, 1, 1, 1));
    
    
            gln.GlnKt.glViewport(500, 500);
            gln.GlnKt.glClearColor(new Vec4(0.45f, 0.55f, 0.6f, 1f));
            GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
    
            imgui.render();
            lwjglGL3.renderDrawData(imgui.getDrawData());
    
            glfwSwapBuffers(windowPointer);
        }
    

    Thank you

    opened by wrymn 32
  • Conflicting dependencies when using maven ?

    Conflicting dependencies when using maven ?

    Hello! After a few failed attempts at getting the dependency to work, I just can't wrap my head around it. Following the instructions from the README, adding jitpack and then imgui, just appears to produce conflicts between dependencies, making the project unbuildable.

    My pom.xml: https://pastebin.com/mxnCas3S Conflicts highlighted in intelliJ: image Maven log when attempting to mvn install: https://pastebin.com/UKbxJXuR

    My code is a simple LWJGL loop and the sample imgui (java) code provided with the README.

    I attempted excluding the dependencies myself, and adding them separately after. This only resulted in my test app launching, showing a white window for roughly a second, and then closing without a stacktrace (as if System.exit(0); was called)

    My apologies if I'm missing something big, or if this isn't the right place to post this. Thanks in advance.

    opened by zeroeightysix 31
  • Problem with IDs and imageButtons

    Problem with IDs and imageButtons

    Hi !

    I've found an issue when I use a lot of imageButtons. The program don't crash but imageButtons (the latter, I assume greater than 256 or 512) become unresponsive to the click (and only imageButtons, other elements are responsive as well). The problem is propagated to all windows on the screen having imageButtons.

    Thanks for your help, Catvert.

    opened by Catvert 22
  • Crash on sliders sliding into the negative

    Crash on sliders sliding into the negative

    Found in commit 297e44d081e23c16c9ac3dc61bde353f55377ade Related to #47 #48

    Every time a slider has a negative value the following exception happens.

    (Widgets > Basics)
    Exception in thread "hmd-renderer" java.text.ParseException: Unparseable number: "-2%"
    	at java.base/java.text.NumberFormat.parse(NumberFormat.java:393)
    	at imgui.imgui.imgui_internal$Companion.roundScalarWithFormat(internal.kt:3498)
    	at imgui.imgui.imgui_main$Companion.dragBehaviorT(main.kt:658)
    	at imgui.imgui.imgui_internal$DefaultImpls.dragBehavior(internal.kt:1552)
    	at imgui.ImGui.dragBehavior(imgui.kt:45)
    	at imgui.imgui.imgui_widgetsDrag$DefaultImpls.dragScalar(widgets drags.kt:266)
    	at imgui.ImGui.dragScalar(imgui.kt:45)
    	at imgui.imgui.imgui_widgetsDrag$DefaultImpls.dragScalar$default(widgets drags.kt:212)
    	at imgui.imgui.imgui_widgetsDrag$DefaultImpls.dragInt(widgets drags.kt:133)
    	at imgui.ImGui.dragInt(imgui.kt:45)
    	at imgui.imgui.demo.widgets.invoke(widgets.kt:378)
    	at imgui.imgui.demo.ExampleApp.invoke(ExampleApp.kt:180)
    	at imgui.imgui.imgui_demoDebugInformations$DefaultImpls.showDemoWindow(demo debug informations.kt:91)
    	at imgui.ImGui.showDemoWindow(imgui.kt:45)
    	at imgui.imgui.imgui_demoDebugInformations$DefaultImpls.showDemoWindow(demo debug informations.kt:87)
    	at imgui.ImGui.showDemoWindow(imgui.kt:45)
    	at com.chrjen.pluto.gui.VRScene$VRRenderer.loop(VRScene.java:748)
    	at com.chrjen.pluto.gui.VRScene$VRRenderer.lambda$run$0(VRScene.java:270)
    	at uno.glfw.GlfwWindow.loop(GlfwWindow.kt:503)
    	at com.chrjen.pluto.gui.VRScene$VRRenderer.run(VRScene.java:269)
    	at java.base/java.lang.Thread.run(Thread.java:844)
    

    This happens for every slider I tried that allows me to slide the value into the negative.

    DEMO EXCEPTION: Unparseable number: "-0.0004"
    DEMO EXCEPTION: Unparseable number: "-59 deg"
    DEMO EXCEPTION: Unparseable number: "-0.008700 ns"
    DEMO EXCEPTION: Unparseable number: "-425 units"
    DEMO EXCEPTION: Unparseable number: "-60"
    
    opened by chrjen 18
  • Not working with Chinese IME

    Not working with Chinese IME

    Chinese IME not showing compositing text, after input, text shows as ???

    screen shot 2018-03-22 at 16 14 32

    Device:

    screen shot 2018-03-22 at 16 15 51

    Version: https://github.com/kotlin-graphics/imgui/commit/46b930e62e42d26b6e63f3bfd24046c27080902b

    opened by molikto 15
  • Max items ?

    Max items ?

    Hello, I'm trying to add a method to display a list of selectable texture in a window with imageButtons. But when there are more than 125 buttons in the window, buttons (with an index > 125) don't react to the click. I tried to use a withId (index) to make sure they have a different id but it doesn't change anything. Thanks to you, Catvert. sans titre

    opened by Catvert 15
  • Stable branch of Kotlin support

    Stable branch of Kotlin support

    It seems this is dependent on a future and/or experimental version of Kotlin in the 1.2 branch leading to gradle import failure, if used in a non-experimental project.

    Warning:<i><b>project ':core': Unable to build Kotlin project configuration</b> Details: java.lang.reflect.InvocationTargetException: null Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':core:compileClasspath'. Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find org.jetbrains.kotlin:kotlin-stdlib:1.2.0-beta-88.

    Current version of Kotlin as of Nov 6, 2017 is 1.1.51

    Is there any way to get around this without having to fork it?

    opened by TTSKarlsson 15
  • Is it possible to use BooleanArray in checkbox ?

    Is it possible to use BooleanArray in checkbox ?

    I would like to generate a checkbox with enum class:

    enum class Enum1 { E1, E2, E3 }
    val enum1ArrayEnabled = BooleanArray(Enum1.values().size)
    
    with (imGui) {
      Enum1.values().forEachIndexed { index, value ->
        checkbox(value.name, ::enum1ArrayEnabled[index])
      }
    }
    

    ::enum1ArrayEnabled[index] does not compile, maybe there is another way to do so...

    Regards.

    opened by Datoh 14
  • LibGDX example not working

    LibGDX example not working

    Hi, I'd like to use imgui with LibGDX, but couldn't find any minimal example. And the current steps in the Wiki do not work for me.

    My current code is in this repository (and I'd like to be able to provide a working minimal example project for others too): https://github.com/klianc09/imguiexample

    I added the dependencies to the generated project, as documented in the Wiki. However when trying to run I get the following error message:

    $ ./gradlew lwjgl3:run
    Configuration on demand is an incubating feature.
    Download https://jitpack.io/com/github/kotlin-graphics/imgui/-SNAPSHOT/maven-metadata.xml
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Could not resolve all files for configuration ':core:compileClasspath'.
    > Could not find com.github.kotlin-graphics:imgui:-SNAPSHOT.
      Searched in the following locations:
      file:/home/toni/.m2/repository/com/github/kotlin-graphics/imgui/-SNAPSHOT/maven-metadata.xml
      file:/home/toni/.m2/repository/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.pom
      file:/home/toni/.m2/repository/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.jar
      https://repo1.maven.org/maven2/com/github/kotlin-graphics/imgui/-SNAPSHOT/maven-metadata.xml
      https://repo1.maven.org/maven2/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.pom
      https://repo1.maven.org/maven2/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.jar
      https://jcenter.bintray.com/com/github/kotlin-graphics/imgui/-SNAPSHOT/maven-metadata.xml
      https://jcenter.bintray.com/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.pom
      https://jcenter.bintray.com/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.jar
      https://oss.sonatype.org/content/repositories/snapshots/com/github/kotlin-graphics/imgui/-SNAPSHOT/maven-metadata.xml
      https://oss.sonatype.org/content/repositories/snapshots/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.pom
      https://oss.sonatype.org/content/repositories/snapshots/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.jar
      https://jitpack.io/com/github/kotlin-graphics/imgui/-SNAPSHOT/maven-metadata.xml
      https://jitpack.io/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--v1.60wip-beta-02-g789514e-20.pom
      https://jitpack.io/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--v1.60wip-beta-02-g789514e-20.jar
      https://dl.bintray.com/kotlin/kotlin-dev/com/github/kotlin-graphics/imgui/-SNAPSHOT/maven-metadata.xml
      https://dl.bintray.com/kotlin/kotlin-dev/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.pom
      https://dl.bintray.com/kotlin/kotlin-dev/com/github/kotlin-graphics/imgui/-SNAPSHOT/imgui--SNAPSHOT.jar
    Required by:
      project :core
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    BUILD FAILED in 16s
    1 actionable task: 1 executed
    

    Any pointers would be appreciated.

    opened by klianc09 14
  • Is there a version of imgui for kotlin that works with lwjgl 3.3.1

    Is there a version of imgui for kotlin that works with lwjgl 3.3.1

    Hi, I have the following deps in my build, which works fine with lwjgl 3.2.3

        val imguiVersion = "v1.79"
        implementation("com.github.kotlin-graphics.imgui:core:$imguiVersion")
        implementation("com.github.kotlin-graphics.imgui:gl:$imguiVersion")
        implementation("com.github.kotlin-graphics.imgui:glfw:$imguiVersion")
    

    however, if I update my lwjgl to 3.3.1, then I get the following errors building:

    :visualisations:test: Could not resolve org.lwjgl:lwjgl-bom:3.2.3.
    Required by:
        project :visualisations > com.github.kotlin-graphics.imgui:core:v1.79
        project :visualisations > com.github.kotlin-graphics.imgui:gl:v1.79
        project :visualisations > com.github.kotlin-graphics.imgui:glfw:v1.79
        // ...
    

    So the 1.79 libs are built against 3.2.3. No biggie. I just need to find the latest imgui libs I assumed.

    However, I've tried and failed to change the imgui version string to import to update it from anything offered to me by various "Get it" in jitpack.io. Nothing seems to work.

    e.g. I pick master-ffcfb6c8aa-1 which gives me:

    implementation 'com.github.kotlin-graphics.imgui:imgui-core:master-ffcfb6c8aa-1'
    

    Trying this just gives me

    :visualisations:test: Could not resolve com.github.kotlin-graphics.imgui:imgui-core:master-ffcfb6c8aa-1.
    

    So I tried it in the format that the v1.79 works with (i.e. com.github.kotlin-graphics.imgui:core:master-ffcfb6c8aa-1) but that fails with same error "Could not resolve..."

    So there are 2 issues here:

    1. Is there a version I can use with lwjgl 3.3.1 and exactly what are the dependency strings?
    2. why doesn't any of the jitpack.io dependencies work at all?

    Many thanks. Really would love to use latest in kotlin if possible.

    opened by markjfisher 3
  • Index 33619455 out of bounds for length 0

    Index 33619455 out of bounds for length 0

    I use imgui for minecraft

    java.lang.IndexOutOfBoundsException: Index 33619455 out of bounds for length 0
    	at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)
    	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106)
    	at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302)
    	at java.base/java.util.Objects.checkIndex(Objects.java:359)
    	at java.base/java.nio.Buffer.checkIndex(Buffer.java:741)
    	at java.base/java.nio.DirectByteBuffer.put(DirectByteBuffer.java:362)
    	at kool.Buffers_operatorsKt.set(buffers operators.kt:25)
    	at imgui.font.FontAtlas.buildRender1bppRectFromString(FontAtlas.kt:949)
    	at imgui.font.FontAtlas.buildRenderDefaultTexData(FontAtlas.kt:968)
    	at imgui.font.FontAtlas.buildFinish(FontAtlas.kt:906)
    	at imgui.font.FontAtlas.buildWithStbTrueType(FontAtlas.kt:841)
    	at imgui.font.FontAtlas.build(FontAtlas.kt:202)
    	at imgui.font.FontAtlas.getTexDataAsAlpha8(FontAtlas.kt:212)
    	at imgui.font.FontAtlas.getTexDataAsRGBA32(FontAtlas.kt:222)
    	at imgui.impl.gl.ImplGL3.createFontsTexture(ImplGL3.kt:225)
    	at imgui.impl.gl.ImplGL3.createDeviceObjects(ImplGL3.kt:275)
    	at imgui.impl.gl.ImplGL3.newFrame(ImplGL3.kt:61)
    	at com.damp11113.devtools.HudImgui.onHudRender(HudImgui.java:43)
    	at net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback.lambda$static$0(HudRenderCallback.java:27)
    	at net.minecraft.client.gui.hud.InGameHud.handler$zgi000$render(InGameHud.java:1496)
    	at net.minecraft.client.gui.hud.InGameHud.render(InGameHud.java:393)
    	at net.minecraft.client.render.GameRenderer.render(GameRenderer.java:862)
    	at net.minecraft.client.MinecraftClient.render(MinecraftClient.java:1177)
    	at net.minecraft.client.MinecraftClient.run(Unknown Source)
    	at net.minecraft.client.main.Main.main(Main.java:244)
    	at net.minecraft.client.main.Main.main(Main.java:51)
    	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:461)
    	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
    	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
    	at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)
    

    This is code

    public class HudImgui implements HudRenderCallback {
        private static ImGui imgui = ImGui.INSTANCE;
    
        private static ImplGL3 implGl3;
        private static ImplGlfw implGlfw;
    
        private static IO ImGuiIO;
        private static HashSet<Integer> keyBuffer = new HashSet<Integer>();
    
        // Initialization for imgui.
        static {
            ImguiKt.MINECRAFT_BEHAVIORS = true;
            GlfwWindow window = GlfwWindow.from(MinecraftClient.getInstance().getWindow().getHandle());
            window.makeContextCurrent();
    
            new Context();
            implGlfw = new ImplGlfw(window, false, null);
            implGl3 = new ImplGL3();
        }
    
        @Override
        public void onHudRender(MatrixStack matrixStack, float tickDelta) {
            ImGuiIO = imgui.getIo();
    
            implGl3.newFrame();
            implGlfw.newFrame();
            imgui.newFrame();
    
            imgui.showDemoWindow(new boolean[]{true});
    
            imgui.render();
            implGl3.renderDrawData(Objects.requireNonNull(imgui.getDrawData()));
        }
    }
    
    
    opened by damp11113 1
  • Invalid Package name

    Invalid Package name

    Error is thrown in runtime when using in a Minecraft Mod it seems that 'static' is not a valid package name

    Exception in thread "main" java.lang.IllegalArgumentException: imgui.static: Invalid package name: 'static' is not a Java identifier
    	at java.base/jdk.internal.module.Checks.requireTypeName(Checks.java:161)
    	at java.base/jdk.internal.module.Checks.requirePackageName(Checks.java:72)
    	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
    	at java.base/java.lang.module.ModuleDescriptor$Builder.packages(ModuleDescriptor.java:2026)
    	at cpw.mods.securejarhandler/cpw.mods.jarhandling.impl.ModuleJarMetadata.<init>(ModuleJarMetadata.java:29)
    	at cpw.mods.securejarhandler/cpw.mods.jarhandling.JarMetadata.from(JarMetadata.java:41)
    	at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.moddiscovery.AbstractModProvider.lambda$createMod$0(AbstractModProvider.java:40)
    	at cpw.mods.securejarhandler/cpw.mods.jarhandling.impl.Jar.<init>(Jar.java:143)
    	at cpw.mods.securejarhandler/cpw.mods.jarhandling.SecureJar.from(SecureJar.java:70)
    	at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.moddiscovery.AbstractModProvider.createMod(AbstractModProvider.java:38)
    	at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.moddiscovery.AbstractJarFileModLocator.lambda$scanMods$0(AbstractJarFileModLocator.java:19)
    	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    	at java.base/java.util.stream.SpinedBuffer$1Splitr.forEachRemaining(SpinedBuffer.java:356)
    	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    	at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
    	at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
    	at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.moddiscovery.AbstractJarFileModLocator.scanMods(AbstractJarFileModLocator.java:19)
    	at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer.discoverMods(ModDiscoverer.java:74)
    	at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.FMLLoader.beginModScan(FMLLoader.java:166)
    	at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.FMLServiceProvider.beginScanning(FMLServiceProvider.java:86)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServiceDecorator.runScan(TransformationServiceDecorator.java:112)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.lambda$runScanningTransformationServices$8(TransformationServicesHandler.java:100)
    	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    	at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779)
    	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    	at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    	at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
    	at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.runScanningTransformationServices(TransformationServicesHandler.java:102)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:55)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:87)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:77)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26)
    	at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23)
    	at [email protected]/cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141)
    
    opened by SonMooSans 3
  • ImGui can't access static fields and members of org.lwjgl.stb.STBRPRect

    ImGui can't access static fields and members of org.lwjgl.stb.STBRPRect

    Hi I've been trying to solve this for a day and I don't really know what else to do. I'm using imgui v1.79, lwjgl 3.3.1 and jdk11. For some reason app crashes inside the lib with:

    Exception in thread "main" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NoSuchMethodError: org.lwjgl.stb.STBRPRect.nw(JS)V
    	at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:172)
    	at com.jbidev.nothing.DesktopLauncher.main(DesktopLauncher.java:17)
    Caused by: java.lang.NoSuchMethodError: org.lwjgl.stb.STBRPRect.nw(JS)V
    Caused by: java.lang.NoSuchMethodError: org.lwjgl.stb.STBRPRect.nw(JS)V
    
    	at imgui.stb.ExtensionsKt.setW(extensions.kt:30)
    	at imgui.font.FontAtlas.buildWithStbTrueType(FontAtlas.kt:720)
    	at imgui.font.FontAtlas.build(FontAtlas.kt:202)
    	at imgui.font.FontAtlas.getTexDataAsAlpha8(FontAtlas.kt:212)
    	at imgui.font.FontAtlas.getTexDataAsRGBA32(FontAtlas.kt:222)
    	at imgui.impl.gl.ImplGL3.createFontsTexture(ImplGL3.kt:225)
    	at imgui.impl.gl.ImplGL3.createDeviceObjects(ImplGL3.kt:275)
    	at imgui.impl.gl.ImplGL3.newFrame(ImplGL3.kt:61)
    

    I can easily access stb methods and constants from the main app, but inside the imgui lib I can only create instances and access class methods, static members don't work at all giving error:

    Symbol is declared in module 'org.lwjgl.stb' which current module does not depend on

    Does anybody knows, how to fix this, is this caused by my setup ? I don't have much experience with gradle and kotlin so any help would be appreciated .

    opened by Cavantar 3
  • `listbox` shows no items

    `listbox` shows no items

    listbox shows no items, looks like ListClipper is broken.

    The problem can be seen in ExampleApp aka demo window, under

    Widgets -> Basic -> listbox(single select)
    

    Tested it on last available version 1.79, and then also on latest commit 876ba264.

    opened by Iljo 0
Releases(v1.79)
  • v1.79(Nov 25, 2020)

    Reading the full changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    Breaking Changes

    • Fonts: Removed Font::displayOffset in favor of FontConfig::glyphOffset. displayOffset was applied after scaling and not very meaningful/useful outside of being needed by the default ProggyClean font. It was also getting in the way of better font scaling, so let's get rid of it now! If you used displayOffset it was probably in association to rasterizing a font at a specific size, in which case the corresponding offset may be reported into glyphOffset. If you scaled this value after calling addFontDefault(), this is now done automatically. (#1619)
    • ListClipper: Renamed constructor parameters which created an ambiguous alternative to using the ListClipper::begin() function, with misleading edge cases. Always use ListClipper::begin()!
    • Style: Renamed style.tabMinWidthForUnselectedCloseButton to style.tabMinWidthForCloseButton.
    • Renamed SliderFlag.ClampOnInput to SliderFlag.AlwaysClamp.
    • Renamed openPopupContextItem() back to openPopupOnItemClick(), REVERTED CHANGE FROM 1.77. For variety of reason this is more self-explanatory and less error-prone.
    • Removed return value from openPopupOnItemClick() - returned true on mouse release on item - because it is inconsistent with other popups API and makes others misleading. It's also and unnecessary: you can use isWindowAppearing() after beginPopup() for a similar result.

    Other Changes

    • Vulkan backend fixed and available!
    • Window: Fixed using non-zero pivot in setNextWindowPos() when the window is collapsed. (#3433)
    • Nav:
      • Fixed navigation resuming on first visible item when using gamepad. [@rokups]
      • Fixed using Alt to toggle the Menu layer when inside a Modal window. (#787)
    • Scrolling: Fixed setScrollHere() functions edge snapping when called during a frame where contentSize is changing (issue introduced in 1.78). (#3452).
    • InputText:
      • Added support for Page Up/Down in inputTextMultiline(). (#3430) [@Xipiryon]
      • Added selection helpers in InputTextCallbackData().
      • Added InputTextFlag.CallbackEdit to modify internally owned buffer after an edit (note that inputText() already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active).
      • Fixed using InputTextFlag.Password with inputTextMultiline(). It is a rather unusual or useless combination of features but no reason it shouldn't work! (#3427, #3428)
      • Fixed minor scrolling glitch when erasing trailing lines in inputTextMultiline().
      • Fixed cursor being partially covered after using CTRL+End key.
      • Fixed callback's helper deleteChars() function when cursor is inside the deleted block. (#3454)
      • Made pressing Down arrow on the last line when it doesn't have a carriage return not move to the end of the line (so it is consistent with Up arrow, and behave same as Notepad and Visual Studio. Note that some other text editors instead would move the cursor to the end of the line). [@Xipiryon]
    • Tab Bar:
      • Added tabItemButton() to submit tab that behave like a button. (#3291) [@Xipiryon]
      • Added TabItemFlag.Leading and TabItemFlag.Trailing flags to position tabs or button at either end of the tab bar. Those tabs won't be part of the scrolling region, and when reordering cannot be moving outside of their section. Most often used with tabItemButton(). (#3291) [@Xipiryon]
      • Added TabItemFlag.NoReorder flag to disable reordering a given tab.
      • Keep tab item close button visible while dragging a tab (independent of hovering state).
      • Fixed a small bug where closing a tab that is not selected would leave a tab hole for a frame.
      • Fixed a small bug where scrolling buttons (with TabBarFlag.FittingPolicyScroll) would generate an unnecessary extra draw call.
      • Fixed a small bug where toggling a tab bar from Reorderable to not Reorderable would leave tabs reordered in the tab list popup. [@Xipiryon]
    • dragFloat, dragScalar: Fixed SliderFlag.ClampOnInput not being honored in the special case where v_min == v_max. (#3361)
    • sliderInt, sliderScalar: Fixed reaching of maximum value with inverted integer min/max ranges, both with signed and unsigned types. Added reverse Sliders to Demo. (#3432, #3449) [@rokups]
    • Text: Bypass unnecessary formatting when using the textColored()/textWrapped()/textDisabled() helpers with a "%s" format string. (#3466)
    • CheckboxFlags: Display mixed-value/tristate marker when passed flags that have multiple bits set and stored value matches neither zero neither the full set.
    • BeginMenuBar: Fixed minor bug where cursorPosMax gets pushed to cursorPos prior to calling beginMenuBar() so e.g. calling the function at the end of a window would often add +itemSpacing.y to scrolling range.
    • treeNode, collapsingHeader: Made clicking on arrow toggle toggle the open state on the Mouse Down event rather than the Mouse Down+Up sequence, even if the .OpenOnArrow flag isn't set. This is standard behavior and amends the change done in 1.76 which only affected cases were OpenOnArrow flag was set. (This is also necessary to support full multi/range-select/drag and drop operations.)
    • Columns: Fix inverted clipRect being passed to renderer when using certain primitives inside of a fully clipped column. (#3475) [@szreder]
    • Popups, Tooltips: Fix edge cases issues with positioning popups and tool-tips when they are larger than viewport on either or both axises. [@rokups]
    • Fonts: addFontDefault() adjust its vertical offset based on floor(size/13) instead of always +1. Was previously done by altering displayOffset.y but wouldn't work for DPI scaled font.
    • Metrics: Various tweaks, listing windows front-to-back, greying inactive items when possible.
    • Demo: Add simple inputText() callbacks demo (aside from the more elaborate ones in Examples->Console).
    • Backends:
      • Vulkan:
        • Some internal refactor aimed at allowing multi-viewport feature to create their own render pass. (#3455, #3459) [@FunMiles]
        • Reworked buffer resize handling, fix for Linux/X11. (#3390, #2626) [@RoryO]
        • Switch validation layer to use ``VK_LAYER_KHRONOS_validation instead of VK_LAYER_LUNARG_standard_validation which is deprecated (#3459) [@FunMiles]

    Tab Bar: tabItemButton() + TabItemFlag.Trailing

    image

    checkboxFlags() with visible tri-state (previously only in internals)

    image

    Original Changelogs

    Source code(tar.gz)
    Source code(zip)
    core-javadoc.jar(1.48 MB)
    core-sources.jar(15.12 MB)
    core.jar(16.21 MB)
    gl-javadoc.jar(296.61 KB)
    gl-sources.jar(13.60 KB)
    gl.jar(40.79 KB)
    gl-html-doc.jar(880.13 KB)
    glfw-html-doc.jar(801.44 KB)
    glfw-javadoc.jar(266.64 KB)
    glfw-sources.jar(4.47 KB)
    glfw.jar(20.94 KB)
    core-html-doc.jar(5.39 MB)
    openjfx-sources.jar(8.99 KB)
    openjfx.jar(42.59 KB)
    openjfx-html-doc.jar(807.26 KB)
    openjfx-javadoc.jar(279.75 KB)
    vk-javadoc.jar(324.04 KB)
    vk-sources.jar(46.65 KB)
    vk.jar(125.19 KB)
    vk-html-doc.jar(987.49 KB)
  • v1.78(Nov 13, 2020)

    Reading the full changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    Breaking Changes

    (Read carefully, not as scary as it sounds. If you maintain a language binding for dear imgui, you may want to evaluate how this might impact users, depending on the language provide dynamic dispatch functions, or simply let the low-level code handle it)

    • Obsoleted use of the trailing float power=1f parameter for those functions: [@ShironekoBen, @ocornut]
      • dragFloat(), dragFloat2(), dragFloat3(), dragFloat4(), dragFloatRange2(), dragScalar(), dragScalarN().
      • sliderFloat(), sliderFloat2(), sliderFloat3(), sliderFloat4(), sliderScalar(), sliderScalarN().
      • vSliderFloat(), vSliderScalar().
    • Replaced the final float power=1f argument with SliderFlags flags defaulting to None (aka 0, as with all our flags). In short, when calling those functions, if you omitted the 'power' parameter (likely in C++), you are not affected. DragInt, DragFloat, DragScalar: Obsoleted use of v_min > v_max to lock edits (introduced in 1.73, inconsistent, and was not demoed nor documented much, will be replaced a more generic ReadOnly feature).

    Other Changes

    • Nav: Fixed clicking on void (behind any windows) from not clearing the focused window. This would be problematic e.g. in situation where the application relies on io.wantCaptureKeyboard flag being cleared accordingly. (bug introduced in 1.77 WIP on 2020/06/16) (#3344, #2880)
    • Window: Fixed clicking over an item which hovering has been disabled (e.g inhibited by a popup) from marking the window as moved.
    • Drag, Slider: Added SliderFlags parameters. - For float functions they replace the old trailing float power=1f parameter. (See #3361 and the "Breaking Changes" block above for all details). - Added SliderFlag.Logarithmic flag to enable logarithmic editing (generally more precision around zero), as a replacement to the old 'float power' parameter which was obsoleted. (#1823, #1316, #642) [@ShironekoBen, @AndrewBelt] - Added SliderFlag.ClampOnInput flag to force clamping value when using CTRL+Click to type in a value manually. (#1829, #3209, #946, #413). - Added SliderFlag.NoRoundToFormat flag to disable rounding underlying value to match precision of the display format string. (#642) - Added SliderFlag.NoInput flag to disable turning widget into a text input with CTRL+Click or Nav Enter.- Nav, Slider: Fix using keyboard/gamepad controls with certain logarithmic sliders where pushing a direction near zero values would be cancelled out. [@ShironekoBen]
    • dragFloatRange2, dragIntRange2: Fixed an issue allowing to drag out of bounds when both min and max value are on the same value. (#1441)
    • InputText, ImDrawList: Fixed assert triggering when drawing single line of text with more than ~16 KB characters. (Note that current code is going to show corrupted display if after clipping, more than 16 KB characters are visible in the same low-level DrawList::renderText() call. ImGui-level functions such as textUnformatted() are not affected. This is quite rare but it will be addressed later). (#3349)
    • Selectable: Fixed highlight/hit extent when used with horizontal scrolling (in or outside columns). Also fixed related text clipping when used in a column after the first one. (#3187, #3386)
    • Scrolling: Avoid setScroll(), setScrollFromPos() functions from snapping on the edge of scroll limits when close-enough by (WindowPadding - ItemPadding), which was a tweak with too many side-effects. The behavior is still present in SetScrollHere() functions as they are more explicitly aiming at making widgets visible. May later be moved to a flag.
    • Tab Bar: Allow calling setTabItemClosed() after a tab has been submitted (will process next frame).
    • InvisibleButton: Made public a small selection of ButtonFlags (previously in imgui_internal.h) and allowed to pass them to invisibleButton(): ButtonFlag.MouseButtonLeft/Right/Middle. This is a small but rather important change because lots of multi-button behaviors could previously only be achieved using lower-level/internal API. Now also available via high-level invisibleButton() with is a de-facto versatile building block to creating custom widgets with the public API.
    • Fonts: Fixed FontConfig::glyphExtraSpacing and FontConfig::pixelSnapH settings being pulled from the merged/target font settings when merging fonts, instead of being pulled from the source font settings.
    • DrawList: Thick anti-aliased strokes (> 1.0f) with integer thickness now use a texture-based path, reducing the amount of vertices/indices and CPU/GPU usage. (#3245) [@ShironekoBen] - This change will facilitate the wider use of thick borders in future style changes. - Requires an extra bit of texture space (~64x64 by default), relies on GPU bilinear filtering. - Set io.antiAliasedLinesUseTex = false to disable rendering using this method. - Clear FontAtlasFlag.NoBakedLines in FontAtlas::flags to disable baking data in texture.
    • DrawList: changed addCircle(), addCircleFilled() default num_segments from 12 to 0, effectively enabling auto-tessellation by default. Tweak tessellation in Style Editor->Rendering section, or by modifying the style.circleSegmentMaxError value. [@ShironekoBen]
    • DrawList: Fixed minor bug introduced in 1.75 where addCircle() with 12 segments would generate an extra vertex. (This bug was mistakenly marked as fixed in earlier 1.77 release). [@ShironekoBen]
    • Demo: Improved "Custom Rendering"->"Canvas" demo with a grid, scrolling and context menu. Also showcase using invisibleButton() with multiple mouse buttons flags.
    • Demo: Improved "Layout & Scrolling" -> "Clipping" section.
    • Demo: Improved "Layout & Scrolling" -> "Child Windows" section.
    • Style Editor: Added preview of circle auto-tessellation when editing the corresponding value.

    Original Changelogs

    Source code(tar.gz)
    Source code(zip)
    core-html-doc.jar(5.33 MB)
    core-javadoc.jar(1.47 MB)
    core-sources.jar(15.11 MB)
    core.jar(16.18 MB)
    core-all.jar(32.02 MB)
    gl-html-doc.jar(880.03 KB)
    gl-javadoc.jar(296.60 KB)
    gl-sources.jar(13.54 KB)
    gl.jar(38.48 KB)
    gl-all.jar(32.38 MB)
    glfw-html-doc.jar(797.10 KB)
    glfw-javadoc.jar(266.59 KB)
    glfw-sources.jar(4.41 KB)
    glfw.jar(20.57 KB)
    glfw-all.jar(32.34 MB)
    openjfx-javadoc.jar(279.75 KB)
    openjfx-sources.jar(8.99 KB)
    openjfx.jar(42.59 KB)
  • v1.77(Oct 20, 2020)

    Reading the full changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    Breaking Changes

    (Read carefully, not as scary as it sounds. If you maintain a language binding for dear imgui, you may want to evaluate how this might impact users, depending on the language provide dynamic dispatch functions, or simply let the low-level code handle it)

    • Removed FontAtlas::addCustomRectRegular() unnecessary first argument ID. Please note that this is a Beta api and will likely be reworked in order to support multi-DPI across multiple monitor s.
    • Renamed openPopupOnItemClick() to openPopupContextItem(). Kept inline redirection function (will obsolete).
    • Removed beginPopupContextWindow(label: String, mouseButton: Int, alsoOverItems: Boolean) in favor of beginPopupContextWindow(label: String, flags: PopupFlag) with PopupFlag.NoOverItems.
    • Removed obsoleted calcItemRectClosestPoint() entry point (has been asserting since December 2017).

    Other Changes

    • TreeNode: Fixed bug where beginDragDropSource() failed when the _OpenOnDoubleClick flag is enabled (bug introduced in 1.76, but pre-1.76 it would also fail unless the _OpenOnArrow flag was also set, and _OpenOnArrow is frequently set along with _OpenOnDoubleClick).
    • TreeNode: Fixed bug where dragging a payload over a treeNode() with either _OpenOnDoubleClick or _OpenOnArrow would open the node. (#143)
    • Windows: Fix unintended feedback loops when resizing windows close to main viewport edges. [@rokups]
    • Tabs: Added style.tabMinWidthForUnselectedCloseButton settings:
      • Set to 0f (default) to always make a close button appear on hover (same as Chrome, VS).
      • Set to Float.MAX_VALUE to only display a close button when selected (merely hovering is not enough).
      • Set to an intermediary value to toggle behavior based on width (same as Firefox).
    • Tabs: Added a TabItemFlag.NoTooltip flag to disable the tooltip for individual tab item (vs TabBarFlag.NoTooltip for entire tab bar). - [@Xipiryon] Popups: All functions capable of opening popups (openPopup*, beginPopupContext*) now take a new PopupFlags sets of flags instead of a mouse button index. The API is automatically backward compatible as PopupFlags is guaranteed to hold mouse button index in the lower bits.
    • Popups: Added PopupFlag.NoOpenOverExistingPopup for openPopup*/beginPopupContext* functions to first test for the presence of another popup at the same level.
    • Popups: Added PopupFlag.NoOpenOverItems for beginPopupContextWindow() - similar to testing for !isAnyItemHovered() prior to doing an openPopup().
    • Popups: Added PopupFlag.AnyPopupId and PopupFlag.AnyPopupLevel flags for isPopupOpen(), allowing to check if any popup is open at the current level, if a given popup is open at any popup level, if any popup is open at all.
    • Popups: Fix an edge case where programmatically closing a popup while clicking on its empty space would attempt to focus it and close other popups. (#2880)
    • Popups: Fix beginPopupContextVoid() when clicking over the area made unavailable by a modal. (#1636)
    • Popups: Clarified some of the comments and function prototypes.
    • Modals: beginPopupModal() doesn't set the WindowFlag.NoSavedSettings flag anymore, and will not always be auto-centered. Note that modals are more similar to regular windows than they are to popups, so api and behavior may evolve further toward embracing this. (#915, #3091). Enforce centering using e.g. setNextWindowPos(io.displaySize * 0.5f, Cond.Appearing, Vec2(0.5f)).
    • Metrics: Added a "Settings" section with some details about persistent ini settings.
    • Nav, Menus: Fix vertical wrap-around in menus or popups created with multiple appending calls to beginMenu()/endMenu() or beginPopup()/endPopup(). (#3223, #1207) [@rokups]
    • Drag and Drop: Fixed unintended fallback "..." tooltip display during drag operation when
    • drag source uses SourceNoPreviewTooltip flags. (#3160) [@rokups]
    • Columns: Lower overhead on column switches and switching to background channel.
    • Benefits Columns but was primarily made with Tables in mind!
    • Fonts: Fix getGlyphRangesKorean() end-range to end at 0xD7A3 (instead of 0xD79D). (#348, #3217) [@marukrap]
    • DrawList: Fixed an issue where draw command merging or primitive unreserve while crossing the VtxOffset boundary would lead to draw commands with wrong VtxOffset. (#3129, #3163, #3232, #2591) [@thedmd, @ShironekoBen, @sergeyn, @ocornut]
    • DrawList, DrawListSplitter, Columns: Fixed an issue where changing channels with different TextureId, VtxOffset would incorrectly apply new settings to draw channels. (#3129, #3163) [@ocornut, @thedmd, @ShironekoBen]
    • DrawList, DrawListSplitter, Columns: Fixed an issue where starting a split when current VtxOffset was not zero would lead to draw commands with wrong VtxOffset. (#2591)
    • DrawList, DrawListSplitter, Columns: Fixed an issue where starting a split right after a callback draw command would incorrectly override the callback draw command.
    • DrawList: Fixed minor bug introduced in 1.75 where addCircle() with 12 segments would generate an extra unrequired vertex. [@ShironekoBen]
    • Docs: Improved and moved font documentation to docs/FONTS.md so it can be readable on the web. Updated various links/wiki accordingly. Added FAQ entry about DPI. (#2861) [@ButternCream, @ocornut]
    • Backends: OpenGL: Fixed handling of GL 4.5+ glClipControl(GL_UPPER_LEFT) by inverting the projection matrix top and bottom values. (#3143, #3146) [@u3shit]
    • Examples: GLFW+Vulkan, SDL+Vulkan: Fix for handling of minimized windows. (#3259)

    Original Changelogs

    Source code(tar.gz)
    Source code(zip)
    core.jar(16.13 MB)
    gl-html-doc.jar(880.03 KB)
    core-html-doc.jar(5.26 MB)
    gl-javadoc.jar(296.60 KB)
    gl-sources.jar(13.54 KB)
    gl.jar(38.48 KB)
    glfw-javadoc.jar(266.59 KB)
    glfw-sources.jar(4.41 KB)
    glfw.jar(20.57 KB)
    glfw-html-doc.jar(797.10 KB)
    core-javadoc.jar(1.45 MB)
    core-sources.jar(15.10 MB)
    openjfx-javadoc.jar(279.75 KB)
    openjfx-sources.jar(8.99 KB)
    openjfx.jar(42.59 KB)
    openjfx-html-doc.jar(807.26 KB)
  • v1.76(May 6, 2020)

    Reading the full changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    All Changes

    (No known API breaking changes)

    • Drag and Drop, Nav: Disabling navigation arrow keys when drag and drop is active. In the docking branch pressing arrow keys while dragging a window from a tab could trigger an assert. (#3025)
    • BeginMenu: Using same ID multiple times appends content to a menu. (#1207) [@rokups]
    • BeginMenu: Fixed a bug where setNextWindowXXX data before a beginMenu() would not be cleared when the menu is not open. (#3030)
    • InputText: Fixed password fields displaying ASCII spaces as blanks instead of using the '*' glyph. (#2149, #515)
    • Selectable: Fixed honoring style.selectableTextAlign with unspecified size. (#2347, #2601)
    • Selectable: Allow using SelectableFlag.SpanAllColumns in other columns than first. (#125)
    • TreeNode: Made clicking on arrow with _OpenOnArrow toggle the open state on the Mouse Down event rather than the Mouse Down+Up sequence (this is rather standard behavior).
    • ColorButton: Added ColorEditFlag.NoBorder flag to remove the border normally enforced by default for standalone ColorButton.
    • Nav: Fixed interactions with ListClipper, so e.g. Home/End result would not clip the landing item on the landing frame. (#787)
    • Nav: Internals: Fixed currently focused item from ever being clipped by ItemAdd(). (#787)
    • Scrolling: Fixed scrolling centering API leading to non-integer scrolling values and initial cursor position. This would often get fixed after the fix item submission, but using the ListClipper as the first thing after begin() could largely break size calculations. (#3073)
    • Added optional support for Unicode plane 1-16 (#2538, #2541, #2815) [@cloudwu, @samhocevar]
      • More onsistent handling of unsupported code points (0xFFFD).
      • Surrogate pairs are supported when submitting UTF-16 data via io.addInputCharacterUTF16(), allowing for more complete CJK input.
      • Various structures such as Font, GlyphRangesBuilder will use more memory, this is currently not particularly efficient.
    • Columns: undid the change in 1.75 were columns()/beginColumns() were preemptively limited to 64 columns with an assert. (#3037, #125)
    • Window: Fixed a bug with child window inheriting ItemFlags from their parent when the child window also manipulate the ItemFlags stack. (#3024) [@Stanbroek]
    • Font: Fixed non-ASCII space occasionally creating unnecessary empty looking polygons.
    • Misc: Added additional checks in endFrame() to verify that io.keyXXX values have not been tampered with between newFrame() and endFrame().
    • Misc: Made default clipboard handlers for Win32 and OSX use a buffer inside the main context instead of a static buffer, so it can be freed properly on Shutdown. (#3110)
    • Metrics: Made Tools section more prominent. Showing wire-frame mesh directly hovering the DrawCmd instead of requiring to open it. Added options to disable bounding box and mesh display. Added notes on inactive/gc-ed windows.
    • Demo: Added black and white and color gradients to Demo>Examples>Custom Rendering.
    • Backends: OpenGL3: Fixed version check mistakenly testing for GL 4.0+ instead of 3.2+ to enable BackendFlag.RendererHasVtxOffset, leaving 3.2 contexts without it. (#3119, #2866) [@wolfpld]
    Source code(tar.gz)
    Source code(zip)
    imgui-core-all.jar(75.23 MB)
    imgui-gl-all.jar(75.34 MB)
    imgui-core.jar(16.14 MB)
    imgui-gl-light.jar(74.24 KB)
    imgui-gl-sources.jar(13.64 KB)
    imgui-gl.jar(74.20 KB)
    imgui-glfw-light.jar(40.70 KB)
    imgui-glfw-sources.jar(4.42 KB)
    imgui-glfw.jar(40.67 KB)
    imgui-glfw-all.jar(75.29 MB)
    imgui-openjfx-light.jar(85.34 KB)
    imgui-openjfx-sources.jar(8.99 KB)
    imgui-openjfx.jar(85.34 KB)
    imgui-openjfx-all.jar(81.90 MB)
  • v1.75(Feb 17, 2020)

    Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    TL;DR;

    • [JVM], completed the moving to full mirror native imgui support in terms of UTF8 and (double) Char
    • Dozens of fixes, e.g. for Ctrl+Tab, InputText, ColorEdit, in backends etc. among other things.
    • Added DrawList::addNgon apis for explicit low-polygon count, in prevision for future version making all circles actually round. DrawList::addCircle apis can now takes a zero segment count to use auto-tesselation.
    • [JVM only] double click on a word in text selects only that world, up to the next space included. Native selects still everything

    Breaking Changes

    • Removed implicit default parameter to IsMouseDragging(int button = 0) to be consistent with other mouse functions (none of the other functions have it).
    • DrawList::addCircle()/addCircleFilled() functions don't accept negative radius.
    • Limiting columns()/beginColumns() api to 64 columns with an assert. While the current code technically supports it, future code may not so we're putting the restriction ahead.
    • changed Rect() default constructor initializes all fields to 0f instead of Float.MAX_VALUE. If you used Rect::add() to create bounding boxes by adding multiple points into it without an explicit initialization, you may need to fix your initial value.

    Other Changes

    • Inputs: Added MouseButton enum for convenience (e.g. MouseButton.Right.i=1). We forever guarantee that the existing value will not changes so existing code is free to use 0/1/2.
    • Nav: Fixed a bug where the initial CTRL-Tab press while in a child window sometimes selected the current root window instead of always selecting the previous root window. (#787)
    • ColorEdit: Fix label alignment when using ColorEditFlags.NoInputs. (#2955) [@rokups]
    • ColorEdit: In HSV display of a RGB stored value, attempt to locally preserve Saturation when Value==0.0 (similar to changes done in 1.73 for Hue). Removed Hue editing lock since those improvements in 1.73 makes them unnecessary. (#2722, #2770). [@rokups]
    • ColorEdit: "Copy As" context-menu tool shows hex values with a '#' prefix instead of '0x'.
    • ColorEdit: "Copy As" content-menu tool shows hex values both with/without alpha when available.
    • InputText: Fix corruption or crash when executing undo after clearing input with ESC, as a byproduct we are allowing to later undo the revert with a CTRL+Z. (#3008).
    • MenuBar: Fix minor clipping issue where occasionally a menu text can overlap the right-most border.
    • Window: Fix setNextWindowBgAlpha(1f) failing to override alpha component. (#3007) [@Albog]
    • Window: When testing for the presence of the WindowFlags.NoBringToFrontOnFocus flag we test both the focused/clicked window (which could be a child window) and the root window.
    • DrawList: addCircle(), addCircleFilled() API can now auto-tessellate when provided a segment count of zero. Alter tessellation quality with style.CircleSegmentMaxError. [@ShironekoBen]
    • DrawList: Add addNgon(), addNgonFilled() API with a guarantee on the explicit segment count. In the current branch they are essentially the same as addCircle(), addCircleFilled() but as we will rework the circle rendering functions to use textures and automatic segment count selection, those new api can fill a gap. [@ShironekoBen]
    • Columns: DrawList::channels* functions now work inside columns. Added extra comments to suggest using user-owned DrawListSplitter instead of DrawList functions. [@rokups]
    • Misc: Added MouseCursor.NotAllowed enum so it can be used by more shared widgets. [@rokups]
    • Backends: GLFW: (started) adding support for the missing mouse cursors newly added in GLFW 3.4+. [@rokups] [JVM] transition will be complete with the next lwjgl stable version

    Help wanted!

    • [JVM] Documentation is terrible outdated, we need help to update it
    • Dear ImGui is looking for a technical writer to help writing technical articles, tutorials and documentation. Please reach out if you are interesting in helping!.
    • The Vulkan renderer appears to have issues (see vulkan tag) Browsing issues and todo list you may find something something to contribute to!
    Source code(tar.gz)
    Source code(zip)
    imgui-core-all.jar(76.58 MB)
    imgui-core-sources.jar(436.83 KB)
    imgui-core.jar(17.52 MB)
    imgui-gl-all.jar(76.52 MB)
    imgui-gl-light.jar(74.25 KB)
    imgui-gl-sources.jar(13.58 KB)
    imgui-gl.jar(74.21 KB)
    imgui-glfw-light.jar(39.94 KB)
    imgui-glfw-sources.jar(4.29 KB)
    imgui-glfw.jar(39.90 KB)
    imgui-glfw-all.jar(76.47 MB)
    imgui-openjfx.jar(85.11 KB)
    imgui-openjfx-all.jar(83.08 MB)
    imgui-openjfx-light.jar(85.11 KB)
    imgui-openjfx-sources.jar(9.00 KB)
  • v1.74(Dec 12, 2019)

    Updates:

    • kotlin 1.3.61
    • lwjgl 3.2.3
    • gradle 6.0.1
    • shadow 5.2.0
    • kotlintest 3.4.2

    Changelogs:

    This is a general release, keeping with the rhythm of having more frequent, smaller releases.

    Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    Thanks for the last help:

    @Sylvyrfysh (support help and coding) @exuvo (support help) @yuraj11 and @ebak for donating

    and all the others opening issues and help tracking down bugs

    TL;DR;

    • ~Removed redirecting functions/enums names which were marked obsolete in 1.52 (October 2017).~ (it doesnt affect our port, we never keep them)
    • Quantity of fixes.
    • Improved readme, docs, links, wiki hub.
    • Improved our continuous integration and testing suite.

    Breaking Changes:

    • Inputs: Fixed a miscalculation in the keyboard/mouse "typematic" repeat delay/rate calculation, used by keys and e.g. repeating mouse buttons as well as the GetKeyPressedAmount() function. If you were using a non-default value for io.KeyRepeatRate (previous default was 0.250), you can add +io.KeyRepeatDelay to it to compensate for the fix. The function was triggering on: 0.0 and (delay+rate*N) where (N>=1). Fixed formula responds to (N>=0). Effectively it made io.KeyRepeatRate behave like it was set to (io.KeyRepeatRate + io.KeyRepeatDelay). Fixed the code and altered default io.KeyRepeatRate,Delay from 0.250,0.050 to 0.300,0.050 to compensate. If you never altered io.KeyRepeatRate nor used GetKeyPressedAmount() this won't affect you.
    • Fonts: FontAtlas::addCustomRectRegular() now requires an ID larger than 0x110000 (instead of 0x10000) to conform with supporting Unicode planes 1-16 in a future update. ID below 0x110000 will now assert.

    Other Changes:

    • InputText, Nav: Fixed Home/End key broken when activating Keyboard Navigation. (#787)
    • InputText: Filter out ASCII 127 (DEL) emitted by low-level OSX layer, as we are using the Key value. (#2578)
    • Layout: Fixed a couple of subtle bounding box vertical positioning issues relating to the handling of text baseline alignment. The issue would generally manifest when laying out multiple items on a same line, with varying heights and text baseline offsets. Some specific examples, e.g. a button with regular frame padding followed by another item with a multi-line label and no frame padding, such as: multi-line text, small button, tree node item, etc. The second item was correctly offset to match text baseline, and would interact/display correctly, but it wouldn't push the contents area boundary low enough.
    • Scrollbar: Fixed an issue where scrollbars wouldn't display on the frame following a frame where all child window contents would be culled.
    • ColorPicker: Fixed SV triangle gradient to block (broken in 1.73). (#2864, #2711). [@lewa-j]
    • TreeNode: Fixed combination of TreeNodeFlag.SpanFullWidth and TreeNodeFlag.OpenOnArrow incorrectly locating the arrow hit position to the left of the frame. (#2451, #2438, #1897)
    • TreeNode: The collapsing arrow accepts click even if modifier keys are being held, facilitating interactions with custom multi-selections patterns. (#2886, #1896, #1861)
    • TreeNode: Added IsItemToggledOpen() to explicitly query if item was just open/closed, facilitating interactions with custom multi-selections patterns. (#1896, #1861)
    • DragScalar, SliderScalar, InputScalar: Added p_ prefix to parameter that are pointers to the data to clarify how they are used, and more comments redirecting to the demo code. (#2844)
    • Error handling: Assert if user mistakenly calls End() instead of EndChild() on a child window. (#1651)
    • Docs: Improved and moved FAQ to docs/FAQ.md so it can be readable on the web. [@ButternCream, @ocornut]
    • Docs: Moved misc/fonts/README.txt to docs/FONTS.txt.
    • Docs: Added permanent redirect from https://www.dearimgui.org/faq to FAQ page.
    • Demo: Added simple item reordering demo in Widgets -> Drag and Drop section. (#2823, #143) [@rokups]
    • Metrics: Show wire-frame mesh and approximate surface area when hovering ImDrawCmd. [@ShironekoBen]
    • Metrics: Expose basic details of each window key/value state storage.
    • Backends: OpenGL3: Fix building with pre-3.2 GL loaders which do not expose glDrawElementsBaseVertex(), using runtime GL version to decide if we set ImGuiBackendFlags_RendererHasVtxOffset. (#2866, #2852) [@dpilawa]
    • Backends: OSX: Fix using Backspace key. (#2578, #2817, #2818) [@DiligentGraphics]
    Source code(tar.gz)
    Source code(zip)
    imgui-core-all.jar(76.58 MB)
    imgui-core-sources.jar(436.83 KB)
    imgui-core.jar(17.48 MB)
    imgui-gl-all.jar(76.52 MB)
    imgui-gl-light.jar(74.25 KB)
    imgui-gl-sources.jar(13.70 KB)
    imgui-gl.jar(74.21 KB)
    imgui-glfw-all.jar(76.47 MB)
    imgui-glfw-light.jar(38.37 KB)
    imgui-glfw-sources.jar(4.15 KB)
    imgui-glfw.jar(38.33 KB)
    imgui-openjfx-light.jar(85.07 KB)
    imgui-openjfx-sources.jar(9.07 KB)
    imgui-openjfx.jar(85.07 KB)
    imgui-openjfx-all.jar(83.08 MB)
  • v1.71(Aug 19, 2019)

    Monthly release!

    This is a general release following 1.70, keeping with the rhythm of having more frequent, smaller releases. Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

    TL;DR;

    • Made SetNextWindowContentSize() actually useful (see details below).
    • Fixes for tree nodes, collapsing headers, tab bars, columns inside an horizontally scrolling region.
    • Dozens of other fixes and small additions. Also synched the Docking branch accordingly.

    Breaking Changes

    • IO: changed io.AddInputCharacter(unsigned short c) signature to io.AddInputCharacter(unsigned int c).
    • Renamed SetNextTreeNodeOpen() to SetNextItemOpen(). Kept inline redirection function (will obsolete).
    • Window: rendering of child windows outer decorations (e.g. bg color, border, scrollbars) is now performed as part of their parent window, avoiding the creation of an extraneous draw commands. If you have overlapping child windows with decorations, and relied on their relative z-order to be mapped to submission their order, this will affect your rendering. The optimization is disabled if the parent window has no visual output because it appears to be the most common situation leading to the creation of overlapping child windows. Please reach out if you are affected by this change!

    Other Changes:

    • Window: clarified behavior of SetNextWindowContentSize(). Content size is defined as the size available after removal of WindowPadding on each sides. So SetNextWindowContentSize(ImVec2(100,100)) + auto-resize will always allow submitting a 100x100 item without creating a scrollbar, regarding of the WindowPadding value. The exact meaning of ContentSize for decorated windows was previously ill-defined.
    • Window: Fixed auto-resize with AlwaysVerticalScrollbar or AlwaysHorizontalScrollbar flags.
    • Window: Fixed one case where auto-resize by double-clicking the resize grip would make either scrollbar appear for a single frame after the resize.
    • Separator: Revert 1.70 "Declare its thickness (1.0f) to the layout" change. It's not incorrect but it breaks existing some layout patterns. Will return back to it when we expose Separator flags.
    • Fixed InputScalar, InputScalarN, SliderScalarN, DragScalarN with non-visible label from inserting style.ItemInnerSpacing.x worth of trailing spacing.
    • Fixed InputFloatX, SliderFloatX, DragFloatX functions erroneously reporting IsItemEdited() multiple times when the text input doesn't match the formatted output value (e.g. input "1" shows "1.000"). It wasn't much of a problem because we typically use the return value instead of IsItemEdited() here.
    • Fixed uses of IsItemDeactivated(), IsItemDeactivatedAfterEdit() on multi-components widgets and after EndGroup(). (#2550, #1875)
    • Fixed crash when appending with BeginMainMenuBar() more than once and no other window are showing. (#2567)
    • ColorEdit: Fixed the color picker popup only displaying inputs as HSV instead of showing multiple options. (#2587, broken in 1.69 by #2384).
    • CollapsingHeader: Better clipping when a close button is enabled and it overlaps the label. (#600)
    • Scrollbar: Minor bounding box adjustment to cope with various border size.
    • Scrollbar, Style: Changed default style.ScrollbarSize from 16 to 14.
    • Combo: Fixed rounding not applying with the ImGuiComboFlags_NoArrowButton flag. (#2607) [@DucaRii]
    • Nav: Fixed gamepad/keyboard moving of window affecting contents size incorrectly, sometimes leading to -scrollbars appearing during the movement.
    • Nav: Fixed rare crash when e.g. releasing Alt-key while focusing a window with a menu at the same frame as clearing the focus. This was in most noticeable in back-ends such as Glfw and SDL which emits key release events when focusing another viewport, leading to Alt+clicking on void on another viewport triggering the issue. (#2609)
    • TreeNode, CollapsingHeader: Fixed highlight frame not covering horizontal area fully when using horizontal scrolling. (#2211, #2579)
    • TabBar: Fixed BeginTabBar() within a window with horizontal scrolling from creating a feedback loop with the horizontal contents size.
    • Columns: Fixed Columns() within a window with horizontal scrolling from not covering the full horizontal area (previously only worked with an explicit contents size). (#125)
    • Columns: Fixed Separator() from creating an extraneous draw command. (#125)
    • Columns: Fixed Selectable() with ImGuiSelectableFlags_SpanAllColumns from creating an extraneous draw command. (#125)
    • Style: Added style.WindowMenuButtonPosition (left/right, defaults to ImGuiDir_Left) to move the collapsing/docking button to the other side of the title bar.
    • Style: Made window close button cross slightly smaller.
    • Log/Capture: Fixed BeginTabItem() label not being included in a text log/capture.
    • ~ImDrawList: Added ImDrawCmd::VtxOffset value to support large meshes (64k+ vertices) using 16-bits indices. The renderer back-end needs to set io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset to enable this, and honor the ImDrawCmd::VtxOffset field. Otherwise the value will always be zero. This has the advantage of preserving smaller index buffers and allowing to execute on hardware that do not support 32-bits indices. Most examples back-ends have been modified to support the VtxOffset field.~ (not on JVM)
    • ImDrawList: Added ImDrawCmd::IdxOffset value, equivalent to summing element count for each draw command. This is provided for convenience and consistency with VtxOffset.
    • ImDrawCallback: Allow to override the signature of ImDrawCallback by #define-ing it. This is meant to facilitate custom rendering back-ends passing local render-specific data to the draw callback.
    • ImFontAtlas: FreeType: Added RasterizerFlags::Monochrome flag to disable font anti-aliasing. Combine with RasterizerFlags::MonoHinting for best results. (#2545) [@HolyBlackCat]
    • ImFontGlyphRangesBuilder: Fixed unnecessarily over-sized buffer, which incidentally was also not fully cleared. Fixed edge-case overflow when adding character 0xFFFF. (#2568). [@NIKE3500]
    • Demo: Added full "Dear ImGui" prefix to the title of "Dear ImGui Demo" and "Dear ImGui Metrics" windows.
    • Examples/Backends: Don't filter characters under 0x10000 before calling io.AddInputCharacter(), the filtering is done in io.AddInputCharacter() itself. This is in prevision for fuller Unicode support. (#2538, #2541)
    Source code(tar.gz)
    Source code(zip)
    imgui-bgfx.jar(891 bytes)
    imgui-bgfx-light.jar(928 bytes)
    imgui-bgfx-sources.jar(655 bytes)
    imgui-core.jar(16.05 MB)
    imgui-gl-light.jar(76.75 KB)
    imgui-gl-sources.jar(13.37 KB)
    imgui-gl.jar(76.72 KB)
    imgui-glfw-light.jar(37.91 KB)
    imgui-glfw-sources.jar(3.89 KB)
    imgui-glfw.jar(37.87 KB)
    imgui-openjfx-light.jar(84.88 KB)
    imgui-openjfx-sources.jar(8.92 KB)
    imgui-openjfx.jar(84.88 KB)
    imgui-vk-sources.jar(29.20 KB)
    imgui-vk.jar(148.57 KB)
    imgui-vk-light.jar(148.57 KB)
    imgui-core-sources.jar(15.11 MB)
  • v1.70(Jun 13, 2019)

    Hello!

    In spite of the greaaat looking version number, this is a general release following 1.69, keeping with the rhythm of having more frequent, smaller releases. Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer, and maybe will give you ideas of features that you've been ignoring until now!

    See https://github.com/ocornut/imgui for the project homepage. See https://github.com/ocornut/imgui/releases for earlier release notes. See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions. Issues and support: https://github.com/ocornut/imgui/issues Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues) Thank you

    Ongoing work on dear imgui is currently being sponsored by Blizzard Entertainment + general & community work by many individual users, hobbyists and studios. See the readme for details. Huge thank you to all of you, past and present supporters! You help is very meaningful. TL;DR;

    • First release since new multi-module structure (JVM specific)
    • Added DrawCmd.resetRenderState to request back-end renderer to reset its render state, in a standardized manner.
    • Layout: Added SetNextItemWidth() helper to avoid using PushItemWidth()/PopItemWidth() for single items.
    • Popups: Closing a popup restores the focused/nav window in place at the time of the popup opening, instead of restoring the window that was in the window stack at the time of the OpenPopup call. (#2517).
    • Examples: Vulkan: Various fixes.
    • Many many other fixes, improvements, small additions. Read below!

    Breaking Changes

    • ImDrawList: Improved algorithm for mitre joints on thick lines, preserving correct thickness up to 90 degrees angles (e.g. rectangles). If you have custom rendering using thick lines, they will appear a little thicker now (about +30%). (#2518) [@rmitton]
    • Obsoleted GetContentRegionAvailWidth(), use GetContentRegionAvail().x instead! Kept inline redirection function.
    • Examples Vulkan: - imgui_impl_vulkan: Added MinImageCount/ImageCount fields in ImGui_ImplVulkan_InitInfo, required during initialization to specify the number of in-flight image requested by swap chains. (was previously a hard #define IMGUI_VK_QUEUED_FRAMES 2). (#2071, #1677) [@nathanvoglsam] - Tidying up the demo/internals helpers (most engine/app should not rely on them but it is possible you have!).

    Other Changes:

    • ImDrawList: Added DrawCmd.resetRenderState to request the renderer back-end to reset its render state. (#2037, #1639, #2452). Added support for ImDrawCallback_ResetRenderState in all renderer back-ends. Each renderer code setting up initial render state has been moved to a function so it could be called at the start of rendering and when a ResetRenderState is requested. [@ocornut, @bear24rw]
    • InputText: - Fixed selection background rendering one frame after the cursor movement when first transitioning from no-selection to has-selection. (Bug in 1.69) (#2436) [@Nazg-Gul] - Work-around for buggy standard libraries where isprint('\t') returns true. (#2467, #1336) - Fixed ImGuiInputTextFlags_AllowTabInput leading to two tabs characters being inserted if the back-end provided both Key and Character input. (#2467, #1336)
    • Layout: - Added SetNextItemWidth() helper to avoid using PushItemWidth()/PopItemWidth() for single items. Note that SetNextItemWidth() currently only affect the same subset of items as PushItemWidth(), generally referred to as the large framed+labeled items. Because the new SetNextItemWidth() function is explicit we may later extend its effect to more items. - Fixed PushItemWidth(-width) for right-side alignment laying out some items (button, listbox, etc.) with negative sizes if the 'width' argument was smaller than the available width at the time of item submission.
    • Window: - Fixed window with the ImGuiWindowFlags_AlwaysAutoResize flag unnecessarily extending their hovering boundaries by a few pixels (this is used to facilitate resizing from borders when available for a given window). One of the noticeable minor side effect was that navigating menus would have had a tendency to disable highlight from parent menu items earlier than necessary while approaching the child menu. - Close button is horizontally aligned with style.FramePadding.x. - Fixed contents region being off by WindowBorderSize amount on the right when scrollbar is active. - Fixed SetNextWindowSizeConstraints() with non-rounded positions making windows drift. (#2067, #2530)
    • Popups: - Closing a popup restores the focused/nav window in place at the time of the popup opening, instead of restoring the window that was in the window stack at the time of the OpenPopup call. (#2517). Among other things, this allows opening a popup while no window are focused, and pressing Escape to clear the focus again. - Fixed right-click from closing all popups instead of aiming at the hovered popup level (regression in 1.67).
    • Selectable: With ImGuiSelectableFlags_AllowDoubleClick doesn't return true on the mouse button release following the double-click. Only first mouse release + second mouse down (double-click) returns true. Likewise for internal ButtonBehavior() with both _PressedOnClickRelease | _PressedOnDoubleClick. (#2503)
    • GetMouseDragDelta(): also returns the delta on the mouse button released frame. (#2419)
    • GetMouseDragDelta(): verify that mouse positions are valid otherwise returns zero.
    • Inputs: Support for horizontal scroll with Shift+Mouse Wheel. (#2424, #1463) [@LucaRood]
    • PlotLines, PlotHistogram: Ignore NaN values when calculating min/max bounds. (#2485)
    • Columns: Fixed boundary of clipping being off by 1 pixel within the left column. (#125)
    • Separator: Declare its thickness (1.0f) to the layout, making items on both ends of a separator look more symmetrical.
    • Combo, Slider, Scrollbar: Improve rendering in situation when there's only a few pixels available (<3 pixels).
    • Nav: Fixed Drag/Slider functions going into text input mode when keyboard CTRL is held while pressing NavActivate.
    • Drag and Drop: Fixed drag source with ImGuiDragDropFlags_SourceAllowNullID and null ID from receiving click regardless of being covered by another window (it didn't honor correct hovering rules). (#2521)
    • ImDrawList: Improved algorithm for mitre joints on thick lines, preserving correct thickness up to 90 degrees angles, also faster to output. (#2518) [@rmitton]
    • Metrics: Added "Show windows rectangles" tool to visualize the different rectangles.
    • Demo: Improved trees in columns demo.
    • Examples: - OpenGL3: Minor tweaks + not calling glBindBuffer more than necessary in the render loop. - Vulkan: - Fixed in-flight buffers issues when using multi-viewports. (#2461, #2348, #2378, #2097) - Added missing support for 32-bit indices (#define ImDrawIdx unsigned int). - Avoid passing negative coordinates to vkCmdSetScissor, which debug validation layers do not like. - Added ImGui_ImplVulkan_SetMinImageCount() to change min image count at runtime. (#2071) [@nathanvoglsam]
    Source code(tar.gz)
    Source code(zip)
    imgui-core.jar(16.03 MB)
    imgui-core-all.jar(64.66 MB)
    imgui-gl-light.jar(37.59 KB)
    imgui-gl-sources.jar(13.06 KB)
    imgui-gl.jar(37.59 KB)
    imgui-gl-all.jar(64.73 MB)
    imgui-gl-javadoc.jar(261 bytes)
    imgui-glfw-all.jar(64.70 MB)
    imgui-glfw-javadoc.jar(261 bytes)
    imgui-glfw-light.jar(18.78 KB)
    imgui-glfw-sources.jar(3.64 KB)
    imgui-glfw.jar(18.78 KB)
    imgui-openjfx-light.jar(40.84 KB)
    imgui-openjfx-sources.jar(8.52 KB)
    imgui-openjfx.jar(40.84 KB)
    imgui-openjfx-all.jar(71.42 MB)
    imgui-openjfx-javadoc.jar(261 bytes)
  • 1.69-build-00(May 4, 2019)

    This is a general release, keeping with the beat of having more frequent, smaller releases. Reading the full changelog is a good way to keep up to date with the things dear imgui has to offer, and maybe will give you ideas of features to explore that you've been ignoring until now!

    TL;DR;

    • Added native support for u8/s8/u16/s16 data types in DragScalar, InputScalar, SliderScalar functions. [still WIP on JVM]
    • Added GetBackgroundDrawList() helper to easily submit draw list primitives behind every windows.
    • Added InputTextWithHint() to display a greyed out message when an input field is empty.
    • Added ImGuiColorEditFlags_InputHSV to edit HSV colors without internal RGB<>HSV roundtrips.
    • Various fixes in the LogXXX functions to capture UI as text.
    • Examples: OpenGL: Fixes to support GL ES 2.0 (WebGL 1.0).
    • Dozens of other fixes and improvements.

    InputTextWithHint() image

    ImGuiDataType_S8/ImGuiDataType_U8/ImGuiDataType_S16/ImGuiDataType_U16 [still WIP on JVM] image

    GetBackgroundDrawList() image

    Breaking Changes

    • Renamed ColorEdit/ColorPicker's ImGuiColorEditFlags_RGB/_HSV/_HEX flags to respectively ImGuiColorEditFlags_DisplayRGB/_DisplayHSV/_DisplayHex. This is because the addition of new flag ImGuiColorEditFlags_InputHSV makes the earlier one ambiguous. Keep redirection enum values (will obsolete). (#2384) [@haldean]
    • Renamed GetOverlayDrawList() to GetForegroundDrawList(). Kept redirection function (will obsolete). (#2391)

    Other Changes:

    • Added GetBackgroundDrawList() helper to quickly get access to a ImDrawList that will be rendered behind every other windows. (#2391, #545)
    • DragScalar, InputScalar, SliderScalar: Added support for u8/s8/u16/s16 data types (ImGuiDataType_S8 etc.). We are reusing function instances of larger types to reduce code size. (#643, #320, #708, #1011)
    • Added InputTextWithHint() to display a description/hint in the text box when no text has been entered. (#2400) [@Organic-Code, @ocornut]
    • Nav: Fixed a tap on AltGR (e.g. German keyboard) from navigating to the menu layer.
    • Nav: Fixed Ctrl+Tab keeping active InputText() of a previous window active after the switch. (#2380)
    • Fixed IsItemDeactivated()/IsItemDeactivatedAfterEdit() from not correctly returning true when tabbing out of a focusable widget (Input/Slider/Drag) in most situations. (#2215, #1875)
    • InputInt, InputFloat, InputScalar: Fix to keep the label of the +/- buttons centered when style.FramePadding.x is abnormally larger than style.FramePadding.y. Since the buttons are meant to be square (to align with e.g. color button) we always use FramePadding.y. (#2367)
    • InputInt, InputScalar: +/- buttons now respects the natural type limits instead of overflowing or underflowing the value.
    • InputText: Fixed an edge case crash that would happen if another widget sharing the same ID is being swapped with an InputText that has yet to be activated.
    • InputText: Fixed various display corruption related to swapping the underlying buffer while a input widget is active (both for writable and read-only paths). Often they would manifest when manipulating the scrollbar of a multi-line input text.
    • ColorEdit, ColorPicker, ColorButton: Added ImGuiColorEditFlags_InputHSV to manipulate color values encoded as HSV (in order to avoid HSV<>RGB round trips and associated singularities). (#2383, #2384) [@haldean]
    • ColorPicker: Fixed a bug/assertion when displaying a color picker in a collapsed window while dragging its title bar. (#2389)
    • ColorEdit: Fixed tooltip not honoring the ImGuiColorEditFlags_NoAlpha contract of never reading the 4th float in the array (value was read and discarded). (#2384) [@haldean]
    • MenuItem, Selectable: Fixed disabled widget interfering with navigation (fix c2db7f6 in 1.67).
    • TabBar: Fixed a crash when using many BeginTabBar() recursively (didn't affect docking). (#2371)
    • TabBar: Added extra mis-usage error recovery. Past the assert, common mis-usage don't lead to hard crashes any more, facilitating integration with scripting languages. (#1651)
    • TabBar: Fixed ImGuiTabItemFlags_SetSelected being ignored if the tab is not visible (with scrolling policy enabled) or if is currently appearing.
    • TabBar: Fixed Tab tooltip code making drag and drop tooltip disappear during the frame where the drag payload activate a tab.
    • TabBar: Reworked scrolling policy (when ImGuiTabBarFlags_FittingPolicyScroll is set) to teleport the view when aiming at a tab far away the visible section, and otherwise accelerate the scrolling speed to cap the scrolling time to 0.3 seconds.
    • Text: Fixed large Text/TextUnformatted calls not declaring their size into layout when starting below the lower point of the current clipping rectangle. Somehow this bug has been there since v1.0! It was hardly noticeable but would affect the scrolling range, which in turn would affect some scrolling request functions when called during the appearing frame of a window.
    • Plot: Fixed divide-by-zero in PlotLines() when passing a count of 1. (#2387) [@Lectem]
    • Log/Capture: Fixed LogXXX functions emitting an extraneous leading carriage return.
    • Log/Capture: Fixed an issue when empty string on a new line would not emit a carriage return.
    • Log/Capture: Fixed LogXXX functions 'auto_open_depth' parameter being treated as an absolute tree depth instead of a relative one.
    • Log/Capture: Fixed CollapsingHeader trailing ascii representation being "#" instead of "##".
    • ImFont: Added GetGlyphRangesVietnamese() helper. (#2403)
    • Misc: Asserting in NewFrame() if style.WindowMinSize is zero or smaller than (1.0f,1.0f).
    • Demo: Using GetBackgroundDrawList() and GetForegroundDrawList() in "Custom Rendering" demo.
    • Demo: InputText: Demonstrating use of ImGuiInputTextFlags_CallbackResize. (#2006, #1443, #1008).
    • Examples: GLFW, SDL: Preserve DisplayFramebufferScale when main viewport is minimized. (This is particularly useful for the viewport branch because we are not supporting per-viewport frame-buffer scale. It fixes windows not refreshing when main viewport is minimized.) (#2416)
    • Examples: OpenGL: Fix to be able to run on ES 2.0 / WebGL 1.0. [@rmitton, @gabrielcuvillier]
    • Examples: OpenGL: Fix for OSX not supporting OpenGL 4.5, we don't try to read GL_CLIP_ORIGIN even if the OpenGL headers/loader happens to define the value. (#2366, #2186)
    Source code(tar.gz)
    Source code(zip)
    imgui-javadoc.jar(261 bytes)
    imgui-light.jar(1.29 MB)
    imgui-sources.jar(15.12 MB)
    imgui.jar(16.01 MB)
  • v1.68.01-00(Mar 1, 2019)

  • v1.63-beta-02(Sep 21, 2018)

  • v1.63-beta-01(Aug 6, 2018)

  • v1.60-beta-05(May 9, 2018)

  • v1.60-beta-04(May 4, 2018)

  • v1.53wip-beta04(Jan 15, 2018)

  • v1.53wip-beta03(Dec 21, 2017)

Owner
Friendly community providing JVM counterpart of open source tools for real time 3d graphic. "Take care of your tools and they will take care of you." (cit)
null
**Bigger Number Game ** propose the user to select largest number between the two numbers.

**Bigger Number Game ** propose the user to select largest number between the two numbers.

Shivangee Rajput 0 May 24, 2022
Gameforma is a simple game list application where user could explore more than 350.000 games

Gameforma is a simple game list application where user could explore more than 350.000 games data provided from RAWG Video Games Database API. Built with MVVM repositoy pattern, clean architecture in order to finish Dicoding Menjadi Android Developer Expert's (MADE) class submission.

Naufal Aldy Pradana 3 Sep 22, 2022
A Ktor-based server that handles game process, user registration and packs provision

Polyhoot! Server backend A Ktor-based server that handles game process, user registration and packs provision Deploying server locally You can deploy

Polyhoot! 2 May 31, 2022
DroidFish is a feature-rich graphical chess user interface, combined with the very strong Stockfish chess engine.

Introduction DroidFish is a feature-rich graphical chess user interface, combined with the very strong Stockfish chess engine. DroidFish is primarily

Peter Österlund 233 Jan 4, 2023
Gradm (Gradle dependencies manager) is a new way to manage dependencies easier and more efficient.

Gradm (Gradle dependencies manager) is a new way to manage dependencies easier and more efficient.

null 16 Jan 9, 2023
📅 Minimal Calendar - This calendar library is built with jetpack compose. Easy, simple, and minimal.

?? Minimal Calendar This calendar library is built with jetpack compose. Easy, simple, and minimal. Latest version The stable version of the library i

Minjae Kim 16 Sep 14, 2022
Initiate immediate phone call for React Native on iOS and Android.

react-native-immediate-call-library Initiate immediate phone call for React Native on iOS and Android. Getting started Using npm: npm install react-na

null 7 Sep 7, 2022
Run Node.js on Android by rewrite Node.js in Java

node-android Run Node.js on Android by rewrite Node.js in Java with the compatible API. third-party: libuvpp, libuv-java JNI code by Oracle. Build Clo

AppNet.Link 614 Nov 15, 2022
Sample to show how to implement blur graphical tricks

BlurEffectForAndroidDesign Sample to show how to implement blur graphical tricks All the explanations could be found here: http://nicolaspomepuy.fr/?p

Nicolas POMEPUY 2k Dec 28, 2022
Sample to show how to implement blur graphical tricks

BlurEffectForAndroidDesign Sample to show how to implement blur graphical tricks All the explanations could be found here: http://nicolaspomepuy.fr/?p

Nicolas POMEPUY 2k Dec 28, 2022
Collection of Rewrite Recipes pertaining to the JHipster web application & microservice development platform

Apply JHipster best practices automatically What is this? This project implements a Rewrite module that applies best practices and migrations pertaini

OpenRewrite 5 Mar 7, 2022
An easy to use graphical chia plot manager & optimizer for windows, mac & linux. You're a farmer, Harry!

Harry Plotter You're a farmer, Harry! Harry Plotter is an easy to use magical Chia plot manager for muggles! It works on Windows, MacOS, and Linux. It

Andrew Bueide 132 Oct 26, 2022
Aliucord Manager - Aliucord Installer rewrite in Kotlin and Jetpack Compose

Aliucord Manager Aliucord Manager - Aliucord Installer rewrite in Kotlin and Jetpack Compose. INFO: This app is not functional yet, if you want to ins

null 102 Jan 5, 2023
A rewrite of the popular project GitUp that works in Linux, Mac, and Windows.

GitDown This is a rewrite from the ground up of the popular GitUp library available on Mac. It is built using Kotlin and Compose Desktop from Jetbrain

Cody Mikol 20 Dec 16, 2022
A complete rewrite from scratch of the old iOS game "Heavy MACH: Defense"

Heavy MACH: Defense is a game where you need to create an army of machines in order to defend your castle from the enemy castle, in a side-scroller st

Mesabloo 10 Dec 25, 2022
A complete rewrite of my old Datasync Plugin.

Palladium A complete rewrite of my old datasync plugin. Development begins when the last update for the datasync plugin is pushed. Versioning 0.10.0:

Jansel 1 Jun 28, 2022
Fermata Media Player is a free, open source audio and video player with a simple and intuitive interface.

Fermata Media Player About Fermata Media Player is a free, open source audio and video player with a simple and intuitive interface. It is focused on

Andrey 227 Jan 6, 2023