diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 20fd4567..1141daeb 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -39,19 +39,30 @@ Breaking Changes: The only difference is if you were using TreeNodeEx() manually with ImGuiTreeNodeFlags_CollapsingHeader and without ImGuiTreeNodeFlags_NoTreePushOnOpen. In which case you can remove the ImGuiTreeNodeFlags_NoTreePushOnOpen flag from your call (ImGuiTreeNodeFlags_CollapsingHeader & ~ImGuiTreeNodeFlags_NoTreePushOnOpen). (#1864) - ImFontAtlas: Renamed GetGlyphRangesChinese() to GetGlyphRangesChineseFull() to distinguish other variants and discourage using the full set. (#1859) - - Examples Bindings have been refactored to separate them into "Platform" and "Renderer" components that are more easy to combine. - - The "Platform" bindings are in charge of: mouse/keyboard/gamepad inputs, cursor shape, timing, etc. - Examples: Windows (imgui_impl_win32.cpp), GLFW (imgui_impl_glfw.cpp), SDL2 (imgui_impl_sdl2.cpp). - - The "Renderer" bindings are in charge of: creating the main font texture, rendering imgui draw data. - Examples: DirectX11 (imgui_impl_dx11.cpp), GL3 (imgui_impl_opengl3.cpp), Vulkan (imgui_impl_vulkan.cpp) - - This is not strictly a breaking change if you keep your old bindings, but _WHEN_ you'll want to fully update your bindings, - expect to have to reshuffle a few things. This refactor will greatly facilitate maintenance and re-usability, and was designed - to get us closer to the upcoming "multi-viewport" feature branch. - - Please read examples/README.txt for details. - + This also apply if you were using internal's TreeNodeBehavior() with the ImGuiTreeNodeFlags_CollapsingHeader flag directly. Other Changes: + - Examples back-ends have been refactored to separate the platform code (e.g. Win32, Glfw, SDL2) from the renderer code (e.g. DirectX11, OpenGL3, Vulkan). + The "Platform" bindings are in charge of: mouse/keyboard/gamepad inputs, cursor shape, timing, etc. + The "Renderer" bindings are in charge of: creating the main font texture, rendering imgui draw data. + before: imgui_impl_dx11.cpp --> after: imgui_impl_win32.cpp + imgui_impl_dx11.cpp + before: imgui_impl_dx12.cpp --> after: imgui_impl_win32.cpp + imgui_impl_dx12.cpp + before: imgui_impl_glfw_gl3.cpp --> after: imgui_impl_glfw.cpp + imgui_impl_opengl2.cpp + before: imgui_impl_glfw_vulkan.cpp --> after: imgui_impl_glfw.cpp + imgui_impl_vulkan.cpp + before: imgui_impl_sdl_gl3.cpp --> after: imgui_impl_sdl2.cpp + imgui_impl_opengl2.cpp + before: imgui_impl_sdl_gl3.cpp --> after: imgui_impl_sdl2.cpp + imgui_impl_opengl3.cpp etc. + - The idea is what we can now easily combine and maintain back-ends and reduce code redundancy. Individual files are smaller and more reusable. + Integration of imgui into a new/custom engine may also be easier as there is less overlap between "windowing / inputs" and "rendering" code, + so you may study or grab one half of the code and not the other. + - This change was motivated by the fact that adding support for the upcoming multi-viewport feature requires more work from the Platform and Renderer + back-ends, and the amount of redundancy across files was becoming too difficult to maintain. If you use default back-ends, you'll benefit from an + easy update path to support multi-viewports later. + - This is not strictly a breaking change if you keep your old bindings, but when you'll want to fully update your bindings, + expect to have to reshuffle a few things. + - Each example still has its own main.cpp which you may refer you to understand how to initialize and glue everything together. + - Some frameworks (such as the Allegro, Marmalade) handle both the "platform" and "rendering" part, and your custom engine may as well. + - Please read examples/README.txt for details. - Nav: To keep the navigated item in view we also attempt to scroll the parent window as well as the current window. (#787) - Nav: Added support for PageUp/PageDown (explorer-style: first aim at bottom/top most item, when scroll a page worth of contents). (#787) - TreeNode: Fixed nodes with ImGuiTreeNodeFlags_Leaf flag always returning true which was meaningless. @@ -63,6 +74,7 @@ Other Changes: - InputTextMultiline(): Fixed double navigation highlight when scrollbar is active. (#787) - InputText(): Fixed Undo after pasting large amount of text (Redo will still fail when undo buffers are exhausted, but text won't be corrupted). - SliderFloat(): When using keyboard/gamepad and a zero precision format string (e.g. "%.0f"), always step in integer units. (#1866) + - ImFontConfig: Added GlyphMinAdvanceX/GlyphMaxAdvanceX settings useful to make a font appears monospaced, particularly useful for icon fonts. (#1869) - ImFontAtlas: Added GetGlyphRangesChineseSimplifiedCommon() helper that returns a list of ~2500 most common Simplified Chinese characters. (#1859) [@JX-Master, @ocornut] - Examples: GLFW: Made it possible to Shutdown/Init the backend again (by reseting the time storage properly). (#1827) [@ice1000] - Misc: Updated stb_textedit from 1.09 + patches to 1.12 + minor patches. diff --git a/examples/.gitignore b/examples/.gitignore index ff44bccb..db2859e1 100644 --- a/examples/.gitignore +++ b/examples/.gitignore @@ -16,10 +16,10 @@ build/* *.VC.VC.opendb ## Unix executables -opengl2_example/opengl2_example -opengl3_example/opengl3_example -sdl_opengl2_example/sdl_opengl2_example -sdl_opengl3_example/sdl_opengl3_example +example_glfw_opengl2/example_glfw_opengl2 +example_glfw_opengl3/example_glfw_opengl3 +example_sdl_opengl2/example_sdl_opengl2 +example_sdl_opengl3/example_sdl_opengl3 ## Dear ImGui Ini files imgui.ini diff --git a/examples/README.txt b/examples/README.txt index 960c17d7..e672a723 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -66,7 +66,7 @@ You can find binaries of some of those example applications at: Most the example bindings are split in 2 parts: - The "Platform" bindings, in charge of: mouse/keyboard/gamepad inputs, cursor shape, timing, windowing. - Examples: Windows (imgui_impl_win32.cpp), GLFW (imgui_impl_glfw.cpp), SDL2 (imgui_impl_sdl2.cpp) + Examples: Windows (imgui_impl_win32.cpp), GLFW (imgui_impl_glfw.cpp), SDL2 (imgui_impl_sdl.cpp) - The "Renderer" bindings, in charge of: creating the main font texture, rendering imgui draw data. Examples: DirectX11 (imgui_impl_dx11.cpp), GL3 (imgui_impl_opengl3.cpp), Vulkan (imgui_impl_vulkan.cpp) @@ -110,7 +110,7 @@ Most the example bindings are split in 2 parts: List of officially maintained Platforms Bindings: imgui_impl_glfw.cpp - imgui_impl_sdl2.cpp + imgui_impl_sdl.cpp imgui_impl_win32.cpp List of officially maintained Renderer Bindings: @@ -154,76 +154,76 @@ Building: directly with a command-line compiler. -directx9_example/ +example_win32_directx9/ DirectX9 example, Windows only. = main.cpp + imgui_impl_win32.cpp + imgui_impl_dx9.cpp -directx10_example/ +example_win32_directx10/ DirectX10 example, Windows only. = main.cpp + imgui_impl_win32.cpp + imgui_impl_dx10.cpp -directx11_example/ +example_win32_directx11/ DirectX11 example, Windows only. = main.cpp + imgui_impl_win32.cpp + imgui_impl_dx11.cpp -directx12_example/ +example_win32_directx12/ DirectX12 example, Windows only. This is quite long and tedious, because: DirectX12. = main.cpp + imgui_impl_win32.cpp + imgui_impl_dx12.cpp -opengl2_example/ - **DO NOT USE THIS CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** - **Prefer using the code in the opengl3_example/ folder** - GLFW + OpenGL example (legacy, fixed pipeline). +example_glfw_opengl2/ + **DO NOT USE OPENGL2 CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** + **Prefer using OPENGL3 code (with gl3w/glew/glad, you can replace the OpenGL function loader)** + GLFW + OpenGL2 example (legacy, fixed pipeline). This code is mostly provided as a reference to learn about ImGui integration, because it is shorter. If your code is using GL3+ context or any semi modern OpenGL calls, using this renderer is likely to make things more complicated, will require your code to reset many OpenGL attributes to their initial state, and might confuse your GPU driver. One star, not recommended. = main.cpp + imgui_impl_glfw.cpp + imgui_impl_opengl2.cpp -opengl3_example/ - GLFW (Win32, Mac, Linux) + OpenGL example (programmable pipeline, binding modern functions with GL3W). +example_glfw_opengl3/ + GLFW (Win32, Mac, Linux) + OpenGL3+ example (programmable pipeline, binding modern functions with GL3W). This uses more modern OpenGL calls and custom shaders. Prefer using that if you are using modern OpenGL in your application (anything with shaders). = main.cpp + imgui_impl_glfw.cpp + imgui_impl_opengl3.cpp -vulkan_example/ - Vulkan example. +example_glfw_vulkan/ + GLFW (Win32, Mac, Linux) + Vulkan example. This is quite long and tedious, because: Vulkan. = main.cpp + imgui_impl_glfw.cpp + imgui_impl_vulkan.cpp -sdl_opengl2_example/ - **DO NOT USE THIS CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** - **Prefer using the code in the sdl_opengl3_example/ folder** +example_sdl_opengl2/ + **DO NOT USE OPENGL2 CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)** + **Prefer using OPENGL3 code (with gl3w/glew/glad, you can replace the OpenGL function loader)** SDL2 (Win32, Mac, Linux etc.) + OpenGL example (legacy, fixed pipeline). This code is mostly provided as a reference to learn about ImGui integration, because it is shorter. If your code is using GL3+ context or any semi modern OpenGL calls, using this renderer is likely to make things more complicated, will require your code to reset many OpenGL attributes to their initial state, and might confuse your GPU driver. One star, not recommended. - = main.cpp + imgui_impl_sdl2.cpp + imgui_impl_opengl2.cpp + = main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl2.cpp -sdl_opengl3_example/ - SDL2 (Win32, Mac, Linux, etc.) + OpenGL3 example. +example_sdl_opengl3/ + SDL2 (Win32, Mac, Linux, etc.) + OpenGL3+ example. This uses more modern OpenGL calls and custom shaders. Prefer using that if you are using modern OpenGL in your application (anything with shaders). - = main.cpp + imgui_impl_sdl2.cpp + imgui_impl_opengl3.cpp + = main.cpp + imgui_impl_sdl.cpp + imgui_impl_opengl3.cpp -sdl_vulkan_example/ +example_sdl_vulkan/ SDL2 (Win32, Mac, Linux, etc.) + Vulkan example. This is quite long and tedious, because: Vulkan. - = main.cpp + imgui_impl_glfw.cpp + imgui_impl_vulkan.cpp + = main.cpp + imgui_impl_sdl.cpp + imgui_impl_vulkan.cpp -apple_example/ +example_apple/ OSX & iOS example + OpenGL2. THIS EXAMPLE HAS NOT BEEN MAINTAINED PROPERLY AND NEEDS A MAINTAINER. Consider using the opengl3_example/ instead. On iOS, Using Synergy to access keyboard/mouse data from server computer. Synergy keyboard integration is rather hacky. -allegro5_example/ +example_allegro5/ Allegro 5 example. = main.cpp + imgui_impl_allegro5.cpp -marmalade_example/ - Marmalade example using IwGx +example_marmalade/ + Marmalade example using IwGx. = main.cpp + imgui_impl_marmalade.cpp diff --git a/examples/allegro5_example/README.md b/examples/example_allegro5/README.md similarity index 89% rename from examples/allegro5_example/README.md rename to examples/example_allegro5/README.md index f15b5fda..783839db 100644 --- a/examples/allegro5_example/README.md +++ b/examples/example_allegro5/README.md @@ -12,12 +12,12 @@ Note that the back-end supports _BOTH_ 16-bit and 32-bit indices, but 32-bit ind - On Ubuntu 14.04+ ```bash -g++ -DIMGUI_USER_CONFIG=\"examples/allegro5_example/imconfig_allegro5.h\" -I .. -I ../.. main.cpp imgui_impl_allegro5.cpp ../../imgui*.cpp -lallegro -lallegro_primitives -o allegro5_example +g++ -DIMGUI_USER_CONFIG=\"examples/example_allegro5/imconfig_allegro5.h\" -I .. -I ../.. main.cpp imgui_impl_allegro5.cpp ../../imgui*.cpp -lallegro -lallegro_primitives -o allegro5_example ``` - On Windows with Visual Studio's CLI ``` set ALLEGRODIR=path_to_your_allegro5_folder -cl /Zi /MD /I %ALLEGRODIR%\include /DIMGUI_USER_CONFIG=\"examples/allegro5_example/imconfig_allegro5.h\" /I .. /I ..\.. main.cpp imgui_impl_allegro5.cpp ..\..\imgui*.cpp /link /LIBPATH:%ALLEGRODIR%\lib allegro-5.0.10-monolith-md.lib user32.lib +cl /Zi /MD /I %ALLEGRODIR%\include /DIMGUI_USER_CONFIG=\"examples/example_allegro5/imconfig_allegro5.h\" /I .. /I ..\.. main.cpp imgui_impl_allegro5.cpp ..\..\imgui*.cpp /link /LIBPATH:%ALLEGRODIR%\lib allegro-5.0.10-monolith-md.lib user32.lib ``` diff --git a/examples/allegro5_example/imconfig_allegro5.h b/examples/example_allegro5/imconfig_allegro5.h similarity index 100% rename from examples/allegro5_example/imconfig_allegro5.h rename to examples/example_allegro5/imconfig_allegro5.h diff --git a/examples/allegro5_example/main.cpp b/examples/example_allegro5/main.cpp similarity index 100% rename from examples/allegro5_example/main.cpp rename to examples/example_allegro5/main.cpp diff --git a/examples/apple_example/.gitignore b/examples/example_apple/.gitignore similarity index 100% rename from examples/apple_example/.gitignore rename to examples/example_apple/.gitignore diff --git a/examples/apple_example/README.md b/examples/example_apple/README.md similarity index 96% rename from examples/apple_example/README.md rename to examples/example_apple/README.md index 339f6bf8..d414d133 100644 --- a/examples/apple_example/README.md +++ b/examples/example_apple/README.md @@ -2,6 +2,8 @@ ## Introduction +THIS EXAMPLE HAS NOT BEEN MAINTAINED PROPERLY AND NEEDS A MAINTAINER. + This example is the default XCode "OpenGL" example code, modified to support ImGui and [Synergy](http://synergy-project.org/) to share mouse/keyboard on an iOS device. It is a rather complex and messy example because of all of the faff required to get an XCode/iOS application running. Refer to the regular OpenGL examples if you want to learn about integrating ImGui. **The opengl3_example/ should also work on OS X and is much simpler.** This is an integration for iOS with Synergy. diff --git a/examples/apple_example/imguiex-ios/AppDelegate.h b/examples/example_apple/imguiex-ios/AppDelegate.h similarity index 100% rename from examples/apple_example/imguiex-ios/AppDelegate.h rename to examples/example_apple/imguiex-ios/AppDelegate.h diff --git a/examples/apple_example/imguiex-ios/AppDelegate.m b/examples/example_apple/imguiex-ios/AppDelegate.m similarity index 100% rename from examples/apple_example/imguiex-ios/AppDelegate.m rename to examples/example_apple/imguiex-ios/AppDelegate.m diff --git a/examples/apple_example/imguiex-ios/Base.lproj/LaunchScreen.xib b/examples/example_apple/imguiex-ios/Base.lproj/LaunchScreen.xib similarity index 100% rename from examples/apple_example/imguiex-ios/Base.lproj/LaunchScreen.xib rename to examples/example_apple/imguiex-ios/Base.lproj/LaunchScreen.xib diff --git a/examples/apple_example/imguiex-ios/Base.lproj/Main.storyboard b/examples/example_apple/imguiex-ios/Base.lproj/Main.storyboard similarity index 100% rename from examples/apple_example/imguiex-ios/Base.lproj/Main.storyboard rename to examples/example_apple/imguiex-ios/Base.lproj/Main.storyboard diff --git a/examples/apple_example/imguiex-ios/GameViewController.h b/examples/example_apple/imguiex-ios/GameViewController.h similarity index 100% rename from examples/apple_example/imguiex-ios/GameViewController.h rename to examples/example_apple/imguiex-ios/GameViewController.h diff --git a/examples/apple_example/imguiex-ios/GameViewController.m b/examples/example_apple/imguiex-ios/GameViewController.m similarity index 100% rename from examples/apple_example/imguiex-ios/GameViewController.m rename to examples/example_apple/imguiex-ios/GameViewController.m diff --git a/examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/Contents.json rename to examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@2x~iphone.png b/examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@2x~iphone.png similarity index 100% rename from examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@2x~iphone.png rename to examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@2x~iphone.png diff --git a/examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@3x~iphone.png b/examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@3x~iphone.png similarity index 100% rename from examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@3x~iphone.png rename to examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_60@3x~iphone.png diff --git a/examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76@2x~ipad.png b/examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76@2x~ipad.png similarity index 100% rename from examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76@2x~ipad.png rename to examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76@2x~ipad.png diff --git a/examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76~ipad.png b/examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76~ipad.png similarity index 100% rename from examples/apple_example/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76~ipad.png rename to examples/example_apple/imguiex-ios/Images.xcassets/AppIcon.appiconset/icon_imgui_76~ipad.png diff --git a/examples/apple_example/imguiex-ios/Info.plist b/examples/example_apple/imguiex-ios/Info.plist similarity index 100% rename from examples/apple_example/imguiex-ios/Info.plist rename to examples/example_apple/imguiex-ios/Info.plist diff --git a/examples/apple_example/imguiex-ios/Shaders/Shader.fsh b/examples/example_apple/imguiex-ios/Shaders/Shader.fsh similarity index 100% rename from examples/apple_example/imguiex-ios/Shaders/Shader.fsh rename to examples/example_apple/imguiex-ios/Shaders/Shader.fsh diff --git a/examples/apple_example/imguiex-ios/Shaders/Shader.vsh b/examples/example_apple/imguiex-ios/Shaders/Shader.vsh similarity index 100% rename from examples/apple_example/imguiex-ios/Shaders/Shader.vsh rename to examples/example_apple/imguiex-ios/Shaders/Shader.vsh diff --git a/examples/apple_example/imguiex-ios/debug_hud.cpp b/examples/example_apple/imguiex-ios/debug_hud.cpp similarity index 100% rename from examples/apple_example/imguiex-ios/debug_hud.cpp rename to examples/example_apple/imguiex-ios/debug_hud.cpp diff --git a/examples/apple_example/imguiex-ios/debug_hud.h b/examples/example_apple/imguiex-ios/debug_hud.h similarity index 100% rename from examples/apple_example/imguiex-ios/debug_hud.h rename to examples/example_apple/imguiex-ios/debug_hud.h diff --git a/examples/apple_example/imguiex-ios/imgui_ex_icon.png b/examples/example_apple/imguiex-ios/imgui_ex_icon.png similarity index 100% rename from examples/apple_example/imguiex-ios/imgui_ex_icon.png rename to examples/example_apple/imguiex-ios/imgui_ex_icon.png diff --git a/examples/apple_example/imguiex-ios/imgui_impl_ios.h b/examples/example_apple/imguiex-ios/imgui_impl_ios.h similarity index 100% rename from examples/apple_example/imguiex-ios/imgui_impl_ios.h rename to examples/example_apple/imguiex-ios/imgui_impl_ios.h diff --git a/examples/apple_example/imguiex-ios/imgui_impl_ios.mm b/examples/example_apple/imguiex-ios/imgui_impl_ios.mm similarity index 100% rename from examples/apple_example/imguiex-ios/imgui_impl_ios.mm rename to examples/example_apple/imguiex-ios/imgui_impl_ios.mm diff --git a/examples/apple_example/imguiex-ios/main.m b/examples/example_apple/imguiex-ios/main.m similarity index 100% rename from examples/apple_example/imguiex-ios/main.m rename to examples/example_apple/imguiex-ios/main.m diff --git a/examples/apple_example/imguiex-osx/AppDelegate.h b/examples/example_apple/imguiex-osx/AppDelegate.h similarity index 100% rename from examples/apple_example/imguiex-osx/AppDelegate.h rename to examples/example_apple/imguiex-osx/AppDelegate.h diff --git a/examples/apple_example/imguiex-osx/AppDelegate.m b/examples/example_apple/imguiex-osx/AppDelegate.m similarity index 100% rename from examples/apple_example/imguiex-osx/AppDelegate.m rename to examples/example_apple/imguiex-osx/AppDelegate.m diff --git a/examples/apple_example/imguiex-osx/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/example_apple/imguiex-osx/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from examples/apple_example/imguiex-osx/Assets.xcassets/AppIcon.appiconset/Contents.json rename to examples/example_apple/imguiex-osx/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/examples/apple_example/imguiex-osx/Assets.xcassets/AppIcon.appiconset/icon_imgui_180x180.png b/examples/example_apple/imguiex-osx/Assets.xcassets/AppIcon.appiconset/icon_imgui_180x180.png similarity index 100% rename from examples/apple_example/imguiex-osx/Assets.xcassets/AppIcon.appiconset/icon_imgui_180x180.png rename to examples/example_apple/imguiex-osx/Assets.xcassets/AppIcon.appiconset/icon_imgui_180x180.png diff --git a/examples/apple_example/imguiex-osx/Assets.xcassets/Contents.json b/examples/example_apple/imguiex-osx/Assets.xcassets/Contents.json similarity index 100% rename from examples/apple_example/imguiex-osx/Assets.xcassets/Contents.json rename to examples/example_apple/imguiex-osx/Assets.xcassets/Contents.json diff --git a/examples/apple_example/imguiex-osx/Info.plist b/examples/example_apple/imguiex-osx/Info.plist similarity index 100% rename from examples/apple_example/imguiex-osx/Info.plist rename to examples/example_apple/imguiex-osx/Info.plist diff --git a/examples/apple_example/imguiex-osx/main.m b/examples/example_apple/imguiex-osx/main.m similarity index 100% rename from examples/apple_example/imguiex-osx/main.m rename to examples/example_apple/imguiex-osx/main.m diff --git a/examples/apple_example/imguiex.xcodeproj/project.pbxproj b/examples/example_apple/imguiex.xcodeproj/project.pbxproj similarity index 100% rename from examples/apple_example/imguiex.xcodeproj/project.pbxproj rename to examples/example_apple/imguiex.xcodeproj/project.pbxproj diff --git a/examples/opengl2_example/Makefile b/examples/example_glfw_opengl2/Makefile similarity index 98% rename from examples/opengl2_example/Makefile rename to examples/example_glfw_opengl2/Makefile index 36f8baa5..7ec7eeee 100644 --- a/examples/opengl2_example/Makefile +++ b/examples/example_glfw_opengl2/Makefile @@ -14,7 +14,7 @@ #CXX = g++ #CXX = clang++ -EXE = opengl2_example +EXE = example_glfw_opengl2 SOURCES = main.cpp SOURCES += ../imgui_impl_glfw.cpp ../imgui_impl_opengl2.cpp SOURCES += ../../imgui.cpp ../../imgui_demo.cpp ../../imgui_draw.cpp diff --git a/examples/opengl2_example/build_win32.bat b/examples/example_glfw_opengl2/build_win32.bat similarity index 65% rename from examples/opengl2_example/build_win32.bat rename to examples/example_glfw_opengl2/build_win32.bat index c7a8073a..538d9a52 100644 --- a/examples/opengl2_example/build_win32.bat +++ b/examples/example_glfw_opengl2/build_win32.bat @@ -1,3 +1,3 @@ @REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\glfw\include *.cpp ..\imgui_impl_opengl2.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeDebug/opengl2_example.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 glfw3.lib opengl32.lib gdi32.lib shell32.lib +cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\glfw\include *.cpp ..\imgui_impl_opengl2.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeDebug/example_glfw_opengl2.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 glfw3.lib opengl32.lib gdi32.lib shell32.lib diff --git a/examples/opengl2_example/opengl2_example.vcxproj b/examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj similarity index 99% rename from examples/opengl2_example/opengl2_example.vcxproj rename to examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj index 927ddfa5..acec434b 100644 --- a/examples/opengl2_example/opengl2_example.vcxproj +++ b/examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj @@ -20,7 +20,7 @@ {9CDA7840-B7A5-496D-A527-E95571496D18} - opengl2_example + example_glfw_opengl2 diff --git a/examples/opengl2_example/opengl2_example.vcxproj.filters b/examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj.filters similarity index 100% rename from examples/opengl2_example/opengl2_example.vcxproj.filters rename to examples/example_glfw_opengl2/example_glfw_opengl2.vcxproj.filters diff --git a/examples/opengl2_example/main.cpp b/examples/example_glfw_opengl2/main.cpp similarity index 100% rename from examples/opengl2_example/main.cpp rename to examples/example_glfw_opengl2/main.cpp diff --git a/examples/opengl3_example/Makefile b/examples/example_glfw_opengl3/Makefile similarity index 98% rename from examples/opengl3_example/Makefile rename to examples/example_glfw_opengl3/Makefile index c6ce9a48..8cfc9f30 100644 --- a/examples/opengl3_example/Makefile +++ b/examples/example_glfw_opengl3/Makefile @@ -14,7 +14,7 @@ #CXX = g++ #CXX = clang++ -EXE = opengl3_example +EXE = example_glfw_opengl3 SOURCES = main.cpp SOURCES += ../imgui_impl_glfw.cpp ../imgui_impl_opengl3.cpp SOURCES += ../../imgui.cpp ../../imgui_demo.cpp ../../imgui_draw.cpp diff --git a/examples/opengl3_example/build_win32.bat b/examples/example_glfw_opengl3/build_win32.bat similarity index 60% rename from examples/opengl3_example/build_win32.bat rename to examples/example_glfw_opengl3/build_win32.bat index f6f02168..8b54affd 100644 --- a/examples/opengl3_example/build_win32.bat +++ b/examples/example_glfw_opengl3/build_win32.bat @@ -1,3 +1,3 @@ @REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. mkdir Debug -cl /nologo /Zi /MD /I ..\.. /I ..\libs\glfw\include /I ..\libs\gl3w *.cpp ..\imgui_impl_glfw.cpp ..\imgui_impl_opengl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /FeDebug/opengl_example3.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 glfw3.lib opengl32.lib gdi32.lib shell32.lib +cl /nologo /Zi /MD /I ..\.. /I ..\libs\glfw\include /I ..\libs\gl3w *.cpp ..\imgui_impl_glfw.cpp ..\imgui_impl_opengl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /FeDebug/example_glfw_opengl3.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 glfw3.lib opengl32.lib gdi32.lib shell32.lib diff --git a/examples/opengl3_example/opengl3_example.vcxproj b/examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj similarity index 99% rename from examples/opengl3_example/opengl3_example.vcxproj rename to examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj index 34bae251..07f28e30 100644 --- a/examples/opengl3_example/opengl3_example.vcxproj +++ b/examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj @@ -20,7 +20,7 @@ {4a1fb5ea-22f5-42a8-ab92-1d2df5d47fb9} - opengl3_example + example_glfw_opengl3 diff --git a/examples/opengl3_example/opengl3_example.vcxproj.filters b/examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj.filters similarity index 100% rename from examples/opengl3_example/opengl3_example.vcxproj.filters rename to examples/example_glfw_opengl3/example_glfw_opengl3.vcxproj.filters diff --git a/examples/opengl3_example/main.cpp b/examples/example_glfw_opengl3/main.cpp similarity index 100% rename from examples/opengl3_example/main.cpp rename to examples/example_glfw_opengl3/main.cpp diff --git a/examples/vulkan_example/CMakeLists.txt b/examples/example_glfw_vulkan/CMakeLists.txt similarity index 76% rename from examples/vulkan_example/CMakeLists.txt rename to examples/example_glfw_vulkan/CMakeLists.txt index d05b4516..f9adc77e 100644 --- a/examples/vulkan_example/CMakeLists.txt +++ b/examples/example_glfw_vulkan/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 2.8) -project(ImGuiGLFWVulkanExample C CXX) +project(imgui_example_glfw_vulkan C CXX) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE) @@ -32,5 +32,5 @@ include_directories(${GLFW_DIR}/deps) file(GLOB sources *.cpp) -add_executable(vulkan_example ${sources} ${IMGUI_DIR}/imgui.cpp ${IMGUI_DIR}/imgui_draw.cpp ${IMGUI_DIR}/imgui_demo.cpp) -target_link_libraries(vulkan_example ${LIBRARIES}) +add_executable(example_glfw_vulkan ${sources} ${IMGUI_DIR}/examples/imgui_impl_glfw.cpp ${IMGUI_DIR}/examples/imgui_impl_vulkan.cpp ${IMGUI_DIR}/imgui.cpp ${IMGUI_DIR}/imgui_draw.cpp ${IMGUI_DIR}/imgui_demo.cpp) +target_link_libraries(example_glfw_vulkan ${LIBRARIES}) diff --git a/examples/example_glfw_vulkan/build_win32.bat b/examples/example_glfw_vulkan/build_win32.bat new file mode 100644 index 00000000..0d991b9d --- /dev/null +++ b/examples/example_glfw_vulkan/build_win32.bat @@ -0,0 +1,7 @@ +@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. + +mkdir Debug +cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeDebug/example_glfw_vulkan.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 /libpath:%VULKAN_SDK%\lib32 glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib + +mkdir Release +cl /nologo /Zi /MD /Ox /Oi /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeRelease/example_glfw_vulkan.exe /FoRelease/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 /libpath:%VULKAN_SDK%\lib32 glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib diff --git a/examples/example_glfw_vulkan/build_win64.bat b/examples/example_glfw_vulkan/build_win64.bat new file mode 100644 index 00000000..ddedf597 --- /dev/null +++ b/examples/example_glfw_vulkan/build_win64.bat @@ -0,0 +1,7 @@ +@REM Build for Visual Studio compiler. Run your copy of amd64/vcvars32.bat to setup 64-bit command-line compiler. + +mkdir Debug +cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeDebug/example_glfw_vulkan.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-64 /libpath:%VULKAN_SDK%\lib glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib + +mkdir Release +cl /nologo /Zi /MD /Ox /Oi /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeRelease/example_glfw_vulkan.exe /FoRelease/ /link /LIBPATH:..\libs\glfw\lib-vc2010-64 /libpath:%VULKAN_SDK%\lib glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib diff --git a/examples/vulkan_example/vulkan_example.vcxproj b/examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj similarity index 99% rename from examples/vulkan_example/vulkan_example.vcxproj rename to examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj index 3a0a9947..04b55082 100644 --- a/examples/vulkan_example/vulkan_example.vcxproj +++ b/examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj @@ -20,7 +20,7 @@ {57E2DF5A-6FC8-45BB-99DD-91A18C646E80} - vulkan_example + example_glfw_vulkan diff --git a/examples/vulkan_example/vulkan_example.vcxproj.filters b/examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj.filters similarity index 100% rename from examples/vulkan_example/vulkan_example.vcxproj.filters rename to examples/example_glfw_vulkan/example_glfw_vulkan.vcxproj.filters diff --git a/examples/vulkan_example/gen_spv.sh b/examples/example_glfw_vulkan/gen_spv.sh similarity index 100% rename from examples/vulkan_example/gen_spv.sh rename to examples/example_glfw_vulkan/gen_spv.sh diff --git a/examples/vulkan_example/glsl_shader.frag b/examples/example_glfw_vulkan/glsl_shader.frag similarity index 100% rename from examples/vulkan_example/glsl_shader.frag rename to examples/example_glfw_vulkan/glsl_shader.frag diff --git a/examples/vulkan_example/glsl_shader.vert b/examples/example_glfw_vulkan/glsl_shader.vert similarity index 100% rename from examples/vulkan_example/glsl_shader.vert rename to examples/example_glfw_vulkan/glsl_shader.vert diff --git a/examples/vulkan_example/main.cpp b/examples/example_glfw_vulkan/main.cpp similarity index 100% rename from examples/vulkan_example/main.cpp rename to examples/example_glfw_vulkan/main.cpp diff --git a/examples/marmalade_example/data/app.icf b/examples/example_marmalade/data/app.icf similarity index 100% rename from examples/marmalade_example/data/app.icf rename to examples/example_marmalade/data/app.icf diff --git a/examples/marmalade_example/main.cpp b/examples/example_marmalade/main.cpp similarity index 100% rename from examples/marmalade_example/main.cpp rename to examples/example_marmalade/main.cpp diff --git a/examples/marmalade_example/marmalade_example.mkb b/examples/example_marmalade/marmalade_example.mkb similarity index 100% rename from examples/marmalade_example/marmalade_example.mkb rename to examples/example_marmalade/marmalade_example.mkb diff --git a/examples/null_example/build_win32.bat b/examples/example_null/build_win32.bat similarity index 54% rename from examples/null_example/build_win32.bat rename to examples/example_null/build_win32.bat index 7bb78232..12cb70ab 100644 --- a/examples/null_example/build_win32.bat +++ b/examples/example_null/build_win32.bat @@ -1,3 +1,3 @@ @REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. mkdir Debug -cl /nologo /Zi /MD /I ..\.. *.cpp ..\..\*.cpp /FeDebug/null_example.exe /FoDebug/ /link gdi32.lib shell32.lib +cl /nologo /Zi /MD /I ..\.. *.cpp ..\..\*.cpp /FeDebug/example_null.exe /FoDebug/ /link gdi32.lib shell32.lib diff --git a/examples/null_example/main.cpp b/examples/example_null/main.cpp similarity index 100% rename from examples/null_example/main.cpp rename to examples/example_null/main.cpp diff --git a/examples/sdl_opengl2_example/Makefile b/examples/example_sdl_opengl2/Makefile similarity index 93% rename from examples/sdl_opengl2_example/Makefile rename to examples/example_sdl_opengl2/Makefile index 1fa4a91d..a295ac22 100644 --- a/examples/sdl_opengl2_example/Makefile +++ b/examples/example_sdl_opengl2/Makefile @@ -14,8 +14,8 @@ #CXX = g++ #CXX = clang++ -EXE = sdl_opengl2_example -SOURCES = main.cpp ../imgui_impl_sdl2.cpp ../imgui_impl_opengl2.cpp +EXE = example_sdl_opengl2 +SOURCES = main.cpp ../imgui_impl_sdl.cpp ../imgui_impl_opengl2.cpp SOURCES += ../../imgui.cpp ../../imgui_demo.cpp ../../imgui_draw.cpp OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES)))) diff --git a/examples/example_sdl_opengl2/README.md b/examples/example_sdl_opengl2/README.md new file mode 100644 index 00000000..a8bfc880 --- /dev/null +++ b/examples/example_sdl_opengl2/README.md @@ -0,0 +1,22 @@ + +# How to Build + +- On Windows with Visual Studio's CLI + +``` +set SDL2DIR=path_to_your_sdl2_folder +cl /Zi /MD /I %SDL2DIR%\include /I ..\.. main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl2.cpp ..\..\imgui*.cpp /link /LIBPATH:%SDL2DIR%\lib SDL2.lib SDL2main.lib opengl32.lib /subsystem:console +``` + +- On Linux and similar Unixes + +``` +c++ `sdl2-config --cflags` -I ../.. main.cpp ../imgui_impl_sdl.cpp ../imgui_impl_opengl2.cpp ../../imgui*.cpp `sdl2-config --libs` -lGL +``` + +- On Mac OS X + +``` +brew install sdl2 +c++ `sdl2-config --cflags` -I ../.. main.cpp ../imgui_impl_sdl.cpp ../imgui_impl_opengl2.cpp ../../imgui*.cpp `sdl2-config --libs` -framework OpenGl +``` diff --git a/examples/example_sdl_opengl2/build_win32.bat b/examples/example_sdl_opengl2/build_win32.bat new file mode 100644 index 00000000..bc2eb3b2 --- /dev/null +++ b/examples/example_sdl_opengl2/build_win32.bat @@ -0,0 +1,3 @@ +@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. +mkdir Debug +cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\gl3w /I %SDL2_DIR%\include *.cpp ..\imgui_impl_opengl2.cpp ..\imgui_impl_sdl.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /FeDebug/example_sdl_opengl2.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console diff --git a/examples/sdl_opengl2_example/sdl_opengl2_example.vcxproj b/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj similarity index 98% rename from examples/sdl_opengl2_example/sdl_opengl2_example.vcxproj rename to examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj index 6bc24caa..bdec85b3 100644 --- a/examples/sdl_opengl2_example/sdl_opengl2_example.vcxproj +++ b/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj @@ -20,7 +20,7 @@ {2AE17FDE-F7F3-4CAC-ADAB-0710EDA4F741} - opengl3_example + example_sdl_opengl2 @@ -154,7 +154,7 @@ - + @@ -162,7 +162,7 @@ - + diff --git a/examples/sdl_opengl2_example/sdl_opengl2_example.vcxproj.filters b/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj.filters similarity index 93% rename from examples/sdl_opengl2_example/sdl_opengl2_example.vcxproj.filters rename to examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj.filters index f129cc25..602fa0b0 100644 --- a/examples/sdl_opengl2_example/sdl_opengl2_example.vcxproj.filters +++ b/examples/example_sdl_opengl2/example_sdl_opengl2.vcxproj.filters @@ -22,7 +22,7 @@ sources - + sources @@ -42,7 +42,7 @@ sources - + sources diff --git a/examples/sdl_opengl2_example/main.cpp b/examples/example_sdl_opengl2/main.cpp similarity index 99% rename from examples/sdl_opengl2_example/main.cpp rename to examples/example_sdl_opengl2/main.cpp index 10e9d319..5a4dbd4e 100644 --- a/examples/sdl_opengl2_example/main.cpp +++ b/examples/example_sdl_opengl2/main.cpp @@ -7,7 +7,7 @@ // See imgui_impl_sdl.cpp for details. #include "imgui.h" -#include "imgui_impl_sdl2.h" +#include "imgui_impl_sdl.h" #include "imgui_impl_opengl2.h" #include #include diff --git a/examples/sdl_opengl3_example/Makefile b/examples/example_sdl_opengl3/Makefile similarity index 94% rename from examples/sdl_opengl3_example/Makefile rename to examples/example_sdl_opengl3/Makefile index 3870ec86..fb826cbc 100644 --- a/examples/sdl_opengl3_example/Makefile +++ b/examples/example_sdl_opengl3/Makefile @@ -14,9 +14,9 @@ #CXX = g++ #CXX = clang++ -EXE = sdl_opengl3_example +EXE = example_sdl_opengl3 SOURCES = main.cpp -SOURCES += ../imgui_impl_sdl2.cpp ../imgui_impl_opengl3.cpp +SOURCES += ../imgui_impl_sdl.cpp ../imgui_impl_opengl3.cpp SOURCES += ../../imgui.cpp ../../imgui_demo.cpp ../../imgui_draw.cpp SOURCES += ../libs/gl3w/GL/gl3w.c OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES)))) diff --git a/examples/example_sdl_opengl3/README.md b/examples/example_sdl_opengl3/README.md new file mode 100644 index 00000000..3de6666a --- /dev/null +++ b/examples/example_sdl_opengl3/README.md @@ -0,0 +1,22 @@ + +# How to Build + +- On Windows with Visual Studio's CLI + +``` +set SDL2DIR=path_to_your_sdl2_folder +cl /Zi /MD /I ..\.. /I ..\libs\gl3w /I %SDL2DIR%\include main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /link /libpath:%SDL2DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console +``` + +- On Linux and similar Unixes + +``` +c++ `sdl2-config --cflags` -I ../.. -I ../libs/gl3w main.cpp ../imgui_impl_sdl.cpp ../imgui_impl_opengl3.cpp ../../imgui*.cpp ../libs/gl3w/GL/gl3w.c `sdl2-config --libs` -lGL -ldl +``` + +- On Mac OS X + +``` +brew install sdl2 +c++ `sdl2-config --cflags` -I ../.. -I ../libs/gl3w main.cpp ../imgui_impl_sdl.cpp ../imgui_impl_opengl3.cpp ../../imgui*.cpp ../libs/gl3w/GL/gl3w.c `sdl2-config --libs` -framework OpenGl -framework CoreFoundation +``` diff --git a/examples/example_sdl_opengl3/build_win32.bat b/examples/example_sdl_opengl3/build_win32.bat new file mode 100644 index 00000000..d2cfa67f --- /dev/null +++ b/examples/example_sdl_opengl3/build_win32.bat @@ -0,0 +1,3 @@ +@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. +mkdir Debug +cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\gl3w /I %SDL2_DIR%\include *.cpp ..\imgui_impl_opengl3.cpp ..\imgui_impl_sdl.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /FeDebug/example_sdl_opengl3.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console diff --git a/examples/sdl_opengl3_example/sdl_opengl3_example.vcxproj b/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj similarity index 98% rename from examples/sdl_opengl3_example/sdl_opengl3_example.vcxproj rename to examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj index c8ebb094..b194e620 100644 --- a/examples/sdl_opengl3_example/sdl_opengl3_example.vcxproj +++ b/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj @@ -20,7 +20,7 @@ {BBAEB705-1669-40F3-8567-04CF6A991F4C} - opengl3_example + example_sdl_opengl3 @@ -154,7 +154,7 @@ - + @@ -163,7 +163,7 @@ - + diff --git a/examples/sdl_opengl3_example/sdl_opengl3_example.vcxproj.filters b/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj.filters similarity index 95% rename from examples/sdl_opengl3_example/sdl_opengl3_example.vcxproj.filters rename to examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj.filters index 93d321a2..87ae4313 100644 --- a/examples/sdl_opengl3_example/sdl_opengl3_example.vcxproj.filters +++ b/examples/example_sdl_opengl3/example_sdl_opengl3.vcxproj.filters @@ -31,7 +31,7 @@ sources - + sources @@ -54,7 +54,7 @@ sources - + sources diff --git a/examples/sdl_opengl3_example/main.cpp b/examples/example_sdl_opengl3/main.cpp similarity index 99% rename from examples/sdl_opengl3_example/main.cpp rename to examples/example_sdl_opengl3/main.cpp index c9d5ec88..cdb7fce2 100644 --- a/examples/sdl_opengl3_example/main.cpp +++ b/examples/example_sdl_opengl3/main.cpp @@ -4,7 +4,7 @@ // (GL3W is a helper library to access OpenGL functions since there is no standard header to access modern OpenGL functions easily. Alternatives are GLEW, Glad, etc.) #include "imgui.h" -#include "imgui_impl_sdl2.h" +#include "imgui_impl_sdl.h" #include "imgui_impl_opengl3.h" #include #include // This example is using gl3w to access OpenGL functions (because it is small). You may use glew/glad/glLoadGen/etc. whatever already works for you. diff --git a/examples/sdl_vulkan_example/sdl_vulkan_example.vcxproj b/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj similarity index 98% rename from examples/sdl_vulkan_example/sdl_vulkan_example.vcxproj rename to examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj index 8b4d648c..3d2a424a 100644 --- a/examples/sdl_vulkan_example/sdl_vulkan_example.vcxproj +++ b/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj @@ -20,7 +20,7 @@ {BAE3D0B5-9695-4EB1-AD0F-75890EB4A3B3} - sdl_vulkan_example + example_sdl_vulkan @@ -153,7 +153,7 @@ - + @@ -161,7 +161,7 @@ - + diff --git a/examples/sdl_vulkan_example/sdl_vulkan_example.vcxproj.filters b/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj.filters similarity index 93% rename from examples/sdl_vulkan_example/sdl_vulkan_example.vcxproj.filters rename to examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj.filters index 35e8aa1f..4f7c7928 100644 --- a/examples/sdl_vulkan_example/sdl_vulkan_example.vcxproj.filters +++ b/examples/example_sdl_vulkan/example_sdl_vulkan.vcxproj.filters @@ -19,7 +19,7 @@ imgui - + sources @@ -39,7 +39,7 @@ imgui - + sources diff --git a/examples/sdl_vulkan_example/main.cpp b/examples/example_sdl_vulkan/main.cpp similarity index 99% rename from examples/sdl_vulkan_example/main.cpp rename to examples/example_sdl_vulkan/main.cpp index 64850d92..d0f6f295 100644 --- a/examples/sdl_vulkan_example/main.cpp +++ b/examples/example_sdl_vulkan/main.cpp @@ -2,7 +2,7 @@ // If you are new to ImGui, see examples/README.txt and documentation at the top of imgui.cpp. #include "imgui.h" -#include "imgui_impl_sdl2.h" +#include "imgui_impl_sdl.h" #include "imgui_impl_vulkan.h" #include // printf, fprintf #include // abort diff --git a/examples/directx10_example/build_win32.bat b/examples/example_win32_directx10/build_win32.bat similarity index 70% rename from examples/directx10_example/build_win32.bat rename to examples/example_win32_directx10/build_win32.bat index 9d806ab7..d79cb8f7 100644 --- a/examples/directx10_example/build_win32.bat +++ b/examples/example_win32_directx10/build_win32.bat @@ -1,4 +1,4 @@ @REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /I "%DXSDK_DIR%Include" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_win32.cpp ..\imgui_impl_dx10.cpp ..\..\imgui*.cpp /FeDebug/directx10_example.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d10.lib d3dcompiler.lib +cl /nologo /Zi /MD /I .. /I ..\.. /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /I "%DXSDK_DIR%Include" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_win32.cpp ..\imgui_impl_dx10.cpp ..\..\imgui*.cpp /FeDebug/example_win32_directx10.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d10.lib d3dcompiler.lib diff --git a/examples/directx10_example/directx10_example.vcxproj b/examples/example_win32_directx10/example_win32_directx10.vcxproj similarity index 100% rename from examples/directx10_example/directx10_example.vcxproj rename to examples/example_win32_directx10/example_win32_directx10.vcxproj diff --git a/examples/directx10_example/directx10_example.vcxproj.filters b/examples/example_win32_directx10/example_win32_directx10.vcxproj.filters similarity index 100% rename from examples/directx10_example/directx10_example.vcxproj.filters rename to examples/example_win32_directx10/example_win32_directx10.vcxproj.filters diff --git a/examples/directx10_example/main.cpp b/examples/example_win32_directx10/main.cpp similarity index 100% rename from examples/directx10_example/main.cpp rename to examples/example_win32_directx10/main.cpp diff --git a/examples/directx11_example/build_win32.bat b/examples/example_win32_directx11/build_win32.bat similarity index 70% rename from examples/directx11_example/build_win32.bat rename to examples/example_win32_directx11/build_win32.bat index eefeed98..05e6a6f6 100644 --- a/examples/directx11_example/build_win32.bat +++ b/examples/example_win32_directx11/build_win32.bat @@ -1,4 +1,4 @@ @REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /I "%DXSDK_DIR%Include" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_dx11.cpp ..\imgui_impl_win32.cpp ..\..\imgui*.cpp /FeDebug/directx11_example.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d11.lib d3dcompiler.lib +cl /nologo /Zi /MD /I .. /I ..\.. /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /I "%DXSDK_DIR%Include" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_dx11.cpp ..\imgui_impl_win32.cpp ..\..\imgui*.cpp /FeDebug/example_win32_directx11.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d11.lib d3dcompiler.lib diff --git a/examples/directx11_example/directx11_example.vcxproj b/examples/example_win32_directx11/example_win32_directx11.vcxproj similarity index 99% rename from examples/directx11_example/directx11_example.vcxproj rename to examples/example_win32_directx11/example_win32_directx11.vcxproj index 77f56fea..9aa09865 100644 --- a/examples/directx11_example/directx11_example.vcxproj +++ b/examples/example_win32_directx11/example_win32_directx11.vcxproj @@ -20,7 +20,7 @@ {9F316E83-5AE5-4939-A723-305A94F48005} - directx11_example + example_win32_directx11 diff --git a/examples/directx11_example/directx11_example.vcxproj.filters b/examples/example_win32_directx11/example_win32_directx11.vcxproj.filters similarity index 100% rename from examples/directx11_example/directx11_example.vcxproj.filters rename to examples/example_win32_directx11/example_win32_directx11.vcxproj.filters diff --git a/examples/directx11_example/main.cpp b/examples/example_win32_directx11/main.cpp similarity index 100% rename from examples/directx11_example/main.cpp rename to examples/example_win32_directx11/main.cpp diff --git a/examples/directx12_example/build_win32.bat b/examples/example_win32_directx12/build_win32.bat similarity index 78% rename from examples/directx12_example/build_win32.bat rename to examples/example_win32_directx12/build_win32.bat index 066e37cb..2cd7fcdf 100644 --- a/examples/directx12_example/build_win32.bat +++ b/examples/example_win32_directx12/build_win32.bat @@ -1,4 +1,4 @@ @REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_dx12.cpp ..\imgui_impl_win32.cpp ..\..\imgui*.cpp /FeDebug/directx12_example.exe /FoDebug/ /link d3d12.lib d3dcompiler.lib dxgi.lib +cl /nologo /Zi /MD /I .. /I ..\.. /I "%WindowsSdkDir%Include\um" /I "%WindowsSdkDir%Include\shared" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_dx12.cpp ..\imgui_impl_win32.cpp ..\..\imgui*.cpp /FeDebug/example_win32_directx12.exe /FoDebug/ /link d3d12.lib d3dcompiler.lib dxgi.lib diff --git a/examples/directx12_example/directx12_example.vcxproj b/examples/example_win32_directx12/example_win32_directx12.vcxproj similarity index 100% rename from examples/directx12_example/directx12_example.vcxproj rename to examples/example_win32_directx12/example_win32_directx12.vcxproj diff --git a/examples/directx12_example/directx12_example.vcxproj.filters b/examples/example_win32_directx12/example_win32_directx12.vcxproj.filters similarity index 100% rename from examples/directx12_example/directx12_example.vcxproj.filters rename to examples/example_win32_directx12/example_win32_directx12.vcxproj.filters diff --git a/examples/directx12_example/main.cpp b/examples/example_win32_directx12/main.cpp similarity index 100% rename from examples/directx12_example/main.cpp rename to examples/example_win32_directx12/main.cpp diff --git a/examples/directx9_example/build_win32.bat b/examples/example_win32_directx9/build_win32.bat similarity index 69% rename from examples/directx9_example/build_win32.bat rename to examples/example_win32_directx9/build_win32.bat index 76743865..4db27653 100644 --- a/examples/directx9_example/build_win32.bat +++ b/examples/example_win32_directx9/build_win32.bat @@ -1,3 +1,3 @@ @REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I "%DXSDK_DIR%/Include" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_dx9.cpp ..\imgui_impl_win32.cpp ..\..\imgui*.cpp /FeDebug/directx9_example.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d9.lib +cl /nologo /Zi /MD /I .. /I ..\.. /I "%DXSDK_DIR%/Include" /D UNICODE /D _UNICODE *.cpp ..\imgui_impl_dx9.cpp ..\imgui_impl_win32.cpp ..\..\imgui*.cpp /FeDebug/example_win32_directx9.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d9.lib diff --git a/examples/directx9_example/directx9_example.vcxproj b/examples/example_win32_directx9/example_win32_directx9.vcxproj similarity index 99% rename from examples/directx9_example/directx9_example.vcxproj rename to examples/example_win32_directx9/example_win32_directx9.vcxproj index 83d06f60..ebc8a921 100644 --- a/examples/directx9_example/directx9_example.vcxproj +++ b/examples/example_win32_directx9/example_win32_directx9.vcxproj @@ -20,7 +20,7 @@ {4165A294-21F2-44CA-9B38-E3F935ABADF5} - directx9_example + example_win32_directx9 diff --git a/examples/directx9_example/directx9_example.vcxproj.filters b/examples/example_win32_directx9/example_win32_directx9.vcxproj.filters similarity index 100% rename from examples/directx9_example/directx9_example.vcxproj.filters rename to examples/example_win32_directx9/example_win32_directx9.vcxproj.filters diff --git a/examples/directx9_example/main.cpp b/examples/example_win32_directx9/main.cpp similarity index 100% rename from examples/directx9_example/main.cpp rename to examples/example_win32_directx9/main.cpp diff --git a/examples/imgui_examples.sln b/examples/imgui_examples.sln index 1310b776..dd27ca13 100644 --- a/examples/imgui_examples.sln +++ b/examples/imgui_examples.sln @@ -3,15 +3,15 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opengl2_example", "opengl2_example\opengl2_example.vcxproj", "{9CDA7840-B7A5-496D-A527-E95571496D18}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_win32_directx9", "example_win32_directx9\example_win32_directx9.vcxproj", "{4165A294-21F2-44CA-9B38-E3F935ABADF5}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "directx9_example", "directx9_example\directx9_example.vcxproj", "{4165A294-21F2-44CA-9B38-E3F935ABADF5}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_win32_directx10", "example_win32_directx10\example_win32_directx10.vcxproj", "{345A953E-A004-4648-B442-DC5F9F11068C}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "directx11_example", "directx11_example\directx11_example.vcxproj", "{9F316E83-5AE5-4939-A723-305A94F48005}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_win32_directx11", "example_win32_directx11\example_win32_directx11.vcxproj", "{9F316E83-5AE5-4939-A723-305A94F48005}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opengl3_example", "opengl3_example\opengl3_example.vcxproj", "{4A1FB5EA-22F5-42A8-AB92-1D2DF5D47FB9}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_glfw_opengl2", "example_glfw_opengl2\example_glfw_opengl2.vcxproj", "{9CDA7840-B7A5-496D-A527-E95571496D18}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "directx10_example", "directx10_example\directx10_example.vcxproj", "{345A953E-A004-4648-B442-DC5F9F11068C}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example_glfw_opengl3", "example_glfw_opengl3\example_glfw_opengl3.vcxproj", "{4A1FB5EA-22F5-42A8-AB92-1D2DF5D47FB9}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sdl_opengl2_example", "sdl_opengl2_example\sdl_opengl2_example.vcxproj", "{2AE17FDE-F7F3-4CAC-ADAB-0710EDA4F741}" EndProject diff --git a/examples/imgui_impl_sdl2.cpp b/examples/imgui_impl_sdl.cpp similarity index 98% rename from examples/imgui_impl_sdl2.cpp rename to examples/imgui_impl_sdl.cpp index dcc2e41d..db4f4d84 100644 --- a/examples/imgui_impl_sdl2.cpp +++ b/examples/imgui_impl_sdl.cpp @@ -15,8 +15,8 @@ // CHANGELOG // (minor and older changes stripped away, please see git history for details) // 2018-XX-XX: Platform: Added support for multiple windows via the ImGuiPlatformIO interface. -// 2018-06-08: Misc: Extracted imgui_impl_sdl2.cpp/.h away from the old combined SDL2+OpenGL/Vulkan examples. -// 2018-06-08: Misc: Renamed ImGui_ImplSDL2_Init() to ImGui_ImplSDL2_InitForOpenGL() which now takes the SDL_GLContext parameter. +// 2018-06-08: Misc: Extracted imgui_impl_sdl.cpp/.h away from the old combined SDL2+OpenGL/Vulkan examples. +// 2018-06-08: Misc: ImGui_ImplSDL2_InitForOpenGL() now takes a SDL_GLContext parameter. // 2018-05-09: Misc: Fixed clipboard paste memory leak (we didn't call SDL_FreeMemory on the data returned by SDL_GetClipboardText). // 2018-03-20: Misc: Setup io.BackendFlags ImGuiBackendFlags_HasMouseCursors flag + honor ImGuiConfigFlags_NoMouseCursorChange flag. // 2018-02-16: Inputs: Added support for mouse cursors, honoring ImGui::GetMouseCursor() value. @@ -31,7 +31,7 @@ // 2016-10-15: Misc: Added a void* user_data parameter to Clipboard function handlers. #include "imgui.h" -#include "imgui_impl_sdl2.h" +#include "imgui_impl_sdl.h" // SDL // (the multi-viewports feature requires SDL features supported from SDL 2.0.5+) diff --git a/examples/imgui_impl_sdl2.h b/examples/imgui_impl_sdl.h similarity index 100% rename from examples/imgui_impl_sdl2.h rename to examples/imgui_impl_sdl.h diff --git a/examples/sdl_opengl2_example/README.md b/examples/sdl_opengl2_example/README.md deleted file mode 100644 index a1a44a58..00000000 --- a/examples/sdl_opengl2_example/README.md +++ /dev/null @@ -1,22 +0,0 @@ - -# How to Build - -- On Windows with Visual Studio's CLI - -``` -set SDL2DIR=path_to_your_sdl2_folder -cl /Zi /MD /I %SDL2DIR%\include /I ..\.. main.cpp imgui_impl_sdl_gl2.cpp ..\..\imgui*.cpp /link /LIBPATH:%SDL2DIR%\lib SDL2.lib SDL2main.lib opengl32.lib /subsystem:console -``` - -- On Linux and similar Unixes - -``` -c++ `sdl2-config --cflags` -I ../.. main.cpp imgui_impl_sdl_gl2.cpp ../../imgui*.cpp `sdl2-config --libs` -lGL -o sdl2example -``` - -- On Mac OS X - -``` -brew install sdl2 -c++ `sdl2-config --cflags` -I ../.. main.cpp imgui_impl_sdl_gl2.cpp ../../imgui*.cpp `sdl2-config --libs` -framework OpenGl -o sdl2example -``` diff --git a/examples/sdl_opengl2_example/build_win32.bat b/examples/sdl_opengl2_example/build_win32.bat deleted file mode 100644 index be0f75a7..00000000 --- a/examples/sdl_opengl2_example/build_win32.bat +++ /dev/null @@ -1,3 +0,0 @@ -@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. -mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\gl3w /I %SDL2_DIR%\include *.cpp ..\imgui_impl_opengl2.cpp ..\imgui_impl_sdl2.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /FeDebug/sdl_opengl2_example.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console diff --git a/examples/sdl_opengl3_example/README.md b/examples/sdl_opengl3_example/README.md deleted file mode 100644 index a982ff56..00000000 --- a/examples/sdl_opengl3_example/README.md +++ /dev/null @@ -1,22 +0,0 @@ - -# How to Build - -- On Windows with Visual Studio's CLI - -``` -set SDL2DIR=path_to_your_sdl2_folder -cl /Zi /MD /I ..\.. /I ..\libs\gl3w /I %SDL2DIR%\include main.cpp imgui_impl_sdl_gl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /link /libpath:%SDL2DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console -``` - -- On Linux and similar Unixes - -``` -c++ `sdl2-config --cflags` -I ../.. -I ../libs/gl3w main.cpp imgui_impl_sdl_gl3.cpp ../../imgui*.cpp ../libs/gl3w/GL/gl3w.c `sdl2-config --libs` -lGL -ldl -o sdl2example -``` - -- On Mac OS X - -``` -brew install sdl2 -c++ `sdl2-config --cflags` -I ../.. -I ../libs/gl3w main.cpp imgui_impl_sdl_gl3.cpp ../../imgui*.cpp ../libs/gl3w/GL/gl3w.c `sdl2-config --libs` -framework OpenGl -framework CoreFoundation -o sdl2example -``` diff --git a/examples/sdl_opengl3_example/build_win32.bat b/examples/sdl_opengl3_example/build_win32.bat deleted file mode 100644 index e933a862..00000000 --- a/examples/sdl_opengl3_example/build_win32.bat +++ /dev/null @@ -1,3 +0,0 @@ -@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. -mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\gl3w /I %SDL2_DIR%\include *.cpp ..\imgui_impl_opengl3.cpp ..\imgui_impl_sdl2.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /FeDebug/sdl_opengl3_example.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console diff --git a/examples/vulkan_example/build_win32.bat b/examples/vulkan_example/build_win32.bat deleted file mode 100644 index e5789301..00000000 --- a/examples/vulkan_example/build_win32.bat +++ /dev/null @@ -1,7 +0,0 @@ -@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler. - -mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeDebug/vulkan_example.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 /libpath:%VULKAN_SDK%\lib32 glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib - -mkdir Release -cl /nologo /Zi /MD /Ox /Oi /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeRelease/vulkan_example.exe /FoRelease/ /link /LIBPATH:..\libs\glfw\lib-vc2010-32 /libpath:%VULKAN_SDK%\lib32 glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib diff --git a/examples/vulkan_example/build_win64.bat b/examples/vulkan_example/build_win64.bat deleted file mode 100644 index 871370c5..00000000 --- a/examples/vulkan_example/build_win64.bat +++ /dev/null @@ -1,7 +0,0 @@ -@REM Build for Visual Studio compiler. Run your copy of amd64/vcvars32.bat to setup 64-bit command-line compiler. - -mkdir Debug -cl /nologo /Zi /MD /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeDebug/vulkan_example.exe /FoDebug/ /link /LIBPATH:..\libs\glfw\lib-vc2010-64 /libpath:%VULKAN_SDK%\lib glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib - -mkdir Release -cl /nologo /Zi /MD /Ox /Oi /I .. /I ..\.. /I ..\libs\glfw\include /I %VULKAN_SDK%\include *.cpp ..\imgui_impl_vulkan.cpp ..\imgui_impl_glfw.cpp ..\..\imgui*.cpp /FeRelease/vulkan_example.exe /FoRelease/ /link /LIBPATH:..\libs\glfw\lib-vc2010-64 /libpath:%VULKAN_SDK%\lib glfw3.lib opengl32.lib gdi32.lib shell32.lib vulkan-1.lib diff --git a/imgui.h b/imgui.h index fd58e943..9470648c 100644 --- a/imgui.h +++ b/imgui.h @@ -1725,13 +1725,15 @@ struct ImFontConfig int FontDataSize; // // TTF/OTF data size bool FontDataOwnedByAtlas; // true // TTF/OTF data ownership taken by the container ImFontAtlas (will delete memory itself). int FontNo; // 0 // Index of font within TTF/OTF file - float SizePixels; // // Size in pixels for rasterizer. + float SizePixels; // // Size in pixels for rasterizer (more or less maps to the resulting font height). int OversampleH; // 3 // Rasterize at higher quality for sub-pixel positioning. We don't use sub-pixel positions on the Y axis. int OversampleV; // 1 // Rasterize at higher quality for sub-pixel positioning. We don't use sub-pixel positions on the Y axis. bool PixelSnapH; // false // Align every glyph to pixel boundary. Useful e.g. if you are merging a non-pixel aligned font with the default font. If enabled, you can set OversampleH/V to 1. ImVec2 GlyphExtraSpacing; // 0, 0 // Extra spacing (in pixels) between glyphs. Only X axis is supported for now. ImVec2 GlyphOffset; // 0, 0 // Offset all glyphs from this font input. const ImWchar* GlyphRanges; // NULL // Pointer to a user-provided list of Unicode range (2 value per range, values are inclusive, zero-terminated list). THE ARRAY DATA NEEDS TO PERSIST AS LONG AS THE FONT IS ALIVE. + float GlyphMinAdvanceX; // 0 // Minimum AdvanceX for glyphs, set Min to align font icons, set both Min/Max to enforce mono-space font + float GlyphMaxAdvanceX; // FLT_MAX // Maximum AdvanceX for glyphs bool MergeMode; // false // Merge into previous ImFont, so you can combine multiple inputs font into one ImFont (e.g. ASCII font + icons + Japanese glyphs). You may want to use GlyphOffset.y when merge font of different heights. unsigned int RasterizerFlags; // 0x00 // Settings for custom font rasterizer (e.g. ImGuiFreeType). Leave as zero if you aren't using one. float RasterizerMultiply; // 1.0f // Brighten (>1.0f) or darken (<1.0f) font output. Brightening small fonts may be a good workaround to make them more readable. @@ -1814,7 +1816,7 @@ struct ImFontAtlas void SetBit(int n) { UsedChars[n >> 3] |= 1 << (n & 7); } // Set bit 'c' in the array void AddChar(ImWchar c) { SetBit(c); } // Add character IMGUI_API void AddText(const char* text, const char* text_end = NULL); // Add string (each character of the UTF-8 string are added) - IMGUI_API void AddRanges(const ImWchar* ranges); // Add ranges, e.g. builder.AddRanges(ImFontAtlas::GetGlyphRangesDefault) to force add all of ASCII/Latin+Ext + IMGUI_API void AddRanges(const ImWchar* ranges); // Add ranges, e.g. builder.AddRanges(ImFontAtlas::GetGlyphRangesDefault()) to force add all of ASCII/Latin+Ext IMGUI_API void BuildRanges(ImVector* out_ranges); // Output new ranges }; diff --git a/imgui_draw.cpp b/imgui_draw.cpp index dc290a20..093b8da6 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -1325,6 +1325,8 @@ ImFontConfig::ImFontConfig() GlyphExtraSpacing = ImVec2(0.0f, 0.0f); GlyphOffset = ImVec2(0.0f, 0.0f); GlyphRanges = NULL; + GlyphMinAdvanceX = 0.0f; + GlyphMaxAdvanceX = FLT_MAX; MergeMode = false; RasterizerFlags = 0x00; RasterizerMultiply = 1.0f; @@ -1867,8 +1869,8 @@ bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas) const float ascent = ImFloor(unscaled_ascent * font_scale + ((unscaled_ascent > 0.0f) ? +1 : -1)); const float descent = ImFloor(unscaled_descent * font_scale + ((unscaled_descent > 0.0f) ? +1 : -1)); ImFontAtlasBuildSetupFont(atlas, dst_font, &cfg, ascent, descent); - const float off_x = cfg.GlyphOffset.x; - const float off_y = cfg.GlyphOffset.y + (float)(int)(dst_font->Ascent + 0.5f); + const float font_off_x = cfg.GlyphOffset.x; + const float font_off_y = cfg.GlyphOffset.y + (float)(int)(dst_font->Ascent + 0.5f); for (int i = 0; i < tmp.RangesCount; i++) { @@ -1883,10 +1885,16 @@ bool ImFontAtlasBuildWithStbTruetype(ImFontAtlas* atlas) if (cfg.MergeMode && dst_font->FindGlyphNoFallback((unsigned short)codepoint)) continue; + float char_advance_x_org = pc.xadvance; + float char_advance_x_mod = ImClamp(char_advance_x_org, cfg.GlyphMinAdvanceX, cfg.GlyphMaxAdvanceX); + float char_off_x = font_off_x; + if (char_advance_x_org != char_advance_x_mod) + char_off_x += cfg.PixelSnapH ? (float)(int)((char_advance_x_mod - char_advance_x_org) * 0.5f) : (char_advance_x_mod - char_advance_x_org) * 0.5f; + stbtt_aligned_quad q; float dummy_x = 0.0f, dummy_y = 0.0f; stbtt_GetPackedQuad(range.chardata_for_range, atlas->TexWidth, atlas->TexHeight, char_idx, &dummy_x, &dummy_y, &q, 0); - dst_font->AddGlyph((ImWchar)codepoint, q.x0 + off_x, q.y0 + off_y, q.x1 + off_x, q.y1 + off_y, q.s0, q.t0, q.s1, q.t1, pc.xadvance); + dst_font->AddGlyph((ImWchar)codepoint, q.x0 + char_off_x, q.y0 + font_off_y, q.x1 + char_off_x, q.y1 + font_off_y, q.s0, q.t0, q.s1, q.t1, char_advance_x_mod); } } } diff --git a/misc/fonts/README.txt b/misc/fonts/README.txt index 6209fd7e..882dd1a1 100644 --- a/misc/fonts/README.txt +++ b/misc/fonts/README.txt @@ -57,6 +57,7 @@ In this document: ImFontConfig config; config.MergeMode = true; + config.GlyphMinAdvanceX = 13.0f; // Use if you want to make the icon monospaced static const ImWchar icon_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 }; io.Fonts->AddFontFromFileTTF("fonts/fontawesome-webfont.ttf", 13.0f, &config, icon_ranges); diff --git a/misc/freetype/imgui_freetype.cpp b/misc/freetype/imgui_freetype.cpp index f7233bc3..84659456 100644 --- a/misc/freetype/imgui_freetype.cpp +++ b/misc/freetype/imgui_freetype.cpp @@ -9,6 +9,7 @@ // - v0.53: (2017/10/22) minor inconsequential change to match change in master (removed an unnecessary statement) // - v0.54: (2018/01/22) fix for addition of ImFontAtlas::TexUvscale member // - v0.55: (2018/02/04) moved to main imgui repository (away from http://www.github.com/ocornut/imgui_club) +// - v0.56: (2018/06/08) added support for ImFontConfig::GlyphMinAdvanceX, GlyphMaxAdvanceX // Gamma Correct Blending: // FreeType assumes blending in linear space rather than gamma space. @@ -324,8 +325,8 @@ bool ImGuiFreeType::BuildFontAtlas(ImFontAtlas* atlas, unsigned int extra_flags) const float ascent = font_face.Info.Ascender; const float descent = font_face.Info.Descender; ImFontAtlasBuildSetupFont(atlas, dst_font, &cfg, ascent, descent); - const float off_x = cfg.GlyphOffset.x; - const float off_y = cfg.GlyphOffset.y + (float)(int)(dst_font->Ascent + 0.5f); + const float font_off_x = cfg.GlyphOffset.x; + const float font_off_y = cfg.GlyphOffset.y + (float)(int)(dst_font->Ascent + 0.5f); bool multiply_enabled = (cfg.RasterizerMultiply != 1.0f); unsigned char multiply_table[256]; @@ -356,17 +357,23 @@ bool ImGuiFreeType::BuildFontAtlas(ImFontAtlas* atlas, unsigned int extra_flags) font_face.BlitGlyph(ft_glyph_bitmap, blit_dst, atlas->TexWidth, multiply_enabled ? multiply_table : NULL); FT_Done_Glyph(ft_glyph); + float char_advance_x_org = glyph_info.AdvanceX; + float char_advance_x_mod = ImClamp(char_advance_x_org, cfg.GlyphMinAdvanceX, cfg.GlyphMaxAdvanceX); + float char_off_x = font_off_x; + if (char_advance_x_org != char_advance_x_mod) + char_off_x += cfg.PixelSnapH ? (float)(int)((char_advance_x_mod - char_advance_x_org) * 0.5f) : (char_advance_x_mod - char_advance_x_org) * 0.5f; + // Register glyph dst_font->AddGlyph((ImWchar)codepoint, - glyph_info.OffsetX + off_x, - glyph_info.OffsetY + off_y, - glyph_info.OffsetX + off_x + glyph_info.Width, - glyph_info.OffsetY + off_y + glyph_info.Height, + glyph_info.OffsetX + char_off_x, + glyph_info.OffsetY + font_off_y, + glyph_info.OffsetX + char_off_x + glyph_info.Width, + glyph_info.OffsetY + font_off_y + glyph_info.Height, rect.x / (float)atlas->TexWidth, rect.y / (float)atlas->TexHeight, (rect.x + glyph_info.Width) / (float)atlas->TexWidth, (rect.y + glyph_info.Height) / (float)atlas->TexHeight, - glyph_info.AdvanceX); + char_advance_x_mod); } } }