* feat(generator): introduce ArgVariant annotation
New annotation provides an ability to generate methods definitions for different types and names.
* feat(api): expose count param for plot* methods
* deps(build): bump FreeType from 2.12.1 to 2.13.3
* fix(generator): add missing ImGuiFreeTypeBuilderFlags
* feat(generator): add possibility to provide additional defines specifically for AST
* feat(api): make FreeType optional and disabled by default
FreeType renderer is still included in the final build.
Its usage is toggleable and DISABLED by default.
* build(deps): bump Dear ImGui from 1.86 to 1.87
* build(deps): bump implot from 0.12 to 0.13
* feat(api,binding): adapt API to Dear ImGui v1.87
* feat(api,binding): adapt API to implot v0.13
* build: generate API for latest changes
* chore(binding): add missing super call for ImGuiStructDestroyable constructor
* chore: minor code style
* feat: adapt ImGuiImplGlfw to 1.87
* feat: adapt ImGuiImplGl3 to 1.87
* feat: adapt imgui-app module to 1.87
* fix: javadoc for updated imgui-binding
* fix: loosing data when setting struct field of char* type
Since we manually release chars, to store them in field we need to do a local copy.
* fix: invalid methods to check program linking in OpenGL
* chore: remove dedicated method to check GLFW version
* fix: add missing include
A squash of hundreds of commits with a binding API generator.
The API generator works with a hybrid model:
1. We define methods and fields in the code.
2. Mark them with API annotations.
3. For specific use cases, we use the old approach with JNI generation comments.
There is also an API to generate an AST tree, which is saved to JSON.
This JSON can be used for full API generation by declaring only field/method names.
Currently, it is used to generate constants.
By eyeballing, 95% of the API has been converted to the new approach.
This is sufficient for the current moment. Only edge cases with specific API calls are left.
fix: ambiguous call for ImGui::GetColorU32
build: disable checkstyle for imgui-binding module
Since the module is heavily generated, checkstyle for it doesn't make sense.
build: make buildSrc to use JDK 11
build: make generateApi optional when compiling project
Initially generated module was not included to the project VCS.
Since it's now in the separate src folder, we don't need to call generator every time.
Only when a new generation result is required.
- Static FreeType linking flow for all OS
- Flow to build universal binaries for macOS (x86_64, aarch64)
- Simplified CI workflow by removing FreeType branches from the build matrix
Added 2 new scripts:
1. `buildSrc/scripts/vendor_freetype.sh`
2. `buildSrc/scripts/build.sh`
The first script prepares FreeType for usage in the build process.
The result of this script is used in the `GenerateLibs` task.
Other ways of building with FreeType are removed.
If it's impossible to build with FreeType, it is recommended to set `freetype=false`.
The second script aggregates commands to build native binaries.
It includes specific steps, such as creating a universal library for macOS and copying the result to the specific folder `/tmp/imgui/dst`.
Script 1 can be used for local builds. Script 2 is primarily intended for use in CI.
Instead of generating `properties` file we make it always.
To provide version value we replace specific token.
Also, small tweaks in code which gets the version
* [API] Stop creating tmpDir every time
* [API] Add a whitespace after catch
* [API] Fix getting imgui-java version
* [API] Add final to properties variable
* [API] Make it brief to generate properties
* [API] Fix the path of imgui-java.properties
* [API] Change the order of loading native library
1.imgui.library.path
2.java.library.path
3.extract from resources
* [API] Remove debugging codes
* [API] Move extraction code before it is loaded
`getDragDropPayload()` functions should simply return null when
the payload doesn't exist.
Currently, DearImGui will return NULL from `ImGui::GetDragDropPayload()`
when the payload does not exist. This causes a null dereference
since the nHasDragDropPayload function performs no NULL check
* Make native array method public to enable use of primitive arrays.
* Make public methods for the performance methods that are separate from the native ones.
* Finish adding performance methods.
* Add finals.
* Add final finals.
* Working on memory editor bindings for SpaiR/imgui-java#109
* Initial working implementation
* Add mising entry for imgui_club in .gitmodules
* Sorry, fixing readme link type and description for memory editor.
* Rename .club package to .memedit
* Rename _club.h to _memedit.h
* Initial implementation of Automatic Module Names
* Fix using java 17 for publishing
* Roll build back to jdk 1.8
* Fix package name for imgui.lwjgl3 module
* Reworking package change to prevent breaking backwards compatability
* Syncing wip to github
* Assertion callback works
* Restore example that does not crash
* Add comment in build script. Merge with upstream.
* Fix assert always triggering
* Resolve jvm env at runtime to prevent looking up bad stack address
* Fixed EXCEPTION_ACCESS_VIOLATION within native code after callback was complete.
* Fix linting errors
* Change ImGui to Dear ImGui
Co-authored-by: SpaiR <klimbetoo@gmail.com>
* Move jvm native layer to its own header/source
Co-authored-by: SpaiR <klimbetoo@gmail.com>
* Initial setup for ImGuiFileDialog extension
* Need to resolve linker errors. Working on PaneFun callback.
* Remove jni callback code that is not compiling to expose linker error.
* Callbacks for paneFun not yet implemented. Linker error still present, seems that some header is being included multiple times.
* Fixed linker errors. Added example for demo.
* Add support for multiple callbacks
* Callbacks work
Struct itself has no fields or methods. It can be used for context switching though.
* Implement ImGuiContext
* Move ImGuiContext from imgui to imgui.internal, minor bugfixes
resolves#17