Skip to content

Commit 3cda8ff

Browse files
committed
Update imgui and add stack layout patch
See ocornut/imgui#846
1 parent 63836c7 commit 3cda8ff

File tree

7 files changed

+2046
-1
lines changed

7 files changed

+2046
-1
lines changed

ZHMModSDK/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,5 @@ install(FILES "${CMAKE_SOURCE_DIR}/External/IconFontCppHeaders/IconsMaterialDesi
108108
install(FILES "${VCPKG_BUILD_ROOT}/lib/imgui.lib" DESTINATION lib)
109109
install(FILES "${VCPKG_BUILD_ROOT}/include/imgui.h" DESTINATION include)
110110
install(FILES "${VCPKG_BUILD_ROOT}/include/imconfig.h" DESTINATION include)
111+
install(FILES "${VCPKG_BUILD_ROOT}/include/imgui_stacklayout.h" DESTINATION include)
111112
install(FILES "${VCPKG_BUILD_ROOT}/include/imgui_stdlib.h" DESTINATION include)
Lines changed: 300 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
cmake_minimum_required(VERSION 3.16)
2+
project(imgui CXX)
3+
4+
set(CMAKE_DEBUG_POSTFIX d)
5+
6+
if (APPLE)
7+
set(CMAKE_CXX_STANDARD 11)
8+
enable_language(OBJCXX)
9+
endif ()
10+
11+
add_library(${PROJECT_NAME} "")
12+
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
13+
target_include_directories(
14+
${PROJECT_NAME}
15+
PUBLIC
16+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/test-engine>"
17+
$<INSTALL_INTERFACE:include>
18+
)
19+
20+
target_sources(
21+
${PROJECT_NAME}
22+
PRIVATE
23+
${CMAKE_CURRENT_SOURCE_DIR}/imgui.cpp
24+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_demo.cpp
25+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_draw.cpp
26+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_tables.cpp
27+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_widgets.cpp
28+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_stacklayout.cpp
29+
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.cpp
30+
)
31+
32+
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_11)
33+
34+
if (IMGUI_BUILD_ALLEGRO5_BINDING)
35+
find_package(Allegro CONFIG REQUIRED)
36+
target_link_libraries(${PROJECT_NAME} PRIVATE Allegro::allegro Allegro::allegro_ttf Allegro::allegro_font Allegro::allegro_main)
37+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.cpp)
38+
endif ()
39+
40+
if (IMGUI_BUILD_ANDROID_BINDING)
41+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.cpp)
42+
endif ()
43+
44+
if (IMGUI_BUILD_DX9_BINDING)
45+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.cpp)
46+
endif ()
47+
48+
if (IMGUI_BUILD_DX10_BINDING)
49+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.cpp)
50+
endif ()
51+
52+
if (IMGUI_BUILD_DX11_BINDING)
53+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.cpp)
54+
endif ()
55+
56+
if (IMGUI_BUILD_DX12_BINDING)
57+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.cpp)
58+
endif ()
59+
60+
if (IMGUI_BUILD_GLFW_BINDING)
61+
if (NOT EMSCRIPTEN)
62+
find_package(glfw3 CONFIG REQUIRED)
63+
target_link_libraries(${PROJECT_NAME} PUBLIC glfw)
64+
endif ()
65+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.cpp)
66+
endif ()
67+
68+
if (IMGUI_BUILD_GLUT_BINDING)
69+
find_package(GLUT REQUIRED)
70+
target_link_libraries(${PROJECT_NAME} PUBLIC GLUT::GLUT)
71+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.cpp)
72+
endif ()
73+
74+
if (IMGUI_BUILD_METAL_BINDING)
75+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.mm)
76+
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.mm PROPERTIES COMPILE_FLAGS -fobjc-weak)
77+
endif ()
78+
79+
if (IMGUI_BUILD_OPENGL2_BINDING)
80+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.cpp)
81+
endif ()
82+
83+
if (IMGUI_BUILD_OPENGL3_BINDING)
84+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.cpp)
85+
endif ()
86+
87+
if (IMGUI_BUILD_OSX_BINDING)
88+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.mm)
89+
endif ()
90+
91+
if (IMGUI_BUILD_SDL3_BINDING)
92+
find_package(SDL3 CONFIG REQUIRED)
93+
target_link_libraries(${PROJECT_NAME} PUBLIC SDL3::SDL3)
94+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.cpp)
95+
endif ()
96+
97+
if (IMGUI_BUILD_SDLGPU3_BINDING)
98+
find_package(SDL3 CONFIG REQUIRED)
99+
target_link_libraries(${PROJECT_NAME} PUBLIC SDL3::SDL3)
100+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3.cpp)
101+
endif ()
102+
103+
if (IMGUI_BUILD_SDL3_RENDERER_BINDING)
104+
find_package(SDL3 CONFIG REQUIRED)
105+
target_link_libraries(${PROJECT_NAME} PUBLIC SDL3::SDL3)
106+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.cpp)
107+
endif ()
108+
109+
if (IMGUI_BUILD_VULKAN_BINDING)
110+
find_package(Vulkan REQUIRED)
111+
target_link_libraries(${PROJECT_NAME} PUBLIC Vulkan::Vulkan)
112+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.cpp)
113+
endif ()
114+
115+
if (IMGUI_BUILD_WIN32_BINDING)
116+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.cpp)
117+
endif ()
118+
119+
if (IMGUI_FREETYPE)
120+
find_package(freetype CONFIG REQUIRED)
121+
target_link_libraries(${PROJECT_NAME} PUBLIC freetype)
122+
target_sources(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.cpp)
123+
target_compile_definitions(${PROJECT_NAME} PUBLIC IMGUI_ENABLE_FREETYPE)
124+
endif ()
125+
126+
if (IMGUI_FREETYPE_SVG)
127+
find_package(plutosvg CONFIG REQUIRED)
128+
target_link_libraries(${PROJECT_NAME} PUBLIC plutosvg::plutosvg)
129+
target_compile_definitions(${PROJECT_NAME} PUBLIC IMGUI_ENABLE_FREETYPE_PLUTOSVG)
130+
endif ()
131+
132+
if (IMGUI_USE_WCHAR32)
133+
target_compile_definitions(${PROJECT_NAME} PUBLIC IMGUI_USE_WCHAR32)
134+
endif ()
135+
136+
if (IMGUI_TEST_ENGINE)
137+
find_package(Stb REQUIRED)
138+
target_include_directories(${PROJECT_NAME} PRIVATE ${Stb_INCLUDE_DIR})
139+
target_sources(
140+
${PROJECT_NAME}
141+
PRIVATE
142+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_capture_tool.cpp
143+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_context.cpp
144+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_coroutine.cpp
145+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_engine.cpp
146+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_exporters.cpp
147+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_perftool.cpp
148+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_ui.cpp
149+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_utils.cpp
150+
)
151+
endif ()
152+
153+
list(REMOVE_DUPLICATES BINDINGS_SOURCES)
154+
155+
install(
156+
TARGETS ${PROJECT_NAME}
157+
EXPORT ${PROJECT_NAME}_target
158+
ARCHIVE DESTINATION lib
159+
LIBRARY DESTINATION lib
160+
RUNTIME DESTINATION bin
161+
)
162+
163+
foreach (BINDING_TARGET ${BINDING_TARGETS})
164+
install(
165+
TARGETS ${BINDING_TARGET}
166+
EXPORT ${PROJECT_NAME}_target
167+
ARCHIVE DESTINATION lib
168+
LIBRARY DESTINATION lib
169+
RUNTIME DESTINATION bin
170+
)
171+
endforeach ()
172+
173+
if (NOT IMGUI_SKIP_HEADERS)
174+
install(FILES
175+
${CMAKE_CURRENT_SOURCE_DIR}/imgui.h
176+
${CMAKE_CURRENT_SOURCE_DIR}/imconfig.h
177+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_internal.h
178+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_stacklayout.h
179+
${CMAKE_CURRENT_SOURCE_DIR}/imgui_stacklayout_internal.h
180+
${CMAKE_CURRENT_SOURCE_DIR}/imstb_textedit.h
181+
${CMAKE_CURRENT_SOURCE_DIR}/imstb_rectpack.h
182+
${CMAKE_CURRENT_SOURCE_DIR}/imstb_truetype.h
183+
${CMAKE_CURRENT_SOURCE_DIR}/misc/cpp/imgui_stdlib.h
184+
DESTINATION include
185+
)
186+
187+
if (IMGUI_BUILD_ALLEGRO5_BINDING)
188+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_allegro5.h DESTINATION include)
189+
endif ()
190+
191+
if (IMGUI_BUILD_ANDROID_BINDING)
192+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_android.h DESTINATION include)
193+
endif ()
194+
195+
if (IMGUI_BUILD_DX9_BINDING)
196+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx9.h DESTINATION include)
197+
endif ()
198+
199+
if (IMGUI_BUILD_DX10_BINDING)
200+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx10.h DESTINATION include)
201+
endif ()
202+
203+
if (IMGUI_BUILD_DX11_BINDING)
204+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx11.h DESTINATION include)
205+
endif ()
206+
207+
if (IMGUI_BUILD_DX12_BINDING)
208+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_dx12.h DESTINATION include)
209+
endif ()
210+
211+
if (IMGUI_BUILD_GLFW_BINDING)
212+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glfw.h DESTINATION include)
213+
endif ()
214+
215+
if (IMGUI_BUILD_GLUT_BINDING)
216+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_glut.h DESTINATION include)
217+
endif ()
218+
219+
if (IMGUI_BUILD_METAL_BINDING)
220+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_metal.h DESTINATION include)
221+
endif ()
222+
223+
if (IMGUI_BUILD_OPENGL2_BINDING)
224+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl2.h DESTINATION include)
225+
endif ()
226+
227+
if (IMGUI_BUILD_OPENGL3_BINDING)
228+
install(
229+
FILES
230+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3.h
231+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_opengl3_loader.h
232+
DESTINATION
233+
include
234+
)
235+
endif ()
236+
237+
if (IMGUI_BUILD_OSX_BINDING)
238+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_osx.h DESTINATION include)
239+
endif ()
240+
241+
if (IMGUI_BUILD_SDL3_BINDING)
242+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdl3.h DESTINATION include)
243+
endif ()
244+
245+
if (IMGUI_BUILD_SDLGPU3_BINDING)
246+
install(
247+
FILES
248+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3.h
249+
${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlgpu3_shaders.h
250+
DESTINATION
251+
include
252+
)
253+
endif ()
254+
255+
if (IMGUI_BUILD_SDL3_RENDERER_BINDING)
256+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_sdlrenderer3.h DESTINATION include)
257+
endif ()
258+
259+
if (IMGUI_BUILD_VULKAN_BINDING)
260+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_vulkan.h DESTINATION include)
261+
endif ()
262+
263+
if (IMGUI_BUILD_WIN32_BINDING)
264+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/backends/imgui_impl_win32.h DESTINATION include)
265+
endif ()
266+
267+
if (IMGUI_FREETYPE)
268+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/freetype/imgui_freetype.h DESTINATION include)
269+
endif ()
270+
271+
if (IMGUI_TEST_ENGINE)
272+
install(
273+
FILES
274+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_capture_tool.h
275+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_context.h
276+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_coroutine.h
277+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_engine.h
278+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_exporters.h
279+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_imconfig.h
280+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_internal.h
281+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_perftool.h
282+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_ui.h
283+
${CMAKE_CURRENT_SOURCE_DIR}/test-engine/imgui_te_utils.h
284+
DESTINATION
285+
include
286+
)
287+
endif ()
288+
endif ()
289+
290+
include(CMakePackageConfigHelpers)
291+
configure_package_config_file(imgui-config.cmake.in imgui-config.cmake INSTALL_DESTINATION share/imgui)
292+
293+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/imgui-config.cmake DESTINATION share/imgui)
294+
295+
install(
296+
EXPORT ${PROJECT_NAME}_target
297+
NAMESPACE ${PROJECT_NAME}::
298+
FILE ${PROJECT_NAME}-targets.cmake
299+
DESTINATION share/${PROJECT_NAME}
300+
)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
cmake_policy(SET CMP0012 NEW)
2+
3+
@PACKAGE_INIT@
4+
5+
include(CMakeFindDependencyMacro)
6+
7+
if (@IMGUI_BUILD_GLFW_BINDING@)
8+
if (NOT "@EMSCRIPTEN@")
9+
find_dependency(glfw3 CONFIG)
10+
endif()
11+
endif()
12+
13+
if (@IMGUI_BUILD_GLUT_BINDING@)
14+
find_dependency(GLUT)
15+
endif()
16+
17+
if (@IMGUI_BUILD_SDL3_BINDING@ OR @IMGUI_BUILD_SDL3_RENDERER_BINDING@ OR @IMGUI_BUILD_SDLGPU3_BINDING@)
18+
find_dependency(SDL3 CONFIG)
19+
endif()
20+
21+
if (@IMGUI_BUILD_VULKAN_BINDING@)
22+
find_dependency(Vulkan)
23+
endif()
24+
25+
if (@IMGUI_FREETYPE@)
26+
find_dependency(freetype CONFIG)
27+
endif()
28+
29+
if (@IMGUI_FREETYPE_SVG@)
30+
find_dependency(plutosvg CONFIG)
31+
endif()
32+
33+
if (@IMGUI_BUILD_ALLEGRO5_BINDING@)
34+
find_dependency(Allegro CONFIG)
35+
endif()
36+
37+
if (@IMGUI_TEST_ENGINE@)
38+
find_dependency(Stb)
39+
endif()
40+
41+
include("${CMAKE_CURRENT_LIST_DIR}/imgui-targets.cmake")

0 commit comments

Comments
 (0)