Commit Graph
103 Commits
Author SHA1 Message Date
SpaiR 933a7c60b6 fix(api): missing bindings for TreePush and InputScalar (#268)
Add:
- TreePush with label arg
- InputScalar with dataType arg
2024-09-09 08:37:43 +03:00
SpaiR c4c03bee9f feat(api): use uintptr_t instead of intptr_t for pointers (#265)
Image methods now accept the `long` type instead of `int`,
as they are expected to work with pointers as well.
2024-08-29 16:54:43 +03:00
SpaiR 9518b1cec6 feat: ArgVariant annotation and plot methods with count parameter (#264)
* 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
2024-08-26 11:33:55 +03:00
SpaiR 2086b7977b feat(generator): create unwrapped methods for methods with dst arg (#263)
Also, minor fixes for binding declarations.
2024-08-21 14:31:05 +03:00
SpaiR 47d97102f7 feat(api): Dear ImGui v1.87 + ImPlot v0.13 (#252)
* 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
2024-08-16 15:35:42 +03:00
Emanuel RabinaandSpaiR 9ca6d97489 feat(api): add missing ImGui.TableGetSortSpecs API (and related objects) (#246)
* Add missing GetTableSortSpecs API

* Add binding for TreeNodeEx(const char* label, ImGuiTreeNodeFlags flags)

* Add generated files

* Wrap > character in code block

Co-authored-by: SpaiR <klimbetoo@gmail.com>

* Wrap > character in code block

Co-authored-by: SpaiR <klimbetoo@gmail.com>

---------

Co-authored-by: SpaiR <klimbetoo@gmail.com>
2024-08-12 16:35:02 +03:00
SpaiR 8a8cd22ed6 feat: introduce binding generator
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.
2024-08-08 14:46:23 +03:00
SpaiR 46c008eb02 build(binding): add universal macOS ARM64 dylib and static FreeType compilation
- 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.
2024-08-07 09:41:09 +03:00
Rex Fleischerand@Tom-Ski @zly2006 be4734090e build(binding): macOS ARM64 native binaries (#223)
Co-authored-by: @Tom-Ski @zly2006
2024-08-05 00:37:32 +03:00
SpaiR 49fffaf02d tweak(api): simplify version get from imgui-java.properties file (#204)
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
2023-09-29 10:02:21 +03:00
Kusaanko c46830a3b7 fix(api): native loading by stopping creating tmpDir every time (#197)
* [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
2023-09-18 09:19:01 +03:00
SpaiR bf92f04c21 [API] Fix inputText with resizable ImString crashes if the ImGuiInputTextCallback is null
fixes #158
2023-03-01 11:01:09 +02:00
Kirill Boginskyandkirill-boginskiy e9f1b72043 [API] Added inputTextWithHint with ability to use callback (#159)
Co-authored-by: kirill-boginskiy <kirill.boginskiy@vizor-games.com>
2023-02-28 12:52:23 +02:00
墨恒andSpaiR 986aa532ff [API] Added callback binding for InputText (#156)
* Added callback binding for InputText

* Add JavaDoc

* Change

* Add Javadoc

* Fix Import

* Teaks and improvements

- Extended example;
- Added input text callback ImGuiInputTextFlags#CallbackEdit;
- Minor code improvements.

---------

Co-authored-by: SpaiR <klimbetoo@gmail.com>
2023-02-07 13:13:02 +02:00
Moulberry 667d6108b8 [API] Fix nHasDragDropPayload SIGSEGV when payload doesn't exist (#155)
`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
2023-02-03 19:11:47 +02:00
davfsa 72e061637e [API] Fix calcTextSize to be used in a static context (#143) 2022-11-16 12:00:39 +02:00
SpaiR e972af840e [API] Dear ImGui v1.86 (#102) 2021-12-26 16:00:21 +02:00
Trevor FlynnandSpaiR 74203bc333 [API] Add a mechanism for Dear ImGui assertion callbacks (#100)
* 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>
2021-12-26 14:11:56 +02:00
SpaiR f172bd6e13 [API] Dear ImGui v1.85 2021-12-01 10:38:46 +02:00
SpaiR e529c610fa [API] Fix dragInt3 only shows 2 boxes
fixes #68
2021-09-12 11:29:01 +03:00
SpaiR 9026dcd4ad [API] Dear ImGui v1.84.1 2021-08-29 11:17:15 +03:00
Perry MacMurray 78694a4263 [API] Add ImGuiContext struct and ability to switch Dear ImGui contexts (#65)
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
2021-07-13 08:22:48 +03:00
SpaiR 39a86991f2 [Build] Drop 32bit support 2021-05-30 14:30:00 +03:00
SpaiR b4df8d8611 [API] Dear ImGui v1.83 2021-05-29 13:09:00 +03:00
SpaiR 423612cdc4 [API] Fix #43 2021-05-29 12:09:01 +03:00
SpaiR 3725ddf2f9 [Build] Add a "one include" header files 2021-04-10 15:30:00 +03:00
sh54andSpaiR 04b7c4e4fe [API] Allow null to be passed as the shortcut param to MenuItem (#35)
Co-authored-by: SpaiR <klimbetoo@gmail.com>
2021-03-27 17:09:37 +03:00
SpaiR 3fe77320f3 [Example] Add example of Drag & Drop 2021-03-09 17:58:21 +02:00
SpaiR 533fc7f979 [API] Refactor Drag & Drop api
In Java we can easily bind our payload to an object. 
This is a more flexible approach, than using byte arrays so the last one was removed.
2021-03-09 17:58:02 +02:00
SpaiR 9e807d3e9e [API] Fix getDragDropPayloadObject
Methods was throwing nullpointer  exception when there were no payload
2021-02-27 16:16:55 +02:00
SpaiR 36415d60f3 [API] Add API to directly return ImVec2/ImVec4 2021-02-27 16:16:03 +02:00
SpaiR fb80b8d8a1 [API] Make ImGuiIO to extend common ImGuiStruct class
ImGuiIO used a legacy way to access the native struct through `ImGui::GetIO()`.
Refactored to use ImGuiStruct, so to make API consistent.
2021-02-27 16:15:22 +02:00
SpaiR 91d636a659 [API] Remove lazy-created sructs and add methods to verify struct pointer 2021-02-27 16:15:11 +02:00
SpaiR 08bf84ad64 [API] Dear ImGui v1.81 2021-02-20 11:16:44 +02:00
SpaiR cf9e74b1d0 [Example] Migrate example to the new module 2021-01-24 22:20:37 +02:00
SpaiR 7043cd642b [API] Add missing ImGui::InputTextWithHint() method 2021-01-23 20:48:13 +02:00
SpaiR 13b3836e47 [API] Delete obsolete functions 2021-01-23 20:24:40 +02:00
SpaiR 33309088a2 [API] Dear ImGui v1.80 2021-01-23 20:03:49 +02:00
SpaiR 8ac8a0719b [API] Add API for Dear ImGui v1.79 2020-10-17 14:58:04 +03:00
SpaiR 897ca4947b [API] Change natives extract folder
So the folder will be unique for sure
2020-10-06 17:30:37 +03:00
SpaiR 4e564240ca [API] Add support for DockBuilder 2020-09-05 15:27:03 +03:00
SpaiR 23b9c30b45 [API] Fix windows build 2020-08-30 23:23:24 +03:00
SpaiR 0b4aa25b1d [API] Add API for Dear ImGui v1.78 2020-08-30 23:04:23 +03:00
SpaiR e328d738ce [WIP] Viewports backend 2020-08-30 15:47:27 +03:00
SpaiR 8494bd8361 Add ImPlatformIO, ImGuiViewport 2020-08-29 15:33:15 +03:00
SpaiR dce574ef76 Rename ImGui#touch to ImGui#init 2020-08-23 21:12:04 +03:00
SpaiR 7bfa1b6195 Remove *New versions of methods, since now is possible to change the pointer explicitly 2020-08-23 17:00:23 +03:00
SpaiR 1dcf2328a4 Refactor mapping to the native structs 2020-08-23 16:49:16 +03:00
SpaiR 1209caa518 Initial Multi-Viewport implementation 2020-08-23 14:13:03 +03:00
SpaiR 640f56b4be Add ImGui helper methods to get ImVec2 values 2020-07-11 18:50:57 +03:00