Compare commits

...

141 Commits

Author SHA1 Message Date
sonoro1234
833e9366de Merge branch 'docking_inter' 2024-10-01 13:05:38 +02:00
sonoro1234
652d4cbc89 pull imgui 1.91.2 and generate 2024-10-01 12:49:47 +02:00
sonoro1234
e50a65fd62 cpp2ffi: templates from classes name :: -> _ 2024-09-24 18:52:47 +02:00
sonoro1234
f276fd4ae1 cpp2ffi: initial changes for processing classes 2024-09-24 17:47:48 +02:00
sonoro1234
c06a46b0f2 cpp2ffi: get enum name from typedef enum ... 2024-09-23 10:53:32 +02:00
sonoro1234
a051fe287b constructors missed semicolon 2024-09-18 17:16:45 +02:00
sonoro1234
411924f104 script param "constructors" to add the _Construct version of constructors issue #278 2024-09-18 14:36:22 +02:00
sonoro1234
0c7f67607d cpp2ffi: get class name 2024-09-14 20:19:51 +02:00
sonoro1234
51197f420a cpp2ffi: clean namespace in typedefs issue #277 2024-09-11 11:39:05 +02:00
sonoro1234
74902e7392 Merge branch 'docking_inter' 2024-09-08 11:57:14 +02:00
sonoro1234
ed017a0704 pull imgui 1.91.1 docking and generate 2024-09-06 16:56:46 +02:00
sonoro1234
c482a65118 cpp2ffi: drop (int) from enums 2024-09-06 16:55:13 +02:00
sonoro1234
143c37b7ac Merge branch 'docking_inter' 2024-07-31 11:27:49 +02:00
sonoro1234
35a4e8f893 pull imgui 1.91.0 and generate 2024-07-31 11:23:21 +02:00
sonoro1234
2b4d572704 cimgui_template: new -> IM_NEW issue #272 2024-07-31 11:16:41 +02:00
sonoro1234
7c79f59fa2 Merge branch 'docking_inter' 2024-07-03 11:14:11 +02:00
sonoro1234
f6fb347cf1 pull 1.90.9 docking and generate 2024-07-03 11:05:17 +02:00
sonoro1234
d8f958f680 example_glfw_opengl3/CMakeLists.txt: move definitions to avoid glfw compilation error. 2024-06-15 17:40:12 +02:00
sonoro1234
ee251eaafa cpp2ffi: only change type&name but not type &name 2024-06-14 18:51:00 +02:00
sonoro1234
00ecbb0ee2 backend_test: make glfw examples work with dynamic and static linking 2024-06-14 16:25:20 +02:00
sonoro1234
577f2b088a example_glfw_dx11/main.c: avoid compiler warning 2024-06-13 10:45:34 +02:00
sonoro1234
26152eac73 add backend_test/example_glfw_dx11 2024-06-13 09:51:41 +02:00
sonoro1234
35fdbf393f Merge branch 'docking_inter' 2024-06-07 13:26:08 +02:00
sonoro1234
7c16d31cdb pull imgui docking 1.90.8 and generate 2024-06-07 13:21:00 +02:00
sonoro1234
b3e02743f2 avoid type&name -> type& name 2024-06-07 13:18:13 +02:00
sonoro1234
155d5961dc add definitions to cimgui.h (issue #268) 2024-06-01 12:54:07 +02:00
sonoro1234
bf02a1552e Merge branch 'docking_inter' 2024-05-28 10:18:05 +02:00
sonoro1234
a01f163a81 pull imgui 1.90.7 dock and generate 2024-05-28 10:12:28 +02:00
sonoro1234
481cd32543 Merge branch 'docking_inter' 2024-05-10 17:11:32 +02:00
sonoro1234
67cf8c96b7 pull imgui 1.90.6 and generate 2024-05-10 17:06:30 +02:00
sonoro1234
d222bc5a4e Merge branch 'docking_inter' 2024-04-19 10:54:29 +02:00
sonoro1234
f055d73efc pull imgui 1.90.5 and generate 2024-04-19 10:48:53 +02:00
Victor Bombi
781edadf8d Merge pull request #265 from alfredbaudisch/add-raylib-cimgui
Added raylib-cimgui to the README
2024-04-08 11:40:40 +02:00
Alfred Reinold Baudisch
b6520c67a8 Added raylib-cimgui to the README 2024-04-07 18:07:33 +01:00
sonoro1234
eb0649acf3 pull ImDrawCallback_ResetRenderState to cimgui.h 2024-02-27 09:56:32 +01:00
sonoro1234
f0fb387921 Merge branch 'docking_inter' 2024-02-24 13:15:42 +01:00
sonoro1234
4486dace2a update readme 2024-02-24 13:05:48 +01:00
sonoro1234
bd0a584e56 pull imgui 1.90.4 and generate 2024-02-24 13:03:13 +01:00
sonoro1234
c7133969db Merge branch 'docking_inter' 2024-02-16 11:36:05 +01:00
sonoro1234
7ea55fbcea pull imgui 1.90.3 docking and generate 2024-02-16 11:31:30 +01:00
sonoro1234
0821a31dfe Merge branch 'docking_inter' 2024-02-14 11:17:50 +01:00
sonoro1234
53580da638 pull imgui 1.90.2 and generate 2024-02-14 11:11:46 +01:00
Victor Bombi
04961a999e Merge pull request #260 from Sirius902/zig-cc
Allow use of zig cc in generator.lua
2024-01-27 12:51:42 +01:00
Sirius902
b8ae217fd1 Allow use of zig cc in generator 2024-01-26 14:17:33 -08:00
sonoro1234
9009dd72e9 Merge branch 'docking_inter' 1.90.1 2024-01-12 11:27:04 +01:00
sonoro1234
831f155f60 pull imgui 1.90.1 docking and generate 2024-01-12 11:21:08 +01:00
sonoro1234
6fd23e83ff README.md: update backends information 2023-11-21 11:19:50 +01:00
sonoro1234
21e7106aa1 print_defines.cpp: add IMGUI_VERSION_NUM 2023-11-17 11:18:17 +01:00
sonoro1234
b6e02f4131 Merge branch 'docking_inter' 2023-11-17 11:08:06 +01:00
sonoro1234
0a31d9d923 update readme 2023-11-17 11:01:26 +01:00
sonoro1234
37f347e062 pull imgui 1.90 and generate 2023-11-17 11:00:07 +01:00
sonoro1234
86f59d7e9b cpp2ffi: more returns in name_overloadsAlgo 2023-11-17 10:57:34 +01:00
sonoro1234
4ca6b29166 CMakeLists.txt: allow using CMAKE_MSVC_RUNTIME_LIBRARY 2023-09-20 11:01:32 +02:00
sonoro1234
5140ea5c81 cpp2ffi: correct embeded_structs for untagged structs (ImNodes needs that) 2023-09-12 10:02:06 +02:00
sonoro1234
935ca882ec cpp2ffi: fix unamed nested struct and do string substitution (ImNodes needs it) 2023-09-11 18:38:07 +02:00
sonoro1234
b28023c3f6 Merge branch 'docking_inter' 2023-09-08 18:09:15 +02:00
sonoro1234
925b29db67 cpp2ffi: take care of unamed nested structs and brace initializers (rokups/ImNodes needs that) 2023-09-06 17:29:41 +02:00
sonoro1234
44769f63d4 pull imgui 1.89.9 docking and generate 2023-09-04 18:53:07 +02:00
sonoro1234
a21e28e740 update readme 2023-08-02 17:50:11 +02:00
sonoro1234
35fc7d191e pull imgui 1.89.8 and generate 2023-08-02 17:45:25 +02:00
sonoro1234
6c31357d99 take care of pointers to templates 2023-08-02 17:44:18 +02:00
Victor Bombi
c62361059e Merge pull request #248 from KhankNyo/windows_makeclean
Makefile: clean target for windows
2023-07-27 11:26:55 +02:00
Khanh
dcad905f2e Merge branch 'windows_makeclean' of https://github.com/KhankNyo/cimgui into windows_makeclean
added checks in clean and fclean target to use Windows's "del" command
Windows does not have "rm"
2023-07-25 12:13:10 -07:00
Khanh
8fa77b6ad4 Makefile: clean target for windows 2023-07-25 12:11:37 -07:00
Khanh
a518ecc934 make clean target for windows 2023-07-25 12:06:08 -07:00
sonoro1234
b15f98a4c0 avoid deleting info for JSON and generate (issue #245) 2023-07-15 17:23:15 +02:00
sonoro1234
c8c5add506 pull imgui 1.89.7 docking and generate 2023-07-04 18:19:48 +02:00
Victor Bombi
dccbce96fb Merge pull request #243 from xEgoist/docking_inter
use "installed" directory for vcpkg instead of packages and explicitly install x64 target
2023-06-22 10:14:50 +02:00
xEgoist
705cd9d8a5 CI: use x64-windows target triplet for vcpkg
Since vcpkg is transitioning to the host triplet by default in
September 2023, this should help the CI mitigate this transition by
explicitly using x64-windows target triplet.
2023-06-22 02:13:41 -05:00
xEgoist
b8dcf08413 CI: use installed directory for vcpkg instead of packages 2023-06-22 01:51:25 -05:00
sonoro1234
5c09c391af try to make github actions happy again 2023-06-18 19:15:23 +02:00
sonoro1234
55c6f914a7 pull imgui 1.89.6 and generate 2023-06-18 18:57:27 +02:00
sonoro1234
a5f9979d90 clean debug output 2023-06-18 18:56:17 +02:00
sonoro1234
a65bf47a5f solve union with comments #241 2023-06-18 18:50:28 +02:00
sonoro1234
925d24572d cpp2ffi: sanitize_comments to clean curly braces from comments 2023-04-22 14:03:40 +02:00
sonoro1234
1bb9cd7347 Merge branch 'docking_inter' 2023-04-18 10:43:06 +02:00
sonoro1234
ffda7805d2 pull imgui 1.89.5 and generate 2023-04-18 10:35:57 +02:00
Victor Bombi
9ae8e827fa Merge pull request #238 from gucio321/sh-generator-pass-cmdline-args
Sh generator: pass cmdline args
2023-04-17 18:30:44 +02:00
gucio321
9ac8211a3d generator: add help page 2023-04-17 17:13:38 +02:00
M.Sz
0c22b34cb6 generator: set default values 2023-04-17 10:13:09 +00:00
M.Sz
e2093ffbc1 generator: remove unnecessary header comment 2023-04-17 07:15:34 +00:00
M.Sz
fa81118e09 generator: add -t/--tagret options 2023-04-17 07:13:26 +00:00
M.Sz
ff19d727b7 Revert "Revert "generattor: add --cflags command line flag""
This reverts commit 2ae35c8b46.
2023-04-17 07:06:29 +00:00
sonoro1234
a0d46db2f2 readme: generation customization instructions 2023-04-05 11:02:47 +02:00
Victor Bombi
aad088b954 Merge pull request #233 from gucio321/sh-generator-pass-cmdline-args
generator.sh (.bat): pass extra command-line arguments.
2023-04-05 10:52:56 +02:00
gucio321
9d1e63d306 generator.bat: pass cmd line arguments to luajit 2023-04-05 10:49:45 +02:00
gucio321
2ae35c8b46 Revert "generattor: add --cflags command line flag"
This reverts commit 4d19dd5e17.
2023-04-05 10:49:02 +02:00
gucio321
4d19dd5e17 generattor: add --cflags command line flag 2023-04-05 10:30:26 +02:00
sonoro1234
2b9eaf3eff readme: edit cflags 2023-04-05 09:27:19 +02:00
gucio321
27aedcd3c4 generator: pass command-line arguments to GCC 2023-04-05 09:26:19 +02:00
sonoro1234
e25f9f6844 add generator options "nochar" and "noimstrv" according to issue #186 2023-03-24 17:23:28 +01:00
sonoro1234
2c8eab86f7 pull imgui 1.89.4 and generate 2023-03-14 17:52:56 +01:00
sonoro1234
ce1015bb84 backends: CIMGUI_USE_SDL is now CIMGUI_USE_SDL2 2023-02-20 20:14:51 +01:00
sonoro1234
d24246adfd Merge branch 'docking_inter' 2023-02-15 10:18:15 +01:00
sonoro1234
1187e22308 pull imgui 1.89.3 generate correct sdl2 backend inclusion 2023-02-15 09:55:35 +01:00
sonoro1234
5a857ee68d cpp2ffi: dont error on not loca 2023-01-09 09:57:43 +01:00
sonoro1234
18e5891710 generator.lua add table cimgui_skipped 2023-01-08 14:38:06 +01:00
sonoro1234
6dba58d90f merge from docking_inter 2023-01-07 11:34:35 +01:00
sonoro1234
56fdbf845b pull imgui docking 1.89.2 and generate 2023-01-07 10:34:35 +01:00
sonoro1234
d159c2622d correction after merge?!! 2022-12-15 10:44:29 +01:00
Victor Bombi
56892a4e3a Merge pull request #227 from rokups/rk/fix-ci
Fix windows CI builds (#226)
2022-12-15 10:29:40 +01:00
Rokas Kupstys
0a953b7102 Fix CI builds. For some reason bash on windows no longer recognizes luajit without .exe suffix.
Fixes #226
2022-12-15 10:23:58 +02:00
sonoro1234
0348715500 pull imgui 1.89.1 and generate 2022-11-26 09:10:06 +01:00
sonoro1234
68483775b3 pull imgui 1.89.1 docking and generate 2022-11-26 08:32:02 +01:00
sonoro1234
0369ceb1b4 generator.lua: use IMGUI_VERSION_NUM 2022-11-25 10:27:13 +01:00
sonoro1234
4f089273b1 cpp2ffi.lua: changes to keep comments from struct and enums (from branch comments4000) 2022-11-16 17:13:33 +01:00
sonoro1234
b0649485e9 correcting errors on last merge: example_glfw_opengl3 2022-11-16 11:15:37 +01:00
Victor Bombi
a0a7ca3ca2 Merge pull request #224 from seafork/docking_inter
Adding an example for GLFW + OpenGL
2022-11-16 11:02:33 +01:00
seafork
3e823cd2ee fixed misspelt cmake file 2022-11-15 23:06:35 -05:00
seafork
6a2b18fa65 made glfw more portable 2022-11-15 22:59:36 -05:00
seafork
75ec483e75 fixed compilation error on windows. 2022-11-15 22:09:06 -05:00
seafork
08f24307b8 cleaned up a comment 2022-11-15 19:44:24 -05:00
seafork
a9a9fa4e9e add example for glfw3 and opengl3 2022-11-15 19:27:21 -05:00
sonoro1234
ce3b504e11 update readme version 2022-11-15 17:40:22 +01:00
sonoro1234
4230a5566e pull imgui 1.89 and generate 2022-11-15 17:38:24 +01:00
sonoro1234
9ce2c32dad add info about comments generation 2022-10-06 11:11:50 +02:00
sonoro1234
3d676ffb8b cpp2ffi: skip enum forward declarations 2022-09-27 12:58:11 +02:00
sonoro1234
b9ebd289e0 CleanImU32 not called when value is sizeof(ImU32) 2022-09-16 15:34:21 +02:00
sonoro1234
9da5c5fe7c repair_defaults from generator to cpp2ffi 2022-09-16 14:07:24 +02:00
sonoro1234
3d50615659 cpp2ffi: cleanStruct and parseStructLine comments correction 2022-09-09 15:44:51 +02:00
sonoro1234
938d146a41 cpp2ffi and generator: delete bad comments on functionD_re, repair split_comment 2022-09-09 12:00:01 +02:00
sonoro1234
7225c4ae3c generator.lua: prepare for comments 2022-09-08 13:46:03 +02:00
sonoro1234
feb7829edc cpp2ffi: prepare parser:parseItems for comments 2022-09-08 13:31:13 +02:00
sonoro1234
6eb85e7d5c generator: Clearly fail when parse fails; exclude obsolete fns for cl. Thanks to @idbrii 2022-09-01 19:06:19 +02:00
sonoro1234
068e91970d cpp2ffi: add custom generation machinery 2022-08-30 12:56:58 +02:00
sonoro1234
b5cce9f1a5 update .gitsubmodules 2022-08-08 11:03:54 +02:00
sonoro1234
ea5b077fbe vardef_re modified for = {} initialization 2022-08-05 14:49:26 +02:00
sonoro1234
a44ce77641 cpp2ffi: add clean_functypedef (cimplot needs it https://github.com/cimgui/cimplot/issues/11) 2022-07-25 13:11:24 +02:00
sonoro1234
15e4f5015d backend test sdl: add c++11 to CMakeLists.txt 2022-07-18 10:48:47 +02:00
sonoro1234
9b7d045962 Merge branch 'master' into docking_inter 2022-06-22 18:32:03 +02:00
sonoro1234
44b388121a generator: dont error if VULKAN_SDK==nil (because it is executed in no vulkan generation also) 2022-06-22 12:43:41 +02:00
sonoro1234
13c4f47172 generator: use VULKAN_SDK env variable to find vulkan 2022-06-22 12:33:46 +02:00
sonoro1234
d1f60f24e1 example_vulkan: add CIMGUI_USE_VULKAN and SDL 2022-06-22 12:18:03 +02:00
Victor Bombi
4c1fd9fc0a Merge pull request #204 from Sand3r-/example/sdl_vulkan
Add Vulkan example
2022-06-22 11:45:13 +02:00
sonoro1234
1616776d77 extraclean 2022-06-22 11:42:23 +02:00
Michal 'Sand3r-' Gallus
eccb961bc7 Add vulkan example info to README.md 2022-06-21 22:38:30 +02:00
Michal 'Sand3r-' Gallus
e3d115bce2 Add SDL2+Vulkan example 2022-06-21 22:38:27 +02:00
sonoro1234
82b8c66f59 extraclean 2022-06-21 22:21:25 +02:00
sonoro1234
08d5ad7f93 pull imgui 1.88 and generate 2022-06-21 20:03:54 +02:00
sonoro1234
0b8015191d Merge branch 'docking_inter' 2022-06-21 19:43:16 +02:00
sonoro1234
261250f88f generation 2022-02-25 11:22:51 +01:00
35 changed files with 23538 additions and 16161 deletions

View File

@@ -29,7 +29,9 @@ jobs:
sudo apt-get install -y luajit
elif [ "$GITHUB_OS" == "windows-latest" ];
then
vcpkg install luajit
vcpkg install luajit:x64-windows
echo "/C/vcpkg/installed/x64-windows/tools/luajit" >> $GITHUB_PATH
echo "/C/vcpkg/installed/x64-windows/bin" >> $GITHUB_PATH
fi
- name: Download Submodules
@@ -47,7 +49,6 @@ jobs:
- name: Generate Bindings
shell: bash
run: |
export PATH=$PATH:/C/vcpkg/packages/luajit_x86-windows/tools/:/C/vcpkg/packages/luajit_x86-windows/bin/
cd ./generator
bash ./generator.sh

2
.gitmodules vendored
View File

@@ -1,4 +1,4 @@
[submodule "imgui"]
path = imgui
url = https://github.com/ocornut/imgui.git
branch = master
branch = docking

View File

@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.1)
cmake_minimum_required(VERSION 3.15)
cmake_policy(SET CMP0091 NEW)
project(cimgui)
set (CMAKE_CXX_STANDARD 11)

View File

@@ -59,10 +59,18 @@ $(OUTPUTNAME):$(OBJS)
$(CXX) -o $(OUTPUTNAME) $(OBJS) $(CXXFLAGS) $(LINKFLAGS)
clean:
ifeq ($(OS),Windows_NT)
del /q $(subst /,\,$(OBJS))
else
rm -f $(OBJS)
endif
fclean: clean
ifeq ($(OS),Windows_NT)
del /q $(subst /,\,$(OUTPUTNAME))
else
rm -f $(OUTPUTNAME)
endif
re: fclean all

View File

@@ -11,7 +11,7 @@ History:
Initially cimgui was developed by Stephan Dilly as hand-written code but lately turned into an auto-generated version by sonoro1234 in order to keep up with imgui more easily (letting the user select the desired branch and commit)
Notes:
* currently this wrapper is based on version [1.88 of Dear ImGui with internal api]
* currently this wrapper is based on version [1.91.2 of Dear ImGui with internal api]
* only functions, structs and enums from imgui.h (an optionally imgui_internal.h) are wrapped.
* if you are interested in imgui backends you should look [LuaJIT-ImGui](https://github.com/sonoro1234/LuaJIT-ImGui) project.
* All naming is algorithmic except for those names that were coded in cimgui_overloads table (https://github.com/cimgui/cimgui/blob/master/generator/generator.lua#L60). In the official version this table is empty.
@@ -27,7 +27,8 @@ Notes:
* cmake options are IMGUI_STATIC (compiling as static library), IMGUI_FREETYPE (for using Freetype2) and FREETYPE_PATH (Freetype2 cmake install location) (only if cimgui is generated with freetype option)
* or as in https://github.com/sonoro1234/LuaJIT-ImGui/tree/master/build
For compiling with backends there is now an example with SDL2 and opengl3 in folder backend_test. It will generate a cimgui_sdl module and a test_sdl executable.
For compiling with backends there are now examples with SDL2 and opengl3/vulkan in folder backend_test.
They'll generate a cimgui_sdl module and a test_sdl executable.
# using generator
@@ -36,13 +37,14 @@ Notes:
* you will need LuaJIT (https://github.com/LuaJIT/LuaJIT.git better 2.1 branch) or precompiled for linux/macOS/windows in https://luapower.com/luajit/download
* you need to use also a C++ compiler for doing preprocessing: gcc (In windows MinGW-W64-builds for example), clang or cl (MSVC). (this repo was done with gcc)
* update `imgui` folder to the version you desire.
* edit `generator/generator.bat` on windows, or `generator/generator.sh` on linux, to choose between gcc, clang, or cl and to choose desired backends and whether imgui_internal is generated or not and Freetype2 is used or not.
* the defaults of generator are gcc as compiler, imgui_internal included and sdl, glfw, opengl2 and opengl3 as backends.
* edit `generator/generator.bat` on windows, or `generator/generator.sh` on linux, to choose between gcc, clang, or cl and to choose desired backends and whether imgui_internal is generated or not, Freetype2 is used or not and comments are generated or not and if constructors are generated also with versions performing just initialization of structs provided by yourself (_Construct is added to the constructor names)
* the defaults of generator are gcc as compiler, imgui_internal included and sdl, glfw, vulkan, opengl2 and opengl3 as backends.
* edit config_generator.lua for adding includes needed by your chosen backends (vulkan needs that).
* Run generator.bat or generator.sh with gcc, clang or cl and LuaJIT on your PATH.
* as a result some files are generated: `cimgui.cpp`, `cimgui.h` and `cimgui_impl.h` for compiling and some lua/json files with information about the binding: `definitions.json` with function info, `structs_and_enums.json` with struct and enum info, `impl_definitions.json` with functions from the backends info.
* You can pass compiler flags to generator.sh or generator.bat at the end of the call to further specify the compiler behavior. (e.g. -DIMGUI_USER_CONFIG or -DIMGUI_USE_WCHAR32)
* You can pass compiler flags to generator.sh or generator.bat by editing them at the end of the call to further specify the compiler behavior. (e.g. -DIMGUI_USER_CONFIG or -DIMGUI_USE_WCHAR32)
* You are able to pass any extra argument to generator.sh (.bat) in the command-line.
* If you are using different options than cimgui repo and if you want to keep them after a cimgui update, you can keep them in a copy of generator.sh (.bat) outside of cimgui folder where `cd cimgui/generator` is used before luajit call. See https://github.com/cimgui/cimgui/issues/232#issuecomment-1497059497
# generate binding
* C interface is exposed by cimgui.h when you define CIMGUI_DEFINE_ENUMS_AND_STRUCTS
* with your prefered language you can use the lua or json files generated as in:
@@ -93,7 +95,8 @@ Notes:
# usage with backends
* look at backend_test folder for a cmake module building with SDL and opengl3.
* look at backend_test folder for a cmake module building with SDL and opengl3, glfw and opengl3, SDL and Vulkan
* read [How can cimgui backends be used](https://github.com/cimgui/cimgui/issues/157)
# example bindings based on cimgui
@@ -115,3 +118,4 @@ Notes:
* [sdl2-cimgui-demo](https://github.com/haxpor/sdl2-cimgui-demo)
* [cimgui_c_sdl2_example](https://github.com/canoi12/cimgui_c_sdl2_example/)
* [cimgui-c-example](https://github.com/peko/cimgui-c-example) with GLFW
* [raylib-cimgui](https://github.com/alfredbaudisch/raylib-cimgui)

View File

@@ -0,0 +1,109 @@
Project(cimgui_glfwdx11)
cmake_minimum_required(VERSION 3.11)
if(WIN32) # to mingw work as all the others
set(CMAKE_SHARED_LIBRARY_PREFIX "")
endif(WIN32)
#run in build dir
set (CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR})
set (CMAKE_CXX_STANDARD 11)
# general settings
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/backends)
set(BAKENDS_FOLDER "../../imgui/backends/")
else()
set(BAKENDS_FOLDER "../../imgui/examples/")
endif()
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/imgui_tables.cpp)
set(TABLES_SOURCE "../../imgui/imgui_tables.cpp")
else()
set(TABLES_SOURCE "")
endif()
include_directories(../../imgui)
add_definitions("-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1")
include_directories(../../)
set(IMGUI_SOURCES
../../cimgui.cpp
../../imgui/imgui.cpp
../../imgui/imgui_draw.cpp
../../imgui/imgui_demo.cpp
../../imgui/imgui_widgets.cpp
${TABLES_SOURCE}
)
set(IMGUI_LIBRARIES )
if (WIN32)
add_definitions("-DIMGUI_IMPL_API=extern \"C\" __declspec\(dllexport\)")
else(WIN32)
add_definitions("-DIMGUI_IMPL_API=extern \"C\" ")
endif(WIN32)
add_compile_definitions("IMGUI_IMPL_OPENGL_LOADER_GL3W")
# optional adding freetype
option(IMGUI_FREETYPE "add Freetype2" OFF)
if(IMGUI_FREETYPE)
FIND_PACKAGE(freetype REQUIRED PATHS ${FREETYPE_PATH})
list(APPEND IMGUI_LIBRARIES freetype)
list(APPEND IMGUI_SOURCES ../../imgui/misc/freetype/imgui_freetype.cpp)
add_definitions("-DCIMGUI_FREETYPE=1")
endif(IMGUI_FREETYPE)
# dx11
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_dx11.cpp)
if(WIN32)
list(APPEND IMGUI_LIBRARIES opengl32)
else(WIN32) # Unix
list(APPEND IMGUI_LIBRARIES GL)
endif(WIN32)
# GLFW
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_glfw.cpp)
set(GLFW_VERSION 3.3.8)
include(FetchContent)
FetchContent_Declare(
glfw
URL https://github.com/glfw/glfw/archive/refs/tags/${GLFW_VERSION}.tar.gz)
FetchContent_GetProperties(glfw)
if (NOT glfw_POPULATED)
set(FETCHCONTENT_QUIET NO)
FetchContent_Populate(glfw)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
if (NOT STATIC_BUILD)
set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
endif()
add_subdirectory(${glfw_SOURCE_DIR} ${glfw_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
install(TARGETS glfw RUNTIME DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
LIBRARY DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
)
#FIND_PACKAGE(glfw3 PATHS "C:/LuaGL/gitsources/BUILDS/GLFW/install")
if (NOT STATIC_BUILD)
add_library(cimgui SHARED ${IMGUI_SOURCES})
else()
add_library(cimgui STATIC ${IMGUI_SOURCES})
endif()
target_link_libraries(cimgui ${IMGUI_LIBRARIES} glfw)
# using library
include_directories(../../generator/output/)
add_executable(${PROJECT_NAME} main.c)
target_compile_definitions(${PROJECT_NAME} PUBLIC -DCIMGUI_USE_DX11 -DCIMGUI_USE_GLFW)
target_link_libraries(${PROJECT_NAME} d3d11 d3dcompiler.lib cimgui)

View File

@@ -0,0 +1,6 @@
This example needs dx11 in generation before compile. (add dx11 to generator.bat(sh) and generate)
`STATIC_BUILD` is the cmake variable to do static linking
Only tested with VC nmake.

View File

@@ -0,0 +1,247 @@
#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS
#include "cimgui.h"
#include "cimgui_impl.h"
#define D3D11_NO_HELPERS
#define CINTERFACE
#define COBJMACROS
#define WIN32_LEAN_AND_MEAN
#include <d3d11.h>
#include <GLFW/glfw3.h>
#define GLFW_EXPOSE_NATIVE_WIN32
#include <GLFW/glfw3native.h>
#include <stdio.h>
#ifdef _MSC_VER
#include <windows.h>
#endif
#pragma comment(lib, "dxguid.lib")
#ifdef IMGUI_HAS_IMSTR
#define igBegin igBegin_Str
#define igSliderFloat igSliderFloat_Str
#define igCheckbox igCheckbox_Str
#define igColorEdit3 igColorEdit3_Str
#define igButton igButton_Str
#endif
GLFWwindow *window;
// Data
static ID3D11Device* g_pd3dDevice = NULL;
static ID3D11DeviceContext* g_pd3dDeviceContext = NULL;
static IDXGISwapChain* g_pSwapChain = NULL;
static ID3D11RenderTargetView* g_mainRenderTargetView = NULL;
// Forward declarations of helper functions
bool CreateDeviceD3D(HWND hWnd);
void CleanupDeviceD3D();
void CreateRenderTarget();
void CleanupRenderTarget();
void window_size_callback(GLFWwindow* window, int width, int height)
{
CleanupRenderTarget();
IDXGISwapChain_ResizeBuffers(g_pSwapChain, 0, width, height, DXGI_FORMAT_UNKNOWN, 0);
CreateRenderTarget();
}
int main(int argc, char *argv[])
{
if (!glfwInit())
return -1;
// Decide GL+GLSL versions
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
// just an extra window hint for resize
glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
window = glfwCreateWindow(1024, 768, "Hello World!", NULL, NULL);
if (!window)
{
printf("Failed to create window! Terminating!\n");
glfwTerminate();
return -1;
}
//
HWND hwnd = glfwGetWin32Window(window);
if (hwnd == NULL)
{
printf("Failed to get win32 window! Terminating!\n");
glfwTerminate();
return -1;
}
// Initialize Direct3D
if (!CreateDeviceD3D(hwnd))
{
CleanupDeviceD3D();
return 1;
}
glfwSetWindowSizeCallback(window, window_size_callback);
// setup imgui
igCreateContext(NULL);
// set docking
ImGuiIO *ioptr = igGetIO();
ioptr->ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
//ioptr->ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
#ifdef IMGUI_HAS_DOCK
ioptr->ConfigFlags |= ImGuiConfigFlags_DockingEnable; // Enable Docking
ioptr->ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; // Enable Multi-Viewport / Platform Windows
#endif
ImGui_ImplGlfw_InitForOther(window, true);
ImGui_ImplDX11_Init(g_pd3dDevice, g_pd3dDeviceContext);
igStyleColorsDark(NULL);
// ImFontAtlas_AddFontDefault(io.Fonts, NULL);
bool showDemoWindow = true;
bool showAnotherWindow = false;
ImVec4 clearColor;
clearColor.x = 0.45f;
clearColor.y = 0.55f;
clearColor.z = 0.60f;
clearColor.w = 1.00f;
// main event loop
bool quit = false;
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
// start imgui frame
ImGui_ImplDX11_NewFrame();
ImGui_ImplGlfw_NewFrame();
igNewFrame();
if (showDemoWindow)
igShowDemoWindow(&showDemoWindow);
// show a simple window that we created ourselves.
{
static float f = 0.0f;
static int counter = 0;
igBegin("Hello, world!", NULL, 0);
igText("This is some useful text");
igCheckbox("Demo window", &showDemoWindow);
igCheckbox("Another window", &showAnotherWindow);
igSliderFloat("Float", &f, 0.0f, 1.0f, "%.3f", 0);
igColorEdit3("clear color", (float *)&clearColor, 0);
ImVec2 buttonSize;
buttonSize.x = 0;
buttonSize.y = 0;
if (igButton("Button", buttonSize))
counter++;
igSameLine(0.0f, -1.0f);
igText("counter = %d", counter);
igText("Application average %.3f ms/frame (%.1f FPS)",
1000.0f / igGetIO()->Framerate, igGetIO()->Framerate);
igEnd();
}
if (showAnotherWindow)
{
igBegin("imgui Another Window", &showAnotherWindow, 0);
igText("Hello from imgui");
ImVec2 buttonSize;
buttonSize.x = 0;
buttonSize.y = 0;
if (igButton("Close me", buttonSize)) {
showAnotherWindow = false;
}
igEnd();
}
// render
igRender();
const float clear_color_with_alpha[4] = { clearColor.x * clearColor.w, clearColor.y * clearColor.w, clearColor.z * clearColor.w, clearColor.w };
ID3D11DeviceContext_OMSetRenderTargets(g_pd3dDeviceContext, 1, &g_mainRenderTargetView, NULL);
ID3D11DeviceContext_ClearRenderTargetView(g_pd3dDeviceContext, g_mainRenderTargetView, clear_color_with_alpha);
ImGui_ImplDX11_RenderDrawData(igGetDrawData());
#ifdef IMGUI_HAS_DOCK
if (ioptr->ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
{
igUpdatePlatformWindows();
igRenderPlatformWindowsDefault(NULL, NULL);
}
#endif
IDXGISwapChain_Present(g_pSwapChain,1, 0); // Present with vsync
//g_pSwapChain->Present(0, 0); // Present without vsync
}
// clean up
ImGui_ImplDX11_Shutdown();
ImGui_ImplGlfw_Shutdown();
igDestroyContext(NULL);
CleanupDeviceD3D();
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}
// Helper functions to use DirectX11
bool CreateDeviceD3D(HWND hWnd)
{
// Setup swap chain
DXGI_SWAP_CHAIN_DESC sd;
ZeroMemory(&sd, sizeof(sd));
sd.BufferCount = 2;
sd.BufferDesc.Width = 0;
sd.BufferDesc.Height = 0;
sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.BufferDesc.RefreshRate.Numerator = 60;
sd.BufferDesc.RefreshRate.Denominator = 1;
sd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.OutputWindow = hWnd;
sd.SampleDesc.Count = 1;
sd.SampleDesc.Quality = 0;
sd.Windowed = TRUE;
sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
UINT createDeviceFlags = 0;
//createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
D3D_FEATURE_LEVEL featureLevel;
const D3D_FEATURE_LEVEL featureLevelArray[2] = { D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_0, };
if (D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, featureLevelArray, 2, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext) != S_OK)
return false;
CreateRenderTarget();
return true;
}
void CleanupDeviceD3D()
{
CleanupRenderTarget();
if (g_pSwapChain) { IDXGISwapChain_Release(g_pSwapChain); g_pSwapChain = NULL; }
if (g_pd3dDeviceContext) { ID3D11DeviceContext_Release(g_pd3dDeviceContext); g_pd3dDeviceContext = NULL; }
if (g_pd3dDevice) { ID3D11Device_Release(g_pd3dDevice); g_pd3dDevice = NULL; }
}
void CreateRenderTarget()
{
ID3D11Resource* pBackBuffer;
IDXGISwapChain_GetBuffer(g_pSwapChain, 0, &IID_ID3D11Texture2D, (void**)&pBackBuffer);
ID3D11Device_CreateRenderTargetView(g_pd3dDevice, pBackBuffer, NULL, &g_mainRenderTargetView);
ID3D11Texture2D_Release(pBackBuffer);
}
void CleanupRenderTarget()
{
if (g_mainRenderTargetView) { ID3D11RenderTargetView_Release(g_mainRenderTargetView); g_mainRenderTargetView = NULL; }
}

View File

@@ -0,0 +1,113 @@
Project(cimgui_glfw)
cmake_minimum_required(VERSION 3.11)
if(WIN32) # to mingw work as all the others
set(CMAKE_SHARED_LIBRARY_PREFIX "")
endif(WIN32)
#run in build dir
set (CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR})
set (CMAKE_CXX_STANDARD 11)
# general settings
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/backends)
set(BAKENDS_FOLDER "../../imgui/backends/")
else()
set(BAKENDS_FOLDER "../../imgui/examples/")
endif()
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/imgui_tables.cpp)
set(TABLES_SOURCE "../../imgui/imgui_tables.cpp")
else()
set(TABLES_SOURCE "")
endif()
include_directories(../../imgui)
add_definitions("-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1")
include_directories(../../)
set(IMGUI_SOURCES
../../cimgui.cpp
../../imgui/imgui.cpp
../../imgui/imgui_draw.cpp
../../imgui/imgui_demo.cpp
../../imgui/imgui_widgets.cpp
${TABLES_SOURCE}
)
set(IMGUI_LIBRARIES )
add_compile_definitions("IMGUI_IMPL_OPENGL_LOADER_GL3W")
# optional adding freetype
option(IMGUI_FREETYPE "add Freetype2" OFF)
if(IMGUI_FREETYPE)
FIND_PACKAGE(freetype REQUIRED PATHS ${FREETYPE_PATH})
list(APPEND IMGUI_LIBRARIES freetype)
list(APPEND IMGUI_SOURCES ../../imgui/misc/freetype/imgui_freetype.cpp)
add_definitions("-DCIMGUI_FREETYPE=1")
endif(IMGUI_FREETYPE)
# opengl3
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_opengl3.cpp)
include_directories(../../imgui/examples/libs/gl3w)
if(WIN32)
list(APPEND IMGUI_LIBRARIES opengl32)
else(WIN32) # Unix
list(APPEND IMGUI_LIBRARIES GL)
endif(WIN32)
# GLFW
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_glfw.cpp)
set(GLFW_VERSION 3.4)
include(FetchContent)
FetchContent_Declare(
glfw
URL https://github.com/glfw/glfw/archive/refs/tags/${GLFW_VERSION}.tar.gz)
#GIT_REPOSITORY https://github.com/glfw/glfw )
FetchContent_GetProperties(glfw)
if (NOT glfw_POPULATED)
set(FETCHCONTENT_QUIET NO)
FetchContent_Populate(glfw)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
if (NOT STATIC_BUILD)
set(BUILD_SHARED_LIBS ON CACHE BOOL "" FORCE)
endif()
add_subdirectory(${glfw_SOURCE_DIR} ${glfw_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()
#if dynamic glfw then install
install(TARGETS glfw RUNTIME DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
LIBRARY DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
)
#FIND_PACKAGE(glfw3 PATHS "C:/LuaGL/gitsources/BUILDS/GLFW/install" REQUIRED)
if (NOT STATIC_BUILD)
add_library(cimgui SHARED ${IMGUI_SOURCES})
else()
add_library(cimgui STATIC ${IMGUI_SOURCES})
endif()
if (WIN32)
target_compile_definitions(cimgui PUBLIC "-DIMGUI_IMPL_API=extern \"C\" __declspec\(dllexport\)")
else(WIN32)
target_compile_definitions(cimgui PUBLIC "-DIMGUI_IMPL_API=extern \"C\" ")
endif(WIN32)
target_link_libraries(cimgui ${IMGUI_LIBRARIES} glfw)
# using library
include_directories(../../generator/output/)
add_executable(${PROJECT_NAME} main.c)
target_compile_definitions(${PROJECT_NAME} PUBLIC -DCIMGUI_USE_OPENGL3 -DCIMGUI_USE_GLFW)
target_link_libraries(${PROJECT_NAME} cimgui)

View File

@@ -0,0 +1,4 @@
To build use `cmake path_to_example_glfw_opengl3` and then `make install`
`STATIC_BUILD` is a cmake variable if you want to do static linking.

View File

@@ -0,0 +1,169 @@
#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS
#include "cimgui.h"
#include "cimgui_impl.h"
#include <GLFW/glfw3.h>
#include <stdio.h>
#ifdef _MSC_VER
#include <windows.h>
#endif
#include <GL/gl.h>
#ifdef IMGUI_HAS_IMSTR
#define igBegin igBegin_Str
#define igSliderFloat igSliderFloat_Str
#define igCheckbox igCheckbox_Str
#define igColorEdit3 igColorEdit3_Str
#define igButton igButton_Str
#endif
GLFWwindow *window;
int main(int argc, char *argv[])
{
if (!glfwInit())
return -1;
// Decide GL+GLSL versions
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
#if __APPLE__
// GL 3.2 Core + GLSL 150
const char *glsl_version = "#version 150";
#else
// GL 3.2 + GLSL 130
const char *glsl_version = "#version 130";
#endif
// just an extra window hint for resize
glfwWindowHint(GLFW_RESIZABLE, GLFW_TRUE);
window = glfwCreateWindow(1024, 768, "Hello World!", NULL, NULL);
if (!window)
{
printf("Failed to create window! Terminating!\n");
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
// enable vsync
glfwSwapInterval(1);
// check opengl version sdl uses
printf("opengl version: %s\n", (char *)glGetString(GL_VERSION));
// setup imgui
igCreateContext(NULL);
// set docking
ImGuiIO *ioptr = igGetIO();
ioptr->ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
//ioptr->ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
#ifdef IMGUI_HAS_DOCK
ioptr->ConfigFlags |= ImGuiConfigFlags_DockingEnable; // Enable Docking
ioptr->ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; // Enable Multi-Viewport / Platform Windows
#endif
ImGui_ImplGlfw_InitForOpenGL(window, true);
ImGui_ImplOpenGL3_Init(glsl_version);
igStyleColorsDark(NULL);
// ImFontAtlas_AddFontDefault(io.Fonts, NULL);
bool showDemoWindow = true;
bool showAnotherWindow = false;
ImVec4 clearColor;
clearColor.x = 0.45f;
clearColor.y = 0.55f;
clearColor.z = 0.60f;
clearColor.w = 1.00f;
// main event loop
bool quit = false;
while (!glfwWindowShouldClose(window))
{
glfwPollEvents();
// start imgui frame
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
igNewFrame();
if (showDemoWindow)
igShowDemoWindow(&showDemoWindow);
// show a simple window that we created ourselves.
{
static float f = 0.0f;
static int counter = 0;
igBegin("Hello, world!", NULL, 0);
igText("This is some useful text");
igCheckbox("Demo window", &showDemoWindow);
igCheckbox("Another window", &showAnotherWindow);
igSliderFloat("Float", &f, 0.0f, 1.0f, "%.3f", 0);
igColorEdit3("clear color", (float *)&clearColor, 0);
ImVec2 buttonSize;
buttonSize.x = 0;
buttonSize.y = 0;
if (igButton("Button", buttonSize))
counter++;
igSameLine(0.0f, -1.0f);
igText("counter = %d", counter);
igText("Application average %.3f ms/frame (%.1f FPS)",
1000.0f / igGetIO()->Framerate, igGetIO()->Framerate);
igEnd();
}
if (showAnotherWindow)
{
igBegin("imgui Another Window", &showAnotherWindow, 0);
igText("Hello from imgui");
ImVec2 buttonSize;
buttonSize.x = 0;
buttonSize.y = 0;
if (igButton("Close me", buttonSize)) {
showAnotherWindow = false;
}
igEnd();
}
// render
igRender();
glfwMakeContextCurrent(window);
glViewport(0, 0, (int)ioptr->DisplaySize.x, (int)ioptr->DisplaySize.y);
glClearColor(clearColor.x, clearColor.y, clearColor.z, clearColor.w);
glClear(GL_COLOR_BUFFER_BIT);
ImGui_ImplOpenGL3_RenderDrawData(igGetDrawData());
#ifdef IMGUI_HAS_DOCK
if (ioptr->ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
{
GLFWwindow *backup_current_window = glfwGetCurrentContext();
igUpdatePlatformWindows();
igRenderPlatformWindowsDefault(NULL, NULL);
glfwMakeContextCurrent(backup_current_window);
}
#endif
glfwSwapBuffers(window);
}
// clean up
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
igDestroyContext(NULL);
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}

View File

@@ -3,6 +3,9 @@ cmake_minimum_required(VERSION 2.8)
if(WIN32) #to mingw work as all the others
set(CMAKE_SHARED_LIBRARY_PREFIX "")
endif(WIN32)
set (CMAKE_CXX_STANDARD 11)
#general settings
@@ -63,7 +66,7 @@ endif(WIN32)
#sdl2
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_sdl.cpp)
list(APPEND IMGUI_SOURCES ${BAKENDS_FOLDER}imgui_impl_sdl2.cpp)
if(DEFINED SDL_PATH)
message(STATUS "SDL_PATH defined as " ${SDL_PATH})
FIND_PACKAGE(SDL2 PATHS ${SDL_PATH})
@@ -100,7 +103,7 @@ target_link_libraries(cimgui_sdl ${IMGUI_LIBRARIES} ${IMGUI_SDL_LIBRARY})
#using library
include_directories(../../generator/output/)
add_executable(test_sdl main.c)
target_compile_definitions(test_sdl PUBLIC -DCIMGUI_USE_OPENGL3 -DCIMGUI_USE_SDL)
target_compile_definitions(test_sdl PUBLIC -DCIMGUI_USE_OPENGL3 -DCIMGUI_USE_SDL2)
if (MINGW)
target_link_options(test_sdl PRIVATE "-mconsole")
endif()

View File

@@ -0,0 +1,100 @@
Project(cimgui_sdl_vk)
cmake_minimum_required(VERSION 2.8)
if(WIN32) # to make mingw work as all the others
set(CMAKE_SHARED_LIBRARY_PREFIX "")
endif(WIN32)
# general settings
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/backends)
set(BACKENDS_FOLDER "../../imgui/backends/")
else()
set(BACKENDS_FOLDER "../../imgui/examples/")
endif()
if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../../imgui/imgui_tables.cpp)
set(TABLES_SOURCE "../../imgui/imgui_tables.cpp")
else()
set(TABLES_SOURCE "")
endif()
include_directories(../../imgui)
add_definitions("-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1")
include_directories(../../)
set(IMGUI_SOURCES ../../cimgui.cpp
../../imgui/imgui.cpp
../../imgui/imgui_draw.cpp
../../imgui/imgui_demo.cpp
../../imgui/imgui_widgets.cpp
${TABLES_SOURCE}
)
set(IMGUI_SOURCES_sdl)
set(IMGUI_LIBRARIES )
if (WIN32)
add_definitions("-DIMGUI_IMPL_API=extern \"C\" __declspec\(dllexport\)")
else(WIN32)
add_definitions("-DIMGUI_IMPL_API=extern \"C\" ")
endif(WIN32)
#optional adding freetype
option(IMGUI_FREETYPE "add Freetype2" OFF)
if(IMGUI_FREETYPE)
FIND_PACKAGE(freetype REQUIRED PATHS ${FREETYPE_PATH})
list(APPEND IMGUI_LIBRARIES freetype)
list(APPEND IMGUI_SOURCES ../../imgui/misc/freetype/imgui_freetype.cpp)
add_definitions("-DCIMGUI_FREETYPE=1")
endif(IMGUI_FREETYPE)
# vulkan
find_package(Vulkan REQUIRED FATAL_ERROR)
list(APPEND IMGUI_LIBRARIES Vulkan::Vulkan)
list(APPEND IMGUI_SOURCES ${BACKENDS_FOLDER}imgui_impl_vulkan.cpp)
#sdl2
list(APPEND IMGUI_SOURCES ${BACKENDS_FOLDER}imgui_impl_sdl2.cpp)
if(DEFINED SDL_PATH)
message(STATUS "SDL_PATH defined as " ${SDL_PATH})
FIND_PACKAGE(SDL2 PATHS ${SDL_PATH})
else(DEFINED SDL_PATH)
# If SDL_PATH is not set, fallback and attempt to find SDL cmake script at a default location
find_package(SDL2)
endif(DEFINED SDL_PATH)
if(SDL2_FOUND)
get_target_property(SDL_INCLUDE SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)
message(STATUS "sdlinclude is " ${SDL_INCLUDE})
if ("${SDL_INCLUDE}" STREQUAL "" OR "${SDL_INCLUDE}" STREQUAL "SDL_INCLUDE-NOTFOUND") #if not found latest SDL2 cmake config use older
message(STATUS "sdlinclude2 is " ${SDL2_INCLUDE_DIRS})
include_directories(${SDL2_INCLUDE_DIRS})
set(IMGUI_SDL_LIBRARY ${SDL2_LIBRARIES})
message(STATUS IMGUI_SDL_LIBRARY ${SDL2_LIBRARIES})
else()#use new one SDL2 config
include_directories(${SDL_INCLUDE})
set(IMGUI_SDL_LIBRARY SDL2::SDL2)
set(SDL_MAIN SDL2::SDL2main)
message(STATUS ${SDL_MAIN} ${IMGUI_SDL_LIBRARY})
endif()
else(SDL2_FOUND)
if(DEFINED SDL_PATH)
message(FATAL_ERROR "Cannot find SDL at SDL_PATH")
else(DEFINED SDL_PATH)
message(FATAL_ERROR "Cannot find SDL. Maybe try specifying SDL_PATH?")
endif(DEFINED SDL_PATH)
endif(SDL2_FOUND)
add_library(cimgui_sdl SHARED ${IMGUI_SOURCES})
target_link_libraries(cimgui_sdl ${IMGUI_LIBRARIES} ${IMGUI_SDL_LIBRARY})
#using library
include_directories(../../generator/output/)
add_executable(test_sdl main.c)
target_compile_definitions(test_sdl PUBLIC -DCIMGUI_USE_VULKAN -DCIMGUI_USE_SDL2)
if (MINGW)
target_link_options(test_sdl PRIVATE "-mconsole")
endif()
target_link_libraries(test_sdl ${IMGUI_SDL_LIBRARY} cimgui_sdl)

View File

@@ -0,0 +1,571 @@
#include <stdio.h>
#include <assert.h>
#define SDL_MAIN_HANDLED
#include <SDL.h>
#include <SDL_vulkan.h>
#include <vulkan/vulkan.h>
#ifdef _MSC_VER
#include <windows.h>
#endif
#define CIMGUI_DEFINE_ENUMS_AND_STRUCTS
#include "cimgui.h"
#include "cimgui_impl.h"
#ifdef IMGUI_HAS_IMSTR
#define igBegin igBegin_Str
#define igSliderFloat igSliderFloat_Str
#define igCheckbox igCheckbox_Str
#define igColorEdit3 igColorEdit3_Str
#define igButton igButton_Str
#endif
#define IM_UNUSED(_VAR) ((void)(_VAR))
#define IM_ASSERT(_EXPR) assert(_EXPR)
#define IM_ARRAYSIZE(_ARR) ((int)(sizeof(_ARR) / sizeof(*(_ARR))))
static VkAllocationCallbacks* g_Allocator = NULL;
static VkInstance g_Instance = VK_NULL_HANDLE;
static VkPhysicalDevice g_PhysicalDevice = VK_NULL_HANDLE;
static VkDevice g_Device = VK_NULL_HANDLE;
static uint32_t g_QueueFamily = (uint32_t)-1;
static VkQueue g_Queue = VK_NULL_HANDLE;
static VkDebugReportCallbackEXT g_DebugReport = VK_NULL_HANDLE;
static VkPipelineCache g_PipelineCache = VK_NULL_HANDLE;
static VkDescriptorPool g_DescriptorPool = VK_NULL_HANDLE;
static ImGui_ImplVulkanH_Window g_MainWindowData;
static uint32_t g_MinImageCount = 2;
static bool g_SwapChainRebuild = false;
static void check_vk_result(VkResult err)
{
if (err == 0)
return;
fprintf(stderr, "[vulkan] Error: VkResult = %d\n", err);
if (err < 0)
abort();
}
#ifdef IMGUI_VULKAN_DEBUG_REPORT
static VKAPI_ATTR VkBool32 VKAPI_CALL debug_report(VkDebugReportFlagsEXT flags,
VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location,
int32_t messageCode, const char* pLayerPrefix, const char* pMessage, void* pUserData)
{
(void)flags; (void)object; (void)location; (void)messageCode;
(void)pUserData; (void)pLayerPrefix; // Unused arguments
fprintf(stderr, "[vulkan] Debug report from ObjectType: %i\nMessage: %s\n\n",
objectType, pMessage);
return VK_FALSE;
}
#endif // IMGUI_VULKAN_DEBUG_REPORT
static void SetupVulkan(const char** extensions, uint32_t extensions_count)
{
VkResult err;
// Create Vulkan Instance
VkInstanceCreateInfo inst_create_info = {
.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
.enabledExtensionCount = extensions_count,
.ppEnabledExtensionNames = extensions,
};
#ifdef IMGUI_VULKAN_DEBUG_REPORT
// Enabling validation layers
const char* layers[] = { "VK_LAYER_KHRONOS_validation" };
inst_create_info.enabledLayerCount = 1;
inst_create_info.ppEnabledLayerNames = layers;
// Enable debug report extension (we need additional storage, so we duplicate the user array to add our new extension to it)
const char** extensions_ext = (const char**)malloc(
sizeof(const char*) * (extensions_count + 1));
memcpy(extensions_ext, extensions, extensions_count * sizeof(const char*));
extensions_ext[extensions_count] = "VK_EXT_debug_report";
inst_create_info.enabledExtensionCount = extensions_count + 1;
inst_create_info.ppEnabledExtensionNames = extensions_ext;
// Create Vulkan Instance
err = vkCreateInstance(&inst_create_info, g_Allocator, &g_Instance);
check_vk_result(err);
free(extensions_ext);
// Get the function pointer (required for any extensions)
PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT =
(PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance,
"vkCreateDebugReportCallbackEXT");
IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL);
// Setup the debug report callback
VkDebugReportCallbackCreateInfoEXT debug_report_ci = {
.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT |
VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
.pfnCallback = debug_report,
.pUserData = NULL,
};
err = vkCreateDebugReportCallbackEXT(g_Instance, &debug_report_ci, g_Allocator,
&g_DebugReport);
check_vk_result(err);
#else
// Create Vulkan Instance without any debug feature
err = vkCreateInstance(&inst_create_info, g_Allocator, &g_Instance);
check_vk_result(err);
IM_UNUSED(g_DebugReport);
#endif
// Select GPU
uint32_t gpu_count;
err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL);
check_vk_result(err);
IM_ASSERT(gpu_count > 0);
VkPhysicalDevice* gpus = (VkPhysicalDevice*)malloc(sizeof(VkPhysicalDevice) * gpu_count);
err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, gpus);
check_vk_result(err);
// If a number >1 of GPUs got reported, find discrete GPU if present, or use first one available. This covers
// most common cases (multi-gpu/integrated+dedicated graphics). Handling more complicated setups (multiple
// dedicated GPUs) is out of scope of this sample.
int use_gpu = 0;
for (int i = 0; i < (int)gpu_count; i++)
{
VkPhysicalDeviceProperties properties;
vkGetPhysicalDeviceProperties(gpus[i], &properties);
if (properties.deviceType == VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU)
{
use_gpu = i;
break;
}
}
g_PhysicalDevice = gpus[use_gpu];
free(gpus);
// Select graphics queue family
uint32_t count;
vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, NULL);
VkQueueFamilyProperties* queues = (VkQueueFamilyProperties*)malloc(
sizeof(VkQueueFamilyProperties) * count);
vkGetPhysicalDeviceQueueFamilyProperties(g_PhysicalDevice, &count, queues);
for (uint32_t i = 0; i < count; i++)
if (queues[i].queueFlags & VK_QUEUE_GRAPHICS_BIT)
{
g_QueueFamily = i;
break;
}
free(queues);
IM_ASSERT(g_QueueFamily != (uint32_t)-1);
// Create Logical Device (with 1 queue)
int device_extension_count = 1;
const char* device_extensions[] = { "VK_KHR_swapchain" };
const float queue_priority[] = { 1.0f };
VkDeviceQueueCreateInfo queue_info[1] = {
[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
[0].queueFamilyIndex = g_QueueFamily,
[0].queueCount = 1,
[0].pQueuePriorities = queue_priority,
};
VkDeviceCreateInfo create_info = {
.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
.queueCreateInfoCount = sizeof(queue_info) / sizeof(queue_info[0]),
.pQueueCreateInfos = queue_info,
.enabledExtensionCount = device_extension_count,
.ppEnabledExtensionNames = device_extensions,
};
err = vkCreateDevice(g_PhysicalDevice, &create_info, g_Allocator, &g_Device);
check_vk_result(err);
vkGetDeviceQueue(g_Device, g_QueueFamily, 0, &g_Queue);
// Create Descriptor Pool
VkDescriptorPoolSize pool_sizes[] = {
{ VK_DESCRIPTOR_TYPE_SAMPLER, 1000 },
{ VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1000 },
{ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, 1000 },
{ VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1000 },
{ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, 1000 },
{ VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, 1000 },
{ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 1000 },
{ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1000 },
{ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, 1000 },
{ VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, 1000 },
{ VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, 1000 }
};
VkDescriptorPoolCreateInfo pool_info = {
.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,
.maxSets = 1000 * IM_ARRAYSIZE(pool_sizes),
.poolSizeCount = (uint32_t)IM_ARRAYSIZE(pool_sizes),
.pPoolSizes = pool_sizes,
};
err = vkCreateDescriptorPool(g_Device, &pool_info, g_Allocator, &g_DescriptorPool);
check_vk_result(err);
}
// All the ImGui_ImplVulkanH_XXX structures/functions are optional helpers used by the demo.
// Your real engine/app may not use them.
static void SetupVulkanWindow(ImGui_ImplVulkanH_Window* wd, VkSurfaceKHR surface,
int width, int height)
{
wd->Surface = surface;
// Check for WSI support
VkBool32 res;
vkGetPhysicalDeviceSurfaceSupportKHR(g_PhysicalDevice, g_QueueFamily, wd->Surface, &res);
if (res != VK_TRUE)
{
fprintf(stderr, "Error no WSI support on physical device 0\n");
exit(-1);
}
// Select Surface Format
const VkFormat requestSurfaceImageFormat[] = {
VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_R8G8B8A8_UNORM,
VK_FORMAT_B8G8R8_UNORM, VK_FORMAT_R8G8B8_UNORM
};
const VkColorSpaceKHR requestSurfaceColorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR;
wd->SurfaceFormat = ImGui_ImplVulkanH_SelectSurfaceFormat(
g_PhysicalDevice, wd->Surface, requestSurfaceImageFormat,
(size_t)IM_ARRAYSIZE(requestSurfaceImageFormat), requestSurfaceColorSpace);
// Select Present Mode
#ifdef IMGUI_UNLIMITED_FRAME_RATE
VkPresentModeKHR present_modes[] = {
VK_PRESENT_MODE_MAILBOX_KHR,VK_PRESENT_MODE_IMMEDIATE_KHR, VK_PRESENT_MODE_FIFO_KHR
};
#else
VkPresentModeKHR present_modes[] = { VK_PRESENT_MODE_FIFO_KHR };
#endif
wd->PresentMode = ImGui_ImplVulkanH_SelectPresentMode(
g_PhysicalDevice, wd->Surface, &present_modes[0], IM_ARRAYSIZE(present_modes));
// Create SwapChain, RenderPass, Framebuffer, etc.
IM_ASSERT(g_MinImageCount >= 2);
ImGui_ImplVulkanH_CreateOrResizeWindow(
g_Instance, g_PhysicalDevice, g_Device, wd, g_QueueFamily, g_Allocator,
width, height, g_MinImageCount);
}
static void CleanupVulkan()
{
vkDestroyDescriptorPool(g_Device, g_DescriptorPool, g_Allocator);
#ifdef IMGUI_VULKAN_DEBUG_REPORT
// Remove the debug report callback
PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT =
(PFN_vkDestroyDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkDestroyDebugReportCallbackEXT");
vkDestroyDebugReportCallbackEXT(g_Instance, g_DebugReport, g_Allocator);
#endif // IMGUI_VULKAN_DEBUG_REPORT
vkDestroyDevice(g_Device, g_Allocator);
vkDestroyInstance(g_Instance, g_Allocator);
}
static void CleanupVulkanWindow()
{
ImGui_ImplVulkanH_DestroyWindow(g_Instance, g_Device, &g_MainWindowData, g_Allocator);
}
static void FrameRender(ImGui_ImplVulkanH_Window* wd, ImDrawData* draw_data)
{
VkResult err;
VkSemaphore image_acquired_semaphore = wd->FrameSemaphores[wd->SemaphoreIndex].ImageAcquiredSemaphore;
VkSemaphore render_complete_semaphore = wd->FrameSemaphores[wd->SemaphoreIndex].RenderCompleteSemaphore;
err = vkAcquireNextImageKHR(g_Device, wd->Swapchain, UINT64_MAX, image_acquired_semaphore, VK_NULL_HANDLE, &wd->FrameIndex);
if (err == VK_ERROR_OUT_OF_DATE_KHR || err == VK_SUBOPTIMAL_KHR)
{
g_SwapChainRebuild = true;
return;
}
check_vk_result(err);
ImGui_ImplVulkanH_Frame* fd = &wd->Frames[wd->FrameIndex];
err = vkWaitForFences(g_Device, 1, &fd->Fence, VK_TRUE, UINT64_MAX); // wait indefinitely instead of periodically checking
check_vk_result(err);
err = vkResetFences(g_Device, 1, &fd->Fence);
check_vk_result(err);
err = vkResetCommandPool(g_Device, fd->CommandPool, 0);
check_vk_result(err);
VkCommandBufferBeginInfo info = {
.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
};
err = vkBeginCommandBuffer(fd->CommandBuffer, &info);
check_vk_result(err);
VkRenderPassBeginInfo rp_info = {
.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
.renderPass = wd->RenderPass,
.framebuffer = fd->Framebuffer,
.renderArea.extent.width = wd->Width,
.renderArea.extent.height = wd->Height,
.clearValueCount = 1,
.pClearValues = &wd->ClearValue,
};
vkCmdBeginRenderPass(fd->CommandBuffer, &rp_info, VK_SUBPASS_CONTENTS_INLINE);
// Record dear imgui primitives into command buffer
ImGui_ImplVulkan_RenderDrawData(draw_data, fd->CommandBuffer, VK_NULL_HANDLE);
// Submit command buffer
vkCmdEndRenderPass(fd->CommandBuffer);
VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
VkSubmitInfo sub_info = {
.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
.waitSemaphoreCount = 1,
.pWaitSemaphores = &image_acquired_semaphore,
.pWaitDstStageMask = &wait_stage,
.commandBufferCount = 1,
.pCommandBuffers = &fd->CommandBuffer,
.signalSemaphoreCount = 1,
.pSignalSemaphores = &render_complete_semaphore,
};
err = vkEndCommandBuffer(fd->CommandBuffer);
check_vk_result(err);
err = vkQueueSubmit(g_Queue, 1, &sub_info, fd->Fence);
check_vk_result(err);
}
static void FramePresent(ImGui_ImplVulkanH_Window* wd)
{
if (g_SwapChainRebuild) return;
VkSemaphore render_complete_semaphore = wd->FrameSemaphores[wd->SemaphoreIndex].RenderCompleteSemaphore;
VkPresentInfoKHR info = {
.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
.waitSemaphoreCount = 1,
.pWaitSemaphores = &render_complete_semaphore,
.swapchainCount = 1,
.pSwapchains = &wd->Swapchain,
.pImageIndices = &wd->FrameIndex,
};
VkResult err = vkQueuePresentKHR(g_Queue, &info);
if (err == VK_ERROR_OUT_OF_DATE_KHR || err == VK_SUBOPTIMAL_KHR)
{
g_SwapChainRebuild = true;
return;
}
check_vk_result(err);
wd->SemaphoreIndex = (wd->SemaphoreIndex + 1) % wd->ImageCount; // Now we can use the next set of semaphores
}
int main(int argc, char* argv[])
{
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_Log("failed to init: %s", SDL_GetError());
return -1;
}
/// Setup window
SDL_WindowFlags window_flags = (SDL_WindowFlags)(SDL_WINDOW_VULKAN |
SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI);
SDL_Window* window = SDL_CreateWindow("cImGui SDL2+Vulkan example",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, window_flags);
if (window == NULL) {
SDL_Log("Failed to create window: %s", SDL_GetError());
return -1;
}
// Setup Vulkan
uint32_t extensions_count = 0;
SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, NULL);
const char** extensions = malloc(extensions_count * sizeof(const char*));
SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, extensions);
SetupVulkan(extensions, extensions_count);
free(extensions);
// Create Window Surface
VkSurfaceKHR surface;
VkResult err;
if (SDL_Vulkan_CreateSurface(window, g_Instance, &surface) == 0)
{
printf("Failed to create Vulkan surface.\n");
return 1;
}
// Create Framebuffers
int w, h;
SDL_GetWindowSize(window, &w, &h);
ImGui_ImplVulkanH_Window* wd = &g_MainWindowData;
SetupVulkanWindow(wd, surface, w, h);
// setup imgui
igCreateContext(NULL);
//set docking
ImGuiIO* ioptr = igGetIO();
ioptr->ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
//ioptr->ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
// Setup Platform/Renderer backends
ImGui_ImplSDL2_InitForVulkan(window);
ImGui_ImplVulkan_InitInfo init_info = {
.Instance = g_Instance,
.PhysicalDevice = g_PhysicalDevice,
.Device = g_Device,
.QueueFamily = g_QueueFamily,
.Queue = g_Queue,
.PipelineCache = g_PipelineCache,
.DescriptorPool = g_DescriptorPool,
.Subpass = 0,
.MinImageCount = g_MinImageCount,
.ImageCount = wd->ImageCount,
.MSAASamples = VK_SAMPLE_COUNT_1_BIT,
.Allocator = g_Allocator,
.CheckVkResultFn = check_vk_result
};
ImGui_ImplVulkan_Init(&init_info, wd->RenderPass);
igStyleColorsDark(NULL);
// Upload Fonts
// Use any command queue
VkCommandPool command_pool = wd->Frames[wd->FrameIndex].CommandPool;
VkCommandBuffer command_buffer = wd->Frames[wd->FrameIndex].CommandBuffer;
err = vkResetCommandPool(g_Device, command_pool, 0);
check_vk_result(err);
VkCommandBufferBeginInfo begin_info = {
.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
};
err = vkBeginCommandBuffer(command_buffer, &begin_info);
check_vk_result(err);
ImGui_ImplVulkan_CreateFontsTexture(command_buffer);
VkSubmitInfo end_info = {
.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO,
.commandBufferCount = 1,
.pCommandBuffers = &command_buffer,
};
err = vkEndCommandBuffer(command_buffer);
check_vk_result(err);
err = vkQueueSubmit(g_Queue, 1, &end_info, VK_NULL_HANDLE);
check_vk_result(err);
err = vkDeviceWaitIdle(g_Device);
check_vk_result(err);
ImGui_ImplVulkan_DestroyFontUploadObjects();
bool showDemoWindow = true;
bool showAnotherWindow = false;
ImVec4 clearColor;
clearColor.x = 0.45f;
clearColor.y = 0.55f;
clearColor.z = 0.60f;
clearColor.w = 1.00f;
bool quit = false;
while (!quit)
{
SDL_Event e;
// we need to call SDL_PollEvent to let window rendered, otherwise
// no window will be shown
while (SDL_PollEvent(&e) != 0)
{
ImGui_ImplSDL2_ProcessEvent(&e);
if (e.type == SDL_QUIT)
quit = true;
if (e.type == SDL_WINDOWEVENT && e.window.event == SDL_WINDOWEVENT_CLOSE &&
e.window.windowID == SDL_GetWindowID(window))
quit = true;
}
// Resize swap chain
if (g_SwapChainRebuild)
{
int width, height;
SDL_GetWindowSize(window, &width, &height);
if (width > 0 && height > 0)
{
ImGui_ImplVulkan_SetMinImageCount(g_MinImageCount);
ImGui_ImplVulkanH_CreateOrResizeWindow(
g_Instance, g_PhysicalDevice, g_Device, &g_MainWindowData,
g_QueueFamily, g_Allocator, width, height, g_MinImageCount);
g_MainWindowData.FrameIndex = 0;
g_SwapChainRebuild = false;
}
}
// start imgui frame
ImGui_ImplVulkan_NewFrame();
ImGui_ImplSDL2_NewFrame();
igNewFrame();
if (showDemoWindow)
igShowDemoWindow(&showDemoWindow);
// show a simple window that we created ourselves.
{
static float f = 0.0f;
static int counter = 0;
igBegin("Hello, world!", NULL, 0);
igText("This is some useful text");
igCheckbox("Demo window", &showDemoWindow);
igCheckbox("Another window", &showAnotherWindow);
igSliderFloat("Float", &f, 0.0f, 1.0f, "%.3f", 0);
igColorEdit3("clear color", (float*)&clearColor, 0);
ImVec2 buttonSize;
buttonSize.x = 0;
buttonSize.y = 0;
if (igButton("Button", buttonSize))
counter++;
igSameLine(0.0f, -1.0f);
igText("counter = %d", counter);
igText("Application average %.3f ms/frame (%.1f FPS)",
1000.0f / igGetIO()->Framerate, igGetIO()->Framerate);
igEnd();
}
if (showAnotherWindow)
{
igBegin("imgui Another Window", &showAnotherWindow, 0);
igText("Hello from imgui");
ImVec2 buttonSize;
buttonSize.x = 0; buttonSize.y = 0;
if (igButton("Close me", buttonSize))
{
showAnotherWindow = false;
}
igEnd();
}
// render
igRender();
ImDrawData* draw_data = igGetDrawData();
const bool is_minimized = (draw_data->DisplaySize.x <= 0.0f || draw_data->DisplaySize.y <= 0.0f);
if (!is_minimized)
{
wd->ClearValue.color.float32[0] = clearColor.x * clearColor.w;
wd->ClearValue.color.float32[1] = clearColor.y * clearColor.w;
wd->ClearValue.color.float32[2] = clearColor.z * clearColor.w;
wd->ClearValue.color.float32[3] = clearColor.w;
FrameRender(wd, draw_data);
FramePresent(wd);
}
}
// Cleanup
err = vkDeviceWaitIdle(g_Device);
check_vk_result(err);
ImGui_ImplVulkan_Shutdown();
ImGui_ImplSDL2_Shutdown();
igDestroyContext(NULL);
CleanupVulkanWindow();
CleanupVulkan();
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

1766
cimgui.cpp

File diff suppressed because it is too large Load Diff

2834
cimgui.h

File diff suppressed because it is too large Load Diff

View File

@@ -89,7 +89,7 @@ CimguiStorage& GetCimguiStorage()
ImGuiIO& io = ImGui::GetIO();
if (io.BackendLanguageUserData == NULL)
{
io.BackendLanguageUserData = new CimguiStorage();
io.BackendLanguageUserData = IM_NEW(CimguiStorage)();
}
return *(CimguiStorage*)io.BackendLanguageUserData;

View File

@@ -61,6 +61,10 @@ CIMGUI_API void ImVector_ImWchar_destroy(ImVector_ImWchar* self);
CIMGUI_API void ImVector_ImWchar_Init(ImVector_ImWchar* p);
CIMGUI_API void ImVector_ImWchar_UnInit(ImVector_ImWchar* p);
#ifdef IMGUI_HAS_DOCK
CIMGUI_API void ImGuiPlatformIO_Set_Platform_GetWindowPos(ImGuiPlatformIO* platform_io, void(*user_callback)(ImGuiViewport* vp, ImVec2* out_pos));
CIMGUI_API void ImGuiPlatformIO_Set_Platform_GetWindowSize(ImGuiPlatformIO* platform_io, void(*user_callback)(ImGuiViewport* vp, ImVec2* out_size));
#endif
#endif //CIMGUI_INCLUDED

View File

@@ -1,3 +1,3 @@
return {
vulkan = {[[C:\VulkanSDK\1.1.130.0\Include]]}
}
vulkan = {(os.getenv("VULKAN_SDK") or "vulkan_SDK_not_found").."/Include"}, --{[[C:\VulkanSDK\1.3.216.0\Include]]}
}

View File

@@ -68,6 +68,7 @@ local function ToStr(t,dometatables)
_ToStr(t,strTG,recG,nameG)
return table.concat(strTG)
end
M.ToStr = ToStr
function M.prtable(...)
for i=1, select('#', ...) do
local t = select(i, ...)
@@ -116,7 +117,7 @@ end
M.strsplit = strsplit
local function split_comment(line)
local comment = line:match("(%s*//.*)") --or ""
line = line:gsub("%s*//.*","")
line = line:gsub("%s*//[^\n]*","")
line = line:gsub("%s*$","")
return line,comment
end
@@ -129,6 +130,23 @@ local function clean_comments(txt)
txt = txt:gsub("%s*//[^\n]*","")
return txt,comms
end
--dont keep commens above empty line
local function clean_outercomms(oc)
local oc2 = {}
for i,v in ipairs(oc) do
--print(string.format("%d\n%q",i,v))
if v:match"\n%s*\n" then
--print(string.format("match:\n%q",v))--,v:match"\n%s*\n"))
v=v:gsub("\n%s*\n","")
--print("clean",v)
oc2 = {}
else
--print"dont clean"
end
table.insert(oc2,v)
end
return table.concat(oc2)--,"\n")
end
local function strip(cad)
return cad:gsub("^%s*(.-)%s*$","%1") --remove initial and final spaces
end
@@ -157,6 +175,7 @@ local function check_template(code)
te = te:gsub("%-","less")
te = te:gsub("%s","_")
te = te:gsub("%*","Ptr")
te = te:gsub("::","_")
code2 = code:gsub("(<[%w_%*%s]+>)([^%s%*])","%1 %2")
code2 = code2:gsub("<([^<>]-)>","_"..te)
@@ -184,6 +203,8 @@ local function parse_enum_value(value, allenums,dontpost)
if allenums[clean(value)] then return allenums[clean(value)] end
--must be several and operators
------------precedence order (hope not ())
--delete (int)
value = value:gsub("%(int%)","")
--first drop outer ()
value = value:gsub("^(%()",""):gsub("(%))$","")
assert(not value:match("[%(%)]"),value)
@@ -312,20 +333,23 @@ local function getRE()
--vardef_re = "^\n*([^;{}%(%)]+;)",
--change for things as
--[[ImU8 Used4kPagesMap[((sizeof(ImWchar16) == 2 ? 0xFFFF : 0x10FFFF)+1)/4096/8];]]
vardef_re = "^\n*([^;{}]+;)",
--vardef_re = "^\n*([^;{}]+;)",
vardef_re = "^\n*([^;]+;)",
functionD_re = "^([^;{}]-%b()[\n%s%w]*%b{}%s-;*)",
--functionD_re = "^([^;{}]-%b()[^{}%(%)]*%b{})",
functype_re = "^%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)%s*;",
comment_re = "^%s*//[^\n]*",
comment2_re = "^%s*/%*.-%*/"
comment_re = "^\n*%s*//[^\n]*",
comment2_re = "^%s*/%*.-%*/",
emptyline_re = "^\n%s*\n"
}
local resN = {"comment2_re","comment_re","functypedef_re","functype_re","function_re","functionD_re","typedef_st_re","struct_re","enum_re","union_re","namespace_re","class_re","typedef_re","vardef_re"}
local resN = {"comment2_re","comment_re","emptyline_re",
"functypedef_re","functype_re","function_re","functionD_re","typedef_st_re","struct_re","enum_re","union_re","namespace_re","class_re","typedef_re","vardef_re"}
return res,resN
end
local function isLeaf(re)
return (re ~= "typedef_st_re" and re ~= "struct_re" and re~="namespace_re" and re~="class_re")
return (re ~= "typedef_st_re" and re ~= "struct_re" and re~="namespace_re" and re~="class_re" and re~="union_re")
end
M.getRE = getRE
--takes preprocesed file in table cdefsor and returns items
@@ -347,7 +371,7 @@ local function parseItems(txt,linenumdict, itparent, dumpit)
if i then
item = txt:sub(i,e)
--print("re_name",re_name,item)
--print("re_name:",re_name,string.format("%q",item))
------------------
--[[
--if re~=functionD_re then --skip defined functions
@@ -358,7 +382,8 @@ local function parseItems(txt,linenumdict, itparent, dumpit)
table.insert(items[re_name],item)
--]]
--------------------
if re_name=="comment_re" or re_name=="comment2_re" then
if re_name=="comment_re" or re_name=="comment2_re" or re_name=="emptyline_re" then
--print("parit",item)
--[[
table.insert(outercomms,item)
-- comments to previous item
@@ -367,6 +392,13 @@ local function parseItems(txt,linenumdict, itparent, dumpit)
itemarr[#itemarr].comments = prev .. item
end
--]]
--clean initial spaces
--item = item:gsub("^%s*(//.-)$","%1")
--if item:match"^[^\n%S]*" then
--print("commspace1",string.format("%q",item))
item = item:gsub("^[^\n%S]*(//.-)$","%1")
--print("commspace2",string.format("%q",item))
--end
--comments begining with \n will go to next item
if item:match("^%s*\n") then
table.insert(outercomms,item)
@@ -381,7 +413,8 @@ local function parseItems(txt,linenumdict, itparent, dumpit)
--item,inercoms = clean_comments(item)
local itemold = item
item = item:gsub("extern __attribute__%(%(dllexport%)%) ","")
local comments = table.concat(outercomms,"\n") --..inercoms
local comments = clean_outercomms(outercomms)
--local comments = table.concat(outercomms,"\n") --..inercoms
if comments=="" then comments=nil end
outercomms = {}
local loca
@@ -407,16 +440,17 @@ local function parseItems(txt,linenumdict, itparent, dumpit)
-- end
--error"no entry in linenumdict"
--take locat from parent
if itparent.locat then
if itparent and itparent.locat then
loca = itparent.locat
else
error"no entry in linenumdict"
loca = 0
--error"no entry in linenumdict"
end
end
else
error"no linenumdict"
end
table.insert(itemarr,{re_name=re_name,item=item,locat=loca})--,comments=comments})
table.insert(itemarr,{re_name=re_name,item=item,locat=loca,prevcomments=comments})
items[re_name] = items[re_name] or {}
table.insert(items[re_name],item)
end
@@ -450,12 +484,14 @@ end
M.parseItems = parseItems
local function name_overloadsAlgo(v)
local aa = {}
local bb = {}
local done = {}
local aa = {} -- args
local bb = {} -- overloaded names
local cc = {} -- discrimination args
local done = {} -- overloading finished discrimination
local maxnum = 0
for i,t in ipairs(v) do
bb[i] = ""
cc[i] = {}
local signature = t.signature:match("%b()")
signature = signature:sub(2,-2)
--add const function
@@ -495,9 +531,7 @@ local function name_overloadsAlgo(v)
for i=1,#v do
if not done[i] then
bb[i] = bb[i]..(aa[i][l]=="nil" and "" or aa[i][l])
-- if keys[aa[i][l]] == 1 then
-- done[i] = true
-- end
cc[i][l] = aa[i][l]
end
end
end
@@ -513,8 +547,9 @@ local function name_overloadsAlgo(v)
end
--avoid empty postfix which will be reserved to generic
for i,v in ipairs(bb) do if v=="" then bb[i]="Nil" end end
return aa,bb
return aa,bb,cc
end
M.name_overloadsAlgo = name_overloadsAlgo
local function typetoStr(typ)
--print("typetoStr",typ)
--typ = typ:gsub("[^%(%)]+%(%*?(.+)%).+","%1") -- funcs
@@ -569,7 +604,77 @@ local function clean_names_from_signature(self,signat)
result = result:sub(1,-2) .. ")"
return result
end
local function clean_functypedef(line)
local first, args = line:match("(typedef .-%(%*[_%w]+%))%s*(%b())")
if not args then
print"not getting args in"
print(line)
print(first,"args",args)
error"clean_functypedef not getting args"
end
local argsp = args:sub(2,-2)..","
local argsTa = {}
for tynam in argsp:gmatch("([^,]+),") do
if tynam:match("%)") and not tynam:match("%b()") then
--patenthesis not closed are merged in previous (happens in some defaults)
argsTa[#argsTa] = argsTa[#argsTa]..","..tynam
while argsTa[#argsTa]:match("%)") and not argsTa[#argsTa]:match("%b()") do
argsTa[#argsTa-1] = argsTa[#argsTa-1] .. "," .. argsTa[#argsTa]
argsTa[#argsTa] = nil
end
else
argsTa[#argsTa+1] = tynam
end
end
local result = "\n"..first.."("
for i,ar in ipairs(argsTa) do
if ar:match("&") then
if ar:match("const") then
argsTa[i] = ar:gsub("&","")
else
argsTa[i] = ar:gsub("&","*")
end
end
result = result..argsTa[i]..(i==#argsTa and ");" or ",")
end
--M.prtable(argsTa)
--print(result)
return result
end
local function CleanImU32(def)
local function deleteOuterPars(def)
local w = def:match("^%b()$")
if w then
w = w:gsub("^%((.+)%)$","%1")
return w
else
return def
end
end
def = def:gsub("%(ImU32%)","")
--quitar () de numeros
def = def:gsub("%((%d+)%)","%1")
def = deleteOuterPars(def)
local bb=strsplit(def,"|")
for i=1,#bb do
local val = deleteOuterPars(bb[i])
if val:match"<<" then
local v1,v2 = val:match("(%d+)%s*<<%s*(%d+)")
val = v1*2^v2
bb[i] = val
end
assert(type(bb[i])=="number",bb[i])
end
local res = 0
for i=1,#bb do res = res + bb[i] end
return res
end
local function parseFunction(self,stname,itt,namespace,locat)
local lineorig,comment = split_comment(itt.item)
line = clean_spaces(lineorig)
--move *
@@ -593,6 +698,7 @@ local function parseFunction(self,stname,itt,namespace,locat)
line = line:gsub("mutable","")
line = line:gsub("explicit","")
line = line:gsub("constexpr","")
line = clean_spaces(line)
--skip operator
if line:match("operator") then return end
--skip template
@@ -648,6 +754,8 @@ local function parseFunction(self,stname,itt,namespace,locat)
local argsTa2 = {}
local noname_counter = 0
for i,ar in ipairs(argsTa) do
--avoid var name without space type&name -> type& name
ar = ar:gsub("(%S)&(%S)","%1& %2")
local typ,name,retf,sigf,reftoptr,defa,ar1
local has_cdecl = ar:match"__cdecl"
if has_cdecl then ar = ar:gsub("__cdecl","") end
@@ -750,6 +858,15 @@ local function parseFunction(self,stname,itt,namespace,locat)
defT.defaults = {}
for i,ar in ipairs(argsArr) do
if ar.default then
--clean defaults
--do only if not a c string
local is_cstring = ar.default:sub(1,1)=='"' and ar.default:sub(-1,-1) =='"'
if not is_cstring then
ar.default = ar.default:gsub("%(%(void%s*%*%)0%)","NULL")
if ar.default:match"%(ImU32%)" and not ar.default:match"sizeof" then
ar.default = tostring(CleanImU32(ar.default))
end
end
defT.defaults[ar.name] = ar.default
ar.default = nil
end
@@ -876,15 +993,28 @@ local function ADDIMSTR_S(FP)
if dd.signature == defT2.signature then
doadd = false;
print("skip _S addition",defT2.cimguiname)
--M.prtable(defT2)
break
end
end
--delete imstrv generation
if FP.NOIMSTRV then
newcdefs[#newcdefs] = nil
cimf[t.signature] = nil
for i,v in ipairs(cimf) do
if v.signature == t.signature then
table.remove(cimf, i)
break
end
end
end
--add _S version
if doadd then
if doadd and not FP.NOCHAR then
cimf[#cimf+1] = defT2
cimf[defT2.signature] = defT2
newcdefs[#newcdefs+1] = {stname=t.stname,funcname=t.funcname,args=defT2.args,signature=defT2.signature,cimguiname=defT2.cimguiname,ret =defT2.ret}
end
end
else print("not cimguiname in");M.prtable(t)
end
@@ -1088,13 +1218,16 @@ function M.Parser()
return par.skipped[def.ov_cimguiname] or par.skipped[def.cimguiname]
end
function par:take_lines(cmd_line,names,compiler)
if self.COMMENTS_GENERATION then
cmd_line = cmd_line .. (compiler=="cl" and " /C " or " -C ")
end
local pipe,err = io.popen(cmd_line,"r")
if not pipe then
error("could not execute COMPILER "..err)
end
local defines = {}
local preprocessed = {}--
for line,loca,loca2 in M.location(pipe,names,defines,compiler) do
for line,loca,loca2 in M.location(pipe,names,defines,compiler,self.COMMENTS_GENERATION) do
self:insert(line, tostring(loca)..":"..tostring(loca2))
table.insert(preprocessed,line)--
end
@@ -1157,6 +1290,14 @@ function M.Parser()
function par:parseItemsR2(txt, itparent)
local itsarr,its = parseItems(txt,self.linenumdict,itparent)
for i,it in ipairs(itsarr) do
--clean class
if it.re_name == "class_re" then
it.name = it.item:match("class%s+(%S+)")
print("cleaning class",it.name)
it.item = it.item:gsub("private:.+};$","};")
it.item = it.item:gsub("public:","")
it.item = it.item:gsub("enum%s*class","enum")
end
if not isLeaf(it.re_name) then
local inner = strip_end(it.item:match("%b{}"):sub(2,-2))
it.childs = par:parseItemsR2(inner, it)
@@ -1165,7 +1306,8 @@ function M.Parser()
end
if it.re_name == "struct_re" then
local typename = it.item:match("^%s*template%s*<%s*typename%s*(%S+)%s*>")
local stname = it.item:match("struct%s+(%S+)")
--local stname = it.item:match("struct%s+(%S+)")
local stname = it.item:match("struct%s+([^%s{]+)") --unamed
it.name = stname
--local templa1,templa2 = it.item:match("^%s*template%s*<%s*(%S+)%s*(%S+)%s*>")
@@ -1178,32 +1320,87 @@ function M.Parser()
end
elseif it.re_name == "namespace_re" then
it.name = it.item:match("namespace%s+(%S+)")
elseif it.re_name == "class_re" then
--it.name = it.item:match("class%s+(%S+)")
end
end
end
return itsarr
end
local function sanitize_comments(txt)
local txtclean = {}
local reg = "//[^\n\r]+"
local ini = 1
local i,e,a = txt:find(reg,ini)
while i do
table.insert(txtclean,txt:sub(ini,i-1))
local com = txt:sub(i,e):gsub("[{}]+","")
table.insert(txtclean,com)
ini = e + 1
i,e,a = txt:find(reg,ini)
end
table.insert(txtclean,txt:sub(ini,-1))
return table.concat(txtclean)
end
function par:parseItems()
self:initTypedefsDict()
self.linenumdict = {}
local cdefs2 = {}
for i,cdef in ipairs(cdefs) do
if self.linenumdict[cdef[1]] then
cdef[1] = cdef[1]:gsub("enum%s*class","enum") --clean class
local cdef1 = clean_comments(cdef[1])
if self.linenumdict[cdef1] then
--print("linenumdict already defined for", cdef[1],type(self.linenumdict[cdef[1]]))
if type(self.linenumdict[cdef[1]])=="string" then
self.linenumdict[cdef[1]] = {self.linenumdict[cdef[1]], cdef[2]}
if type(self.linenumdict[cdef1])=="string" then
self.linenumdict[cdef1] = {self.linenumdict[cdef1], cdef[2]}
else -- must be table already
table.insert(self.linenumdict[cdef[1]],cdef[2])
table.insert(self.linenumdict[cdef1],cdef[2])
end
else
--print("nuevo linenumdict es",cdef[1],cdef[2])
self.linenumdict[cdef[1]]=cdef[2]
self.linenumdict[cdef1]=cdef[2]
end
table.insert(cdefs2,cdef[1])
end
local txt = table.concat(cdefs2,"\n")
--string substitution
if self.str_subst then
for k,v in pairs(self.str_subst) do
txt = txt:gsub(k,v)
end
end
--save_data("./preprocode"..tostring(self):gsub("table: ","")..".c",txt)
--clean bad positioned comments inside functionD_re
if self.COMMENTS_GENERATION then
print"cleaning { and } inside comments"
txt = sanitize_comments(txt)
print"cleaning comments inside functionD_re--------------"
---[[
local nn = 0
local txtclean = {}
local reg = "(\n[%w%s]-[%w]+%s*%b())(%s*//[^\n]*)([\n%s%w]*%b{}%s-;*)"
--reg = "^([^;{}]-%b()[\n%s%w]*%b{}%s-;*)"
local ini = 1
local i,e,a,b,c = txt:find(reg,ini)
while i do
print(i,e,#txt)
table.insert(txtclean,txt:sub(ini,i-1))
table.insert(txtclean,a)
print("a:",a)
print("b:",b)
print("c:",c)
c = c:gsub("(%s*//[^\n]*)","")
table.insert(txtclean,c)
nn = nn + 1
ini = e + 1
i,e,a,b,c = txt:find(reg,ini)
end
table.insert(txtclean,txt:sub(ini))
print("end cleaning ------------------------------",nn)
txt = table.concat(txtclean)
end
--save_data("./preparse"..tostring(self):gsub("table: ","")..".c",txt)
--]]
self.itemsarr = par:parseItemsR2(txt)
itemsarr = self.itemsarr
end
@@ -1243,7 +1440,11 @@ function M.Parser()
stname,derived = inistruct:match"struct%s*([^%s:]+):(.+)"
derived = derived:match"(%S+)$"
else
stname = inistruct:match"struct%s(%S+)"
if itst.re_name == "struct_re" then
stname = inistruct:match"struct%s(%S+)"
elseif itst.re_name == "class_re" then
stname = inistruct:match"class%s(%S+)"
end
end
if derived then print(stname,"derived from",derived) end
@@ -1253,19 +1454,27 @@ function M.Parser()
stname = stru:match("%b{}%s*(%S+)%s*;")
end
local is_nested
if not stname then
print(stru)
error"could not get stname"
is_nested = itst.parent and (itst.parent.re_name == "struct_re")
if is_nested then
--print("unamed nested struct",stru)
stname = ""
else
print(stru)
error"could not get stname"
end
end
--initial
--table.insert(outtab,stru:match("(.-)%b{}"))
table.insert(outtab,"\nstruct "..stname.."\n")
table.insert(outtab,"{")
table.insert(commtab,nil)--"")
table.insert(commtab,nil)--"")
table.insert(commtab,"")
table.insert(commtab,"")
if derived then
table.insert(outtab,"\n "..derived.." _"..derived..";")
table.insert(commtab,nil)--"")
table.insert(commtab,"")
end
--local itlist,itemsin = parseItems(iner, false,locat)
local itlist = itst.childs
@@ -1276,50 +1485,72 @@ function M.Parser()
return ""
end --here we avoid empty structs
for j,it in ipairs(itlist) do
if (it.re_name == "vardef_re" or it.re_name == "functype_re" or it.re_name == "union_re") then
if not (it.re_name == "vardef_re" and it.item:match"static") then --skip static variables
local it2 = it.item --:gsub("<([%w_]+)>","_%1") --templates
--local ttype,template = it.item:match("([^%s,%(%)]+)%s*<(.+)>")
local ttype,template,te,code2 = check_template(it2) --it.item:match"([^%s,%(%)]+)%s*<(.+)>"
if template then
if self.typenames[ttype] ~= template then --rule out T (template typename)
self.templates[ttype] = self.templates[ttype] or {}
self.templates[ttype][template] = te
it2=code2
if (it.re_name == "vardef_re" or it.re_name == "functype_re") then -- or it.re_name == "union_re") then
if not (it.re_name == "vardef_re" and it.item:match"static") then --skip static variables
local it2 = it.item --:gsub("<([%w_]+)>","_%1") --templates
--local ttype,template = it.item:match("([^%s,%(%)]+)%s*<(.+)>")
local ttype,template,te,code2 = check_template(it2) --it.item:match"([^%s,%(%)]+)%s*<(.+)>"
if template then
if self.typenames[ttype] ~= template then --rule out T (template typename)
self.templates[ttype] = self.templates[ttype] or {}
self.templates[ttype][template] = te
it2=code2
end
if doheader then
local templatetypedef = self:gentemplatetypedef(ttype, template,self.templates[ttype][template])
predeclare = predeclare .. templatetypedef
end
end
if doheader then
local templatetypedef = self:gentemplatetypedef(ttype, template,self.templates[ttype][template])
predeclare = predeclare .. templatetypedef
--clean mutable
it2 = it2:gsub("mutable","")
--clean namespaces
it2 = it2:gsub("%w+::","")
--clean initializations
if it.re_name == "vardef_re" then
it2 = it2:gsub("%s*=.+;",";")
it2 = it2:gsub("%b{}","")
end
table.insert(outtab,it2)
table.insert(commtab,{above=it.prevcomments,sameline=it.comments})--it.comments or "")
end
--clean mutable
it2 = it2:gsub("mutable","")
--clean namespaces
it2 = it2:gsub("%w+::","")
--clean initializations
if it.re_name == "vardef_re" then
it2 = it2:gsub("%s*=.+;",";")
end
table.insert(outtab,it2)
table.insert(commtab,it.comments )--or "")
elseif it.re_name == "union_re" then
local com = ""
for _,ch in ipairs(it.childs) do
com = com .. (ch.comments or "")
end
local item = clean_comments(it.item)
table.insert(outtab,item)
com = (com ~= "") and com or nil
table.insert(commtab,{above=it.prevcomments,sameline=com})
elseif it.re_name == "struct_re" then
--print("nested struct in",stname,it.name)
--check if has declaration
local decl = it.item:match"%b{}%s*([^%s}{]+)%s*;"
if decl then
table.insert(outtab,"\n "..it.name.." "..decl..";")
table.insert(commtab,it.comments )--or "")
end
local cleanst,structname,strtab,comstab,predec = self:clean_structR1(it,doheader)
if doheader then
local tst = "\ntypedef struct "..structname.." "..structname..";\n"
if not structname then --unamed nested struct
--print("----generate unamed nested struct----",it.name)
--M.prtable(it)
local nestst = cleanst:gsub(";$"," "..decl..";")
table.insert(outtab,nestst)
table.insert(commtab,{})
else
if decl then
table.insert(outtab,"\n "..it.name.." "..decl..";")
table.insert(commtab,{above=it.prevcomments,sameline=it.comments})--it.comments or "")
end
if doheader then
local tst = "\ntypedef struct "..structname.." "..structname..";\n"
if check_unique_typedefs(tst,uniques) then
--table.insert(outtab,tst)
--print("xxxxxxxxxxxxxxxinsert typedef",structname)
cleanst = cleanst .. tst
end
end
predeclare = predeclare .. predec .. cleanst
end
predeclare = predeclare .. predec .. cleanst
elseif it.re_name == "enum_re" then
--nop
elseif it.re_name ~= "functionD_re" and it.re_name ~= "function_re" then
@@ -1329,6 +1560,9 @@ function M.Parser()
end
--final
table.insert(outtab,"\n};")
if (stname=="" and is_nested) then
stname = nil
end
return table.concat(outtab,""),stname,outtab,commtab, predeclare
end
local function get_parents_name(it)
@@ -1377,8 +1611,18 @@ function M.Parser()
local tdt = self:gentemplatetypedef(ttype,template,te)
it2 = tdt..code2
elseif it2:match"%w+::" then
print("clean namespace typedef",it2)
it2 = it2:gsub("%w+::","")
end
elseif it.re_name == "functypedef_re" then
it2 = clean_functypedef(it2)
else
assert(it.re_name == "vardef_re")
if it2:match"enum" then
print("--skip enum forward declaration:",it2)
it2 = ""
end
end
--table.insert(outtabpre,it2)
table.insert(outtab,it2)
@@ -1424,6 +1668,8 @@ function M.Parser()
if it.parent.re_name == "namespace_re" then
local namespace = it.parent.item:match("namespace%s+(%S+)")
self.embeded_enums[enumname] = namespace.."::"..enumname
else
self.embeded_enums[enumname] = it.parent.name.."::"..enumname
end
end
else --unamed enum just repeat declaration
@@ -1431,7 +1677,7 @@ function M.Parser()
table.insert(outtab,cl_item)
print("unnamed enum",cl_item)
end
elseif it.re_name == "struct_re" or it.re_name == "typedef_st_re" then
elseif it.re_name == "struct_re" or it.re_name == "typedef_st_re" or it.re_name == "class_re" then
local cleanst,structname,strtab,comstab,predec = self:clean_structR1(it,true)
if not structname then print("NO NAME",cleanst,it.item) end
--if not void stname or templated
@@ -1449,15 +1695,17 @@ function M.Parser()
end
end
if it.parent then --and (it.parent.re_name == "struct_re" or it.parent.re_name == "typedef_st_re" then
local embededst = (it.re_name == "struct_re" and it.item:match("struct%s+(%S+)"))
local embededst = (it.re_name == "struct_re" and it.item:match("struct%s+([^%s{]+)"))
or (it.re_name == "typedef_st_re" and it.item:match("%b{}%s*(%S+)%s*;"))
--TODO nesting namespace and class
local parname = get_parents_name(it)
if it.parent.re_name == "struct_re" then
--needed by cimnodes with struct tag name equals member name
self.embeded_structs[embededst] = "struct "..parname..embededst
else
self.embeded_structs[embededst] = parname..embededst
if embededst then --discards false which can happen with untagged structs
local parname = get_parents_name(it)
if it.parent.re_name == "struct_re" then
--needed by cimnodes with struct tag name equals member name
self.embeded_structs[embededst] = "struct "..parname..embededst
else
self.embeded_structs[embededst] = parname..embededst
end
end
end
elseif it.re_name == "namespace_re" or it.re_name == "union_re" or it.re_name == "functype_re" then
@@ -1466,7 +1714,7 @@ function M.Parser()
local stname = ""
local namespace
if it.parent then
if it.parent.re_name == "struct_re" or it.parent.re_name == "typedef_st_re" then
if it.parent.re_name == "struct_re" or it.parent.re_name == "typedef_st_re" or it.parent.re_name == "class_re" then
stname = it.parent.name
elseif it.parent.re_name == "namespace_re" then
namespace = get_parents_nameC(it) --it.parent.name
@@ -1505,6 +1753,11 @@ function M.Parser()
end
-----------
function par:parse_struct_line(line,outtab,comment)
if type(comment)=="string" then
comment = comment ~= "" and comment or nil
else
comment = next(comment) and comment or nil
end
local functype_re = "^%s*[%w%s%*]+%(%*[%w_]+%)%([^%(%)]*%)"
local functype_reex = "^(%s*[%w%s%*]+%(%*)([%w_]+)(%)%([^%(%)]*%))"
line = clean_spaces(line)
@@ -1520,8 +1773,9 @@ function M.Parser()
end
local template_type
for k,v in pairs(self.templates) do
local template_type2 = typen:match(k.."_(.+)")
if template_type2 then
--local template_type2 = typen:match(k.."_(.+)")
local template_type2 = typen:match(k.."_([^%*]+)") --discard * for pointers
if template_type2 then
for k1,k2 in pairs(v) do
if template_type2==k2 then
template_type=k1
@@ -1546,7 +1800,8 @@ function M.Parser()
end
local unnamed_enum_counter = 0
local function enums_for_table(it, outtab, enumsordered)
local enumname = it.item:match"^%s*enum%s+([^%s;{}]+)"
--local enumname = it.item:match"^%s*enum%s+([^%s;{}]+)"
local enumname = it.item:match"^[^;{}]-enum%s+([^%s;{}]+)"
if not enumname then
unnamed_enum_counter = unnamed_enum_counter + 1
enumname = "unnamed"..unnamed_enum_counter
@@ -1557,6 +1812,8 @@ function M.Parser()
print("enumtype",enumtype)
outtab.enumtypes[enumname] = enumtype
end
outtab.enum_comments[enumname] = {sameline=it.comments, above=it.prevcomments}
outtab.enum_comments[enumname] = next(outtab.enum_comments[enumname]) and outtab.enum_comments[enumname] or nil
outtab.enums[enumname] = {}
table.insert(enumsordered,enumname)
local inner = strip_end(it.item:match("%b{}"):sub(2,-2))
@@ -1578,6 +1835,7 @@ function M.Parser()
for j,line in ipairs(enumarr) do
local comment
line, comment = split_comment(line)
comment = comment and comment:gsub("^[^\n%S]*(//.-)$","%1") or nil
assert(line~="")
local name,value = line:match("%s*([%w_]+)%s*=%s*([^,]+)")
if value then
@@ -1605,7 +1863,7 @@ function M.Parser()
par.enums_for_table = enums_for_table
function par:gen_structs_and_enums_table()
print"--------------gen_structs_and_enums_table"
local outtab = {enums={},structs={},locations={},enumtypes={}}
local outtab = {enums={},structs={},locations={},enumtypes={},struct_comments={},enum_comments={}}
self.typedefs_table = {}
local enumsordered = {}
unnamed_enum_counter = 0
@@ -1633,12 +1891,14 @@ function M.Parser()
end
elseif it.re_name == "enum_re" then
enums_for_table(it, outtab, enumsordered)
elseif it.re_name == "struct_re" or it.re_name == "typedef_st_re" then
elseif it.re_name == "struct_re" or it.re_name == "typedef_st_re" or it.re_name == "class_re" then
local cleanst,structname,strtab,comstab = self:clean_structR1(it)
--if not void stname or templated
if not structname then print("NO NAME",cleanst,it.item) end
if structname and not self.typenames[structname] then
outtab.structs[structname] = {}
outtab.struct_comments[structname] = {sameline=it.comments,above=it.prevcomments}
outtab.struct_comments[structname] = next(outtab.struct_comments[structname]) and outtab.struct_comments[structname] or nil
outtab.locations[structname] = it.locat
for j=3,#strtab-1 do
self:parse_struct_line(strtab[j],outtab.structs[structname],comstab[j])
@@ -1709,6 +1969,11 @@ function M.Parser()
end
end
end
--delete comments tables if not desired
if not self.COMMENTS_GENERATION then
outtab.enum_comments = nil
outtab.struct_comments = nil
end
self.structs_and_enums_table = outtab
return outtab
end
@@ -1738,8 +2003,15 @@ function M.Parser()
numoverloaded = numoverloaded + #v
--print(k,#v)
table.insert(strt,string.format("%s\t%d",k,#v))
local typesc,post = name_overloadsAlgo(v)
--M.prtable(v)
local typesc,post,pat = name_overloadsAlgo(v)
-- if k=="igImLerp" then
-- print"----------------------"
-- M.prtable(v)
-- M.prtable(typesc)
-- M.prtable(post)
-- M.prtable(pat)
-- os.exit()
-- end
for i,t in ipairs(v) do
--take overloaded name from manual table or algorythm
t.ov_cimguiname = self.getCname_overload(t.stname,t.funcname,t.signature,t.namespace) or k..typetoStr(post[i])
@@ -2001,7 +2273,7 @@ M.serializeTableF = function(t)
return M.serializeTable("defs",t).."\nreturn defs"
end
--iterates lines from a gcc/clang -E in a specific location
local function location(file,locpathT,defines,COMPILER)
local function location(file,locpathT,defines,COMPILER,keepemptylines)
local define_re = "^#define%s+([^%s]+)%s+(.+)$"
local number_re = "^-?[0-9]+u*$"
local hex_re = "0x[0-9a-fA-F]+u*$"
@@ -2066,7 +2338,7 @@ local function location(file,locpathT,defines,COMPILER)
local loc_num_real = loc_num + loc_num_incr
loc_num_incr = loc_num_incr + 1
--if doprint then print(which_locationold,which_location) end
if line:match("%S") then --nothing on emptyline
if keepemptylines or line:match("%S") then --nothing on emptyline
if (which_locationold~=which_location) or (loc_num_realold and loc_num_realold < loc_num_real) then
--old line complete
--doprint = false
@@ -2153,8 +2425,12 @@ local function func_implementation(FP)
local cimf = FP.defsT[t.cimguiname]
local def = cimf[t.signature]
assert(def)
local custom
if FP.custom_implementation then
custom = FP.custom_implementation(outtab, def)
end
local manual = FP.get_manuals(def)
if not manual and not def.templated and not FP.get_skipped(def) then
if not custom and not manual and not def.templated and not FP.get_skipped(def) then
if def.constructor then
assert(def.stname ~= "","constructor without struct")
local empty = def.args:match("^%(%)") --no args
@@ -2162,6 +2438,12 @@ local function func_implementation(FP)
table.insert(outtab,"{\n")
table.insert(outtab," return IM_NEW("..def.stname..")"..def.call_args..";\n")
table.insert(outtab,"}\n")
if FP.CONSTRUCTORS_GENERATION then
table.insert(outtab,"CIMGUI_API void "..def.ov_cimguiname.."_Construct("..def.stname.."* self"..(empty and "" or ","..def.args:sub(2,-2))..")\n")
table.insert(outtab,"{\n")
table.insert(outtab," IM_PLACEMENT_NEW(self)"..def.stname..def.call_args..";\n")
table.insert(outtab,"}\n")
end
elseif def.destructor then
local args = "("..def.stname.."* self)"
local fname = def.stname.."_destroy"
@@ -2203,7 +2485,8 @@ local function func_header_generate_structs(FP)
table_do_sorted(FP.templates,function(ttype,v)
table_do_sorted(v,function(ttypein,te)
table.insert(outtab,"typedef "..ttype.."<"..ttypein.."> "..ttype.."_"..te..";\n")
local ttype2 = ttype:gsub("::","_") --std::string
table.insert(outtab,"typedef "..ttype.."<"..ttypein.."> "..ttype2.."_"..te..";\n")
end)
end)
return outtab
@@ -2220,14 +2503,21 @@ local function func_header_generate_funcs(FP)
local cimf = FP.defsT[t.cimguiname]
local def = cimf[t.signature]
assert(def,t.signature..t.cimguiname)
local custom
if FP.custom_header then
custom = FP.custom_header(outtab, def)
end
local manual = FP.get_manuals(def)
if not manual and not def.templated and not FP.get_skipped(def) then
if not custom and not manual and not def.templated and not FP.get_skipped(def) then
local addcoment = "" --def.comment or ""
local empty = def.args:match("^%(%)") --no args
if def.constructor then
assert(def.stname ~= "","constructor without struct")
table.insert(outtab,"CIMGUI_API "..def.stname.."* "..def.ov_cimguiname ..(empty and "(void)" or def.args)..";"..addcoment.."\n")
if FP.CONSTRUCTORS_GENERATION then
table.insert(outtab,"CIMGUI_API void "..def.ov_cimguiname.."_Construct("..def.stname.."* self"..(empty and "" or ","..def.args:sub(2,-2))..");\n")
end
elseif def.destructor then
table.insert(outtab,"CIMGUI_API void "..def.ov_cimguiname..def.args..";"..addcoment.."\n")
else --not constructor
@@ -2264,34 +2554,31 @@ end
M.func_header_generate = func_header_generate
--[=[
-- tests
local code = [[
bool BeginPlot(const char* title_id,
const char* x_label, const char* y_label,
const ImVec2& size = ImVec2(-1,0),
ImPlotFlags flags = ImPlotFlags_None,
ImPlotAxisFlags x_flags = ImPlotAxisFlags_None,
ImPlotAxisFlags y_flags = ImPlotAxisFlags_None,
ImPlotAxisFlags y2_flags = ImPlotAxisFlags_AuxDefault,
ImPlotAxisFlags y3_flags = ImPlotAxisFlags_AuxDefault,
const char* y2_label = ((void *)0),
const char* y3_label = ((void *)0)) __attribute__( ( deprecated ) );
]]
local code = [[
int pedro;
//linea1
//linea2
enum coco
{
uno,
dos
};
bool BeginPlot(const char* title_id, const char* x_label, const char* y_label, const ImVec2& size = ImVec2(-1,0), ImPlotFlags flags = ImPlotFlags_None, ImPlotAxisFlags x_flags = ImPlotAxisFlags_None, ImPlotAxisFlags y_flags = ImPlotAxisFlags_None, ImPlotAxisFlags y2_flags = ImPlotAxisFlags_AuxDefault, ImPlotAxisFlags y3_flags = ImPlotAxisFlags_AuxDefault, const char* y2_label = ((void *)0), const char* y3_label = ((void *)0)) __attribute__( ( deprecated ) )
;
]]
local parser = M.Parser()
for line in code:gmatch("[^\n]+") do
--for line in code:gmatch("[^\n]+") do
for line in code:gmatch'(.-)\r?\n' do
--print("inserting",line)
parser:insert(line,"11")
end
parser:do_parse()
M.prtable(parser)
--M.prtable(parser:gen_structs_and_enums_table())
M.prtable(parser:gen_structs_and_enums_table())
--]=]
--print(clean_spaces[[ImVec2 ArcFastVtx[12 * 1];]])
--[=[

View File

@@ -15,10 +15,11 @@ set PATH=%PATH%;C:\anima;C:\mingws\i686-7.2.0-release-posix-dwarf-rt_v5-rev1\min
:: set PATH=%PATH%;C:\luaGL\sources\luajit-master\luajit-master\bin\mingw32;C:\mingw32\bin;
::process files
:: arg[1] compiler name gcc, clang or cl
:: arg[2] options as words in one string: internal for imgui_internal generation, freetype for freetype generation
:: examples: "" "internal" "internal freetype"
:: arg[2] options as words in one string: internal for imgui_internal generation, freetype for freetype generation, comments for comments generation, nochar to skip char* function version, noimstrv to skip imstrv
:: "constructors" adds the _Construct version of constructors
:: examples: "" "internal" "internal freetype comments"
:: arg[3..n] name of implementations to generate and/or CFLAGS (e.g. -DIMGUI_USER_CONFIG or -DIMGUI_USE_WCHAR32)
luajit ./generator.lua gcc "internal" glfw opengl3 opengl2 sdl
luajit ./generator.lua gcc "internal noimstrv" glfw opengl3 opengl2 sdl2 %*
::leave console open
cmd /k

View File

@@ -8,6 +8,10 @@ local script_args = {...}
local COMPILER = script_args[1]
local INTERNAL_GENERATION = script_args[2]:match("internal") and true or false
local FREETYPE_GENERATION = script_args[2]:match("freetype") and true or false
local COMMENTS_GENERATION = script_args[2]:match("comments") and true or false
local CONSTRUCTORS_GENERATION = script_args[2]:match("constructors") and true or false
local NOCHAR = script_args[2]:match("nochar") and true or false
local NOIMSTRV = script_args[2]:match("noimstrv") and true or false
local IMGUI_PATH = os.getenv"IMGUI_PATH" or "../imgui"
local CFLAGS = ""
local CPRE,CTEST
@@ -30,7 +34,7 @@ if FREETYPE_GENERATION then
CFLAGS = CFLAGS .. " -DIMGUI_ENABLE_FREETYPE "
end
if COMPILER == "gcc" or COMPILER == "clang" then
if COMPILER == "gcc" or COMPILER == "clang" or COMPILER == "zig cc" then
CPRE = COMPILER..[[ -E -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ]] .. CFLAGS
CTEST = COMPILER.." --version"
elseif COMPILER == "cl" then
@@ -63,6 +67,8 @@ assert(HAVE_COMPILER,"gcc, clang or cl needed to run script")
print("HAVE_COMPILER",HAVE_COMPILER)
print("INTERNAL_GENERATION",INTERNAL_GENERATION)
print("FREETYPE_GENERATION",FREETYPE_GENERATION)
print("COMMENTS_GENERATION",COMMENTS_GENERATION)
print("CONSTRUCTORS_GENERATION",CONSTRUCTORS_GENERATION)
print("CPRE",CPRE)
--------------------------------------------------------------------------
--this table has the functions to be skipped in generation
@@ -73,6 +79,9 @@ local cimgui_manuals = {
--igColorConvertRGBtoHSV = true,
--igColorConvertHSVtoRGB = true
}
local cimgui_skipped = {
--igShowDemoWindow = true
}
--------------------------------------------------------------------------
--this table is a dictionary to force a naming of function overloading (instead of algorythmic generated)
--first level is cimguiname without postfix, second level is the signature of the function, value is the
@@ -143,16 +152,18 @@ local func_implementation = cpp2ffi.func_implementation
-------------------functions for getting and setting defines
local function get_defines(t)
local compiler_cmd = COMPILER == "cl"
and COMPILER..[[ /TP /nologo /c /Fo"NUL" /I "]]..IMGUI_PATH..[[" print_defines.cpp]]..CFLAGS
and COMPILER..[[ /TP /nologo /c /Fo"NUL" /DIMGUI_DISABLE_OBSOLETE_FUNCTIONS ]]..CFLAGS..[[ /I"]]..IMGUI_PATH..[[" print_defines.cpp]]
or COMPILER..[[ -E -dM -DIMGUI_DISABLE_OBSOLETE_FUNCTIONS -DIMGUI_API="" -DIMGUI_IMPL_API="" ]]..IMGUI_PATH..[[/imgui.h]]..CFLAGS
print(compiler_cmd)
local pipe,err = io.popen(compiler_cmd,"r")
local defines = {}
local compiler_output = {"There were fails in compilation."}
while true do
local line = pipe:read"*l"
if not line then break end
local key,value = line:match([[^#define%s+(%S+)%s*(.*)]])
if not key then --or not value then
table.insert(compiler_output, line)
--print(line)
else
defines[key]=value or ""
@@ -161,7 +172,7 @@ local function get_defines(t)
pipe:close()
--require"anima.utils"
--prtable(defines)
--FLT_MAX
assert(next(defines), table.concat(compiler_output, "\n"))
local ret = {}
for i,v in ipairs(t) do
local aa = defines[v]
@@ -203,52 +214,6 @@ local function DefsByStruct(FP)
FP.defsBystruct = structs
end
-- function for repairing funcdefs default values
local function repair_defaults(defsT,str_and_enu)
local function deleteOuterPars(def)
local w = def:match("^%b()$")
if w then
w = w:gsub("^%((.+)%)$","%1")
return w
else
return def
end
end
local function CleanImU32(def)
def = def:gsub("%(ImU32%)","")
--quitar () de numeros
def = def:gsub("%((%d+)%)","%1")
def = deleteOuterPars(def)
local bb=cpp2ffi.strsplit(def,"|")
for i=1,#bb do
local val = deleteOuterPars(bb[i])
if val:match"<<" then
local v1,v2 = val:match("(%d+)%s*<<%s*(%d+)")
val = v1*2^v2
bb[i] = val
end
assert(type(bb[i])=="number")
end
local res = 0
for i=1,#bb do res = res + bb[i] end
return res
end
for k,defT in pairs(defsT) do
for i,def in ipairs(defT) do
for k,v in pairs(def.defaults) do
--do only if not a c string
local is_cstring = v:sub(1,1)=='"' and v:sub(-1,-1) =='"'
if not is_cstring then
def.defaults[k] = def.defaults[k]:gsub("%(%(void%s*%*%)0%)","NULL")
if def.defaults[k]:match"%(ImU32%)" then
def.defaults[k] = tostring(CleanImU32(def.defaults[k]))
end
end
end
end
end
end
--generate cimgui.cpp cimgui.h
local function cimgui_generation(parser)
@@ -287,8 +252,13 @@ local function cimgui_generation(parser)
if gdefines.IMGUI_HAS_DOCK then
cstructsstr = cstructsstr.."\n#define IMGUI_HAS_DOCK 1\n"
end
if gdefines.ImDrawCallback_ResetRenderState then
cstructsstr = cstructsstr.."\n#define ImDrawCallback_ResetRenderState "..gdefines.ImDrawCallback_ResetRenderState.."\n"
end
if gdefines.IMGUI_HAS_IMSTR then
if not (NOCHAR or NOIMSTRV) then
cstructsstr = cstructsstr.."\n#define IMGUI_HAS_IMSTR 1\n"
end
end
hstrfile = hstrfile:gsub([[#include "imgui_structs%.h"]],cstructsstr)
@@ -311,12 +281,12 @@ end
--------------------------------------------------------
--get imgui.h version and IMGUI_HAS_DOCK--------------------------
--defines for the cl compiler must be present in the print_defines.cpp file
gdefines = get_defines{"IMGUI_VERSION","FLT_MAX","FLT_MIN","IMGUI_HAS_DOCK","IMGUI_HAS_IMSTR"}
gdefines = get_defines{"IMGUI_VERSION","IMGUI_VERSION_NUM","FLT_MAX","FLT_MIN","IMGUI_HAS_DOCK","IMGUI_HAS_IMSTR","ImDrawCallback_ResetRenderState"}
--cpp2ffi.prtable(gdefines)
if gdefines.IMGUI_HAS_DOCK then gdefines.IMGUI_HAS_DOCK = true end
if gdefines.IMGUI_HAS_IMSTR then gdefines.IMGUI_HAS_IMSTR = true end
cimgui_header = cimgui_header:gsub("XXX",gdefines.IMGUI_VERSION)
cimgui_header = cimgui_header:gsub("XXX",gdefines.IMGUI_VERSION .. " "..(gdefines.IMGUI_VERSION_NUM or ""))
if INTERNAL_GENERATION then
cimgui_header = cimgui_header..[[//with imgui_internal.h api
]]
@@ -330,7 +300,10 @@ if gdefines.IMGUI_HAS_DOCK then
]]
end
assert(not NOCHAR or not NOIMSTRV,"nochar and noimstrv cant be set at the same time")
print("IMGUI_HAS_IMSTR",gdefines.IMGUI_HAS_IMSTR)
print("NOCHAR",NOCHAR)
print("NOIMSTRV",NOIMSTRV)
print("IMGUI_HAS_DOCK",gdefines.IMGUI_HAS_DOCK)
print("IMGUI_VERSION",gdefines.IMGUI_VERSION)
@@ -346,9 +319,13 @@ local function parseImGuiHeader(header,names)
end
parser.cname_overloads = cimgui_overloads
parser.manuals = cimgui_manuals
parser.skipped = cimgui_skipped
parser.UDTs = {"ImVec2","ImVec4","ImColor","ImRect"}
--parser.gen_template_typedef = gen_template_typedef --use auto
parser.COMMENTS_GENERATION = COMMENTS_GENERATION
parser.CONSTRUCTORS_GENERATION = CONSTRUCTORS_GENERATION
parser.NOCHAR = NOCHAR
parser.NOIMSTRV = NOIMSTRV
local defines = parser:take_lines(CPRE..header,names,COMPILER)
return parser
@@ -378,6 +355,8 @@ local parser1 = parseImGuiHeader(extra_includes .. [[headers.h]],headersT)
os.remove("headers.h")
parser1:do_parse()
--to debug items parsing
--save_data("./itemsarr2.txt",cpp2ffi.ToStr(parser1.itemsarr))
save_data("./output/overloads.txt",parser1.overloadstxt)
cimgui_generation(parser1)
@@ -394,7 +373,6 @@ save_data("./output/typedefs_dict.lua",serializeTableF(parser1.typedefs_dict))
----------save fundefs in definitions.lua for using in bindings
--DefsByStruct(pFP)
set_defines(parser1.defsT)
repair_defaults(parser1.defsT, structs_and_enums_table)
save_data("./output/definitions.lua",serializeTableF(parser1.defsT))
--check every function has ov_cimguiname
@@ -477,9 +455,9 @@ end
local json = require"json"
save_data("./output/definitions.json",json.encode(json_prepare(parser1.defsT),{dict_on_empty={defaults=true}}))
--delete extra info for json
structs_and_enums_table.templated_structs = nil
structs_and_enums_table.typenames = nil
structs_and_enums_table.templates_done = nil
--structs_and_enums_table.templated_structs = nil
--structs_and_enums_table.typenames = nil
--structs_and_enums_table.templates_done = nil
save_data("./output/structs_and_enums.json",json.encode(structs_and_enums_table))
save_data("./output/typedefs_dict.json",json.encode(parser1.typedefs_dict))
if parser2 then

View File

@@ -1,4 +1,4 @@
#!/usr/bin/sh
#!/bin/bash
# this script must be executed in this directory
# all the output goes to generator/output folder
@@ -13,7 +13,66 @@
#process files
# arg[1] compiler name gcc, clang, or cl
# arg[2] options as words in one string: internal for imgui_internal generation, freetype for freetype generation
# examples: "" "internal" "internal freetype"
# arg[2] options as words in one string: internal for imgui_internal generation, freetype for freetype generation, comments for comments generation, nochar to skip char* function version, noimstrv to skip imstrv
# "constructors" adds the _Construct version of constructors
# examples: "" "internal" "internal freetype" "comments internal"
# arg[3..n] name of implementations to generate and/or CLFLAGS (e.g. -DIMGUI_USER_CONFIG or -DIMGUI_USE_WCHAR32)
luajit ./generator.lua gcc "internal" glfw opengl3 opengl2 sdl
#
# parse command line arguments
# ref: https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash
POSITIONAL_ARGS=()
TARGETS="internal noimstrv"
CFLAGS="glfw opengl3 opengl2 sdl2"
help() {
cat <<EOF
Usage of generator.sh:
-t --target specify which imgui features should be generated
(default: $TARGETS)
-c --cflags specify additional gcc flags
(default: $CFLAGS
-h --help show this message and exit
EOF
}
while [[ $# -gt 0 ]]; do
case $1 in
-c|--cflags)
CFLAGS="$2"
shift # past argument
shift # past value
;;
-t|--target)
TARGETS="$2"
shift # past argument
shift # past value
;;
-h|--help)
help
exit 0
;;
-*|--*)
echo "Unknown option $1"
help
exit 1
;;
*)
POSITIONAL_ARGS+=("$1") # save positional arg
shift # past argument
;;
esac
done
set -- "${POSITIONAL_ARGS[@]}" # restore positional parameters
# if [[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]];
# then
# suffix='.exe'
# fi
echo "CFLAGS: " $CFLAGS
echo "TARGETS: " $TARGETS
luajit$suffix ./generator.lua gcc "$TARGETS" $CFLAGS

View File

@@ -10,6 +10,7 @@ CIMGUI_API void ImGui_ImplGlfw_Shutdown(void);
CIMGUI_API void ImGui_ImplGlfw_NewFrame(void);
CIMGUI_API void ImGui_ImplGlfw_InstallCallbacks(GLFWwindow* window);
CIMGUI_API void ImGui_ImplGlfw_RestoreCallbacks(GLFWwindow* window);
CIMGUI_API void ImGui_ImplGlfw_SetCallbacksChainForAllWindows(bool chain_for_all_windows);
CIMGUI_API void ImGui_ImplGlfw_WindowFocusCallback(GLFWwindow* window,int focused);
CIMGUI_API void ImGui_ImplGlfw_CursorEnterCallback(GLFWwindow* window,int entered);
CIMGUI_API void ImGui_ImplGlfw_CursorPosCallback(GLFWwindow* window,double x,double y);
@@ -18,6 +19,7 @@ CIMGUI_API void ImGui_ImplGlfw_ScrollCallback(GLFWwindow* window,double xoffset,
CIMGUI_API void ImGui_ImplGlfw_KeyCallback(GLFWwindow* window,int key,int scancode,int action,int mods);
CIMGUI_API void ImGui_ImplGlfw_CharCallback(GLFWwindow* window,unsigned int c);
CIMGUI_API void ImGui_ImplGlfw_MonitorCallback(GLFWmonitor* monitor,int event);
CIMGUI_API void ImGui_ImplGlfw_Sleep(int milliseconds);
#endif
#ifdef CIMGUI_USE_OPENGL3
@@ -42,19 +44,24 @@ CIMGUI_API bool ImGui_ImplOpenGL2_CreateDeviceObjects(void);
CIMGUI_API void ImGui_ImplOpenGL2_DestroyDeviceObjects(void);
#endif
#ifdef CIMGUI_USE_SDL
#ifdef CIMGUI_USE_SDL2
typedef struct SDL_Window SDL_Window;
typedef struct SDL_Renderer SDL_Renderer;
typedef struct _SDL_GameController _SDL_GameController;
struct SDL_Window;
struct SDL_Renderer;
typedef union SDL_Event SDL_Event;CIMGUI_API bool ImGui_ImplSDL2_InitForOpenGL(SDL_Window* window,void* sdl_gl_context);
struct _SDL_GameController;
typedef union SDL_Event SDL_Event;
typedef enum { ImGui_ImplSDL2_GamepadMode_AutoFirst, ImGui_ImplSDL2_GamepadMode_AutoAll, ImGui_ImplSDL2_GamepadMode_Manual }ImGui_ImplSDL2_GamepadMode;CIMGUI_API bool ImGui_ImplSDL2_InitForOpenGL(SDL_Window* window,void* sdl_gl_context);
CIMGUI_API bool ImGui_ImplSDL2_InitForVulkan(SDL_Window* window);
CIMGUI_API bool ImGui_ImplSDL2_InitForD3D(SDL_Window* window);
CIMGUI_API bool ImGui_ImplSDL2_InitForMetal(SDL_Window* window);
CIMGUI_API bool ImGui_ImplSDL2_InitForSDLRenderer(SDL_Window* window,SDL_Renderer* renderer);
CIMGUI_API bool ImGui_ImplSDL2_InitForOther(SDL_Window* window);
CIMGUI_API void ImGui_ImplSDL2_Shutdown(void);
CIMGUI_API void ImGui_ImplSDL2_NewFrame(void);
CIMGUI_API bool ImGui_ImplSDL2_ProcessEvent(const SDL_Event* event);
CIMGUI_API void ImGui_ImplSDL2_SetGamepadMode(ImGui_ImplSDL2_GamepadMode mode,struct _SDL_GameController** manual_gamepads_array,int manual_gamepads_count);
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -17,7 +17,7 @@
"cimguiname": "ImGui_ImplGlfw_CharCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_CharCallback",
"location": "imgui_impl_glfw:50",
"location": "imgui_impl_glfw:57",
"ov_cimguiname": "ImGui_ImplGlfw_CharCallback",
"ret": "void",
"signature": "(GLFWwindow*,unsigned int)",
@@ -42,7 +42,7 @@
"cimguiname": "ImGui_ImplGlfw_CursorEnterCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_CursorEnterCallback",
"location": "imgui_impl_glfw:45",
"location": "imgui_impl_glfw:52",
"ov_cimguiname": "ImGui_ImplGlfw_CursorEnterCallback",
"ret": "void",
"signature": "(GLFWwindow*,int)",
@@ -71,7 +71,7 @@
"cimguiname": "ImGui_ImplGlfw_CursorPosCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_CursorPosCallback",
"location": "imgui_impl_glfw:46",
"location": "imgui_impl_glfw:53",
"ov_cimguiname": "ImGui_ImplGlfw_CursorPosCallback",
"ret": "void",
"signature": "(GLFWwindow*,double,double)",
@@ -96,7 +96,7 @@
"cimguiname": "ImGui_ImplGlfw_InitForOpenGL",
"defaults": {},
"funcname": "ImGui_ImplGlfw_InitForOpenGL",
"location": "imgui_impl_glfw:31",
"location": "imgui_impl_glfw:28",
"ov_cimguiname": "ImGui_ImplGlfw_InitForOpenGL",
"ret": "bool",
"signature": "(GLFWwindow*,bool)",
@@ -121,7 +121,7 @@
"cimguiname": "ImGui_ImplGlfw_InitForOther",
"defaults": {},
"funcname": "ImGui_ImplGlfw_InitForOther",
"location": "imgui_impl_glfw:33",
"location": "imgui_impl_glfw:30",
"ov_cimguiname": "ImGui_ImplGlfw_InitForOther",
"ret": "bool",
"signature": "(GLFWwindow*,bool)",
@@ -146,7 +146,7 @@
"cimguiname": "ImGui_ImplGlfw_InitForVulkan",
"defaults": {},
"funcname": "ImGui_ImplGlfw_InitForVulkan",
"location": "imgui_impl_glfw:32",
"location": "imgui_impl_glfw:29",
"ov_cimguiname": "ImGui_ImplGlfw_InitForVulkan",
"ret": "bool",
"signature": "(GLFWwindow*,bool)",
@@ -167,7 +167,7 @@
"cimguiname": "ImGui_ImplGlfw_InstallCallbacks",
"defaults": {},
"funcname": "ImGui_ImplGlfw_InstallCallbacks",
"location": "imgui_impl_glfw:40",
"location": "imgui_impl_glfw:43",
"ov_cimguiname": "ImGui_ImplGlfw_InstallCallbacks",
"ret": "void",
"signature": "(GLFWwindow*)",
@@ -204,7 +204,7 @@
"cimguiname": "ImGui_ImplGlfw_KeyCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_KeyCallback",
"location": "imgui_impl_glfw:49",
"location": "imgui_impl_glfw:56",
"ov_cimguiname": "ImGui_ImplGlfw_KeyCallback",
"ret": "void",
"signature": "(GLFWwindow*,int,int,int,int)",
@@ -229,7 +229,7 @@
"cimguiname": "ImGui_ImplGlfw_MonitorCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_MonitorCallback",
"location": "imgui_impl_glfw:51",
"location": "imgui_impl_glfw:58",
"ov_cimguiname": "ImGui_ImplGlfw_MonitorCallback",
"ret": "void",
"signature": "(GLFWmonitor*,int)",
@@ -262,7 +262,7 @@
"cimguiname": "ImGui_ImplGlfw_MouseButtonCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_MouseButtonCallback",
"location": "imgui_impl_glfw:47",
"location": "imgui_impl_glfw:54",
"ov_cimguiname": "ImGui_ImplGlfw_MouseButtonCallback",
"ret": "void",
"signature": "(GLFWwindow*,int,int,int)",
@@ -278,7 +278,7 @@
"cimguiname": "ImGui_ImplGlfw_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplGlfw_NewFrame",
"location": "imgui_impl_glfw:35",
"location": "imgui_impl_glfw:32",
"ov_cimguiname": "ImGui_ImplGlfw_NewFrame",
"ret": "void",
"signature": "()",
@@ -299,7 +299,7 @@
"cimguiname": "ImGui_ImplGlfw_RestoreCallbacks",
"defaults": {},
"funcname": "ImGui_ImplGlfw_RestoreCallbacks",
"location": "imgui_impl_glfw:41",
"location": "imgui_impl_glfw:44",
"ov_cimguiname": "ImGui_ImplGlfw_RestoreCallbacks",
"ret": "void",
"signature": "(GLFWwindow*)",
@@ -328,13 +328,34 @@
"cimguiname": "ImGui_ImplGlfw_ScrollCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_ScrollCallback",
"location": "imgui_impl_glfw:48",
"location": "imgui_impl_glfw:55",
"ov_cimguiname": "ImGui_ImplGlfw_ScrollCallback",
"ret": "void",
"signature": "(GLFWwindow*,double,double)",
"stname": ""
}
],
"ImGui_ImplGlfw_SetCallbacksChainForAllWindows": [
{
"args": "(bool chain_for_all_windows)",
"argsT": [
{
"name": "chain_for_all_windows",
"type": "bool"
}
],
"argsoriginal": "(bool chain_for_all_windows)",
"call_args": "(chain_for_all_windows)",
"cimguiname": "ImGui_ImplGlfw_SetCallbacksChainForAllWindows",
"defaults": {},
"funcname": "ImGui_ImplGlfw_SetCallbacksChainForAllWindows",
"location": "imgui_impl_glfw:48",
"ov_cimguiname": "ImGui_ImplGlfw_SetCallbacksChainForAllWindows",
"ret": "void",
"signature": "(bool)",
"stname": ""
}
],
"ImGui_ImplGlfw_Shutdown": [
{
"args": "()",
@@ -344,13 +365,34 @@
"cimguiname": "ImGui_ImplGlfw_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplGlfw_Shutdown",
"location": "imgui_impl_glfw:34",
"location": "imgui_impl_glfw:31",
"ov_cimguiname": "ImGui_ImplGlfw_Shutdown",
"ret": "void",
"signature": "()",
"stname": ""
}
],
"ImGui_ImplGlfw_Sleep": [
{
"args": "(int milliseconds)",
"argsT": [
{
"name": "milliseconds",
"type": "int"
}
],
"argsoriginal": "(int milliseconds)",
"call_args": "(milliseconds)",
"cimguiname": "ImGui_ImplGlfw_Sleep",
"defaults": {},
"funcname": "ImGui_ImplGlfw_Sleep",
"location": "imgui_impl_glfw:61",
"ov_cimguiname": "ImGui_ImplGlfw_Sleep",
"ret": "void",
"signature": "(int)",
"stname": ""
}
],
"ImGui_ImplGlfw_WindowFocusCallback": [
{
"args": "(GLFWwindow* window,int focused)",
@@ -369,7 +411,7 @@
"cimguiname": "ImGui_ImplGlfw_WindowFocusCallback",
"defaults": {},
"funcname": "ImGui_ImplGlfw_WindowFocusCallback",
"location": "imgui_impl_glfw:44",
"location": "imgui_impl_glfw:51",
"ov_cimguiname": "ImGui_ImplGlfw_WindowFocusCallback",
"ret": "void",
"signature": "(GLFWwindow*,int)",
@@ -385,7 +427,7 @@
"cimguiname": "ImGui_ImplOpenGL2_CreateDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_CreateDeviceObjects",
"location": "imgui_impl_opengl2:32",
"location": "imgui_impl_opengl2:36",
"ov_cimguiname": "ImGui_ImplOpenGL2_CreateDeviceObjects",
"ret": "bool",
"signature": "()",
@@ -401,7 +443,7 @@
"cimguiname": "ImGui_ImplOpenGL2_CreateFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_CreateFontsTexture",
"location": "imgui_impl_opengl2:30",
"location": "imgui_impl_opengl2:34",
"ov_cimguiname": "ImGui_ImplOpenGL2_CreateFontsTexture",
"ret": "bool",
"signature": "()",
@@ -417,7 +459,7 @@
"cimguiname": "ImGui_ImplOpenGL2_DestroyDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_DestroyDeviceObjects",
"location": "imgui_impl_opengl2:33",
"location": "imgui_impl_opengl2:37",
"ov_cimguiname": "ImGui_ImplOpenGL2_DestroyDeviceObjects",
"ret": "void",
"signature": "()",
@@ -433,7 +475,7 @@
"cimguiname": "ImGui_ImplOpenGL2_DestroyFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_DestroyFontsTexture",
"location": "imgui_impl_opengl2:31",
"location": "imgui_impl_opengl2:35",
"ov_cimguiname": "ImGui_ImplOpenGL2_DestroyFontsTexture",
"ret": "void",
"signature": "()",
@@ -449,7 +491,7 @@
"cimguiname": "ImGui_ImplOpenGL2_Init",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_Init",
"location": "imgui_impl_opengl2:24",
"location": "imgui_impl_opengl2:28",
"ov_cimguiname": "ImGui_ImplOpenGL2_Init",
"ret": "bool",
"signature": "()",
@@ -465,7 +507,7 @@
"cimguiname": "ImGui_ImplOpenGL2_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_NewFrame",
"location": "imgui_impl_opengl2:26",
"location": "imgui_impl_opengl2:30",
"ov_cimguiname": "ImGui_ImplOpenGL2_NewFrame",
"ret": "void",
"signature": "()",
@@ -486,7 +528,7 @@
"cimguiname": "ImGui_ImplOpenGL2_RenderDrawData",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_RenderDrawData",
"location": "imgui_impl_opengl2:27",
"location": "imgui_impl_opengl2:31",
"ov_cimguiname": "ImGui_ImplOpenGL2_RenderDrawData",
"ret": "void",
"signature": "(ImDrawData*)",
@@ -502,7 +544,7 @@
"cimguiname": "ImGui_ImplOpenGL2_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplOpenGL2_Shutdown",
"location": "imgui_impl_opengl2:25",
"location": "imgui_impl_opengl2:29",
"ov_cimguiname": "ImGui_ImplOpenGL2_Shutdown",
"ret": "void",
"signature": "()",
@@ -518,7 +560,7 @@
"cimguiname": "ImGui_ImplOpenGL3_CreateDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_CreateDeviceObjects",
"location": "imgui_impl_opengl3:33",
"location": "imgui_impl_opengl3:41",
"ov_cimguiname": "ImGui_ImplOpenGL3_CreateDeviceObjects",
"ret": "bool",
"signature": "()",
@@ -534,7 +576,7 @@
"cimguiname": "ImGui_ImplOpenGL3_CreateFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_CreateFontsTexture",
"location": "imgui_impl_opengl3:31",
"location": "imgui_impl_opengl3:39",
"ov_cimguiname": "ImGui_ImplOpenGL3_CreateFontsTexture",
"ret": "bool",
"signature": "()",
@@ -550,7 +592,7 @@
"cimguiname": "ImGui_ImplOpenGL3_DestroyDeviceObjects",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_DestroyDeviceObjects",
"location": "imgui_impl_opengl3:34",
"location": "imgui_impl_opengl3:42",
"ov_cimguiname": "ImGui_ImplOpenGL3_DestroyDeviceObjects",
"ret": "void",
"signature": "()",
@@ -566,7 +608,7 @@
"cimguiname": "ImGui_ImplOpenGL3_DestroyFontsTexture",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_DestroyFontsTexture",
"location": "imgui_impl_opengl3:32",
"location": "imgui_impl_opengl3:40",
"ov_cimguiname": "ImGui_ImplOpenGL3_DestroyFontsTexture",
"ret": "void",
"signature": "()",
@@ -582,14 +624,14 @@
"type": "const char*"
}
],
"argsoriginal": "(const char* glsl_version=((void*)0))",
"argsoriginal": "(const char* glsl_version=nullptr)",
"call_args": "(glsl_version)",
"cimguiname": "ImGui_ImplOpenGL3_Init",
"defaults": {
"glsl_version": "((void*)0)"
"glsl_version": "nullptr"
},
"funcname": "ImGui_ImplOpenGL3_Init",
"location": "imgui_impl_opengl3:25",
"location": "imgui_impl_opengl3:33",
"ov_cimguiname": "ImGui_ImplOpenGL3_Init",
"ret": "bool",
"signature": "(const char*)",
@@ -605,7 +647,7 @@
"cimguiname": "ImGui_ImplOpenGL3_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_NewFrame",
"location": "imgui_impl_opengl3:27",
"location": "imgui_impl_opengl3:35",
"ov_cimguiname": "ImGui_ImplOpenGL3_NewFrame",
"ret": "void",
"signature": "()",
@@ -626,7 +668,7 @@
"cimguiname": "ImGui_ImplOpenGL3_RenderDrawData",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_RenderDrawData",
"location": "imgui_impl_opengl3:28",
"location": "imgui_impl_opengl3:36",
"ov_cimguiname": "ImGui_ImplOpenGL3_RenderDrawData",
"ret": "void",
"signature": "(ImDrawData*)",
@@ -642,7 +684,7 @@
"cimguiname": "ImGui_ImplOpenGL3_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplOpenGL3_Shutdown",
"location": "imgui_impl_opengl3:26",
"location": "imgui_impl_opengl3:34",
"ov_cimguiname": "ImGui_ImplOpenGL3_Shutdown",
"ret": "void",
"signature": "()",
@@ -663,7 +705,7 @@
"cimguiname": "ImGui_ImplSDL2_InitForD3D",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForD3D",
"location": "imgui_impl_sdl:29",
"location": "imgui_impl_sdl2:33",
"ov_cimguiname": "ImGui_ImplSDL2_InitForD3D",
"ret": "bool",
"signature": "(SDL_Window*)",
@@ -684,7 +726,7 @@
"cimguiname": "ImGui_ImplSDL2_InitForMetal",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForMetal",
"location": "imgui_impl_sdl:30",
"location": "imgui_impl_sdl2:34",
"ov_cimguiname": "ImGui_ImplSDL2_InitForMetal",
"ret": "bool",
"signature": "(SDL_Window*)",
@@ -709,13 +751,34 @@
"cimguiname": "ImGui_ImplSDL2_InitForOpenGL",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForOpenGL",
"location": "imgui_impl_sdl:27",
"location": "imgui_impl_sdl2:31",
"ov_cimguiname": "ImGui_ImplSDL2_InitForOpenGL",
"ret": "bool",
"signature": "(SDL_Window*,void*)",
"stname": ""
}
],
"ImGui_ImplSDL2_InitForOther": [
{
"args": "(SDL_Window* window)",
"argsT": [
{
"name": "window",
"type": "SDL_Window*"
}
],
"argsoriginal": "(SDL_Window* window)",
"call_args": "(window)",
"cimguiname": "ImGui_ImplSDL2_InitForOther",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForOther",
"location": "imgui_impl_sdl2:36",
"ov_cimguiname": "ImGui_ImplSDL2_InitForOther",
"ret": "bool",
"signature": "(SDL_Window*)",
"stname": ""
}
],
"ImGui_ImplSDL2_InitForSDLRenderer": [
{
"args": "(SDL_Window* window,SDL_Renderer* renderer)",
@@ -734,7 +797,7 @@
"cimguiname": "ImGui_ImplSDL2_InitForSDLRenderer",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForSDLRenderer",
"location": "imgui_impl_sdl:31",
"location": "imgui_impl_sdl2:35",
"ov_cimguiname": "ImGui_ImplSDL2_InitForSDLRenderer",
"ret": "bool",
"signature": "(SDL_Window*,SDL_Renderer*)",
@@ -755,7 +818,7 @@
"cimguiname": "ImGui_ImplSDL2_InitForVulkan",
"defaults": {},
"funcname": "ImGui_ImplSDL2_InitForVulkan",
"location": "imgui_impl_sdl:28",
"location": "imgui_impl_sdl2:32",
"ov_cimguiname": "ImGui_ImplSDL2_InitForVulkan",
"ret": "bool",
"signature": "(SDL_Window*)",
@@ -771,7 +834,7 @@
"cimguiname": "ImGui_ImplSDL2_NewFrame",
"defaults": {},
"funcname": "ImGui_ImplSDL2_NewFrame",
"location": "imgui_impl_sdl:33",
"location": "imgui_impl_sdl2:38",
"ov_cimguiname": "ImGui_ImplSDL2_NewFrame",
"ret": "void",
"signature": "()",
@@ -792,13 +855,45 @@
"cimguiname": "ImGui_ImplSDL2_ProcessEvent",
"defaults": {},
"funcname": "ImGui_ImplSDL2_ProcessEvent",
"location": "imgui_impl_sdl:34",
"location": "imgui_impl_sdl2:39",
"ov_cimguiname": "ImGui_ImplSDL2_ProcessEvent",
"ret": "bool",
"signature": "(const SDL_Event*)",
"stname": ""
}
],
"ImGui_ImplSDL2_SetGamepadMode": [
{
"args": "(ImGui_ImplSDL2_GamepadMode mode,struct _SDL_GameController** manual_gamepads_array,int manual_gamepads_count)",
"argsT": [
{
"name": "mode",
"type": "ImGui_ImplSDL2_GamepadMode"
},
{
"name": "manual_gamepads_array",
"type": "struct _SDL_GameController**"
},
{
"name": "manual_gamepads_count",
"type": "int"
}
],
"argsoriginal": "(ImGui_ImplSDL2_GamepadMode mode,struct _SDL_GameController** manual_gamepads_array=((void*)0),int manual_gamepads_count=-1)",
"call_args": "(mode,manual_gamepads_array,manual_gamepads_count)",
"cimguiname": "ImGui_ImplSDL2_SetGamepadMode",
"defaults": {
"manual_gamepads_array": "NULL",
"manual_gamepads_count": "-1"
},
"funcname": "ImGui_ImplSDL2_SetGamepadMode",
"location": "imgui_impl_sdl2:44",
"ov_cimguiname": "ImGui_ImplSDL2_SetGamepadMode",
"ret": "void",
"signature": "(ImGui_ImplSDL2_GamepadMode,struct _SDL_GameController**,int)",
"stname": ""
}
],
"ImGui_ImplSDL2_Shutdown": [
{
"args": "()",
@@ -808,7 +903,7 @@
"cimguiname": "ImGui_ImplSDL2_Shutdown",
"defaults": {},
"funcname": "ImGui_ImplSDL2_Shutdown",
"location": "imgui_impl_sdl:32",
"location": "imgui_impl_sdl2:37",
"ov_cimguiname": "ImGui_ImplSDL2_Shutdown",
"ret": "void",
"signature": "()",

View File

@@ -14,7 +14,7 @@ defs["ImGui_ImplGlfw_CharCallback"][1]["call_args"] = "(window,c)"
defs["ImGui_ImplGlfw_CharCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_CharCallback"
defs["ImGui_ImplGlfw_CharCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_CharCallback"][1]["funcname"] = "ImGui_ImplGlfw_CharCallback"
defs["ImGui_ImplGlfw_CharCallback"][1]["location"] = "imgui_impl_glfw:50"
defs["ImGui_ImplGlfw_CharCallback"][1]["location"] = "imgui_impl_glfw:57"
defs["ImGui_ImplGlfw_CharCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_CharCallback"
defs["ImGui_ImplGlfw_CharCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_CharCallback"][1]["signature"] = "(GLFWwindow*,unsigned int)"
@@ -35,7 +35,7 @@ defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["call_args"] = "(window,entered)"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_CursorEnterCallback"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["funcname"] = "ImGui_ImplGlfw_CursorEnterCallback"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["location"] = "imgui_impl_glfw:45"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["location"] = "imgui_impl_glfw:52"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_CursorEnterCallback"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_CursorEnterCallback"][1]["signature"] = "(GLFWwindow*,int)"
@@ -59,7 +59,7 @@ defs["ImGui_ImplGlfw_CursorPosCallback"][1]["call_args"] = "(window,x,y)"
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_CursorPosCallback"
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["funcname"] = "ImGui_ImplGlfw_CursorPosCallback"
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["location"] = "imgui_impl_glfw:46"
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["location"] = "imgui_impl_glfw:53"
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_CursorPosCallback"
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_CursorPosCallback"][1]["signature"] = "(GLFWwindow*,double,double)"
@@ -80,7 +80,7 @@ defs["ImGui_ImplGlfw_InitForOpenGL"][1]["call_args"] = "(window,install_callback
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["cimguiname"] = "ImGui_ImplGlfw_InitForOpenGL"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["funcname"] = "ImGui_ImplGlfw_InitForOpenGL"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["location"] = "imgui_impl_glfw:31"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["location"] = "imgui_impl_glfw:28"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_InitForOpenGL"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["ret"] = "bool"
defs["ImGui_ImplGlfw_InitForOpenGL"][1]["signature"] = "(GLFWwindow*,bool)"
@@ -101,7 +101,7 @@ defs["ImGui_ImplGlfw_InitForOther"][1]["call_args"] = "(window,install_callbacks
defs["ImGui_ImplGlfw_InitForOther"][1]["cimguiname"] = "ImGui_ImplGlfw_InitForOther"
defs["ImGui_ImplGlfw_InitForOther"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_InitForOther"][1]["funcname"] = "ImGui_ImplGlfw_InitForOther"
defs["ImGui_ImplGlfw_InitForOther"][1]["location"] = "imgui_impl_glfw:33"
defs["ImGui_ImplGlfw_InitForOther"][1]["location"] = "imgui_impl_glfw:30"
defs["ImGui_ImplGlfw_InitForOther"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_InitForOther"
defs["ImGui_ImplGlfw_InitForOther"][1]["ret"] = "bool"
defs["ImGui_ImplGlfw_InitForOther"][1]["signature"] = "(GLFWwindow*,bool)"
@@ -122,7 +122,7 @@ defs["ImGui_ImplGlfw_InitForVulkan"][1]["call_args"] = "(window,install_callback
defs["ImGui_ImplGlfw_InitForVulkan"][1]["cimguiname"] = "ImGui_ImplGlfw_InitForVulkan"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_InitForVulkan"][1]["funcname"] = "ImGui_ImplGlfw_InitForVulkan"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["location"] = "imgui_impl_glfw:32"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["location"] = "imgui_impl_glfw:29"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_InitForVulkan"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["ret"] = "bool"
defs["ImGui_ImplGlfw_InitForVulkan"][1]["signature"] = "(GLFWwindow*,bool)"
@@ -140,7 +140,7 @@ defs["ImGui_ImplGlfw_InstallCallbacks"][1]["call_args"] = "(window)"
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["cimguiname"] = "ImGui_ImplGlfw_InstallCallbacks"
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["funcname"] = "ImGui_ImplGlfw_InstallCallbacks"
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["location"] = "imgui_impl_glfw:40"
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["location"] = "imgui_impl_glfw:43"
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_InstallCallbacks"
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_InstallCallbacks"][1]["signature"] = "(GLFWwindow*)"
@@ -170,7 +170,7 @@ defs["ImGui_ImplGlfw_KeyCallback"][1]["call_args"] = "(window,key,scancode,actio
defs["ImGui_ImplGlfw_KeyCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_KeyCallback"
defs["ImGui_ImplGlfw_KeyCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_KeyCallback"][1]["funcname"] = "ImGui_ImplGlfw_KeyCallback"
defs["ImGui_ImplGlfw_KeyCallback"][1]["location"] = "imgui_impl_glfw:49"
defs["ImGui_ImplGlfw_KeyCallback"][1]["location"] = "imgui_impl_glfw:56"
defs["ImGui_ImplGlfw_KeyCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_KeyCallback"
defs["ImGui_ImplGlfw_KeyCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_KeyCallback"][1]["signature"] = "(GLFWwindow*,int,int,int,int)"
@@ -191,7 +191,7 @@ defs["ImGui_ImplGlfw_MonitorCallback"][1]["call_args"] = "(monitor,event)"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_MonitorCallback"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_MonitorCallback"][1]["funcname"] = "ImGui_ImplGlfw_MonitorCallback"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["location"] = "imgui_impl_glfw:51"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["location"] = "imgui_impl_glfw:58"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_MonitorCallback"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_MonitorCallback"][1]["signature"] = "(GLFWmonitor*,int)"
@@ -218,7 +218,7 @@ defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["call_args"] = "(window,button,act
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_MouseButtonCallback"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["funcname"] = "ImGui_ImplGlfw_MouseButtonCallback"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["location"] = "imgui_impl_glfw:47"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["location"] = "imgui_impl_glfw:54"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_MouseButtonCallback"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_MouseButtonCallback"][1]["signature"] = "(GLFWwindow*,int,int,int)"
@@ -233,7 +233,7 @@ defs["ImGui_ImplGlfw_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplGlfw_NewFrame"][1]["cimguiname"] = "ImGui_ImplGlfw_NewFrame"
defs["ImGui_ImplGlfw_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_NewFrame"][1]["funcname"] = "ImGui_ImplGlfw_NewFrame"
defs["ImGui_ImplGlfw_NewFrame"][1]["location"] = "imgui_impl_glfw:35"
defs["ImGui_ImplGlfw_NewFrame"][1]["location"] = "imgui_impl_glfw:32"
defs["ImGui_ImplGlfw_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_NewFrame"
defs["ImGui_ImplGlfw_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_NewFrame"][1]["signature"] = "()"
@@ -251,7 +251,7 @@ defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["call_args"] = "(window)"
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["cimguiname"] = "ImGui_ImplGlfw_RestoreCallbacks"
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["funcname"] = "ImGui_ImplGlfw_RestoreCallbacks"
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["location"] = "imgui_impl_glfw:41"
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["location"] = "imgui_impl_glfw:44"
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_RestoreCallbacks"
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_RestoreCallbacks"][1]["signature"] = "(GLFWwindow*)"
@@ -275,12 +275,30 @@ defs["ImGui_ImplGlfw_ScrollCallback"][1]["call_args"] = "(window,xoffset,yoffset
defs["ImGui_ImplGlfw_ScrollCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_ScrollCallback"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_ScrollCallback"][1]["funcname"] = "ImGui_ImplGlfw_ScrollCallback"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["location"] = "imgui_impl_glfw:48"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["location"] = "imgui_impl_glfw:55"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_ScrollCallback"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["signature"] = "(GLFWwindow*,double,double)"
defs["ImGui_ImplGlfw_ScrollCallback"][1]["stname"] = ""
defs["ImGui_ImplGlfw_ScrollCallback"]["(GLFWwindow*,double,double)"] = defs["ImGui_ImplGlfw_ScrollCallback"][1]
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"] = {}
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1] = {}
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["args"] = "(bool chain_for_all_windows)"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["argsT"][1]["name"] = "chain_for_all_windows"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["argsT"][1]["type"] = "bool"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["argsoriginal"] = "(bool chain_for_all_windows)"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["call_args"] = "(chain_for_all_windows)"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["cimguiname"] = "ImGui_ImplGlfw_SetCallbacksChainForAllWindows"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["funcname"] = "ImGui_ImplGlfw_SetCallbacksChainForAllWindows"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["location"] = "imgui_impl_glfw:48"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_SetCallbacksChainForAllWindows"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["signature"] = "(bool)"
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]["stname"] = ""
defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"]["(bool)"] = defs["ImGui_ImplGlfw_SetCallbacksChainForAllWindows"][1]
defs["ImGui_ImplGlfw_Shutdown"] = {}
defs["ImGui_ImplGlfw_Shutdown"][1] = {}
defs["ImGui_ImplGlfw_Shutdown"][1]["args"] = "()"
@@ -290,12 +308,30 @@ defs["ImGui_ImplGlfw_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplGlfw_Shutdown"][1]["cimguiname"] = "ImGui_ImplGlfw_Shutdown"
defs["ImGui_ImplGlfw_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_Shutdown"][1]["funcname"] = "ImGui_ImplGlfw_Shutdown"
defs["ImGui_ImplGlfw_Shutdown"][1]["location"] = "imgui_impl_glfw:34"
defs["ImGui_ImplGlfw_Shutdown"][1]["location"] = "imgui_impl_glfw:31"
defs["ImGui_ImplGlfw_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_Shutdown"
defs["ImGui_ImplGlfw_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_Shutdown"][1]["signature"] = "()"
defs["ImGui_ImplGlfw_Shutdown"][1]["stname"] = ""
defs["ImGui_ImplGlfw_Shutdown"]["()"] = defs["ImGui_ImplGlfw_Shutdown"][1]
defs["ImGui_ImplGlfw_Sleep"] = {}
defs["ImGui_ImplGlfw_Sleep"][1] = {}
defs["ImGui_ImplGlfw_Sleep"][1]["args"] = "(int milliseconds)"
defs["ImGui_ImplGlfw_Sleep"][1]["argsT"] = {}
defs["ImGui_ImplGlfw_Sleep"][1]["argsT"][1] = {}
defs["ImGui_ImplGlfw_Sleep"][1]["argsT"][1]["name"] = "milliseconds"
defs["ImGui_ImplGlfw_Sleep"][1]["argsT"][1]["type"] = "int"
defs["ImGui_ImplGlfw_Sleep"][1]["argsoriginal"] = "(int milliseconds)"
defs["ImGui_ImplGlfw_Sleep"][1]["call_args"] = "(milliseconds)"
defs["ImGui_ImplGlfw_Sleep"][1]["cimguiname"] = "ImGui_ImplGlfw_Sleep"
defs["ImGui_ImplGlfw_Sleep"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_Sleep"][1]["funcname"] = "ImGui_ImplGlfw_Sleep"
defs["ImGui_ImplGlfw_Sleep"][1]["location"] = "imgui_impl_glfw:61"
defs["ImGui_ImplGlfw_Sleep"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_Sleep"
defs["ImGui_ImplGlfw_Sleep"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_Sleep"][1]["signature"] = "(int)"
defs["ImGui_ImplGlfw_Sleep"][1]["stname"] = ""
defs["ImGui_ImplGlfw_Sleep"]["(int)"] = defs["ImGui_ImplGlfw_Sleep"][1]
defs["ImGui_ImplGlfw_WindowFocusCallback"] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["args"] = "(GLFWwindow* window,int focused)"
@@ -311,7 +347,7 @@ defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["call_args"] = "(window,focused)"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["cimguiname"] = "ImGui_ImplGlfw_WindowFocusCallback"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["defaults"] = {}
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["funcname"] = "ImGui_ImplGlfw_WindowFocusCallback"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["location"] = "imgui_impl_glfw:44"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["location"] = "imgui_impl_glfw:51"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["ov_cimguiname"] = "ImGui_ImplGlfw_WindowFocusCallback"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["ret"] = "void"
defs["ImGui_ImplGlfw_WindowFocusCallback"][1]["signature"] = "(GLFWwindow*,int)"
@@ -326,7 +362,7 @@ defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL2_CreateDeviceObjects"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL2_CreateDeviceObjects"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["location"] = "imgui_impl_opengl2:32"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["location"] = "imgui_impl_opengl2:36"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_CreateDeviceObjects"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL2_CreateDeviceObjects"][1]["signature"] = "()"
@@ -341,7 +377,7 @@ defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL2_CreateFontsTexture"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL2_CreateFontsTexture"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["location"] = "imgui_impl_opengl2:30"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["location"] = "imgui_impl_opengl2:34"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_CreateFontsTexture"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL2_CreateFontsTexture"][1]["signature"] = "()"
@@ -356,7 +392,7 @@ defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL2_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL2_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["location"] = "imgui_impl_opengl2:33"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["location"] = "imgui_impl_opengl2:37"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_DestroyDeviceObjects"][1]["signature"] = "()"
@@ -371,7 +407,7 @@ defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL2_DestroyFontsTexture"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL2_DestroyFontsTexture"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["location"] = "imgui_impl_opengl2:31"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["location"] = "imgui_impl_opengl2:35"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_DestroyFontsTexture"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_DestroyFontsTexture"][1]["signature"] = "()"
@@ -386,7 +422,7 @@ defs["ImGui_ImplOpenGL2_Init"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_Init"][1]["cimguiname"] = "ImGui_ImplOpenGL2_Init"
defs["ImGui_ImplOpenGL2_Init"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_Init"][1]["funcname"] = "ImGui_ImplOpenGL2_Init"
defs["ImGui_ImplOpenGL2_Init"][1]["location"] = "imgui_impl_opengl2:24"
defs["ImGui_ImplOpenGL2_Init"][1]["location"] = "imgui_impl_opengl2:28"
defs["ImGui_ImplOpenGL2_Init"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_Init"
defs["ImGui_ImplOpenGL2_Init"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL2_Init"][1]["signature"] = "()"
@@ -401,7 +437,7 @@ defs["ImGui_ImplOpenGL2_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["cimguiname"] = "ImGui_ImplOpenGL2_NewFrame"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_NewFrame"][1]["funcname"] = "ImGui_ImplOpenGL2_NewFrame"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["location"] = "imgui_impl_opengl2:26"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["location"] = "imgui_impl_opengl2:30"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_NewFrame"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_NewFrame"][1]["signature"] = "()"
@@ -419,7 +455,7 @@ defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["call_args"] = "(draw_data)"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["cimguiname"] = "ImGui_ImplOpenGL2_RenderDrawData"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["funcname"] = "ImGui_ImplOpenGL2_RenderDrawData"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["location"] = "imgui_impl_opengl2:27"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["location"] = "imgui_impl_opengl2:31"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_RenderDrawData"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_RenderDrawData"][1]["signature"] = "(ImDrawData*)"
@@ -434,7 +470,7 @@ defs["ImGui_ImplOpenGL2_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["cimguiname"] = "ImGui_ImplOpenGL2_Shutdown"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL2_Shutdown"][1]["funcname"] = "ImGui_ImplOpenGL2_Shutdown"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["location"] = "imgui_impl_opengl2:25"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["location"] = "imgui_impl_opengl2:29"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL2_Shutdown"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL2_Shutdown"][1]["signature"] = "()"
@@ -449,7 +485,7 @@ defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL3_CreateDeviceObjects"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL3_CreateDeviceObjects"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["location"] = "imgui_impl_opengl3:33"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["location"] = "imgui_impl_opengl3:41"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_CreateDeviceObjects"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL3_CreateDeviceObjects"][1]["signature"] = "()"
@@ -464,7 +500,7 @@ defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL3_CreateFontsTexture"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL3_CreateFontsTexture"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["location"] = "imgui_impl_opengl3:31"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["location"] = "imgui_impl_opengl3:39"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_CreateFontsTexture"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL3_CreateFontsTexture"][1]["signature"] = "()"
@@ -479,7 +515,7 @@ defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["cimguiname"] = "ImGui_ImplOpenGL3_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["funcname"] = "ImGui_ImplOpenGL3_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["location"] = "imgui_impl_opengl3:34"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["location"] = "imgui_impl_opengl3:42"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_DestroyDeviceObjects"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_DestroyDeviceObjects"][1]["signature"] = "()"
@@ -494,7 +530,7 @@ defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["cimguiname"] = "ImGui_ImplOpenGL3_DestroyFontsTexture"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["funcname"] = "ImGui_ImplOpenGL3_DestroyFontsTexture"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["location"] = "imgui_impl_opengl3:32"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["location"] = "imgui_impl_opengl3:40"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_DestroyFontsTexture"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_DestroyFontsTexture"][1]["signature"] = "()"
@@ -507,13 +543,13 @@ defs["ImGui_ImplOpenGL3_Init"][1]["argsT"] = {}
defs["ImGui_ImplOpenGL3_Init"][1]["argsT"][1] = {}
defs["ImGui_ImplOpenGL3_Init"][1]["argsT"][1]["name"] = "glsl_version"
defs["ImGui_ImplOpenGL3_Init"][1]["argsT"][1]["type"] = "const char*"
defs["ImGui_ImplOpenGL3_Init"][1]["argsoriginal"] = "(const char* glsl_version=((void*)0))"
defs["ImGui_ImplOpenGL3_Init"][1]["argsoriginal"] = "(const char* glsl_version=nullptr)"
defs["ImGui_ImplOpenGL3_Init"][1]["call_args"] = "(glsl_version)"
defs["ImGui_ImplOpenGL3_Init"][1]["cimguiname"] = "ImGui_ImplOpenGL3_Init"
defs["ImGui_ImplOpenGL3_Init"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_Init"][1]["defaults"]["glsl_version"] = "((void*)0)"
defs["ImGui_ImplOpenGL3_Init"][1]["defaults"]["glsl_version"] = "nullptr"
defs["ImGui_ImplOpenGL3_Init"][1]["funcname"] = "ImGui_ImplOpenGL3_Init"
defs["ImGui_ImplOpenGL3_Init"][1]["location"] = "imgui_impl_opengl3:25"
defs["ImGui_ImplOpenGL3_Init"][1]["location"] = "imgui_impl_opengl3:33"
defs["ImGui_ImplOpenGL3_Init"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_Init"
defs["ImGui_ImplOpenGL3_Init"][1]["ret"] = "bool"
defs["ImGui_ImplOpenGL3_Init"][1]["signature"] = "(const char*)"
@@ -528,7 +564,7 @@ defs["ImGui_ImplOpenGL3_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["cimguiname"] = "ImGui_ImplOpenGL3_NewFrame"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_NewFrame"][1]["funcname"] = "ImGui_ImplOpenGL3_NewFrame"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["location"] = "imgui_impl_opengl3:27"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["location"] = "imgui_impl_opengl3:35"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_NewFrame"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_NewFrame"][1]["signature"] = "()"
@@ -546,7 +582,7 @@ defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["call_args"] = "(draw_data)"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["cimguiname"] = "ImGui_ImplOpenGL3_RenderDrawData"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["funcname"] = "ImGui_ImplOpenGL3_RenderDrawData"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["location"] = "imgui_impl_opengl3:28"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["location"] = "imgui_impl_opengl3:36"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_RenderDrawData"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_RenderDrawData"][1]["signature"] = "(ImDrawData*)"
@@ -561,7 +597,7 @@ defs["ImGui_ImplOpenGL3_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["cimguiname"] = "ImGui_ImplOpenGL3_Shutdown"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplOpenGL3_Shutdown"][1]["funcname"] = "ImGui_ImplOpenGL3_Shutdown"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["location"] = "imgui_impl_opengl3:26"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["location"] = "imgui_impl_opengl3:34"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplOpenGL3_Shutdown"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplOpenGL3_Shutdown"][1]["signature"] = "()"
@@ -579,7 +615,7 @@ defs["ImGui_ImplSDL2_InitForD3D"][1]["call_args"] = "(window)"
defs["ImGui_ImplSDL2_InitForD3D"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForD3D"
defs["ImGui_ImplSDL2_InitForD3D"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForD3D"][1]["funcname"] = "ImGui_ImplSDL2_InitForD3D"
defs["ImGui_ImplSDL2_InitForD3D"][1]["location"] = "imgui_impl_sdl:29"
defs["ImGui_ImplSDL2_InitForD3D"][1]["location"] = "imgui_impl_sdl2:33"
defs["ImGui_ImplSDL2_InitForD3D"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForD3D"
defs["ImGui_ImplSDL2_InitForD3D"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForD3D"][1]["signature"] = "(SDL_Window*)"
@@ -597,7 +633,7 @@ defs["ImGui_ImplSDL2_InitForMetal"][1]["call_args"] = "(window)"
defs["ImGui_ImplSDL2_InitForMetal"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForMetal"
defs["ImGui_ImplSDL2_InitForMetal"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForMetal"][1]["funcname"] = "ImGui_ImplSDL2_InitForMetal"
defs["ImGui_ImplSDL2_InitForMetal"][1]["location"] = "imgui_impl_sdl:30"
defs["ImGui_ImplSDL2_InitForMetal"][1]["location"] = "imgui_impl_sdl2:34"
defs["ImGui_ImplSDL2_InitForMetal"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForMetal"
defs["ImGui_ImplSDL2_InitForMetal"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForMetal"][1]["signature"] = "(SDL_Window*)"
@@ -618,12 +654,30 @@ defs["ImGui_ImplSDL2_InitForOpenGL"][1]["call_args"] = "(window,sdl_gl_context)"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForOpenGL"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["funcname"] = "ImGui_ImplSDL2_InitForOpenGL"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["location"] = "imgui_impl_sdl:27"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["location"] = "imgui_impl_sdl2:31"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForOpenGL"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["signature"] = "(SDL_Window*,void*)"
defs["ImGui_ImplSDL2_InitForOpenGL"][1]["stname"] = ""
defs["ImGui_ImplSDL2_InitForOpenGL"]["(SDL_Window*,void*)"] = defs["ImGui_ImplSDL2_InitForOpenGL"][1]
defs["ImGui_ImplSDL2_InitForOther"] = {}
defs["ImGui_ImplSDL2_InitForOther"][1] = {}
defs["ImGui_ImplSDL2_InitForOther"][1]["args"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForOther"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_InitForOther"][1]["argsT"][1] = {}
defs["ImGui_ImplSDL2_InitForOther"][1]["argsT"][1]["name"] = "window"
defs["ImGui_ImplSDL2_InitForOther"][1]["argsT"][1]["type"] = "SDL_Window*"
defs["ImGui_ImplSDL2_InitForOther"][1]["argsoriginal"] = "(SDL_Window* window)"
defs["ImGui_ImplSDL2_InitForOther"][1]["call_args"] = "(window)"
defs["ImGui_ImplSDL2_InitForOther"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForOther"
defs["ImGui_ImplSDL2_InitForOther"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForOther"][1]["funcname"] = "ImGui_ImplSDL2_InitForOther"
defs["ImGui_ImplSDL2_InitForOther"][1]["location"] = "imgui_impl_sdl2:36"
defs["ImGui_ImplSDL2_InitForOther"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForOther"
defs["ImGui_ImplSDL2_InitForOther"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForOther"][1]["signature"] = "(SDL_Window*)"
defs["ImGui_ImplSDL2_InitForOther"][1]["stname"] = ""
defs["ImGui_ImplSDL2_InitForOther"]["(SDL_Window*)"] = defs["ImGui_ImplSDL2_InitForOther"][1]
defs["ImGui_ImplSDL2_InitForSDLRenderer"] = {}
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1] = {}
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["args"] = "(SDL_Window* window,SDL_Renderer* renderer)"
@@ -639,7 +693,7 @@ defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["call_args"] = "(window,renderer)"
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForSDLRenderer"
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["funcname"] = "ImGui_ImplSDL2_InitForSDLRenderer"
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["location"] = "imgui_impl_sdl:31"
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["location"] = "imgui_impl_sdl2:35"
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForSDLRenderer"
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForSDLRenderer"][1]["signature"] = "(SDL_Window*,SDL_Renderer*)"
@@ -657,7 +711,7 @@ defs["ImGui_ImplSDL2_InitForVulkan"][1]["call_args"] = "(window)"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["cimguiname"] = "ImGui_ImplSDL2_InitForVulkan"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_InitForVulkan"][1]["funcname"] = "ImGui_ImplSDL2_InitForVulkan"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["location"] = "imgui_impl_sdl:28"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["location"] = "imgui_impl_sdl2:32"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_InitForVulkan"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_InitForVulkan"][1]["signature"] = "(SDL_Window*)"
@@ -672,7 +726,7 @@ defs["ImGui_ImplSDL2_NewFrame"][1]["call_args"] = "()"
defs["ImGui_ImplSDL2_NewFrame"][1]["cimguiname"] = "ImGui_ImplSDL2_NewFrame"
defs["ImGui_ImplSDL2_NewFrame"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_NewFrame"][1]["funcname"] = "ImGui_ImplSDL2_NewFrame"
defs["ImGui_ImplSDL2_NewFrame"][1]["location"] = "imgui_impl_sdl:33"
defs["ImGui_ImplSDL2_NewFrame"][1]["location"] = "imgui_impl_sdl2:38"
defs["ImGui_ImplSDL2_NewFrame"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_NewFrame"
defs["ImGui_ImplSDL2_NewFrame"][1]["ret"] = "void"
defs["ImGui_ImplSDL2_NewFrame"][1]["signature"] = "()"
@@ -690,12 +744,38 @@ defs["ImGui_ImplSDL2_ProcessEvent"][1]["call_args"] = "(event)"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["cimguiname"] = "ImGui_ImplSDL2_ProcessEvent"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_ProcessEvent"][1]["funcname"] = "ImGui_ImplSDL2_ProcessEvent"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["location"] = "imgui_impl_sdl:34"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["location"] = "imgui_impl_sdl2:39"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_ProcessEvent"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["ret"] = "bool"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["signature"] = "(const SDL_Event*)"
defs["ImGui_ImplSDL2_ProcessEvent"][1]["stname"] = ""
defs["ImGui_ImplSDL2_ProcessEvent"]["(const SDL_Event*)"] = defs["ImGui_ImplSDL2_ProcessEvent"][1]
defs["ImGui_ImplSDL2_SetGamepadMode"] = {}
defs["ImGui_ImplSDL2_SetGamepadMode"][1] = {}
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["args"] = "(ImGui_ImplSDL2_GamepadMode mode,struct _SDL_GameController** manual_gamepads_array,int manual_gamepads_count)"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"] = {}
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][1] = {}
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][1]["name"] = "mode"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][1]["type"] = "ImGui_ImplSDL2_GamepadMode"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][2] = {}
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][2]["name"] = "manual_gamepads_array"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][2]["type"] = "struct _SDL_GameController**"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][3] = {}
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][3]["name"] = "manual_gamepads_count"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsT"][3]["type"] = "int"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["argsoriginal"] = "(ImGui_ImplSDL2_GamepadMode mode,struct _SDL_GameController** manual_gamepads_array=((void*)0),int manual_gamepads_count=-1)"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["call_args"] = "(mode,manual_gamepads_array,manual_gamepads_count)"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["cimguiname"] = "ImGui_ImplSDL2_SetGamepadMode"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["defaults"]["manual_gamepads_array"] = "NULL"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["defaults"]["manual_gamepads_count"] = "-1"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["funcname"] = "ImGui_ImplSDL2_SetGamepadMode"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["location"] = "imgui_impl_sdl2:44"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_SetGamepadMode"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["ret"] = "void"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["signature"] = "(ImGui_ImplSDL2_GamepadMode,struct _SDL_GameController**,int)"
defs["ImGui_ImplSDL2_SetGamepadMode"][1]["stname"] = ""
defs["ImGui_ImplSDL2_SetGamepadMode"]["(ImGui_ImplSDL2_GamepadMode,struct _SDL_GameController**,int)"] = defs["ImGui_ImplSDL2_SetGamepadMode"][1]
defs["ImGui_ImplSDL2_Shutdown"] = {}
defs["ImGui_ImplSDL2_Shutdown"][1] = {}
defs["ImGui_ImplSDL2_Shutdown"][1]["args"] = "()"
@@ -705,7 +785,7 @@ defs["ImGui_ImplSDL2_Shutdown"][1]["call_args"] = "()"
defs["ImGui_ImplSDL2_Shutdown"][1]["cimguiname"] = "ImGui_ImplSDL2_Shutdown"
defs["ImGui_ImplSDL2_Shutdown"][1]["defaults"] = {}
defs["ImGui_ImplSDL2_Shutdown"][1]["funcname"] = "ImGui_ImplSDL2_Shutdown"
defs["ImGui_ImplSDL2_Shutdown"][1]["location"] = "imgui_impl_sdl:32"
defs["ImGui_ImplSDL2_Shutdown"][1]["location"] = "imgui_impl_sdl2:37"
defs["ImGui_ImplSDL2_Shutdown"][1]["ov_cimguiname"] = "ImGui_ImplSDL2_Shutdown"
defs["ImGui_ImplSDL2_Shutdown"][1]["ret"] = "void"
defs["ImGui_ImplSDL2_Shutdown"][1]["signature"] = "()"

View File

@@ -65,7 +65,7 @@ ImVec2_ImVec2 2
ImVec2ih_ImVec2ih 3
1 nil ImVec2ih_ImVec2ih_Nil ()
2 nil ImVec2ih_ImVec2ih_short (short,short)
3 ImVec2ih_ImVec2ih_Vec2 (const ImVec2)
3 nil ImVec2ih_ImVec2ih_Vec2 (const ImVec2)
ImVec4_ImVec4 2
1 nil ImVec4_ImVec4_Nil ()
2 nil ImVec4_ImVec4_Float (float,float,float,float)
@@ -94,8 +94,8 @@ ImVector_resize 2
1 void ImVector_resize_Nil (int)
2 void ImVector_resize_T (int,const T)
igBeginChild 2
1 bool igBeginChild_Str (const char*,const ImVec2,bool,ImGuiWindowFlags)
2 bool igBeginChild_ID (ImGuiID,const ImVec2,bool,ImGuiWindowFlags)
1 bool igBeginChild_Str (const char*,const ImVec2,ImGuiChildFlags,ImGuiWindowFlags)
2 bool igBeginChild_ID (ImGuiID,const ImVec2,ImGuiChildFlags,ImGuiWindowFlags)
igCheckboxFlags 4
1 bool igCheckboxFlags_IntPtr (const char*,int*,int)
2 bool igCheckboxFlags_UintPtr (const char*,unsigned int*,unsigned int)
@@ -107,22 +107,29 @@ igCollapsingHeader 2
igCombo 3
1 bool igCombo_Str_arr (const char*,int*,const char* const[],int,int)
2 bool igCombo_Str (const char*,int*,const char*,int)
3 bool igCombo_FnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
3 bool igCombo_FnStrPtr (const char*,int*,const char*(*)(void*,int),void*,int,int)
igGetBackgroundDrawList 2
1 ImDrawList* igGetBackgroundDrawList_Nil ()
2 ImDrawList* igGetBackgroundDrawList_ViewportPtr (ImGuiViewport*)
igGetColorU32 3
1 ImU32 igGetColorU32_Col (ImGuiCol,float)
2 ImU32 igGetColorU32_Vec4 (const ImVec4)
3 ImU32 igGetColorU32_U32 (ImU32)
3 ImU32 igGetColorU32_U32 (ImU32,float)
igGetForegroundDrawList 3
1 ImDrawList* igGetForegroundDrawList_Nil ()
2 ImDrawList* igGetForegroundDrawList_ViewportPtr (ImGuiViewport*)
3 ImDrawList* igGetForegroundDrawList_WindowPtr (ImGuiWindow*)
igGetID 3
2 ImDrawList* igGetForegroundDrawList_WindowPtr (ImGuiWindow*)
3 ImDrawList* igGetForegroundDrawList_ViewportPtr (ImGuiViewport*)
igGetID 4
1 ImGuiID igGetID_Str (const char*)
2 ImGuiID igGetID_StrStr (const char*,const char*)
3 ImGuiID igGetID_Ptr (const void*)
4 ImGuiID igGetID_Int (int)
igGetIDWithSeed 2
1 ImGuiID igGetIDWithSeed_Str (const char*,const char*,ImGuiID)
2 ImGuiID igGetIDWithSeed_Int (int,ImGuiID)
igGetKeyData 2
1 ImGuiKeyData* igGetKeyData_ContextPtr (ImGuiContext*,ImGuiKey)
2 ImGuiKeyData* igGetKeyData_Key (ImGuiKey)
igImAbs 3
1 int igImAbs_Int (int)
2 float igImAbs_Float (float)
@@ -130,9 +137,6 @@ igImAbs 3
igImFloor 2
1 float igImFloor_Float (float)
2 ImVec2 igImFloor_Vec2 (const ImVec2)
igImFloorSigned 2
1 float igImFloorSigned_Float (float)
2 ImVec2 igImFloorSigned_Vec2 (const ImVec2)
igImIsPowerOfTwo 2
1 bool igImIsPowerOfTwo_Int (int)
2 bool igImIsPowerOfTwo_U64 (ImU64)
@@ -155,6 +159,33 @@ igImRsqrt 2
igImSign 2
1 float igImSign_Float (float)
2 double igImSign_double (double)
igImTrunc 2
1 float igImTrunc_Float (float)
2 ImVec2 igImTrunc_Vec2 (const ImVec2)
igIsKeyChordPressed 2
1 bool igIsKeyChordPressed_Nil (ImGuiKeyChord)
2 bool igIsKeyChordPressed_InputFlags (ImGuiKeyChord,ImGuiInputFlags,ImGuiID)
igIsKeyDown 2
1 bool igIsKeyDown_Nil (ImGuiKey)
2 bool igIsKeyDown_ID (ImGuiKey,ImGuiID)
igIsKeyPressed 2
1 bool igIsKeyPressed_Bool (ImGuiKey,bool)
2 bool igIsKeyPressed_InputFlags (ImGuiKey,ImGuiInputFlags,ImGuiID)
igIsKeyReleased 2
1 bool igIsKeyReleased_Nil (ImGuiKey)
2 bool igIsKeyReleased_ID (ImGuiKey,ImGuiID)
igIsMouseClicked 2
1 bool igIsMouseClicked_Bool (ImGuiMouseButton,bool)
2 bool igIsMouseClicked_InputFlags (ImGuiMouseButton,ImGuiInputFlags,ImGuiID)
igIsMouseDoubleClicked 2
1 bool igIsMouseDoubleClicked_Nil (ImGuiMouseButton)
2 bool igIsMouseDoubleClicked_ID (ImGuiMouseButton,ImGuiID)
igIsMouseDown 2
1 bool igIsMouseDown_Nil (ImGuiMouseButton)
2 bool igIsMouseDown_ID (ImGuiMouseButton,ImGuiID)
igIsMouseReleased 2
1 bool igIsMouseReleased_Nil (ImGuiMouseButton)
2 bool igIsMouseReleased_ID (ImGuiMouseButton,ImGuiID)
igIsPopupOpen 2
1 bool igIsPopupOpen_Str (const char*,ImGuiPopupFlags)
2 bool igIsPopupOpen_ID (ImGuiID,ImGuiPopupFlags)
@@ -166,7 +197,7 @@ igItemSize 2
2 void igItemSize_Rect (const ImRect,float)
igListBox 2
1 bool igListBox_Str_arr (const char*,int*,const char* const[],int,int)
2 bool igListBox_FnBoolPtr (const char*,int*,bool(*)(void*,int,const char**),void*,int,int)
2 bool igListBox_FnStrPtr (const char*,int*,const char*(*)(void*,int),void*,int,int)
igMarkIniSettingsDirty 2
1 void igMarkIniSettingsDirty_Nil ()
2 void igMarkIniSettingsDirty_WindowPtr (ImGuiWindow*)
@@ -199,6 +230,9 @@ igRadioButton 2
igSelectable 2
1 bool igSelectable_Bool (const char*,bool,ImGuiSelectableFlags,const ImVec2)
2 bool igSelectable_BoolPtr (const char*,bool*,ImGuiSelectableFlags,const ImVec2)
igSetItemKeyOwner 2
1 void igSetItemKeyOwner_Nil (ImGuiKey)
2 void igSetItemKeyOwner_InputFlags (ImGuiKey,ImGuiInputFlags)
igSetScrollFromPosX 2
1 void igSetScrollFromPosX_Float (float,float)
2 void igSetScrollFromPosX_WindowPtr (ImGuiWindow*,float,float)
@@ -226,6 +260,12 @@ igSetWindowSize 3
1 void igSetWindowSize_Vec2 (const ImVec2,ImGuiCond)
2 void igSetWindowSize_Str (const char*,const ImVec2,ImGuiCond)
3 void igSetWindowSize_WindowPtr (ImGuiWindow*,const ImVec2,ImGuiCond)
igShortcut 2
1 bool igShortcut_Nil (ImGuiKeyChord,ImGuiInputFlags)
2 bool igShortcut_ID (ImGuiKeyChord,ImGuiInputFlags,ImGuiID)
igTabItemCalcSize 2
1 ImVec2 igTabItemCalcSize_Str (const char*,bool)
2 ImVec2 igTabItemCalcSize_WindowPtr (ImGuiWindow*)
igTableGcCompactTransientBuffers 2
1 void igTableGcCompactTransientBuffers_TablePtr (ImGuiTable*)
2 void igTableGcCompactTransientBuffers_TableTempDataPtr (ImGuiTableTempData*)
@@ -254,4 +294,4 @@ igValue 4
2 void igValue_Int (const char*,int)
3 void igValue_Uint (const char*,unsigned int)
4 void igValue_Float (const char*,float,const char*)
179 overloaded
206 overloaded

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,6 @@
{
"ImBitArrayForNamedKeys": "ImBitArray<ImGuiKey_NamedKey_COUNT,-ImGuiKey_NamedKey_BEGIN>",
"ImBitArrayPtr": "ImU32*",
"ImBitVector": "struct ImBitVector",
"ImColor": "struct ImColor",
"ImDrawCallback": "void(*)(const ImDrawList* parent_list,const ImDrawCmd* cmd);",
@@ -26,7 +27,9 @@
"ImFontGlyphRangesBuilder": "struct ImFontGlyphRangesBuilder",
"ImGuiActivateFlags": "int",
"ImGuiBackendFlags": "int",
"ImGuiBoxSelectState": "struct ImGuiBoxSelectState",
"ImGuiButtonFlags": "int",
"ImGuiChildFlags": "int",
"ImGuiCol": "int",
"ImGuiColorEditFlags": "int",
"ImGuiColorMod": "struct ImGuiColorMod",
@@ -37,55 +40,62 @@
"ImGuiContext": "struct ImGuiContext",
"ImGuiContextHook": "struct ImGuiContextHook",
"ImGuiContextHookCallback": "void(*)(ImGuiContext* ctx,ImGuiContextHook* hook);",
"ImGuiDataAuthority": "int",
"ImGuiDataType": "int",
"ImGuiDataTypeInfo": "struct ImGuiDataTypeInfo",
"ImGuiDataTypeTempStorage": "struct ImGuiDataTypeTempStorage",
"ImGuiDataTypeStorage": "struct ImGuiDataTypeStorage",
"ImGuiDataVarInfo": "struct ImGuiDataVarInfo",
"ImGuiDebugAllocEntry": "struct ImGuiDebugAllocEntry",
"ImGuiDebugAllocInfo": "struct ImGuiDebugAllocInfo",
"ImGuiDebugLogFlags": "int",
"ImGuiDir": "int",
"ImGuiDockContext": "struct ImGuiDockContext",
"ImGuiDockNode": "struct ImGuiDockNode",
"ImGuiDockNodeFlags": "int",
"ImGuiDockNodeSettings": "struct ImGuiDockNodeSettings",
"ImGuiDockRequest": "struct ImGuiDockRequest",
"ImGuiDragDropFlags": "int",
"ImGuiErrorLogCallback": "void(*)(void* user_data,const char* fmt,...);",
"ImGuiFocusRequestFlags": "int",
"ImGuiFocusScopeData": "struct ImGuiFocusScopeData",
"ImGuiFocusedFlags": "int",
"ImGuiGroupData": "struct ImGuiGroupData",
"ImGuiHoveredFlags": "int",
"ImGuiID": "unsigned int",
"ImGuiIDStackTool": "struct ImGuiIDStackTool",
"ImGuiIO": "struct ImGuiIO",
"ImGuiInputEvent": "struct ImGuiInputEvent",
"ImGuiInputEventAppFocused": "struct ImGuiInputEventAppFocused",
"ImGuiInputEventKey": "struct ImGuiInputEventKey",
"ImGuiInputEventMouseButton": "struct ImGuiInputEventMouseButton",
"ImGuiInputEventMousePos": "struct ImGuiInputEventMousePos",
"ImGuiInputEventMouseViewport": "struct ImGuiInputEventMouseViewport",
"ImGuiInputEventMouseWheel": "struct ImGuiInputEventMouseWheel",
"ImGuiInputEventText": "struct ImGuiInputEventText",
"ImGuiInputFlags": "int",
"ImGuiInputTextCallback": "int(*)(ImGuiInputTextCallbackData* data);",
"ImGuiInputTextCallbackData": "struct ImGuiInputTextCallbackData",
"ImGuiInputTextDeactivateData": "struct ImGuiInputTextDeactivateData",
"ImGuiInputTextDeactivatedState": "struct ImGuiInputTextDeactivatedState",
"ImGuiInputTextFlags": "int",
"ImGuiInputTextState": "struct ImGuiInputTextState",
"ImGuiItemFlags": "int",
"ImGuiItemStatusFlags": "int",
"ImGuiKey": "int",
"ImGuiKeyChord": "int",
"ImGuiKeyData": "struct ImGuiKeyData",
"ImGuiKeyOwnerData": "struct ImGuiKeyOwnerData",
"ImGuiKeyRoutingData": "struct ImGuiKeyRoutingData",
"ImGuiKeyRoutingIndex": "ImS16",
"ImGuiKeyRoutingTable": "struct ImGuiKeyRoutingTable",
"ImGuiLastItemData": "struct ImGuiLastItemData",
"ImGuiLayoutType": "int",
"ImGuiListClipper": "struct ImGuiListClipper",
"ImGuiListClipperData": "struct ImGuiListClipperData",
"ImGuiListClipperRange": "struct ImGuiListClipperRange",
"ImGuiLocEntry": "struct ImGuiLocEntry",
"ImGuiMemAllocFunc": "void*(*)(size_t sz,void* user_data);",
"ImGuiMemFreeFunc": "void(*)(void* ptr,void* user_data);",
"ImGuiMenuColumns": "struct ImGuiMenuColumns",
"ImGuiMetricsConfig": "struct ImGuiMetricsConfig",
"ImGuiModFlags": "int",
"ImGuiMouseButton": "int",
"ImGuiMouseCursor": "int",
"ImGuiNavDirSourceFlags": "int",
"ImGuiMultiSelectFlags": "int",
"ImGuiMultiSelectIO": "struct ImGuiMultiSelectIO",
"ImGuiMultiSelectState": "struct ImGuiMultiSelectState",
"ImGuiMultiSelectTempData": "struct ImGuiMultiSelectTempData",
"ImGuiNavHighlightFlags": "int",
"ImGuiNavInput": "int",
"ImGuiNavItemData": "struct ImGuiNavItemData",
"ImGuiNavMoveFlags": "int",
"ImGuiNextItemData": "struct ImGuiNextItemData",
@@ -99,22 +109,23 @@
"ImGuiPayload": "struct ImGuiPayload",
"ImGuiPlatformIO": "struct ImGuiPlatformIO",
"ImGuiPlatformImeData": "struct ImGuiPlatformImeData",
"ImGuiPlatformMonitor": "struct ImGuiPlatformMonitor",
"ImGuiPopupData": "struct ImGuiPopupData",
"ImGuiPopupFlags": "int",
"ImGuiPtrOrIndex": "struct ImGuiPtrOrIndex",
"ImGuiScrollFlags": "int",
"ImGuiSelectableFlags": "int",
"ImGuiSelectionBasicStorage": "struct ImGuiSelectionBasicStorage",
"ImGuiSelectionExternalStorage": "struct ImGuiSelectionExternalStorage",
"ImGuiSelectionRequest": "struct ImGuiSelectionRequest",
"ImGuiSelectionUserData": "ImS64",
"ImGuiSeparatorFlags": "int",
"ImGuiSettingsHandler": "struct ImGuiSettingsHandler",
"ImGuiShrinkWidthItem": "struct ImGuiShrinkWidthItem",
"ImGuiSizeCallback": "void(*)(ImGuiSizeCallbackData* data);",
"ImGuiSizeCallbackData": "struct ImGuiSizeCallbackData",
"ImGuiSliderFlags": "int",
"ImGuiSortDirection": "int",
"ImGuiStackLevelInfo": "struct ImGuiStackLevelInfo",
"ImGuiStackSizes": "struct ImGuiStackSizes",
"ImGuiStackTool": "struct ImGuiStackTool",
"ImGuiStorage": "struct ImGuiStorage",
"ImGuiStoragePair": "struct ImGuiStoragePair",
"ImGuiStyle": "struct ImGuiStyle",
@@ -129,12 +140,13 @@
"ImGuiTableCellData": "struct ImGuiTableCellData",
"ImGuiTableColumn": "struct ImGuiTableColumn",
"ImGuiTableColumnFlags": "int",
"ImGuiTableColumnIdx": "ImS8",
"ImGuiTableColumnIdx": "ImS16",
"ImGuiTableColumnSettings": "struct ImGuiTableColumnSettings",
"ImGuiTableColumnSortSpecs": "struct ImGuiTableColumnSortSpecs",
"ImGuiTableColumnsSettings": "struct ImGuiTableColumnsSettings",
"ImGuiTableDrawChannelIdx": "ImU8",
"ImGuiTableDrawChannelIdx": "ImU16",
"ImGuiTableFlags": "int",
"ImGuiTableHeaderData": "struct ImGuiTableHeaderData",
"ImGuiTableInstanceData": "struct ImGuiTableInstanceData",
"ImGuiTableRowFlags": "int",
"ImGuiTableSettings": "struct ImGuiTableSettings",
@@ -143,16 +155,20 @@
"ImGuiTextBuffer": "struct ImGuiTextBuffer",
"ImGuiTextFilter": "struct ImGuiTextFilter",
"ImGuiTextFlags": "int",
"ImGuiTextIndex": "struct ImGuiTextIndex",
"ImGuiTextRange": "struct ImGuiTextRange",
"ImGuiTooltipFlags": "int",
"ImGuiTreeNodeFlags": "int",
"ImGuiTreeNodeStackData": "struct ImGuiTreeNodeStackData",
"ImGuiTypingSelectFlags": "int",
"ImGuiTypingSelectRequest": "struct ImGuiTypingSelectRequest",
"ImGuiTypingSelectState": "struct ImGuiTypingSelectState",
"ImGuiViewport": "struct ImGuiViewport",
"ImGuiViewportFlags": "int",
"ImGuiViewportP": "struct ImGuiViewportP",
"ImGuiWindow": "struct ImGuiWindow",
"ImGuiWindowClass": "struct ImGuiWindowClass",
"ImGuiWindowDockStyle": "struct ImGuiWindowDockStyle",
"ImGuiWindowFlags": "int",
"ImGuiWindowRefreshFlags": "int",
"ImGuiWindowSettings": "struct ImGuiWindowSettings",
"ImGuiWindowStackData": "struct ImGuiWindowStackData",
"ImGuiWindowTempData": "struct ImGuiWindowTempData",
@@ -162,6 +178,7 @@
"ImS32": "signed int",
"ImS64": "signed long long",
"ImS8": "signed char",
"ImStbTexteditState": "ImStb::STB_TexteditState",
"ImTextureID": "void*",
"ImU16": "unsigned short",
"ImU32": "unsigned int",
@@ -175,9 +192,6 @@
"ImWchar16": "unsigned short",
"ImWchar32": "unsigned int",
"STB_TexteditState": "struct STB_TexteditState",
"StbTexteditRow": "struct StbTexteditRow",
"StbUndoRecord": "struct StbUndoRecord",
"StbUndoState": "struct StbUndoState",
"const_iterator": "const value_type*",
"iterator": "value_type*",
"value_type": "T"

View File

@@ -1,5 +1,6 @@
local defs = {}
defs["ImBitArrayForNamedKeys"] = "ImBitArray<ImGuiKey_NamedKey_COUNT,-ImGuiKey_NamedKey_BEGIN>"
defs["ImBitArrayPtr"] = "ImU32*"
defs["ImBitVector"] = "struct ImBitVector"
defs["ImColor"] = "struct ImColor"
defs["ImDrawCallback"] = "void(*)(const ImDrawList* parent_list,const ImDrawCmd* cmd);"
@@ -26,7 +27,9 @@ defs["ImFontGlyph"] = "struct ImFontGlyph"
defs["ImFontGlyphRangesBuilder"] = "struct ImFontGlyphRangesBuilder"
defs["ImGuiActivateFlags"] = "int"
defs["ImGuiBackendFlags"] = "int"
defs["ImGuiBoxSelectState"] = "struct ImGuiBoxSelectState"
defs["ImGuiButtonFlags"] = "int"
defs["ImGuiChildFlags"] = "int"
defs["ImGuiCol"] = "int"
defs["ImGuiColorEditFlags"] = "int"
defs["ImGuiColorMod"] = "struct ImGuiColorMod"
@@ -37,55 +40,62 @@ defs["ImGuiConfigFlags"] = "int"
defs["ImGuiContext"] = "struct ImGuiContext"
defs["ImGuiContextHook"] = "struct ImGuiContextHook"
defs["ImGuiContextHookCallback"] = "void(*)(ImGuiContext* ctx,ImGuiContextHook* hook);"
defs["ImGuiDataAuthority"] = "int"
defs["ImGuiDataType"] = "int"
defs["ImGuiDataTypeInfo"] = "struct ImGuiDataTypeInfo"
defs["ImGuiDataTypeTempStorage"] = "struct ImGuiDataTypeTempStorage"
defs["ImGuiDataTypeStorage"] = "struct ImGuiDataTypeStorage"
defs["ImGuiDataVarInfo"] = "struct ImGuiDataVarInfo"
defs["ImGuiDebugAllocEntry"] = "struct ImGuiDebugAllocEntry"
defs["ImGuiDebugAllocInfo"] = "struct ImGuiDebugAllocInfo"
defs["ImGuiDebugLogFlags"] = "int"
defs["ImGuiDir"] = "int"
defs["ImGuiDockContext"] = "struct ImGuiDockContext"
defs["ImGuiDockNode"] = "struct ImGuiDockNode"
defs["ImGuiDockNodeFlags"] = "int"
defs["ImGuiDockNodeSettings"] = "struct ImGuiDockNodeSettings"
defs["ImGuiDockRequest"] = "struct ImGuiDockRequest"
defs["ImGuiDragDropFlags"] = "int"
defs["ImGuiErrorLogCallback"] = "void(*)(void* user_data,const char* fmt,...);"
defs["ImGuiFocusRequestFlags"] = "int"
defs["ImGuiFocusScopeData"] = "struct ImGuiFocusScopeData"
defs["ImGuiFocusedFlags"] = "int"
defs["ImGuiGroupData"] = "struct ImGuiGroupData"
defs["ImGuiHoveredFlags"] = "int"
defs["ImGuiID"] = "unsigned int"
defs["ImGuiIDStackTool"] = "struct ImGuiIDStackTool"
defs["ImGuiIO"] = "struct ImGuiIO"
defs["ImGuiInputEvent"] = "struct ImGuiInputEvent"
defs["ImGuiInputEventAppFocused"] = "struct ImGuiInputEventAppFocused"
defs["ImGuiInputEventKey"] = "struct ImGuiInputEventKey"
defs["ImGuiInputEventMouseButton"] = "struct ImGuiInputEventMouseButton"
defs["ImGuiInputEventMousePos"] = "struct ImGuiInputEventMousePos"
defs["ImGuiInputEventMouseViewport"] = "struct ImGuiInputEventMouseViewport"
defs["ImGuiInputEventMouseWheel"] = "struct ImGuiInputEventMouseWheel"
defs["ImGuiInputEventText"] = "struct ImGuiInputEventText"
defs["ImGuiInputFlags"] = "int"
defs["ImGuiInputTextCallback"] = "int(*)(ImGuiInputTextCallbackData* data);"
defs["ImGuiInputTextCallbackData"] = "struct ImGuiInputTextCallbackData"
defs["ImGuiInputTextDeactivateData"] = "struct ImGuiInputTextDeactivateData"
defs["ImGuiInputTextDeactivatedState"] = "struct ImGuiInputTextDeactivatedState"
defs["ImGuiInputTextFlags"] = "int"
defs["ImGuiInputTextState"] = "struct ImGuiInputTextState"
defs["ImGuiItemFlags"] = "int"
defs["ImGuiItemStatusFlags"] = "int"
defs["ImGuiKey"] = "int"
defs["ImGuiKeyChord"] = "int"
defs["ImGuiKeyData"] = "struct ImGuiKeyData"
defs["ImGuiKeyOwnerData"] = "struct ImGuiKeyOwnerData"
defs["ImGuiKeyRoutingData"] = "struct ImGuiKeyRoutingData"
defs["ImGuiKeyRoutingIndex"] = "ImS16"
defs["ImGuiKeyRoutingTable"] = "struct ImGuiKeyRoutingTable"
defs["ImGuiLastItemData"] = "struct ImGuiLastItemData"
defs["ImGuiLayoutType"] = "int"
defs["ImGuiListClipper"] = "struct ImGuiListClipper"
defs["ImGuiListClipperData"] = "struct ImGuiListClipperData"
defs["ImGuiListClipperRange"] = "struct ImGuiListClipperRange"
defs["ImGuiLocEntry"] = "struct ImGuiLocEntry"
defs["ImGuiMemAllocFunc"] = "void*(*)(size_t sz,void* user_data);"
defs["ImGuiMemFreeFunc"] = "void(*)(void* ptr,void* user_data);"
defs["ImGuiMenuColumns"] = "struct ImGuiMenuColumns"
defs["ImGuiMetricsConfig"] = "struct ImGuiMetricsConfig"
defs["ImGuiModFlags"] = "int"
defs["ImGuiMouseButton"] = "int"
defs["ImGuiMouseCursor"] = "int"
defs["ImGuiNavDirSourceFlags"] = "int"
defs["ImGuiMultiSelectFlags"] = "int"
defs["ImGuiMultiSelectIO"] = "struct ImGuiMultiSelectIO"
defs["ImGuiMultiSelectState"] = "struct ImGuiMultiSelectState"
defs["ImGuiMultiSelectTempData"] = "struct ImGuiMultiSelectTempData"
defs["ImGuiNavHighlightFlags"] = "int"
defs["ImGuiNavInput"] = "int"
defs["ImGuiNavItemData"] = "struct ImGuiNavItemData"
defs["ImGuiNavMoveFlags"] = "int"
defs["ImGuiNextItemData"] = "struct ImGuiNextItemData"
@@ -99,22 +109,23 @@ defs["ImGuiOnceUponAFrame"] = "struct ImGuiOnceUponAFrame"
defs["ImGuiPayload"] = "struct ImGuiPayload"
defs["ImGuiPlatformIO"] = "struct ImGuiPlatformIO"
defs["ImGuiPlatformImeData"] = "struct ImGuiPlatformImeData"
defs["ImGuiPlatformMonitor"] = "struct ImGuiPlatformMonitor"
defs["ImGuiPopupData"] = "struct ImGuiPopupData"
defs["ImGuiPopupFlags"] = "int"
defs["ImGuiPtrOrIndex"] = "struct ImGuiPtrOrIndex"
defs["ImGuiScrollFlags"] = "int"
defs["ImGuiSelectableFlags"] = "int"
defs["ImGuiSelectionBasicStorage"] = "struct ImGuiSelectionBasicStorage"
defs["ImGuiSelectionExternalStorage"] = "struct ImGuiSelectionExternalStorage"
defs["ImGuiSelectionRequest"] = "struct ImGuiSelectionRequest"
defs["ImGuiSelectionUserData"] = "ImS64"
defs["ImGuiSeparatorFlags"] = "int"
defs["ImGuiSettingsHandler"] = "struct ImGuiSettingsHandler"
defs["ImGuiShrinkWidthItem"] = "struct ImGuiShrinkWidthItem"
defs["ImGuiSizeCallback"] = "void(*)(ImGuiSizeCallbackData* data);"
defs["ImGuiSizeCallbackData"] = "struct ImGuiSizeCallbackData"
defs["ImGuiSliderFlags"] = "int"
defs["ImGuiSortDirection"] = "int"
defs["ImGuiStackLevelInfo"] = "struct ImGuiStackLevelInfo"
defs["ImGuiStackSizes"] = "struct ImGuiStackSizes"
defs["ImGuiStackTool"] = "struct ImGuiStackTool"
defs["ImGuiStorage"] = "struct ImGuiStorage"
defs["ImGuiStoragePair"] = "struct ImGuiStoragePair"
defs["ImGuiStyle"] = "struct ImGuiStyle"
@@ -129,12 +140,13 @@ defs["ImGuiTableBgTarget"] = "int"
defs["ImGuiTableCellData"] = "struct ImGuiTableCellData"
defs["ImGuiTableColumn"] = "struct ImGuiTableColumn"
defs["ImGuiTableColumnFlags"] = "int"
defs["ImGuiTableColumnIdx"] = "ImS8"
defs["ImGuiTableColumnIdx"] = "ImS16"
defs["ImGuiTableColumnSettings"] = "struct ImGuiTableColumnSettings"
defs["ImGuiTableColumnSortSpecs"] = "struct ImGuiTableColumnSortSpecs"
defs["ImGuiTableColumnsSettings"] = "struct ImGuiTableColumnsSettings"
defs["ImGuiTableDrawChannelIdx"] = "ImU8"
defs["ImGuiTableDrawChannelIdx"] = "ImU16"
defs["ImGuiTableFlags"] = "int"
defs["ImGuiTableHeaderData"] = "struct ImGuiTableHeaderData"
defs["ImGuiTableInstanceData"] = "struct ImGuiTableInstanceData"
defs["ImGuiTableRowFlags"] = "int"
defs["ImGuiTableSettings"] = "struct ImGuiTableSettings"
@@ -143,16 +155,20 @@ defs["ImGuiTableTempData"] = "struct ImGuiTableTempData"
defs["ImGuiTextBuffer"] = "struct ImGuiTextBuffer"
defs["ImGuiTextFilter"] = "struct ImGuiTextFilter"
defs["ImGuiTextFlags"] = "int"
defs["ImGuiTextIndex"] = "struct ImGuiTextIndex"
defs["ImGuiTextRange"] = "struct ImGuiTextRange"
defs["ImGuiTooltipFlags"] = "int"
defs["ImGuiTreeNodeFlags"] = "int"
defs["ImGuiTreeNodeStackData"] = "struct ImGuiTreeNodeStackData"
defs["ImGuiTypingSelectFlags"] = "int"
defs["ImGuiTypingSelectRequest"] = "struct ImGuiTypingSelectRequest"
defs["ImGuiTypingSelectState"] = "struct ImGuiTypingSelectState"
defs["ImGuiViewport"] = "struct ImGuiViewport"
defs["ImGuiViewportFlags"] = "int"
defs["ImGuiViewportP"] = "struct ImGuiViewportP"
defs["ImGuiWindow"] = "struct ImGuiWindow"
defs["ImGuiWindowClass"] = "struct ImGuiWindowClass"
defs["ImGuiWindowDockStyle"] = "struct ImGuiWindowDockStyle"
defs["ImGuiWindowFlags"] = "int"
defs["ImGuiWindowRefreshFlags"] = "int"
defs["ImGuiWindowSettings"] = "struct ImGuiWindowSettings"
defs["ImGuiWindowStackData"] = "struct ImGuiWindowStackData"
defs["ImGuiWindowTempData"] = "struct ImGuiWindowTempData"
@@ -162,6 +178,7 @@ defs["ImS16"] = "signed short"
defs["ImS32"] = "signed int"
defs["ImS64"] = "signed long long"
defs["ImS8"] = "signed char"
defs["ImStbTexteditState"] = "ImStb::STB_TexteditState"
defs["ImTextureID"] = "void*"
defs["ImU16"] = "unsigned short"
defs["ImU32"] = "unsigned int"
@@ -175,9 +192,6 @@ defs["ImWchar"] = "ImWchar16"
defs["ImWchar16"] = "unsigned short"
defs["ImWchar32"] = "unsigned int"
defs["STB_TexteditState"] = "struct STB_TexteditState"
defs["StbTexteditRow"] = "struct StbTexteditRow"
defs["StbUndoRecord"] = "struct StbUndoRecord"
defs["StbUndoState"] = "struct StbUndoState"
defs["const_iterator"] = "const value_type*"
defs["iterator"] = "value_type*"
defs["value_type"] = "T"

View File

@@ -8,6 +8,10 @@
#pragma message(CIMGUI_DEFSTRING(IMGUI_VERSION))
#endif
#ifdef IMGUI_VERSION_NUM
#pragma message(CIMGUI_DEFSTRING(IMGUI_VERSION_NUM))
#endif
#ifdef IMGUI_HAS_DOCK
#pragma message(CIMGUI_DEFSTRING(IMGUI_HAS_DOCK))
#endif
@@ -23,3 +27,7 @@
#ifdef FLT_MAX
#pragma message(CIMGUI_DEFSTRING(FLT_MAX))
#endif
#ifdef ImDrawCallback_ResetRenderState
#pragma message(CIMGUI_DEFSTRING(ImDrawCallback_ResetRenderState))
#endif

2
imgui

Submodule imgui updated: 9cd9c2eff9...a9f72ab681