Compare commits

..

3330 Commits
v1.43 ... v1.67

Author SHA1 Message Date
d38d7c6628 TODO update + internals: changed order or ImGuiLayoutType enums to allow using them for indexing. 2019-01-15 15:06:24 +01:00
b8c6e31c2d Fixed cursor issue caused by 6890e08b when calling BeginChild/EndChild multiple times to reappend into a same child window. (#2282) 2019-01-15 15:05:56 +01:00
7a5058e3bf Version 1.67 2019-01-14 17:41:44 +01:00
1da40df279 DragFloat: Fixed broken mouse direction change with power!=1.0. (#2174, #2206) [@Joshhua5] 2019-01-14 17:38:19 +01:00
6e41745f31 Added a bunch of diagnostic ignore to cope with Clang -Weverything being absurd. Also fixed two legit warnings. (#2277) 2019-01-13 18:57:46 +01:00
abdd39b700 Merge branch 'atlas_fixes' 2019-01-13 14:19:07 +01:00
7e78865613 Demo: Fixed bounds of DragFloat in Clipping section to avoid passing zero-sized to InvisibleButton(). 2019-01-12 19:48:07 +01:00
49994ceb6e FAQ entry, moved ImTextureId, Gallery links. 2019-01-12 19:48:07 +01:00
8df8482ef4 imgui_freetype: Fixed redundant FT_Load_Glyph() calls, unused parameters, and compilation warning/error. (#2270) 2019-01-12 11:45:58 +01:00
651130002f ImFontAtlas: Fixed allocating for last bit (would only affect is that last codepoint is a multiple of 32). (#2270) 2019-01-11 15:25:43 +01:00
21828b08a0 ImFontAtlas: Rewrote FreeType based builder.
- Fixed abnormally high atlas height. (#618)
- Fixed support for any values of TexGlyphPadding (not just only 1). (#618)
- Atlas width is now properly based on total surface rather than glyph count (unless overridden with TexDesiredWidth). (#618)
- Fixed atlas builder so missing glyphs won't influence the atlas texture width. (#2233, #618)
- Fixed atlas builder so duplicate glyphs (when merging fonts) won't be included in the rasterized atlas. (#618)
2019-01-10 22:30:34 +01:00
9a9712807e ImFontAtlas: Rewrote stb_truetype based builder.
- Atlas width is now properly based on total surface rather than glyph count (unless overridden with TexDesiredWidth).
- Fixed atlas builder so missing glyphs won't influence the atlas texture width. (#2233)
- Fixed atlas builder so duplicate glyphs (when merging fonts) won't be included in the rasterized atlas.
2019-01-10 22:23:05 +01:00
e3ccc96789 Internals: Added ImBoolVector helper. 2019-01-10 16:10:02 +01:00
56caf7da29 imgui_freetype: Minor tweaks and comments. 2019-01-10 16:10:02 +01:00
7ed8e55fc7 ImVector: Added size_in_bytes() helper. 2019-01-10 16:10:02 +01:00
e4c19f5af1 ImFontGlyphRangesBuilder: Using 32-bits fields for storage instead of 8-bit ones, comments, todo. 2019-01-10 16:00:26 +01:00
7ffbcfe467 ImVector: Made reserve() another silly one-liner. It's not longer than other functions and our weird obsessions deserve to be carried with stringent consistence. + Comments 2019-01-10 15:51:09 +01:00
1f6e0b2f98 ImVector: Made a struct. Using T/T* in the code instead of value_type/iterator. Renamed index_from_pointer() to index_from_ptr() (was not documented, added in 1.63, users not supposed to use ImVector, hopefully not a big deal). 2019-01-10 15:51:08 +01:00
81eaa49773 Internals: Added comment index in imgui_internal.h 2019-01-10 15:51:08 +01:00
289569ef27 Update link to Magnum bindings. (#2269)
The various community projects that integrated Dear ImGui into Magnum
were merged together and are now an official part of the engine.
2019-01-10 14:58:59 +01:00
61a99f994e Minot internal tweaks, comments 2019-01-08 23:11:54 +01:00
9ad341902d ImDrawList: Optimized some of the functions for performance of debug builds where non-inline function call cost are non-negligible. 2019-01-08 17:37:22 +01:00
f53cd3ee0f Internals: LowerBound: Use raw pointer typedefs, we never use iterator anywhere else in the codebase.
Demo: Typo.
C98 fix.
2019-01-08 17:37:07 +01:00
57b1622afc Added IMGUI_USE_STB_SPRINTF (undocumented) (#1038) 2019-01-08 15:28:33 +01:00
b33977bc15 Tests: Reworking hook prototypes for imgui-test to be faster and multi-context friendly. 2019-01-07 23:59:05 +01:00
c2db7f63bd Selectable() should have an ID even though they are disabled, to be consistent with other widgets. Not sure of the reasoning ~1.41 which made this turn to 0. 2019-01-07 23:48:50 +01:00
3997e8b555 Fixed animated window titles from being updated when displayed in the CTRL+Tab list. + Adding overkill helpers for reusing buffers. (#787) 2019-01-07 22:46:42 +01:00
1ae7f88495 Tabs: Added ImGuiTabBarFlags_NoTooltip flag. (#261, #351) + added helpful assert 2019-01-07 18:07:09 +01:00
50faccf764 Demo: Log: Comments. Using clipper. Not linking with rand() anymore. 2019-01-07 17:33:02 +01:00
acfa4050ec Tweak changelog + tweak internal render helper functions. 2019-01-07 16:43:55 +01:00
5cb7ce2085 Renamed ImFont::GlyphRangesBuilder to ImFontGlyphRangesBuilder. Keep redirection typedef (will obsolete). 2019-01-06 16:59:51 +01:00
1353c74dcf Comments/formatting on obsolete stuff 2019-01-06 16:37:57 +01:00
c3af134cc8 IO: Renamed InputCharacters[], marked internal as was always intended. AddInputCharacter() goes into a queue which can receive as many characters as needed during the frame. This is useful for automation to not have an upper limit on typing speed. Will later transition key/mouse to use the event queue later. 2019-01-06 16:37:42 +01:00
1705a81efb Moved ImVector higher up in imgui :( because we will need it in ImGuiIO. 2019-01-06 16:29:40 +01:00
8b5f635624 Added alternative Rust bindings 2019-01-06 14:43:43 +01:00
9ba202821f Nav: Fixed an keyboard issue where holding Activate/Space for longer than two frames on a button would unnecessary keep the focus on the parent window, which could steal it from newly appearing windows. (#787) 2019-01-04 19:03:56 +01:00
d223d1e951 Added bindings in Readme. Added internal IMGUI_DEBUG_LOG() helper. Comments, missing breaking changes note relative to imgui_impl_xxxx changes, not really part of core but worth adding in the imgui.cpp breaking change section. 2019-01-04 18:01:43 +01:00
4483320f0a Examples: Allegro 5: Properly destroy all globals on shutdown. (#2262) 2019-01-04 13:30:55 +01:00
6777544855 Added sanity check to debug parent/child ordering issues (they would generally manifest with an assert/crash in EndFrame bu tthis assert will catch some earlier). 2019-01-03 21:42:36 +01:00
ca6ac34f9d Natvis: Added Hidden info about ImGuiWindow. 2019-01-03 18:38:41 +01:00
25ac85f15d Examples: Downgrading projects to xcode 9.2 (maybe 8.0) (#2134)
* example_apple_opengl2: The deployment target was set to 10.12 from XCode 9.2.
* imgui_impl_metal: header not found by XCode 9.2.
* example_apple_metal: The deployment target was set to 10.12 from XCode 9.2.
2019-01-03 14:01:14 +01:00
64c66529ae Moving issue/pr template to docs/. Added links in README. 2019-01-03 13:35:53 +01:00
237109caa5 Internals: Extracted code out of EndFrame() into UpdateMouseMovingWindowEndFrame() 2019-01-02 23:08:32 +01:00
b3469fa94b Alternative fix for bug introduced in d845135 (#1651), fix CTRL+Tab and fallback tooltip. 2019-01-02 23:08:32 +01:00
3e30bfd6c9 Revert "Fixes crash/assert bug introduced in d845135 (#1651): would assert when showing the CTRL+Tab list and or fallback "...." tooltip."
This reverts commit 1b0e38df47.
2019-01-02 22:56:17 +01:00
1b0e38df47 Fixes crash/assert bug introduced in d845135 (#1651): would assert when showing the CTRL+Tab list and or fallback "...." tooltip. 2019-01-02 22:14:28 +01:00
d9a4cbc429 Examples: Comments about GLFW/SDL versions 2019-01-02 16:04:13 +01:00
c017a4fb5f Moved guidelines to issue #2261 to Pin and increase visibility for now. 2019-01-02 14:28:49 +01:00
acacd93836 Renamed extra_flags to flags in InputXXX parameters. 2019-01-02 11:08:14 +01:00
c738f9ef92 InputFloat: When using ImGuiInputTextFlags_ReadOnly the step buttons are disabled. (#2257) 2019-01-02 11:03:56 +01:00
6b97ded438 Happy new year! & comments 2019-01-02 10:57:57 +01:00
e21bc44684 Comments: fixed missing line in the "how a simple rendering function may look like" section (#2258) 2019-01-02 09:57:25 +01:00
d845135273 Error recovery: Extraneous/undesired calls to End() are now being caught by an assert in the End() function itself at the call site (instead of being reported in EndFrame). Past the assert, they don't lead to crashes any more. Missing calls to End(), pass the assert, should not lead to crashes any more, nor to the fallback/debug window appearing on screen. (#1651). 2018-12-23 18:00:37 +01:00
a9a60a24c1 Tweaked asserts 2018-12-23 17:51:50 +01:00
2889a14f86 Build fix for master. 2018-12-21 16:45:24 +01:00
b1cd52b674 Examples: SDL: Avoid testing for SDL_GetKeyboardFocus() on Android and iOS (like Emscripten). (#421) 2018-12-21 16:41:29 +01:00
d5b22fb635 Examples: Setting up style before bindings, so in complex binding (vulkan/dx12) it isn't miles away from the context creation. 2018-12-20 22:58:34 +01:00
b471813f54 Made it illegal to call Begin("") with an empty string. This somehow accidentally worked before but had various undesirable side-effect as the window would have ID zero. In particular it is causing problems in viewport/docking branches. 2018-12-20 20:01:02 +01:00
39dde66b21 IO: Realigned all fields, very minor comments change. This is nearly a no-op if you don't ignore Spaces. 2018-12-20 11:48:52 +01:00
5691385a33 IO: Added BackendPlatformUserData, BackendRendererUserData, BackendLanguageUserData void* for storage use by back-ends. (#2004 + for cimgui) 2018-12-20 11:41:24 +01:00
8399fb5071 Changed ImGuiCol_ChildBg to (0,0,0,0) in Dark style instead of (1,1,1,0), to match other styles. Shouldn't have any effect for the end-user. 2018-12-19 15:20:18 +01:00
6890e08bc5 Fixed using SetNextWindowPos() on a child window (which wasn't really documented) position the cursor as expected in the parent window, so there is no mismatch between the layout in parent and the position of the child window. Demo tweak and adding some child window stuff 2018-12-19 15:19:31 +01:00
89ac0ea7c1 Various user-facing comments 2018-12-19 11:19:55 +01:00
84d1ce3958 Tidying up README, moved entries to FAQ, updated screenshots, removed comma in title. 2018-12-18 16:17:27 +01:00
ca953f0fee Fix merge issue on master. 2018-12-18 15:11:11 +01:00
ae76a1fda7 Window, Focus, Popup: Fixed an issue where closing a popup by clicking another window with the _NoMove flag would refocus the parent window of the popup instead of the newly clicked window. 2018-12-18 15:01:15 +01:00
510ca373a2 Moved setting up NavHideHighlightOneFrame from lower-level ClosePopupToLevel() to CloseCurrentPopup() with an explanation. (Followup on 68d3e139a7) 2018-12-18 14:59:22 +01:00
1a6ec208cc Docs: various updates, rewording, clarifying the purpose of a PR. 2018-12-18 12:02:55 +01:00
65dac02171 Internals: Popups: Renamed CurrentPopupStack to BeginPopupStack which is much less ambiguous. 2018-12-14 18:44:17 +01:00
f6f5c51106 Internals: Popups: EndMenu() calls ClosePopupToLevel(g.CurrentPopupStack.Size) which is more correct. 2018-12-14 18:42:28 +01:00
f1c7596409 Internals: Popup related comments. Renamed the misleading internal ClosePopup() function. Added bool* test to BeginPopupModal in demo. 2018-12-14 18:42:22 +01:00
587506dd57 Tests: Changed prototype of ImGuiTestEngineHook_ItemAdd to match functions called in same spot. Made ButtonBehavior submit fallback item info if ItemAdd() was not called (for resize grips, resize borders, scrollbar, columns, etc.) 2018-12-14 11:27:02 +01:00
8497948ba0 Comments, minor tweaks. 2018-12-13 19:17:36 +01:00
1b263f6ab0 Tabs: Fixed support for drag and drop ImGuiButtonFlags_PressedOnDragDropHold. (#261) incorrectly missing from the merge from Docking branch. 2018-12-11 19:37:22 +01:00
febc3e6aa1 Internals: Windows hidden with HiddenFramesRegular (but NOT HiddenFramesForResize) preserve their SizeContents, so restoring a auto-resize window after it's been hidden by tabs won't reset its size for a frame. Arguable. Let's see how it goes. (Followup to b48e295bddbf965d7382ec5578ed05d2fe601114) 2018-12-11 19:19:12 +01:00
d9a84de9d9 Contents size is preserved while a window collapsed. Fix auto-resizing window losing their size for one frame when uncollapsed. 2018-12-11 19:08:06 +01:00
ccce47c6a2 Demo: Using Tabs in Style Editor and Simple Layout example. + Adding missing early out in About and Documents examples. 2018-12-11 18:10:43 +01:00
5a6b8e00db BeginTabBar: Fix to push the expected ID into the ID stack (instead of a hash's hash). (#261) 2018-12-11 15:22:10 +01:00
95dcc534ed Demo: Fix collateral damage of 54a60aa 2018-12-11 13:25:16 +01:00
54a60aaa40 Added BETA api for Tab Bar/Tabs widgets. (#261, #351) (merged this feature from the from Docking branch so it can be used earlier as as standalone feature)
- Added BeginTabBar(), EndTabBar(), BeginTabItem(), EndTabItem(), SetTabItemClosed() API.
- Added ImGuiTabBarFlags flags for BeginTabBar().
- Added ImGuiTabItemFlags flags for BeginTabItem().
- Style: Added ImGuiCol_Tab, ImGuiCol_TabHovered, ImGuiCol_TabActive, ImGuiCol_TabUnfocused, ImGuiCol_TabUnfocusedActive colors.
- Demo: Added Layout->Tabs demo code.
- Demo: Added "Documents" example app showcasing possible use for tabs.
2018-12-11 12:36:47 +01:00
cc1283fb78 Added ImGuiWindowFlags_UnsavedDocument window flag to append '*' to title without altering the ID, as a convenience to avoid using the ### operator. (merged from Docking branch) 2018-12-11 12:20:48 +01:00
15447f5b7b Using named flags instead of 0 + shallow formatting tweaks from other branches. 2018-12-11 12:14:27 +01:00
9476e07d5a Added io.ConfigWindowsMoveFromTitleBarOnly option. Still is ignored by window with no title bars (often popups). This affects clamping window within the visible area: with this option enabled title bars need to be visible. (#899)
Tweaked default value of style.DisplayWindowPadding from (20,20) to (19,19) so the default style as a value which is the same as the title bar height.
2018-12-10 16:05:30 +01:00
59f3c4fc20 Renamed io.ConfigResizeWindowsFromEdges to io.ConfigWindowsResizeFromEdges and removed its [Beta] mark. Resizing windows from edge is now enabled by default (io.ConfigWindowsResizeFromEdges=true). Note that it only works _if_ the back-end sets ImGuiBackendFlags_HasMouseCursors, which the standard back-end do. 2018-12-10 15:41:01 +01:00
d20e3ee710 Tests: Adding imgui-test engine hooks (experimental) to provide missing widget state to the testing system. 2018-12-10 14:30:41 +01:00
125e62491e Internals: Nav: Added ImGuiNavLayer_ to clarify semantic of previously integer NavLayer values, and not pretend that increment/decrement operators on them super flexible. + Storage tweaks. 2018-12-04 14:34:49 +01:00
b58bd5b311 Version 1.67 WIP + todo notes 2018-12-04 13:49:29 +01:00
fb6ef8b1db Comments, tweak 2018-12-03 23:50:59 +01:00
eb311abc92 Fixed IMGUI_API tag on ImFontAtlas::IsBuilt() preventing to build as DLL on some setups. (#2226) 2018-12-03 17:49:38 +01:00
8d58055a54 Examples: DirectX10/11/12: Made imgui_impl_dx10/dx11/dx12.cpp link d3dcompiler.lib from the .cpp file to ease integration. 2018-12-03 17:47:10 +01:00
10e13dd6bb Version 1.67 WIP (again, this time IMGUI_VERSION_NUM has leeway for another hot-fix). 2018-12-03 12:19:23 +01:00
801645d350 Version 1.66b (will revisit how to change IMGUI_VERSION_NUM across versions, this commit reduces the numerical IMGUI_VERSION_NUM compared to the commit on Nov 22). 2018-12-03 10:17:17 +01:00
84238240d6 Fixed a text rendering/clipping bug introduced in 1.66 (on 2018-10-12, commit ede3a3b9) that affect single ImDrawList::AddText() calls with single strings larger than 10k. Text/TextUnformatted() calls were not affected, but e.g. InputText() was. 2018-11-30 23:47:23 +01:00
48f6fdb349 Fixed typo. 2018-11-30 18:30:21 +01:00
7658035e5a About, IO: Added io.BackendPlatformName, io.BackendRendererName for informational/QA purpose. 2018-11-30 18:30:21 +01:00
3849def253 Added ShowAboutWindow(), About Window now showing various config/build information. 2018-11-30 18:30:21 +01:00
3335e6688f Include <alloca.h> also on macOS (and osxcross) (#2218) 2018-11-30 16:57:09 +01:00
1bfcf8f339 Separator: Fixed Separator() outputting an extraneous empty line when captured into clipboard/text/file. 2018-11-30 16:42:32 +01:00
baf67d393f When the focused window become inactive don't restore focus to a window with the ImGuiWindowFlags_NoInputs flag. (#2213) 2018-11-29 23:25:29 +01:00
4a94b251fd Comments 2018-11-29 22:00:17 +01:00
4105cc7e97 Added ImGuiConfigFlags_None, ImGuiBackendFlags_None for good measure. 2018-11-27 19:46:14 +01:00
1fa2cb8748 imgui.h: Comments 2018-11-27 14:10:40 +01:00
ce07d55d1b imgui.h: Moved ImGuiListClipper 2018-11-27 14:01:07 +01:00
8495c931c0 mgui.h: Moved ImGuiInputTextCallbackData,, ImGuiSizeCallbackData, ImGuiPayload structures so they are not in the "Helpers" section. 2018-11-27 14:01:07 +01:00
35d648341b Examples: SDL: changed the signature of ImGui_ImplSDL2_ProcessEvent() to use a const SDL_Event*. (#2187) 2018-11-23 18:12:37 +01:00
0c4dee083c Internals: Added ImPool helper data structure (used by testing system, and already in docking branch) 2018-11-22 18:59:57 +01:00
d27ffefbd4 Version 1.67 WIP 2018-11-22 18:59:57 +01:00
da3c4330c1 Version 1.66 2018-11-22 15:11:52 +01:00
c00a3bd98f Examples: SDL2+Vulkan: Fixed application shutdown which could deadlock on Linux + Xorg. (#2181) 2018-11-21 18:43:25 +01:00
a5cf227503 Added link to experimental imgui_scoped.h PR/thread (#2197, #2096) 2018-11-21 18:31:22 +01:00
be66f94639 Examples: OpenGL3: More explicit testing for == GL_UPPER_LEFT in case glGetIntegerv(GL_CLIP_ORIGIN is not honored properly. (#2186, #2195) Fix f52f0a5277 2018-11-21 18:24:24 +01:00
cc4b1f9e47 Nav: Fixed explicit directional input not re-highlighting current nav item if there is a single item in the window and highlight has been previously disabled by the mouse. (#787) 2018-11-21 16:07:04 +01:00
b9ae9bb1e3 Internals: Using GetOverlayDrawList(ImGuiWindow*) to match syntax of viewport/master branches. Fixed compiling with IMGUI_DEBUG_NAV_RECTS 2018-11-21 15:37:29 +01:00
50c43d1c8e Removed unnecessary ImGui:: prefixes. 2018-11-15 16:43:05 +01:00
6b4443755d Internals: Added FindWindowByID() helper. (#2190) 2018-11-15 16:41:48 +01:00
aa668c410a Nav: Fixed an assert in certain circumstance (mostly when using popups) when mouse positions stop being valid. (#2168) + adding a else block to make NavCalcPreferredRefPos() more explicit. 2018-11-15 13:56:27 +01:00
f52f0a5277 Examples: OpenGL3: Added support for GL 4.5's glClipControl(GL_UPPER_LEFT). (#2186) 2018-11-13 18:54:02 +01:00
19b4fcdacb Made IsWindowFocused() work outside of NewFrame()-EndFrame() and added comments about how ImGuiFocusedFlags_AnyWindow should NOT be used in place of io.WantCaptureMouse. (#2185) 2018-11-13 11:23:15 +01:00
5b1394c5ac Update README.md 2018-11-09 15:02:19 +01:00
6c1ae6cc71 Internals: DragBehavior: Added support for ImGuiDragFlags_Vertical to implement a vertical drag widget (no frontend function provided). 2018-11-09 14:41:40 +01:00
6d7677534f Internals: SliderBehavior: Using axis indexing. 2018-11-09 14:31:14 +01:00
772354377b Examples: GLFW: User previously installed GLFW callbacks are now saved and chain-called by the default callbacks. (#1759) 2018-11-08 16:24:41 +01:00
9d155c73bc Examples: Misc comments mainly related to GLFW callbacks. (#1759) 2018-11-08 16:06:22 +01:00
a419d46205 Examples: OpenGL3+GLFW/SDL: Made main.cpp compile with IMGUI_IMPL_OPENGL_LOADER_CUSTOM (may be missing init). (#2178) 2018-11-08 15:14:09 +01:00
131bf5ee4a Examples: SDL: Tweaked Windows instructions and batch files. (#2175) 2018-11-06 09:51:21 +01:00
f388216ff0 Examples: GLFW: VS2015 project link with legacy_stdio_definitions.lib in order to link with the precompiled VS2010 GLFW3.lib we provide. (#2010, #2043, #2091) 2018-11-05 17:28:09 +01:00
c808eb92c6 Config: Added IMGUI_DISABLE_WIN32_FUNCTIONS to disable linking with _any_ Win32 function, as a general forward compatible measure. 2018-11-05 17:28:00 +01:00
eb592bf7d3 ListBox(): Fixed frame sizing when items_count==1 unnecessarily showing a scrollbar. (#2173). Tweaked frame sizing so list boxes will look more consistent when FramePadding is far from ItemSpacing. 2018-11-05 14:49:17 +01:00
1441756a0f Doc: Fixed comments referring to LoadFromFileTTF() instead of AddFontFromFileTTF() (#2153) 2018-11-05 14:17:51 +01:00
2e6e1bec58 Examples: Add missing include guards (#2166) 2018-11-01 20:56:36 +01:00
ed0f7004d0 Examples: Vulkan: Avoid unreferenced parameter warning. (#2162) 2018-10-30 21:15:30 +01:00
7fa3e71abb Internals: Moved the FocusableItemUnregister() outside of InputScalarAsWidgetReplacement(), it should not be here and doesn't facilitate reusing InputScalarAsWidgetReplacement(). (cc #2155) 2018-10-30 10:48:21 +01:00
Hui
e6db078eda gladLoadGL() return 0 to indicate failure (#2157) 2018-10-29 15:51:32 +01:00
f3e642322f Demo: Removed one level of indentation in the ShowDemoWindowXXX functions (6 kb worth of spaces!). Will break some merge/PR. 2018-10-25 23:40:33 +02:00
eed1fba157 Demo: Split the contents of ShowDemoWindow() into smaller functions as it appears to speed up link time with VS. (#2152) 2018-10-25 23:34:05 +02:00
faecf90383 SliderAngle: Added optional format argument to allow users customize precision and make localization. (#2150) 2018-10-25 22:29:29 +02:00
12c72d2893 Fixed OpenGL texture loading example in comment + Discourse link to root of discourse 2018-10-25 21:32:29 +02:00
a72d5ada61 Misc comments improvements 2018-10-25 19:02:43 +02:00
ac9aaf4b6e Comments in demo and opengl code + Internals: Added HoveredIdNotActiveTimer tracking hovering time unless the item is active, which is a commonly useful pattern. 2018-10-25 17:45:48 +02:00
e610afeea3 Font readme: Added OpenFontIcons, tweaks, links, removed spaces (#2141) 2018-10-22 11:54:57 +02:00
82873c7ad4 Update README.md 2018-10-18 10:44:14 +02:00
745f01022e Examples: Downgraded Xcode project object version (50->48) to support Xcode 9.2 (last version supported on macOS 10.12) (#2133, #1929) 2018-10-17 10:48:53 +02:00
31fd6c585a Removed unnecessary ImGui:: qualifiers in internal code. 2018-10-17 10:47:27 +02:00
b4488d4f48 Examples: Downgraded Xcode project object version (50->48) to support Xcode 9.2 (last version supported on macOS 10.12) (#2133) 2018-10-17 10:46:49 +02:00
000c1fc221 Demo: Added comments / tweaks related to the popups. 2018-10-16 10:25:32 +02:00
5be915d6ab Added ImGuiWindowFlags_NoMouseInputs which is basically the old ImGuiWindowFlags_NoInputs (essentially we have renamed ImGuiWindowFlags_NoInputs to ImGuiWindowFlags_NoMouseInputs). Made the new ImGuiWindowFlags_NoInputs encompass both NoMouseInputs+NoNav, which is consistent with its description. (#1660, #787) 2018-10-15 18:23:18 +02:00
90b50bd4c3 Window: Added ImGuiWindowFlags_NoBackground flag for consistency and to ease creating new flag combinations. Added ImGuiWindowFlags_NoDecoration helper flag which is essentially NoTitleBar+NoResize+NoScrollbar+NoCollapse. (#1660) 2018-10-15 18:16:49 +02:00
8606d9fa11 Fix Clang/GCC's null-conversion warning: (#2081)
The warning is "implicit conversion of NULL constant to 'unsigned int' [-Wnull-conversion]". Happens when ImTextureID is not a void*, but unsigned int, for example.
2018-10-15 17:07:06 +02:00
b039dbc62e Update README.md 2018-10-15 08:34:42 +02:00
edb06a6c4d Fixed typo in misc/README.txt (#2131) 2018-10-14 08:43:06 +02:00
ca753829cb Revert using wchar_t functions (9cf94d5 + 2eaf5b0). Big mistake, wchar_t is not guaranteed to be 16-bits. 2018-10-12 15:48:38 +02:00
28953208d4 Tests: Added imgui-test engine hooks (experimental). 2018-10-12 15:47:15 +02:00
ede3a3b92d Fixes crash introduced in previous commit 9cf94d5. 2018-10-12 13:29:13 +02:00
9cf94d5dd6 RenderText(), InputTextMultiline(): Optimization for large text by using memchr, wmemchr, wcschr when appropriate. 2018-10-12 12:34:47 +02:00
0fe48cbb61 Renamed misc/stl/imgui_stl.h,.cpp to misc/cpp/imgui_stdlib.h in prevision for other files.(#2035, #2096)
Added misc/README file.
2018-10-12 11:16:51 +02:00
74c0309126 InputText: Clarified comments around ImGuiInputTextFlags_CallbackResize and other callbacks. (#2006, #1443, #1008) 2018-10-12 10:34:58 +02:00
ed4dcd9072 Shutdown: Unlock font atlas before destroying context, so we can destroy a context between NewFrame and EndFrame if we wait (facilitate main loop structures). Internals: GetWindowScrollMaxX(), GetWindowScrollMaxY() 2018-10-11 22:38:26 +02:00
cf0afb48ac TextUnformatted: Using memchr(), fixed not properly testing for text_end bound + comments.
Internals: Added ImStreolRange() + used in LogRenderedText() + comments.
2018-10-11 12:53:10 +02:00
d02b11dfbd ImGuiTextBuffer: Avoid heap allocation when empty. 2018-10-11 12:08:09 +02:00
1efafa1d29 Comments + internal using Tab Stop terminology (ImGuiItemFlags_NoTabStop instead of !ImGuiItemFlags_AllowKeyboardFocus) 2018-10-10 12:09:06 +02:00
3fcc178c23 Update README.md 2018-10-08 11:37:13 +02:00
dd748f0e39 Update README.md 2018-10-08 11:22:33 +02:00
500a60debc Examples: OpenGL3: Cast compile/link status to GLboolean (#2112, #2125)
Some OpenGL loaders/bindings do not allow comparisons between GLints and GLbooleans.
2018-10-07 18:14:24 +02:00
02afbaeef0 Examples: imgui_imp_opengl3.cpp explicit casting for overly aggressive glbinding compatibility. (#2112) [@hesiod] 2018-10-06 11:35:05 +02:00
a3b0e0acfa Examples: DirectX10, DirectX11: Removed seemingly unnecessary calls to invalidate and recreate device objects in the WM_SIZE handler. (#2088) 2018-10-05 11:36:49 +02:00
084c26aa41 Fix spacing in imgui_imp_sdl example (#2111) 2018-10-05 10:04:10 +02:00
3c427e284f Update pull_request_template.md 2018-10-04 12:49:48 +02:00
fbfe193fcd Window, Inputs: Fixed resizing from edges when io.MousePos is not pixel-rounded by rounding mouse position input. (#2110) 2018-10-02 18:49:55 +02:00
ae7f833c69 Window: Resizing from edges (with io.ConfigResizeWindowsFromEdges Beta flag) extends the hit region of root floating windows outside the window, making it easier to resize windows. Resize grips are also extended accordingly so there are no discontinuity when hovering between borders and corners. (#1495, #822, #2110) 2018-10-02 18:43:10 +02:00
76e31bd51a Fixed typo. (#2108, #2083) 2018-10-01 17:56:06 +02:00
e623be998d Drag and Drop: Added GetDragDropPayload() to peek directly into the payload (if any) from anywhere. (#143) 2018-10-01 15:53:18 +02:00
3dcd552628 Fixed extraneous static attribute. (#2105) 2018-09-27 13:01:51 +02:00
9aae21483a Fix missing IMGUI_API and mismatching namespace internal's CreateNewWindowSettings (#2105) 2018-09-27 12:59:22 +02:00
61d94ff88e Renamed SetScrollHere() to SetScrollHereY(). Kept redirection function (will obsolete). 2018-09-26 21:30:37 +02:00
a7d3ae8937 BeginChild(): Fixed BeginChild(const char*, ...) variation erroneously not applying the ID stack to the provided string to uniquely identify the child window. This was undoing an intentional change introduced in 1.50 and broken in 1.60. (#1698, #894, #713) + reworked the Begin/BeginChild comments in imgui.h. 2018-09-26 21:24:42 +02:00
781a7950d7 ImVector: Fixed a oddly unqualified return type in the assignment operator (I assume C++ handles it nicely as this never warned anywhere, but it is completely unintentional). 2018-09-24 11:33:26 +02:00
788febf044 Examples: Vulkan: Fixed some minor discrepency in the SDL+Vulkan example to match the Glfw+Vulkan example. (cc #2097) 2018-09-24 10:13:01 +02:00
5719b23e01 ImDrawList: Fixed AddConvexPolyFilled() undefined behavior when passing points_count smaller than 3, in particular, points_count==0 could lead to a memory stomp if the draw list was previously empty. 2018-09-21 10:00:26 +02:00
7c3b9172ad Examples: Referring to missing gamepad support in back-end that are missing it. 2018-09-20 10:37:55 +02:00
3d318a6577 ArrowButton(): Fixed arrow shape being horizontally misaligned by (FramePadding.y-FramePadding.x) if they are different.
Demo: Added extra usage of AlignTextToFramePadding() in a more visible section.
2018-09-20 10:24:29 +02:00
0b190f11b9 Contributing, Issue Template 2018-09-18 18:04:32 +02:00
571676ebd2 Added Fonts readme details and links to Sweet16 font. (#2085) 2018-09-17 13:16:32 +02:00
4b353ce482 Fix file names (#2083) 2018-09-15 21:41:07 +02:00
c12da2a607 BeginMenu(): Fixed menu popup horizontal offset being off the item in the menu bar when WindowPadding=0.0f. 2018-09-14 11:28:08 +02:00
ca5dc0c019 ColorPicker: Replaced the Separator with a Spacing call. (#2068) 2018-09-14 10:05:53 +02:00
1afd29d382 Examples: Using "dear imgui" terminology in all examples headers/comments + fix minor typo. 2018-09-13 16:50:13 +02:00
ec04e8bb05 Fix MSVC's C4312 warning about casting user texture type to void* in ImageButton (#2080) 2018-09-12 22:58:45 +02:00
9cc63ba279 Internals: Replace unsigned short with ImWchar when dealing with character storage (missing cases) + in imgui_impl_ file keep using neutral type everywhere, added missing explicit cast in three bindings. (#2078) 2018-09-11 22:00:57 +02:00
201fcfd2e5 Internals: Replace unsigned short with ImWchar when dealing with character storage. (#2078) 2018-09-11 22:00:57 +02:00
d014d0285a DragFloat: Disabled using power curve when one edge is FLT_MAX (broken in 1.61). Disabled setting a default drag speed when one edge is FLT_MAX. (#2024) 2018-09-11 11:15:06 +02:00
af6cf25255 DragFloat: Fixed a situation where dragging with value rounding enabled or with a power curve erroneously wrapped the value to one of the min/max edge. (#2024, #708, #320, #2075). 2018-09-11 10:55:52 +02:00
e2436ca625 Nav, Focus: Fixed ImGuiWindowFlags_NoBringToFrontOnFocus windows not being restoring focus properly after the main menu bar or last focused window is deactivated. 2018-09-10 20:40:21 +02:00
7eadcf7d7d example_glfw_vulkan was missing a reference to imgui_widgets.cpp (#2071, #2036) 2018-09-09 21:09:58 +02:00
062b1f0463 Fixed calling SetNextWindowSize()/SetWindowSize() with non-integer values leading to accidental alteration of window position. We now round the provided size. (#2067) 2018-09-07 22:30:46 +02:00
2eaf722fd7 Fixed calling DestroyContext() always saving .ini data with the current context instead of the supplied context pointer. (#2066) 2018-09-07 17:24:56 +02:00
eb7033e75b Version 1.66 WIP 2018-09-06 21:44:59 +02:00
e0cab5664a Version 1.65 2018-09-06 15:58:58 +02:00
5a679a45cc Renamed stb_truetype.h to imstb_truetype.h, stb_textedit.h to imstb_textedit.h, and stb_rect_pack.h to imstb_rectpack.h. (#1718, #2036)
If you were conveniently using the imgui copy of those STB headers in your project, you will have to update your include paths.
The reason for this change is to avoid conflicts for projects that may also be importing their own copy of the STB libraries. Note that imgui's copy of stb_textedit.h is modified.
2018-09-06 15:58:25 +02:00
e58bc3d5b7 Refactor: Tweaked and improved the sectioning to facilitate grepping/moving around and applied to all files. (#2036) 2018-09-06 11:36:00 +02:00
0b18c11440 Refactor: Moved ImFile functions. (#2036) 2018-09-06 11:36:00 +02:00
ab64e8f993 Refactor: Moved one indentation level in the bulk of the ShowMetricsWindow() function. Should appear as a small diff if whitespaces changes are ignored. (#2036) 2018-09-06 11:36:00 +02:00
bb3184af74 Refactor: moved low-layout helpers to imgui_widgets.cpp (Spacing, Dummy, NewLine, Separator, etc.) (#2036) 2018-09-05 20:54:28 +02:00
cbdce80837 Internals: Refactor: Moved render functions to their own section. (#2036) 2018-09-05 20:46:57 +02:00
65876f348a Nav: Removed the [Beta] tag from various descriptions of the gamepad/keyboard navigation system. Although it is not perfect and will keep being improved, it is fairly functional and used by many. (#787) 2018-09-05 17:33:00 +02:00
77ba883f23 Renamed io.OptCursorBlink/io.ConfigCursorBlink to io.ConfigInputTextCursorBlink. (#1427) + changed ImGuiIO layout. 2018-09-05 17:29:47 +02:00
bbcc976739 Demo: Added a "Configuration" block to make io.ConfigFlags/io.BackendFlags more prominent. 2018-09-05 17:29:47 +02:00
b944aa623c Minor mostly inconsequential merges from Viewport + LoadIniSettingsFromMemory() entirely skip lines starting with ';' 2018-09-05 11:52:48 +02:00
40db2ca098 Fixed a build issue with non-Cygwin GCC under Windows. 2018-09-04 18:58:20 +02:00
5451cb7e1e Readme, Changelog (#2059) 2018-09-04 11:48:08 +02:00
f8b7e4d94f Examples: imgui_impl_opengl3 Fix GLAD error condition (#2059, #2002)
`gladLoadGL` returns 0 on fail, not the other way around.
2018-09-03 19:36:02 +02:00
d07f494305 Internals: Exposed SliderBehaviorT, DragBehaviorT, RoundScalarWithFormatT, SliderCalcRatioFromValueT. (#2036)
Renamed RoundScalarWithFormat -> RoundScalarWithFormatT.
Renamed SliderBehaviorCalcRatioFromValue -> SliderCalcRatioFromValueT
2018-09-03 14:49:13 +02:00
bcb1441ce7 Version 1.65 WIP 2018-09-03 14:38:04 +02:00
767649afb1 Fix missing include on some systems to use intptr_t. (#2036, #2054) 2018-08-31 18:07:47 +02:00
5d40d295b3 Comments, readme updates 2018-08-31 11:37:14 +02:00
be6ea86f8d OSX: Added imgui_widgets.cpp to xcode project files. 2018-08-31 11:29:25 +02:00
9174958b43 imgui_stl: Comments (#2035) 2018-08-31 10:53:38 +02:00
36435b43c7 Merge branch 'master_164' 2018-08-31 10:12:49 +02:00
48db5713d6 Version 1.64 2018-08-31 10:00:03 +02:00
38cfcf9fbc Tweak comments and indexes 2018-08-31 09:59:58 +02:00
8a216fe756 Refactor: Internals: Moved Tooltip functions in imgui.cpp in their own section + comments. (#2036) 2018-08-30 21:15:12 +02:00
fd2bfb7e07 Refactor: Internals: Moved Popup functions in imgui.cpp in their own section. (part 3) (#2036) 2018-08-30 21:00:51 +02:00
064b949bc2 Refactor: Internals: Moved Popup functions in imgui.cpp in their own section. (part 2) (#2036) 2018-08-30 20:59:24 +02:00
2a0d26e603 Refactor: Internals: Moved Popup functions in imgui.cpp in their own section. (part 1) (#2036) 2018-08-30 20:58:36 +02:00
df37a156e8 Refactor: Moved Scrollbar function from imgui.cpp to imgui_widgets.cpp, added file index (#2036) 2018-08-30 20:51:57 +02:00
728b2ef026 Refactor: Internals: Moved Navigation functions in imgui.cpp in their own section. DONE! (part 9) (#2036, #787) 2018-08-30 19:23:11 +02:00
cda45737ab Refactor: Internals: Moved Navigation functions in imgui.cpp in their own section. (part 8) (#2036, #787) 2018-08-30 19:23:11 +02:00
acf3cc4c3f Refactor: Internals: Moved Navigation functions in imgui.cpp in their own section. (part 7) (#2036, #787) 2018-08-30 19:23:11 +02:00
8a6fd237f6 Refactor: Internals: Restored new lines in NavUpdate() ... (part 6) (#2036, #787) 2018-08-30 19:23:11 +02:00
84eb2682b7 Refactor: Internals: Moved Navigation functions in imgui.cpp in their own section (moved NavUpdate which would not diff properly unless empty lines were removed, hence the previous patch). (part 5) (#2036, #787) 2018-08-30 19:23:11 +02:00
73052dc00c Refactor: Internals: Removing new lines from NavUpdate solely because I couldn't find another way to get a neat diff/patch when moving it. (part 4) (#2036, #787) 2018-08-30 19:23:11 +02:00
6bda59e5b7 Refactor: Internals: Moved Navigation functions in imgui.cpp in their own section (extracted some code out of NavUpdate()). (part 3) (#2036, #787) 2018-08-30 19:23:11 +02:00
60ee4de56d Refactor: Internals: Moved Navigation functions in imgui.cpp in their own section. (part 2) (#2036, #787) 2018-08-30 19:23:10 +02:00
ce58795bdf Refactor: Internals: Moved Navigation functions in imgui.cpp in their own section. (part 1) (#2036, #787) 2018-08-30 19:23:10 +02:00
f2926f910f Refactor: Internals: Moved Logging functions in imgui.cpp in their own section. (#2036) 2018-08-30 19:23:10 +02:00
15172f0742 Refactor: Internals: Moved Settings functions in imgui.cpp in their own section. (#2036) 2018-08-30 19:23:10 +02:00
98f618ed18 Refactor: Internals: Moved various functions in imgui.cpp (#2036) 2018-08-30 19:23:10 +02:00
5afd4b61f2 Refactor: Moved README, ChangeLog, TODO files to docs/ folder + update Changelog. (#2036) 2018-08-30 19:23:09 +02:00
2714f8fa23 Refactor: Moved Slider/Drag/Input functions + support DataType stuff from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 15:40:46 +02:00
c25f48b902 Refactor: Moved InputText functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 15:40:46 +02:00
ad0bfdcd95 Refactor: Moved ColorEdit/ColorPicker/ColorButton/etc. functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 15:40:45 +02:00
5dc954f5d7 Refactor: Moved Tree/Selectable functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 15:40:45 +02:00
a265c62636 Refactor: Moved Plot/Value functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 15:40:45 +02:00
0e9577d0da Refactor: Moved Menu functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 15:40:44 +02:00
f26b8c1e07 Refactor: Moved Combo/ListBox functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 14:55:27 +02:00
6468a3c0ce Refactor: Moved Button/Image/Checkbox/RadioButton/Bullet/ProgressBar functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 14:50:32 +02:00
3eaa063984 Refactor: Moved Text functions from imgui.cpp to imgui_widgets.cpp (#2036) 2018-08-30 14:50:32 +02:00
52c115fb2c Refactor: Added imgui_widgets.cpp headers to easily merge in the functions in all our branches. (#2036) 2018-08-30 14:50:32 +02:00
01586d33f3 Refactor: Added empty imgui_widgets.cpp + updated project files / makefiles etc. accordingly (#2036) 2018-08-30 14:29:11 +02:00
f2aa124eb8 Version 1.64 WIP 2018-08-30 14:25:23 +02:00
1c4008aa97 Changelog tweaks/typos 2018-08-29 17:34:08 +02:00
9e0f24dcb6 Version 1.63 2018-08-29 16:20:25 +02:00
ac0fcbca46 Changelog: fixed inconsistent white space before list items. 2018-08-29 16:20:02 +02:00
92edb7a4e3 Internals: Tidying up, moving helpers to imgui_internal.h (in prevision of 1.64 refactor) 2018-08-29 16:12:54 +02:00
ec148988f0 Reordered some declarations in imgui.h (in prevision of 1.64 refactor) 2018-08-29 16:12:23 +02:00
2598d26c73 ColorEdit4: Fixed a bug when text input or drag and drop leading to unsaturated HSL values would erroneously alter the resulting color. (#2050) 2018-08-29 13:30:46 +02:00
f9634feb66 Internals: Merged some changes to facilitate 1D->2D transition for some elements, and merging the stack layout PR (#846) 2018-08-28 19:10:59 +02:00
220e6a55b7 Travis: Fix (still not sure there is a way to test those files). (#1044) 2018-08-28 18:40:51 +02:00
1b61b6b208 Examples: Vulkan: Minor tweaks. 2018-08-28 18:22:36 +02:00
db790dab4c Travis: Added xcode build for the OSX+Metal example. (#1044) [@petmac] 2018-08-28 18:15:22 +02:00
b127027cbd Examples: OpenGL: Added support for glew and glad OpenGL loaders out of the box. (#2001, #2002). Changelog, tweaks, applied changes to SDL+OpenGL3 example. 2018-08-28 16:08:04 +02:00
e476b7e727 WIP on configurable OpenGL loader. (#2001, #2002) 2018-08-28 16:07:58 +02:00
af50ebe7b6 Documentation 2018-08-27 09:36:15 +02:00
4dea0327e7 Examples: Vulkan: Fixed handling of VkSurfaceCapabilitiesKHR::maxImageCount = 0 case. Tweaked present mode selections. 2018-08-25 21:16:08 +02:00
a082692b0a ImFontAtlas Comments (#2042) + added ImGuiFontAtlas_None for consistency. 2018-08-25 20:06:17 +02:00
06e917f135 Internals: Renaming of non-user facing parts from ValueChanged to Edited terminology. (#2034, #820, #956, #1875) 2018-08-23 13:47:37 +02:00
042f88e5f0 Removed obsolete redirection functions: CollapsingHeader() variation with 2 bools - marked obsolete in v1.49, May 2016. 2018-08-23 13:40:38 +02:00
3612885dea Comments, demo 2018-08-23 13:37:06 +02:00
0810d57819 Renamed IsItemDeactivatedAfterChange() to IsItemDeactivatedAfterEdit() for consistency with new IsItemEdited() API. Kept redirection function (will obsolete fast as IsItemDeactivatedAfterChange() is very recent). (#820, #956, #1875, #2034) 2018-08-23 13:26:14 +02:00
e28b1078f5 Added IsItemEdited() to query if the last item modified its value (or was pressed). This is equivalent to the bool returned by most widgets. It is useful in some situation e.g. using InputText() with ImGuiInputTextFlags_EnterReturnsTrue. (#2034) 2018-08-23 13:21:01 +02:00
abaa274592 Internals: Wired a ImGuiItemStatusFlags_ValueChanged into ItemStatusFlags, for an hypothetical IsItemValueChanged() function. (#2034) 2018-08-22 22:31:51 +02:00
102d5e6de6 Rearrange header comments to find enums easily + fixed inconsistent sorting. 2018-08-22 22:13:05 +02:00
7011d87bf8 InputText: Improved sturdiness if the ResizeCallback purposefully modify data->BufTextLen or data->BufSize. (#2006, #1443, #1008) 2018-08-22 21:27:27 +02:00
7d9d9bc34e InputText: Fix ResizeCallback callback on restoring initial value with Escape key. Avoid over-allocating for InitialText storage. (#2006, #1443, #1008) 2018-08-22 21:11:55 +02:00
7268c65d73 Examples: imgui_impl_vulkan: Comments (re) 2018-08-22 17:59:58 +02:00
3fdfac3377 Examples: imgui_impl_vulkan: Comments 2018-08-22 16:43:29 +02:00
ea9f5d7600 Added optional misc/stl/imgui_stl.h wrapper to use with STL types (e.g. InputText with std::string). (#2035, #2006, #1443, #1008) 2018-08-22 13:25:08 +02:00
8d639ec60d InputText: callback InsertChars() support resize callbacks correctly (followup to 24ff259) + fixed demo to use those functions. (#2006, #1443, #1008). 2018-08-22 13:09:44 +02:00
ea1906004b InputText: Fixed a few pathological crash cases on single-line InputText widget with multiple millions characters worth of contents. Because the current text drawing function reserve for a worst-case amount of vertices and how we handle horizontal clipping, we currently just avoid displaying those single-line widgets when they are over a threshold of 2 millions characters, until a better solution is found. 2018-08-22 12:46:47 +02:00
5122c76441 InputText: Fixed not tracking the cursor horizontally When modifying the text buffer through a callback. 2018-08-22 12:46:47 +02:00
68448c5faa ImDrawList: Large text passed to AddText() are being scanned for their end in order to avoid pre-reserving too many vertices. 2018-08-22 12:46:47 +02:00
975b5a7310 ImDrawList: Fixed clipping of leading lines above the clipping rectangle from counting in the worst case vertices reservation. (fix code added in #200!) 2018-08-22 12:46:47 +02:00
2dc5ec95d7 Internals: InputText: Renaming. Comments. 2018-08-22 12:46:46 +02:00
9f393c38e9 InputText: Renamed ImGuiTextEditCallback to ImGuiInputTextCallback, ImGuiTextEditCallbackData to ImGuiInputTextCallbackData for consistency. Kept redirection types (will obsolete). 2018-08-22 12:46:45 +02:00
24ff259816 InputText: Added support for buffer size/capacity changes via the ImGuiInputTextFlags_CallbackResize flag. (#2006, #1443, #1008). 2018-08-21 21:36:07 +02:00
4de6e1f7e4 InputText: Internal renaming of some fields + final copy uses edit_state.CurLenA+1 instead of buf_size. 2018-08-21 15:14:10 +02:00
0fd6e9bc0d InputText: Fixed minor off-by-one issue when submitting a buffer size smaller than the initial zero-terminated buffer contents. 2018-08-21 14:27:57 +02:00
e6c78f9470 InputText: (Breaking change) removed ImGuiTextEditCallbackData::ReadOnly since it is a duplication of (ImGuiTextEditCallbackData::Flags & ImGuiInputTextFlags_ReadOnly) (#211) 2018-08-21 14:27:57 +02:00
5942c08143 Added IMGUI_VERSION_NUM for easy compile-time testing. (#2025) 2018-08-21 14:27:57 +02:00
f23d29b481 Added links to Discourse forums. 2018-08-20 10:45:10 +02:00
4910629f6a Internals: Moved code out of SliderBehaviorT to reduce code bloat and also because caller may have use for the grab_bb for styling purposes. 2018-08-20 09:59:51 +02:00
73fa5c29f4 Update README.md 2018-08-17 16:44:23 -07:00
bb2de30e3e Internals: Added ImTextCountUtf8BytesFromChar() helper. 2018-08-17 11:33:45 -07:00
ac39c4b2a8 SplitterBehavior: Fix for when the sizes are already under the minimum desired size. 2018-08-17 11:33:40 -07:00
341ebd961b Fixed assertion when transitioning from an active ID to another within a group, affecting ColorPicker (broken in 1.62). Made ActiveIdIsAlive track the actual ID to avoid incorrect polling in BeginGroup/EndGroup when the ID changes within the group. (#2023, #820, #956, #1875). 2018-08-16 13:33:16 -07:00
8972ebae73 Metrics: Added io.MetricsActiveAllocations, moving away from the cross-context global counters than we previously used. (#1565, #1599, #586) 2018-08-15 16:28:39 -07:00
4e33aeed82 Selectable: Added ImGuiSelectableFlags_Disabled flag in the public API. (#211) 2018-08-14 16:07:01 -07:00
caaa746424 Nav: NavWindowingList doesn't save to .ini file. TODO entries. 2018-08-13 17:29:20 -07:00
d4cd121ae1 TODO + added missing _None enum for some internals flags. 2018-08-09 21:03:17 +02:00
fda9dc8e18 Internals: Extracted RenderMouseCursor() out of EndFrame(). Moved to imgui_draw.cpp along with RenderArrowPointingAt(). Comments. (#2013) 2018-08-09 18:07:49 +02:00
421dc19798 Examples: Cast to ImTextureID instead of void* when assigning to TexId. Applied to all examples. (#2015) 2018-08-09 17:49:48 +02:00
9c0805010f imgui_impl_dx12: Cast to ImTextureID instead of void* to enable redefinition of ImTextureID (#2015, #301) 2018-08-09 17:44:29 +02:00
d5793102db imgui_impl_opengl3: Advertised as a ES2/ES3 renderer. Defaults to ES3 on Android. Default on "#version 300 es" on ES 3. (#2002, #1873) 2018-08-09 17:42:53 +02:00
34203d5008 imgui_impl_win32: Don't redefine WIN32_LEAN_AND_MEAN if already defined (#2014) 2018-08-09 17:32:31 +02:00
e3eb4111cc Examples: Fix 'How to build' instructions for SDL2 examples (#2012) 2018-08-08 18:55:09 +02:00
35124cdd07 imgui_impl_opengl3.cpp Using GLES3 on IOS instead of gl3w. (#2002, #1873)
Not modifying the main.cpp yet because we need to test GL ES 3 context creation on iOS (only imgui_impl_opengl3.cpp was tested).
2018-08-08 17:41:30 +02:00
0065fe16a2 Nav: Made CTRL+TAB skip menus + skip the current navigation window if is has the ImGuiWindow_NoNavFocus set. (#787)
While it was previously possible, you won't be able to CTRL-TAB out and immediately back in a window with the ImGuiWindow_NoNavFocus flag.
2018-08-08 16:03:13 +02:00
9d8a0374d3 Use literals in place of LLONG_MIN, LLONG_MAX ULLONG_MAX if they are not available. Amend 498c0dcb4c. We prefer using the defines if available in limits.h because they somehow tend to work without warnings when enabling strict C++03 compilation. The 3 literals are fallbacks.. (#1926). 2018-08-06 13:07:19 +02:00
0905202f44 Internals: Minor renaming for consistency. 2018-08-05 18:13:24 +02:00
9e9c8a8991 Update to Contributing, and Issue/PR templates. 2018-08-05 18:13:15 +02:00
bc6ac8b2ae Metrics: Changed io.MetricsActiveWindows to reflect the number of active windows (!= from visible windows), which is useful for lazy/idle render mechanisms as new windows are typically not visible for one frame.
Metrics: Added io.MetricsRenderWindow to reflect the number of visible windows.
2018-08-03 18:12:36 +02:00
00e29832d4 Examples: OpenGL2: Disabling/restoring GL_LIGHTING and GL_COLOR_MATERIAL to increase compatibility with legacy OpenGL applications. (#1996) 2018-08-03 15:04:35 +02:00
498c0dcb4c Using limits.h LLONG_MIN etc. to increase old-compiler compatibility (as ll and ull prefixes were not standard). Not tested much on old compilers, relying on Clang/GCC warnings. 2018-08-03 11:41:07 +02:00
fd2a90ee60 Update CONTRIBUTING.md 2018-08-02 16:53:51 +02:00
d69b2a1c1d Changelog for #1989 2018-08-01 12:23:59 +02:00
6011ddf1e5 imgui_impl_dx11: Using ID3D11Factory instead of ID3D11Factory1 (#1989) 2018-08-01 12:22:04 +02:00
cc64bd9e3c Comments 2018-08-01 11:54:54 +02:00
87e2fea09d Renamed io.OptResizeWindowsFromEdges to ConfigResizeWindowsFromEdges, io.OptCursorBlink to io.ConfigCursorBlink, io.OptMacOSXBehaviors to ConfigMacOSXBehaviors for consistency. (#1427, #1495, #822, #473, #650)
Demo: Exposed flags in Demo.
2018-08-01 11:50:57 +02:00
b1fc988c6b imgui_impl_glfw, imgui_impl_sdl: Workaround for Emscripten which doesn't seem to handle focus related calls. (#1941) 2018-08-01 11:34:17 +02:00
b217251a63 Added Visual Studio 2017+ build cruft to Ignore List (.vs/ folder) 2018-07-31 18:48:24 +02:00
671e516377 Demo: Fix using ambiguous InputFloat() call which redirect to obsolete version. (#1990) 2018-07-31 18:38:15 +02:00
65b46f62ef Fixed PushID() from keeping alive the new ID Stack top value (if a previously active widget shared the ID it would be erroneously kept alive) (drag and drop demo could soft-lock the UI until pressing Escape!) 2018-07-31 17:28:18 +02:00
7e1678ff00 Drag and Drop: Elapse payload as soon as delivery is made. (#153) 2018-07-31 17:28:08 +02:00
faf2c34149 Drag and Drop: Added ImGuiDragDropFlags_SourceAutoExpirePayload flag to force payload to expire if the source stops being submitted. (#1725, #143). 2018-07-31 13:46:19 +02:00
79ae6d3bf6 Drag and Drop: Clear payload buffers more consistently in ClearDragAndDrop() + BeginDragDropTargetCustom() can't succeed with hidden contents. (#143) 2018-07-31 13:45:25 +02:00
e13e5982ff Drag and Drop: Payload stays available and under the mouse if the source stops being submitted, however the tooltip is replaced by "..." + moved FrameScopeActive = false at the bottom of EndFrame() for safety. (#1725) 2018-07-31 12:11:18 +02:00
f88bf9cea3 InvisibleButton: Added an assert to catch common type of passing zero-sized dimensions. (#1983) 2018-07-30 18:48:10 +02:00
067edd09f9 imgui_impl_opengl3: Comments. (#1987) 2018-07-30 18:44:58 +02:00
a7ac9e8346 Made assertion more clear when trying to call Begin() outside of the NewFrame()..EndFrame() scope. (#1987) 2018-07-30 18:20:25 +02:00
d5400d9517 Fixes for pre-C++11 compilers.
That said, I think we can consider upgrading requirement to an early VS-friendly subset of C++11. The thing I would like the most from C++11 are forward-declared enum (from VS 2012 onward).
2018-07-30 17:42:27 +02:00
4d5dcdb57a Internals: Changed signature of ShadeVerts functions to remove pointers. (#1286, #1700, #1986) 2018-07-30 17:24:04 +02:00
f05aede098 Revert "Assert that fmt != NULL before calling vsnprintf (#1969)"
This reverts commit 84183f5bb6.
2018-07-30 16:50:47 +02:00
80db2383d8 Speculative va_copy() fix for old versions of GCC/Clang. (cannot repro) (#1085) 2018-07-30 16:01:06 +02:00
2a67aeaa3d Visual Studio: calling into _vsnprintf. (#1085) 2018-07-30 16:01:06 +02:00
81562b2b5a Examples: imgui_impl_opengl3.cpp Using #ifdef GL_SAMPLER_BINDING instead of if (glBindSampler) (#1985) 2018-07-30 15:38:13 +02:00
15a93d6fe3 Internals: Fixed HoveredIdTimer so it is safe to call SetHoveredId() multiple times without altering the timer. 2018-07-30 14:36:33 +02:00
6d78045ff8 Demo: Added extra demo in the Basic Horizontal Layout section. (#1977) + PR guidelines 2018-07-30 14:33:27 +02:00
b5b972d0ef ImFontAtlas::AddFontDefault: Made it possible to override glyph ranges. (#1965) 2018-07-30 14:18:20 +02:00
faa7dad537 Examples: imgui_impl_osx: Fix for incorrect DeltaTime calculation on mac OS. (#1978) 2018-07-30 14:15:24 +02:00
544db70852 Examples: OpenGL3: Tweaks, added changelog. (#1941) 2018-07-30 14:00:53 +02:00
fc737d2333 Examples; imgui_impl_opengl3.cpp to work with Emscripten (#1941)
* Add some ifdefs to add emscripten specific params and includes

* Update imgui_impl_opengl3.cpp

* Update imgui_impl_opengl3.cpp

* Update imgui_impl_opengl3.cpp

* replace __EMSCRIPTEN_BUILD__ with __EMSCRIPTEN__

* replace GLFW_INCLUDE_ES3 with direct header

* removing useless glfw include

* Making call to glPolygonMode() optional
2018-07-30 13:52:18 +02:00
f9e8b5c652 CollapseButton: Added hovering highlight + minor consistency tweaks. 2018-07-27 13:32:33 +02:00
6211f40f3d Internals: Drag and Drop: default drop preview use a narrower clipping rectangle (no effect here, but other branches uses a narrow clipping rectangle that was too small so this is a fix for it) + Comments 2018-07-27 12:39:42 +02:00
28c1a9857e Internals: Changed SplitterBehavior() signature to be consistent with other similar signatures. (#319). 2018-07-26 23:50:05 +02:00
63df9d6311 Internals: Extracted part of Begin into UpdateWindowParentAndRootLinks(). Useful to call to keep state updated immediately (namely useful for docking) + small tidying up of imgui_internal.h 2018-07-26 23:49:36 +02:00
84183f5bb6 Assert that fmt != NULL before calling vsnprintf (#1969)
In the case of Visual Studio 15.6 + Windows SDK 10.0, vsnprintf() with NULL format string appears to corrupt the stack...
2018-07-26 22:26:50 +02:00
dd0d5debef Internals: Child windows that are clipped or part of a collapsed parent are not marked as collapsed anymore, but just a separate hidden marker set. We distinguish hiding for size measurement vs hiding for other reasons. Cleaned a little the end of Begin. 2018-07-26 19:24:27 +02:00
0b045d8de5 Nav: Tweaked CTRL+TAB to hide visual noise on fast switch + fading out screen dimming and highlight to make the experience less harsh 2018-07-26 19:03:02 +02:00
7adac4ab3e FAQ update 2018-07-26 12:55:40 +02:00
0c88fad6c2 Internals: SplitterBehavior() added hover_visibility_delay parameter which is helpful to reduce visual noise. (#319) 2018-07-25 16:07:05 +02:00
357534e588 Made it possible to move a window by dragging from the Collapse button (past the drag threshold). Extracted some code out to a CollapseButton() function. 2018-07-24 16:45:11 +02:00
3a522b2400 Internals: Renamed one of the arrow functions so their name don't collide. 2018-07-24 16:41:17 +02:00
ff83d0e369 Examples: Using fully qualified "Dear ImGui" name in window titles. 2018-07-23 17:31:13 +02:00
528b50a89f Fixed horizontal mouse wheel not forwarding the request to the parent window if ImGuiWindowFlags_NoScrollWithMouse is set. (#1463, #1380, #1502) 2018-07-22 19:04:15 +02:00
4b8ce24e46 Internals: Extracted part of NewFrame() into a UpdateMouseWheel() function. 2018-07-22 18:57:28 +02:00
4ebd442a24 Added asserts to catch illegal modifications of the font atlas between NewFrame() and EndFrame()/Render(). (#1958) 2018-07-22 18:53:27 +02:00
e07f5d4c78 Changed ImGui::GetTime() return value from float to double to avoid accumulating floating point imprecisions over time. 2018-07-22 18:46:41 +02:00
ec76009bc4 Readme: fixed typo + patron 2018-07-22 18:09:44 +02:00
af38a5c41a Ignore GCC warning (-Wclass-memaccess) in imgui.h (#1959) 2018-07-22 18:05:13 +02:00
fded746d03 Tweaked Contributing guidelines, Issue and PR templates 2018-07-22 17:32:31 +02:00
048add5ef2 ImGuiTextFilter, TextRange: removed cruft from TextRange since it's not a publicly and generic helper at the moment + marked internal stuff + changed a reference to a pointer. (#1879) 2018-07-19 15:22:18 +02:00
d016ef1825 Examples: SDL: Removed SDL_HAS_WARP_MOUSE_GLOBAL in the non-viewport branch. (#1954) (+1 squashed commits) 2018-07-19 12:51:20 +02:00
93321d3280 Nav: Fixed CTRL+TAB windowing list from always showing the implicit Debug window. (#787) 2018-07-17 19:48:53 +02:00
7e59eb026b Fix warning when IMGUI_DEFINE_MATH_OPERATORS is already defined by build system. (#1950) 2018-07-17 17:17:56 +02:00
0c207b7bc9 Demo: Clarified the use of IsItemHovered()/IsItemActive() right after being in the "Active, Focused, Hovered & Focused Tests" section. This will be of more importance with the introduction of tabs. 2018-07-17 11:49:41 +02:00
d3be9185b3 Demo: Fixed spacing from b629f90 change. 2018-07-16 22:24:39 +02:00
73e13a0762 Examples: Tweaked the main.cpp example structure for all examples. (There are a few hidden agendas here: 1) I would like to avoid encouraging people from using the implicit "Debug" window, and promote using Begin/End. In spite of my best attempt, there are a few feature of the upcoming docking system that cannot work 100% properly for the implicit Debug window, so future proof let's not put that feature in the spotlight too much for new users. 2) Moved dumb hardcoded positions into a single spot that can be replaced with a viewport relative position and not affect other demo windows. 3) Calling ShowDemoWindow before anything else, also for the benefit of a specific docking demo which will have an ordering constraint which is not really problematic in a real app but shouldn't be put forward in the demo. 2018-07-16 22:17:34 +02:00
abe7b190dc Examples: DX10, DX11: Fixed unreleased resources in Init and Shutdown functions. (#1944) 2018-07-13 11:25:54 +02:00
badde9a970 Demo: Spacing. 2018-07-12 11:58:50 +02:00
b629f90393 Demo: Re-ordered example app code to match their menu order and forward declaration order + added header to delimitate them. 2018-07-12 11:42:33 +02:00
5e73e969fb Comments, exposed a few things in imgui_internal.h for consistency, added ImQsort wrapper. 2018-07-12 11:08:24 +02:00
23288547ec Revert part of c7016c2 incorrectly renaming ImGuiCol_NavWindowingHighlight to ImGuiCol_NavWindowListHighlight, that was wholly unnecessary (and not documented!). (also invalidate #1939) 2018-07-12 09:53:10 +02:00
59fb3274a7 Examples: include for intptr_t on tdm-gcc + mingw32 (#1936) + mouse buttons comments 2018-07-11 20:03:47 +02:00
9007dff5eb IsItemHovered(): Added ImGuiHoveredFlags_AllowWhenDisabled flag to query hovered status on disabled items. (#1940, #211)
+ shallow changelog tweaks
2018-07-10 19:16:57 +02:00
fff014dfed Examples: OpenGL3: Added shaders more versions of GLSL + made the example app default to GL 3.0 + GLSL 130 (instead of GL 3.2 + GLSL 150) unless on Mac. (#1938, #1900, #1513, #1466, etc.) 2018-07-10 18:29:57 +02:00
b829671df1 Fixed missing value in GetStyleColorName(). (#1939) broken with c7016c2 2018-07-10 16:45:54 +02:00
de13261f1b OpenGL3: Added error output when shaders fail to compile / link. (#1938) 2018-07-10 16:09:34 +02:00
4dfb9ef751 Internals: Extracted StartMouseMovingWindow so we can add code to turn an arbitrary widget into a window mover (will be useful to make the Collapse button a window mover past a mouse drag threshold) + added a couple of _None flags. 2018-07-10 11:16:40 +02:00
dc021f1c23 Internals: Fixed CalcSizeContents() returning negative value on first run (inconsequential afaik, but fixing for sanity) 2018-07-09 21:38:37 +02:00
17f36038e0 Internals: Misc/shallow merge from Docking branch. 2018-07-09 21:10:47 +02:00
7033b2043b Internals: Move IMGUI_CDECL declaration to imgui_internal.h so everyone can profit. 2018-07-09 20:34:12 +02:00
c7016c25e8 Nav: Added a CTRL+TAB window list and changed the highlight system accordingly. (#787) 2018-07-09 19:16:48 +02:00
0708f91617 Internals: Removed RootWindowForTabbing, won't be needed. Nav: Not starting NavWindowingTarget when a modal is active (was not noticeable). 2018-07-09 16:20:14 +02:00
6201cad2b4 Examples: Comments, Demo: Log early out, TODO. (#1553) 2018-07-09 11:43:53 +02:00
17efd7b3b0 Demo: Added basic Drag and Drop demo. (#143, #1931) 2018-07-08 20:06:49 +02:00
bd6097ac6f Drag and Drop: Calling BeginTooltip() between a BeginDragSource()/EndDragSource() or BeginDropTarget()/EndDropTarget() uses adjusted tooltip settings matching the one created when calling BeginDragSource() without the ImGuiDragDropFlags_SourceNoPreviewTooltip flag. (#143) + additional safety checks. 2018-07-08 20:06:49 +02:00
64938178b7 Internals: Moved selectable flags to avoid collision with public flags + rewrote some tests so we can consistently grep for (held && hovered) 2018-07-08 18:23:12 +02:00
a33f0d1f7f Drag and Drop: Fixed ImGuiDragDropFlags_SourceNoDisableHover to affect hovering state prior to calling IsItemHovered() + fixed description. (#143) 2018-07-08 16:38:57 +02:00
vby
3a42eb6620 Fix missing ImmReleaseContext in default Win32 IME handler (#1932) 2018-07-08 15:24:12 +02:00
b0cdfe0ece Generalized d11d211e so regular popups (without the AlwaysAutoResize flag) also have a smaller minimum size, but reduced it to an arbitrary 4.0f instead of 1.0f to ease debugging of faulty situations. (#1909) 2018-07-08 13:27:16 +02:00
c790723cfa Drag and Drop: Fixed an incorrect assert when dropping a source that is submitted after the target (bug introduced with 1.62 changes related to the addition of IsItemDeactivated()). (#1875, #143) 2018-07-08 13:03:39 +02:00
89e2ddf07f Examples: Comments + shallow coding convention tweak to be consistent across examples and with imgui_impl_osx 2018-07-08 11:16:11 +02:00
569e0f07f1 Examples: Removed old example_apple/ + tweak comments (#1873) 2018-07-08 10:57:16 +02:00
839e4d34bd Merge branch 'warrenm_osx' 2018-07-08 10:47:55 +02:00
c3f9220c15 Apple: Fixed example_osx_opengl2, renamed to example_apple_opengl2 + misc comments 2018-07-08 10:47:31 +02:00
d11d211e5d Allow popup from ignoring the style.WindowMinSize values so short menus are not padded. (#1909) Wider generalization of b16603745c. 2018-07-06 18:29:39 +02:00
93950b8c32 Internals: Removed unused ShadeVertsLinearAlphaGradientForLeftToRightText code. 2018-07-06 15:50:07 +02:00
42bf149ac6 Removed per-window ImGuiWindowFlags_ResizeFromAnySide beta flag in favor io.OptResizeWindowsFromEdges=true to enable the feature globally. (#1495) The feature is not currently enabled by default because it is not satisfying enough. 2018-07-06 15:30:21 +02:00
d64157e803 Introduced a new Metal renderer implementation and a new example illustrating usage of Metal on macOS and iOS (partially addresses #1873) 2018-07-05 21:58:15 +09:00
0146f4b456 Internals: BeginChildEx tweaks. 2018-07-05 09:17:16 +02:00
7b2662d245 Examples: Comments, bits of documentation 2018-07-04 19:06:28 +02:00
deb7aa29cd OSX: Various tweaks to imgui_impl_osx courtesy of @warrenm + fix NewFrame position which has been moved recently master. (#1873) 2018-07-04 13:24:16 +02:00
0d7e779b37 Merge branch 'master' into osx
# Conflicts:
#	examples/.gitignore
#	examples/README.txt
2018-07-04 13:13:11 +02:00
665bd1e140 Links and thanks. Comments on using BeginCombo/EndCombo + moved the Combo() implementations closer to each others to maximize user seeing how it is implemented from any of the secondary function body. 2018-07-04 10:29:28 +02:00
a765c83bad Ignore list: added emscripten output 2018-07-03 15:57:34 +02:00
ddb09c6011 Examples: Ignore all *.user files (#1919)
For example `Qt Creator` create `CMakeLists.txt.user` file with user settings.
2018-07-02 19:43:33 +02:00
645ab6633c Fixed a include build issue for Cygwin in non-POSIX (Win32) mode. (#1917, #1319, #276) 2018-07-01 12:25:37 +02:00
c4e34aaace Examples: Comments to clarify how the keyboard data is indexed. 2018-06-30 14:33:45 +02:00
b62cc5c150 Fix include Example_glfw_vulkan cmake (#1916)
Probably got broken because of the refactor.
2018-06-30 10:53:36 +02:00
6e67afc500 Tweaked software mouse cursor offset to match the offset of the corresponding Windows 10 cursors. (followup to #1914) 2018-06-29 16:36:40 +02:00
62b3d7c51e Fixed software Hand cursor from not actually working. Fixed demo from crashing. Fixed typo and extraneous trailing space. Added Changelogs. (#1913, #1914) 2018-06-29 16:36:40 +02:00
ecd9a223e3 add hand cursor support (+11 squashed commit) 2018-06-29 16:36:40 +02:00
004fe8916a Internals: Settings: Simple optimization caching index into the settings buffer, to remove an unnecessary O(N*M) search during saving. (with N=active root windows during the session, M=stored settings which grows over time) 2018-06-28 18:42:38 +02:00
242d7e0b0b ImVector: Added index_from_pointer() helper. 2018-06-28 18:37:38 +02:00
b16603745c Allow menu windows from ignoring the style.WindowMinSize values so short menus are not padded. (#1909) 2018-06-28 11:33:03 +02:00
7adae3299e Double-click on resize grip doesn't need to test HoveredWindow (as button has the flattenchild flag anyway) + double-click on title bar verify that we don't have overlapping items to allow contents in title bar. + Comments 2018-06-27 17:29:31 +02:00
42a919f303 Examples: Apple: Fixed paths of GLFW+GL2 example. (#1906) Update ignore list. 2018-06-27 09:39:52 +02:00
79153cf19f Internals: Various renaming. e.g. NewFrameUpdateHoveredWindowAndCaptureFlags() to UpdateHoveredWindowAndCaptureFlags() + exposed UpdateMovingWindow() in imgui_internal.h. 2018-06-26 12:40:37 +02:00
14ceaaf460 ArrowButton: Fixed to honor PushButtonRepeat() setting (and internals' ImGuiItemFlags_ButtonRepeat). Setup current line text baseline so that ArrowButton() + SameLine() + Text() are aligned properly. 2018-06-26 12:37:20 +02:00
9d67d18d86 Internals: Moved some of the SliderBehaviorT code into SliderBehavior to reduce the amount of instanciated code. 2018-06-25 14:01:21 +02:00
a1ec7723ef Examples: OpenGL3: Remove misleading or unnecessary "#version 150" strings. 2018-06-25 09:50:06 +02:00
c1d8dee6c5 Version 1.63 WIP 2018-06-25 09:40:09 +02:00
fb0106fad2 Demo: Fixed incorrect response to Begin() returning false in overlay demo (which cannot happen since we don't have a title bar, but that doesn't make it a good behaving demo!). 2018-06-25 09:32:55 +02:00
20e89201cb Examples: Fixes. 2018-06-23 09:42:47 +02:00
00418d13e3 Demo: Fixed mismatched TreePush/TreePop in Property Editor, due to incorrect revert in 826d77185e (#1895) 2018-06-22 17:45:03 +02:00
d68633398b Examples: Vulkan: nverted the parameters to ImGui_ImplVulkan_RenderDrawData() to be consistent with other bindings. 2018-06-22 10:02:02 +02:00
1b74e3be02 Version 1.62 2018-06-22 09:41:25 +02:00
f9a5ff7a19 Examples: DirectX12: Moved the ID3D12GraphicsCommandList* parameter from ImGui_ImplDX12_NewFrame() to ImGui_ImplDX12_RenderDrawData() which makes a lots more sense. (#301) 2018-06-21 12:13:04 +02:00
cac4c3f9b8 Examples: The functions in imgui_impl_xxx.cpp are prefixed with IMGUI_IMPL_API (which defaults to IMGUI_API) to facilitate some uses. (#1888) + Comments in imgui.h 2018-06-21 12:04:00 +02:00
528b0b4af6 Examples: SDL+OpenGL2: Fixed Makefile. (#1886) 2018-06-20 11:17:33 +02:00
c44a4bed84 Examples: Fixed bindings to use ImGuiMouseCursor_COUNT instead of old name ImGuiMouseCursor_Count_ so they can compile with IMGUI_DISABLE_OBSOLETE_FUNCTIONS. (#1887) 2018-06-20 11:06:29 +02:00
2ce121b7d0 Readme, Links, Bindings 2018-06-16 10:43:05 +02:00
40845852b9 Fixed warnings + readme 2018-06-16 10:23:11 +02:00
a402edb66c Examples: OSX: Added clipboard support. Fixed ignore list for xcode cruft. Comments about broken keys. (#1873) 2018-06-15 23:01:26 +02:00
b5d385824d Added assert in TreePop() to ease catching ID stack underflow earlier. 2018-06-14 15:11:14 +02:00
826d77185e Revert 640c0566: TreeNode: Fixed nodes with ImGuiTreeNodeFlags_Leaf flag always returning true which was meaningless -> more flexible to keep allowing it by default so it setup an ID scope. 2018-06-14 15:10:46 +02:00
ce0b36ba10 Added _None values to various enum flags, useful for readability and some coding style likes it. (Unfortunately we can't refer to them as default value in imgui.h functions because they need to be declared below). 2018-06-13 23:22:19 +02:00
2a6fbb2197 Speculative fix for Win32 clipboard handler if SetClipboardText() fails + Minor fix for static analyzer + using :: prefix when calling in Win32 functions. 2018-06-13 22:22:52 +02:00
185b4dde87 Examples: Allegro5: Added support for ImGuiConfigFlags_NoMouseCursorChange flag. Added clipboard support. Unindexing buffers ourselves as Allegro indexed drawing primitives are buggy in the DirectX9 back-end. 2018-06-13 19:22:47 +02:00
335f6fde7e Comments + missing changelog bits in 1.52 for SetNextWindowPos, SetNextWindowPosCenter. (obsolete #771) 2018-06-13 14:06:58 +02:00
d57fc7fb97 Added IsItemDeactivatedAfterChange() if the last item was active previously, isn't anymore, and during its active state modified a value. Note that you may still get false positive. (#820, #956, #1875) 2018-06-13 00:10:33 +02:00
be4b8b5615 Internals: Added GetItemID(), GetFocusID() for consistency. Made GetActiveID() inline. Comments, fixed typos, demo tweaks. 2018-06-13 00:02:19 +02:00
3569d74f98 Demo: Moved test of the Hovered/Active/Focused functions to the Widgets section. 2018-06-12 18:51:23 +02:00
cd455a4600 Added IsItemDeactivated() to query if the last item was active previously but isn't anymore. Useful for Undo/Redo patterns. (#820, #956, #1875) 2018-06-12 18:44:33 +02:00
c725710c6d Comments 2018-06-12 18:25:04 +02:00
a48815b870 Comments, changelog 2018-06-12 12:12:56 +02:00
e54b61aa0f Examples: OSX: Fixed obsolete enums. Fixed keyboard mapping. Added missing keyboard modifiers. (#1873) 2018-06-11 21:07:14 +02:00
f96c7fac91 Examples: FreeGLUT: Fixed mapping of Space key. (#801) 2018-06-11 20:03:35 +02:00
cdf51cad2d Comments, documentation 2018-06-11 19:52:40 +02:00
a1b6766d43 Examples: FreeGLUT: Added FreeGLUT bindings. Added FreeGLUT+OpenGL2 example. (#801) 2018-06-11 19:27:57 +02:00
bdb3d72d37 Examples: Win32: Fixed handling of mouse wheel messages to support finer position messages (typically sent by track-pads). (#1874) 2018-06-11 17:36:18 +02:00
7acb46bec5 Examples: Comments to make ImGuiConfigFlags_NoMouseCursorChange more visible (#1027). + Allegro5: Added support for ImGuiConfigFlags_NoMouseCursorChange flag. 2018-06-11 12:33:51 +02:00
fac0c801da Examples: Added imgui_impl_osx.mm bindings (#1870, #281) 2018-06-11 10:19:17 +02:00
6f7b7807ad Fixed Travis path + various paths in comments/documentations 2018-06-10 16:14:43 +02:00
5a13e4dcde Examples: Renamed imgui_impl_sdl2.cpp to imgui_impl_sdl.cpp (#1870) + changelog bits 2018-06-10 15:58:21 +02:00
8d58fbb5ed Examples: Renamed example folders. (#1870) 2018-06-10 15:42:14 +02:00
689ec0bd06 Merge branch 'font_min_max_advance' 2018-06-10 15:07:18 +02:00
85f9694bd4 Big example binding refactor (manually imported from Viewport branch, stripped out of Viewport code). (#1870)
Read examples/README.txt for some details.
ImDrawData: Added DisplayPos, DisplaySize fields honored by all backends (not strictly necessary to honor just now, but doing it to be ahead)
2018-06-08 19:37:33 +02:00
f5bf9f509c ImFontConfig: Added GlyphMinAdvanceX/GlyphMaxAdvanceX settings useful to make a font appears monospaced, particularly useful for icon fonts. (#1869) 2018-06-08 12:52:46 +02:00
8e48ab6b19 Nav: Addendum: only set io.WantSetMousePos if necessary. (#1867) 2018-06-07 18:08:59 +02:00
e3710448ae Nav: Removed an unnecessary assertion that could fail when using Mouse and Keyboard simultaneously with the NavEnableSetMousePos flag. (#1867) 2018-06-07 18:04:44 +02:00
929529a0db SliderFloat(): When using keyboard/gamepad and a zero precision format string (e.g. "%.0f"), always step in integer units. (#1866) 2018-06-07 13:29:54 +02:00
b3a5b8debd Popup: Improved handling of (erroneously) repeating calls to OpenPopup() to not fully close/re-open the popup so its child popups won't get closed. (#1497, #1533, #1865).
Followup/fix the change made in deab2ab015
2018-06-06 19:25:49 +02:00
f63a404df0 Added missing IMGUI_API markers in non-inline section of the IMGUI_DISABLE_OBSOLETE_FUNCTIONS block: old Begin(), InputFloat(). 2018-06-06 15:40:40 +02:00
5a288b2d3a Readme, FAQ tweaks (#1807) 2018-06-06 13:02:19 +02:00
d44faa165a Added GetGlyphRangesChineseSimplifiedCommon() helper that returns a list of ~2500 most common Simplified Chinese characters. Renamed GetGlyphRangesChinese() to GetGlyphRangesChineseFull() to distinguish other variants and discourage using the full set. (#1859)
Changed the accumulative encoding to remove the implicit +1 which only saved a little space and made things more confusing.
2018-06-06 12:35:36 +02:00
2a56105f85 TreeNodeEx(): The helper ImGuiTreeNodeFlags_CollapsingHeader flag now include ImGuiTreeNodeFlags_NoTreePushOnOpen. The flag was already set by CollapsingHeader(). 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) 2018-06-06 11:39:29 +02:00
21f553fa55 stb_textedit, InputText(): Fixed Undo after pasting large amount of text (Redo will still fail when undo buffers are exhausted, but text won't be corrupted).
See issue 620 in nothings/stb/
2018-06-05 23:29:06 +02:00
67b139ccae Updated stb_textedit 1.09 + patches --> 1.12 + minor patches. (#715) 2018-06-05 23:27:42 +02:00
916528080e InputTextMultiline(): Fixed double navigation highlight when scrollbar is active. (#787) 2018-06-05 16:16:54 +02:00
512ffa37bd Nav: Fixed clipped scoring when exiting a NavFlattened child back to a parent item (clipping not desirable then). (followup and fix to c665c15). (#787) 2018-06-05 16:12:46 +02:00
6d98c0323b Nav: Added support for PageUp/PageDown (explorer-style: first aim at bottom/top most item, when scroll a page worth of contents). (#787) 2018-06-05 15:49:33 +02:00
2bdf0b54a2 Changelog formatting update, Todo, comments. Tweak Child demo. Shuffle some code in NavUpdate(). 2018-06-05 15:34:22 +02:00
c665c15a7d Nav: When entering into a NavFlattened child we only consider the visible items for scoring (note that this only work assuming the NavFlattened child window has interactive items). Fixes accidentally hoping into a NavFlattened child. (#767) 2018-06-04 18:18:12 +02:00
f4120e20d5 Nav: NavFlattened: Fixed navigation miscrolling parent window when the current window is scrolling enough to keep the item in view. Fix feature added in e11610d6, typically affect large navigation steps (used by PageUp/PageDown). + comments (#787) 2018-06-04 18:18:11 +02:00
5a7e98c7cf Internals: Nav: Removed ParentID from move result (unused, would need to be full-filled for PageUp/PageDown code) + FAQ typo fix. 2018-06-04 15:43:33 +02:00
948009a8b2 Intensive FAQ answer for the million of people asking the same questions over and over again. (#1848, #1791, #1840, #1493, #1295) 2018-05-30 16:31:34 +02:00
0903a12c2a Fixed documentation example (#1847) 2018-05-30 10:28:27 +02:00
a2198bcf6b Made mouse drag distance calculation more robust to invalid mouse position. (#1845) 2018-05-29 10:47:18 +02:00
08e20ae465 Internals: Reintroducing LastActiveIdTimer because it is useful and to reduce merge conflicts. (#1537) 2018-05-28 21:48:25 +02:00
d4b151076c Internals: Added BeginDragDropTooltip() internal function to convey semantic (drag and drop tooltip doesn't get clipped within display boundaries). Revert part of 3218666fb9. (#1739, #143). 2018-05-28 21:40:09 +02:00
3218666fb9 Made drag source tooltip display at the same position as a regular tooltip to avoid discontinuity where dynamically swapping tooltip at the target site. Made drag source tooltip override previous tooltip if any. (#1739, #143). 2018-05-28 21:24:03 +02:00
92b7d6bc4f Added ImGuiDragDropFlags_AcceptNoPreviewTooltip flag to disable drag source tooltip from the target site (#143) 2018-05-28 20:57:41 +02:00
7fd9199a1d Internals: Selectable: Renamed variables. Todo update. 2018-05-28 17:13:40 +02:00
f843facba4 Internals: PushItemFlag() flags are inherited by BeginChild(). 2018-05-28 15:30:42 +02:00
0e83d74698 Documentation: FAQ, ID Stack, Fonts (#1839, #1840), #1842) 2018-05-27 22:32:46 +02:00
929522febe Missing examples changelog bits and todo list 2018-05-25 12:51:24 +02:00
9770c8b21d Examples: OpenGL3: Removed unnecessary backup/restore of GL_ELEMENT_ARRAY_BUFFER_BINDING since this is part of the VAO state. (#1836) 2018-05-25 12:09:14 +02:00
251f178a6f Drag and Drop: Source doesn't report as hovered (at a lower-level). Source disable AllowOverlap flag if any set. (#143) 2018-05-24 18:05:50 +02:00
5fd23eeb74 Examples: iOS: Fixed missing call to CreateContext() + various shallow coding style tweaks. (#1835) 2018-05-24 17:42:50 +02:00
b88fbd69cc Drag and Drop: BeginDragDropSource(): Offset tooltip position so it is off the mouse cursor, but also closer to it than regular tooltips, and not clamped by viewport. (#1739) 2018-05-23 23:19:01 +02:00
09ea376a6a BeginCombo(), BeginMainMenuBar(), BeginChildFrame(): restore modified style at end of Begin instead of End so doesn't affect child windows, BeginTooltip() etc.. (allowed since 7b6b7038c5) 2018-05-23 23:05:26 +02:00
bef0a13283 Examples: Comments about GLSL version not being the same as GL context version. (#1828) 2018-05-21 11:28:30 +02:00
663e2c9237 Examples: GLFW: Made it possible to Shutdown/Init the backend again (by reseting the time storage properly). Changelog. Added to Vulkan example. (#1827) 2018-05-21 10:36:50 +02:00
e8a72d3e72 Examples: GLFW* Make subsequent window creation possible. 2018-05-21 10:34:17 +02:00
bf56b6b9a5 ColorEdit3, ColorEdit4, ColorButton: Added ImGuiColorEditFlags_NoDragDrop flag to disable ColorEditX as drag target and ColorButton as drag source. (#1826) 2018-05-21 10:13:21 +02:00
7c7e96e1aa ImVector: added erase(it first, it last) helper. Added erase_unsorted(it) helper. + todo fixes/additions 2018-05-18 23:00:48 +02:00
6c684ae39b Fixed GCC pre-8 build. (#1822) + added bonus the non-ASCII character pasted from GCC breaks my SourceTree/Git combo 2018-05-17 18:10:20 +02:00
64b1645deb Disabled GCC 8.1.0 warnings -Wclass-memaccess (#1822) 2018-05-17 14:19:20 +02:00
d5c8f404b2 Remove trailing white spaces. 2018-05-17 14:12:37 +02:00
ede5059e69 Internals: Forward declaring and commenting internal structures. Renamed ImGuiDrawContext to ImGuiWindowTempData, but kept .DC member name for backward compatibility purpose 2018-05-17 10:48:15 +02:00
86f8cdbd98 Comments + Internals: Selectable: decoupled internal flags and removed their menu / menu-item semantic as upcoming changes are requiring more flexibility. 2018-05-16 18:03:37 +02:00
640c056602 TreeNode: Fixed nodes with ImGuiTreeNodeFlags_Leaf flag always returning true which was meaningless. Tweak demo. 2018-05-14 23:36:37 +02:00
99ff6fc7e4 Nav: Draft internal api to forward move request with loop/wrap options. Will rework for parallel scoring of two paths (as a generalization of the NavFlattened concept). (#787) 2018-05-14 23:07:35 +02:00
e11610d6ff Nav: To keep the navigated item in view we also attempt to scroll the parent window as well as the current window. (#787) 2018-05-14 19:50:48 +02:00
036dce634e Version 1.62 WIP 2018-05-14 19:19:19 +02:00
721ca97d95 ImVector: Tweaked reserve() flow to avoid calling MemFree(NULL) which is unnecessary. (#1796) 2018-05-14 17:52:29 +02:00
19544629be Examples: OpenGL3: Trying to make the call to glBindSampler optional to make the example code easier to use/share with different context version. (#1806) 2018-05-14 17:47:22 +02:00
78b28d545f Version 1.61 + todo additions 2018-05-14 12:34:47 +02:00
d7cc4bc317 Demo: Tweaked custom rendering custom, added a Thickness drag. Clarified use of vertical/horizontal line. Add a single pixel demo (wowow) 2018-05-13 23:42:19 +02:00
3f29ed6fd5 ColorEdit: Fixed not being able to pass the ImGuiColorEditFlags_NoAlpha or ImGuiColorEditFlags_HDR flags to SetColorEditOptions(). Demo tweak. 2018-05-13 23:41:43 +02:00
725c13ca68 Fix for atof with glibc. 2018-05-13 22:43:43 +02:00
2a2bb8970d Added ImAtof, ImCeil, ImFloorStd to IMGUI_DISABLE_MATH_FUNCTIONS for consistency. Configuration comments. 2018-05-13 22:31:29 +02:00
ff033f431b Added IMGUI_DISABLE_MATH_FUNCTIONS in imconfig.h to make it slightly easier to redefine wrappers to std maths functions such as fabsf(), fmodf(), etc. Comments. 2018-05-13 21:04:07 +02:00
f8ca7f45c4 Comments about AddConvexPolyFilled(), PathFillConvex() requiring a clockwise order path. (#1811) 2018-05-13 15:55:15 +02:00
e61b224b24 Update README.md 2018-05-12 19:20:54 +02:00
d53bae4c14 Demo: Fixing build due to using INT_MAX, UINT_MAX, LLONG_MAX, ULLONG_MAX. 2018-05-12 18:58:59 +02:00
8adbf081af Demo: Renamed "fixed overlay" to "simple overlay" because it's not fixed any more! 2018-05-12 18:07:22 +02:00
a7a1b3b0a7 Demo: Added demo for DragScalar(), InputScalar(), SliderScalar(). (#643) 2018-05-12 17:53:34 +02:00
7475c1e7dd Data types: DragScalar: Fixed speed of integer values tweaking with keyboard/gamepad when speed < 1. Enforce min/max bounds when power curves are used. SliderScalar: Fixed integer/slow tweaking. (#643) 2018-05-12 17:39:34 +02:00
fc7fc83f9e Data types: DragScalar, InputScalar: default parameters. Added IM_STATIC_ASSERT(). Comments. 2018-05-11 19:27:27 +02:00
0dc18a6ca6 Documentation tweaks, comments 2018-05-11 16:54:50 +02:00
8149408408 Merge branch 'data_types'
# Conflicts:
#	CHANGELOG.txt
#	imgui.cpp
2018-05-11 16:48:50 +02:00
14f575ff76 Scrolling: Fixed a case where using SetScrollHere(1.0f) at the bottom of a window on the same frame the window height has been growing would have the scroll clamped using the previous height. (#1804) 2018-05-10 14:31:04 +02:00
91e39e72a3 Combo: Horizontally offset items using WindowPadding instead of Indent, for consistency. 2018-05-09 23:12:35 +02:00
773d484009 Internals: Made ContentsRegionRect absolute to reduce confusion. Renamed InnerRect to InnerMainRect, renamed WindowRectClipper to OuterRectClipped. 2018-05-09 23:12:34 +02:00
f83f566530 Internals: Nav: Extracted code into a NavClampToVisibleAreaForMoveDir() + fix debug code + inline some functions, removed obsolete EndChild() comment. 2018-05-09 21:48:03 +02:00
39f4761ff7 TODO list update + Changelog and comments for #1803. 2018-05-09 15:48:33 +02:00
895647a240 Fixed clipboard paste memory leak in SDL examples. (#1803) 2018-05-09 15:48:33 +02:00
4cabf599c4 Data types: Fix format srtings with leading blanks. Fix ColorEdit4() to not use obsolete formats (when using IMGUI_DISABLE_OBSOLETE_FUNCTIONS) (#643) 2018-05-08 23:41:46 +02:00
ad2927888b Apply fix from data_types branch, some widgets broken when format string doesn't contains a %. Broken by 92f0165f85. Data_types branch fix c5fb929555. 2018-05-08 20:07:25 +02:00
5f464877ed Internals: Declaring DragBehavior, SliderBehavior in there (no warantee given) as they may be useful to custom widgets. 2018-05-08 19:52:56 +02:00
8da0d42ef2 Moved DragScalar, InputScalar, SliderScalar to imgui.h as well as ImGuiDataType (#320, #643, #708, #1011) 2018-05-08 19:52:55 +02:00
c5fb929555 Data types: Fixed empty format string (or no % specifier) breaking the parsing back of values. 2018-05-08 19:52:55 +02:00
280c05e4f8 Fix to allow compiling in unity builds where stb_rectpack/stb_truetype may be already included in the same compilation unit. 2018-05-08 11:02:38 +02:00
f13f10e725 Settings: Comments (#923, #993) 2018-05-07 22:37:10 +02:00
0bf43b3a1b Settings: Added LoadIniSettingsFromDisk(), LoadIniSettingsFromMemory(), SaveIniSettingsToDisk(), SaveIniSettingsToMemory(), io.WantSaveIniSettings. (#923, #993) 2018-05-07 22:18:45 +02:00
023cc25c7c Internals: Removed unnecessary allocation indirection for g.LogClipboard (this only made sense when there was a global context instance) 2018-05-07 22:15:25 +02:00
35e74c72ab imgui_freetype: skip missing glyphs as well to match our stb loader (#1671, #1703) 2018-05-07 20:32:17 +02:00
6eda9ed3fb Skip missing font glyphs V2 revert changes to stb_truetype.h ( 2018-05-07 19:57:53 +02:00
787a475650 Skip missing font glyphs to 1) avoid using space for missing glyphs and 2) allow merging fonts with overlapping ranges. Demo: Fixed displaying ? instead of greyed out empty box. (#1671, #1703) 2018-05-07 18:03:00 +02:00
807c4f0ea4 Ran a spell checker for sanity. 2018-05-07 14:44:35 +02:00
4310bad32a Examples: DirectX9: Comments, updated changelog, notes about usage of imconfig.h (#1790, #1687) 2018-05-07 11:52:48 +02:00
d0051ce5cb add renderstate D3DRS_SHADEMODE for Dx9 impl
add backuping transform for Dx9 impl
(#1790, #1687)
2018-05-07 11:52:48 +02:00
3e8087458d SliderScalar, VSliderScalar(): Support for any data types. Tested with various ranges/limits. Note that Drag/Slider/Input currently fail if the format string doesn't preview the actual value. Will fix next. (#320, #643, #708, #1011) 2018-05-04 20:55:51 +02:00
944f414cc6 Internals: A few selected math helpers are now using template to handle all supported types. Added ImPow() to wrap float/double in a standard manner without calling pow(double) when not needed in Drag code. 2018-05-04 18:14:59 +02:00
f4c16fbb99 Internals: Data types: Made format string optional. DragBehavior: Moved a bit of code outside of the template. Slider tidying up. Removed unnecessary call to fabsf(). 2018-05-04 17:57:47 +02:00
dcd26f1295 DragFloat, DragInt: Default format string is none is passed to the function. Fixed demo using old style %.0f. 2018-05-04 16:41:48 +02:00
dbe16b6a70 Made IMGUI_DISABLE_OBSOLETE_FUNCTIONS exceptionally not affect the layout of ImGuiIO. (#1695) 2018-05-04 14:55:38 +02:00
f47c756755 Internals: Missing const, some renaming. Tweak legacy fast path. 2018-05-03 22:12:55 +02:00
0699ae161f DragInt, DragScalar: Actually made the fast-past handle the now-most-common case.. 2018-05-03 21:49:38 +02:00
7640439747 DragInt: Patch old format strings to replace %f by %d when using the DragInt() entry point. (#320, #643, #708, #1011) 2018-05-03 21:35:04 +02:00
17d3c6305e Ran a spell checker for sanity. 2018-05-03 21:11:53 +02:00
069b284f17 Internals: Tidying up internal helpers. Fixed a case ImParseFormatTrimDecorations() can return an off by one (out of bound) pointer if the format string is invalid. Extracted ImParseFormatFindEnd() out of TrimDecorations so we can use it to find the format type and replace the %f in old Int apis. 2018-05-03 20:22:29 +02:00
086c3925c4 Internals: Fixed DragInt* default format string. InputScalar(), InputScalarN(), removed InputFloatN(), InputInt(). Note that DragInt2/3/4 will %f format strings will currently be broken. (#320, #643, #708, #1011) 2018-05-03 19:42:35 +02:00
6c932479f2 Internal: DragScalar(), InputScalar() now support signed/unsigned, 32/64 bits, float/double data types. (#320, #643, #708, #1011) 2018-05-03 17:34:38 +02:00
93b8580a8d Internals: DragFloat: Fixed power handling. Use an temporary accumulator and no absolute values so we will be able to manipulate double as well as 64-bit integers. (#1011, #708, #320) 2018-05-03 17:34:33 +02:00
3f04fd0644 Internals: DragFloat: Removed DragSpeedScaleFast/DragSpeedScaleSlow since it's not yet usable and Nav version doesn't have an equivalent. 2018-05-03 17:34:29 +02:00
4780ac1ca4 Internals: Data types: Added s64, u64 data types. Added support in InputScalar(). Removed internal.h InputScalarEx() to InputScalar(). Removed cheap-relative-operators support in recently added U32 data path, since this is heading toward being legacy code. + Fixed InputDouble parsing code. (#1011, #320, #708) 2018-05-03 17:34:22 +02:00
d9fa1f869e Comments about using "power curves". Demo tweaks. (#648) 2018-05-03 17:34:15 +02:00
8a370f6491 SliderFloat: Fixed grab size and steps with %g format. (#642, #1301) 2018-05-03 17:34:09 +02:00
10e3f17235 DragFloat/SliderFloat internal InputScalar trim leading/trailing spaces emitted from the format string when presenting an edit box to the user. (#648)
Follow up to 6881d065b8
2018-05-03 17:34:02 +02:00
a62f195e83 Internals: Renamed IsCharIsSpace() to IsCharIsBlank*() to match standard terminlogy and added ascii/u16 variations. 2018-05-03 17:33:55 +02:00
ef05141a06 Internals: InputScalarEx: Tweak internals so there is a fast path for the simple case.
(in particular because it makes it clear what the extra code is for, so people tempted to create their own InputText data transform/handler understand how little is actually needed)
2018-04-30 20:12:14 +02:00
ed756d474e Internals: Added ImGuiDataType_Uint32 data type which is usable with InputScalarEx(). 2018-04-30 20:02:33 +02:00
7df985bc5c Nav: Fixed hovering a Selectable() with the mouse so that it update the navigation cursor. Fixed c8b9b2c6 which was incorrect (#787) 2018-04-30 19:40:25 +02:00
a1da7f9860 Internals: Tweaked ParseFormatPrecision(), clarified its more limited purpose, allowing 2-digits precisions since it makes (some) sense for doubles. (#648) 2018-04-30 16:52:16 +02:00
92f0165f85 DragFloat, SliderFloat: Rounding scalar using the provided format string instead of parsed precision. (#648) 2018-04-30 16:44:57 +02:00
6881d065b8 DragFloat/SliderFloat internal InputScalar trip trailing decoration off the format string when presenting an edit box to the user. (#648) 2018-04-30 15:59:59 +02:00
d7e24416dd DragFloat/SliderFloat internal InputScalar relies on the user supplied format string to format and parse value. (#648)
The trailing text after the format will be displayed in the InputText but not affect back parsing. Ideally we can try to strip it later.
2018-04-30 15:21:51 +02:00
429f48bb4f Clarified usage of ListBoxHeader() before we rename those functions + fixed demo code that didn't honor it correctly. (#1783) 2018-04-29 12:20:22 +02:00
f2e9dddeca DragDrop: Removed const qualifier from ImGuiPayload 's void* data, easing casting on user side. 2018-04-28 10:43:15 +02:00
d317951b37 Demo: Fixed demo from using obsolete functions. 2018-04-28 10:33:48 +02:00
f80314754c InputFloat,InputFloat2,InputFloat3,InputFloat4: Added variations taking a more flexible and consistent optional "const char* format" parameter instead of "int decimal_precision". This allow using custom formats to display values in scientific notation, and is generally more consistent with other API. Obsoleted functions using the optional "int decimal_precision" parameter. (#648) 2018-04-28 00:11:40 +02:00
73445ff248 Renamed all "display_format" arguments to "format" to emphasis that they also affect rounding of values. (#648, #642) 2018-04-27 23:44:27 +02:00
8a38271a7c SliderFloat, DragFloat: Fix to allow input of scientific notation when Ctrl+Clicking a slider or drag, matching the change done in c19b2781 for InputFloat(). (#648, #1011) 2018-04-27 23:18:28 +02:00
066550de68 DragFloat, DragInt: Cancel mouse tweak when current value is initially past the min/max boundaries and mouse is pushing in the same direction (keyboard/gamepad version already did this). 2018-04-27 19:15:25 +02:00
a84aff1875 Internals: DragBehavior: tweaks internals. 2018-04-27 18:22:10 +02:00
1d99b5f963 Internals: Reordered parameters of DataTypeFormatString() internal helper functions and shallow tweaks. 2018-04-27 18:19:59 +02:00
101f9b42b7 InputText: Fixed returning true when edition is cancelled with Esc and the current buffer matches the initial value. 2018-04-27 17:32:03 +02:00
28edece04f Comments, minor tweaks 2018-04-27 17:32:03 +02:00
f8c9c33d33 Fixed static analyzers warnings with bool literals (#1775)
* Use `false` instead of `0` for a bool literal.
* Simplify calls to RadioButton to not need bool literals.
2018-04-26 09:51:46 +02:00
27ac9f4761 Comments (#1695) 2018-04-25 22:16:16 +02:00
eb1c36fdfb Added IMGUI_CHECKVERSION() macro to compare version string and data structure sizes in order to catch issues with mismatching compilation unit settings. (#1695, #1769) 2018-04-25 22:07:14 +02:00
711a63befc Misc: Stop moving window if mouse position becomes invalid. Flagged menus are _NoMove for sanity. 2018-04-25 17:58:54 +02:00
d317d90610 Misc: NavCalcPreferredRefPos selects between mouse and nav reference position + added sanity assert (merged from viewport branch to minimize branch drift). 2018-04-25 17:58:54 +02:00
9cbca8c127 Begin: Shuffled some code, _should_ have no side-effect. Clear NextWindowData in one call and more consistently. (merged from viewport branch to minimize branch drift). 2018-04-25 17:58:54 +02:00
e3453d0dc4 Misc: Comments and shallow/small changes (merged from viewport branch to minimize branch drift). 2018-04-25 17:58:53 +02:00
b28535d1da ImGuiTextBuffer::appendfv needs to va_end the args_copy. 2018-04-25 17:40:39 +02:00
01fa934222 Internals: Removed unecessary Pos/PosFloat separation, only reason appears to be mostly pre-1.0. The only piece of code that I expected sub-pixel window position to matter actually already round its delta (wrongly so, will fix later/separately if we want). 2018-04-25 15:24:26 +02:00
7ebdadf92b Fix various typos. 2018-04-25 09:40:14 +02:00
46698c96c5 Removed presumably obsolete MovingWindow tests which prevent move/merge logic in viewport branch from working in all situations (e.g. docking away when ActiveId is the ID of a tab) 2018-04-24 16:48:26 +02:00
dc03c93164 Internals: Removed misleading ImRect::FixInverted + fix minor formatting in Readme.
Demo: Fixed Overlay: Added a context menu item to enable freely moving the window.
2018-04-24 14:19:10 +02:00
7b6b7038c5 Window: Relaxed the internal stack size checker to allow Push/Begin/Pop/.../End patterns to be used with PushStyleColor, PushStyleVar, PushFont without causing a false positive assert. (#1767) 2018-04-23 17:58:49 +02:00
22773e03a2 InputText: On Mac OS X, support Cmd+Shift+Z for Redo. Cmd+Y is also supported as major apps seems to default to support both. (#1765) 2018-04-23 11:15:13 +02:00
e2f831c80e InputText: tweaks, minor refactoring, renaming + comments (#1695) 2018-04-23 11:09:16 +02:00
037d5a7e98 Columns: Fixed a bug introduced in 1.51 where columns would affect the contents size of their container, often creating feedback loops when ImGuiWindowFlags_AlwaysAutoResize was used. (#1760) 2018-04-20 16:03:21 +02:00
49a451d247 Window: Fixed windows using the ImGuiWindowFlags_NoSavedSettings flag from not using the same default position as other windows. (#1760) 2018-04-20 15:40:12 +02:00
f93dce9513 InputText: Tweak to make the if statement more readable + update Changelog (#1747) 2018-04-19 16:21:32 +02:00
1554d97492 on OSX, ignore text input when CMD key is down 2018-04-19 16:17:57 +02:00
6beafe555c Update issue template so that removing the carriage return doesn't merge the user's text with the list/bullet item. 2018-04-19 14:47:29 +02:00
f5700f238d Documentations for Github users. Metrics: Fixed display of NavRectRel, added display of ParentWindow. 2018-04-19 11:08:20 +02:00
bcac02809f Examples: Allegro 5: Renamed bindings from imgui_impl_a5.cpp to imgui_impl_allegro5.cpp. 2018-04-18 21:55:12 +02:00
3913297384 Examples: Allegro 5: Added support for 32-bit indices setup via defining ImDrawIdx, to avoid an unecessary conversion (Allegro 5 doesn't support 16-bit indices). 2018-04-18 21:51:14 +02:00
6d6f4a85f6 Fixed DisplaySafeAreaPadding not affecting popups/tooltips/menus at it should have (partly broken in 2e5577f44f). 2018-04-18 17:40:38 +02:00
6a0b2627ad BeginMainMenuBar: Followup to 1e41bad9. Removed public window flag. DisplaySafeAreaPadding defaults to (3,3) instead of (4.4). Comments, tab to spaces, Changelog. (#1439) 2018-04-18 17:37:35 +02:00
1e41bad90f Added DisplaySafeAreaPadding to MainMenuBar height and fixed starting x position. Fixes main menu bar problems with TVs. (#1439) 2018-04-18 15:13:09 +02:00
7241dc61d4 Fixed default proportional item width lagging by one frame on resize + miscellaneous minor tweaks. 2018-04-17 23:36:59 +02:00
83d97d4a9b Fix typos KeyDown => KeysDown 2018-04-14 10:28:10 +02:00
d1c16d4ccd Documentation bits. Misc comments. 2018-04-13 22:23:34 +02:00
58fd8ea303 Fix minor error in doc
Not a big deal.
2018-04-12 13:18:26 +02:00
d1d2bbf86a Internals: Popup: Moved popup/menu/tooltip positioning code (viewport branch needs it organized in a different manner, so we are pushing the bulk of it here to minimize differences). 2018-04-11 17:01:19 +02:00
bfc0efaae9 Internals: Window: Aggregating ImDrawList into the ImGuiWindow structure. 2018-04-11 12:43:38 +02:00
84fe711bdf Settings: Fixed saving an empty .ini file if CreateContext/DestroyContext are called without a single call to NewFrame(). (#1741) 2018-04-11 10:08:23 +02:00
296f03374b NewFrame: Prevent division by zero in frame rate calculation if io.DeltaTime is continuously zero. (#1740, #881) 2018-04-10 23:48:27 +02:00
928a4ad315 Begin: moved tooltip position code in an else block. Misc comments 2018-04-10 16:51:16 +02:00
52cac135c9 Internals: Renamed GetFrontMostModalRootWindow() to GetFrontMostPopupModal() and exposed in imgui_internal.h (#1738) 2018-04-10 15:04:36 +02:00
9117632bf0 Misc: IM_DELETE() helper function added in 1.60 doesn't clear the input _pointer_ reference, more consistent with expectation and allows passing r-value. 2018-04-09 20:42:49 +02:00
660c157880 Examples: Added missing calls for ::DestroyWindow, glfwDestroyWindow() + fix old comments. 2018-04-09 19:16:47 +02:00
6f1f5cbc20 Version 1.61 WIP 2018-04-09 14:02:32 +02:00
dd079fe6e6 Version 1.60 (missed the string). Will retag. 2018-04-09 13:52:24 +02:00
54fca1d1b8 Fixed erroneous call to io.Fonts->ClearInputData() + ClearTexData() that was left in DX10 example but removed in 1.47 (Nov 2015) in every other back-ends. (fixes 6cee2fca94) (#1733, ~#1731) + assert 2018-04-09 13:13:06 +02:00
8acda84202 Nav: Fixed comment. (#1599) 2018-04-08 12:27:11 +02:00
3a29ddbcfa Version 1.60 2018-04-08 00:45:02 +02:00
6d0c720451 Internals: Removed unused internal variant of ArrowButton(). 2018-04-07 23:06:06 +02:00
82b7a39f31 Fixed a few zealous warnings. 2018-04-07 10:38:01 +02:00
c712f7275d Fixed unused variable warning. 2018-04-07 10:25:51 +02:00
c2fc978983 Style: Default style is now StyleColorsDark()! Toward a 1.60 release :) (#707) 2018-04-06 23:25:25 +02:00
0734a12d25 IO: ImGuiConfigFlags_NoMouse disable hovering so it is not destructive. Amend 2464e62a1a 2018-04-06 23:05:53 +02:00
e88fb10d7c NewFrame: Extract some code into a NewFrameUpdateHoveredWindowAndCaptureFlags() which can be of use with touch-based inputs systems. 2018-04-06 19:36:15 +02:00
c1bdab6d5b Comments about io.WantCapture flags + todo entries. 2018-04-06 19:36:14 +02:00
ac2027c415 NewFrame: Extract some code into a NewFrameUpdateMouseInputs function. Moved settings saving higher up in the function so it is next to its peers. 2018-04-06 19:36:14 +02:00
2464e62a1a IO: Added ImGuiConfigFlags_NoMouse to force clear/disable mouse inputs in NewFrame(). 2018-04-06 19:36:13 +02:00
72b7f48870 Renamed ImGuiConfigFlags_NoSetMouseCursor to ImGuiConfigFlags_NoMouseCursorChange. Followup to 75c3793db5 two weeks ago. (#787, #1495, #1202) + comments 2018-04-06 18:12:21 +02:00
18a243bef0 Columns: Fixed calling Columns() again with the same number of columns. (#125) 2018-04-06 17:50:50 +02:00
5f4001a811 Contribution guidelines 2018-04-04 20:48:49 +02:00
fc30462f18 Hide new windows for one frame until they calculate their size. Also fixes SetNextWindowPos() given a non-zero pivot. (#1694) 2018-04-04 19:35:08 +02:00
5aa3f99b4c Internal: using more consistent comparaison with HiddenFrames to not imply it could be -1. Tweaked comments. 2018-04-04 17:21:36 +02:00
4649967112 Added extra comments and assertions to avoid user combining ImGuiCond flags. (#1694) 2018-04-04 15:01:01 +02:00
cd1e6e384f Tooltip windows uses PopupBorderSize (#1697) + commented out debug stuff. 2018-04-04 12:39:48 +02:00
2fa113c895 README.md: add link to Gallery Part 6 2018-04-04 00:09:35 +02:00
1e116e6c17 Removed need for -Wnocast-qual on modern Clang/Xcode as a token of good behavior. Unfortunately the old stb_ decompress code is a little const clunky. + warning fix in stb_textedit which is already in master afaik. 2018-04-03 23:18:43 +02:00
84fbc49403 BeginChild: named child don't include the full id inside their name (#1698) 2018-04-03 22:13:35 +02:00
78610a54d2 Fixed Clang zealous cast-call warning (on par with GCC) which decided to warn against explicit C-style casts now. 2018-04-03 20:55:30 +02:00
77e234d9df Comments 2018-04-03 20:22:44 +02:00
c461401b21 Comments, FAQ 2018-04-03 20:05:59 +02:00
664ab85f76 Examples: Tweak comments. (#1704, #1708). 2018-04-02 17:31:51 +02:00
ca39070ca0 Examples: Win32: Fixes for MingW which doesn't support a 2007 define? I have no idea why people still use MingW (#1704, #1463) 2018-03-28 23:32:02 +02:00
cc96477b1c Comments (#1695) 2018-03-25 14:45:40 +02:00
cd602b8832 Examples: SDL: Note about SDL breaking the IME under Windows (I can't seem a way SDL2 Windows IME implementation can possibly work, the functions are never called/referenced). 2018-03-23 12:03:57 +01:00
b69dc45f6e Internals: Removed ImGuiDataType_Float2. 2018-03-22 20:14:31 +01:00
c19b27813d Added InputDouble() function. We use a format string instead of a decimal_precision parameter to also for "%e" and variants. (#1011) May transition the other InputXXX function to use format strings as well. 2018-03-22 18:58:40 +01:00
c796960ff9 InputFloat: Scientific input. InputText: Added ImGuiInputTextFlags_CharsScientific to add 'e' 'E' to list of characters that can be input. (later useful for #1011) 2018-03-22 17:49:53 +01:00
21ac470a8a Nav: Fixed a crash with IMGUI_DEBUG_NAV_SCORING enabled + added info to Metrics. 2018-03-22 16:37:21 +01:00
94116f1143 Examples: GLFW: Don't alter cursor mode if GLFW_CURSOR input mode is GLFW_CURSOR_DISABLED. (#1202) [@PhilCK] 2018-03-20 22:41:05 +01:00
75c3793db5 IO: Added ImGuiConfigFlags_NoSetMouseCursors. Added ImGuiBackendFlags_HasMouseCursors, ImGuiBackendFlags_HasSetMousePos. (#787, #1495, #1202) 2018-03-20 21:19:23 +01:00
dcf7c3d188 Added ImGuiBackendFlags for backend to expose its capabilities. Added ImGuiBackendFlags_HasGamepad. (#787, #1542) 2018-03-20 20:39:44 +01:00
170f44e6f0 IO: Renamed io.WantMoveMouse to io.WantSetMousePos (was added in 1.52, _not_ used by core and only honored by some binding ahead of merging the Nav branch) + internal renaming (#787) 2018-03-20 20:12:34 +01:00
fe5347ef94 imconfig: Added IMGUI_STB_TRUETYPE_FILENAME, IMGUI_STB_RECT_PACK_FILENAME + documenting IMGUI_DISABLE_STB_XXX flags and hiding IMGUI_STB_NAMESPACE which is misleading.
Fixed typos in todo list.
2018-03-20 18:25:37 +01:00
74b7dce394 Examples: Renamed applications to emphasis on use of GLFW as a platform framework + minor local tweaks 2018-03-20 16:00:59 +01:00
70d500502a ImVector: Fixed insert() helper using the = operator (followup to be consistent with 4186c2c2b1) 2018-03-20 11:35:10 +01:00
d1c45db9e8 Fixed enum typo. 2018-03-19 22:47:10 +01:00
4485e56e02 Examples: Vulkan: Fix missing subpass dependency
Without a dependency between pWaitDstStageMask (COLOR_ATTACHMENT_OUTPUT)
and the render-pass, the UNDEFINED -> COLOR_ATTACHMENT_OPTIMAL transition
might happen before the image is ready to be used.
2018-03-19 16:48:03 +01:00
a73f6d06e0 Examples: Vulkan: Using VK_PRESENT_MODE_MAILBOX_KHR. Disable IMGUI_UNLIMITED_FRAME_RATE by default. Fixed warnings. (#1042) 2018-03-19 16:47:28 +01:00
166411287f Demo: Added more complete Combo demo. (#1658) 2018-03-19 14:44:37 +01:00
62e94717eb Nav: InputText: Allow editing text input fields with NavActivate (space). Not sure about that, on one hand it feels more consistent but you can't finish the editing with space to double space (activate + input space) could feel inconsistent. (#787) 2018-03-19 13:20:25 +01:00
33ad8b2f0c Nav: Track nav input source more generally (gamepad vs keyboard) (#787) + update todos and demo tweaks 2018-03-19 13:20:18 +01:00
d8d93f6360 imgui.h: Various comments and tweaks. 2018-03-18 12:24:28 +01:00
6fe22e6297 imgui.h: Moved columns lower in the file. Various spacing changes and minor comments. 2018-03-18 12:23:33 +01:00
6bda816ffe ImVector: Added copy/assign operators as helpers to ease cloning of data. 2018-03-17 21:18:14 +01:00
1e296453ef ImDrawList: Added Clone() helper function. 2018-03-17 21:18:14 +01:00
4186c2c2b1 ImVector: resize() / push_back() use memcpy() as we are not supposed to be constructor/destructor/operator aware at all. (If we do need to rework ImVector). In turn this will allow us to define assign/copy operators. 2018-03-17 20:42:56 +01:00
d68be086b2 ImVector: Using value_type consistently. Spacing. 2018-03-17 18:08:12 +01:00
533c86a7a3 Update TODO list, minor fix in Readme, comments, Clang -Weverything warning fix in imgui_draw.cpp under Windows. 2018-03-17 17:29:58 +01:00
0e3a6ef4f7 Moved IM_NEW, IM_DELETE helpers to imgui.h for convenient use by back-ends and user code. 2018-03-13 16:18:40 +01:00
7b833dabc8 ImVector: Spacing, assert tweaks 2018-03-13 16:18:40 +01:00
26296bb4c1 Misc: Fix 111ea7af77, GetStyleColorName() would assert, removed removed ImGuiCol defines (too much risk/complexity trying to silently ignore it). 2018-03-13 11:53:12 +01:00
f93a22ae6e Contributing: tweaks, mention screenshots more prominently. 2018-03-13 11:47:57 +01:00
111ea7af77 Misc comments, todos + reintroduced removed ImGuiCol defines under !IMGUI_DISABLE_OBSOLETE_FUNCTIONS wrap. 2018-03-12 17:24:15 +01:00
37cb177745 Examples: Vulkan: Only resize swap chain and framebuffer once. (#1042) 2018-03-12 14:47:41 +01:00
1c18d65313 Examples: Renamed glfw error callback for clarity. 2018-03-12 14:43:37 +01:00
b2453d7e8f Fixed resize window validation errors with removing frame prerender once and present last but one frame functionality. Frame rate is still similar. 2018-03-12 14:34:36 +01:00
887712a6f1 Updated templates, added pull request template. 2018-03-12 14:20:39 +01:00
e7670c0bcc Style: CloseButton() now display a proper cross. Using Button colors for background. Removed ImGuiCol_CloseButton, ImGuiCol_CloseButtonActive, ImGuiCol_CloseButtonHovered as the closing cross uses regular button colors now. (#707) 2018-03-12 11:48:04 +01:00
b9ac127b0b Internals: Columns renaming fields 2018-03-12 11:03:27 +01:00
1f6ad7a894 ImFont: Added FindGlyphNoFallback. Fixed MergeMode broken by 1ef1acbd8d 2018-03-10 10:33:12 +01:00
351b3fa7b0 Updated Changelog following merge of #1619 + fixed entry added to wrong version Changelog in 1ef1acbd8d 2018-03-09 10:29:41 +01:00
5fdde52444 Merge branch '2018-03-font_offset' into master2 2018-03-09 10:29:22 +01:00
a3d5f92214 Merge branch 'master' into font_offset 2018-03-08 16:49:39 +01:00
1ef1acbd8d Font: Fixed MergeMode adding duplicate glyphs data instead of reusing existing (broken by 072d6d8cb5) 2018-03-08 16:47:41 +01:00
3dfac93ebe Fonts: Fixed debug name not being zero-terminated if longer than storage buffer + made buffer slightly longer as well. 2018-03-08 15:58:56 +01:00
642c6748ac Comments, Changelog 2018-03-08 11:15:27 +01:00
a1f3949d71 Drag and Drop: Increased payload data type to 32 characters. (#143) 2018-03-08 10:42:51 +01:00
7fd62baa42 Examples: Added Makefile for SDL+OpenGL2 example. (#1668) 2018-03-07 11:50:56 +01:00
6190d794d4 Update README.md 2018-03-07 10:01:20 +01:00
a2ed3ee2cf Examples: OpenGL3: Added a way to override the glsl version number through the Init call. (#1667, #1466) 2018-03-06 19:48:30 +01:00
cea7492bab Render: Removed the code that disable render if style.Alpha is 0.0f, it is both incorrect (as style Alpha can be modified mid-frame), not really necessary (just tested that full Alpha = 0 will lead to empty draw lists!) and misleading (bulk of the work was already done). 2018-03-05 22:47:53 +01:00
945f4d1ecd Removed redundant semi colons. (#1653) 2018-03-05 16:16:27 +01:00
51afaf7117 Fixed type cast warning. 2018-03-05 13:15:15 +01:00
0ec356eb6e Comments, FAQ update. 2018-03-05 13:05:47 +01:00
5ed45d0aec Columns: Fixed destructive small resize. (#1656). The OffsetNorm clamp introduced by #913 was ok as it didn't write back into the storage, which #1499 started doing making it destructive. Right now I don't think the clamp is needed at all. It had uses (eg: hide the issue fixed by bf7481eba0). 2018-03-04 17:55:59 +01:00
bf7481eba0 Columns: Extent stop at the right-most clipped pixel. The right-most column might appear a little wider but it's usable space matches the others. (#125). +9 Internal: Store InnerClipRect. 2018-03-04 17:44:17 +01:00
968a8d2a3f Columns: Clamping MaxX above MinX. This shouldn't have much of a benefit / affect, but the internal values are more sane this way. (#125) 2018-03-04 16:58:24 +01:00
ee770af72c Columns: Adding per-window display in Metrics. Tidying up, removing old code/comments. (#125, #1499, #1656) 2018-03-04 16:56:21 +01:00
69e700f869 Renamed ImGuiStyleVar_Count_ to ImGuiStyleVar_COUNT for consistency with other enums. Added 2018-03-03 20:15:10 +01:00
8a4093f38b Added ArrowButton(). Exposed ImGuiDir. 2018-03-03 20:08:03 +01:00
1549c5cf5e BeginCombo(): Added ImGuiComboFlags_NoArrowButton and ImGuiComboFlags_NoPreview flags + hover color matches drag and sliders. 2018-03-03 19:43:31 +01:00
ad7ff7504e Merge branch 'patch-1' of https://github.com/stfx/imgui into stfx-patch-1 2018-03-03 19:34:47 +01:00
839cdd37a3 Combo: Arrow button isn't displayed over frame color, so color is consistent with other button + the button doesn't have inner rounding. 2018-03-03 19:23:48 +01:00
11f13ab24f Internal: renamed RenderTriangle() to RenderArrow(). 2018-03-03 19:08:22 +01:00
df8a9c49eb Allow user to override ImTextureId. (#1641) 2018-03-01 16:29:32 +01:00
b37ef20c5c Makefile: updated sdl_opengl3_example with all changes from #885. 2018-03-01 15:54:12 +01:00
124d8522b1 Do not store compiled objects outside the project tree. 2018-03-01 15:50:39 +01:00
b6f251103b Define SOURCES instead of OBJS in Makefiles.
OBJS is still deduced from SOURCES, but this change gives better control
over where the object files get actually written.
2018-03-01 15:46:43 +01:00
d4f63c3844 Use make variables $@ and $^ where appropriate. 2018-03-01 15:45:34 +01:00
551932697d Ensure make clean is idempotent.
Prior to this, `make clean` would fail if the project was not already
fully built, and a second invokation would always fail.
2018-03-01 15:45:23 +01:00
6797ee4b68 Nav: Added links to PNG/PSD files for PS4 and Switch. Fixed suggested Joy-con mapping as per typical Nintendo-style mapping. (#787) 2018-03-01 13:03:12 +01:00
c994796e26 Internal: Moved IM_NEWLINE helper to imgui_internal.h 2018-02-28 21:45:02 +01:00
b3594a6407 Added ImGuiConfigFlags_IsSRGB, ImGuiConfigFlags_IsTouchScreen (strictly for user storage) 2018-02-28 21:16:47 +01:00
2c9f45bbe7 Renamed ImGuiNavFlags io.NavFlags to ImGuiConfigFlags io.ConfigFlags. (#787) 2018-02-28 18:51:40 +01:00
a869e944b0 README.md typo fix 2018-02-26 17:43:41 +01:00
c7835dd189 ImRect: Removed misleading IsFinite() function used by some Nav code. 2018-02-26 16:35:46 +01:00
5427eca960 Compacted some old Breaking Changes notes (Pre July 2015 stuff) 2018-02-25 19:05:31 +01:00
bd267ad739 Changelog: Added all change infos since 1.53 up to the current version. 2018-02-25 14:15:38 +01:00
133f06d658 Changelog: Added Changelog with info from 1.48 to 1.53. Haven't added 1.53..current yet. 2018-02-25 14:15:37 +01:00
27667fc035 TreeNode: Renamed Beta ImGuiTreeNodeFlags_NavCloseFromChild to ImGuiTreeNodeFlags_NavLeftJumpsBackHere. (#1079) 2018-02-25 14:15:37 +01:00
403b2d7d59 ImDrawList: Better looking non-AA rectangle (lower-right corner and rounding). (#1646) 2018-02-25 14:15:37 +01:00
d7f97922b8 Examples: Fix d749d49903 missing the deletion code. (#1217) 2018-02-23 22:46:14 +01:00
d749d49903 Examples: OpenGL3: Create the VAO in the render function so the setup can more easily be used with multiple shared GL context. (#1217) 2018-02-23 12:37:49 +01:00
6662fe7b18 stb_truetype: Fixed unused variable warnings for configuration where asserts are disabled. (#1642) 2018-02-23 11:07:51 +01:00
79969931e6 ImDrawList: PushTextureID(): Removed unnecessary param by reference. 2018-02-23 00:01:34 +01:00
288351a801 Examples: DirectX12: Tweaked assertion to more accurately represent what it wants to say. (#301) 2018-02-23 00:00:43 +01:00
a1a36e762e Merge branch 'podgorskiy-master' 2018-02-22 23:24:44 +01:00
8040cf1425 Merge branch 'master' of https://github.com/podgorskiy/imgui into podgorskiy-master 2018-02-22 23:22:16 +01:00
63be3e7c82 Update README.txt 2018-02-22 23:20:37 +01:00
7e24ce0956 Examples: DirectX12: Fixed shutdown issue. (#301) 2018-02-22 23:04:28 +01:00
9be7d048c8 Examples: DirectX12: Merge, various styling tweaks, update for 1.60 wip, synchronized Win32 features with other examples. (#301) 2018-02-22 23:03:47 +01:00
913f3692a2 Examples: DirectX12: Removed from current solution which is meant to be VS2010 compatible for now (will change soon). 2018-02-22 22:38:22 +01:00
0d063585e8 Merge branch 'jdm3_master' 2018-02-22 17:04:15 +01:00
94466745bb A tiny optimization to ImLineClosestPoint. Removed unnecessary sqrtf call.
ab_lenSqr -> ab_len_sqr
Moved line where ab_len_sqr is computed after the first return
2018-02-22 10:57:20 -05:00
b28995b667 Nav: Internals: Exposed NavMoveRequestCancel in imgui_internal.h (#1640) 2018-02-22 15:39:49 +01:00
f43068c543 Examples: DirectX10, DirectX11: Simplified main example code. 2018-02-22 13:15:16 +01:00
493ec0bc98 Simplified .gitignore list 2018-02-21 23:13:53 +01:00
9b9d9321cf Examples: SDL: Using %SDL2_DIR% in the .vcproj instead of %SDL_DIR%, the earlier is more standard. 2018-02-21 22:46:49 +01:00
2c3c5125b3 Drag and Drop: BeginDragDropSource(): temporarily removed the optional mouse_button=0 parameter because it is really usable in typical conditions at the moment. (#143, #1637) 2018-02-21 21:33:58 +01:00
16ff9faf51 Update issue_template.md 2018-02-21 13:12:13 +01:00
9c20a40b36 Examples: OpenGL: Cast call to glPolygonMode(). (#1628). 2018-02-20 15:49:17 +01:00
201408a119 Update .travis.yml 2018-02-20 15:12:17 +01:00
32bbd8be96 Update .travis.yml 2018-02-20 15:07:34 +01:00
3186acdf8c Trying to download and build GLFW since APT repository are unreliable 2018-02-20 14:56:43 +01:00
98c2ca557c Update .travis.yml PPA source for glfw in the end of getting a newer version of GLFW 2018-02-20 14:40:12 +01:00
daddd09cd5 Examples: Mouse cursor handling comments/tweaks to homogenize. (#1495) 2018-02-20 14:23:22 +01:00
d534207622 Examples: GLFW: Added support for mouse cursors (ImGui::GetMouseCursor() value and WM_SETCURSOR message handling). (#1495) 2018-02-20 14:18:02 +01:00
11b12488e8 Examples: GLFW*: Renamed GLFW callbacks exposed in .h to not include GL2/GL3/Vulkan in their name. 2018-02-20 14:09:46 +01:00
7e2e0535dd Examples: DirectX 9,10,11: Inputs: Added support for mouse cursors (ImGui::GetMouseCursor() value and WM_SETCURSOR message handling). (#1495) 2018-02-20 13:55:09 +01:00
7cbcccd96b Update Breaking Change section with moved misc/fonts/ (#1631) 2018-02-20 12:08:37 +01:00
7ee2bc8f5e FAQ about backslashes in string literal since the one in main.cpp isn't being noticed enough. (#1397) 2018-02-20 10:24:31 +01:00
b33f0e215f Initialization happens during CreateContext(), which makes it easier for platform layers to interact with the context during their initialization. 2018-02-18 23:28:56 +01:00
1399c9c8a9 Merged a bunch of small inconsequential things from my work branch, to reduce the diff noise. 2018-02-18 20:21:21 +01:00
bdb27366e7 Nav: Tweak windowing highlighting for full viewport windows. 2018-02-17 00:19:04 +01:00
f5f3730b16 Examples: GLFW+GL2/GL3: Added glPixelStorei() calls borrowed from SDL examples. 2018-02-16 23:19:38 +01:00
9e713b115f Examples: Renamed .sln file. 2018-02-16 22:38:19 +01:00
243fd67b1c Examples: Vulkan: Fix for empty draw data (init time) + fixed warning. 2018-02-16 22:37:46 +01:00
10752423ec Examples: Vulkan: Added .vcproj files. 2018-02-16 22:37:41 +01:00
31158e575f Examples: SDL: Fixed minor warning. 2018-02-16 22:37:29 +01:00
00b24f27c2 Examples: SDL: Added .vcproj files. 2018-02-16 22:37:24 +01:00
03a44acf6f Examples: SDL: Minor stylistic tweaks. Fixed handling of ImGuiMouseCursor_None so it doesn't underflow array. Fixed harmless uninitialized pointer. (#1626) 2018-02-16 19:55:16 +01:00
7c75835200 Renamed misleading ImGuiMouseCursor_Move to ImGuiMouseCursor_ResizeAll. SDL: Fixed cursor. (#1626) 2018-02-16 19:49:33 +01:00
ffb6e89f30 Use SDL system cursors in SDL examples. (#1626)
(Squashed 4 commits)
2018-02-16 19:41:27 +01:00
63332d152a Obsoleted the io.RenderDrawListsFn callback, you can call your graphics engine render function after ImGui::Render(). Use ImGui::GetDrawData() to retrieve the ImDrawData* to display..(#1599)
Examples: Updated examples.
2018-02-16 19:18:16 +01:00
0cefd40888 Examples: Added Changelog to make updates easier. 2018-02-16 17:20:18 +01:00
20c14f9589 Fixed GCC zealous warnings (#1623) 2018-02-16 15:43:28 +01:00
1cbfe0700c Plot: plot a flat line if scale_min==scale_max (#1621) 2018-02-16 14:34:49 +01:00
ff5f56dd21 Updated to stb_truetype 1.19 (include minor fix for #1622) 2018-02-16 11:59:23 +01:00
41ecebff5a Examples: SDL: Added Changelog at the top of the imgui_impl files. (#1618) 2018-02-15 11:11:31 +01:00
c433bbcd8e ImFont: stb_truetype now rounding Ascent/Descent the same way as freetype does, they seem to vertically align better this way. 2018-02-15 10:47:20 +01:00
30c469f7c5 ImFont: DisplayOffset.y defaults to 0 instead of +1. 2018-02-15 10:46:28 +01:00
6668e80bed Update README.md 2018-02-15 10:33:22 +01:00
024e23c4d7 Comments, moved ImFontAtlas::Flags to "public" area. 2018-02-14 12:04:21 +01:00
fed0a884f7 ImFontAtlas: Added ImFontAtlasFlags_NoPowerOfTwoHeight, ImFontAtlasFlags_NoMouseCursors flags. (#1613) 2018-02-14 11:58:52 +01:00
42bf6a4d03 Update .travis.yml 2018-02-14 11:33:46 +01:00
c0af35098a Update .travis.yml 2018-02-14 11:29:49 +01:00
06e823e116 Update .travis.yml 2018-02-14 11:26:08 +01:00
26d4d32d67 Travis: testing without adding external apt repositories (which frequently fails), may be unnecessary today 2018-02-14 11:20:22 +01:00
0a0142adab Update README.md 2018-02-14 11:15:14 +01:00
6bc3e7b043 ImFontAtlas: if stbtt_PackBegin() because of failing allocation we return a little more nicely. (keeps Coverity static analyzer happy!) 2018-02-13 21:57:15 +01:00
df32b60b37 Update README.md 2018-02-13 21:52:27 +01:00
1a381dcaf6 Update README.md 2018-02-13 21:13:23 +01:00
4ec931853e Demo: Fonts; Added Font Offset. 2018-02-13 21:03:30 +01:00
9263bd68db Fixed legacy forward function IsRootWindowOrAnyChildHovered() broken by a63fbbca8b 2018-02-13 21:03:30 +01:00
faa3c66154 Update README.md 2018-02-13 20:49:36 +01:00
f33440bbc2 Update README.md 2018-02-13 20:42:01 +01:00
e2aba3cf5f Update README.md 2018-02-13 20:17:34 +01:00
f44a7115ca Update README.md 2018-02-13 19:22:34 +01:00
1adeaed000 Update README.md 2018-02-13 19:09:19 +01:00
f0a3dfa0dd Added sample gif, removed section about performances (unnecessary) 2018-02-13 18:57:42 +01:00
7e603ea469 Update README.md 2018-02-13 18:14:17 +01:00
fee6022f0c Fixed warning: variable ‘L1’ set but not used [-Wunused-but-set-variable] 2018-02-13 11:17:55 +01:00
24b1c30644 Update issue_template.md 2018-02-12 22:07:05 +01:00
a265837876 Update issue_template.md 2018-02-12 21:44:22 +01:00
9b4e674688 Update issue_template.md 2018-02-12 17:19:24 +01:00
4a8871f4f9 Create issue_template.md 2018-02-12 17:17:29 +01:00
ace22168e0 Contributing guidelines for issues 2018-02-12 17:11:14 +01:00
242bf9d9e2 Create issue_template.md 2018-02-12 17:06:04 +01:00
eb1d481915 Comments (#1230, #1611) 2018-02-12 15:38:04 +01:00
d8d1da27fd Merge branch 'master' of https://github.com/RandyGaul/imgui into RandyGaul-master 2018-02-12 15:35:16 +01:00
ed9d4a2d85 stb_rect_pack: update to 0.11 (minor changes) 2018-02-12 15:30:37 +01:00
2c4a761982 __cdecl markup for non-standard calling conventions via MSVC 2018-02-12 00:50:40 -08:00
64e0666803 Internals: Moved some of NewFrame() into UpdateMovingWindow(). 2018-02-11 22:48:30 +01:00
7cc1bc7635 Added IsAnyMouseDown() helper.
Examples: DirectX9/10/11: Using IsAnyMouseDown() instead of local function.
2018-02-10 16:50:19 +01:00
febde0eb21 Update README.md 2018-02-10 15:44:46 +01:00
5641115568 Update README.md 2018-02-09 12:08:53 +01:00
f38979b266 Update README.md 2018-02-09 11:57:23 +01:00
3b163ac35b Internals: Clarified internal storage for RootWindow with specific semantic (the Docking branch will need to introduce finer differenciation there.) 2018-02-08 23:11:51 +01:00
88dcbeb7ff Styles: Comments and re-ordered. 2018-02-08 21:14:57 +01:00
8099f8c270 Comments 2018-02-06 23:19:53 +01:00
35804b4438 Update README.md 2018-02-06 21:05:49 +01:00
1d5a5ca12e README update, updated binaries, sponsors 2018-02-06 21:04:12 +01:00
2493f609ef Examples: Vulkan: Fix (something changed in GLFW not including vulkan.h, was unwillingly relying on that) 2018-02-06 20:57:33 +01:00
d17d21da1b Warning fix. (#1565) 2018-02-06 20:21:29 +01:00
7c16d52f72 Updated version to 1.60 WIP to emphasis on the addition of required calls CreateContext/DestroyContext + merged the massive Navigation branch (#1565, #787) 2018-02-06 20:20:34 +01:00
f0364aa359 Merge branch 'context'
# Conflicts:
#	examples/allegro5_example/main.cpp
#	examples/directx10_example/main.cpp
#	examples/directx11_example/main.cpp
#	examples/directx9_example/main.cpp
#	examples/marmalade_example/main.cpp
#	examples/opengl2_example/main.cpp
#	examples/opengl3_example/main.cpp
#	examples/sdl_opengl2_example/main.cpp
#	examples/sdl_opengl3_example/main.cpp
#	examples/vulkan_example/main.cpp
2018-02-06 20:16:03 +01:00
07ee539017 Merge branch 'navigation' 2018-02-06 20:13:55 +01:00
4e5b7612ae Nav: Documentation tweaks. (#787) 2018-02-06 20:10:05 +01:00
ae30efc0fd Nav: Examples: Added commented out io.NavFlags |= ImGuiNavFlags_EnableKeyboard to all examples. (#787) 2018-02-06 19:58:23 +01:00
3171f90a1a Nav: Keyboard is now automatically mapped based on io.KeyDown[]. (#787) 2018-02-06 19:54:30 +01:00
9e3a807813 Removed comments 2018-02-06 19:34:09 +01:00
057807f4a7 Added ImGuiKey_Space, mapped in every examples. Will be required for navigation. (#787) 2018-02-06 19:29:31 +01:00
7e32fc7109 Nav: Toward automatically mapping keyboard input. Renamed ImGuiNavInput_PadXXX to ImGuiNavInput_XXX. Renamed ImGuiNavInput_KeyXXX to ImGuiNavInput_KeyXXX_ (internal). (#787) 2018-02-06 19:23:12 +01:00
ed4bbc4fd4 Nav: Comments, guides. 2018-02-06 18:48:31 +01:00
cea8017e0b Merge branch 'master' into context 2018-02-06 18:04:44 +01:00
3b7bd4563a ImVec2: added [] operator. This is becoming desirable for some types of code, better added sooner than later. 2018-02-06 16:35:32 +01:00
ad09396672 ImVec2: added [] operator. This is becoming desirable for some types of code, better added sooner than later. 2018-02-06 16:32:51 +01:00
db071184a0 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2018-02-06 13:51:09 +01:00
b50dce54ea Drag and Drop: TreeNode as drop target displays rectangle over full frame. Added optional internal storage for item display rect. Will expose later. (#1597, #143) 2018-02-06 13:46:14 +01:00
c6ba7c8231 Internals: TreeNode: Renaming local to be more consistent with other widgets. 2018-02-06 13:41:46 +01:00
e6926d9f7c Internals: Refactored bool LastItemRectHovered into flags. (#1597) 2018-02-06 13:34:41 +01:00
ce2b8d3255 Nav: Comments, removed extraneous parameter. 2018-02-06 13:16:44 +01:00
0c0d811859 Nav: SetItemDefaultFocus() doesn't make the navigation cursorr highlight visible. Renamed NavInitResultExplicit to NavInitRequestFromMove. (#787) 2018-02-05 23:53:40 +01:00
4b49f03a40 Examples: SDL+GL3: Added Navigation keyboard mapping. (#787) 2018-02-05 23:16:40 +01:00
7e1496e994 Merge branch 'master' into navigation 2018-02-05 23:14:42 +01:00
fcf1c9d151 Examples: SDL: Using SDL_GetPerformanceCounter() / SDL_GetPerformanceFrequency() to handle framerate over 1000 fps properly. Noticed bad inputs artefacts in Nav branch at 2000 fps without this. (#996) 2018-02-05 23:13:53 +01:00
60fb7d31fd Examples: SDL2: Enabling vsync. Using scancode consistently, fixed keyboard weirdness. 2018-02-05 22:35:29 +01:00
73d493c780 Examples: Organized header files to make available features more visible. 2018-02-05 20:34:11 +01:00
fb9fecea5e Nav: Sliders and Drags are toggle activated instead of requiring user to cross Cross/Space. (#787) 2018-02-05 20:16:38 +01:00
4932303e62 Nav: DragBehavior: Tweaks (to take the noise out of the next commit). 2018-02-05 20:15:31 +01:00
e5e3cc617e Nav: Maintaining a NavActivatePressedId field that widget can conveniently use along with NavActivateDownId. 2018-02-05 19:37:29 +01:00
fb7cf4a475 Nav: Removed old unnecessary ifdefs. 2018-02-05 18:25:03 +01:00
f35734c925 Nav: Debugging code. (#787) 2018-02-05 17:02:30 +01:00
92ee6b1185 Nav: Sets io.WantCaptureKeyboard when navigation is active. This is a little agressive but probably the best default and also a good way to get feedback. Added ImGuiNavFlags_NoCaptureKeyboard to disable this behavior. Comments. (#787) 2018-02-05 16:07:54 +01:00
348c46d21e Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-02-05 15:50:28 +01:00
5c83b55d04 Nav: Added ImGuiWindowFlags_NoNav shortcut, comments. (#787) 2018-02-05 15:49:35 +01:00
11d0fc8220 Tooltip: BeginTooltip() sets NoInputs flag. 2018-02-05 15:10:07 +01:00
1dedbf8091 Style: Fixed missing style.MouseCursorScale initialization (#939), messed up original commit badly. 2018-02-05 15:07:25 +01:00
533fe8cb55 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-02-05 14:55:57 +01:00
8ad88f725c Nav: Minor tidying up. (#787) 2018-02-05 14:53:22 +01:00
3f297e74e4 Merging the minor/shallow changes from Navigation branch. 2018-02-05 14:52:28 +01:00
bed55a41e1 Internals: ImRect: Added IsInverted() helper. 2018-02-05 14:51:28 +01:00
2081fc15b5 Added assert in BeginChild(ImGuiId id). 2018-02-05 13:42:34 +01:00
223be68d77 Nav: Debugging stuff. 2018-02-05 13:42:33 +01:00
cf6b39600b imgui_freetype: comments about correct blending and sRGB (#618, #578) 2018-02-05 11:22:09 +01:00
a33b86dac7 Removed root .gitignore. (#1594) 2018-02-05 09:14:33 +01:00
b76cf9cc87 Merge pull request #1594 from gerryhernandez/fix-apple-example
Examples: Apple: Fix iOS code; fixes entire XCode build for Apple example
2018-02-05 09:12:51 +01:00
4786321754 Fix iOS code; fixes entire XCode build for Apple example 2018-02-04 21:47:08 -05:00
66ff820eaa Nav: Ensure g.NavScoringRectScreen is always finite and not inverted. (#787) 2018-02-04 18:30:46 +01:00
e2654a097b ImRect: added IsInverted() helper. 2018-02-04 18:30:37 +01:00
0bd15b52a6 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-02-04 13:16:13 +01:00
7b005bd7de imgui_freetype: Documentation, tweaks. (#618) 2018-02-04 13:13:06 +01:00
e9a617b22a Moved imgui_freetype from imgui_club (#618) 2018-02-04 12:35:17 +01:00
147ec8d1e2 Style Added style.MouseCursorScale, may remove (#939). 2018-02-04 12:17:35 +01:00
648de2fc00 Nav: Press Left on a child with ImGuiTreeNodeFlags_NavCloseFromChild moves you to parent node instead of closing it immediately. More standard. (#787, #1079) 2018-02-02 18:38:18 +01:00
ce9d7baaba Nav: TreeNode: Added ImGuiTreeNodeFlags_NavCloseFromChild flag, allow closing a TreeNode() from any of child. The explicit flag is not great, perhaps allowing some form of inheritance would help. (#787, #1079) 2018-02-02 17:47:05 +01:00
9120938200 Nav: Revert 5c9ea4d53a with comments. (#787) 2018-02-01 23:53:00 +01:00
6a83a9152f Natvis: Showing some flags for ImGuiWindow. 2018-02-01 23:39:23 +01:00
96ddfbc973 Nav: Modal windows can't be closed with Nav PadCancel. (#787) 2018-02-01 23:36:22 +01:00
efbd8cebe7 Nav: Comments (#787) 2018-02-01 22:53:08 +01:00
c4fc879508 CloseButton: Fixed cross positioning. 2018-02-01 22:33:48 +01:00
942c140710 CloseButton: Fixed cross positioning. 2018-02-01 22:32:52 +01:00
68d3e139a7 Nav: When focusing a parent window while closing a popup, hide its highlight for one frame to avoid potential double highlight and flicker with the common pattern of menu items leading to the opening other windows. (#787) 2018-02-01 22:28:58 +01:00
950f260a32 Nav: Fixed Selectable/MenuItem Nav Highlight from using rounding when outer highlight stays square. (#787) 2018-02-01 22:25:25 +01:00
c7b7b181b5 Nav: CloseButton reacts when clipped. (#787) 2018-02-01 22:13:25 +01:00
5c9ea4d53a Nav: Fixed press Left on sub-menu when parent wasn't a menu - we were just checking at the wrong level. (#787) 2018-02-01 21:33:23 +01:00
eb737e0a42 Nav: Child window is restored on focus follow up. Fix bdd868704f. (#787, ~#727) One visible issue was pressing Left to leave a child menu. 2018-02-01 21:27:46 +01:00
95f9c74b9a Metrics: Displaying some of the important internal window flags. 2018-02-01 21:27:45 +01:00
79ff3c2d49 Merge branch 'master' into navigation 2018-02-01 18:33:40 +01:00
07163804df Internals: Renamed CloseInactivePopups() to a better ClosePopupsOverWindow(). Exposed in imgui_internal.h 2018-02-01 18:31:41 +01:00
5812d0b751 Nav: Using CTRL+TAB / PadFocusNext/Prev to Focus a window closes the previous window popups. (#787) 2018-02-01 18:29:30 +01:00
fd6d8863f7 Nav: SetFocusID() clears NavInitRequest for consistency (repro would a same frame interaction / race condition). (#787) 2018-02-01 18:19:36 +01:00
ef2c3bcdee Nav: Fixed InitRequest leaking when changing window (repro was to navigate inside File->Options->[Child] then press Left and notice how we would land on parent window on the fist item after the current one). (#787) 2018-02-01 18:02:55 +01:00
8cc2dbc3bd Internals: Nav: Extracted code into IsWindowNavFocusable(). (#787) 2018-02-01 14:56:56 +01:00
bdd868704f Nav: Child window is restored on focus when returning to layer 0 or refocusing. This is a little experimental and potentially error-prone right now. (#787, vaguely relate to ~#727) Ideally we should maintain a non-sorted last-focused list that include childs windows. 2018-02-01 00:50:42 +01:00
7b22a91578 Nav / Slider: Fixed reaching edge of integer slider with navigation input, bug introduced on January 25 in Nav branch 10a4a77b27. (#787) 2018-02-01 00:08:13 +01:00
eaa6f490a2 Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
2018-01-31 23:38:05 +01:00
9bc5c089b6 Internal: Avoid needlessly bringing parent of front-most child back to front. This is mostly to reduce flicker/confusion in Metrics when traversing windows. We could aim at separating the child windows from non-child windows at some point. 2018-01-31 23:37:05 +01:00
dbdbf01b9f Demo: Tweaked the Child demos, added a menu bar to the second child to test some navigation functions. 2018-01-31 23:35:54 +01:00
76d8af4036 Nav: when browsing a window that has no activable items (scroll only) we keep a highlight on the child. (#787) 2018-01-31 21:25:52 +01:00
aa2dda7610 Nav: Tweak code to be easier to follow + updated todo list after clarifying an issue. 2018-01-31 21:06:47 +01:00
38d45ee73f Demo: Tweaked the Child demos, added a menu bar to the second child to test some navigation functions. 2018-01-31 19:13:20 +01:00
e6c0b212e8 Nav: Fixed initial movement (which sends an InitRequest) from clearing NavDisableHighlight and fully enabling Nav feedbacks. (#787)
NB: Setting g.NavInitResultExplicit = false on InitRequest match was added in initial commit c2cb2a6928
2018-01-31 18:53:15 +01:00
9c8fb804ed Log: Comments and extraneous assets to clarify intent. (#1584) 2018-01-31 17:41:26 +01:00
27980d9688 Merge branch 'master' into context 2018-01-31 16:02:26 +01:00
47e81a6194 Merge branch 'master' into navigation 2018-01-31 16:00:25 +01:00
cd3dd886de Moved extra_fonts/ to misc/fonts/. Moved .natvis file to misc/natvis/ (#1569) 2018-01-31 16:00:07 +01:00
23c11e9764 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-31 15:43:19 +01:00
dd41a1650a Comments 2018-01-31 15:41:48 +01:00
6c38aa2dc7 Examples: Apple: Tweak code and sync with other examples better (untested). 2018-01-31 00:16:44 +01:00
cca9c3e3da Examples: Using Dark theme by default. (#707). Tweaked demo code. 2018-01-31 00:15:47 +01:00
596b6d6de2 Style: Enable window border by default. (#707) 2018-01-31 00:03:11 +01:00
955d86199f Examples: Tweaks formatting. 2018-01-30 23:55:23 +01:00
bebe03db05 Metrics: Minor formatting tweaks 2018-01-30 21:17:27 +01:00
bd579e5429 Nav: Removed io.NavUsable --> io.NavActive, io.NavActive --> io.NavVisible. (#787). NavActive takes account of NavFlags enable flags. 2018-01-30 20:07:12 +01:00
22f7de0fbd Nav: Updated TODO list. 2018-01-30 19:20:20 +01:00
9fc6f5907b Nav: Fixed NavRectRel being cleared for one frame when restoring layer 0 with Alt/Menu key or Escape. Maybe was inconsequential. (#787) 2018-01-30 18:34:32 +01:00
1ed7bce3ed Nav: Removed old unused code. (#787) 2018-01-30 18:34:17 +01:00
a8763d14c5 Internals: Renaming. 2018-01-30 15:08:53 +01:00
38197a236d Internals: Renaming. 2018-01-30 15:07:20 +01:00
a7ad5134e5 Nav: window that are filling the entire display/viewport gets their windowing highlight clamped within. (#787) 2018-01-30 15:05:46 +01:00
acf21ee429 Nav: Windows with ImGuiWindowFlags_NoBringToFrontOnFocus flag aren't temporarily displayed on the front when using CTRL-TAB. (#787) 2018-01-30 15:05:32 +01:00
bed6ef03f5 Nav: workaround to kindly handle ALT-TAB without detecting TAB-release on backends that clear all keys on unfocus. (#787) 2018-01-29 23:59:47 +01:00
c851b33352 Nav: Added proper version of ImGuiWindowFlags_NavFlattened that handles scrolling nicely. Marked as private as I'm not happy with the name. (#787) 2018-01-29 23:59:46 +01:00
b40dc5c4f2 Nav: NavScoreItem uses g.CurrentWindow and not g.NavWindow. This was changed as part of b3cba62b80 when first trying to implement the NavFlattenedFlag. As it turns out we won't need it. Committing separately for safety. (#787) 2018-01-29 23:59:43 +01:00
020b153d35 Nav: calling NavMoveRequestCancel() more consistently when hijacking a request. Not strictly necessary. (#787) 2018-01-29 23:59:43 +01:00
c8d8dc7f0a Nav: Internals: Renamed RootNavWindow to NavRootWindow (#787) 2018-01-29 23:59:43 +01:00
72485a5d04 Nav: Refactor NavMoveResult** flags into ImGuiNavMoveResult structure as we are going to want two instances of it. (#787) (+1 squashed commits)
+ store window inside result.
2018-01-29 23:59:42 +01:00
1cf38d0334 Internals: Nav: Renamed ImGuiNavForward enum (#787) 2018-01-29 18:12:32 +01:00
2933e6765c Merge branch 'master' into navigation 2018-01-29 17:42:39 +01:00
4654040bcb Nav: Comments, added enum to clarify NavForward code. (#787) 2018-01-29 17:35:36 +01:00
c8b9b2c6bd Nav: Mouse hovering selectable / menu items only activate them if they are on the active NavLayer. (#787) 2018-01-29 15:46:41 +01:00
21771adb94 Nav: Debug overlay uses default font. (#787) 2018-01-29 15:35:51 +01:00
6a25a8720a Examples: Using #include "imgui.h" instead of <imgui.h> appear correct-er as per standard? xcode+clang are very nitpicky there. 2018-01-29 14:38:46 +01:00
91d77be36e Examples: Makefile leave CXX alone, instead leave commented out options. (nb: codeship doesn't seem have clang++) 2018-01-29 00:55:16 +01:00
3cdd2096ec Examples: Use Clang in old Makefile. 2018-01-29 00:48:21 +01:00
ddff378daf Examples: Synced Makefile comments. Added build/ folder into git ignore list/ 2018-01-29 00:38:00 +01:00
858d75ab59 Examples: Apple: Fixed filenames in OSX xcode project. 2018-01-28 23:24:57 +01:00
66d5712a8a Examples: Vulkan: FIxed warnings in 32-bit modes (vulkan uses VkDeviceSize which is always 64-bit long) 2018-01-28 20:03:41 +01:00
94090eb08f Added IMGUI_USER_CONFIG to define a custom configuration filename. (#255, #1573, #1144, #41) 2018-01-28 17:47:28 +01:00
3571ab8b88 imconfig.h comments 2018-01-28 17:40:48 +01:00
578016d08b ImVector comment (#1577) 2018-01-27 17:26:59 +01:00
3ded262776 Merge branch 'master' into navigation 2018-01-26 16:07:43 +01:00
2d9d7a10ca Scrollbar: Fix for ScrollbarY enable check after ScrollbarX has been enabled. (#1574) Looks like a bug introduced in c36e586cce. 2018-01-26 11:43:43 +01:00
1f3b66b10a Scrollbar: Fix ScrollbarX enable test subtracting WindowPadding.x. This has been here since 65a191c005 (#246) tho at the time it is possible that SizeContents wasn't calculated as evenly.
Test: auto-resize with: ImGui::Begin("Test", NULL, ImGuiWindowFlags_HorizontalScrollbar); ImGui::Button("##xxx", ImVec2(500,500)); ImGui::End();
2018-01-26 11:43:31 +01:00
10a4a77b27 Nav: Drag, Slider: When already past a limit and pushing in the direction of the limit, we don't clamp values again. (#787) 2018-01-25 20:39:34 +01:00
04d5783ffd Nav: Cleaning up + using ImGuiInputSource source enum instead of a silly bool. (#787) 2018-01-25 19:36:38 +01:00
d088bd86ad Nav: Added keyboard moving and resizing via the CTRL-TAB windowing mode. (#787) 2018-01-25 19:25:30 +01:00
486f0a8ba0 Fixed potential warning (forward declaration and definition didn't match signature. forward declaration only here for consistency) 2018-01-25 19:07:35 +01:00
f2d5300408 Nav: Keyboard: Added CTRL+TAB (and CTRL+Shift+TAB) style window selection. (#787) 2018-01-25 19:03:47 +01:00
ed088b00be Nav: Style: Improved display of windowing highlight (for focus selection via PadMenu or Ctrl+TAB). (#787, #707) 2018-01-25 18:50:30 +01:00
827f4b17d3 Nav: Examples: Glfw+GL3: Added basic gamepad mapping code when io.NavFlags & ImGuiNavFlags_EnableGamepad is set. (will iterate/tweak before spreading to other examples). (#787) 2018-01-25 16:18:57 +01:00
e9070e768e Nav: Fixed renaming of c09016b12a that were incorrect. ImGuiNavInput_PadLeft -> PadDpadLeft, _PadScrollLeft -> PadLStickLeft. (#787) 2018-01-25 16:17:36 +01:00
3967ff58b2 Nav: Examples: DirectX11, Glfw+GL3: Basic code to map keyboard inputs when io.NavFlags & ImGuiNavFlags_EnableKeyboard is set. (will iterate/tweak before spreading to other examples). (#787) 2018-01-25 16:02:33 +01:00
5d31e1696f Fix SetNextWindowContentSize() with 0.0f on Y axis (or SetNextWindowContentWidth()) overwriting the contents size. Broken in eab6333a0b. (#1363) 2018-01-25 15:37:24 +01:00
8bf0c89c0d Internals: ImRect::Contains(ImRect&) include boundaries (whereas Contains(ImVec2) should not). 2018-01-25 14:24:57 +01:00
194850db31 Merge pull request #1572 from rainbru/build-examples-fix
Fix building instruction in a couple of README
2018-01-25 13:58:27 +01:00
94ed44b5cb Fix allegro5_example build instructions 2018-01-25 13:33:35 +01:00
c226e02ca0 Fix sdl_opengl2_example filename in README.md's build instructions 2018-01-25 13:27:57 +01:00
2c7324da56 TODO list, added uSynergy README 2018-01-25 12:38:15 +01:00
5f7f27c8de Nav: Comments. (#787) 2018-01-24 20:07:35 +01:00
d404b93b6b Nav: Mouse clicking on a window (to select/move) disables hides nav highlight. (#787) + comments 2018-01-24 19:57:39 +01:00
89b0ca1f8f Nav: FocusWindow() doesn't reset NavRectRel (which was flickering e.g. when returning to a parent menu). This was added in the initial nav branch commit and I don't see a reason for it. (#787) 2018-01-24 19:55:56 +01:00
c8def61f5c Merge branch 'master' into navigation 2018-01-24 19:36:48 +01:00
f3776055d6 Merge branch 'master' into context 2018-01-24 19:31:11 +01:00
8c57d8cc1e Natvis: Fix ImRect expanded height display being broken and dumb. (#1569) 2018-01-24 19:10:09 +01:00
6f27d6b5b8 Natvis: Made ImGuiWindow display shorter. 2018-01-24 18:52:26 +01:00
c2e92ab61b Added imgui.natvis helper for visual studio users. Added to examples projects. 2018-01-24 18:40:54 +01:00
277f6e7842 Examples: Comments 2018-01-24 18:40:23 +01:00
6f366fff6b Demo: Tweaked example menu with colors + menu items, was currently particularly inconvenient for Nav. Will rework later. (#787) 2018-01-24 17:41:47 +01:00
455989b8b1 Nav: Added io.NavFlags to hold various options. Added ImGuiNavFlags_EnableGamepad and ImGuiNavFlags_EnableKeyboard for bindings to use (#787) 2018-01-24 17:41:47 +01:00
28671aa821 Nav: Internals: Moved some enums and functions to internals, renamed ImGuiNavReadMode to ImGuiInputReadMode as well. (#787) 2018-01-24 17:41:47 +01:00
8227176c17 Nav: Menus: Fix for using Left direction inside a menu with widgets layed out horizontally. Left to close is now handled as a fallback inside EndMenu(). (#787) 2018-01-24 17:41:47 +01:00
c09016b12a Nav: Renamed ImGuiNavInput_PadLeft / etc. to ImGuiNavInput_PadLStickLeft. Renamed ImGuiNavInput_PadScrollLeft to ImGuiNavInput_PadRStickLeft, aka removing trying-too-hard semantic from the enums. (#787) 2018-01-24 17:41:47 +01:00
bd278e958e Nav: Added ImGuiNavInput_KeyLeft/Right/Up/Down set so we can differenciate gamepad/keyboard inputs. (#787) 2018-01-24 17:41:47 +01:00
680162eb32 Merge branch 'master' into navigation 2018-01-24 17:41:14 +01:00
5148937d4d Fixed old Begin() calling SetNextWindowBgAlpha() with negative values. (#1567, #1568) 2018-01-24 17:39:21 +01:00
37ee99983f Clear BgAlphaCond properly after consuming it. Fixes 9a76fd30fd (#1567) 2018-01-24 15:09:02 +01:00
823e1f0b94 Nav: Reordered NavInput enums to match directional order of ImGuiDir_ and ImGuiKey_ + comments (#787) 2018-01-24 10:43:57 +01:00
64b786c2aa Nav: Tweak/fixed popup positioning when using nav without the io.NavMovesMouse flag (it was always assuming a mouse cursor and allocating space for it) (#787)
Note that this bit include badly hardcoded sizes, expecting an improvement later.
2018-01-24 10:31:54 +01:00
cea78cc576 Nav: Update hovered logic, so IsItemHovered and ButtonBehavior are more consistent with each other. The known case this fixes is nav focusing on a color button, tooltip appears, mouse move: previously tooltip would stay up. (#787) 2018-01-24 10:24:41 +01:00
eb7ec781dc Nav: Tweak GetNavInputAmount(). Split debug defines. 2018-01-23 21:56:15 +01:00
f6ee8d30fb Comments (#1567) 2018-01-23 19:21:17 +01:00
d500113f1d Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
2018-01-23 19:16:43 +01:00
9a76fd30fd Added SetNextWindowBgAlpha() helper. (#1567) particularly helpul with the marking of the old 5-parameters version of Begin() as obsolete. 2018-01-23 19:13:49 +01:00
2645ab5f7f Comments + added legacy renamed GetItemsLineHeightWithSpacing() as stated in the doc, fixes 6190ab0084 2018-01-23 17:25:59 +01:00
13c407591e Nav: Comments, tweaks 2018-01-23 16:45:46 +01:00
db2ba13154 Internals: Exposed SetCurrentFont() in imgui_internal.h 2018-01-23 16:33:06 +01:00
9076366c17 Style: Exposed ImGuiStyleVar_WindowTitleAlign, ImGuiStyleVar_ScrollbarSize, ImGuiStyleVar_ScrollbarRounding, ImGuiStyleVar_GrabRounding + added an assert to reduce accidental breakage. (#1181) 2018-01-23 09:57:49 +01:00
1acb155419 Internals: Moved unnecessary MovingWindowMoveId field. 2018-01-22 14:31:20 +01:00
5097368bd5 Tweaked FAQ. 2018-01-22 12:01:24 +01:00
2026e792cd Context: NewFrame() asserts (#1565) 2018-01-21 21:12:52 +01:00
dd89c9ea59 Examples: Made the Win32 proc handlers not assert if there is no active context yet, to be more flexible with creation order. (#1565) 2018-01-21 20:58:50 +01:00
9edf211c0e Merge branch 'master' into navigation 2018-01-21 20:46:50 +01:00
3ed2ddbfbe Metrics: Removed context size display. 2018-01-21 20:32:05 +01:00
d3e826c247 Examples: Updated for reorganized context functions. Calling CreateContext(), DestroyContext() in example code. Removed Shutdown() from binding code. (#1565, #586, #992, #1007, #1558) 2018-01-21 20:16:55 +01:00
5e2aa6185c Reorganized context handling to be more explicit,
- YOU NOW NEED TO CALL ImGui::CreateContext() AT THE BEGINNING OF YOUR APP, AND CALL ImGui::DestroyContext() AT THE END.
- removed Shutdown() function, as DestroyContext() serve this purpose.
- you may pass a ImFontAtlas* pointer to CreateContext() to share a font atlas between contexts. Otherwhise CreateContext() will create its own font atlas instance.
- removed allocator parameters from CreateContext(), they are now setup with SetAllocatorFunctions(), and shared by all contexts.
- removed the default global context and font atlas instance, which were confusing for users of DLL reloading and users of multiple contexts
(#1565, #586, #992, #1007, #1558)
2018-01-21 20:16:54 +01:00
7e4d28a49d Context: Renamed SetMemoryAllocators() to SetAllocatorFunctions(). Tweaked comments. (#1565, #586, #992, #1007, #1558) 2018-01-21 20:16:54 +01:00
e45d7a7060 Context: Added IMGUI_DISABLE_DEFAULT_ALLOCATORS to disable linking with malloc/free. (#1565, #586, #992, #1007, #1558) 2018-01-21 20:16:54 +01:00
5a301c29dc Context: Removed allocator parameters from CreateContext(), they are now setup with SetMemoryAllocators() and shared by all contexts. (#1565, #586, #992, #1007, #1558) 2018-01-21 20:16:54 +01:00
ac5b7a1bdf Comments 2018-01-21 20:10:23 +01:00
8b64d50cc4 Merge pull request #1564 from PanosK92/master
Simplified return of ImGui::IsKeyReleased().
2018-01-21 17:20:44 +01:00
7c8a19978d Simplified return of ImGui::IsKeyReleased() 2018-01-21 16:02:09 +00:00
5eb293c879 ImFontAtlas: Added TexUvScale (= 1.0f / (float)TexWidth, 1.0f / (float)TexHeight) 2018-01-20 20:32:23 +01:00
cd1409f4bf ImFontAtlas: Moved mouse cursor data out of ImGuiContext, fix drawing them with multiple context. Also remove the last remaining undesirable dependency on GImGui in imgui_draw.cpp, finishing the work recently done with ImDrawListSharedData. Hurra! (#939) 2018-01-20 20:25:12 +01:00
7e7c017b75 Examples: Simplified mouse wheel handling. (#1463) 2018-01-20 12:45:31 +01:00
7dea158175 Examples: Allegro, Apple, DirectX9/10/11, Glfw+Vulkan :Added support for horizontal mouse wheel. (#1463) 2018-01-20 12:36:59 +01:00
0b1fecb792 Horizontal mouse wheel: renamed io.MouseHorizWheel to io.MouseWheelH. Reorganized the code in NewFrame(). Examples: Updated GLFW+GL and SDL+GL accordingly. (#1463) 2018-01-20 12:36:16 +01:00
6f6b6194b2 Merge branch 'tseeker/20171127-feature-horiz-wheel' of https://github.com/tseeker/imgui into tseeker-tseeker/20171127-feature-horiz-wheel
# Conflicts:
#	examples/sdl_opengl2_example/imgui_impl_sdl_gl2.cpp
#	examples/sdl_opengl3_example/imgui_impl_sdl_gl3.cpp
2018-01-20 12:06:06 +01:00
d4bf9b4686 Renaming for consistency. 2018-01-19 15:47:10 +01:00
8877622fa8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-19 15:42:28 +01:00
e5a6e85f6d Basic undocumented/unsupported combination of Child+Tooltip. The full feature needs substancially more work but this is enough for simplest cases. (#1345) 2018-01-19 15:37:25 +01:00
42a612d7c9 Begin: Removed asserts that got in the way of some flags combination. (#1345) 2018-01-19 15:33:35 +01:00
0978f00911 MovingWindow: Track click offset based on root window (undo 514d30d8cd). This should not affect the patch used for #1345 as the RootWindow for Child+Tooltip window points to itself now. 2018-01-19 15:14:53 +01:00
f3e510a9bf Examples: SDL: Using SDL_CaptureMouse() to retrieve coordinates outside of client area when dragging. (#1559)
Digging into sdl window/mouse stuff will also be useful for multi-viewport work.
2018-01-19 10:46:54 +01:00
00351ee2ab Examples: SDL: Minor renaming. 2018-01-19 09:55:49 +01:00
ba99900023 Examples: GLFW+GL2: Renamed imgui_impl_glfw.* to imgui_impl_glfw_gl2.* for consistency and to emphasis on GL2-ness. 2018-01-19 09:50:58 +01:00
79dca9d5e6 Examples: SDL+GL2: Renamed imgui_impl_sdl.* to imgui_impl_sdl_gl2.* for consistency and to emphasis on GL2-ness. 2018-01-19 09:50:58 +01:00
15fd5b6c4c Examples: SDL: Minor renaming. 2018-01-19 09:43:28 +01:00
ce17e0f274 Examples: SDL: Using SDL_WINDOW_INPUT_FOCUS instead of SDL_WINDOW_MOUSE_FOCUS (which is ~~hovered). We should use SDL_CaptureMouse + SDL_WINDOW_MOUSE_CAPTURE_FLAG which requires SDL 2.0.4 will give it a try shortly. (#1559) 2018-01-19 09:25:31 +01:00
74dc70c543 DragFloat: Fix/workaround for backends which do not preserve a valid mouse position when dragged out of bounds. (#1559) 2018-01-19 09:16:26 +01:00
c2ffce3e5a Drag and Drop: Fix comment. Removed IMGUI_PAYLOAD_TYPE_DOCKABLE from master branch. (#143) 2018-01-18 17:39:40 +01:00
63d47e8328 Drag and Drop: Increased payload type string to 12 characters instead of 8.(#143) 2018-01-18 17:32:34 +01:00
932d3f0198 NewFrame(): Added an assert to detect incorrect filling of the io.KeyMap[] array earlier. (#1555) + comments. 2018-01-18 10:06:58 +01:00
60d5dc7902 Examples: SDL: Fixed mapping of Insert key (#1555, fix bug introduced in #1541) 2018-01-18 10:01:36 +01:00
d1f726cd9d Comments about Begin/End pair and handling of return value. 2018-01-17 12:46:07 +01:00
cc15512bfc InputText: Minor tweak. 2018-01-17 12:15:24 +01:00
7ccbb765e2 InputText: Cursor X position not lost when clicking outside on an item that's submitted after the InputText(). It was only noticeable when restoring focus programmatically. (#1418, #1554) 2018-01-17 12:15:00 +01:00
2f15cc0855 Nav: Fixed popup wrap-around logic for windows with scrolling. (#787) 2018-01-15 21:55:32 +01:00
05885b2e6d Merge fix. 2018-01-15 20:18:01 +01:00
a221d253f3 Nav: Comment. 2018-01-15 20:13:49 +01:00
472ba1394c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-15 20:13:42 +01:00
28a76af185 Internal: DrawData: Tidying, renaming. 2018-01-15 20:12:48 +01:00
a77913054f Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2018-01-15 18:02:58 +01:00
1182174d81 Internals: DrawData: We don't need an intermediate layer for popups. 2018-01-15 18:00:13 +01:00
0c06b43e6b Metrics: Tweaks to hover-window-drawlist to see window bounding box. 2018-01-15 17:55:38 +01:00
038453258e Internals: DrawData: Refactored chunks into a ImDrawDataBuilder we can reuse. 2018-01-15 17:48:32 +01:00
061d8df033 MIssing IMGUI_API for a type with non-inline methods. 2018-01-15 17:48:32 +01:00
06eef2ce6f Internals: DrawData: renamed fields only (committing separately so that next commit is less nosiy). 2018-01-15 17:48:32 +01:00
6eff21ee5e Revert "Nav: Fixed RenderNavHighlight() clipping, essentially revert 6ea90af6b7. (#787)"
This reverts commit 03f5cd6ca1.
2018-01-15 16:19:01 +01:00
514d30d8cd MovingWindow: Track click offset based on MovingWindow and not its RootWindow. Followup to 3849bb4470. Comments + adding a local to ease patch #1345. 2018-01-14 14:13:54 +01:00
8b432cf590 Merge pull request #1551 from Crunkle/master
Fix incorrect header name on Linux MinGW systems.
2018-01-14 11:26:03 +01:00
daa38f2ad0 Fix cross compilers 2018-01-14 03:31:22 +00:00
db63e71f13 Internals: Exposed SetCurrentFont() in imgui_internal.h 2018-01-12 20:07:01 +01:00
1493de4f81 Internals: Merge of harmless stuff from Navigation stuff. Added GetHoveredID() internal helper. 2018-01-12 19:53:27 +01:00
c85d7d6e49 Nav: Remove GetItemID(), hide ActivateItem() before this feature is unfinished and has issue (full feature is on hold). Undo part of 59c6f35bf6 (#787) 2018-01-12 19:28:37 +01:00
c9be7d7254 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2018-01-12 19:21:12 +01:00
0a98202714 Nav: Standardized FIXME-NAV marker. 2018-01-12 19:13:15 +01:00
16285603f2 Internals: Initializing fields in same order as declaration order + fixed uninitialized DragDropAcceptIdCurrRectSurface (was harmless) 2018-01-12 19:11:11 +01:00
cc173d7619 Begin: FIx previous commit - no need to call on collapsed window. Handle manual resize (grip, border, gamepad) before setting up window DrawList main clipping rectangle. Sane (and required for viewport code). (#822, #1542) 2018-01-11 23:21:24 +01:00
5e9ae92ae9 Begin: Handle manual resize (grip, border, gamepad) before setting up window DrawList main clipping rectangle. Sane (and required for viewport code). (#822, #1542) 2018-01-11 23:17:34 +01:00
f7b10fc954 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-11 18:18:44 +01:00
6a1011cf53 MovingWindow: Proper fix for 651538e attempt, without altering MovingWindow which has side-effects. Clicking on a window with the ImGuiWIndowFlags_NoMove flags takes an ActiveId so we can't hover something else. (ref #1381, #1337) 2018-01-11 18:16:16 +01:00
b74f24c3e5 Revert "Clicking on a window with the ImGuiWIndowFlags_NoMove flags takes an ActiveId so we can't hover something else. (ref #1381, #1337)"
This reverts commit 651538e13b.
2018-01-11 18:08:14 +01:00
1c95dea88c Merge branch 'master' into navigation 2018-01-11 17:37:02 +01:00
7d2a068dea Begin: Shuffling bits of code around. 2018-01-11 17:33:37 +01:00
cd7e178eac Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-11 16:49:59 +01:00
651538e13b Clicking on a window with the ImGuiWIndowFlags_NoMove flags takes an ActiveId so we can't hover something else. (ref #1381, #1337) 2018-01-11 16:43:03 +01:00
a8bbb0b7dd Demo: Using IM_COL32() instead of ImColor() in ImDrawList centric contexts. 2018-01-11 15:47:07 +01:00
12aa3cb09e Demo: Tweaks format. 2018-01-11 15:22:33 +01:00
398a4e1865 Made obsolete IsAnyWindowHovered()/IsAnyWindowFocused() static inline. static only tends to trigger warnings. (#1382) 2018-01-11 13:58:25 +01:00
a63fbbca8b Added ImGuiHoveredFlags_AnyWindow, ImGuiFocusedFlags_AnyWindow. Obsoleted IsAnyWindowHovered()/IsAnyWindowFocused() in favor of IsWindowHovered(ImGuiHoveredFlags_AnyWindow)/IsWindowFocused(ImGuiFocusedFlags_AnyWindow). Added to demo. (#1382) 2018-01-11 13:51:18 +01:00
67671c0ab5 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-10 23:11:26 +01:00
1eee10778b Internals: Begin: Refactor some code into an UpdateManualResize() function. 2018-01-10 23:06:51 +01:00
483f9b0d07 Internals: Begin: Moved DrawList setup code below, the viewport system will need to push the outer clipping rectangle as late as possible. 2018-01-10 22:55:29 +01:00
03f5cd6ca1 Nav: Fixed RenderNavHighlight() clipping, essentially revert 6ea90af6b7. (#787) 2018-01-10 18:58:55 +01:00
919fc548ad Merge branch 'master' into navigation 2018-01-10 18:58:26 +01:00
6c583315e6 Begin: Moving some code around for the benefits of the wip viewport branch. 2018-01-10 18:56:51 +01:00
f610e25682 Internals: Using ImFloor().when appropriate. 2018-01-10 18:33:29 +01:00
0cabd81071 Internals: Rect: Added ClipWillFull helper + comments on variations. 2018-01-10 14:43:08 +01:00
92d75c44bc Internals: ImVec2 versions of ImMin, ImMax inline float version for a faster full-on-debug-no-inline experience. 2018-01-10 14:43:02 +01:00
fe919995da Merge branch 'master' into navigation 2018-01-08 16:35:12 +01:00
933ee6cd5d InputText: Added alternative clipboard shortcuts: Shift+Delete (cut), Ctrl+Insert (copy), Shift+Insert (paste). (#1541) 2018-01-08 16:01:30 +01:00
fd4d63a0c5 InputText: Moved code for checking clipboard shortcut so we can expand on it. (#1541) 2018-01-08 15:56:01 +01:00
ce95b84825 Added ImGuiKey_Insert for future use. Setup in all example bindings. (#1541) 2018-01-08 15:30:39 +01:00
39cb56c39e Examples: OpenGL3+GLFW: Using 3.2 context + GLSL version 150 (#1466) 2018-01-07 19:09:34 +01:00
7484c63449 Examples: OpenGL3+SDL: Changed GLSL shader version to 150 (#1466, #1504) 2018-01-07 19:09:33 +01:00
168200f915 Popups: Comments, reorganize bits of the header section, renamed parameters. 2018-01-07 18:17:47 +01:00
a8e5542d78 BeginPopup: Exposed extra_flags publicly. (#1533) 2018-01-07 18:13:01 +01:00
3f4eccf154 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-07 16:22:09 +01:00
3fc7cf190d OpenPopup(): Always reopen existing popup. Removed OpenPopupEx() bool reopen_existing which is always true. This also makes the public API on par with OpenPopupEx(). (#1497, #1533) 2018-01-07 16:20:02 +01:00
deab2ab015 Popups: Gently handle the user mistakenly calling OpenPopup() every frame. (when reopen_existing is true). (#1497) 2018-01-07 16:15:54 +01:00
69ff65f054 Internals: Popup: Renaming fields. 2018-01-07 16:11:25 +01:00
3678307cd9 Popup, Menus: Tweaks and comments. 2018-01-07 15:56:14 +01:00
369189b675 Internals: Popup: Explicitely setting up ImGuiPopupRef reduces confusion. 2018-01-07 15:40:46 +01:00
e09852fc49 Popups: Revert aca23fd3f0 (Oct 20, 2017). Because 1) I can't seem to find a default. 2) The if is definitively faulty and would have been all true. 3) It looks like possibly the following commit 6ab737a4bb could have made this unnecessary. Not absolutly certain. (~#439) 2018-01-07 15:34:15 +01:00
63e4677b81 Popup: BeginPopupContextItem(), BeginPopupContextWindow(), BeginPopupContextVoid(), OpenPopupOnItemClick() all react on mouse release instead of mouse click. Note that they don't use the full ButtonBehavior() or tracking aabb on both click and release. Applications I've tried seems to behave inconsistently there but on-release-without-tracking is both fairly common and doesn't require extra code for the id tracking. (~#439) 2018-01-07 15:23:57 +01:00
c337cdcfd3 Internal: ButtonBehavior: Tweak to update g.ActiveIdClickOffset more consistently 2018-01-07 15:02:09 +01:00
7ad169fa09 Merge branch 'master' into navigation + fix previous merge
# Conflicts:
#	imgui.cpp
2018-01-07 14:33:44 +01:00
d730a763f6 Internal: Reworked FocusFrontMostActiveWindow() so it fits the Nav branch usage as well. 2018-01-07 14:32:42 +01:00
66b2ee6ea2 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-07 14:25:05 +01:00
a34490239c Internals: Popup: Separating MousePosOnOpen and PopupPosOnOpen. They are equal in the master branch but different in the navigation branch. 2018-01-07 14:03:56 +01:00
5fd19f037f Internals: renamed FocusPreviousWindow() to FocusfrontMostActiveWindow() 2018-01-07 12:48:11 +01:00
2874aabb93 Internals: BringWindowToFront() iterate front to back, faster in majority of use cases. 2018-01-07 12:48:11 +01:00
3d24a9eb40 Examples: DirectX9/10/11: Comments about CS_DBLCLKS + formatting tweaks. (#1538) 2018-01-05 22:32:27 +01:00
65dd55cb2b Merge pull request #1538 from ndandoulakis/ndandoulakis-CS_DBLCLKS-patch
Examples: DirectX9,10,10: Support for CS_DBLCLKS by treating double-click down messages are regular down. (#1538, #754)
2018-01-05 22:27:40 +01:00
407955d9fb Examples: Using IM_OFFSETOF macro. + Comments 2018-01-05 22:05:02 +01:00
bfc25bc8a3 CS_DBLCLKS support for DirectX 11 2018-01-05 22:28:27 +02:00
583e97b297 CS_DBLCLKS support for DirectX 10 2018-01-05 22:25:30 +02:00
20ae6439ea CS_DBLCLKS support for Directx9 2018-01-05 22:16:35 +02:00
95b773370f Revert "Internals: Added LastActiveId, LastActiveIdTimer. (#1537)" Will come up with a better design later.
This reverts commit 007f4034c9.
2018-01-05 17:40:51 +01:00
007f4034c9 Internals: Added LastActiveId, LastActiveIdTimer. (#1537) 2018-01-05 15:33:24 +01:00
4c90529c62 Examples: Visual Studio projects: Disabled extraneous function-level check in Release build. 2018-01-04 11:42:05 +01:00
ecbfdd3143 Added extraneous initialization to NULL. (#1527). 2018-01-04 11:06:12 +01:00
29c194b2a4 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2018-01-03 20:47:42 +01:00
4fc9f44073 Merge of minor left-overs from private work branch to reduce drifts. Should be functionally a no-op. 2018-01-03 20:46:54 +01:00
4b1240b2e1 Fixed non-popup child windows not honoring the HiddenFrames flag (can't see a reason). Docking relies on this. 2018-01-03 20:45:24 +01:00
b2ec0741f1 Internals: Settings api tweaks 2018-01-03 20:45:17 +01:00
2b8224692e Merge branch 'master' into navigation 2018-01-03 20:26:24 +01:00
0a0b252bb6 DragDrop: Removed IsDragDropActive() (introduced a few days ago, revert 06bea369c0) as our use case doesn't need it anymore. Will add it if there is a real need. 2018-01-03 17:02:51 +01:00
a7deb3a394 Demo: Minor tweaks. 2018-01-03 15:36:51 +01:00
9fbecac87e Demo: Improved Selectable() examples. (#1528) 2018-01-03 15:11:14 +01:00
33f7769d85 Columns: Clear offsets data when columns count changed. (#1525) 2018-01-03 14:38:01 +01:00
f9b2058d5a Internals: Renamed ImGuiSimpleColumns to ImGuiMenuColumns to avoid confusion. Reduced internal buffer size (we only use 3 slots). 2018-01-03 14:35:11 +01:00
79d38e5ade Updated copyright date for 2018 2018-01-03 14:32:16 +01:00
05ec0b0736 Casing tweaks + clarify license copyright (simpler/safer?) (#1346) 2018-01-03 14:32:16 +01:00
96ccc484f9 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2018-01-03 12:33:27 +01:00
3c6fbe0849 Renamed ImGuiSizeConstraintCallback to ImGuiSizeCallback, ImGuiSizeConstraintCallbackData to ImGuiSizeCallbackData. 2018-01-03 12:31:56 +01:00
7fcbd45500 Internals: NextWindow: Renamed, moved functions to member. 2018-01-03 12:28:16 +01:00
e339949de1 Internals: NextWindow: Using ImGuiCond for consistency. 2018-01-03 12:22:02 +01:00
04b44398eb Internals: refactored g.SetNextWindow fields into g.NextWindow. structure (so it can be more easily transported/copied) 2018-01-03 12:12:41 +01:00
856ee17ed8 Fixed Android clang warning. 2018-01-03 10:29:37 +01:00
7e03ee8d85 Merge branch 'master' into navigation 2018-01-02 17:21:49 +01:00
bfc9c5216a Merge pull request #1529 from unprompted/master
Fix a memory leak of ImGuiColumnsSet's Columns vector.  ImVector doesn't call destructors.
2018-01-02 17:21:17 +01:00
561e9f286e Fix a memory leak of ImGuiColumnsSet's Columns vector. ImVector doesn't call destructors. 2018-01-02 10:46:20 -05:00
170bcb2d7c Internals: NewFrame: Shuffled some code around (to minimize upcoming patches) 2018-01-02 12:48:38 +01:00
4af84ac781 ImFontAtlas: Handle stb_truetype failure more gracefully, GetTexDataAsRGBA32() won't crash during conversion. (#1527) 2017-12-30 23:10:11 +01:00
7a15fc8de5 Merge branch 'master' into navigation 2017-12-29 18:28:23 +01:00
6ec00a366a Internals: ImRect: Minor formatting tweaks. 2017-12-29 18:28:04 +01:00
fbf2435f38 Exposed IM_OFFSETOF() helper in imgui.h 2017-12-29 18:16:19 +01:00
eef9120e07 Reorganized comments in the IMGUI_DISABLE_OBSOLETE_FUNCTIONS function. Added an IM_ASSERT(0). 2017-12-29 18:14:36 +01:00
2dd2ca0096 Removed CalcItemRectClosestPoint() which was weird and not really used by anyone except demo code. If you need it it's easy to replicate on your side.
Removed internal corresponding ImRect::GetClosestPoint() for now.
Essentially revert dcaafffe0e.
2017-12-29 17:59:13 +01:00
9f8632b131 Examples: Comments about invalid mouse pos. 2017-12-29 15:03:36 +01:00
c4e6d622c1 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-12-29 13:39:07 +01:00
4fbdb50dca MenuBar: Fixed menu bar pushing a clipping rect outside of its allocated bound (usually unnoticeable). 2017-12-28 23:53:36 +01:00
4ba2e85744 Demo: Tweak. Comments. Metrics: Added some Drag and Drop info. 2017-12-28 23:53:27 +01:00
90ff4ae5d1 BeginPopupModal(): the conditional test for SetNextWindowPos() was polling the wrong window, which in practice made the test succeed all the time. 2017-12-28 23:52:47 +01:00
e985baa35d Combo: When peeking into the popup window for alignment we check if the window was active, which is more correct. (no known issue in current codebase, but we'll need that change for later) 2017-12-28 23:52:42 +01:00
06bea369c0 DragDrop: Added IsDragDropActive() helper which is useful for binding to decide how to handle mouse inputs. 2017-12-28 23:52:37 +01:00
563d04fdb1 TreeNode: node with the ImGuiTreeNodeFlags_Leaf flag correctly disable highlight when DragDrop is active. (#143, #581) 2017-12-28 23:52:31 +01:00
49eed6e2d1 Version 1.54 WIP 2017-12-28 15:17:35 +01:00
6e30c33642 Demo dinaries update 2017-12-26 21:04:17 +01:00
7fd805497a Update README.md 2017-12-26 20:30:22 +01:00
436cad4bca Merge branch 'master' into navigation
# Conflicts:
#	imgui.h
2017-12-26 15:37:31 +01:00
d9034bf2d8 ListBox() changed signature of ListBox() to match Combo(). Still not very happy about not using const char** anymore. (#931) 2017-12-26 15:36:55 +01:00
149523a101 Fixing error: declaration of ‘size’ shadows a member of 'this' [-Werror=shadow] 2017-12-25 22:27:32 +01:00
9511f22e8b Demo: Console: More friendly to text color changes. 2017-12-25 18:47:44 +01:00
e916310b2e Version 1.53 2017-12-25 17:41:41 +01:00
3d48f5b8c2 Demo: BeginCombo() demo code 2017-12-25 17:41:02 +01:00
ed2105d4a2 Merge branch 'master' into navigation 2017-12-25 16:45:27 +01:00
3849bb4470 Moving window doesn't use accumulating MouseDelta so straying out of boundaries keeps moved window at the same spot. 2017-12-25 16:03:58 +01:00
78f48bb795 Examples: DirectX10,DirectX11: Moved call to OMSetRenderTargets() in main loop so example code can integrate more nicely with other code. 2017-12-25 14:54:54 +01:00
de5c304b49 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-12-24 18:59:40 +01:00
8d54b1b7af Misc comments, removed duplicated IM_ARRAYSIZE macro in imgui_demo.cpp (it is now declared in imgui.h) 2017-12-24 18:59:14 +01:00
3a4a2bb27c Examples: Vulkan: Tweak 2017-12-24 18:49:19 +01:00
ce13426a1a Examples: Comments, synched some minor drift between examples + stronger suggestion to use StyleColorsDark(). 2017-12-24 18:45:11 +01:00
1b86e7343f Renamed the emblematic ShowTestWindow() function to ShowDemoWindow(). Kept redirection function (will obsolete). 2017-12-24 18:16:22 +01:00
cead207535 Comments 2017-12-24 17:58:41 +01:00
67191badc2 Merge branch 'master' into navigation 2017-12-23 23:10:41 +01:00
bb8dfe4a34 Fixed incorrect IM_DELETE macro (9cda86d55a) (#1517, #484, #504) 2017-12-23 23:10:26 +01:00
b1930c5672 Merge branch 'master' into navigation 2017-12-23 20:37:53 +01:00
e9ceef4762 ImVector: Revert 6172e93272 actually problematic with our current use (because we don't construct the instances). 2017-12-23 20:37:36 +01:00
6c63c7a8b1 Various zealous warning fixes (thanks Clang). (Navigation branch) 2017-12-23 16:40:12 +01:00
ffb4f6ca8c Merge branch 'master' into navigation 2017-12-23 16:27:48 +01:00
d976e4ea23 Internals: Missing IM_DELETE usage (#1517) 2017-12-23 16:27:16 +01:00
9cda86d55a Internals: Added IM_NEW, IM_DELETE helper macros (#1517, #484, #504) 2017-12-23 16:24:33 +01:00
a5739a0aa3 Fixed warning with Clang+MSVC using __int64 to define the helper ImU64 type (#1184) 2017-12-23 15:28:49 +01:00
983d8f5f8e Various zealous warning fixes (Clang). 2017-12-23 15:28:49 +01:00
53b24ff79a Removed reliance on ImU64 type for the ImDrawList assert. (#1184) 2017-12-23 15:02:36 +01:00
69879dd4f3 ImVector: Spacing. 2017-12-23 14:55:22 +01:00
8e8b5498f7 ImVector: insert() uses grow_capacity() - had inconsistent resize policy 2017-12-23 14:51:28 +01:00
6172e93272 ImVector: Added assignments and = operators + comments. 2017-12-23 14:49:23 +01:00
b263bc5689 Examples: DirectX: Using IM_ARRAYSIZE() 2017-12-23 14:07:27 +01:00
1f26652944 Various zealous warning fixes (thanks Clang). 2017-12-23 14:07:03 +01:00
cf9b893841 Examples: Added null_example/ which is helpful for quick testing on multiple compilers/settings without relyong on graphics library. 2017-12-23 13:40:01 +01:00
1c1e490316 Merge branch 'master' into navigation 2017-12-22 20:21:54 +01:00
46dcd9aa50 Columns: Made PixelsToOffsetNorm() properly symetrical to OffsetNormToPixels() (#125) 2017-12-22 20:21:35 +01:00
471bcf8b5e Columns: Fixed dragging when using a same of columns multiple times in the frame. (#125) 2017-12-22 20:21:02 +01:00
e1a103b251 Drag and Drop: Disable tracking mouse button ownership when an external drag source is active, to make it easier to achieve drag and drop over multiple OS windows. (#143) 2017-12-22 20:20:52 +01:00
8d21ee56d2 ImDrawList, Font: Fixed bug introduced in 531c11d5c7 (#1519) 2017-12-22 20:19:48 +01:00
287380261c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-12-21 19:55:21 +01:00
c8c872c753 Internals: String functions uses size_t in their signature 2017-12-21 19:49:54 +01:00
996dfb21cf ImDrawList: Added ImDrawListFlags for AA settings. ImDrawList doesn't directly depends on GImGui anymore. 2017-12-21 19:49:54 +01:00
d139bd088d Begin: Moved modal darkening draw block 2017-12-21 19:49:54 +01:00
14cb8177d0 ImDrawList: Removed 'bool anti_aliased = true' final parameter of ImDrawList::AddPolyline() and ImDrawList::AddConvexPolyFilled(). Anti-aliasing is controlled via the regular style.AntiAliased flags. 2017-12-21 19:01:53 +01:00
531c11d5c7 ImDrawList: Small refactor toward removing dependency on GImGui + PushClipRectFullscreen now correctly uses data provided by imgui which can takes account of DisplaySize + Removed static variable in PathArcToFast() which caused linking issues to some. 2017-12-21 18:52:34 +01:00
230f826ef5 ImDrawList: Comments 2017-12-21 18:48:09 +01:00
4c2514dc29 Merge branch 'master' into navigation 2017-12-21 11:18:42 +01:00
6193f46af2 Active Modal window always set the WantCaptureKeyboard flag (#744) 2017-12-21 11:18:30 +01:00
b366dd9322 BeginPopup: Moved flags into individual BeginPopupXXX calls/implementations and outside of BeginPopupex(). Removed _NoResize flag which is extraneous with AlwaysAutoResize. 2017-12-20 17:40:58 +01:00
7fed4eb82d Merge branch 'ibachar-master' 2017-12-20 16:25:21 +01:00
55c0d2b9ab InputText: renamed ImGuiInputTextFlags_DisableUndo to ImGuiInputTextFlags_NoUndoRedo (#1506, #1508) 2017-12-20 16:25:03 +01:00
abaf347deb Added a flag for text input to disable undo / redo 2017-12-17 15:27:56 +02:00
b1d90b565d Columns: Fixed previous commit (wrong chunk commited) (#125) 2017-12-15 17:09:41 +01:00
b9391d1692 Columns: Internal: Columns have their no set of flags so NoResize can be setup by internal code. (#125) 2017-12-15 17:06:47 +01:00
6497f5dc1b Merge branch 'master' into navigation
# Conflicts:
#	imgui.h
2017-12-15 11:59:50 +01:00
0c6e260f73 Drag and Drop: Added ImGuiDragDropFlags_SourceExtern to facilitate interfacing with WM_DROPFILES (#143) 2017-12-15 11:17:21 +01:00
6effcf21d6 Drag and Drop: Source can also inhibit the preview on target, useful for extern sources that only exists for one frame. (#143) 2017-12-15 11:17:21 +01:00
51433e26af Drag and Drop: Renamed to ImGuiDragDropFlags_SourceNoAutoTooltip to ImGuiDragDropFlags_SourceNoPreviewTooltip (#143) 2017-12-15 10:15:51 +01:00
eefea0588a Using the ImGuiWindowFlags_NoScrollWithMouse flag on a child window forwards the mouse wheel event to the parent window, unless either ImGuiWindowFlags_NoInputs or ImGuiWindowFlags_NoScrollbar are also set. (#1380, #1502) 2017-12-14 18:42:41 +01:00
ac8e708c3e Fixed unused variable warning. 2017-12-14 18:14:43 +01:00
07ed9f8451 TODO list update 2017-12-14 11:08:16 +01:00
fa68cb5364 Demo: Console: Tweak. 2017-12-13 23:07:07 +01:00
45bca7851d Added ImGuiHoveredFlags_RootAndChildWindows helper for consistency with focused flags. (#1382) 2017-12-13 22:30:16 +01:00
5f39758202 Minor tweaks, comments, spacing fixes 2017-12-13 22:21:49 +01:00
cc3192f347 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2017-12-13 22:09:08 +01:00
f265e16b84 Revert "Scrollbar: Minor simplication of the code using InnerRect data." > Introduced sheering on the scrollbar rectangle because InnerRect isn't setup at this point.
This reverts commit 7ac1583411.
2017-12-13 22:07:18 +01:00
3905816082 Added ShowFontSelector(), ShowStyleSelector(). (#707) 2017-12-13 21:59:16 +01:00
ddbcda8c1b Columns: Column width data is no longer lost while dragging toward the right side. (#1499, #125) 2017-12-13 21:51:23 +01:00
ba71e1c0e4 Columns: Minor stylistic fixes. (#125) 2017-12-13 21:48:56 +01:00
f7c5f420e7 BeginChild() fix using negative sizes as window position because of erroneous clamping. It was hard to notice until we added asserts for it. (#1500) 2017-12-13 19:45:03 +01:00
e8e84a6ad6 Columns: Added internal tracking of a few flag temporarily, to facilitate the work of third-parties who have columns patches. (#125) 2017-12-13 19:26:04 +01:00
4ae5c7e227 Columns: Refactor: Moved ColumnsSet[] to window out of DC as they are persistent data for most + fix for pre C++11 compilers. (#125, #1499) 2017-12-13 19:21:21 +01:00
b016215c80 Columns: Refactor: Not using statestorage lookup anymore. (#125, #1499) 2017-12-13 19:07:09 +01:00
3a31a75e3b Columns: Refactor: Renamed all members. (#125, #1499) 2017-12-13 18:42:06 +01:00
78320aa633 Columns: Refactor: Moved columns data into their own data structure. Minimum changes now to ease diffing. (#125, #1499) 2017-12-13 18:41:51 +01:00
027ffd91ea IsWindowFocused(): oops, that was bound to happen with loosely typed enums (this is sort of why I made both values identical - no direct side effects). 2017-12-12 23:49:04 +01:00
16fb58984f Merge branch 'master' into navigation 2017-12-12 23:41:48 +01:00
90d0b8b58b Navigation: minor sync to reduce drifts between changes 2017-12-12 23:41:20 +01:00
8b59ed0708 Drag and Drop: Exposed some internals. 2017-12-12 23:37:27 +01:00
90788a1242 ImVector: Added ImVector::contains() helper 2017-12-12 23:36:42 +01:00
7c7a7baf76 Merged miscellaneous small stuff (from nav/dock branches). 2017-12-12 23:36:25 +01:00
b174fcc9af Added IsAnyWindowFocused() (from Nav branch). 2017-12-12 23:35:04 +01:00
fa9327ccf8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_draw.cpp
#	imgui_internal.h
2017-12-12 20:44:12 +01:00
d0a1be0de0 Merge branch 'drag_and_drop' 2017-12-12 20:39:52 +01:00
ab049c6fc0 Drag and Drop: Fix merge for IMGUI_DISABLE_OBSOLETE_FUNCTIONS 2017-12-12 20:34:16 +01:00
7faa5b16bb Tweak 2017-12-12 19:15:00 +01:00
3ea5e67ba2 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
2017-12-12 18:47:23 +01:00
02e0a078f4 Begin: Tidying up code to make it more readable. 2017-12-12 18:46:42 +01:00
28bbf1ade6 Fixed ParentWindow setup which broke Modal windows (fix c65124f415) 2017-12-12 18:45:57 +01:00
d561a43a4d Drag and Drop: Drop target infer a fallback ID from the rectangle. Avoid Preview being accepted on drop frame when drop target has no ID. (#143) 2017-12-12 18:17:37 +01:00
ef1a683ebe Removed use of obsolete ImGui API. 2017-12-12 17:59:09 +01:00
e98df91dc4 Drag and Drop: Added ImGuiCol_DragDropTarget (#143, #707) 2017-12-12 15:44:22 +01:00
7ec934f439 Drag and Drop: Comments 2017-12-12 15:33:26 +01:00
052b6021dd Merge branch 'master' into drag_and_drop
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_internal.h
2017-12-12 15:02:05 +01:00
0a3db267c3 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_demo.cpp
#	imgui_internal.h
2017-12-12 14:58:53 +01:00
6190ab0084 Renamed GetItemsLineHeightWithSpacing() to GetFrameHeightWithSpacing() 2017-12-12 14:14:58 +01:00
c22657985a Added GetFrameHeight() function (used to be SmallSquareSize internally) 2017-12-12 14:12:49 +01:00
ee7f1921e8 Internals: Added GetSmallSquareSize() 2017-12-12 14:08:58 +01:00
08b72eb5c0 IsWindowFocused() refactor will flags. (#1382)
Marked IsRootWindowFocused() as obsolete in favor of using IsWindowFocused(ImGuiFocusedFlags_RootWindow).
Marked IsRootWindowOrAnyChildFocused() as obsolete in favor of using IsWindowFocused(ImGuiFocusedFlags_RootAndChildWindows).
2017-12-12 14:07:12 +01:00
8d8f4934fb Demo: mouse dragging demo tweaks 2017-12-12 13:11:40 +01:00
fa179d0ad8 Reordered ImGuiHoveredFlags to match upcoming ImGuiFocusedFlags (#1382) 2017-12-12 12:52:24 +01:00
de4a851f95 Font documentation update (#1498) 2017-12-12 12:50:43 +01:00
c65124f415 Internals: ParentWindow is now NULL for non-child windows and means what everyone expects. 2017-12-12 12:50:43 +01:00
f42d7b89e2 Internals: Removed misleading GetWindowParent() function. + renaming to clear confusing. 2017-12-12 12:50:42 +01:00
4a555d35f0 IsWindowHovered(): split ImGuiHoveredFlags_FlattenChild into separate ChildWindows and RootWindow flags. Allowing more combination and a better symetry with IsWindowFocused() flags. (#1382) 2017-12-12 12:50:42 +01:00
185c1eaaf3 Alignment + removed comments 2017-12-11 22:55:28 +01:00
f93945540f Renamed ImGuiTreeNodeFlags_AllowOverlapMode to ImGuiTreeNodeFlags_AllowItemOverlap. (#600, #1330) 2017-12-11 22:42:12 +01:00
45f440bb7d Internals: Renamed ImGuiButtonFlags_FlattenChilds -> ImGuiButtonFlags_FlattenChildren, ImGuiButtonFlags_AllowOverlapMode -> ImGuiButtonFlags_AllowItemOverlap 2017-12-11 22:39:10 +01:00
6b168b43ff Comments (#822) 2017-12-11 19:47:23 +01:00
2b9d8ab91d Merge branch 'master' into drag_and_drop
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-12-11 16:39:27 +01:00
38bfdb357e Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-12-11 16:28:47 +01:00
f06f68f3ce Obsoleted old functions: SetScrollPosHere (marked obsolete in 1.42, July 2015). GetWindowFont(), GetWindowFontSize() (marked obsolete in 1.48, March 2016) 2017-12-11 16:22:52 +01:00
9fd15defe4 Added an implementation of SetItemDefaultFocus() in the master branch for combo patterns to use and be more forward-compatible. (#787) 2017-12-11 16:19:37 +01:00
6d93011fdf alloca fix to allow Clang with Microsoft CodeGen path 2017-12-11 10:25:44 +01:00
e67f3809ed Replaced obsolete function with new one. 2017-12-11 09:57:05 +01:00
d1db229907 Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
2017-12-10 19:01:59 +01:00
71296910a0 Demo: Tweaks and spacing. Stopped using rand() function in demo code. 2017-12-10 18:49:47 +01:00
4b8857d536 Demo: About box tweaks. 2017-12-10 18:45:05 +01:00
1096e14356 ImFont: Added GetDebugName() helper. 2017-12-10 18:34:32 +01:00
e3e0326ea9 Exposed BeginCombo() publicly. 2017-12-10 18:08:59 +01:00
080f61858f Sorted typedefs/enumations forward declarations in imgui.h 2017-12-10 17:57:27 +01:00
eab6333a0b SetNextWindowContentSize() adjust for client->window size, but the fate of borders isn't really clear for now (until now we always tried to make borders not affect layout, so if we want a 200x200 fully visible space with borders and zero window padding user need to include the borders) (#1490) 2017-12-10 17:36:30 +01:00
7ac1583411 Scrollbar: Minor simplication of the code using InnerRect data. 2017-12-10 17:27:37 +01:00
a9b01600ac Internals: window->InnerRect includes removal of borders so it'll be easier to use from other locations. 2017-12-10 17:24:10 +01:00
20ba79aa56 Demo: Added "No close" option. 2017-12-10 17:02:41 +01:00
b75acc21b0 Fix for border under title bar when WindowBorderSize == 0 and FrameBorderSize > 0 2017-12-10 16:48:18 +01:00
0872020c5c Comments 2017-12-10 16:11:29 +01:00
f72b002da8 Removed SetNextWindowContentWidth(), prefer using SetNextWindowContentSize(). Kept redirection function (will obsolete). (#246, #519, #1444) 2017-12-10 16:05:47 +01:00
e23083a080 Fixed warning: logical ‘and’ of equal expressions 2017-12-10 12:15:29 +01:00
0365c524a2 ColorPicker4: Fixed returning true when holding mouse button on the sat/value/alpha locations. (#1489) 2017-12-09 21:25:20 +01:00
a8c7b1a2a2 ColorEdit4: Made IsItemActive() return true when picker popup is active. (#1489) 2017-12-09 21:17:27 +01:00
871a5cecc1 Merge branch 'master' into navigation 2017-12-08 18:32:46 +01:00
c9f0275e22 Combo: Removed ImGuiWindowFlags_ComboBox flag. Moved internal window flags. 2017-12-08 18:32:12 +01:00
457011660e Mouse wheel scrolling doesn't change speed inside Combo box (uses to slow down from 5 to 3) but instead slow down on window that are smaller than the scroll speed. 2017-12-08 18:28:17 +01:00
a263dce2f2 Combo: Cleanup. Removed unrequired uses of the _ComboBox flag (the test in EndChild() is from commit no 1!). We could remove ImGuiWindowFlags_ComboBox soonish. 2017-12-08 17:21:45 +01:00
9ce51ad9f6 Fix bad merge 2017-12-08 15:11:35 +01:00
a6f37287d8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-12-08 15:06:37 +01:00
7ac5f11b29 Standardizing the casing/format of internal window names + Misc comments. 2017-12-08 15:04:06 +01:00
befc58771c Combo: Recycling windows by using a stack number instead of a unique id, wasitng less windows. 2017-12-08 15:03:37 +01:00
e998c7d3e3 Combo: Moved functions (untouched). 2017-12-08 15:03:32 +01:00
a5e9392140 Combo: Added flags to BeginCombo() new api, removed explicit height, default to 8 instead of 7 items, allow popup height constraints via SetNextWindowSizeConstraints(), width expand if contents doesn't fit, popup reposition policy if it doesn't fit. 2017-12-08 15:03:26 +01:00
d9d231dc6b Internals: Renamed CalcSizeFullWithConstraint() to CalcSizeAfterConstraint() which is more appropriate + added explicit parameter to CalcSizeAutoFit() so it can be used externally. 2017-12-08 15:02:17 +01:00
74f42baf3e Fixed scrollbar issue, source size when explicit was read before applying custom size constraints (followup to cc2c023880 etc.) 2017-12-08 15:00:56 +01:00
541dfd7901 Combo: Comments + fixed missing lower window padding. 2017-12-08 15:00:02 +01:00
9872297a84 Internals: Renamed FindBestPopupWindowPos() to FindBestWindowPosForPopup() 2017-12-08 14:59:49 +01:00
a4863e8084 Demo: Picker with palette demo supports drag and drop. (#143, #346) 2017-12-08 12:49:35 +01:00
7bf85db6c4 Drag and drop: Added COL3F payload for color without alpha overwrite. Exposed standard color payload types in imgui.h (#143) 2017-12-08 12:48:53 +01:00
b6b940c8ee Merge branch 'master' into navigation + removed extraneous g.NavDisableMouseHover test in IsItemHovered()
# Conflicts:
#	imgui.cpp
2017-12-08 09:35:23 +01:00
e118239f69 IsItemHovered() comments (#1382) 2017-12-08 09:34:05 +01:00
553b0fcf8f Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-12-07 21:20:16 +01:00
ca0bb000ad Begin: Factored out a bit of code to CalcSizeContents() 2017-12-07 21:14:54 +01:00
f658edc72a Begin: Remove unnecessary usage of window_is_new flag, as both fields are zero on window creation. 2017-12-07 21:14:49 +01:00
45466a8cf9 Internals: BeginCombo() added dummy ImGuiComboFlags. 2017-12-07 21:14:41 +01:00
97edd42fc0 Indent(), Unindent(): Allow passing negative values. 2017-12-07 21:14:25 +01:00
7f2b9ea4c0 Begin: Minor refactor following fcf652f8ee7267055e331bf7a0133ed477816f27. Merging the if (Collapsed) block with the main one. 2017-12-07 21:14:13 +01:00
8dcc1a8a20 Begin: Sizing fixes regarding uses SetNextWindowSize() on individual axises. 2017-12-07 21:14:00 +01:00
e045eddd77 Minor tweaks. Using ImGuiAxis defines. 2017-12-07 21:13:23 +01:00
92f7bd3605 Fixed 64-bit warnings. 2017-12-07 21:06:15 +01:00
cc2c023880 Fixed scrollbar issue, followup to beda5fc5a0 and 2df8fa95df. 2017-12-07 17:04:53 +01:00
e6215b6ca0 Merge branch 'master' into navigation + merge fix
# Conflicts:
#	imgui.cpp
2017-12-07 16:42:52 +01:00
3c9f9a455e Internals: Cleanup FindBestPopupWindowPos() to be more digestible, since we are bounds to rework the logic there. No functional changes intended. FIXED TYPO. 2017-12-07 16:36:07 +01:00
8959c64b33 Internals: Cleanup FindBestPopupWindowPos() to be more digestible, since we are bounds to rework the logic there. No functional changes intended 2017-12-07 13:29:14 +01:00
abe5ad3c7a Demo: Added display for IsMouseDragging() function. 2017-12-07 13:27:55 +01:00
94bf12f14b Demo: Display better mouse cursor info for debugging backends. 2017-12-07 13:27:49 +01:00
20c7aab60c Exposed GetOverlayDrawList(). (~#545, ~#530) 2017-12-07 12:49:52 +01:00
6deb865f78 Nav: Merge fix. 2017-12-06 17:48:28 +01:00
2fc6a82665 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-12-06 17:44:40 +01:00
8f41508c52 Begin: Move the code that update the Appearing flag above the BeginDocked() branch. 2017-12-06 17:42:28 +01:00
2fc9a2e6e7 Fixed nav branch merge issue. 2017-12-06 15:20:36 +01:00
beda5fc5a0 Fixed scrollbar enable/disable calculation when size is modified programmatically. This is the generalization of the fix in 2df8fa95df. 2017-12-06 15:13:45 +01:00
ecacaf7f2d Lower-right resize grip only appears when hovered. (#822) 2017-12-06 15:13:45 +01:00
3b7e4eaf38 Comments about ImGuiWindowFlags_ResizeFromAnySide. Removed hovering color. May need its own color. (#822) 2017-12-06 15:13:45 +01:00
531e559e49 Windows can be resized from their borders when ImGuiWindowFlags_ResizeFromAnySide is set. (#822) The interaction is currently unsatisfying because we can only reach a window from its inner rectangle (because of HoveredWindow filtering). 2017-12-06 15:13:45 +01:00
e103fe8c1f Tweak four-corners resize grip code. Added ImRect::FixInverted() helper. (#822) 2017-12-06 15:13:45 +01:00
90ae1c59c4 Added ImGuiWindowFlags_ResizeFromAnySide flag and code to resize from any of the 4 corners (only 2 corners enabled). (#822) 2017-12-06 15:13:45 +01:00
fe2cf231a8 Update README.md 2017-12-06 11:18:17 +01:00
729333293c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-12-05 22:56:35 +01:00
0f119865a6 Comments about ImGuiWindowFlags_ResizeFromAnySide. Removed hovering color. May need its own color. (#822) 2017-12-05 22:53:58 +01:00
5686c72bbd Windows can be resized from their borders when ImGuiWindowFlags_ResizeFromAnySide is set. (#822) The interaction is currently unsatisfying because we can only reach a window from its inner rectangle (because of HoveredWindow filtering). 2017-12-05 22:47:20 +01:00
b9dc0caee3 Tweak four-corners resize grip code. Added ImRect::FixInverted() helper. (#822) 2017-12-05 22:44:52 +01:00
2ca4f9e862 Added ImGuiWindowFlags_ResizeFromAnySide flag and code to resize from any of the 4 corners (only 2 corners enabled). (#822) 2017-12-05 22:42:57 +01:00
364251146b Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-12-05 16:15:05 +01:00
77d1a4b636 Fixed a one frame glitch, when window claiming focus themselves on appear, the title bar wouldn't use the focused color on that frame. 2017-12-05 16:12:45 +01:00
16d9fa30b2 Merge branch 'master' into drag_and_drop 2017-12-05 09:21:07 +01:00
5f7cd7fb1c Internals: Splitter Behavior doesn't show a border. (#319) 2017-12-01 17:39:50 +01:00
be6384eb2a Style: Tweaked default WindowRounding value from 9 to 7 (#707) 2017-12-01 17:39:31 +01:00
c860a0a85c Internals: ImRect: Added IsFinite() helper. 2017-12-01 17:39:13 +01:00
aea3fe41b9 Style: Tweaks Dark and Light styles. (#707) 2017-11-30 23:15:55 +01:00
6ea744d8f4 Drag and Drop: Added DragSource from color square. Added DragTarget on ColorEdit4 widget. (#143) 2017-11-30 16:54:39 +01:00
81cbaef806 Merge branch 'master' into navigation 2017-11-29 23:49:17 +01:00
0d53c8d480 Demo: Console: Fixed incorrect positioning which was hidden by a minor scroll issue (this would affect people who copied the console code as is) 2017-11-29 23:48:32 +01:00
b513fdce48 Scrolling: SetScrollFromPosY() tweak to match change in a0d53fee81084a547bf21f46e736ea89f79fffb5 with similar desirable jump/discontinuity at each limit to skip the (ItemSpacing>WindowPadding) difference (followup to 0e5b64ecd2, #150) 2017-11-29 23:48:32 +01:00
c36e586cce Style, Scrolling: Fixed padding and scrolling asymetry where lower/right sides of a window wouldn't use WindowPadding properly + causing minor scrolling glitches. 2017-11-29 23:48:32 +01:00
a20fe279c5 Demo: Layout: Removed unnecessary BeginChild/EndChild calls 2017-11-29 23:48:32 +01:00
25c159fac8 Internals: Removed unnecessary duplicate scrolling code + added extra infos to Metrics window. 2017-11-29 21:10:59 +01:00
52e475230f Settings: Internals: Renaming. 2017-11-28 23:16:09 +01:00
2e1013a0c6 Settings: Internals: Simplifying code a bit. Creating Settings structure during first save. Windows where ImGuiWindowFlags_NoSavedSettings was late toggled will save settings correctly. (#1000) 2017-11-28 21:04:38 +01:00
7ae71e4984 Settings: Internals: Added FindSettingsHandler() 2017-11-28 21:04:38 +01:00
35eb5c5c99 Settings: Internals: Exposed FindWindowSettings(). Simplified some code. 2017-11-28 21:04:38 +01:00
963259d128 Settings: Internals: Renamed ImGuiSettingsWindow to ImGuiWindowSettings. 2017-11-28 21:04:38 +01:00
63712d5f5c Merge branch 'master' into drag_and_drop 2017-11-28 17:28:45 +01:00
9191b17218 Merge branch 'master' into navigation 2017-11-28 17:28:08 +01:00
4a43632163 Build fix 2017-11-28 17:27:54 +01:00
1a8a7c9d17 Settings: Import old style .ini file 2017-11-28 16:23:46 +01:00
c8b5b569da Examples: DirectX9: Call EndFrame(), fix for assert added in 9a44d447cd 2017-11-28 11:26:14 +01:00
e5ebe42207 Settings: Make ImGuiWindow settings always first in the list. 2017-11-28 10:49:43 +01:00
4c4f1b0224 ImVector: Added ImVector::push_front helper. 2017-11-28 10:49:43 +01:00
f3ec608c19 Settings: Initializing ImGuiSettingsWindow so external users don't end up with uncleared data. Exposed MarkIniSettingsDirty() in imgui_internal.h 2017-11-28 10:49:43 +01:00
e000ee0116 Examples: DirectX9: Handle loss of D3D9 device (D3DERR_DEVICELOST). (#1464) 2017-11-28 10:48:01 +01:00
7e2d0d734c Settings: basic refactor so that additional data structures can be loaded/saved. Parser/saver is still the minimum viable poor-man parsing. 2017-11-27 23:57:11 +01:00
d552cabd15 Settings: Internal renaming of structure and fields names. 2017-11-27 23:57:10 +01:00
77a310736d Horizontal mouse wheel support
This patch adds support for the horizontal mouse wheel in ImGui. It
affects windows that can be scrolled, as long as the Ctrl key is not
being pressed.

The scrolling speed has been set empirically so that it matches the
scrolling speed on the Firefox browser when the horizontal wheel is
used.

Internally, it adds a MouseHorizWheel to ImGuiIO, which is then used in
NewFrame to scroll the current window.

The SDL/GL2, SDL/GL3, GLFW/GL2 and GLFW/GL3 examples has been modified
to use it.
2017-11-27 20:59:05 +01:00
ade09b9e3c Settings: Basic internal refactor to have functions for saving from/to memory (not exposed) 2017-11-27 19:02:40 +01:00
532f564fd3 ImGuiTextBuffer: Renamed append() helper to appendf(), appendv() to appendfv(). Added reserve(). 2017-11-27 19:02:00 +01:00
0f955b818d Fixed DroidSans font link (#1460) 2017-11-26 11:44:52 +01:00
d9c5d72962 ImGuiStorage: Added BuildSortByKey() helper to rebuild storage from stratch. 2017-11-24 16:56:17 +01:00
46e994de4e Nav: Do not clear last navigation id stored in a hidden child window. (#787) 2017-11-24 16:55:57 +01:00
4e3c7f1557 Nav: Exposed NavInitWindow() in imgui_internal (#787) 2017-11-24 16:55:49 +01:00
f5c47faee8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-11-24 16:55:31 +01:00
ef5dd30625 Sisyphus says: tweaked comments about not using old-style OpenGL examples (#1459, #1394 etc.) 2017-11-24 09:27:45 +01:00
6bd3b45b34 Sisyphus says: tweaked comments about not using old-style OpenGL examples (#1459, #1394 etc.) 2017-11-24 09:23:17 +01:00
6d3cfba834 Add Slider hover color just like Drag
I feel like there should be hover color options for each different control instead of the grouped frame color to make it usable for everyone. This also would not reduce performance as all controls already check for hover state as required by the ImGUI::IsHoveredItem() API.
2017-11-23 12:37:11 +01:00
7763ab3fcc Menu bar: better software clipping to handle small windows, in particular child window don't have the minimum constraint added in e9a7e73bba so we need to render clipped menus better. 2017-11-22 15:58:20 +01:00
06a32a2b00 Merge pull request #1455 from elect86/patch-3
Update imgui_draw.cpp, fixed light colors order
2017-11-22 13:21:33 +01:00
1b2ec35b8d Update imgui_draw.cpp 2017-11-22 12:58:11 +01:00
b618629d99 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-11-22 12:34:59 +01:00
7d09a0ae99 Menu bar: better software clipping to handle small windows, in particular child window don't have the minimum constraint added in e9a7e73bba so we need to render clipped menus better. 2017-11-22 12:33:59 +01:00
aafa6cece5 Tweak expression to be less weird (how did that ever happen?) 2017-11-22 11:26:16 +01:00
3141df1459 Merge pull request #1454 from elect86/patch-2
Tweak
2017-11-22 11:24:20 +01:00
21b456e567 Update imgui.cpp 2017-11-22 11:19:52 +01:00
68b26b4867 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-11-22 11:04:00 +01:00
176d8fbe74 Fixed unreferenced variable warnings. 2017-11-22 11:02:42 +01:00
302757447a Internals: Added SplitterBehavior(). (#319) 2017-11-20 19:41:17 +01:00
195abc3d17 Begin: Fix border size latch when rounding uses Child or Popup value. (#707) 2017-11-20 15:19:54 +01:00
2543807e56 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-11-20 13:54:06 +01:00
3f5b2a3fe3 Exposed ImDrawCornerFlags, replaced occurences of ~0 with an explicit ImDrawCornerFlags_All. Inversed BotLeft (prev 1<<3, now 1<<2) and BotRight (prev 1<<2, now 1<<3). 2017-11-20 13:53:16 +01:00
31683cfe34 ImDrawList::AddImageRounded: removed PrimDistributeUV declaration, fixed coding style, restored argument order from original PR. (#845) 2017-11-20 13:31:40 +01:00
3c5e64db78 Demo: Tweaked Image() code. 2017-11-20 13:30:25 +01:00
7f447c8270 Color picker: Tweak vertex shading code, since we aren't shading between PrimReserve and PrimVert the code can be expressed more naturally. (#346) 2017-11-20 13:16:57 +01:00
ba095f81a5 Merge branch '2016-08-rounded-image' of https://github.com/thedmd/imgui into thedmd-2016-08-rounded-image 2017-11-20 13:07:14 +01:00
8c0f2e4946 Added comment to help people dealing with 58345b11e1 breakage (#707) 2017-11-20 13:05:50 +01:00
e996286c38 Todo list update 2017-11-20 12:40:38 +01:00
79f07f6ff0 Add AddImageRounded() to ImDrawList 2017-11-19 21:56:46 +01:00
8b2d449b16 Add ShadeVertsLinearUV() 2017-11-19 21:56:36 +01:00
dc2768503f Fix for drag and drop branch. 2017-11-19 16:24:17 +01:00
92212b17aa Merge branch 'master' into drag_and_drop 2017-11-19 16:23:37 +01:00
9848a7023b Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
2017-11-19 16:21:21 +01:00
28a31997b7 Style Editor: Simplified settings also show PopupBorderSize as a checkbox. (#707, #1019) 2017-11-19 16:03:42 +01:00
abbf836fd0 Style, Begin: removed ImGuiWindowFlags_ShowBorders window flag. Borders are now fully set up in the ImGuiStyle structure (see e.g. style.FrameBorderSize, style.WindowBorderSize). Use ImGui::ShowStyleEditor() to look them up. (#707, fix #819, #1031, ref #1019, ref #447) 2017-11-19 15:56:51 +01:00
c433bc971f Reorder fields for consistency. 2017-11-19 14:58:10 +01:00
f7fe824805 Style: Tweaked border settings to homogenize a little how they look over different backgrounds. (#707) 2017-11-19 13:55:38 +01:00
39137ccc3e Style: renamed ImGuiCol_ChildWindowBg to ImGuiCol_ChildBg. (#707) 2017-11-19 13:52:40 +01:00
022f8c2342 fixed incomplete replacement of unsigned short with ImWchar in interface of ImFont::FindGlyph 2017-11-19 12:44:23 +01:00
9886b09a0a Minor tweak, removed extraneous empty destructor. 2017-11-19 12:42:17 +01:00
e605f21797 TreePush with zero arguments was ambiguous. Resolved by making it call TreePush(const void*) 2017-11-19 12:36:14 +01:00
9a44d447cd NewFrame() now asserts if neither Render or EndFrame have been called. Exposed EndFrame(). Made it legal to call EndFrame() more than one. (#1423 etc.) 2017-11-19 12:06:45 +01:00
538a704143 NewFrame(): using literal strings in the most-frequently firing IM_ASSERT expression to increase the odd of programmers seeing them (especially those who don't use a debugger). 2017-11-19 12:00:07 +01:00
9289e8055c Merge pull request #1445 from franciscod/uninitialized_o3_werror
ImFontAtlas: Fix maybe-uninitialized warning.
2017-11-19 00:53:35 +01:00
4cdd998be8 Demo: Fix warning "format not a string literal and no format arguments" for over-zealous compilers settings. (#1450, #1451) 2017-11-19 00:49:23 +01:00
d323e8cca2 Fixed Style merge for nav branch (#707, #787) 2017-11-19 00:47:00 +01:00
d211a0e338 Merge branch 'master' into navigation (with style breakable)
# Conflicts:
#	imgui.cpp
#	imgui_draw.cpp
2017-11-19 00:39:37 +01:00
4022ada843 Merge branch 'master' into drag_and_drop 2017-11-19 00:36:32 +01:00
4daf377c9b Added comment about TextUnformatted(). (#1450) 2017-11-19 00:32:47 +01:00
8a7f03cbf9 Combo: Offset popup position by border size so that a double border isn't so visible. (#707) 2017-11-19 00:29:59 +01:00
d7af1a218e Style: Added PopupRounding setting. (#1112) 2017-11-19 00:29:29 +01:00
067605052d Fix IsItemHovered() returning true for non-title bar hidden items that are clipped due to window collapsing logic. Fix 27fd1b913b. (#823) 2017-11-19 00:29:29 +01:00
6f7b1bf2e1 Internals: Renamed ImGuiWindow::Accessed to WriteAccessed. 2017-11-19 00:29:29 +01:00
0e4f1df1a4 Style: Made changes to Classic style (!!!). Tweaked Dark style. (#707) 2017-11-19 00:29:29 +01:00
0a61b7195c Style: Added a default StyleColorsLight(). (#707) 2017-11-19 00:29:29 +01:00
e7e81b265d Demo: Tweaks. 2017-11-18 23:44:16 +01:00
58345b11e1 Style: Removed ImGuiCol_ComboBg in favor of combo boxes using ImGuiCol_PopupBg for consistency. (#707) 2017-11-18 23:44:16 +01:00
1c41603b31 Style Editor: Using local storage so Save/Revert button made some more sense without code passing its storage. Tweaked layout, added horizontal scroll bar, Fixed Save/Revert button to be always accessible. (fix #1211) 2017-11-18 23:44:16 +01:00
c1b5eab868 Style Editor: Sneakily adding a combo box to change colors (#707) 2017-11-18 23:18:18 +01:00
331eac511e Style: Dark: Tweaks + setting BorderShadow correctly. 2017-11-18 19:08:52 +01:00
29e0078b66 Internals: Window minor internal renaming + added WindowRounding latch. 2017-11-18 19:06:11 +01:00
bd4bc929ce Style: renamed style.ChildWindowRounding to style.ChildRounding, ImGuiStyleVar_ChildWindowRounding to ImGuiStyleVar_ChildRounding. 2017-11-18 18:28:21 +01:00
4e62118b61 Merge pull request #1448 from codecat/minor-fixes
Examples: DirectX: fix wrong comment in dx implementation headers
2017-11-18 14:22:53 +01:00
979fe30a6f Fix wrong comment in dx implementation headers 2017-11-18 13:56:59 +01:00
da2be7bbdc Style: ScaleAllSizes() helper rounds down every values so they are aligned on integers. 2017-11-17 21:29:37 +01:00
f5871c0b92 fix uninitialized atlas packing context 2017-11-16 21:45:21 -03:00
834fa52c8e Columns: Added ImGuiColumnsFlags_GrowParentContentsSize to internal API to restore old content sizes behavior. (#1444, #125) 2017-11-16 17:34:34 +01:00
7746dd104c Merge branch 'master' into drag_and_drop 2017-11-16 13:28:22 +01:00
44c590393c Merge branch 'master' into navigation 2017-11-16 13:28:10 +01:00
29d962069d Internals: Updating condition/allow flags with a function. 2017-11-16 13:28:01 +01:00
4ad414c8d4 Internals: Window: Store whether the windows has a close button (we need that info for window/tabs dropping preview calculation) 2017-11-16 13:23:50 +01:00
7c4be0a000 Internals: Added BringWindowToFront(), BringWindowToBack() helpers. 2017-11-16 13:11:49 +01:00
6817f3a3d9 Merge branch 'master' into navigation 2017-11-15 23:44:50 +01:00
e9a7e73bba Windows with MenuBar have a larger minimum height to avoid artefacts (I fixed most of the vertical/horizontal artefacts, but the ones in rounded corners were too hard to fix). 2017-11-15 23:42:18 +01:00
f36037b384 Menu: Fixed minor rendering issues on the right size with rounded window when resizing a window small. 2017-11-15 23:38:17 +01:00
9b82d9fbef Scrollbar: Minor graphical fix for when scrollbar don't have enough visible space to display the full grab. 2017-11-15 23:14:23 +01:00
f5bdf443c9 Minor comments, tweaks 2017-11-15 22:37:43 +01:00
5ea6e80da1 Make it possible to use SetNextWindowPos() on a child window. Useful internally. 2017-11-15 22:23:33 +01:00
5027311e7f Drag and drop: Standardizing payload types as defines. (#143) 2017-11-15 22:23:21 +01:00
44b761b308 Merge branch 'master' into drag_and_drop 2017-11-15 14:41:27 +01:00
27fd1b913b Made it guaranteed by API that after calling Begin() the last Item represent the title bar. (#823) 2017-11-15 14:35:45 +01:00
ae060b1d67 Merge branch 'master' into drag_and_drop 2017-11-15 10:24:54 +01:00
64031852de Merge branch 'master' into navigation 2017-11-14 23:17:58 +01:00
64e79035d5 Scrollbar flicker fix for menus/popups (fixes 4d00dd8326 and 2df8fa95df). Hopefully right this time. 2017-11-14 23:17:28 +01:00
6001d9c7a4 Columns: Clipping columns borders on Y axis on CPU because some GPU drivers appears to be unhappy with triangle spanning large regions (not sure why tbh). (#125)
Demo: Columns: Adding a billion of extra lines and using clipper.
2017-11-14 22:41:54 +01:00
0858c3d7cb Demo: Custom Rendering: Fixed clipping rectangle extruding out of parent window. 2017-11-14 22:21:38 +01:00
ffad688fc8 Drag and Drop: Added payload->IsPreview() to user can render their custom preview while handling overlapping drop targets. (#143) 2017-11-14 22:11:43 +01:00
852ece3a0e Fixed build (3e06450d27 not meant for master branch, but ok) 2017-11-13 16:04:03 +01:00
2275cb8b83 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-11-13 15:19:43 +01:00
3e06450d27 Internals: Added ArrowButton() helper. 2017-11-13 15:18:31 +01:00
7908cce25f Drag and Drop: Added internal BeginDragDropTargetCustom() convenient to avoid submitting dummy ItemAdd. (#143) 2017-11-13 15:17:41 +01:00
4d00dd8326 Fixed scrollbar flickering on/off when uncollapsing a window (fixes 2df8fa95df) 2017-11-13 15:15:48 +01:00
30bf40195b io.OptNoCursorBlink -> io.OptCursorBlink (#1427) 2017-11-12 16:06:44 +01:00
669498ff26 Added io.OptNoCursorBlink option to disable cursor blinking. (#1427). Renamed io.OSXBehaviors to io.OptMacOSXBehaviors. Should affect users as the compile-time default is usually enough. (#473, #650) 2017-11-12 16:03:09 +01:00
a1c736fa6a Update README.md 2017-11-11 18:22:00 +01:00
631bd8a9f8 Added bindings 2017-11-11 18:12:33 +01:00
161670418b Update documentation for extra fonts 2017-11-11 16:20:34 +01:00
9daac64ff8 Clean g.WindowsById storage on shutdown. 2017-11-11 10:01:50 +01:00
06075f20ba Merge branch 'master' into navigation 2017-11-10 11:42:08 +01:00
ba09de3a39 Begin: Fixed appending into a child window with a second Begin() from a different window stack querying the wrong window for the window->Collapsed test. 2017-11-10 11:38:01 +01:00
8451855a30 ButtonBehavior: Fixed ImGuiButtonFlags_AllowOverlapMode to avoid temporarily activating widgets on click before they have been correctly double-hovered. (#319, #600) 2017-11-09 20:20:02 +01:00
4b94738c7e Drag and Drop: Drop target rectangle goes out of clipping range (#143) 2017-11-09 20:18:17 +01:00
b1653cd361 Drag and Drop: Allow NULL payload (since type only can be useful). (#143) 2017-11-09 20:18:05 +01:00
a297cbafdb Merge branch 'master' into navigation 2017-11-08 23:17:14 +01:00
2df8fa95df Fixed vertical scrollbar flickering/appearing, typically when manually resizing and using a pattern of filling available height (e.g. full sized BeginChild). THIS IS A GREAT FIX, this glitch was nasty and annoying (and yet somehow nobody reported it?). Hopefully haven't broken anything else... 2017-11-08 23:17:08 +01:00
a4cc3d4637 Minor tweaks/comments. Note that the reordering the one subtraction caused subtle havoc before the patch in 9ac8820ee2. 2017-11-08 22:36:31 +01:00
9ac8820ee2 Fixed non-pixel aligned bounding box of window resize grip, / which triumphally led to any re-arrangement of operations inside the resize grip code outputting non-exact size_target values which led to unstable window position because clamping code uses size in a subtraction, etc etc. Lovely how a whole system can be made to act weird with a single bad input. 2017-11-08 22:32:22 +01:00
b6504b8eee Drag and drop: Handle overlapping drag target priorities given their surface, which appears to make most sense for drag and drop operations. 2017-11-08 15:47:52 +01:00
2ab27be3de Child window with MenuBar use regular WindowPadding.y so layout look consistent in child or in a regular window. 2017-11-07 22:23:20 +01:00
41862b8c0e ButtonBehavior: Fixed ImGuiButtonFlags_NoHoldingActiveID from incorrectly setting ActiveIdClickOffset, which probably have no known effect, but it is more correct this way. (#1418) 2017-11-07 16:41:58 +01:00
aae52522c3 Internals: Remove requirement to define IMGUI_DEFINE_PLACEMENT_NEW (#1103) 2017-11-07 14:06:02 +01:00
1870738880 LowerBound() minor tweaks 2017-11-07 14:05:48 +01:00
571b08f315 Internal: FindWindowByName() faster and doesn't touch every windows 2017-11-07 13:59:55 +01:00
8e6adc78af Examples: Constrained Resize: Added more test cases (for #1417) 2017-11-07 11:38:39 +01:00
2c7ba21417 Fixed auto-resize allocating too much space for scrollbar when SizeContents is bigger than maximum window size (fixes c0547d358d) (#1417) 2017-11-07 11:37:38 +01:00
0d4c320f88 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_draw.cpp
2017-11-06 23:58:28 +01:00
f0b4097c54 Begin: Simplified code and fixed a bug where appending into a window a second time (from a remote window) would incorrectly overwrite RootWindow with the current window in the stack. Our docking code uses this pattern. 2017-11-06 23:55:40 +01:00
de1e7dc088 Drag and Drop: Moved internal fields out of public sight. (#143) 2017-11-06 20:04:10 +01:00
8b725c94cb Drag and Drop: Rework internal to allow overlapping targets (#143) 2017-11-06 19:39:23 +01:00
16a5da9521 RenderTriangle() minor tweak to align Left/Right and Up/Down arrow extents visually 2017-11-03 20:20:25 +01:00
553bdeedf7 Drag and Drop: Made it legal to not call SetDragDropPayload() between BeginDragDropSource() and EndDragDropSource(). (#143) 2017-11-02 18:30:46 +01:00
3461a2f296 Merge branch 'master' into drag_and_drop 2017-11-02 18:06:04 +01:00
982ce50b37 IsWindowHovered() returns true when moving window (#1382, #1404) 2017-11-02 16:44:32 +01:00
ff4d4ca651 IsWindowHovered(): Added ImGuiHoveredFlags_FlattenChilds flag. Made IsRootWindowOrAnyChildHovered() obsolete in favor of IsWindowHovered( ImGuiHoveredFlags_FlattenChilds) (#1382, #1404) 2017-11-02 16:44:24 +01:00
803ac3a5c6 IsWindowHovered() Fix behavior when an item is active to use the same logic as IsItemHovered() (#1382, #1404) 2017-11-02 16:23:03 +01:00
1e7cc23867 Merge branch 'elect86-patch-1' 2017-11-02 10:41:31 +01:00
2a3a25e792 Reordered fields in other Style functions (#1409) 2017-11-02 10:41:21 +01:00
c547b97e4e Merge branch 'patch-1' of https://github.com/elect86/imgui into elect86-patch-1 2017-11-02 10:40:01 +01:00
78f9511f4d Merge pull request #1410 from elect86/master
Fixed a comment
2017-11-01 17:58:42 +01:00
6fb43f2011 Update imgui.h 2017-11-01 17:56:03 +01:00
66f42324ad Drag and Drop: Added ImGuiDragDropFlags_SourceNoHoldToOpenOthers flag. 2017-11-01 17:25:42 +01:00
db190c16f6 Update imgui_draw.cpp 2017-11-01 16:48:56 +01:00
63f6f2dd13 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-11-01 15:09:23 +01:00
fba704bf5d Examples: Added a bunch of comments/referencs related to io.WantCaptureMouse, io.WantCaptureKeyboard (#1262, #1237, #1219, #635, #1058, #1051, #912, #533, #703, #446, #459, #364, #213, #52, and more) 2017-11-01 14:24:09 +01:00
59323b54da Demo: Comments (#1408) 2017-11-01 12:57:12 +01:00
6ab20ff9bf Minor tweaks to the user guide. 2017-11-01 12:33:58 +01:00
e55caf0b95 Merge pull request #1402 from elect86/patch-1
Minor fix typo
2017-10-30 09:51:49 +01:00
7f06d385a1 Added assertions and comments for incorrect use/understanding of IsWindowFocused() etc. functions 2017-10-30 09:50:54 +01:00
9e3f9fc2dd Update imgui.cpp 2017-10-30 09:35:42 +01:00
5956fff7e2 Drag and Drop: ImGuiButtonFlags_PressedOnDragDropHold focuses the target window. 2017-10-30 00:10:05 +01:00
a810619555 Drag and Drop: Added support for drag and drop hold-long-to-open for CollapsingHeader() and TreeNode(). Open only! 2017-10-30 00:03:04 +01:00
1d7d8f8574 Merge branch 'master' into drag_and_drop 2017-10-29 23:49:24 +01:00
b13d281356 Maintaining ActiveIdTimer and HoveredIdTimer (the later is useful for drag and drop, both will be of course for creators of custom widgets) 2017-10-29 23:49:01 +01:00
d46772b429 Comments 2017-10-29 23:14:17 +01:00
0e775807b4 Drag and Drop: Added a mechanism to allow widgets with no identifiers (such as Text/Image) to be used with BeginDragDropSource() given the explicit ImGuiDragDropFlags_SourceAllowNullID flag. 2017-10-29 23:10:44 +01:00
acf78da742 Drag and drop: moved to imgui.h 2017-10-29 21:37:14 +01:00
b5f714e9f9 Drag and Drop: made BeginDragDropSource() clear the IsItemHovered() by default, added a flag to keep it. 2017-10-29 21:31:49 +01:00
c5536e49ef Drag and drop API experiment 2017-10-29 21:15:02 +01:00
fd88bc270a Merge branch 'nProtect-master' 2017-10-29 11:29:21 +01:00
53f9e28c77 GetGlyphRangesThai(): removed extraneous codepoints (#1396) 2017-10-29 11:28:29 +01:00
ae3dc66214 Merge branch 'master' of https://github.com/nProtect/imgui into nProtect-master 2017-10-29 11:24:25 +01:00
f793562b4e TODO 2017-10-29 11:23:38 +01:00
36f00811b9 Examples: Comments to guide people unfamiliar with the librairies used. 2017-10-28 19:28:22 +02:00
cb38caeda4 Examples: Added more comments near the fonts loading section, to catch common questions and errors (e.g. #1397, #1366, #1341, #1222, #1193, #1115, #951, etc.) 2017-10-28 18:21:44 +02:00
3185a3a697 Add missing thai punctuations 2017-10-28 16:59:39 +07:00
17dd8e7c30 Merge branch 'master' into navigation 2017-10-27 23:01:54 +02:00
b9ebb34a04 Nav: ColorButton: Fixed a case of not using local 'hovered' flag directly, messes with some of my drag and drop work, and I can't find/understand the reason why this was left as is (there _was_ a reason at the time but it appears to be obsolete now?) 2017-10-27 20:54:48 +02:00
f962ca0b01 ColorTooltip: Resize ColorButton to align better with text, now that ColorButton provides a text baseline (0260fdd1c6) 2017-10-27 20:36:51 +02:00
d55b69ad6e Styles: Nav tweaks. 2017-10-27 20:06:45 +02:00
edafbcd630 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-10-27 20:04:51 +02:00
c503a50cff Styles: Moved Classic colors code to imgui_draw.cpp. Sneakily added a StyleColorsDark() function. 2017-10-27 20:01:30 +02:00
77df1ba9e0 Version 1.53 WIP 2017-10-27 19:54:56 +02:00
b422f35872 IO: Tracking extra mouse dragging data which is convenient for implementating various manual drag and drop patterns. 2017-10-27 18:21:30 +02:00
c0b366b316 Merge branch 'master' into navigation
# Conflicts:
#	imgui.h
2017-10-27 17:27:53 +02:00
9f200d10d5 Version 1.52 2017-10-27 17:10:41 +02:00
cc78e9a213 Merge branch 'master' into navigation 2017-10-27 16:46:03 +02:00
267ea506de Begin: Fix for unused "Debug" (fix for 3b83cd24f5 ) 2017-10-27 16:45:56 +02:00
5afee1c6f3 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2017-10-27 16:42:06 +02:00
8dd7648db2 Comments 2017-10-27 16:41:22 +02:00
ccdb58b17e Internal: Added ImVec4 operators 2017-10-27 16:40:04 +02:00
3b83cd24f5 Begin: Moved some code inside of the big if (first_begin_of_the_frame) scope 2017-10-27 16:39:55 +02:00
3656f2c769 NewFrame: Allow MovedWindow setting the ImGuiWindowFlags_NoInputs after moving has started in order to be able to detect windows below it, which is useful for e.g. docking mechanisms. 2017-10-27 16:39:23 +02:00
a6edd10ee6 NewFrame: Removed unnecessary call to FindHoveredWindow() and simplified code (went through this multiple times, hopefully haven't broken anything) 2017-10-27 16:38:14 +02:00
6243252d5a Internal: BeginTooltipEx() in imgui_internal.h 2017-10-27 16:21:12 +02:00
f10a1d7b9e Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-10-27 15:53:59 +02:00
d42f6bb6cc Merged a bit of code from Navigation branch to ease further merging (InnerRect is currently not required in the Master branch) 2017-10-27 15:52:45 +02:00
c432fcf2bb Minor renaming. 2017-10-27 12:01:52 +02:00
a6ff14d66e Exposed IM_ARRAYSIZE() in imgui.h 2017-10-26 16:12:53 +02:00
c5027d4fa1 Examples: Extra clarification for the 100th person who insist on using the OpenGL2 code in spite of existing documentation leaning against it. (#1394) 2017-10-25 20:55:15 +02:00
549f9e3f03 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2017-10-25 16:37:10 +02:00
daef33e268 Comments about mouse setup and clearing HoveredWindow when mouse down isn't owned by imgui (will affect some future hovered test and drag'n drop patterns) (#143, #1382, #1392) 2017-10-25 11:01:41 +02:00
4faf99eff5 Added most basic form of Disabled flag to disable interactions (but visuals aren't altered), in imgui_internals.h, undocumented/unsupported (#211, #1012) 2017-10-25 09:28:54 +02:00
fc25881207 Merge branch 'master' into navigation 2017-10-24 21:13:24 +02:00
efcd53a0c3 Removed direct dependency on sprintf() in imgui.cpp (#1038)
(NB: imgui_demo stills uses it)
2017-10-24 20:57:41 +02:00
1f3372b7f1 ImFormatString, ImFormatStringV(): clarifying specs so that passing a NULL buffer should return the desired length. (#1038) 2017-10-24 20:48:29 +02:00
8fd5620277 Renamed IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS to IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS for consistency. (ref #238, #520, #738) 2017-10-24 20:23:42 +02:00
7d2cd0e6ff Added IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS support in imconfig.h (#1038) 2017-10-24 20:19:32 +02:00
70cb427469 Add missing CloseClipboard call 2017-10-24 20:12:42 +02:00
bc447bc0a4 ImFontAtlas: Fixed memory leak if stbtt_InitFont() returned false. (#1391) 2017-10-24 16:08:05 +02:00
d513546325 Merge branch 'master' into navigation 2017-10-24 15:49:01 +02:00
5b062c4c29 Fixed typos 2017-10-24 15:26:04 +02:00
d2c65aa3e8 Examples: DirectX9/10/11: Tweak usage of SetCapture/ReleaseCapture. (#1375)
ps: DirectX 12 example (#302) may want to adopt that as well.
2017-10-24 14:48:00 +02:00
0260fdd1c6 ColorButton: As a small convenience, provide a text baseline. 2017-10-24 14:38:32 +02:00
e9ff7162bc ColorButton: Fixed rendering color button with a checkerboard if the transparency comes from the global style.Alpha and not from the actual source color. 2017-10-24 10:43:41 +02:00
de72e9cc87 Internals: ImLerp() helper for ImVec4 2017-10-23 17:22:00 +02:00
f6ff373b22 Nav: #define IMGUI_HAS_NAV to ease sharing code across branches of imgui 2017-10-23 14:54:23 +02:00
97bf2131e2 Fixed calling SetNextTreeNodeOpen() on a collapsed window leaking to next frame. 2017-10-23 14:37:47 +02:00
20983773f1 Nav: MainMenuBar now releases focus when user gets out of the menu layer. WindowingTarget when applying focus to a window with only menus automatically sets the layer. (#787)
This is enough for basic mouse/gamepad usage, but 1- previous window gets an unfocused title bar color temporarily, 2- generaly for gamepad and especially keyboard we need much more to get this done right
2017-10-23 12:38:39 +02:00
025d4f0c97 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-10-23 12:34:46 +02:00
e7922b3fa0 Factorized some code (+ declared as static function without namespace, a pattern with the Nav branch has started to use) 2017-10-23 12:34:15 +02:00
2ef2c104a1 Begin: Minor tweaks 2017-10-23 11:36:43 +02:00
be12f8c55d Nav: Fixed handling of ImGuiNavInput_KeyMenu so it doesn't set g.NavWindowingTarget at all, reducing size effects + handling menu layer toggle on Alt Release (#787) 2017-10-23 11:26:52 +02:00
6f0aa766e1 Nav: Added internal ImGuiNavReadMode_Released test for key releases. 2017-10-23 11:26:30 +02:00
d769e2515a Merge branch 'master' into navigation 2017-10-23 10:05:36 +02:00
50f5be9266 Examples: GLFW+GL2/GL3: Minor tweaks, comments. 2017-10-23 10:04:38 +02:00
d6a9956781 Examples: DirectX9/10/11: Added WM_SYSKEYDOWN / WM_SYSKEYUP handlers so e.g. VK_MENU can be read. 2017-10-23 10:01:18 +02:00
c14a66970b Examples: DirectX9/10/11: Renamed WndProc handler to use a generic Win32 name + returning 0 to all messages is more correct. 2017-10-23 09:57:59 +02:00
cb10da02f9 Merge branch 'Gargaj-patch-1' 2017-10-23 09:47:49 +02:00
a96f095deb Examples: DirectX10, DirectX11: Using SetCapture/ReleaseCapture to get correct behavior (#1375)
ps: DirectX 12 example (#302) may want to adopt that as well.
2017-10-23 09:46:49 +02:00
3e0765ee22 Examples: DirectX9: Using SetCapture/ReleaseCapture to get correct behavior (#1375) 2017-10-23 09:43:30 +02:00
e03198bb0f Fixed compilation for #1375 + coding style fixes. 2017-10-23 09:43:30 +02:00
c36e7fae93 Merge branch 'patch-1' of https://github.com/Gargaj/imgui into Gargaj-patch-1 2017-10-23 09:07:01 +02:00
1bc1751670 MenuItem(): Tweaks to mimic exact spacing of BeginMenu() when inside a menu bar, which is a little misleading imho but may be useful. (#1387) 2017-10-22 10:56:37 +02:00
b177f2432d MenuItem(): Tweak to not draw over all horizontal space when in horizontal layout mode. (#1387) 2017-10-22 10:36:22 +02:00
b52e207758 Merge branch 'inolen-atlas_build_clear_font' 2017-10-22 10:25:08 +02:00
7f880674e5 Font: Renamed ImFont::Clear() to ImFont::ClearOutputData() for consistency with what ImFontAtlas does. DisplayOffset is set by constructor but not reset by ClearOutputData. (#1349) 2017-10-22 10:24:56 +02:00
fce41d0b55 Demo: Fixed Fonts "set as default button" not having collading id on collapsed nodes. 2017-10-22 10:21:49 +02:00
08e411c310 Merge branch 'atlas_build_clear_font' of https://github.com/inolen/imgui into inolen-atlas_build_clear_font 2017-10-22 10:17:28 +02:00
5fa81f2a26 Nav: Added ImGuiNavInput_KeyMenu aside from ImGuiNavInput_PadMenu as it is one differenciator between pad and keyboard that's very annoying with the keyboard.
Remove the move/resize behavior that appears than holding the button for a while. (#787)
2017-10-20 22:12:10 +02:00
1c5b3fb1d2 Merge branch 'master' into navigation 2017-10-20 21:17:57 +02:00
f7259e60ee Comments 2017-10-20 21:17:51 +02:00
23b9060468 Nav: Honoring ImGuiItemFlags_NoNav which is used by color picker (#787) 2017-10-20 20:35:39 +02:00
e4bb9102f9 Merge branch 'master' into navigation 2017-10-20 20:32:17 +02:00
6ab737a4bb Popups: Fixed right-click to close popups not handling modal windows properly. (~#439) 2017-10-20 20:31:01 +02:00
aca23fd3f0 Popups: similarly to previous commit, we fix reopening a popup within a popup stack from truncating the whole stack. This is done by properly refocusing the lower level popup. (~#439) 2017-10-20 19:25:34 +02:00
59a89774d7 Popups: fixed CloseInactivePopups() so that right-clicking to close one level of popups in a popups stack won't close the whole stack. This is done by properly refocusing the lower level popup. Fixes 87ae40843c (~#439) 2017-10-20 19:24:12 +02:00
43df7eb5ea Added OpenPopupOnItemClick(); helper which mimic BeginPopupContextItem() but doesn't do the open.
Made the color popups uses this standard function so they handle reopening a context menu.
2017-10-20 18:56:31 +02:00
0ea66dc260 Fixed bad merge from Master 2017-10-20 18:16:53 +02:00
1172ff62e1 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_demo.cpp
#	imgui_internal.h
2017-10-20 18:10:07 +02:00
3cc10d25a9 BeginPopupContextItem(), BeginPopupContextWindow(): Using newly introduced IsItemHovered() flags to allow reopening another context menu (over same or not same item) with right-click. (#439) (+1 squashed commits) 2017-10-20 18:02:52 +02:00
695ea45fca IsWindowHovered(): Changed default behavior to now return false is a widget from another window is active + Added support for ImGuiHoveredFlags_AllowWhenBlockedByActiveItem. (relate to drag'n drop idoms: #143) 2017-10-20 17:59:48 +02:00
564ff2dfd3 IsItemHovered(), IsWindowHovered(): added flags to enable various and more specific behavior. Will enable improvements for popups/context menus and drag'n drop. (relate ~#439, #1013, #143, #925)
The legacy confusing IsItemRectHovered(), IsWindowRectHovered() can be completely removed now.
Changed IsWindowHovered() behavior with default parameter: it now return false is the window is blocked by a popup.
Demo: Added tests for those two functions.
2017-10-20 17:52:22 +02:00
d29a6a5a5a Moved IMGUI_DISABLE_OBSOLETE_FUNCTIONS block lower in the imgui.h file so obsolete functions can use flags. Also sane to quarantine them outside of the respectable area. 2017-10-20 17:29:52 +02:00
e6f06627e9 Made the ImGuiWindowFlags_NoMove flag inherited from parent to child, so in a setup with RootWindow (no flag) -> Child (NoMove flag) -> SubChild (no flag) user won't be able to move the root window by clicking on SubChild. (#1381) 2017-10-20 16:13:13 +02:00
3b485cda51 Fixed a bug allowing to move a _NoMove window from a child that doesn't have the flag. (#1381)
broken by e56eba44fe (#1337)
2017-10-20 16:09:24 +02:00
87ae40843c Popups: popups can be closed with a right-click anywhere, without altering focus under the popup.(~#439) 2017-10-20 13:26:39 +02:00
853018dd4d Popups: Fixed a bug introduced in 1a35766356 which made the BeginPopupContextXXX functions create popups without border. (nb: all that border mess is going away in styling clean up) 2017-10-20 13:21:42 +02:00
5f7299e15a Refactor EndFrame() code that process focusing window with left mouse button. This commit should be no-op. 2017-10-20 13:07:57 +02:00
2a32a2e662 Demos: Tweaks of popups/context/menus section. 2017-10-20 12:38:48 +02:00
e384078d7a IO: reordering some supposedly private fields. 2017-10-19 22:49:36 +02:00
51eed2f257 Merge branch 'master' into navigation 2017-10-19 19:42:27 +02:00
5b699517d4 Internals: PaintVerts** renamed to ShadeVerts**, moved to imgui_draw.cpp and exposed in imgui_internal.h (+1 squashed commits) 2017-10-19 19:42:19 +02:00
22977ffedb Documentation: Extra comments + tweaks to make usage of long-line more bearable. 2017-10-19 19:30:46 +02:00
d3c2e904d8 Internals: Added ImLinearSweep() helper. 2017-10-19 19:29:59 +02:00
938f1b720f Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-10-19 00:04:53 +02:00
370a48c10b Internals: RenderCollapseTriangle() -> RenderTriangle(), takes a ImGuiDir 2017-10-18 23:46:16 +02:00
073dd60b4b Merge branch 'master' into navigation 2017-10-18 19:55:34 +02:00
a03093b2d4 CollapsingHeader(bool*) variant: fixed for IsItemHovered() to work properly in the nav branch.Basically the close button now has to use ItemAdd() to be navable into, which overwrite the IsItemHovered data. (#600, #787) 2017-10-18 19:55:08 +02:00
29a652adee CollapsingHeader(bool*) variant: fixed for IsItemHovered() to work properly in the nav branch.Basically the close button now has to use ItemAdd() to be navable into, which overwrite the IsItemHovered data. (#600, #787) 2017-10-18 19:51:32 +02:00
a126c702d9 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2017-10-18 13:09:28 +02:00
ef3f87eec5 Internals: ButtonBehavior: made ImGuiButtonFlags_PressedOnClick and ImGuiButtonFlags_PressedOnDoubleClick set the click offset correctly + hold on g.ActiveId so Held state can be reported. Added ImGuiButtonFlags_NoHoldingActiveId flag to disable the later. 2017-10-18 13:08:25 +02:00
1c4af303bf Internals:Helpers: Added ImSwap(int,int), exposed ImStrncpy(). 2017-10-18 13:08:14 +02:00
bf778ebb7e Checkbox: Using checkmark. MenuItem: Tweaked checkmark, thicker. 2017-10-18 13:06:49 +02:00
d96b6ecf88 Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
2017-10-17 16:20:35 +02:00
03b76bf05b Begin: Marked 5 parameters version of Begin() as obsolete. Now waiting for a riot to happen! 2017-10-17 16:19:21 +02:00
78a85ba3fe Begin: Work toward obsoleting the 5-arguments Begin() overload. Internal BeginEx() becomes the normal public Begin() again! (4) 2017-10-17 16:15:46 +02:00
2739b6ebcd Begin: Work toward obsoleting the 5-arguments Begin() overload. Removed bg_alpha from internal BeginEx(). (3) 2017-10-17 16:14:20 +02:00
4aa9d2089d Begin: Work toward obsoleting the 5-arguments Begin() overload. Removed size_on_first_use from internal BeginEx(). (2) 2017-10-17 15:51:20 +02:00
55d873875e Begin: Work toward obsoleting the 5-arguments Begin() overload. (1) 2017-10-17 15:47:55 +02:00
839067fda9 Capture/release window in DX9 implementation
This helps a lot when the user drags a slider but carries the cursor offscreen before releasing the button - without the capturing, the slider will "stick" to the mouse cursor even after the button has been released. (This should generally be added to all Windows implementations - I won't mind doing it if you think it's a good idea.)
2017-10-17 12:37:21 +02:00
1a35766356 BeginPopupContextItem() now supports a NULL string identifier and uses the last item ID if available. For interactive items (that have an ID) this works! For non interactive items we assert. 2017-10-16 23:37:12 +02:00
c76f014292 Fix IsItemHovered() issue on child by temporarily reverting 344d48be31. This is not the ideal solution. (Fix #1370) 2017-10-16 16:41:09 +02:00
af565ea828 Nav: InputTextMultiline: Fixed navigation/selection. Disabled selecting all when activating a multi-line text editor. (#787) 2017-10-16 02:41:28 +02:00
7ea52ac1e4 Nav: InputTextMultiline: Fixed navigation/selection. Disabled selecting all when activating a multi-line text editor. (#787) 2017-10-16 02:30:59 +02:00
82a27fd3aa Nav: InputText: Fixed using Up/Down history callback feature when Nav is enabled (#787) 2017-10-16 02:06:42 +02:00
b70c2fa887 Nav: Internals: Moved some internal code to namespace, comments 2017-10-16 00:46:23 +02:00
ae1866c424 Nav: NavProcessItem() updates current NavLayer. Basically we're hearing toward rebuilidng nav info from an id. (#787). 2017-10-16 00:38:42 +02:00
97851f7376 Nav: NavProcessItem() computes window-relative rectangle using own Window rather than NavWindow. Not sure what it may mean for child-flattened-nav (disabled). (#787) 2017-10-16 00:36:31 +02:00
7d14262202 Nav: SetFocusID() update NavWindow and NavRectRel just as we get them. Needed by upcoming commit, committing separately as I'm curious if it has any side-effect. (#787) 2017-10-16 00:33:30 +02:00
633f60cdb2 Update README.md 2017-10-15 21:30:06 +02:00
83416fa5da Merge branch 'master' into navigation 2017-10-15 21:28:17 +02:00
e32569dd5a ImDrawList: Fixed a bug in ChannelsMerge() leading to an extraneous draw call being created, which unexpectly led to more dramatic condition but to faulty draw command merging code. (#1172, #1368) 2017-10-15 21:07:22 +02:00
bebc49bc2a Merge pull request #1368 from ripieces/rendering-issue-1172
ImDrawList: Merging issue fix.
2017-10-15 21:07:05 +02:00
7a8eb5bdc9 Rendering issue fix
Fixes ocornut/imgui#1172
2017-10-15 19:27:53 +02:00
d761825cfb Nav: Renaming a field + Comments. 2017-10-15 17:57:15 +02:00
ce7b04e8b9 Removed apparently unncessary code in InputFloatN() and InputInt(). 2017-10-13 23:59:17 +02:00
251bc6c22c Update README.md 2017-10-13 21:29:31 +02:00
b498856c9d Update README.md 2017-10-13 20:05:50 +02:00
dbab9b248a Update README.md 2017-10-13 20:03:56 +02:00
db5f1b79cd Nav: ButtonBehavior() keep _displaying_ NavId item as howered when refocusing or moving window, which is consistent with IsItemHovered() and reduce noise/flicker (#787) 2017-10-13 19:18:59 +02:00
c42baf392a Reluctantly exposed GetActiveID(), GetHoveredID() in imgui_internal because the demo code will need it. 2017-10-13 16:48:14 +02:00
53780a4fcc Nav: Shallow tweaks. 2017-10-13 16:23:44 +02:00
f852b9a52a Exposed Scrollbar() in imgui_internal.h and removed a bool arg 2017-10-13 13:31:34 +02:00
b667d5a9e7 Nav: Internals: Renamed ImGuiButtonFlags_NoNavOverride to ImGuiButtonFlags_NoNavFocus + fixed a theorically missing test in ButtonBehavior() (#787) 2017-10-13 13:31:34 +02:00
0371219222 Nav: Internals: Renamed SetActiveIDNoNav -> SetActiveID() and old SetActiveID() -> SetFocusID(), both functions needs to be called when both are desirabled. (#787)
May break code relying on imgui_internal.h, relying on nav and not calling ButtonBehavior().
2017-10-13 13:31:34 +02:00
8b095e483b Internals: Moved SetNavID() and renamed casing to be consistent with stuff exposed in imgui_internal.h 2017-10-13 13:31:34 +02:00
4be967823f Exposed Scrollbar() in imgui_internal.h and removed a bool arg 2017-10-13 13:30:28 +02:00
48498b337d Internals: SetActiveID window cannot be NULL 2017-10-13 13:07:07 +02:00
4548bcb5c9 Nav: commiting shallow bits to reduce noise from working copy/upcoming commit. 2017-10-12 02:09:13 +02:00
17519c313a Nav: Extract part of NavUpdate() into a saner NavUpdateWindowingTarget() (#787) 2017-10-11 20:47:41 +02:00
b05b31e690 Nav: Made NavWindow always refresh from NavId so we can lazily retrieve the window for user functions that don't have it. This is not required by current commit but I'd rather test it earlier. Idea: eventually if we switch to 64-bit identifiers we could reserve e.g. 20 bits to store a simplified window identifier so we can always retrieve a window from an id. (#787) 2017-10-11 20:37:45 +02:00
f0d437dd9c Nav: SetActiveId() uses SetActiveIDNoNav() to avoid duplicating logic. (#787) 2017-10-11 20:29:53 +02:00
2047c58efb Nav: Extract part of NavUpdate() into a saner NavScrollToBringItemIntoView() (#787) 2017-10-11 20:28:16 +02:00
7a14d7dfdc Nav: More consistently drawing a (thin) navigation rectangle hover filled frames such as tree nodes, collapsing header, menus. (#787) 2017-10-11 19:05:36 +02:00
3833f1f7a2 Merge branch 'master' into navigation 2017-10-11 15:38:33 +02:00
43b4a81b3e Rnamed AlignFirstTextHeightToWidgets() to AlignTextToFramePadding(). Kept inline redirection function (will obsolete). 2017-10-11 15:36:57 +02:00
578a588c1d Links 2017-10-11 15:26:35 +02:00
4cfec4813e Links 2017-10-11 15:24:54 +02:00
c6e370a77a TreeNode: Added ImGuiTreeNodeFlags_FramePadding flag 2017-10-11 15:16:11 +02:00
69dd895358 Nav: Renaming NavInitDefaultRequest -> NavInitRequest 2017-10-06 15:54:29 -07:00
4d83078885 Nav: Moving code next to its peers 2017-10-06 15:50:32 -07:00
d2975115cd Nav: Caching into g.NavAnyRequest to minimize hot path cost (and so we can add many more request sources) 2017-10-06 15:14:28 -07:00
d91b093be6 Nav: Minor tweaks in NavProcessItem() used by ItemAdd() 2017-10-06 14:56:25 -07:00
c3105919ba Nav: Minor tweaks also toward removing processing from ItemAdd() 2017-10-06 14:51:15 -07:00
d16309ca77 Internal: ItemAdd() minor shallow tweaks 2017-10-06 14:40:53 -07:00
64ce83b9ed Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-10-06 14:27:29 -07:00
042153d254 Internal: ItemAdd(), IsClippedEx(): removed unnecessary indirection for ID parameter 2017-10-06 14:23:18 -07:00
acb6f12d2c Removed extraneous calls to GetCurrentWindowRead() when we already have a ImGuiContext. Internal RenderXXX functions also don't need to write into the Accessed field at all. 2017-10-06 11:48:07 -07:00
6e1199c603 Merge branch 'master' into navigation 2017-10-06 11:24:58 -07:00
335c8dd159 Comments (clarifying whether types are to be considered as flags or regular, non combinable enums) 2017-10-06 11:23:08 -07:00
f451785c9e Nav: Shuffled code in ItemAdd() so that NavProcessItem() may have access to LastItemId (will be required by tabbing) 2017-10-06 10:17:01 -07:00
e12cfa9dfd Nav: Minor midying up and comments, 2017-10-06 09:44:50 -07:00
40df7a5155 Nav: Removed possibly redundant test prior to calling NavProcessItem() from ItemAdd() 2017-10-06 09:40:13 -07:00
a77dd02e8a Nav: Moving code next to its peers 2017-10-05 22:06:46 -07:00
f5bd4663dd Nav: Moving the big chunk of code from ItemAdd() to NavProcessItem() 2017-10-05 22:02:13 -07:00
59c6f35bf6 Added ActivateItem(), GetItemID() functions. 2017-10-05 21:34:01 -07:00
80c4e2fe7b Nav: Tidying up activation mechanism so that setting NavActivateId can trigger buttons. 2017-10-05 21:27:08 -07:00
2f27b733be Nav: Fixed uninitialized context variables for sanity. 2017-10-05 18:33:40 -07:00
518f02f4de Demo: better demo for SetKeyboardFocusHere() 2017-10-05 18:10:59 -07:00
d851775c80 ColorButton: Reduced bordering artefact that would be particularly visible with opaque Col_FrameBg and FrameRounding enabled. 2017-10-05 17:55:27 -07:00
f2c9bd8d4f Nav: Fixed uninitialized context variables for sanity. 2017-10-05 16:39:59 -07:00
726dcf0dd2 TextUnformatted(): minor tweak 2017-10-05 11:03:38 -07:00
a0d724b450 Made AlignFirstTextHeightToWidgets() saner and faster (still disliking its name very much!) 2017-10-05 11:02:23 -07:00
a3d0755181 Merge branch 'master' into navigation 2017-10-05 10:31:37 -07:00
f326fac64a Nav: Menus and popups now have move request wrap around vertically (using the move request forward thing added recently). (#787) 2017-10-05 10:29:17 -07:00
a8788e51a7 SetKeyboardFocusHere() added assert to prevent passing values smaller than -1 as we may have to outlaw them (I think nobody was using that) 2017-10-05 09:53:07 -07:00
63cd2bf9b1 Removed obsolete comment. 2017-10-05 09:40:06 -07:00
b3099d650c Examples: Adding Roboto to the commented-out font list, and removing the unnecessary ProggyClean from there. 2017-10-04 19:28:04 -07:00
3ddcdcf6e7 Merge branch 'master' into navigation 2017-10-04 18:46:09 -07:00
67ac7da30f Styles: Added ImGuiStyle::ScaleAllSizes(float) helper to make it easier to have application transition to e.g. High DPI with a matching style. 2017-10-04 18:13:57 -07:00
89ab4b5e07 TODO update 2017-10-04 15:42:03 -07:00
ae1a6dc075 Merge pull request #1352 from matiTechno/master
Comments: Fixed typo
2017-10-04 20:39:14 +02:00
42ee537be3 Comments 2017-10-04 10:45:35 -07:00
a56b71e866 Nav: Added code to render thin highlight type. (#787) 2017-10-04 10:44:27 -07:00
b36a043bbf typo 2017-10-04 11:09:21 +02:00
6ea90af6b7 Nav: Highlight clipped within host window then extruded out. (#787) 2017-10-03 13:53:17 -07:00
cb4e6c8212 Nav: Selectable(): activating selectable also sets NavId + removed the MouseDelta test (added in 43ee5d73e9, #323) as I don't think it is needed. (#787) 2017-10-03 13:44:48 -07:00
64a51327d3 Nav: Added NavMoveResultParentId internal info to record when the parent/context of a given NavId. Useful for various algorithms (currently looking at range selection stuff) (#787) 2017-10-03 13:25:40 -07:00
2ca1884a39 Merge pull request #1350 from benvanik/patch-2
Fix binary_to_compressed_c tool to return 0 when successful.
2017-10-03 20:52:30 +02:00
6ec50d6bf5 Fix binary_to_compressed_c tool to return 0 when successful
Returning 1 is seen as an error by many tools, making it tricky to integrate this into build systems as-is.
2017-10-03 11:45:25 -07:00
74da533c93 Nav: Added NavJustNavigatedId internal info to record when we land on a given item after a navigation request, useful for various algorithms (currently looking at range selection stuff) (#787) 2017-10-03 11:22:38 -07:00
7f58bb03c1 Changed the internal name formatting of child windows to use slashes as separator, more readable. 2017-10-02 16:07:34 -07:00
cbc9730798 Metrics: Draw window bounding boxes when hovering Pos/Size. List all draw layers, trimming empty commands like Render() does. 2017-10-02 16:07:33 -07:00
c38526d14b Completely clear font when rebuilding atlas.
Previously, IndexLookup was not cleared on each font, causing FindGlyph to return old glyphs when using MergeMode.
2017-10-01 23:40:29 -04:00
491edfd8d8 Nav: Fixed a crash introduced yesterday. 2017-09-30 23:46:23 +02:00
0046c618b0 Nav: Allow to collapse tree nodes with NavLeft and open them with NavRight (#787, #1079) 2017-09-30 00:47:07 +02:00
ecd72cc0c7 Nav: Disabled the final axial check when considering candidates in most situations except menubars.
It's definitively undesirable inside Menu as we want to catch nav request failures reliably.
I think it may be considered as an option if we find this desirable i some circumstances. Right now ideally I'd remove it totally but with current scoring setup, without it we can't easily reach the Window Close button. (#787)
2017-09-30 00:26:55 +02:00
88a354585a Nav: It's now possible to navigate sibling of a menu-bar while navigating inside one of their child. If a Left<>Right navigation request fails to find a match we forward the request to the root menu. (#787, #126)
Currently the sibling menu is isn't automatically opened, that's still left to it (and even that can be anoying in Windows when the first menu-item is a child menu)
2017-09-29 23:39:34 +02:00
587e637db0 Nav: Taking note that we should aim to remove MenuBarAppending later. 2017-09-29 23:37:14 +02:00
1eaa9d0621 Nav: Fixed uninitialized variable (that had no side-effects due to the code/data flow involved) 2017-09-29 23:37:14 +02:00
f4e4c38705 BeginMenu(): fixed logic to distinguish vertical menu from one layed out in a menu bar. Makes MenuItem() in a regular window behave more consistently, and this will be also needed by upcoming menu-navigation changes in the nav branch. (#126, #787) 2017-09-29 23:37:14 +02:00
9912f7eef8 BeginMenu(): fixed logic to distinguish vertical menu from one layed out in a menu bar. Makes MenuItem() in a regular window behave more consistently, and this will be also needed by upcoming menu-navigation changes in the nav branch. (#126, #787) 2017-09-29 22:19:53 +02:00
cf3b21179b Nav: Comments 2017-09-29 20:03:02 +02:00
5a9ebeca9e Nav: Fix typo from 9712a81f85 2017-09-29 19:49:20 +02:00
bfaa426f7f Nav: Minor tidying up (adding local variables to be a little more sane). 2017-09-29 19:48:16 +02:00
8a5a29f0be Nav: Renamed internal field. 2017-09-29 19:28:19 +02:00
9712a81f85 Nav: Rectangle rectangle stored per window and per layer as well. Makes things simpler, allows enable us to visualize more data. 2017-09-29 19:26:03 +02:00
54eb4c485e Nav: Marked misleading/broken code that will never execute. 2017-09-29 19:15:24 +02:00
e3c89aeb10 Nav: Fixed menuitems/selectable on menu layer (layer 1) from storing themselves in wrong layer of LastNavIds when hovered.causing inconsistencies and bugs when hovering menu with mouse then pressing ALT to return to layer 0).
NB: this is not a new bug introduced by the previous commit (which is related to nav layers), bug has been there for a while. (#787)
2017-09-29 18:24:43 +02:00
9737efb2f1 Nav: Store per-window last nav id also per-layer so we can easily query them for menu navigation code. (#787) 2017-09-29 17:58:25 +02:00
8a814487fe Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-09-29 16:30:43 +02:00
fba9353c60 BeginMenu: Shuffling braces around to clarify flow 2017-09-29 16:29:00 +02:00
cf308f4039 Nav: Fixed SetItemDefaultFocus from stealing default focus when we are initializing default focus for a menu bar layer (#787) 2017-09-29 00:20:51 +02:00
f4398226cc Nav: Support for fallback horizontal scrolling with PadLeft/PadRight (nb: fallback scrolling is only used to navigate windows that have no interactive items). (#787) 2017-09-29 00:01:26 +02:00
30b1d85962 Nav: Commiting some better organized Debug helper because this going to stay for a bit. 2017-09-28 23:48:30 +02:00
3b85a8b6a0 Demo: Added an extra test related to baseline and fixed an id collision. 2017-09-28 22:01:08 +02:00
164f22d5b7 Comments 2017-09-28 22:00:49 +02:00
1f7f54e196 Removed extraneous test. 2017-09-28 22:00:17 +02:00
c0cf123e0b Update README.md 2017-09-28 20:39:36 +02:00
df366b230e ColorPicker4: Use nav flag to provide a slighly better experience when using navigation (#787, #346) 2017-09-28 20:22:30 +02:00
7c2926de17 Demo: Added an extra test related to baseline and fixed an id collision. 2017-09-28 20:15:32 +02:00
2d859dee4e Nav: Added ImGuiItemFlags_NoNav item flag 2017-09-28 19:58:01 +02:00
878fa96896 Nav: Re-arranged ItemAdd() to maximize early out (#787) 2017-09-28 19:57:24 +02:00
dd0855de5c ButtonBehavior: Tidying up. 2017-09-28 19:47:45 +02:00
4b4e455c40 Nav: Internal nenaming 2017-09-28 19:41:30 +02:00
50ba543743 Comments 2017-09-28 19:35:10 +02:00
e0a2a832cd Nav: Changed internal flag to NoNavDefaultFocus to be false by allow, and more consistent (#787) 2017-09-28 19:18:41 +02:00
af38749ea1 Nav: Fixed ButtonBehavior mistakenly setting active id when the Activate button is held and we have a new NavId, which affected browsing some popups (#787) 2017-09-28 19:07:52 +02:00
ca4db8c905 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-09-28 17:40:25 +02:00
e8f7c83138 Begin: Shallow tweak to minimize diff with nav branch 2017-09-28 17:37:55 +02:00
926c1cf9a4 Merged from Navigation branch: ImGuiItemFlags_SelectableDontClosePopup flag 2017-09-28 17:02:28 +02:00
f99348711b Added VerticalSeparator() entry point in imgui_internal. Seperator() in an horizontal layout context still does that. 2017-09-28 16:41:01 +02:00
9142002121 Separator(): Tweak Logging so that the separator text is aligned according to tree padding. 2017-09-28 16:40:28 +02:00
d394c7ad0b Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-09-28 15:45:35 +02:00
0106dcbd02 Fixed IsItemHovered() - part of the processing has to be done in ItemAdd() because the widget may alter clipping rectangle temporarily. 2017-09-28 15:43:26 +02:00
2a8eb618dc Nav: Fixed NavDown to open menu from a menu bar (#787) 2017-09-28 00:36:58 +02:00
35f65e05ed Merge branch 'master' into navigation 2017-09-28 00:33:29 +02:00
fafe65a8fc Refactor to move the responsability of SetHovered() to ItemHoverable() - previously IsHovered(). Simpler and the parallel to ItemAdd is clearer with the new name. 2017-09-28 00:21:47 +02:00
2159629e9e Removed another msileading difference between the hovered functions (IsWindowContentHoverable() uses the root window already). Sorry for the commit spam! (making small commit to easily be able to Bisect those in case I make a mistake) 2017-09-28 00:05:35 +02:00
eca74d55c7 IsItemHovered(), IsHovered(): Shallow tweaks, eventually removed all the braces. 2017-09-28 00:05:18 +02:00
2b7d4c713e Internals: Moved IsWindowContentHoverable() in the file 2017-09-27 23:31:03 +02:00
c5a79deb38 IsItemHovered(), IsHovered(): Shallow tweaks to make them more symetrical. Removed one set of braces. 2017-09-27 23:10:46 +02:00
7bcb1d3816 Internals: ButtonBehavior(), IsHovered() moved the responsability of flatten_child higher level to ButtonBehavior() - not super sure about the elegance of this 2017-09-27 22:59:40 +02:00
79ef64430c Nav: Fixed merge cc26db8ec7 2017-09-27 17:27:21 +02:00
cc26db8ec7 Merge branch 'master' into navigation 2017-09-27 17:25:50 +02:00
0adcddac39 IsItemHovered(), ItemAdd(): finishing cleaning up, moved the code to IsItemHovered() so ItemAdd() is more lightweight and the two IsXXXHovered functions are now very similar, making their differences less confusing. 2017-09-27 17:21:50 +02:00
19e22baa06 ItemAdd(): more re-ordering of tests to match IsHovered() + comments 2017-09-27 17:06:07 +02:00
344d48be31 IsItemHovered(), ItemAdd(): Fixed seemingly unnecessary comparaison of root windows, makes IsItemHovered() more consistent with internal IsHovered().
Original test was added in 6e99688fa7 should not have been using RootWindow in the first place.
The difference between public-facing and internal versions would only be noticeable with overlapped child windows, which doesn't really happen anyway
2017-09-27 16:49:25 +02:00
c075786d8b ItemAdd(): re-ordering the tests, submission should now be faster. 2017-09-27 16:29:46 +02:00
99c7622a1b ItemAdd(), not performing computation for IsItemRectHovered() which does them itself, allowing us in the next commit to optimize ItemAdd() and make its logic more consistent with IsHovered(). 2017-09-27 16:20:53 +02:00
e87ad328e4 Moved implementation of Hovered-related functions next to each others + comments, before I attempt to work on them. No functional change here. 2017-09-27 16:07:47 +02:00
842e88a8e3 Examples: Avoid using ImColor() to not tempt newcomers into looking at it 2017-09-27 15:47:08 +02:00
869732c456 Nav: Removed unnecessary combo code (that kept the combo arrow highlighted after reverting to mouse controls). (#787) 2017-09-27 12:34:18 +02:00
a2b2e56e8e Merge branch 'master' into navigation 2017-09-27 12:31:12 +02:00
e56eba44fe Fixed not being able to move a window by clicking on one of its child window (#1337, #635), broken by 313d388bba 2017-09-27 12:25:40 +02:00
8374a454da Removed extraneous ImGui:: prefixes. Declared ColorEditOptionsPopup in imgui_internals.h. Tweaked internal signatures. 2017-09-27 11:39:13 +02:00
09f6f564d9 ImFontAtlas: Fixed calling Clear() and rebuilding (broken in 3fe2ecfd4c) thanks @pdoane @mikesart 2017-09-27 11:21:42 +02:00
bbd6d5d5b5 Combo: Cleaned up, removed unnecessary code (looks like this part went untouched for a long time!). 2017-09-27 00:20:09 +02:00
8fd4beddb8 Merge branch 'master' into navigation 2017-09-26 20:28:40 +02:00
3fe2ecfd4c ImFontAtlas: Added support for CustomRect API to submit custom rectangles to be packed into the atlas / and map them as font glyphs 2017-09-26 20:24:27 +02:00
501e73feed Minor comments 2017-09-26 20:18:14 +02:00
9e1ad7295f ImFont: Renamed (supposedly internal) fields (e.g. XAdvance to AdvanceX). Custom text renderers might be affected if they didn't use the GetCharAdvance() helper function. 2017-09-26 20:05:16 +02:00
10bb9524eb ImFont: Renamed ImFont::Glyph to ImFontGlyph (for consistency and so ImFontAtlas types can use it without ordering half of the file). Left a redirection type. 2017-09-26 19:54:30 +02:00
072d6d8cb5 ImFontAtlas: Refactored internals API to 1) avoid building lookup table multiple times for merged fonts + 2) allow the mapping of custom icons inside fonts (wip, uncommited) 2017-09-26 19:26:16 +02:00
2170b0b278 ImFontAtlas: Comments and minor reorganization of declaration in header file. 2017-09-26 19:10:29 +02:00
529ca279a4 ImFont: Split some building code into a AddGlyph() helper (that custom rect code and imgui_freetype can use) 2017-09-26 18:41:21 +02:00
f1a20ec66d Merge branch 'master' into navigation 2017-09-26 16:54:37 +02:00
be03882a15 Separator(): output vertical separator when used in horizontal layout mode, so it works in menu bars. 2017-09-26 15:43:48 +02:00
c7a606ab7e Horizontal layout does the minimum job to be usable internally - not exposed (#97) 2017-09-26 15:42:55 +02:00
728deff56c Comments, debug code (commented), todo list 2017-09-26 15:33:57 +02:00
99b9f1c93c Fix static misusage error with decent compilers. Error introduced in 4b82759598 2017-09-26 11:23:06 +02:00
82748df71a WantCaptureMouse: Tweaked logic so WantCaptureMouse can stay false when e.g. hovering over void while an InputText() is active. (#621) 2017-09-26 01:12:09 +02:00
69d0d33451 Exposed PushMultiItemsWidths() to imgui_internal.h 2017-09-25 22:45:10 +02:00
9577ebf008 Merge branch 'master' into navigation 2017-09-25 22:14:37 +02:00
24f21bd4d4 Merge pull request #1113 from Urmeli0815/ImGuiSelectableFlags_MenuItem
MenuItem: only activate on Release, not on Click (nb: and not on ClickRelease to allow opening menu and selecting something with a single click. Windows seems to behave the same, allowing to click and hold to e.g. Open then move cursor, release on Save and save gets activated)
2017-09-25 22:13:38 +02:00
7e8069dd23 Merge branch 'master' into navigation 2017-09-25 22:08:38 +02:00
c0547d358d Begin: Fixed auto-fit calculation code that predict the presence of ascrollbar so it works in the case size constraints are used. I actually don't need this fix now, but earlier experiment with BeginCombo() required this fix. 2017-09-25 22:04:39 +02:00
4b2781fe87 Begin: Moving some code into a CalcSizeAutoFit() function. 2017-09-25 21:57:42 +02:00
0d56140b4a BeginCombo(): rework internals a little to make it easier to provide custom combo-like elements relying in BeginCombo().
BeginPopupEx() doesn't enforce AlwaysAutoResize flag anymore.
2017-09-25 21:45:34 +02:00
a34edb810e Demo: Fixed overlay demo keeps resizing (in case, e.g.: font changes) 2017-09-25 21:12:07 +02:00
4b82759598 SetNextWindowPos: added a ImVec2 pivot parameter for positioning a given a center, bottom-right position, etc. As a generalization of SetNextWindowPosCenter() which is now obsolete. This will be useful for combo-like popups as well.
Demo: Simple-overlay window uses the SetWindowPos pivot to select a corner to position itself at.
2017-09-25 18:25:43 +02:00
0a55573288 Begin(): Minor tidying up of flow 2017-09-25 15:48:52 +02:00
9f34925b2a Window: Tweaked ApplySizeFullWithConstraint() -> CalcSizeFullWithConstraint() so it can be used without side-effect 2017-09-25 13:23:25 +02:00
0a5fb24f10 Popups: Exposing a little more of popups internals in imgui_internals.h 2017-09-25 12:52:06 +02:00
3fd5790814 Pass render target format in ImGui_ImplDX12_Init() instead of hard-coded. 2017-09-24 14:57:46 -07:00
f6b6dace9e Pass command list in using ImGui_ImplDX12_NewFrame() instead of ImGui_ImplDX12_Init() 2017-09-24 14:43:46 -07:00
f72b95d73f Merge 'ocornut/master' into 'jdmo3/master' 2017-09-24 14:43:11 -07:00
3dd3d0b248 Examples: DirectX11: allow creating device with feature level 10 sinec we don't really need much for that example. (#1333) 2017-09-24 12:54:49 +02:00
b9c185402e Nav: minor tidying up NavUpdate() to use a local variables, easier to test replacing g.NavWindow with g NavMoveResultWindow for navigation accross flattened child windows. 2017-09-20 23:58:56 +02:00
113b2467cd Minor bits. Reduce usage of GImGui multiple times in same function. 2017-09-20 23:02:06 +02:00
229921541b TODO list 2017-09-20 18:54:36 +02:00
9b2672a99f Update README.md 2017-09-19 18:33:04 +02:00
2fc07c1b7d Update README.md 2017-09-19 18:32:09 +02:00
ba12d37719 Merge pull request #1324 from waywardmonkeys/improve-clang-warnings
FIxes zealous Clang warning.
2017-09-19 18:18:53 +02:00
479e532f18 ColorEdit: fixed weird ternary pattern that makes some compiler warning (fair) 2017-09-18 21:41:49 +02:00
92e55a8a79 Merge branch 'master' into navigation
# Conflicts:
#	imgui.h
2017-09-18 16:06:48 +02:00
d5d825debb Nav/Examples: honoring the io.WantMoveMouse flag in most common examples (#323)
Missing support Vulkan (#549), Apple (#575, #247), SDL (#58, #356),
Allegro, Marmalade (#368, #375)
2017-09-18 16:04:44 +02:00
1ff27d7db8 Added io.WantMoveMouse flags from Nav branch so Examples/Binding can already implement it. (#787) 2017-09-18 16:04:28 +02:00
f24b5f71ca Merge branch 'master' into navigation 2017-09-18 15:35:47 +02:00
79ce9b74d5 BeginTooltipEx() internal tweaks 2017-09-18 15:35:00 +02:00
44e8d94aba Merge branch 'master' into navigation 2017-09-18 15:32:31 +02:00
105f3b14e4 Merge branch 'master' into styles 2017-09-18 15:11:51 +02:00
564c97b87e Comments 2017-09-18 15:11:22 +02:00
f0f86213db ImVector: added resize() variant with initialization value 2017-09-18 15:11:05 +02:00
b409d399c8 Demo: style editor output tweak so it is easier to modify the output code.. + TODO list update 2017-09-18 15:09:11 +02:00
9693fd5351 PushStyleVar/PopStyleVar: internal tweaks 2017-09-18 15:07:22 +02:00
7c9e38f60a Style: Moving code in a function to make incoming diff easier to parse. 2017-09-18 15:06:54 +02:00
709653c330 Merge branch 'master' into styles 2017-09-18 15:03:25 +02:00
6c91a1ef7f Minor comments 2017-09-17 23:35:39 +02:00
2aa9a538c0 Merge pull request #1323 from waywardmonkeys/remove-commas-at-end-of-list
Remove commas after last item in enumeration to stay compatible with older compilers.
2017-09-15 11:52:14 +02:00
c4c042bcec Typo 2017-09-15 01:32:29 +02:00
052999a6ab More consistently uses "Dear ImGui" 2017-09-15 01:31:41 +02:00
83645aa593 More consistently uses "Dear ImGui" 2017-09-15 01:28:30 +02:00
2fcdeb7f12 Remove commas after last item in enumeration.
This brings these enums to match the rest of the code and fixes
2 warnings under clang about using C++11 extensions.
2017-09-14 10:35:30 +07:00
4c794be41d Improve warning configuration for clang.
Clang 4.0 introduced -Wdouble-promotion, so check for and disable
that on clang as we do on gcc.

The old style casts warning is already disabled globally in this file
for clang, so it doesn't need to be re-disabled within this scope.
2017-09-14 10:28:18 +07:00
54d30d758f Implicit "Debug" window uses a "Debug##Default" identifier to allow the user creating such window with custom flags 2017-09-12 13:16:27 +02:00
65632d2682 Fixed alloca include for SunOS (#1319) 2017-09-12 11:55:13 +02:00
3420080a35 Merge pull request #1319 from RyuKojiro/more_portable_alloca_include-ocornut
Simplify alloca.h include condition (fix for NetBSD)
2017-09-11 11:00:23 +02:00
cf6ba9dd2d Don't do a bunch of OS gymnastics. alloca.h is only for glibc, everyone else uses stdlib.h 2017-09-11 00:15:43 -07:00
66a9d4856c Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2017-09-06 20:37:29 +02:00
cb2775ae54 Internals: ImGuiItemFlags comments 2017-09-06 20:36:36 +02:00
62d7fa4324 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-09-06 20:33:39 +02:00
f63c03c464 Internals: moved ButtonRepeat and AllowKeyboardFocus bools/stacks to a generic ItemFlags stack. Merged from Navigation branch. 2017-09-06 20:28:36 +02:00
51fcef0c21 BeginCombo() tweaks, merged from Navigation branch. 2017-09-06 19:31:50 +02:00
38ed66f55e Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
2017-09-06 19:25:07 +02:00
9e2f202f05 Demo: Not using the undesirable Begin() overload. 2017-09-06 19:24:08 +02:00
5c4fda0fbc Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-09-06 19:17:51 +02:00
2169bf6895 Fixed WantTextInput from being true when an activated Drag or Slider was previously turned into an InputText(). (#1317) 2017-09-06 17:25:36 +02:00
790605e359 Minor comments + renaming internal fields 2017-09-06 17:20:54 +02:00
8971d70149 Merge pull request #1313 from thevaber/master
Improved ColorPicker hue wheel color interpolation
2017-09-05 18:35:08 +02:00
e1a7aa41cb Improved ColorPicker hue wheel color interpolation 2017-09-05 16:31:54 +02:00
2600b28f5d Begin(): fixed calling Begin() more than once per frame setting window_just_activated_by_user which in turn would set Appearing to true for that frame. 2017-09-04 13:29:57 +02:00
6400f2900a Begin(): renamed locals. 2017-09-04 13:26:46 +02:00
a9c6a0f6ec Begin(): Removed unnecessary code (at the time of 1.18 commit e9e0e36f98, CursorPos was used to compute SizeContentsFit and this was necessary) 2017-09-04 13:24:45 +02:00
89cae37b49 Begin(): Tidying up some code, should be a no-op. 2017-09-04 13:05:20 +02:00
8fbe8709f9 TODO, minor tweak 2017-09-04 13:03:04 +02:00
e8dbf1c795 Combo: Internally split into BeginCombo(), EndCombo(), toward a more flexible combo api. 2017-09-01 22:10:13 +02:00
5658675e9d Combo: Removed unnecessary ClearActiveId() call (from era where active combo stored an id, now we just use popup functionality) 2017-09-01 21:58:58 +02:00
804ee78731 Added IsWindowAppearing(). 2017-09-01 21:55:59 +02:00
fd684ba974 Removed 2 obsolete redirection functions (obsoleted 26+ months ago). 2017-09-01 17:43:56 +02:00
b8ade0b94f Examples: Main: Removed call to SetNextWindowSize() 2017-09-01 17:07:19 +02:00
4abce8af58 Examples: GL2: Renaming, comments. 2017-09-01 17:07:19 +02:00
5665f1d3e3 Merge branch 'nlguillemot-master' 2017-09-01 16:55:36 +02:00
d9016964ad Examples: GL3: Comments, tweaks (#1145) 2017-09-01 16:55:04 +02:00
c47e5fc76a Merge branch 'master' of https://github.com/nlguillemot/imgui into nlguillemot-master 2017-09-01 16:49:36 +02:00
7d1f2c0dc5 Examples: GL2: rename functions to include GL2 in name 2017-09-01 16:45:31 +02:00
d165817880 Merge pull request #1307 from JJscott/dev
Examples: OpenGL: Backup polygon mode, draw with filled polygons, restore state, for clients running opengl with glPolygonMode. closes #798
2017-09-01 22:30:14 +08:00
cf48e28932 Backup polygon mode, draw with filled polygons, restore state, for clients running opengl with glPolygonMode. closes #798 2017-09-01 20:39:12 +12:00
670d40642f Fixed C4267 conversion from size_t to int. 2017-09-01 14:42:49 +08:00
6a1ba317c7 Demo: Minor coding style tweaks so bgfx copy needs less patching. 2017-08-29 19:05:56 +08:00
1a62d46db5 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-08-29 18:47:23 +08:00
97a40e74fb Nav: Fixed bad merge of 6def01be5d so the bug fixed in #840 wasn't fully fixed in Nav branch. 2017-08-29 18:45:58 +08:00
96d2942373 InputText: Merged bits from Navigation branch (inc. g.ActiveIdIsJustActivated is only set on the toggle). 2017-08-29 18:40:14 +08:00
9a0171b803 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-08-29 18:29:44 +08:00
35e4fa7b85 Merged from Navigation branch (DragBehavior) 2017-08-29 18:21:36 +08:00
6cca4025ee Merge from Navigation branch: 6aa8019763 2017-08-29 17:56:53 +08:00
ddf41b0398 Merged from Navigation branch. TAB/Alt-TAB processing now deactivate if holding Ctrl. 2017-08-29 17:27:19 +08:00
550dc09998 Merged from Navigation branch (misc) 2017-08-29 17:12:18 +08:00
aef041f948 Merged from Navigation branch 2017-08-29 17:09:56 +08:00
c9298c2657 Merged from Navigation branch:
f71cdd13b7  Internal tidying up, moved code to CalcNextScrollFromScrollTargetAndClamp() so it can be reused by upcoming nav code.
c816e6c742 Fixed SetScrollX() handling of center ratio (which actually wasn't exposed publicly). (#323, #246)
2017-08-29 17:09:44 +08:00
287a4b6b38 Merged from Navigation branch: 5cac4926c8 fix title bar color of window under a modal window. 2017-08-29 16:52:37 +08:00
a9e1d9aab9 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_internal.h
2017-08-29 16:21:46 +08:00
358e7a194e Added GetKeyPressedAmount() (from Nav branch) to be able to measure fast repeat rate accurately. Added internal CalcTypematicPressedRepeatAmount() function. 2017-08-29 16:13:17 +08:00
1f1e63f705 Merge various minor things (supposedly harmless) from Navigation branch into Master to reduce differences. Some code in NewFrame() has been moved around. (#787) 2017-08-29 16:06:52 +08:00
ee42fae468 Merge various minor things (supposedly harmless) from Navigation branch into Master to reduce differences. (#787) 2017-08-29 16:05:12 +08:00
6752cba4bc Removed duplicate comments 2017-08-29 15:39:11 +08:00
2ee1b70652 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2017-08-29 15:36:36 +08:00
0ba3cadb88 RenderRectFilledRangeH() can't use cheap acosf() approximation for now. (#1296) 2017-08-29 15:25:05 +08:00
f8eef49575 ProgressBar() fixed rendering when straddling rounded area. (#1296) 2017-08-29 15:23:07 +08:00
01d4bf299a Added overcomplicated RenderRectFilledRangeH() to fix rounded progress bar, which will also help for range widgets and perhaps sliders grabs over rounded areas. (#1296, #76) 2017-08-29 15:22:30 +08:00
f0fa17b5e0 ImDrawList: Minor renaming 2017-08-29 15:10:03 +08:00
7a9ea281be ImSwap() helper. 2017-08-28 19:27:12 +08:00
808d631e35 imDrawList: PathArcTo() returns when passed zero radius. 2017-08-28 16:02:25 +08:00
e1d81f4dc5 ImDrawList: Minor tidying up. 2017-08-28 14:12:55 +08:00
1f51e8f39d Internals: Renamed some ImGuiCorner enums. 2017-08-28 14:11:11 +08:00
7a7327adde ParseFormatPrecision() returns -1 for scientific noation 'e'/'E', RoundScalar() doesn't alter those. 2017-08-28 13:19:36 +08:00
0d4b08a851 Added Go binding link 2017-08-28 12:14:29 +08:00
807322c9a5 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-08-26 18:43:10 +08:00
b295e185ff Updated copyright date for 2017, updated Gallery link 2017-08-26 16:42:40 +08:00
419b22a487 Internals: Split some code out of NewFrame() into an Initialize() function. 2017-08-26 16:35:39 +08:00
5938f1ba61 Added IsMousePosValid() helper. 2017-08-26 15:18:06 +08:00
f72ca6d22c ImFontConfig: Added RasterizerMultiply option to alter the brightness of individual fonts at rasterization time, which may help increasing readability for some. Added RasterizerFlags for custom rasterizer flags (aka imgui_freetype) 2017-08-26 14:11:56 +08:00
304de0ee1b ImFontConfig: Comments, const. 2017-08-26 14:11:41 +08:00
a02210a455 Fixed compilation with IMGUI_DISABLE_OBSOLETE_FUNCTIONS defined 2017-08-26 00:31:44 +08:00
92a6faca6f IO: io.MousePos needs to be set to ImVec2(-FLT_MAX,-FLT_MAX) when mouse is unavailable/missing. Previously ImVec2(-1,-1) was enough but we'll now accept negative mouse coordinates. 2017-08-25 16:43:25 +08:00
37f3a718c6 Marked all fmt + va_list functions with format attribute so GCC/Clang can warn about them. Not ignoring -Wsuggest-attribute=format anymore for GCC/Clang. 2017-08-25 16:10:14 +08:00
40f608ce9b Version 1.52 WIP 2017-08-25 15:12:12 +08:00
55a6209931 Version 1.51 2017-08-25 00:29:59 +08:00
e6ed2f9939 Nav: Tooltip do not appear in navigation focus list. (#1294, #787) 2017-08-25 00:06:57 +08:00
82c3116b4f Demo: Displaying version number in test window. 2017-08-24 17:32:03 +08:00
d213c0eb7e Style: Tweaked default border (undo half-way from original c1e1e015c4) (#707) 2017-08-24 17:30:10 +08:00
b0fc30bd19 Merge branch 'master' into navigation 2017-08-22 20:49:02 +08:00
7c5556c921 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-08-22 20:48:36 +08:00
92efa00bc9 Minor miscellaneous merges from Navigation branch to reduce divergence a little bit 2017-08-22 20:44:39 +08:00
6ed75d3046 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-08-22 20:27:39 +08:00
eb2bbf6f29 Renamed IsItemHoveredRect() to IsItemRectHovered(). Renamed IsMouseHoveringWindow() to IsWindowRectHovered() - follow up to previous commit 6be7d4904e merged from Nav. 2017-08-22 20:25:27 +08:00
52b39af0a0 Style: Added obsolete redirects for ImGuiCol_Columns*** fields. (ref 648f75b245) 2017-08-22 20:23:46 +08:00
6be7d4904e Merge part of 88c1966629 from Nav branch. Renamed IsMouseHoveringAnyWindow() -> IsAnyWindowHovered(), IsMouseHoveringWindow() -> IsWindowHoveredRect() for consistency. Kept inline rediection function. 2017-08-22 20:10:02 +08:00
2e35957a81 Undo reordering of ImGuiKey in Nav branch 2017-08-22 20:02:52 +08:00
8581050002 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-08-22 19:55:59 +08:00
141339e4b7 (internals) Renamed FocusedWindow to NavWindow to match terminology of navigation branch 2017-08-22 19:51:12 +08:00
8e89809078 Merge branch 'master' into navigation 2017-08-22 19:48:01 +08:00
2ad2190d47 Merge 20a0fde012 Tidying up default clipboard handler for non Windows-OS (from Nav branch) 2017-08-22 19:47:52 +08:00
f3ab5e6252 Fixed InputText() bug with ImGuiInputTextFlags_EnterReturnsTrue (in nav branch only) (#787). Thanks @Grouflon 2017-08-22 19:43:49 +08:00
bea06117bb Nav: Fix navigation inside child windows. Removed GetChildID() and storin/g the info within the window. (#1291) 2017-08-22 19:26:21 +08:00
ce7f3d4831 Merge branch 'master' into navigation 2017-08-22 18:27:29 +08:00
444792f75f Merge fixes from ,master branch 2017-08-22 18:27:23 +08:00
50b3a14d0a Merge 2545d75c3b from Nav - Tidying up, removed two unnecessary window flags from being exposed in imgui.h 2017-08-22 18:26:27 +08:00
7de68fbe3d Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-08-22 18:22:41 +08:00
d5b0d51274 Minor miscellaneous merges from Navigation branch to reduce divergence a little bit 2017-08-22 18:13:10 +08:00
9670fe9ca7 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
2017-08-22 17:51:20 +08:00
6ee317d26d ImRect::Clip() -> ClipWith() to clarify meaning, going to undo the change in Nav branch. 2017-08-22 17:46:50 +08:00
6c82af2b96 Navigation branch fix (we changed Clip) 2017-08-22 17:44:49 +08:00
543dc2817f Fixed an assert when calling CloseCurrentPopup() twice in a row. 2017-08-21 22:54:20 +08:00
53e73182ff Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
2017-08-21 00:04:45 +08:00
530baee1a7 Removed tabs that slipped through the cracks 2017-08-21 00:03:37 +08:00
9b484d24cd ImDrawList: Added GetClipRectMin(), GetClipRectMax() helpers. Comments. 2017-08-20 23:45:02 +08:00
067127f113 Columns: Caching columns clipping rectangles (#125) 2017-08-20 23:17:59 +08:00
adeaf1cd72 Columns: Moved PushColumnClipRect() to imgui_internal.h 2017-08-20 23:09:43 +08:00
54bdd00df7 Columns: Fix for explicit content width and scrollbar. (#519, #125) 2017-08-20 21:32:18 +08:00
ea493fd8da Merge branch 'ggtucker-master' 2017-08-20 21:09:22 +08:00
83e8d10fab Columns: Columns set resize based on the presence of vertical scrollbar. Not 100% sure about that but it looks like we've fixed enough bugs that this may not cause troubles anymore. (#125, #913, #893, #1138) 2017-08-20 21:08:07 +08:00
1ebd7ec049 Demo: Columns: Added Horizontal Scrolling demo. Tweaked another Columns demo. (#519, #125, #913) 2017-08-20 20:58:24 +08:00
7ff1c149b5 Columns: Fixed another form of shearing made visible by the PreserveWidth option. The code was initially added in c46d5634d4 to fix because we've fixed in e42aaede42eb6d8a47cf104f3afd6057b13a61ee. (#913, #125) 2017-08-20 20:58:24 +08:00
1c83b073c6 Columns: A set of column (and most importantly the right-most column) do not register its content to the parent, not affecting the window contents size. (#519, #125, #913) 2017-08-20 20:58:23 +08:00
7f0063f858 Columns: Added ImGuiColumnsFlags_NoResize flag (internal). (#913, #125) 2017-08-20 19:32:50 +08:00
e70d49ba1f Columns: Fixed one form of shearing during resizing columns with PreserveWidth enabled (there's another issue still). (#913, #125) 2017-08-20 19:32:50 +08:00
9307631c90 Columns: Removed unnecessary/misleading dummy ItemSize(). Was fixed already before, and fixed again in this branch by 3bf2af23e6. (#913, #125). End() calls EndColumns() directly. 2017-08-20 19:32:50 +08:00
a511b00226 Columns: Fixed offset rounding leading to SetColumnOffset() being destructive when ImGuiColumnsFlags_NoPreserveWidths flag is not set. (#913, #125) 2017-08-20 19:32:50 +08:00
3bf2af23e6 Columns: Fixed EndColumns() not repositioning the cursor. (#913) 2017-08-20 18:44:54 +08:00
19a42cb2fd Columns: Moved BeginColumns/EndColumns/flags from #913 to imgui_internals.h + minor shallow tweaks. Removed demo code temporarily. (#125) 2017-08-20 18:44:48 +08:00
bc78535bbf Merge branch 'master' of https://github.com/ggtucker/imgui into ggtucker-master
# Conflicts:
#	imgui.cpp
#	imgui.h
2017-08-20 18:22:34 +08:00
b4eeb4aa8d Renamed GetStyleColName() to GetStyleColorName() for consistency. Extra comments in Api Breaking Changes section. 2017-08-20 17:53:09 +08:00
af2db53780 Added GetStyleColorVec4() 2017-08-20 17:50:25 +08:00
cf84650ee8 GCC warnings fixes 2017-08-20 16:39:43 +08:00
fd394e1e95 Scrollbar: Comments. Fixed potential div-by-zero error which I can repro now, so added an assert to notify us if it's actually ever useful or not. 2017-08-20 16:39:11 +08:00
1065a7b95b ImFontAtlas::AddFontDefault: Made it possible to override size (even if it isn't really recommended) 2017-08-20 15:38:05 +08:00
91d841dd5f Added PushStyleColor(ImGuiCol idx, ImU32 col) overload. (Which _might_ cause an "ambiguous call" compilation error if you are using ImColor() with implicit cast. Cast to ImU32 or ImVec4 explicily to fix.) 2017-08-20 15:28:12 +08:00
3b11e73333 Examples: gitignore added patterns for modern MSVC versions 2017-08-20 15:17:37 +08:00
bf0d9c123e Merge branch 'master' into navigation 2017-08-18 00:25:12 +08:00
8be7a60f20 ImFontAtlas: Re-arranging code to simplify implementation of imgui_freetype. (#618) 2017-08-17 21:19:54 +08:00
1086c87767 ImFontAtlas: Re-arranging code to simplify implementation of imgui_freetype. (#618) 2017-08-17 21:13:14 +08:00
4075cc58e9 ImFontAtlas; Re-arranging code to simplify implementation of imgui_freetype (#618) 2017-08-17 20:44:44 +08:00
d970957e2d ImFontAtlas: Draft of an api to submit custom rectangle (not exposed). Atlas default texture chunk using it. (WIP: we are still storing mouse UV outside in GImGui) 2017-08-17 19:36:48 +08:00
24a78767d2 Merge branch 'master' into styles
# Conflicts:
#	TODO.txt
2017-08-17 17:24:33 +08:00
4a7e1ff4d4 ImFontAtlas: Some shallow renaming + added an assert for clarification 2017-08-17 15:35:59 +08:00
52f1a4124c Demo: Tweaked Fonts section. 2017-08-17 13:56:16 +08:00
c569676a7b ImVector: Added a const 2017-08-17 11:46:25 +08:00
0be4f66d89 ImFontAtlas: Shuffling some code inside Build() to make upcoming diffs less confusing (nb: we might break compat with forks of Build() like #618) 2017-08-17 11:46:25 +08:00
34d09f2dc8 Merge pull request #1283 from onqtam/imgui_api
Added missing IMGUI_API to ImGuiTextFilter methods implemented in imgui.cpp
2017-08-16 23:29:52 +08:00
fd9460a087 added missing IMGUI_API to ImGuiTextFilter methods implemented in imgui.cpp 2017-08-16 17:52:11 +03:00
68bf5ecbc1 Marked the weird IMGUI_ONCE_UPON_A_FRAME helper macro as obsolete. prefer using the more explicit ImGuiOnceUponAFrame. Removed the broken __LINE__ from IMGUI_ONCE_UPON_A_FRAME 2017-08-16 17:51:44 +08:00
a85a14370b OpenPopupEx() internal tweaks to receive an ImGuiID, BeginPopupContextXXX shortening unnecessarily long identifier. 2017-08-16 15:47:10 +08:00
a9915681eb PushID()/PopID() to not need to mark parent window as Accessed (needlessly waking up the root "Debug" window) (#747) 2017-08-16 14:37:54 +08:00
5ea1865fdb (api breaking) changed parameter order for BeginPopupContextWindow(), note that most uses relied on default parameters completely. 2017-08-16 14:24:41 +08:00
638d77c682 Comments (#402) 2017-08-16 14:19:48 +08:00
e8dd435ccd Merge branch 'mkeeter-is-popup-open' 2017-08-16 13:43:02 +08:00
d2259f65e5 Undo part of 32dbe836d0 to keep the same name for both overloads (#891, #799) 2017-08-16 13:42:41 +08:00
f98376d02b Merge branch 'is-popup-open' of https://github.com/mkeeter/imgui into mkeeter-is-popup-open
# Conflicts:
#	imgui.cpp
2017-08-16 13:19:15 +08:00
a83f7083ed BeginPopupEx() uses ImGuiID internally 2017-08-16 13:06:14 +08:00
e682362f35 TODO list update, comments 2017-08-16 12:54:51 +08:00
f827c8448a Merge pull request #1282 from jadwallis/master
ImFontAtlas: Make font atlas padding between packed glyphs configurable
2017-08-16 10:45:07 +08:00
9239e91dc9 Whitespace fix to previous 2017-08-15 14:12:32 +01:00
718f00d651 Make font atlas packing padding configurable 2017-08-15 14:11:04 +01:00
1e162dfc74 PushStyleVar/PopStyleVar: internal tweaks 2017-08-15 19:19:00 +08:00
18f217e631 Style: Moved position of ImGuiCol_TitleBgCollapsed 2017-08-15 19:06:02 +08:00
5429bd892e ColorEdit4: Added "Copy as..." option in context menu (#346) 2017-08-15 18:30:52 +08:00
668a4bf1bc Demo: style editor output tweak so it is easier to modify the output code.. + TODO list update 2017-08-15 17:48:41 +08:00
0f935248e3 Combo, Inputint, InputFloat, ColorEdit4 all use the small size for little square 2017-08-15 17:46:11 +08:00
18b50f8eba Comments 2017-08-15 11:41:36 +08:00
f8f382221c ImVector: added resize() variant with initialization value 2017-08-15 11:41:00 +08:00
032c222d57 Merge branch 'master' into styles 2017-08-15 10:52:38 +08:00
9bf5028fd3 Merge branch 'master' into navigation 2017-08-15 00:50:59 +08:00
01b99bbe09 TODO list update 2017-08-15 00:36:15 +08:00
cd17af0d33 Renamed 2017-08-15 00:09:03 +08:00
03aae93f3e TODO list update (merging a first batch of things I had laying around, +60 entries) 2017-08-14 21:14:42 +08:00
7b7845d764 ImFont::CalcWordWrapPositionA: minor optimization 2017-08-14 21:00:44 +08:00
a6d69f04c0 PlotHistogram: bars are drawn based on the position of zero (#828) 2017-08-14 17:20:05 +08:00
d258287c92 Revert d2c219d #826 + tidying up ImFont::RenderChar() 2017-08-14 16:53:38 +08:00
3d6e037c23 Comments (#1034) 2017-08-14 16:51:14 +08:00
bd3dfc0eba Moved TODO list to TODO.txt 2017-08-14 16:51:14 +08:00
d2c219df84 Merge pull request #826 from swetland/patch
ImFont: add RenderGlyph() to allow rendering of individual glyphs post-query
2017-08-14 16:50:20 +08:00
c26b29b254 Style: Moving code in a function to make incoming diff easier to parse. 2017-08-14 15:14:46 +08:00
2b7fe73a08 Window size can be loaded from .ini data even if ImGuiWindowFlags_NoResize flag is set (#1048, #1056) 2017-08-14 13:27:19 +08:00
c1e1e015c4 Style: Tweaked default border (which is off by default) to be less noticeable (#707, #1019) 2017-08-14 13:07:55 +08:00
97fccbdb73 Demo: Fixed conflicting id introduced in be9628494a . Added tooltip. 2017-08-14 13:05:03 +08:00
648f75b245 Style: renamed ImGuiCol_Columns_*** to ImGuiCol_Separator_*** (BREAKING), Separator() uses this color as well. (#707, #1019) 2017-08-14 13:04:32 +08:00
6a4064e5f2 PathArcToFast: Minor renaming for clarification. Comments. 2017-08-14 12:25:35 +08:00
8c61a4eb4c Fonts: Adding references to the fact that .OTF fonts are supported (but haven't renamed the entry points) 2017-08-14 11:29:54 +08:00
41076188ca Merge pull request #1277 from luk1337/master
ColorPicker: Fix broken ImGuiColorEditFlags_NoAlpha flag check - not restoring Alpha when clicking on reference color.
2017-08-12 12:53:13 +08:00
8352d43a0c Fix broken ImGuiColorEditFlags_NoAlpha flag check
* Fixes warning:
  imgui.cpp:9295:98: warning: enum constant in boolean context [-Wint-in-bool-context]
2017-08-11 22:52:40 +02:00
908b025c3c Fixed (unlikely) Ini saving crash if the ImGuiWindowFlags_NoSavedSettings gets removed from a window after its creation (#1000) + minor FAQ tweaks 2017-08-12 01:23:39 +08:00
0f126a5b07 Update README.md (small wording bits, inspired by #1093) 2017-08-12 01:05:24 +08:00
b4fe5d36a4 Examples: OpenGL3+SDL: Fix types to uses GlEnum (#1147) 2017-08-12 00:46:58 +08:00
048322f3fd Merge pull request #1147 from TinyTinni/master
Examples: OpenGL3+GLFW3: Fix types to uses GlEnum (#1147)
2017-08-12 00:43:34 +08:00
5eef7dd82f Demo: Consoles: Added "Copy" button to demonstrate LogToClipboard 2017-08-12 00:43:55 +08:00
08265bfbd9 RenderArrow(): fix warning. re-orderer lines to match enum order. 2017-08-11 14:44:53 +08:00
e3fae56089 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
2017-08-11 14:30:17 +08:00
d7cad903aa Documentation tweaks 2017-08-11 14:29:27 +08:00
73f9c9d80c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
2017-08-11 13:44:25 +08:00
7e452ec737 Renamed ImGuiSetCond_XXX type and enums to ImGuiCond_XXX, kept old enums under #ifdef IMGUI_DISABLE_OBSOLETE_FUNCTIONS 2017-08-11 13:36:28 +08:00
53d1b1e929 ColorPicker: Fixes for when ImGuiColorEditFlags_NoOptions flag is set: always read a default picker type + forward flag to sub ColorEdit widgets. (#346) 2017-08-10 10:25:50 +08:00
fed18d3203 Removed old ValueColor() helpers. (#346) 2017-08-09 23:04:26 +08:00
fc5ab0cb8d RenderCheckMark() tidying up 2017-08-09 22:56:01 +08:00
4fd148f4f9 Added ImFontAtlas::GlyphRangesBuilder helper + doc 2017-08-09 22:42:03 +08:00
43e2abbee3 Comments, FAQ entry (#586, #1105) 2017-08-09 20:27:59 +08:00
55b99d753c Minor string typo 2017-08-08 23:12:23 +08:00
059e838b2c Merge branch 'master' into navigation 2017-08-08 18:04:38 +08:00
be9628494a Demo: Rearranged everything under Widgets in a more consistent way. 2017-08-08 18:04:31 +08:00
453ad17a09 Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
2017-08-08 17:50:08 +08:00
d888de4483 Demo: Merged a few demo tweaks from navigation branch to minimize drift. 2017-08-08 17:49:12 +08:00
30d1e5712a Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_internal.h
2017-08-08 17:30:32 +08:00
a78ef7a369 Comments 2017-08-08 16:07:17 +08:00
942cb0e1f2 Added SetColorEditOptions(). ColorPicker4: context menu to select picker type and alpha bar. Reorganized flags (again!). (#346) 2017-08-08 15:54:20 +08:00
d952a8d3bf Demo: Color widget demo tweaks (#346) 2017-08-08 14:49:45 +08:00
a4012fd5b2 Merge branch 'master' into 2016-02-colorpicker 2017-08-08 11:30:10 +08:00
23fae61109 Merge branch 'master' into 2016-07-navigation
# Conflicts:
#	imgui.cpp
2017-08-08 11:29:54 +08:00
b5ad88627d Merge various documentation tweaks, comments, todos from the Navigation Branch to reduce drift a little 2017-08-08 11:27:48 +08:00
a1bcc8392e Fixed GetScrollMaxX() debug left-over from 7096fd8500 (#1271) 2017-08-08 11:15:34 +08:00
03700ad15e Merge remote-tracking branch 'origin' into 2016-07-navigation 2017-08-07 22:51:18 +08:00
1c991b525a Merge remote-tracking branch 'origin' into 2016-02-colorpicker 2017-08-07 22:34:30 +08:00
0ab722c3c5 Columns: First first column appearing wider than others (#1266) 2017-08-07 22:28:09 +08:00
d43c25d8f4 SetScrollHere() tweak to make the code a little less confusing 2017-08-07 21:54:41 +08:00
e36b41cbd0 Fixed Y scroll aiming when Horizontal Scrollbar is enabled (#665). Tweak log demo. 2017-08-07 21:53:57 +08:00
7096fd8500 Fixes for Vertical Scrollbar not automatically getting enabled if enabled Horizontal Scrollbar straddle the vertical limit. (#1271, #246) 2017-08-07 19:41:22 +08:00
233a6efeba Fixed GetScrollMaxX(), GetScrollMaxY(). Tweak demo to display more data. Using functions in Begin(). (#1271) 2017-08-07 18:35:15 +08:00
6d60e0fc58 Fonts readme tweaks, links 2017-08-07 15:21:21 +08:00
f4c0134f9f Moved ColorEdit, ColorPicker declaration in their own section of imgui.h, minor comments adjustment (#346) 2017-08-06 18:08:58 +08:00
cdea8ca94f Demo: Comment about 'static' and some tweaks (#1267) 2017-08-06 11:07:52 +08:00
46c73cccff Popups window can be moved (if they don't have explicit positions provided by user, or e.g. sub-menu popup) (#1252) 2017-08-05 19:47:52 +08:00
d762f1dbfb Comments, clarification about io.WantCaptureMouse, io.WantCaptureKeyboard flags timing and NewFrame(). (#1262) 2017-08-05 19:15:03 +08:00
95f2706d1c Clipboard: [windows] Fixed not closing win32 clipboard on early return. (#1264) 2017-08-05 16:05:48 +08:00
40ac84d701 DataTypeApplyOpFromText: renamed local variables + comments to avoid confusion about the fact that int and float paths are not totally symetrical. (#671) 2017-08-03 16:41:29 +08:00
f6460970c5 ColorPicker: Hue wheel + SV triangle picker mode (mode selection flags still wip, missing context menu and persistent options). (#346) 2017-07-31 21:20:42 +08:00
fb54dce71c Internals: Added ImLineClosestPoint, ImTriangleClosestPoint helpers. Changing ImVec2 arg to const ImVec2& 2017-07-31 21:11:41 +08:00
1a26d0bc98 Internals: Added ImDot(), ImRotate(), ImLerp(v2,v2,float) helpers. 2017-07-31 18:56:51 +08:00
72da4081f8 Internals: Added ImTriangleBarycentricCoords() helper. Renamed ImIsPointInTriangle() to ImTriangleContainsPoint(), with different arg order. 2017-07-31 17:54:40 +08:00
2f508c7073 ColorEdit: Extract ColorOptionsPopup() function out of ColorEdit4(). (#346) 2017-07-31 17:32:07 +08:00
10ef5a63f0 ColorPicker: Rearrange code to introduce alternate HSV picker/selector with simpler diff. (#346) 2017-07-31 16:50:28 +08:00
cc3cce7567 Comments, minor tidying up. 2017-07-31 16:48:45 +08:00
e63ebd997f Use ~IM_COL32_A_MASK instead of IM_COL32(255,255,255,0) 2017-07-31 12:25:27 +08:00
70ee41b8b3 ColorPicker: Reordered drawing code to match left-to-right display. Extra comments. (#346) 2017-07-31 12:08:20 +08:00
4b2f157fb1 Renamed ImGuiColorEditFlags_ModeMask_ to ImGuiColorEditFlags_InputsModeMask_ (#346) 2017-07-31 11:50:14 +08:00
efbb1ae04e ColorPicker4: Fixed forwarding _HDR flag from ColorPicker4 back to ColorEdit4 components. (#346) 2017-07-30 23:22:48 +08:00
3ee969c3e3 ColorPicker: Alpha bar using a checkerboard. (#346) 2017-07-30 23:11:59 +08:00
3075d8bcd4 ColorEdit4: Preliminary support for ImGuiColorEditFlags_HDR flag (currently only lift limits). (#346) 2017-07-30 23:08:43 +08:00
f6a89779c8 ColorEdit4: Hex input clamps integer components to 0..255 range during printout (#346) 2017-07-30 23:06:07 +08:00
91a4f5df25 Demo: Tweaks 2017-07-30 18:28:59 +08:00
e1a00c3d26 ColorButton: Added frame border when style border are off. (#346) @jdumas 2017-07-30 18:09:34 +08:00
65a27732d8 ImGuiColorEditFlags: Made 0x01 unused for backward compatibility with old bool. Various comments tweaks. (#346) 2017-07-30 17:57:38 +08:00
90fcd4a829 Renamed ImGuiColorEditFlags_NoColorSquare to ImGuiColorEditFlags_NoSmallPreview (#346) 2017-07-30 17:55:42 +08:00
3fe7739b5d ColorPicker: Honor ImGuiColorEditFlags_NoTooltip if for some reason user wants that. (#346) 2017-07-30 17:53:37 +08:00
4d844ffde1 Demo: custom ColorPicker popup example tweaks (#346) 2017-07-30 17:43:19 +08:00
f040547a5f Demo: custom ColorPicker popup example (#346) 2017-07-30 17:37:28 +08:00
3ffcc72f98 ColorPicker: Better cursor/color preview over the color matrix. (#346) 2017-07-30 16:57:44 +08:00
390188dfa9 Comments about parts of imgui_internal.h that will self-destruct. 2017-07-30 16:16:06 +08:00
fef8aac523 ColorPicker4: hue/alpha bars draw arrows that would look right on all background. RenderArrow helper. (#346) 2017-07-30 16:15:52 +08:00
35186a1165 Demo: Comments (#346) 2017-07-29 17:35:24 +08:00
db436b183b Merge branch 'master' into 2016-02-colorpicker 2017-07-29 17:24:06 +08:00
3926bd08e1 ColorPicker: Added ImGuiColorEditFlags_NoSidePreview flag + optional reference color. Added more demo code. (#346) 2017-07-29 17:23:32 +08:00
e84224bcd5 ColorEdit4: Can open context menu from inputs/drags as well (#346) 2017-07-29 17:00:56 +08:00
6c82572a35 ColorEdit4: Fixed not returning true when clicking on the Original/Ref color in Picker spawned from ColorEdit4 + shallow tidying up (#346) 2017-07-29 16:11:20 +08:00
7537dff806 ColorEdit4: Picker spawned from ColorEdit4 has a preview for original/previous color with revert button - WIP not really happy with it being in ColorEdit4 code (#346) 2017-07-29 15:54:45 +08:00
6bc1572d31 ColorPicker: Comments. Single input value mode allow access to context-menu options. (#346) 2017-07-29 15:50:24 +08:00
973d4a361b ColorPicker: Forward AlphaPreview flag to its individual inputs/sliders. Split code into extra lines to make logic more readable. (#346) 2017-07-29 14:32:41 +08:00
cdcda9ff68 ColorEdit4: Store edit options per window. Demo: Letting user change edit mode. (#346) 2017-07-29 14:01:05 +08:00
c36d59a42a ColorEdit, ColorPicker: AlphaPreview, AlphaPreviewHalf are explicit. Updated demo and using in style editor. 3x3 checkerboard more readable in half mode. (#346) 2017-07-27 17:16:46 +08:00
b1cbd87a94 ColorEdit4: Minor tidying up. (#346) 2017-07-27 16:49:57 +08:00
bfec9c657e ColorButton: Pretty much gave up with getting the checkerboard + AA + rounding + blending + offset all working together with every combination under the sun. It works as long as you don't sneeze. (#346) 2017-07-27 16:26:32 +08:00
a9df6bfe86 ColorButton: Fixed rounding corners artefact when there is a single cell. 2017-07-27 14:04:58 +08:00
b7a563276d ColorTooltip: Honor ImGuiColorEditFlags_HalfAlphaPreview flag by calling ColorButton(). Added HalfAlphaPreview to demo. (#346) 2017-07-27 11:07:46 +08:00
c1c2b2400a ColorButton: Undo ce203f99f5 2017-07-27 11:04:39 +08:00
2e37db9002 ColorEdit4: Fix not forwarding ImGuiColorEditFlags_AlphaBar flag to ColorPicker4 (#346) 2017-07-27 10:49:01 +08:00
27e5b09af1 ColorButton: ImGuiColorEditFlags_HalfAlphaPreview flag to render both opaque and alpha-with-checkerboard versions of the peak preview (#346) 2017-07-26 23:07:35 +08:00
69dd1ed583 RenderColorRectWithAlphaCheckerboard() in one layer to shunt out anti-alasing artefacts when rounded. Added ImLerp(int,int,float). (#346) 2017-07-26 22:20:43 +08:00
76bae2f015 ColorEdit, ColorPicker: Fixed broken build due to commiting an undesirable change in 78a8f798c5 (#346) 2017-07-26 17:46:48 +08:00
19c6a9c0e0 ColorButton, ColorPicker: painfully made RenderColorRectWithAlphaCheckerboard more friendly to using Rounding and Border in style, still not perfect :( (#346) + comments 2017-07-26 17:38:33 +08:00
6796e771fd ColorEdit, ColorPicker: added ImGuiColorEditFlags_NoAlphaPreview flag (#346). Reorder flags again. 2017-07-26 16:28:01 +08:00
d29a4c5e5c Demo: Removed the color button from the context menu example because it is misleading now that our color widget have tooltip/context menus themselves. (#346) 2017-07-26 16:00:47 +08:00
c84acf3f56 Comments 2017-07-26 15:59:57 +08:00
ce203f99f5 ColorButton: Push a text baseline offset if higher than g.FontSize. (#346) 2017-07-26 15:52:17 +08:00
78a8f798c5 ColorEdit, ColorPicker, ColorButton: Display grid under transparent colors (WIP) (#346) 2017-07-26 15:24:09 +08:00
df56879883 imDrawList::PathRect() uses ImGuiCorner_ enums. Should fully promote this to imgui.h at some point. 2017-07-26 14:53:15 +08:00
9d0e5beaa7 GetColorU32(ImGuiCol): avoid using GImGui twice since some implementation make it a TLS-ish variable with non-trivial accessors. 2017-07-26 14:35:50 +08:00
95fe11b5bf Added GetColorU32(u32) variant that does the style alpha multiply without a floating point round trip. Not 100% sure about that before the signature may seem ambiguous? But also make using imgui+drawlist more consistent in end-user extensions. 2017-07-26 14:34:59 +08:00
6e04cedd5f Updated link to binaries 2017-07-25 20:06:18 +08:00
f39cd61bf0 Reorder ImGuiColorEditFlags_ (#346) 2017-07-23 19:08:58 +08:00
4f1f251bd2 ColorEdit, ColorPicker: Context / options menu allows to toggle between u8 and float display. Using short words to avoid localization. (#346) 2017-07-23 19:02:26 +08:00
8d32e8dae6 ColorPicker: Handle out of 0..1 range colors when displaying the cross hair. (#346) 2017-07-23 18:48:45 +08:00
7b2d79cffd ColorEdit: Added ImGuiColorEditFlags_Float flag to display and edit drag values in 0.0..1.0 range instead of 0..255. (#346) 2017-07-23 18:44:32 +08:00
4def2ce339 ColorPicker: Demo tweaks (#346) 2017-07-23 17:55:39 +08:00
645875a240 Examples: Enable vsync by default in example applications (#1213, #1151) 2017-07-23 16:13:17 +08:00
166e8f6261 Examples: OpenGL2+GLFW/SDL: Added commented out glUseProgram(0) in main.cpp for visibility (#1116) 2017-07-23 15:57:39 +08:00
c8794c246e Examples: Vulkan: Batch file builds both debug and release 2017-07-23 15:22:21 +08:00
a8b202782f ColorPicker,ColorButton: Honor Border/Shadow style settings (#346) 2017-07-22 19:37:13 +08:00
790d0eb5be ColorPicker: Added ImGuiColorEditFlags_AlphaBar option (#346) 2017-07-22 19:24:39 +08:00
4355b2e422 ColorPicker: Honor ImGuiColorEditFlags_NoColorSquare flag + comments (#346) 2017-07-22 19:04:10 +08:00
91bf8fd689 ColorPicker,ColorEdit: Demo code (#346) 2017-07-22 18:01:29 +08:00
15be7e1a71 ColorPicker: new prototype for ColorButton() .Added _NoTooltip, _NoLabel flags. Changing _Alpha flag to _NoAlpha makes so much much sense and allow to revert default parameters to zero. ColorEdit4/Picker4 don't attempt to read/write fourth component, making ColorEdit3/Picker3 shorter/faster. Tooltip and Picker called from ColorEdit can have a title. Picker shows colored square. Moved ColorTooltip() to imgui_internal.h (#346) 2017-07-22 18:01:16 +08:00
dd9c2f97a8 ColorPicker: Renamed _NoSliders to _NoInputs (#346) 2017-07-22 17:38:38 +08:00
eba33deaf3 ColorPicker: Longer white line for hue/alpha selection, scale down according to ItemInnerSpacing. (#346) 2017-07-22 17:35:18 +08:00
1edeea2f5a ColorPicker: Removed extraneous ImGui:: prefixes + minor comments (#346) 2017-07-22 16:58:28 +08:00
e79d7553b0 ColorPicker: Don't use Alpha setting when enabling all 3 sliders (#346) 2017-07-22 16:52:41 +08:00
97bedd704c Better, unified color tooltip (#346) 2017-07-21 03:06:25 +08:00
c8553817d9 Merge branch 'master' into 2016-02-colorpicker 2017-07-21 02:34:19 +08:00
138a9dbaeb Tooltip: SetTooltip() is expanded immediately into a window, honoring current font / styling setting. Add internal mechanism to override tooltips (not exposed in BeginTooltip yet because bools are evil) (#862) 2017-07-21 02:21:48 +08:00
100d30a0a1 Comments about IMGUI_DISABLE_TEST_WINDOWS (#1240, #169) 2017-07-20 23:12:58 +08:00
e4007f7145 Internals: Move GetVisibleRect() a few functions above so it gets to hang out with its peers. 2017-07-20 22:30:56 +08:00
85d9c8fb46 Internals: renaming IndexWithinParent to OrderWithinParent 2017-07-20 21:25:31 +08:00
25f3717a1c Removed IsPosHoveringAnyWindow() which was severaly broken and misleading (most people want to use io.WantCaptureMouse). Added dummy function with assert for now. (#1237) 2017-07-20 20:57:46 +08:00
3e4cb40d45 Merge branch 'master' into 2016-02-colorpicker 2017-07-19 14:53:25 +08:00
d1145e990d Comments tweak (#1231) 2017-07-16 13:07:11 +08:00
41f944238b Comments about GlyphExtraSpacing (#1192) 2017-07-15 18:03:43 +08:00
1987e23ce5 ImDrawList::PrimReserve() minor renaming of locals to make things clearer 2017-07-15 17:52:52 +08:00
f3cf5e0322 Examples: SDL+GL3: Fixed old comments (#1229) 2017-07-15 17:50:01 +08:00
8261d9ff30 Comments (#1172, #1231) 2017-07-15 17:11:53 +08:00
be7fa76fdd Fixed Clang unknown-warning-ignored warning by ignoring it..... we are truly living in a special time (#1090) 2017-07-15 13:27:44 +08:00
52df0032a5 Travis: Blind fix for SDL+GL3 project on the Travis build setup.
Examples: SDL+GL3: Makefile blind fix for OSX (untested) (#1229, #1209)
2017-07-15 13:19:13 +08:00
358e667b7a Travis: Adding the SDL+GL3 project on the Travis build setup (for both Linux and OSX).
Examples: SDL+GL3: Makefile blind fix for OSX (untested) (#1229, #1209)
2017-07-15 13:13:09 +08:00
0fe5728971 Examples: SDL+GL3: Makefile fix for Linux (#1229, #1209) 2017-07-15 13:07:43 +08:00
03e6bfe84a Comments 2017-07-14 19:49:11 +08:00
cb6d893a13 Comments (#383, #1224) 2017-07-14 18:12:40 +08:00
afae9398cb Comments. Removed sort-of duplicate access to GImGui->Font in ImDrawList::AddText() so it's only in one place. 2017-07-14 17:49:42 +08:00
1094afc6be Merge pull request #1209 from fr500/master
Examples: Fix Makefile for non-6.3 MINGW versions, added SDL+GL3 Makefile.
2017-07-09 17:29:57 +02:00
8b6896faf9 add SDL GL3 makefile 2017-07-02 21:38:27 -05:00
d43695b748 fix gl2 sample too 2017-07-02 21:28:56 -05:00
e0aac34672 fix compilation on MINGW 2017-07-02 11:21:24 -05:00
d3f4309491 Comments about ImGuiStyleVar enum (#1198) 2017-06-24 13:11:46 +02:00
1e981f00e5 Comments 2017-06-21 13:50:31 +02:00
a5e0210902 Revert 978c84d2e9 because int32 >> 32 tends to warns on some compilers/settings. Add ImU64 type. (#1184) 2017-06-19 21:19:48 +02:00
e47cf79773 Comments tweaks, typos (#1188) 2017-06-17 19:30:30 +02:00
4c8d87d3fb Comments (#1188) 2017-06-17 19:25:58 +02:00
978c84d2e9 Removed dependency on int64_t type (unvailable in VS2008) by rewording an assert (#1184) 2017-06-16 14:08:17 +02:00
12d265fa31 Version 1.51 WIP tag 2017-06-13 11:30:22 +02:00
a2f7c40e30 Fixed comment (#1178) 2017-06-13 11:29:21 +02:00
1cd1ca259e Update README.md 2017-06-02 14:01:06 +02:00
5e1caaaef3 Version 1.50 2017-06-02 12:22:34 +02:00
7ad84b22f8 Comments 2017-06-02 12:13:47 +02:00
99ff2ec6fb Examples: DirectX9/10/11: Comments 2017-06-02 11:28:48 +02:00
2acbd1ac2d Using ImTextureID instead of void* in ImFontAtlas, not sure why I didn't do that earlier, make things more clear 2017-06-02 11:25:45 +02:00
51c200ac0d Examples: DirectX9: Clarified texture release code (#1163) 2017-06-02 11:25:45 +02:00
32f5ef4f98 Added Pascal binding 2017-06-01 12:25:01 +02:00
62c4698a73 Further clarifications of the key indices passed to IsKeyXXX functions (#1159) 2017-05-27 17:55:48 +02:00
8228dc20df Merge branch 'master' into 2016-07-navigation 2017-05-26 13:44:08 +02:00
c038339a4c Merge branch 'master' into 2015-02-colorpicker 2017-05-26 13:43:36 +02:00
9da53bcecd ImFontConfig: Removed MergeGlyphCenterV in favor of a more multipurpose ImFontConfig::GlyphOffset. (Breaking change) 2017-05-26 13:42:36 +02:00
026d021df1 Demo: Fixed warnings introduced in 0828a1fd6c 2017-05-26 13:40:53 +02:00
c5c77a3476 ImFontConfig: Added GlyphOffset to explicitely offset glyphs at font build time, useful for merged fonts. May remove MergeGlyphCenterV soon. 2017-05-26 13:36:52 +02:00
3a7111cfcd casting to GLint on init 2017-05-17 21:42:34 +02:00
ad3c1e68ab save and restore sampler in GL 3 examples 2017-05-16 16:43:59 -07:00
0981d8e381 fixes types 2017-05-16 12:49:47 +02:00
0828a1fd6c Fixed computation of ImFont::MetricsTotalSurface not taking oversampling into account 2017-05-14 16:27:10 +02:00
bd9868f447 Scrollbar: Avoid rendering when sizes are negative to reduce glitches (not sure how this ever slipped through - perhaps because of WindowMinSize settings). 2017-05-13 20:25:09 +02:00
df52f46b13 Comments, documentation (#1121) 2017-05-02 10:43:00 +02:00
9614552eba README.md added link to Nicolas Guillemot flashtalk (#1099) 2017-05-01 17:16:40 +02:00
b0db625cab Examples: Vulkan: Fixed an extra validation (tested on Windows with VulkanSDK 1.0.46.0) (#1042) 2017-05-01 17:07:53 +02:00
f87b152522 Examples: Vulkan: Various very minor stylistic fixes, fixing typos in comments, etc. (#1042 #1043) 2017-05-01 17:07:05 +02:00
201d589714 Image presentation now depends on the completeness of command buffer submission through semaphores.
To maintain maximum frame rate we render to the last acquired swapchain image but present the last but one drawn image. This behavior is optional through conditional compilation macros.
2017-05-01 16:54:49 +02:00
a9add1ce63 Removed redundant VkResult plugged into VkPresentInfoKHR pResults attribute. This is only meaningful when we present directly to multiple swapchains. In that case we can an VkResult per swapchain. 2017-05-01 16:53:54 +02:00
eaae754211 Removed redundant barrier.
The transition of the swapchain image(s) can happen implicitly in the renderpass. This approach has been stated to be more efficient than using an explicit barrier.
See "Vulkan Programming Guide", Chapter 7: "Graphics Pipelines", section "Renderpasses".
2017-05-01 16:52:52 +02:00
33874073dc Fixed all issues found by vulkan debug report. Reasons for the major design changes are commented. 2017-05-01 16:48:16 +02:00
89d03d5cca Examples: Vulkan: Disable IMGUI_VULKAN_DEBUG_REPORT by default. Update .bat files for newer VulkanSDK. 2017-05-01 16:46:57 +02:00
56dff3a080 Vulkan backend: optionally enabling vulkan validation layers and debug report callback
Additional layer, extension and the callback itself are used/created when IMGUI_VULKAN_DEBUG_REPORT is defined. The callback reports seven (potential!) errors which will be fixed with another pull request.
2017-05-01 16:32:45 +02:00
55be2f0722 Merge branch 'ParticlePeter-g_FrameIndex_not_used_fix' 2017-05-01 16:23:27 +02:00
9fd3ba871b Merge branch 'g_FrameIndex_not_used_fix' of https://github.com/ParticlePeter/imgui into ParticlePeter-g_FrameIndex_not_used_fix 2017-05-01 16:21:43 +02:00
5418bb19ff Examples: Vulkan: windows batch file for 64-bits. 2017-05-01 16:14:13 +02:00
497381dc3d Comments 2017-05-01 15:53:50 +02:00
23e7cdcee8 Merge branch 'martty-vk_small_fix' 2017-05-01 15:27:05 +02:00
ac2eb4b960 Merge branch 'vk_small_fix' of https://github.com/martty/imgui into martty-vk_small_fix 2017-05-01 15:26:29 +02:00
c3d9e0a6eb Examples: SDL2: Tweaked batch files for Win32. 2017-05-01 15:00:42 +02:00
475446b8b9 Merge pull request #1080 from SaschaWillems/master
Examples: Vulkan: Small changes to be in line with specs and fix validation layer errors/warnings
2017-05-01 14:50:34 +02:00
b3d237a5ce Examples: SDL2: Added build .bat files for win32. 2017-05-01 13:47:59 +02:00
dbfd5d6e9a Ignoring unreasonnable Clang -wformat-pedantic warning (#1090)
See e.g.
http://clang-developers.42468.n3.nabble.com/The-p-conversion-and-cast-to-void-td4044226.html
2017-05-01 12:55:47 +02:00
27b83a2cac Merge branch 'master' into 2016-07-navigation 2017-05-01 12:38:33 +02:00
89b1497843 Merge branch 'master' into 2016-02-colorpicker 2017-05-01 12:37:34 +02:00
a0a6c8a2ef Renamed ImDrawList::PathFill() to ImDrawList::PathFillConvex() for clarity. (breaking API) 2017-05-01 12:36:46 +02:00
7cd55ce939 Merge branch 'ecraven-addimagequad' 2017-05-01 12:34:45 +02:00
6517d68cdf ImDrawList::AddImage* renamed uv_ parameters to be more consistent. Fix AddImageQuad to use IM_COL32_A_MASK (#1009) 2017-05-01 12:34:32 +02:00
f06b20185f Merge branch 'addimagequad' of https://github.com/ecraven/imgui into ecraven-addimagequad 2017-05-01 12:25:25 +02:00
884c435fd3 Merge branch 'greggman-fix-opengl3-example' 2017-05-01 12:21:05 +02:00
9fdd66330f Examples: SDL2+GL3: Fix blend func state save/restore (#1120) 2017-05-01 12:20:51 +02:00
01286f6636 Fix blend func state save/restore
AFAIK there's no such enum as `GL_BLEND_SRC` or `GL_BLEND_DST` in OpenGL3 and OpenGL4.

Maybe they're left over from previous versions? They don't even seem to exist in OpenGL 2.1. In fact checking they were deprecated in OpenGL 1.5 (they exist in 1.3)
2017-05-01 16:05:45 +09:00
d878462866 End() avoid calling Columns() if no columns set is open, not sure what it wasn't the case.
Pros: Faster. Avoid early crashes StackId underflow that are meant to be more gracefully caught by CheckStacksSize() (with more explicit assert). Cons: Excercise less code.
2017-04-30 12:10:45 +02:00
bbd44b4edd Clarified asserts in CheckStacksSize() when there is a stack mismatch 2017-04-30 12:10:45 +02:00
a606f2dcb5 Update README.md 2017-04-28 13:43:11 +02:00
9ab9a846a1 Update README.md 2017-04-28 13:40:50 +02:00
6e69923e35 Update README.md 2017-04-28 13:32:04 +02:00
32390a252f Added UnrealEngine_ImGui link 2017-04-28 10:28:52 +02:00
659b3fd259 Add ImDrawList::AddImageQuad
Adds a function
  AddImageQuad(user_texture_id, a, b, c, d, uva, uvb, uvc, uvd, col)
that shows a texture on a full quad. This allows showing arbitrary
rotations of a texture.
2017-04-28 10:04:20 +02:00
104936ab1a imconfig: Added comment about redefining ImDrawIdx 2017-04-26 19:12:46 +02:00
f030087f8e Comments to redirect people to OpenGL3 examples (#1116) 2017-04-26 18:27:10 +02:00
50b4b29beb Examples: GLFW+GL3, SDL+GL3: Fixed modifying bound Texture0 (#1087, #1088, #1116) 2017-04-26 18:16:59 +02:00
8df58e2cfd MenuItem should only be selected on release 2017-04-25 15:15:56 +02:00
670775ac22 Added assert/comment about using MergeMode (#1100) 2017-04-13 20:01:24 +02:00
15d7f20d4f Update README.md 2017-04-01 18:44:34 +02:00
0e1950f7d6 Comments about child menu positioning (#1086) 2017-04-01 18:01:47 +02:00
4b125e7d5c Merge pull request #1078 from nem0/master
Added missing IMGUI_API macros in ImGuiTextEditCallbackData methods.
2017-03-29 14:51:26 +02:00
4da26d85cd Clip negative scissor offsets to zero 2017-03-26 19:54:59 +02:00
12deb53b11 Set required depth member for buffer image copy 2017-03-26 19:38:05 +02:00
7a37a1c3f6 do not export inline function, it causes problems on some compiers 2017-03-24 12:45:09 +01:00
316555f9de missing API 2017-03-24 10:10:22 +01:00
288dccd5a5 Merge branch 'master' into 2016-07-navigation 2017-03-17 21:30:16 +01:00
e10ceebd36 ImFont: Store the texture surface used to get an idea of how costly each font is. 2017-03-17 21:29:57 +01:00
b84eac53d8 ImFont: Reorder field initialization to match declaration order 2017-03-17 21:29:28 +01:00
931bc61345 Comment about ImGuiInputTextFlags_CtrlEnterForNewLine for InputTextMultiline() 2017-03-16 21:55:36 +01:00
2a3c61e5f8 Merge branch 'master' into 2016-07-navigation 2017-03-16 19:31:12 +01:00
92ea8d1131 Merge branch 'master' into 2016-02-colorpicker 2017-03-16 19:28:30 +01:00
9a068ce005 Merge pull request #1068 from codecat/fix-colorbutton
ColorButton: fix showing wrong hex value for alpha in tooltip.
2017-03-16 09:51:04 +01:00
fdd11658eb Fix ColorButton showing wrong hex value for alpha 2017-03-15 21:25:29 +01:00
30954b4a88 Merge latest from ocornut/imgui 2017-03-13 13:26:55 -07:00
337019a68f typo, #elif instead of #else, fixed 2017-02-26 17:16:37 +01:00
fd90da38e1 Vulkan backend: g_FrameIndex not used fix -> huge perf gain
Added a macro to switch between unlimited frame rate (VK_PRESENT_MODE_IMMEDIATE_KHR) and limited to 60 fps (VK_PRESENT_MODE_FIFO_KHR). Only the latter mode is guaranteed to be available, but the former one most likely is.
2017-02-26 13:25:54 +01:00
e0244c8f62 Fix scissor offset being negative 2017-02-11 12:20:12 +01:00
509df3e279 Fix new Vulkan validation warnings 2017-02-11 12:19:44 +01:00
6384eee34f Minor comments (#998) 2017-01-29 16:53:01 +01:00
4653197ca4 Update README, kinder 2017-01-28 23:26:25 +01:00
a7cf369e71 Update README.md 2017-01-28 23:14:35 +01:00
8e8117c7b1 stb_truetype update (with OpenType, Type 2 font handling) (#976) 2017-01-21 19:23:47 +01:00
b8043d3ee5 Internal: Renamed ImLoadFileToMemory to ImFileLoadToMemory to be consistent with ImFileOpen + fix mismatching .h name (#917) 2017-01-14 13:47:16 +01:00
b6c0227add Merge branch 'master' into 2016-02-colorpicker 2017-01-11 21:03:35 +01:00
c76be71acf Merge branch 'master' into 2016-07-navigation 2017-01-11 21:03:25 +01:00
6257b5814a Added an explicit (internal) ClearActiveID() helper and removed the default NULL window parameter to internal SetActiveID(), 2017-01-11 20:56:55 +01:00
cffdbfe01b Comments (#972) 2017-01-10 10:36:07 +01:00
714beb217c Demo: Console: Fixed a completion bug when multiple candidates are equals and match until the end. 2017-01-07 20:18:45 +01:00
68df09cf47 Fixed word-wrapping which would never wrap after a 1 character word. (thanks @sronsse) 2017-01-01 20:11:40 +01:00
a60b2cc645 Merge branch 'master' into 2016-02-colorpicker 2016-12-23 12:15:58 +01:00
bb4d19ff7c Merge branch 'master' - merge fix 2016-12-23 12:15:09 +01:00
fdc70456f4 Merge branch 'master' into 2016-07-navigation 2016-12-23 12:13:52 +01:00
db593220fc Comments, clarified use of io.MouseDelta (#942)
(ImGuiIO structure layout changed)
2016-12-23 11:34:23 +01:00
f4f0ee750f Update README.md 2016-12-21 21:13:43 +01:00
1396659b72 Examples: Speculative fix for OSX Makefile to make Travis happy (re #812) 2016-12-21 20:12:43 +01:00
081aec482b Merge pull request #931 from nlguillemot/master
Combo, ListBox: Extra const correctness.
2016-12-21 20:06:04 +01:00
baa2e3b451 Minor documentation tweaks 2016-12-21 18:42:52 +01:00
d74a3349e9 Examples: DirectX9: Explicitely setting viewport to match that other examples are doing (#937) 2016-12-19 23:15:38 +01:00
52308a54f8 Demo: comments 2016-12-12 11:05:41 +01:00
36d78e0565 const correctness for Combo and ListBox
Since Combo and ListBox only read and display the list of items, they
should not modify the pointers inside the array of pointers passed in.
Adding "const" here makes it possible to call these functions with such
an array of const pointers. Previously, a cast to "const char**" was
required as a workaround, otherwise there was a compile error.
2016-12-04 12:54:31 -08:00
55d651812d Renaming and massaging internal Settings/Ini functions (#923) 2016-11-29 21:55:20 +01:00
0b6211f907 Fixed clicking on a window's void while staying still overzealously marking .ini settings as dirty (#923) 2016-11-29 21:46:21 +01:00
9235e0da46 SliderInt, SliderFloat(): Fixed edge case where style.GrabMinSize being bigger than slider width can lead to a division by zero (#919) 2016-11-29 21:07:26 +01:00
ca9a918535 SliderInt(): Fixed reverse direction mode when (v_max-v_min)==-1 (#854) (+ ref #919) 2016-11-28 20:43:11 +01:00
bbd0a37bd2 ImFileOpen: MinGW uses _wfopen() codepath to support UTF-8 filenames (#917) 2016-11-28 20:30:36 +01:00
449c47c789 SliderInt, SliderFloat() interacting enforce modifying to the value to be consistent with other widget behaviors (#919) 2016-11-28 11:05:24 +01:00
94c77edfa5 SliderInt, SliderFloat() Better display support for v_min==v_max range. (#919) 2016-11-28 11:03:48 +01:00
37a27a8025 Merge branch 'master' into 2016-07-navigation 2016-11-27 18:35:48 +01:00
0a483379af Split SliderBehaviorCalcRatioFromValue() out of SliderBehavior(), fix + Not using fabsf() anymore 2016-11-27 18:34:46 +01:00
004e863727 Split SliderBehaviorCalcRatioFromValue() out from SliderBehavior() 2016-11-27 18:32:24 +01:00
67c6d6026a Nav: SliderFloat() Fixed non-linear sliders in Nav branch (#787, #323) 2016-11-27 18:29:38 +01:00
3028ccc25b Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-11-27 18:25:20 +01:00
f4cf972ea9 Merge branch 'master' into 2016-02-colorpicker 2016-11-27 18:21:14 +01:00
219e4fb8fb SliderInt, SliderFloat: Passing v_min==v_max disable setting value from clicking/dragging (#919) 2016-11-27 17:49:04 +01:00
a868c32ed1 SliderInt, SliderFloat: Renaming 2016-11-27 17:43:32 +01:00
61d5b46307 SliderInt, SliderFloat(): support reverse direction (#854) 2016-11-27 17:38:33 +01:00
104b381023 Using _wfopen() under Windows+MSVC because fopen() doesn't support UTF-8 encoding. Wrapped as ImFileOpen(). (#917) 2016-11-27 16:43:36 +01:00
66c4281290 Began improvements to columns API by splitting the Columns() function into BeginColumns() and EndColumns() and adding additional flags. The columns data still needs to be placed into a stack. 2016-11-13 23:58:09 -08:00
9c6048f781 Tools: binary_to_compressed_c.cpp : comments + link to precompiled binaries 2016-11-13 21:42:40 +01:00
3085716708 Merge branch 'Loftilus-master' 2016-11-13 17:57:57 +01:00
127dd7c88c Examples: Vulkan: Coding style fixes (#910) 2016-11-13 17:57:43 +01:00
a5600b6e59 Vulkan example: Proper surface format search. 2016-11-13 05:23:33 +01:00
b447a71cf6 Vulkan example: Fix gamma for some implementations. 2016-11-13 04:28:26 +01:00
08ef9819c8 Vulkan example: Fix validation layer warnings and errors and redeclare gl_PerVertex. 2016-11-13 03:00:36 +01:00
1a0e414d3a Fixed uninitialized variables (wouldn't have a real effect because they'd be cleared in Begin()). 2016-11-12 21:17:30 +01:00
fdbad2708c Ignore GCC 6 warnings (#883) 2016-11-12 21:04:55 +01:00
7c2b35704d Examples: DirectX9-10-11: Only call Windows' SetCursor(NULL) when io.MouseDrawCursor is set (#585, #909) 2016-11-12 19:46:52 +01:00
2973287fd3 Merge branch 'martty-master' 2016-11-12 17:50:25 +01:00
55863dd274 Examples: Vulkan: Shallow stylistic changes (following #879) 2016-11-12 17:49:59 +01:00
0449bb98e2 Merge branch 'master' of https://github.com/martty/imgui into martty-master 2016-11-12 17:36:46 +01:00
98e1d500d4 Support for #define-ing GImGui and IMGUI_SET_CURRENT_CONTEXT_FUNC to enable custom thread-based hackery (#586) 2016-11-12 17:08:31 +01:00
e0aef0018f Updated README 2016-11-12 16:08:26 +01:00
a68ac96bc4 Examples: GL3: Comments about gl3w (#880) 2016-11-12 12:48:33 +01:00
775ac24d45 Fixed overzealous GCC warnings (#883) + partly undo 8553bab241 2016-11-12 11:14:37 +01:00
89d033aba3 Merge pull request #898 from tinnnysu/master
Examples: SDL+OpenGL2: Update cmdline syntax in Windows compilation.
2016-11-12 11:08:51 +01:00
379533f661 Updated stb_truetype.h, stb_rect_pack.h primarily to reduce warnings (#883) 2016-11-11 20:19:07 +01:00
8553bab241 Ignoring overzealous GCC warnings (#883) 2016-11-11 20:17:35 +01:00
81eefb704b Minor const fixes for overzealous warnings (#883) 2016-11-11 18:40:13 +01:00
941cf1b436 Merge branch 'master' into 2016-07-navigation 2016-11-09 15:21:36 +01:00
ccb3db94da Merge branch 'master' into 2016-02-colorpicker 2016-11-09 15:17:20 +01:00
833ed760ae update cmdline syntax in windows compilation 2016-11-09 14:53:23 +08:00
faafcf418d Demo: Comments, even though nobody appears to read the comments. 2016-11-07 17:33:46 +01:00
3689efb726 Font: Readme about icons 2016-11-06 22:53:36 +01:00
da9feba539 Fixed missing frame padding on title bar text when Collapse triangle is disabled 2016-11-06 22:40:47 +01:00
620497e466 Font: Font name include size 2016-11-06 22:21:21 +01:00
84f480a638 Font: Added Roboto-Medium + tweaked readme 2016-11-06 22:21:10 +01:00
b2f0ea6c0d Font: Default font given explicit name "ProggyClean.ttf" 2016-11-06 21:51:20 +01:00
b376b68326 Font: Added io.FontDefault in ImGuiIO structure to make it easier to change default font from third-party or demo code 2016-11-06 21:50:18 +01:00
357167f917 Demo: Custom Rendering: Tweak so end of line can be dropped outside of canvas, more pleasing. 2016-11-06 18:13:14 +01:00
907dd2ed20 Comments (#896) 2016-11-06 15:25:28 +01:00
ddf08ec2e8 BeginChild(const char*) applies stack id to provided label (#894, #713) 2016-11-06 15:12:50 +01:00
32dbe836d0 Add user-facing IsPopupOpen function 2016-10-29 15:33:09 -04:00
53126cd713 Add location decorators & change to use structs as in/out in glsl, update embedded spv (produced with glslangValidator -x) 2016-10-18 22:43:20 +02:00
44250caf50 Null the released resources 2016-10-18 22:07:51 +02:00
43e6c46c8d Merge pull request #877 from Velro/patch-1
Demo: Outdated dragging API mentioned in demo text
2016-10-16 18:32:13 +02:00
6fa3aaf7c0 outdated dragging API mentioned in demo text
Looks like you changed the API on dragging, but did not update the description text for it. 
https://github.com/ocornut/imgui/issues/167
2016-10-16 12:21:38 -04:00
dd6163241c Merge branch 'master' into 2016-02-colorpicker 2016-10-16 14:02:15 +02:00
bdb34d1c11 Merge branch 'master' into 2016-07-navigation 2016-10-16 14:01:13 +02:00
b3790e7549 InputText: Fixed pressing home key on last character when it isn't a trailing \n (#588, #815) 2016-10-16 13:34:47 +02:00
7252d93dcd stb_textedit.h Merged from master 1.9 (merged bits from #473) 2016-10-16 11:34:33 +02:00
0d3f8807c7 Added a void* user_data parameter to Clipboard function handlers. (#875) 2016-10-15 11:36:43 +02:00
d649bc485b Minor comments 2016-10-15 11:18:29 +02:00
cb7e1c18b5 Separator: Fixed zero-height bounding box resulting in clipping when at top of clipping rectangle (#860) 2016-10-10 22:37:59 +02:00
31dc7d8d63 Added ImGuiMouseCursor_None for usage by app/binding 2016-10-10 18:03:37 +02:00
4de35b4f30 Removed left-over empty op 2016-10-09 10:58:38 +02:00
1810b3ff38 Added ImGuiCorner enum to clarify some internal code 2016-10-09 10:56:23 +02:00
d567595dde ImDrawList: AddRect(), PathRect() default rounded_corner 0x0F->~0/-1 so it appears less obscure in IDE completions 2016-10-09 10:35:01 +02:00
abaada4224 Removed the inconsistent shadow under RenderCollapseTriangle() (~#707) 2016-10-09 10:31:39 +02:00
5957af8a80 Fixed not using IM_ARRAYSIZE() where appropriate 2016-10-09 10:08:03 +02:00
fa73e5aa0e Plot: Fixed calling with values_count == 0 2016-10-08 12:43:30 +02:00
51111b0ed5 FAQ clarified the ClipRect entry a little 2016-10-07 10:27:19 +02:00
e4deb7a190 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-10-07 09:52:14 +02:00
404979e48d Merge remote-tracking branch 'origin' into 2016-02-colorpicker 2016-10-07 09:52:00 +02:00
e07d45709f ImDrawList: Uses IM_COL32_A_MASK macro instead of hardcoded zero alpha testing (#844) 2016-10-07 09:49:52 +02:00
7995cabce5 Merge pull request #864 from jslee02/fix-clang-unknown-warning
Fix clang warning for old Clang versions: unknown warning group '-Wreserved-id-macro'
2016-10-06 21:48:00 +02:00
1d7e05327b Fix clang warning: unknown warning group '-Wreserved-id-macro' 2016-10-06 14:48:47 -04:00
05b580e691 Tools: Fixed binary_to_compressed_c.cpp not to use different types on both sides of ternary op (#856) 2016-10-02 17:25:09 +02:00
a2487bc143 Minor tweaks 2016-10-01 15:16:17 +02:00
9896faf731 Merge branch 'madeso-master' 2016-10-01 15:00:00 +02:00
2919c77bee Examples: GLFW+OpenGL3: Fixed Shutdown() calling GL functions with NULL parameters if NewFrame was never called (#800) 2016-10-01 14:59:28 +02:00
b96471143f Merge branch 'master' of https://github.com/madeso/imgui into madeso-master 2016-10-01 14:56:24 +02:00
28974dfbbb Merge branch 'thedmd-2016-08-use_bgra_colors' 2016-10-01 14:29:27 +02:00
68c81739bf Minor tidying up following merge BGRA color PR (#844) 2016-10-01 14:29:12 +02:00
eb0382a1c1 Merge branch '2016-08-use_bgra_colors' of https://github.com/thedmd/imgui into thedmd-2016-08-use_bgra_colors 2016-10-01 14:19:25 +02:00
dfe4683c17 EndGroup(): Made IsItemHovered() work when an item was activated within the group (#849) (loosely follows #840) 2016-10-01 14:10:24 +02:00
1999c01db8 Apply Omar feedback and convert remaining 0xAABBGGRR's into IM_COL32(RR,GG,BB,AA) format. 2016-09-26 12:00:33 +02:00
d75d2b1871 Introduce IMGUI_USE_BGRA_PACKED_COLOR in imconfig.h.
When IMGUI_USE_BGRA_PACKED_COLOR is defined packed color hold in ImU32 use BGRA format instead RGBA.
2016-09-26 12:00:33 +02:00
82dcdc9dfc ShowStyleEditor: tweak font map display to show glyph details when hovered. 2016-09-25 15:52:04 +02:00
f5b37dbc52 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-09-25 15:31:36 +02:00
fea0fcb7c3 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-09-25 15:25:55 +02:00
d7c518e6cc ShowStyleEditor: show font map / grid in more details. 2016-09-25 15:22:41 +02:00
6def01be5d Fixed IsItemActive() lagging by one frame on initial widget activation (#840) 2016-09-25 14:32:38 +02:00
f2699de242 Fix using IsItemActive() after EndGroup() or any widget using groups (#840, #479) 2016-09-25 14:18:10 +02:00
ed279c0095 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-09-25 12:59:24 +02:00
1b5bbf725b Merge remote-tracking branch 'origin' into 2016-02-colorpicker 2016-09-25 12:57:22 +02:00
56cdbe434d Style: Added ButtonTextAlign, ImGuiStyleVar_ButtonTextAlign (#842) 2016-09-25 12:53:13 +02:00
0f303d363a Refactor text alignment options to use ImVec2, removed ImGuiAlign (#842, #222) 2016-09-25 12:19:15 +02:00
de9f8944ea Internal RenderTextClipped() merged optional/rate clip_min* clip_max* into clip_rect* 2016-09-25 11:38:04 +02:00
02cea0c3c3 Comment 2016-09-25 11:16:19 +02:00
281898e82e Tidying up PushStyleVar/PopStyleVar() a little more (#842) 2016-09-25 11:14:10 +02:00
c5b8c6303a Refactor PushStyleVar/PopStyleVar so it is constant time + can receive integers (yet unused) (#842) 2016-09-25 11:06:14 +02:00
35c6fd682f Inhibiting a ??e sequence in the embedded font. Shouldn't be treated as a trigraph but consistent with encoder (#839) 2016-09-23 09:09:07 +02:00
7f51929dc4 Tools: binary_to_compressed_c: Avoid ?? trigraphs sequences in string outputs (#839) 2016-09-23 09:06:19 +02:00
18d36e6f63 Merge pull request #837 from fdb/patch-1
Update link to Synergy repo.
2016-09-21 21:18:56 +02:00
5c3f8b12b9 Update link to Synergy repo
The Synergy repository has moved from synergy/synergy to symless/synergy.
2016-09-21 20:26:27 +02:00
6e87f071b8 Shutdown() clear out some remaining pointers (#836) 2016-09-20 12:41:21 +02:00
87d99fce6b ImFont: CalcWordWrapPositionA() fixed font scaling with fallback character. (followup to 86666489df) 2016-09-19 09:32:21 +02:00
0420ab027e Metrics: Displaying window position + moving extraneous line in IsPopupOpen(). 2016-09-16 01:09:57 +02:00
b397fb507e Fixed EndGroup() not restoring offset properly. breaking SameLine() offset (caused by 954c890c67) (#829) 2016-09-13 09:18:17 +02:00
612b17ef57 Fixing minor english typos (#827) 2016-09-11 22:02:35 +02:00
5a47346f5a ImFont: add RenderGlyph() to allow rendering of individual glyphs 2016-09-10 18:21:49 -07:00
02399852fe Examples: OpenGL2: Uploading font texture as RGBA32 to increase compatibility with users shaders for beginners (#824) 2016-09-10 17:43:17 +02:00
012223114d Merge pull request #825 from philix/fix-build
Examples: OSX: Fix Mac OS X build XCode project and remove cruft from Makefile
2016-09-10 11:31:41 +02:00
6e6f04f513 Fix Mac OS X build and remove cruft from Makefile 2016-09-10 11:22:40 +02:00
500d19bfdf Update README.md 2016-09-08 09:12:17 +02:00
b594b25be8 Update README.md 2016-09-08 09:11:29 +02:00
f6d4ca6473 TODO list 2016-09-07 12:02:37 +02:00
bc57fd5d1d Examples: OpenGL*: Savnig/restoring existing scissor rectangle for completeness (#807) 2016-09-05 23:39:52 +02:00
031d4e689d Examples: OpenGL3: Revert Makefile change for OSX for now (#812) 2016-09-05 22:52:45 +02:00
3a699e7264 Update README.md 2016-09-05 13:40:04 +02:00
2825eaa0be Examples: Accessing ImVector fields directly, feel less stl-ey and fix renderer side assert when render list only contains a callback (#810) 2016-09-03 19:24:57 +02:00
c0fcf223be Fixed assert triggering when a window has zero rendering but has a callback (#810) 2016-09-03 19:02:57 +02:00
056e49eec1 Merge pull request #812 from linkemars/master
Examples: opengl3 glfw: Mac makefile - correct name for linking opengl3_example
2016-09-02 15:00:49 +02:00
aa0cb13aa4 Correct name for linking opengl3_example
According to glfw offcial site, linking `libglfw.3.dylib` etc should
use `-lglfw`.

Changed this made the compilation on my Mac successfully.
2016-09-02 21:57:31 +09:00
9af74181ce Merge pull request #804 from Loftilus/master
Examples: Vulkan: Fix Vulkan example for use when a depth buffer is active.
2016-09-01 09:23:46 +02:00
08a9e78da5 fixed space issues 2016-08-29 23:35:56 +02:00
99b4f951b9 Fix Vulkan example for use when a depth buffer is active. 2016-08-27 19:08:24 +02:00
5def10c3a0 Fixed OpenGL error when calling Shutdown without calling NewFrame 2016-08-27 00:32:20 +02:00
b36ba12929 Travis test fix 2016-08-25 16:20:34 +02:00
5ae71aa04a Examples: Renaming opengl_example/ to opengl2_example/ for clarity (1/2 because git) 2016-08-25 10:25:51 +02:00
3c384c2f10 Examples: Renaming opengl_example/ to opengl2_example/ for clarity (1/2 because git) 2016-08-25 10:18:09 +02:00
ef10b984fe Merge remote-tracking branch 'origin' into 2016-02-colorpicker 2016-08-23 17:00:47 +02:00
f39513ac47 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-08-23 17:00:11 +02:00
63d47bc5a4 ImFormatString() Fixed an overflow handling bug with implementation of vsnprintf() that do not return -1 (#793) 2016-08-23 16:55:06 +02:00
e8e5c6d788 Nav: Comments. Fixed two -Wall warnings. Removed unused function. (#787) 2016-08-23 08:58:51 +02:00
3883a2027f Nav: Fixed Selectable() crash introduced earlier today in 43ee5d73 + added comments/assert (#323) 2016-08-21 17:52:42 +02:00
df9bdf38f9 Nav: NavActivateId, NavInputId are no repeat actions. Repeat buttons handle it themselves already anyway. (#323) 2016-08-21 17:32:15 +02:00
67fd805839 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-08-21 16:13:40 +02:00
c6c7371a4c Nav: Removed unnecessary test following 49ca1c2b88 (#323) 2016-08-21 16:11:53 +02:00
49ca1c2b88 Nav: InitDefaultRequest saves a fallback item so PadMenu on a collapsed window gets us to the collapse button (#323) 2016-08-21 16:07:55 +02:00
2303b67c40 Close button submitted after collapse button. Should have no effect. Consistent with expectation & will be used as fallback for nav (#323) 2016-08-21 16:05:19 +02:00
252f094101 Nav: Undo 87eb749cbc, agressively including nav focus test in IsItemHovered() (#323) 2016-08-21 15:26:40 +02:00
fddf9ca10e Nav: Fixed nav highlight clipping (affected non non-menu items within menubar) (#323) 2016-08-21 15:25:29 +02:00
78b7e2dfb3 Nav: Process and apply mouse move request immediately after move request result comes (#323) 2016-08-21 14:53:26 +02:00
f71cdd13b7 Internal tidying up, moved code to CalcNextScrollFromScrollTargetAndClamp() so it can be reused by upcoming nav code. 2016-08-21 14:39:13 +02:00
ac7826c8a5 ImRect: Added Translate() helper, removed redundant and misleading Reduce() 2016-08-21 14:37:48 +02:00
87eb749cbc Added IsItemHoveredOrFocused() (provisional name), better handling of popup/tooltip positioning when using mouse+nav (#323) 2016-08-21 13:25:40 +02:00
ea2425ad9a Nav: Fixed entering child with PadActivate not setting ActiveIdSource to Nav (#323) 2016-08-21 12:44:59 +02:00
43ee5d73e9 Nav: Hovering MenuItem/Selectable with mouse makes NavId, matching what seems to be Windows beahvior at least for menus (#323) 2016-08-21 11:45:50 +02:00
30c04d0dbe Nav: Mouse pos passed to backend always rounded, so that lossy application of non-integer mouse pos doesn't lead to undesirable movement (#3 2016-08-21 00:10:48 +02:00
bf42657850 Nav: Clearing mouse hover flag using MouseClicked[] test instead of MouseDown[] so that invalid mouse button won't keep breaking nav (#323) 2016-08-20 23:59:54 +02:00
695ca7bb45 Nav: Tidying up. Comments. (#323) 2016-08-20 23:27:25 +02:00
4f7c63a7af Nav: Fixed a bug where mouse positioning requests would be sent while opening submenus with mouse (#323) 2016-08-20 23:25:53 +02:00
e4c099d67c Nav: Comments + fixed handling of PadLeft in menus (fix e55882f) (#323) 2016-08-20 22:11:00 +02:00
e3fec8c0aa Renamed function (#323) 2016-08-20 19:19:58 +02:00
82768e05f3 Ignore list for Visual Studio 2016-08-20 13:30:42 +02:00
787a802f2e Merge branch 'martty-master' 2016-08-20 13:30:10 +02:00
4bc6a951fe tabs to space, remove braces 2016-08-20 13:27:03 +02:00
3234f81cb1 maxImageCount may be 0; add missing sType; change to 1 push constant range 2016-08-20 13:08:34 +02:00
622715725d Merge pull request #783 from bear24rw/patch-1
Demo: Add null terminator to ShowStyleEditor() output_type combo options
2016-08-19 18:00:27 +02:00
4f389b7f6a Add null terminator to ShowStyleEditor output_type combo options
Without a null terminator the Combo() function indexes outside of the "items_separated_by_zeros" string.
2016-08-18 11:00:23 -07:00
ead79dcdac Metrics: 64-bit display fix 2016-08-15 17:34:17 +02:00
3ab0d5cdfd Nav: NavHighlight gets its own color (default to Header color), made rectangle thicker (#323) 2016-08-15 13:07:39 +02:00
cf16ba6572 Nav: Exposed RenderNavHighlight() in imgui_internal.h to increase discoverability and reordered arguments to be more consistent (#323) 2016-08-15 11:52:02 +02:00
6c19d7b13c Nav: Fixed clipping rect of navigation highlight, notably for collapsing arrow (#323) 2016-08-15 11:41:56 +02:00
9501cd9991 InputText: Fixed calling callback on frame of losing active id, fix part of 848e62bfe0 (nav branch only)
#323 #701
2016-08-13 14:22:34 +02:00
cff815fd2d Merge branch 'master' into 2016-02-colorpicker 2016-08-11 23:22:15 +02:00
a83f9b7885 Merge branch 'master' into 2016-07-navigation 2016-08-11 23:21:04 +02:00
0f9addb002 Minor shuffle to ease merging branches. (tentative. fugly but those fields will be removed anyway) 2016-08-11 23:20:53 +02:00
bfe1e163b8 Merge remote-tracking branch 'origin' into 2016-02-colorpicker 2016-08-11 23:01:48 +02:00
2afffcdeb9 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-08-11 23:00:47 +02:00
4bc3f9d1f7 Minor shuffle to ease merging branches. 2016-08-11 22:59:44 +02:00
996eb080fa Merge remote-tracking branch 'origin' into 2016-02-colorpicker 2016-08-11 22:53:26 +02:00
df1d1b5b25 Nav: DragBehavior: Adjust minimum step to displayed precision when using navigation (#323, #180) 2016-08-07 20:40:57 +02:00
09cba02d3f Nav: DragBehavior: Fix for fast speed (#323 #180) 2016-08-07 20:31:51 +02:00
761a74c62b Selectable/MenuItem: Not activated on Click but only on Release is more standard (#126, #245, #323)
Apparently menu items started with OnClick (vs OnClickHoldRelease) when
doing #126. Hope to not break anything.
Also allows using xxx_DontClosePopup flags.
2016-08-07 20:21:18 +02:00
8828889d5e Refactored rare transient bool stacks into a set of flags, added unexposed ImGuiItemFlags_SelectableDontClosePopup (#323) 2016-08-07 20:05:24 +02:00
785f51227a Demo tweaks 2016-08-07 19:07:24 +02:00
525ef5b357 Nav: Tweaked default highlight clipping (clipped by scrollbar) and removed subtle background (#323) 2016-08-07 15:31:00 +02:00
a68132948b Nav: Added ImGuiCol_NavWindowingHighlight into style (#323) 2016-08-07 15:26:04 +02:00
6aa8019763 Nav: Fixed bug where pressing NavInput(Triangle) to turn slider/drag into text input would then change subsequent NavActivate as well (#323) 2016-08-07 15:19:29 +02:00
e55882f74b Nav: Allow PadLeft to close a menu (#323) 2016-08-07 15:18:04 +02:00
c203be94c6 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-08-07 13:55:59 +02:00
6eb35b8a04 BulletText(): doesn't stop displaying at the ## mark 2016-08-07 13:53:41 +02:00
8a6d209f68 Nav: Failed movement request with no current NavId fallback to an InitDefaultRequest so that we always land somewhere on first move (#323) 2016-08-07 13:34:25 +02:00
5ef8452509 Nav: Comments (#323) 2016-08-07 13:33:15 +02:00
cbf24c13ca Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-08-07 12:15:21 +02:00
5d1a0a6f77 Removed a handful of obsolete (trivial) function redirection from 1.34 and 1.38 (march-april 2015)
OpenNextNode() -> SetNextTreeNodeOpen()
GetWindowIsFocused() -> IsWindowFocused()
GetItemBoxMin() -> GetItemRectMin()
GetItemBoxMax() -> GetItemRectMax()
IsMouseHoveringBox() -> IsMouseHoveringRect()
IsClipped() -> !IsRectVisible()
2016-08-06 09:48:04 +02:00
aa9786077c Merge branch 'thedmd-2016-08-generalized_visibility_test' 2016-08-06 09:40:38 +02:00
b8397c2933 Tweak comments (#768) 2016-08-06 09:40:26 +02:00
a1521534ba Merge branch '2016-08-generalized_visibility_test' of https://github.com/thedmd/imgui into thedmd-2016-08-generalized_visibility_test 2016-08-06 09:36:24 +02:00
af33efb146 Using IM_COL32() for colors in a few spots (#767) 2016-08-06 09:35:05 +02:00
a7f6ea592f Moved GetColorU32 out of imgui_internal.h to avoid inlining mess (#759) 2016-08-06 09:22:41 +02:00
7588dfb67e Add ability to test arbitrary rectangle for visibility without need of moving cursor. 2016-08-05 11:47:16 +02:00
d85c1be6b6 Nav: Reordered Cancel handling code so you you can leave a child within a popup without closing the popup (#323) 2016-08-04 12:53:46 +02:00
c263961f07 Nav: Menu: Allow PadDown to open a menu from a menu bar, PadRight from a menu (#323, #126) 2016-08-04 10:41:33 +02:00
dcff032429 Nav: Moving all nav inputs to io.NavInputs[] float array, new enum labelled for gamepad. (#323) 2016-08-03 23:23:04 +02:00
4ccc87c91d Typo in commented default-value 2016-08-03 21:53:07 +02:00
c0dcef4e16 Nav: Moving window with nav stick disables mouse hover (#323) 2016-08-03 21:02:27 +02:00
4e91b521ee Demo: Arrange some inputs panels. 2016-08-03 20:55:54 +02:00
36fa2b9523 Nav: DragBehavior removed bogus test (#323) 2016-08-01 22:23:56 +02:00
d0801057ba Demo: Tweak handling of "animate" flag in graph demo so it doesn't keep running. 2016-08-01 20:55:54 +02:00
2e52bee12e Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-07-31 17:00:44 +02:00
907265d632 Using ImGuiID instead of ImU32 is a few places 2016-07-31 16:48:06 +02:00
8b190f1100 Nav: quick tap on NavMenu with no focused window doesn't focus one (holding still does) (#323) 2016-07-31 16:12:01 +02:00
e9c881e4de Nav: fixed using NavMenu/windowing select when no window is already focused + cleanup code (#323) 2016-07-31 16:07:58 +02:00
1ecbf73c97 Nav: working on early bits of documentation (#323) 2016-07-31 15:41:51 +02:00
a154625a56 Nav: Not exposing ImGuiWindowFlags_NavFlattened because it requires much more work (#323) 2016-07-31 13:40:14 +02:00
08a28c16ae Nav: Merge FocusedWindow and NavWindow that were basically duplicate at this point (#323) 2016-07-31 13:38:57 +02:00
2545d75c3b Tidying up, removed two unnecessary window flags from being exposed in imgui.h 2016-07-31 13:05:13 +02:00
b3cba62b80 Nav: Added experiment ImGuiWindowFlags_NavFlattened flag to cross over between parent and non-scrolling child windows (#323) 2016-07-31 12:55:23 +02:00
769a1dd748 Nav: No scrolling while using windowing functionalities (#323) 2016-07-31 10:41:41 +02:00
9ab20e6c9c Merge pull request #756 from jseward/master
Examples: SDL: Fix compile warnings.
2016-07-31 09:28:21 +02:00
0a1d456de1 Fix compile warnings in SDL examples 2016-07-30 15:26:49 -07:00
a88d189f18 Nav: MoveRequest doesn't affect io.NavUsable so that navigation failure doesn't trigger false positive & not needed (undo part of 3cc1419df) 2016-07-30 23:52:03 +02:00
f72e2fd1b1 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-07-30 23:46:09 +02:00
954c890c67 SameLine() with explicit X position is relative to left of group/columns (ref #746, #125, #630) 2016-07-30 23:41:44 +02:00
68b73b61b5 Nav: Comment (#323) 2016-07-30 23:17:32 +02:00
79e7ece259 Nav/Examples: honoring the io.WantMoveMouse flag in most common examples (#323)
Missing support Vulkan (#549), Apple (#575, #247), SDL (#58, #356),
Allegro, Marmalade (#368, #375)
2016-07-30 23:17:11 +02:00
d88dcc26cc Demo: console text input keeps focus in a less harsher and more navigation friendly way (#323) 2016-07-30 19:17:26 +02:00
3cc1419df3 Nav: making io.NavActive more suitable for end-user detecting if they should pass inputs to game (#323) 2016-07-30 19:16:41 +02:00
cc66731c39 Nav: Calling SetItemDefaultFocus() doesn't make mouse cursor dirty if nav highlight is off (#323) 2016-07-30 19:15:12 +02:00
8d0186c82b Nav: programmatic call to SetKeyboardFocusHere() doesn't quality as a nav input (doesn't position mouse) (#323) 2016-07-30 19:08:20 +02:00
e2dd48ae65 Nav: Split _NoNav window flag into _NoNavInputs and _NoNavFocus (#323) 2016-07-30 18:06:05 +02:00
4c4d750cae Nav: Fixed Collapse icon disappearing when Nav is disabled (since b2aaab873d) (#323) 2016-07-30 18:05:14 +02:00
3672105b87 Tidying up 2016-07-30 17:20:59 +02:00
04157da291 Nav: first committed pass for manual moving and manual scrolling (after a bunch of attempts) (#323) 2016-07-30 17:18:34 +02:00
4309b8c1ed Clarifying that MovedWindow* apply to mouse moving only 2016-07-30 16:25:45 +02:00
f2d1472481 Nav: Fixed navigating outside of current scrolling bounds (bug from 0cc20fca83) (#323)
+ spaces
2016-07-30 15:17:12 +02:00
efc8858328 ImRect: fixed Clip() function being the other way around (INTERNAL API BREAKING CHANGE- wasn't exposed, hoping nobody uses that) + actually fixes the function behavior. 2016-07-30 14:38:33 +02:00
d6ce800a20 Nav: ActiveIdAllowNavMove -> ActiveIdAllowNavDirFlags for more flexibility (nav up/down typically allowed on a single-line text input) (#323) 2016-07-30 14:31:34 +02:00
d9d6b0e629 Nav: Renamed private ImGuiNavDir_ enum to use left/right/up/down to be consistent with key enums (#323) 2016-07-30 13:45:46 +02:00
cbe03e3108 Nav: CalcListClipping/ImGuiListClipper: fix to ensure we can navigate clipped lists (#323) 2016-07-30 11:22:18 +02:00
b3ddae07d1 Nav: not activating widgets with NavActivate when NavMenu is held (#323) 2016-07-30 11:11:17 +02:00
b2aaab873d Nav: collapse button is interactve, allow collapsing, tidying up, resize speed takes account of framebuffer scale (#323) 2016-07-30 10:56:52 +02:00
4735802096 Shallow tidying up ctrl+wheel scaling code in NewFrame() 2016-07-30 10:26:57 +02:00
20a0fde012 Tidying up default clipboard handler for non Windows-OS 2016-07-30 10:02:46 +02:00
cabba0f158 Update README.md 2016-07-29 18:52:38 +02:00
f34d7ea199 Fixed bad merge 2016-07-29 11:23:04 +02:00
5f6f4d0ffc Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-07-29 11:17:13 +02:00
4a4d3eab70 Merge branch 'michaelbartnett-add-osx-homeend-keys' 2016-07-29 11:06:27 +02:00
7086a17854 InputTextEx: got rid of unnecessary locals. 2016-07-29 11:06:16 +02:00
776ea6b946 InputTextEx(): more shallow tidying up, still being cautious with this function 2016-07-29 11:01:06 +02:00
666d83b5c7 InputText/IO: Got rid of individual OSX options in ImGuiIO, added io.OSXBehaviors (#473, #650) 2016-07-29 10:56:47 +02:00
0ff22dbf0b InputTextEx(): minor tidying up 2016-07-29 10:51:35 +02:00
e5b6ddde26 InputText(): minor tidying up/simplification following changes for osx style improvements (#650) 2016-07-29 10:42:08 +02:00
802e91f69e Merge branch 'add-osx-homeend-keys' of https://github.com/michaelbartnett/imgui into michaelbartnett-add-osx-homeend-keys 2016-07-29 10:34:01 +02:00
d8dacd729b Examples: SDL+OpenGL: explicitly setting GL_UNPACK_ROW_LENGTH to reduce issues because SDL changes it (#752) 2016-07-29 10:10:41 +02:00
aeabda5a5f Navigation: Tap NavMenu to access menu and close buttons, hold to focus/resize (#323)
Introducing a concept of NavLayer to filter navigable items
2016-07-24 14:56:14 +02:00
c3aa36d9ab Navigation: Renamed ImGuiKey_NavWindowing to ImGuiKey_NavMenu (#323) 2016-07-24 14:49:16 +02:00
175f42420c Navigation: Can nav-out but not nav-in a window with ImGuiWindowFlags_NoNav flag (#323) 2016-07-24 14:41:27 +02:00
67feb5ac6c Navigation: comments + moving init block of code above in NavUpdate(), should have no side-effect (committed to simplify next commit) (#323) 2016-07-24 14:15:34 +02:00
a424d6f805 Navigation: Fixed missing initialization (had no side-effect, would be set in Begin) (#323) 2016-07-24 14:08:50 +02:00
49ec65b1b5 Navigation: can't manually focus out of a modal window with controller (#323) 2016-07-24 14:00:29 +02:00
5cac4926c8 Fixed display of TitleBgActive color on window before a Modal window + modal window availability for navigation (#323) 2016-07-24 13:56:31 +02:00
ba43310df1 Navigation: Renaming, shortened some unnecessary long fields names (#323) 2016-07-24 12:46:25 +02:00
4bbdaa4e3c Navigation: Moving NavInitWindow() around and making it static (#323) 2016-07-24 11:56:36 +02:00
b2ad33ce41 Merge remote-tracking branch 'origin' into 2016-07-navigation 2016-07-23 20:33:25 +02:00
e9d8b48a4c Navigation: Allow to navigate out of text input with direction or NavCancel (#323) 2016-07-23 20:30:44 +02:00
2f94563564 Navigation: Collapsed window uses ImGuiCol_TitleBgActive when navigation is active (#323) 2016-07-23 20:09:41 +02:00
afadc7cf59 Navigation: Scoring: Improved directional navigation. Not totally cancelling out dx. Better support for zero-spaced items. (#323) 2016-07-23 20:05:17 +02:00
e74d96642f Navigation: mouse/popup position gets clamped within visible display (#323) 2016-07-23 19:42:19 +02:00
0cc20fca83 Navigation: Scoring uses rectangle as clipped by parent. Fix selectable extending past parent column among other things (#323) 2016-07-23 19:24:56 +02:00
2f1fb41579 Navigation: Fixed automatic fallback scrolling from glitching near scroll limits because of miscalculation of SizeContents (#323) 2016-07-23 16:31:23 +02:00
ad48309047 Navigation: Fixed using NavWindowed when a menu is open. (#323) 2016-07-23 16:01:27 +02:00
2cab404a81 Fixed tooltip positioning issues when using navigation (#323) 2016-07-23 15:44:56 +02:00
bccd3d8a32 Merge branch 'nProtect-master' 2016-07-20 11:39:53 +02:00
8efd05a148 Tab->Spaces, missing spaces, typos 2016-07-20 11:39:38 +02:00
4141144b21 Added GetGlyphRangesThai() 2016-07-20 11:37:08 +02:00
c2cb2a6928 Gamepad/Keyboard navigation support, initial commit, WIP (#323) 2016-07-20 00:02:59 +02:00
4a11cc35b9 Updated code for repeat delay / repeat handling. GetKeyPressedAmount() now returns a count to support fast repeat rate (where DeltaTime > RepeatRate).
Renamed from recently added IsKeyPressed() variant to GetKeyPressedAmount(). (no API breakage, added in branch, bbd3b75609) (#323)
2016-07-19 21:26:36 +02:00
88c1966629 Added IsAnyWindowFocused(). Renamed IsMouseHoveringAnyWindow() -> IsAnyWindowHovered(), IsPosHoveringAnyWindow() -> IsAnyWindowHoveredAtPos(), IsMouseHoveringWindow() -> IsWindowHoveredRect() for consistency. Kept inline rediection function. 2016-07-18 18:24:23 +02:00
23a81027e8 Comment on invalid comment regarding preserving keyboard focus of a closed window, due to commit 19d02becef. This is probably still what we want. (followup #727) 2016-07-18 18:22:11 +02:00
eb405ab375 DragBehavior: Moving code around, in what should be a no-op, to simplify upcoming Nav diff (#323, #180) 2016-07-18 18:22:10 +02:00
c816e6c742 Fixed SetScrollX() handling of center ratio (which actually wasn't exposed publicly). (#323, #246) 2016-07-18 18:22:09 +02:00
e10ecfe28a BeginChild(): tweak to make the code easier to understand 2016-07-18 18:22:08 +02:00
24f79b91bd Style: minor tweak to default color theme to make currently focused window more prominent (#323, #707) 2016-07-18 18:22:07 +02:00
e72e3b2cbc Demo: tweaks. 2016-07-18 18:22:06 +02:00
0300e73b3f Comments 2016-07-18 15:26:07 +02:00
2df229d002 Fixed incorrect comment for ParentWindow (#615, #604) 2016-07-18 15:26:06 +02:00
068984691e Tab-key focusing inhibited when CTRL is held (#323) 2016-07-18 15:26:05 +02:00
267e54cf06 NewFrame(): update activeid data and keyboard before mouse. Should have no side-effects! (So that later we can update Nav between Keyboard and Mouse) (#323) 2016-07-18 15:26:04 +02:00
272745bd93 ImGuiIO: initializing fields in the same order as the declaration. 2016-07-18 15:26:03 +02:00
848e62bfe0 InputText: don't process keys during the activation frame (this is mostly a workaround to that activation with enter doesn't validate immediately, which is turns triggers an assert in InputScalarAsWidgetReplacement - can't see an issue with changing it this way so trying out) + using local flag clear_active_id to only clear the active id at the end of the frame, which is one of the step that my stash for #701 requires. (#323) 2016-07-18 15:26:02 +02:00
57841f417d SliderBehavior, RoundScalar: split into separate functions for usage in upcoming nav commits. Testing power==1.0f without fabsf(). Maybe just use == 1.0f as well? (#323) 2016-07-18 15:26:01 +02:00
6f7da2f9f2 Popup: Fixed popup initial frame reading MousePos again instead of the value already stored within the CurrentPopupStack in the previous frame. Doesn't make a big difference here, but will do as gamepad/keyboard navigation will set its own popup position. (#323) 2016-07-18 15:26:01 +02:00
91e1c56da6 Minor bits. 2016-07-18 15:25:59 +02:00
bbd3b75609 Added IsKeyPressed() with explicit repeat delay and repeat rate (for usage by nav) (#323) 2016-07-18 15:25:58 +02:00
9f92cc255b SetActiveId() sets ActiveIdIsJustActivated only when id changes. (#323) 2016-07-18 15:25:57 +02:00
ffdd7d7f17 Begin: Moved code that calls FocusWindow() on a newly appearing window lower in the function so that Nav branch can use CursorStartPos on the first window frame. (#323)
Pushing in master because it _should_ be a no-op but I'd rather test for any issue in Begin() as soon as possible.
2016-07-18 15:25:44 +02:00
19d02becef Closing the focused window restore focus to the first active root window in descending z-order (part of #727) 2016-07-17 19:17:49 +02:00
e215905765 Fixed scrolling offset when using SetScrollY(), SetScrollFromPosY(), SetScrollHere() with menu bar.
Tests:
a) add SetScrollY(+20) after Begin("ImGui Demo") test with/without title/menu.
b) add ImGuiWindowFlags_MenuBar in BeginChild() in scrolling tracking demo.
2016-07-16 18:12:41 +02:00
4961b2ea18 Speculative build fix for FreeBSD+GLIBC configuration
See
a1f9b62dd0
2016-07-16 11:44:10 +02:00
44a13a7f25 Windows: No default IME handler when compiling using GCC. (#738) 2016-07-16 11:29:41 +02:00
04b36bc397 TODO list 2016-07-14 13:38:44 +02:00
81036ee46f InputTextMultiline(): fix so that IsItemActive() can be used afterwards (otherwise the info was lost by using child/group) 2016-07-14 13:27:14 +02:00
c0f77f12ea InputText(): Fixed state corruption/crash bug in stb_textedit redo logic when exhausting undo char buffer (#715 #681) 2016-07-14 13:08:37 +02:00
88721118fd InputTextEx: comments (related to #725) 2016-07-13 01:54:29 +02:00
d9e2e688e9 InputTextMultiline(): partial fix for when input and internal buffers differs in a way where scrollbar existence differs. (#725)
Partial fix, won't stop ids from functioning because of a zombie id.
2016-07-13 01:18:59 +02:00
9c71ec38f0 ImVector: reserve() tweak to avoid undefined behavior warning (#731) 2016-07-12 11:19:38 +02:00
921fc50c85 add shortcut+backspace support 2016-07-07 13:03:00 -04:00
86f42b5950 osx uses super+arrows for home/end, built on work in ocornut/imgui#473 2016-07-07 13:02:52 -04:00
5525c2356a Using GetCurrentWindowRead() instead of GetCurrentWindow() 2016-06-29 10:30:42 +02:00
fe7274b6c7 SetCursorScreenPos() fixed not adjusting CursorMaxPos as well 2016-06-29 10:25:47 +02:00
b9b3dec7da ImGuiListClipper: Fix to behave within column (#661, #662, #716) 2016-06-29 10:19:01 +02:00
74bbfcfaa6 ImGuiListClipper: fixed automatic-height calc path dumbly having user display element 0 twice (#661, #716)
First bug out of two. Was easily visible using e.g. 50% alpha text.
2016-06-29 10:07:36 +02:00
297bb3fc92 NextColumn() tidying up with a sane early out 2016-06-29 09:53:02 +02:00
ba7acdac47 Added assert to track stb_textedit.h issue (#715) 2016-06-27 12:59:49 +02:00
c36fd541ad InputTextMultiline(): Fixed Ctrl+DownArrow moving scrolling out of bounds 2016-06-27 09:56:45 +02:00
e06852abaf Fixed Windows default clipboard leaving its buffer unfreed on application's exit. (#714) 2016-06-26 13:24:30 +02:00
de61fcc619 Minor bits 2016-06-25 17:03:49 +02:00
355dae5d99 Comments amend 3c8e490778 (committed before saving last comment edit) (#703) 2016-06-25 14:37:14 +02:00
3c8e490778 Comment on dealing with io.WantCaptureKeyboard (#703) 2016-06-25 14:28:58 +02:00
13615a1318 InputText: render currently edited buffer from the internal buffer, toward #701 2016-06-25 13:57:05 +02:00
2f4e2eec68 InputText, ImGuiTextFilter: using strncpy instead of printf("%s"). 2016-06-25 13:54:34 +02:00
4621b357c1 Wrapped text: fixed incorrect testing for negative wrap coordinates, they are perfectly legal. (#706) 2016-06-19 12:50:22 +02:00
92bff4c8d7 ColorEdit4(): better preserve inputting value out of 0..255 range, display then clamped in Hexadecimal form 2016-06-16 23:09:48 +02:00
9cb271f4c8 Fixed minor text clipping issue in window title for when using font straying above usual line (#699) 2016-06-15 23:09:40 +02:00
1ef7980e17 Merge branch 'master' into 2016-02-colorpicker 2016-06-15 10:05:17 +02:00
c4db79f34b Member variable name renamed "ID" "Id" for casing consistency 2016-06-12 22:27:15 +02:00
f83790dc5a Comments 2016-06-12 12:23:20 +02:00
9f21c7189f TextUnformatted() fixed clipping bug in the large-text path when horizontal scroll has been applied (#692, #246) 2016-06-12 12:23:16 +02:00
d79186931e ImDrawList: Fixed a (rarely occuring) bug with merging with previous command + unnecessary OverlayDrawList command 2016-06-11 15:42:10 +02:00
3fd3eac370 Fixed TextWrapped() override wrap position is one is already set (#690) 2016-06-11 10:23:37 +02:00
2da30e8702 Comments (#691) 2016-06-11 09:28:20 +02:00
65a525550e ImFont: Allowing to use up to 0xFFFE glyphs in same font (increased from previous 0x8000) 2016-06-07 09:14:54 +02:00
4fddfa4b5e Demo: extra (somehow duplicate) Selectables+Columns demo 2016-06-07 09:05:36 +02:00
d6a5fd06d7 Demo: Added an extra 3-way columns demo 2016-06-07 08:46:50 +02:00
0f36ec9cb9 Fixed a crash bug in stb_textedit.h (#681) 2016-06-04 14:48:08 +01:00
8291d7dc7c Fixed minor bug introduced in 45dacbf084 (#682)
Actually minor because nobody uses that value. Still a terrible
bug.
2016-05-31 22:34:48 +02:00
d1c073a199 Comments, tweaks 2016-05-31 00:00:44 +02:00
254a1a9e4c InputText: Added support for CTRL+Backspace. 2016-05-30 20:00:20 +02:00
5d4cf1c3f3 Version 1.50 WIP 2016-05-30 19:38:36 +02:00
adb85d800d Version 1.49 2016-05-29 19:16:44 +02:00
9a751da136 Caving in to ignoring stupid pedantic Clang warnings for old-style-cast in header files 2016-05-29 19:14:19 +02:00
3ddb50a925 Merge branch 'master' into 2016-02-colorpicker 2016-05-29 19:07:23 +02:00
0fb51b6b4b Removed various superflous ImGui:: prefixes in internal code 2016-05-29 18:58:41 +02:00
9886c1b43d Undo modification of ContentsRegionRect.Max, too many side-effects (undo dff078365f) 2016-05-29 18:37:26 +02:00
dcef7dedce Comments (#590) 2016-05-29 18:24:02 +02:00
784e1ef053 CollapsingHeader() with close button adapt to horizontal scrolling (#600) 2016-05-29 18:12:25 +02:00
dff078365f Fix selectable/tree node not reaching right-side of contents size when horizontal scrolling is active and no explicit size is known 2016-05-29 18:08:51 +02:00
45dacbf084 Fixed GetWindowContentRegionMax() being off by ScrollSize amount when SizeExplicit is set + caching ContentsRegionRect.
Relates to horizontal scrollbar, explicit contents size
2016-05-29 17:50:23 +02:00
d5a12866fe Comments (#676, #655) 2016-05-29 14:00:35 +02:00
1483a69c11 Demo: Tree: showing how to align tree node label with current x position (#324, #581) 2016-05-28 19:30:01 +02:00
61c294bb52 Added optional Indent() Unindent() width (#324, #581) 2016-05-28 18:40:00 +02:00
a0a48f6e59 Added TreeAdvanceToLabelPos() (#581) 2016-05-28 18:15:54 +02:00
793f5f8cdb Comments 2016-05-28 17:54:40 +02:00
806a146198 TreeNodeEx(): ImGuiTreeNodeFlags_AlwaysOpen->ImGuiTreeNodeFlags_Leaf, + added ImGuiTreeNodeFlags_Bullet (#324, #581) 2016-05-28 17:12:13 +02:00
2acb61e3a1 Comments 2016-05-28 16:52:59 +02:00
b5521a81d4 Demo: fixed multi-selection tree nodes demo to not replace selection when clicking on single-item that's already part of selection (#581) 2016-05-28 14:18:46 +02:00
8f4b123e1b SetNextWindowSizeConstraint -> SetNextWindowSizeConstraints (#668) 2016-05-28 14:02:14 +02:00
213025f3cd BeginMenu: a menu that becomes disabled when open gets closed down, facilitate user's code (#126) 2016-05-28 11:14:02 +02:00
65b1ae6ecc Comments (#335) 2016-05-22 10:20:58 +02:00
e3d8055d90 Speculative 64-bit warning fix (#668) 2016-05-21 23:13:11 +02:00
3a776d93f2 Fixed compile issue (bloody git stashes) (#668) 2016-05-21 23:03:21 +02:00
b7ebeb1610 Added SetNextWindowSizeConstraint() + demo code (#668) 2016-05-21 22:53:08 +02:00
753bf5cefe Comments 2016-05-21 22:35:05 +02:00
713730af0c Minor sizing refactor, should be no-op. Making it a commit for further bisection since sizing code is super brittle. (#668) 2016-05-21 20:55:28 +02:00
102d03a7eb Resizing window doesn't rely on MouseDelta anymore, but rather recompute expected size based absolute mouse coords. (#668)
Storing ActiveIdClickOffset to generalize pattern already used by
columns.
2016-05-21 20:50:15 +02:00
81bf5aeb09 Minor bits 2016-05-21 20:07:51 +02:00
681d5624f7 Merge pull request #666 from jslee02/patch-1
Fix minor typo in examples/README.txt
2016-05-20 13:24:41 +02:00
47911d92b2 Fix minor typo in examples/README.txt 2016-05-20 07:04:54 -04:00
b4302187dd ImFontAtlas: Tweak to allow MergeMode to apply on a font that isn't the previous one, by setting the DstFont field. 2016-05-17 19:47:13 +02:00
1dfafeb602 CheckStacksSize() added literal strings in IM_ASSERT calls to reach end-user on common failure 2016-05-17 09:36:27 +02:00
0e51f91c5e Including limits.h again to get INT_MAX, assuming previous report of missing limits.h was erroneous (#1, yes, issue ONE!) 2016-05-16 20:27:52 +02:00
69a29e4715 Added NewLine() (very shy reminder that #97 isn't done) 2016-05-16 20:14:07 +02:00
47d10944a5 Build fix 2016-05-16 20:07:02 +02:00
787be01e61 ImGuiListClipper comments (#660, #661, #662) 2016-05-16 20:03:18 +02:00
f291f2c5dd InputText(): Fixed cursor rendering on first character when framepadding is 0.0 (following #601) 2016-05-16 19:44:03 +02:00
28b09199de ImGuiListClipper: removed assert (#662) 2016-05-16 19:25:42 +02:00
7a28f5bb81 ImGuiListClipper new version, detect height automatically, fix compatibility with SetScrollPosHere (#662) 2016-05-16 19:22:51 +02:00
fa5ae60bce Demo: added decorated label to some vertical sliders. 2016-05-16 12:05:26 +02:00
82fa628135 Merge branch 'trezanik-master' 2016-05-16 10:55:04 +02:00
1349d0aacf Examples: DirectX9: Removing spaces (#663) 2016-05-16 10:54:52 +02:00
e41fbb0390 Merge branch 'master' of https://github.com/trezanik/imgui into trezanik-master 2016-05-16 10:51:29 +02:00
790275eae2 Example: DirectX9: Backup and restore all state 2016-05-16 01:02:09 +01:00
339e191c53 Demo: Console: Add a "Scroll to bottom" button (#662) 2016-05-15 18:08:41 +02:00
9e6ed0991d Demo: clarified misleading example (#660) 2016-05-15 16:03:15 +02:00
431eaf1abe Comments to clarify what float[2] int[2] etc. are. May switch to pointers? (#659) 2016-05-14 15:35:50 +02:00
39bda5ea09 Fixed a IMGUI_API->inline case (#657, #349) 2016-05-14 10:22:25 +02:00
e79d2828c4 Metrics window: coarse clipping the detailed vertex buffer for pleasure and benefits. 2016-05-13 23:10:16 +02:00
f48f9a30ef ButtonBehavior(), fixed subtle old bug when a repeating button would also return true on release + comments (#656) 2016-05-13 11:13:54 +02:00
e1e2752dcb Fixed repeating button behavior triggering twice, typically affect the +/- of InputInt/InputFloat and user repeating buttons (#656)
+ Took note of further work
Broken in 547f34cf22
2016-05-13 10:50:59 +02:00
a2a5d71582 Demo: Tweak irritating pink color. 2016-05-12 23:13:54 +02:00
8d5b2fba95 Fixed TitleBg/TitleBgActive color being rendered above WindowBg color, being inconsistent and causing visual artefact (#655)
Broke the meaning of TitleBg and TitleBgActive. Only affect values where
Alpha<1.0f. Fixed default theme.
2016-05-12 23:12:55 +02:00
b628acbb52 StyleEditor: comments (#652) 2016-05-12 20:59:20 +02:00
10d3da6b73 Merge pull request #641 from cosmy1/errors-fix
Fix compilation errors when disabling test windows.
2016-05-12 13:41:05 +02:00
2f55dc1f33 ImFontConfig: Clarified persistence requirement of GlyphRanges array (#651) 2016-05-12 11:58:05 +02:00
ed20fcf9d5 Fixed incorrect parameter to ButtonBehavior() in Columns code - had no side-effect (#649)
Broken in 3eabad0321
2016-05-11 10:31:30 +02:00
91f11fb1bd Comments / todos 2016-05-11 09:58:43 +02:00
8648346eab Modal: fixed non-child window stacked over a modal losing its hoverabilty/focusability (#615, #604) 2016-05-10 17:02:10 +02:00
b630cb5b42 ImGuiWindow: Storing ParentWindow (#615, #646) 2016-05-10 17:00:42 +02:00
a59a04f4d0 Fixed iOS/OSX build. 2016-05-10 01:10:31 +02:00
4b5a4cae09 Fix compilation errors when disabling test windows. 2016-05-09 00:21:05 +02:00
aa11934efa Comments to clarify default shared ImFontAtlas and current context pointer thread-safety (#586, #591) 2016-05-08 17:12:54 +02:00
8a0d3b9628 Examples; DirectX10/11: Added comments about removing dependency on d3dcompiler DLL (#638) 2016-05-08 11:49:21 +02:00
382253eccf Merge branch 'master' of https://github.com/ocornut/imgui 2016-05-07 21:10:16 +02:00
36ca8a8194 Minor warnings fixes. 2016-05-07 21:09:53 +02:00
8af76d56b4 Merge pull request #639 from sergof/conversion-warnings
Ignore various anal GCC warnings.
2016-05-07 21:08:43 +02:00
2ef766a1ce Examples: DirectX10: Apply depth-stencil state like DirectX11 example (#640, #636) 2016-05-07 20:57:38 +02:00
656b1e848c Examples: DirectX11: Fixed uninitialized fields. Disabling depth-write (#640, #636) 2016-05-07 20:53:55 +02:00
f4633d09ac Examples: DirectX10, DirectX11: Removed seemingly unnecessary bunch of rasterizer state creation code. 2016-05-07 20:19:04 +02:00
834bfe4af5 Examples: DirectX11: Fixed handle leak + minor coding style fix for #640 2016-05-07 20:11:14 +02:00
1e9c9df6de Merge branch 'master' of https://github.com/josiahmanson/imgui into josiahmanson-master 2016-05-07 20:04:41 +02:00
7b9c0a5c3f Renamed ImGuiState -> ImGuiContext (#586, #269) 2016-05-07 19:55:51 +02:00
8b428e8c74 Added CreateContext/DestroyContext/GetCurrentContext/SetCurrentContext() (#586, #269) 2016-05-07 19:54:27 +02:00
5fe2cacd4d DX11 example depth test 2016-05-07 10:42:48 -07:00
6e8579fc14 Ignore implicit conversion warnings 2016-05-07 18:49:24 +02:00
69cc00f91f ImGuiStorage: Added bool helper functions for completeness. 2016-05-07 18:18:37 +02:00
ce4d731486 Minor comments, tweaks 2016-05-07 18:10:32 +02:00
313d388bba Reorganised windows moving code, documented a lag in FindHoveredWindow(), fixing lag whole moving windows (#635) 2016-05-06 11:31:32 +02:00
67df0ba185 Updated FAQ and Readme with more prominent info about WantCaptureMouse etc. flags (#635) 2016-05-06 09:18:07 +02:00
f22b6e1e09 Fixed/silenced various absurd GCC warnings from outer space (#626) 2016-05-04 23:28:16 +02:00
c1da3e354e Examples: SDL: Fixed unused variable warning on non-Windows platforms (#626) 2016-05-04 23:20:41 +02:00
79ad22e1f2 Fixed various Clang -Weverything warnings (#626) 2016-05-04 23:17:53 +02:00
efedaa5df3 Updated FAQ (#628) 2016-05-04 20:49:17 +02:00
9b79327673 BeginGroup() fixed using within Columns set (fix #630) 2016-05-04 20:22:57 +02:00
0058492156 Fonts readme, refering to IconFontCppHeaders, AddRemapChar() function, etc. 2016-05-04 17:20:11 +02:00
4ce6cf0512 Demo: Moved "Fonts" section style editor 2016-05-03 20:22:35 +02:00
f46c91f5ad Examples: DirectX9: Removed dependency on dxguid.lib + remainder of d3dx9.lib (#611) 2016-05-03 11:30:43 +02:00
731ff3d3f5 Examples: DirectX9: Removed dependency on dx3x9 (remainder) (#611) 2016-05-03 11:12:59 +02:00
50df86985d Examples: DirectX9: Removed dependency on dx3x9.h so it can be used in a DirectXMath.h only environment (#611) 2016-05-03 10:47:42 +02:00
89d5026187 Renamed majority of use of "opened" to "open" for clarity. Renamed SetNextTreeNodeOpened() to SetNextTreeNodeOpen(). (#625, #579) 2016-05-02 12:32:16 +02:00
1b9894cfb4 Merge pull request #624 from develophant/master
Fix typo in Programmer guide
2016-05-02 09:48:54 +02:00
4f34ed5010 Fix typo in Programmer guide 2016-05-01 16:18:31 -07:00
4170b4847d Style: Changed default IndentSpacing from 22 to 21 (#581, #324) 2016-05-01 23:49:10 +02:00
13df4668d1 Added GetTreeNodeToLabelSpacing() helper - tentative name (#581, #324) 2016-05-01 23:47:58 +02:00
b93040e600 TreeNode: minor tidying up (#581, #324) 2016-05-01 23:46:48 +02:00
bb674ccee6 TreeNode: added ImGuiTreeNodeFlags_AlwaysOpen flag (#581, #324) 2016-05-01 21:15:46 +02:00
9733f4fa24 Internal RenderBullet() helper. 2016-05-01 20:19:28 +02:00
f79b2d6ce3 TreeNode: added ImGuiTreeNodeFlags_OpenOnArrow flag (#581, #324, #190) 2016-05-01 20:12:14 +02:00
df764c21d6 Bullet(), BulletText(): slightly bigger. less polygons 2016-05-01 20:04:48 +02:00
470b88e965 ButtonBehavior(): ImGuiButtonFlags_PressedOnDoubleClick clears active id on double-click so that multiple flags don't trigger multiple times 2016-05-01 20:02:25 +02:00
dc8446d048 Demo: Added simple tree node selection demo (#581, #516, #190) 2016-05-01 17:55:04 +02:00
4c880b7106 Added ImGuiTreeNodeFlags_OpenOnDoubleClick (#581, #516, #190) 2016-05-01 17:46:08 +02:00
a38fd2e186 Added TreeNodeEx() functions (#581, #600, #190) 2016-05-01 17:45:31 +02:00
547f34cf22 Refactor ButtonBehavior(), fixed double-click mode also triggering on single-click (relate to #516) 2016-05-01 17:43:51 +02:00
ac501102fc Added IsItemClicked() helper (#581) 2016-05-01 17:43:17 +02:00
ec6471ca87 TreeNodeEx() wired the display-side ImGuiTreeNodeFlags_Selected flag (#581) 2016-05-01 16:06:46 +02:00
ab6bc05fc3 Fixed ImGuiTreeNodeFlags_AllowOverlapMode to behave better on touch-style inputs (#600) 2016-05-01 15:44:50 +02:00
df749e3f13 Added CollapsingHeader() variant with close button, obsoleted 4 parameters version. Refactored code into TreeNodeBehavior. (#600)
New flag and declaration makes uses of SetNextTreeNode() functions on
collapsing header more obvious as well (#579).
2016-05-01 14:34:55 +02:00
befe02559a Added IsRootWindowOrAnyChildHovered() helper (#615) 2016-05-01 12:14:07 +02:00
60d6c6d0e8 Comments/tweaks on ItemAdd() 2016-05-01 11:46:49 +02:00
bfb2dc2290 Examples: OpenGL3: Saving/restoring glActiveTexture() state (#602) 2016-04-30 19:02:19 +02:00
7406d64c64 PushClipRect(): not altering passed values, leave it to caller responsibility to floor properly (followup #582) 2016-04-30 18:55:23 +02:00
819cc414b1 Metrics window: uses IM_COL32() macro to generate constant colors. 2016-04-28 10:25:23 +02:00
c5149cd53c MenuItem(): checkmark render in disabled color when disabled 2016-04-27 23:34:24 +02:00
be7621f7c5 Updated FAQ about non UTF-8 literal (#609, #613) 2016-04-26 19:23:36 +02:00
544ba36bf6 Fixed GetFrontMostModalRootWindow() (#604) 2016-04-26 11:59:56 +02:00
6bcc31e575 Merge branch 'master' into 2016-02-colorpicker 2016-04-26 11:06:24 +02:00
ea6b615179 Made ImGui::PushClipRect()/PopClipRect() public. Changed ImDrawList::PushClipRect() prototype. Fixed demo. (#610) 2016-04-26 11:03:51 +02:00
4b6e9ac396 ImFont: Added AddRemapChar() helper (#609) 2016-04-26 10:08:06 +02:00
247da0e01b BeginGroup() comment tweaks (#608) 2016-04-25 08:45:32 +02:00
4b51e43d60 BeginGroup() extra comment because this is overused and misleading (#608) 2016-04-24 22:52:07 +02:00
919eb69931 Scrollbar: minor fix for top-right rounding of scrollbar background when window has menubar but no title bar 2016-04-24 22:38:30 +02:00
7da2d51480 MenuBar fixed missing lower border 2016-04-24 22:36:46 +02:00
a753aff07a Moved Bullet*() code below TreeNode*() code. 2016-04-24 19:38:37 +02:00
c2c0b57e5e Examples: OpenGL2: Extra comments (#606) 2016-04-24 18:11:54 +02:00
a0c411ffd2 Fixed typos in previous commit 1884f550bc (#582, #597)) 2016-04-23 14:40:43 +02:00
1884f550bc Fixed clipping rectangle floating point representation to ensure renderer-side ops yield correct results (#582, 597) 2016-04-23 14:22:41 +02:00
41215534d5 Internal ImRound() -> ImFloor(), ImRect::Round() -> ImRect::Floor(), 2016-04-23 14:10:36 +02:00
727ca4bd17 ImFont: IndexLookup stores short instead of int, so typical ascii-set lookup fits in 256 bytes 2016-04-23 11:37:18 +02:00
a20d69f9ce ImFont: Tweaking layout, shaving bit of alignment and simple hot/cot split 2016-04-23 11:29:42 +02:00
44fb99542f ImFont: RenderText() useful directly without ImDrawList::AddText().. Changed prototype. Reserving vertices after skipping non-visible lead. 2016-04-23 11:09:56 +02:00
fe73a23cf5 ImFont: Added RenderChar() helper. 2016-04-22 19:58:10 +02:00
29e259a43c InputText() clipping cursor rendering in case it gets out of the box (which can be forced w/ ImGuiInputTextFlags_NoHorizontalScroll) (#601) 2016-04-22 08:38:56 +02:00
7ce6c18bbe Refactored CloseWindowButton() into a CloseButton() helper declared in imgui_internal.h (#600) 2016-04-21 09:55:02 +02:00
559963e832 Examples: Apple/iOS: lowered xcode project deployment target from 10.7 to 10.11 (#598, #575) 2016-04-20 20:49:49 +02:00
ab4a69bcd4 Comments 2016-04-19 18:31:40 +02:00
fc3b8d0a56 Relative order of Child windows creation is preserved during sort (#595) 2016-04-19 18:31:25 +02:00
d92f1deff8 ImDrawList: Added AddQuad(), AddQuadFilled() helpers. 2016-04-18 19:04:47 +02:00
fec7dc22a9 Update README.md - binaries 2016-04-18 16:33:49 +02:00
ce61367520 Update README.md - binaries 2016-04-18 16:33:04 +02:00
af46ca2b4c Merge pull request #587 from sergof/patch-1
Fix font config propagation in FontFromMemoryCompressedTTF()
2016-04-13 09:52:34 +02:00
d5eb87d0a2 Fix font config propagation in FontFromMemoryCompressedTTF() 2016-04-13 02:01:18 +02:00
1612ca071b Examples: SDL: Initialize video+timer subsystem only. 2016-04-13 00:15:58 +02:00
006934fd15 Todo items + not using function called isblank() because it may be a macro in some C library 2016-04-12 22:36:51 +02:00
4466a7b3b0 Examples: DirectX9: save/restore some more device state. 2016-04-11 18:33:16 +02:00
074a6853c7 Moved comments 2016-04-09 19:13:02 +02:00
77177c18f0 Merge branch 'master' into 2016-02-colorpicker 2016-04-09 19:12:03 +02:00
1588eda1ac Version 1.49 WIP 2016-04-09 19:10:42 +02:00
95cbcdca3f Version 1.48 2016-04-09 17:46:48 +02:00
4c25de950c Warning fixes for clang. Using int64_t, may be an issue? 2016-04-09 17:46:38 +02:00
31852e1d05 Silence borderline warning with -Werror=strict-overflow
Error: assuming signed overflow does not occur when assuming that (X -
c) > X is always false [-Werror=strict-overflow]
2016-04-06 11:11:38 +02:00
319e288eef Update README.md 2016-04-05 23:08:21 +02:00
71b981d05f Examples: Apple: Readme tweaks (#575 #247) 2016-04-05 22:50:23 +02:00
b359ed7b3e Remove local glfw3 lib for osx. (+1 squashed commit)
Examples: Added OS X example (moved from ios, added support for os x)
2016-04-05 22:43:36 +02:00
67b604412b Remove local glfw3 lib for osx. (+1 squashed commit)
Squashed commits:
[34cc3b7] Adds osx example. (+6 squashed commits)
Squashed commits:
[20330f2] Uses glfw by brew install.
[0427861] Renames imguiex folder name to imguiex-ios
[f9e27e5] Renames ios_example to apple_example.
[44f8fe3] Updates the glfw header/library path.
[919f279] Renames target from imguiex to imguiex-ios since there is already a imguiex-osx target now.
[24395f5] Adds osx example.
2016-04-05 18:13:48 +08:00
2ee76bbff6 Trivial format string fix in demo 2016-04-05 09:23:00 +02:00
e808b7cfca Style: removed WindowFillAlphaDefault which was confusing and redundant, baked into WindowBg color. Renamed TooltipBg > PopupBG. (#337)
bg_alpha parameter of 5-parameters version of Begin() is an override,
however that function may become obsolete someday.
2016-04-04 01:37:02 +02:00
947171dcef Fixed InputTextMultiLine(), ListBox(), BeginChildFrame(): outer frame not honoring bordering (following #462) 2016-04-04 00:30:50 +02:00
07df3cfb3e Added ImGuiWindowFlags_AlwaysUseWindowPadding flag to ensure non-border child window uses window padding (#462) 2016-04-04 00:29:57 +02:00
8e353af1d3 Renamed ImGuiWindowFlags_Force**Scrollbar to ImGuiWindowFlags_Always**Scrollbar (#476) 2016-04-03 23:28:05 +02:00
26be1511e9 Merge branch 'Loftilus-master' 2016-04-03 17:43:40 +02:00
c1427de5b6 Examples: Libs: Update glfw binaries to glfw master. 2016-04-03 17:41:59 +02:00
0e7b9b8284 Examples: Vulkan: Coding style tweaks. 2016-04-03 17:32:53 +02:00
9c513d4443 Merge branch 'master' of https://github.com/Loftilus/imgui into Loftilus-master 2016-04-03 16:42:56 +02:00
f45fd1cef6 Comments 2016-04-03 16:42:35 +02:00
552246feed Examples: DirectX10,DirectX11 : Minor renaming 2016-04-03 13:02:04 +02:00
518f32ccfe Examples: DirectX10: Save/restore state + minor cleanups (#570) 2016-04-03 12:59:56 +02:00
90493f8add Examples: DirectX11: Shallow massaging to make the code more consistent/readable (following #570) 2016-04-03 12:48:38 +02:00
726b91a2cd Merge branch 'nlguillemot-patch-1' 2016-04-03 12:43:43 +02:00
2942240072 Examples: DX11: Cleanup state backup/restore code (#570) 2016-04-03 12:43:17 +02:00
d4d51a7802 capture and restore all state 2016-04-02 19:08:27 -07:00
4c1d4233b2 Merge branch 'master' into 2016-02-colorpicker 2016-04-03 01:10:26 +02:00
650515ce49 Updated todo list and comments 2016-04-03 01:07:11 +02:00
d53c308852 Moved EndFrame() back to imgui_internal.h + comments. Undo cfbf06e394 2016-04-03 00:47:41 +02:00
1eacfd120b Update README.md 2016-04-03 00:26:00 +02:00
c61e08e8c4 InputText: move to next word OS X style behavior on OS X (#473) 2016-04-02 22:06:47 +02:00
aeaf5ccebb stb_textedit.h: proposal for upstream PR to allow custom move-left/move-right handlers (following #473) 2016-04-02 21:20:41 +02:00
9945eecaf4 stb_truetype: updated 1.08 > 1.10 + minor unused variable warning fix 2016-04-02 20:12:20 +02:00
c3376cd45c stb_textedit.h Local warning fixes 2016-04-02 20:08:42 +02:00
e7b95646b9 stb_textedit.h updated to 1.8 (our two main changes were merged now) 2016-04-02 20:08:11 +02:00
f48fc51777 IO: Added unused MultiSelectUsesSuperKey dummy field to convey semantic for OS X compatible behavior (#473) 2016-04-02 18:58:42 +02:00
aa7a29cdbf InputText(): Added io.DoubleClickSelectsWord option for OS X compatible behavior (#473) 2016-04-02 18:57:50 +02:00
587fc60f25 InputText/IO: Added WordMovementUsesAltKey , ShortcutsUseSuperKey for OS X Compatible behavior (#473) 2016-04-02 18:57:08 +02:00
a6399f120f IO: Added "Super" keyboard modifiers (corresponding to Cmd on Mac and Windows key in theory although the later is hard to read) (#473)
NB: Value not used.
2016-04-02 18:22:40 +02:00
171b0e5ca9 Update README.md 2016-03-30 16:30:17 +02:00
ae0c33c983 Examples: Links 2016-03-29 11:33:23 +02:00
9e817a7c38 ColorPicker3/4: Fixed missing ID scoping (#346) 2016-03-28 23:45:23 +02:00
6a241d4895 ColorPicker3: Fixed 2016-03-28 23:38:04 +02:00
326c4e40f8 Merge branch 'master' into 2016-02-colorpicker 2016-03-28 23:17:13 +02:00
41c5d4651b Update README.md 2016-03-27 12:04:17 +02:00
c4876078b4 Update README.md 2016-03-27 11:43:12 +02:00
cfbf06e394 Comments and moved EndFrame() for imgui_internal.h (for clarity? or extra confusion?) 2016-03-27 10:38:14 +02:00
39c9bb73e8 Merge pull request #563 from mneumann/fix_dragonfly
Fix compilation on DragonFly BSD
2016-03-26 16:40:00 +01:00
7661b1e778 Trim trailing spaces 2016-03-26 15:43:45 +01:00
2b7eeba143 Trim trailing spaces 2016-03-26 15:38:52 +01:00
d6750c87c2 Combo: display popup above if there's isn't enough space below / or select largest side (#505) 2016-03-25 23:36:43 +01:00
7c9fa59329 Combo: Right-most button stays highlight when popup is open. 2016-03-25 22:55:45 +01:00
c71aae08f3 Merge branch 'brushfiregames-master' 2016-03-25 22:28:19 +01:00
fdc4299c6c Examples: SDL: Made ImGui_ImplSdlGL3_NewFrame() signature match GL2 one 2016-03-25 22:27:43 +01:00
e6c2c1fcfd Examples: SDL: Minor fixes to follow syntax of other examples (#495) 2016-03-25 22:25:20 +01:00
8a61c0afea Applying same fix to OpenGL 3 example. Fixing spaces/tabs. 2016-03-25 22:20:57 +01:00
a9b0abe493 Automatically updating DisplayFrameBufferScale by reading the OpenGL drawable size and comparing with the window size. This fixed dear imgui which was rendering only to 1/4 of my window. 2016-03-25 22:19:07 +01:00
aecf5d12e6 DragFloat(), SliderFloat(), InputFloat(): fixed cases of erroneously returning true repeatedly after a text input modification (#564) 2016-03-25 21:53:59 +01:00
adb4d4d48b Fix compilation on DragonFly BSD 2016-03-24 19:37:11 +01:00
5b8aa0dc84 FAQ and comments about the use of ImTextureID (#562, #561, #521, #510, #497, #475) 2016-03-24 11:06:57 +01:00
04396ed7a9 FAQ and comments about the use of ImTextureID (#562, #561, #521, #510, #497, #475 ...) 2016-03-24 11:00:47 +01:00
d39029f3a8 Branch fix 2016-03-23 10:51:40 +01:00
baabe3b62c Merge branch 'master' into 2016-02-colorpicker 2016-03-23 10:50:37 +01:00
367c53967f Metrics: inspect individual triangles in drawcall 2016-03-22 21:17:24 +01:00
5bed7144fe ImDrawList: Added AddTriangle() function 2016-03-22 20:10:06 +01:00
9260d46c2c Comments 2016-03-21 22:51:51 +01:00
b495a52fc0 ImDrawList: Allow AddText(ImFont* font, float font_size, ...) to take NULL/0.0f as default 2016-03-21 22:43:53 +01:00
37d50dccf9 Added GetFontTexUvWhitePixel() helper. 2016-03-21 22:30:32 +01:00
a274a09955 Renamed GetWindowFont()->GetFont(), GetWindowFontSize()->GetFontSize() (related to #340) 2016-03-21 22:29:11 +01:00
928832a5bc Various tidying up / comments, moved columns functions declarations, no functional changes 2016-03-21 22:11:43 +01:00
9cbc6e196b ImDrawList: AddRect() added optional thickness parameter + updated demo 2016-03-21 21:56:23 +01:00
86fb3a6a3c ImDrawList: AddCircle() takes optional thickness parameter 2016-03-21 21:48:05 +01:00
8e8e59a942 Merge pull request #555 from DMartinek/patch-1
CheckboxFlags: Added support for passing/testing multiple flags at the same time.
2016-03-21 13:09:55 -07:00
1bd3942b8e Merge branch 'kylawl-master' 2016-03-21 13:02:33 -07:00
feba83cfcd Merge branch 'master' of https://github.com/kylawl/imgui into kylawl-master 2016-03-21 13:02:25 -07:00
a9e303e006 Minor comments 2016-03-21 12:56:56 -07:00
b8fcb4e7e4 Converted tabs to spaces 2016-03-21 12:40:02 -07:00
3f46d9b933 Renamed FindTextDisplayEnd to FindRenderedTextEnd 2016-03-21 12:33:48 -07:00
5bffc85ba6 Exposed FindTextDisplayEnd to imgui_internal.h 2016-03-21 12:07:13 -07:00
37716184b3 Fixed coding style. 2016-03-18 16:49:19 +01:00
5abb39cb1f Added support for CheckboxFlags that can set multiple flags at the same time. 2016-03-18 14:02:14 +01:00
1394616d9c Vulkan Example: Some code layout changes. 2016-03-10 12:30:38 +01:00
4ea4fa3e73 Vulkan Example: Fix synchronization. 2016-03-10 11:59:42 +01:00
0ceddc29ff Vulkan Example: Fix windows build. 2016-03-09 17:01:38 +01:00
4cbd316f01 Vulkan example. 2016-03-09 16:39:54 +01:00
4b7edffe8a Comments 2016-03-08 20:54:21 +01:00
9ea093ddd0 DragFloat(): always apply value when mouse is held/widget active, so that can use a drag over an always-reseting value 2016-03-07 13:12:15 +01:00
1dcb9c877d Examples: OpenGL: Fix early return on zero-sized framebuffer breaking GL state (#486, #547) 2016-03-06 10:46:57 +01:00
6346690962 Comment (#544) 2016-03-04 14:09:08 +01:00
459af7683c Merge branch 'master' into 2016-02-colorpicker 2016-03-04 13:57:33 +01:00
3db40903ba InputText() ImGuiInputTextFlags_CallbackAlways event set the EventFlag field of ImGuiTextEditCallbackData (#541) 2016-03-04 13:07:42 +01:00
2065cbec4d Removed extraneous comma for pedantic compilers (#516) 2016-03-03 00:34:06 +01:00
76ce08c338 Merge branch 'zapolnov-master' 2016-03-03 00:30:26 +01:00
b816d05e33 Minor tidying up following (#516) - renamed ImGuiSelectableFlags_HandleDoubleClick to ImGuiSelectableFlags_AllowDoubleClick + comments 2016-03-03 00:30:08 +01:00
6846873f23 Merge branch 'master' of https://github.com/zapolnov/imgui into zapolnov-master 2016-03-03 00:18:58 +01:00
d45044fe54 CaptureKeyboardFromApp() / CaptureMouseFromApp(): allow to enforce clearing the capture flag (#533) + demo + made code a little less messy 2016-03-03 00:09:41 +01:00
cf12bc7dea InputText: Added BufTextLen in ImGuiTextEditCallbackData. Requesting user to maintain it. Zero-ing structure properly before use. (#541) 2016-03-02 23:34:29 +01:00
17d3c202ac BeginChild()/EndChild() fixed incorrect layout to allow widgets submitted after an auto-fit child wnidow (#540) 2016-03-02 21:46:23 +01:00
ba80a457b9 Demo: plot code doesn't use ImVector to avoid heap allocation + comment (#538) 2016-02-29 12:53:05 +01:00
1881cbe860 TextUnformatted: Fixed rare crash bug with large blurb of text (2k+) not finishing with a '\n' and fully above the clipping Y line. (#535) 2016-02-24 22:43:17 +01:00
4afe67cdc8 Demo: Fixed malloc/free mismatch and leak when destructing demo console (if it has been used) (#536) 2016-02-24 11:50:21 +01:00
f6181b3428 Examples: DirectX12: Add directx12_example 2016-02-22 15:22:48 -08:00
a43a9e602a ColorEdit4: support ImGuiColorEditFlags_NoSliders to display only a button (wip #346) 2016-02-21 23:55:01 +01:00
f8fede1d8b Added ColorPicker3/ColorPicker4, refactoring ColorEdit3/ColorEdit4 adding a bunch of flags and access to picker (wip #346)
Still pretty much experimenting so may break API
2016-02-21 23:23:30 +01:00
ab97b42935 Merge branch 'master' of https://github.com/ocornut/imgui 2016-02-21 18:10:44 +01:00
d1061c8799 Exposed FindWindowByName() in imgui_internal.h (missing chunk following 339b67c01a) 2016-02-21 18:10:35 +01:00
991d9e2884 Update README.md 2016-02-20 23:20:15 +01:00
874df53403 Update README.md 2016-02-20 20:46:08 +01:00
339b67c01a Exposed FindWindowByName() in imgui_internal.h 2016-02-20 17:37:36 +01:00
2813a44dcc Examples: OpenGL: skip rendering and calling glViewport() if we have a zero-fixed buffer (#486) 2016-02-16 09:14:38 +01:00
9e86d0e225 Examples: SDL/OpenGL: Tabs to spaces 2016-02-15 10:56:37 +01:00
87a6110994 Examples: OpenGL3: Fix BindVertexArray/BindBuffer order (#527) 2016-02-15 10:55:20 +01:00
20ba769644 Allow windows with only a callback only to be functional + minor cleanup (#524) 2016-02-14 10:33:56 +01:00
5b7a0b1b40 InputText() added comment (#526) 2016-02-11 23:00:14 +01:00
07e379a950 Examples: DirectX9: Wastefully use a RGBA8 texture for the font texture to make compability more evident with user's textures (#521) 2016-02-08 09:03:43 +01:00
dafedc3246 Demo: use locally defined strdup because compilers/standard librairies are an annoyance (#520) 2016-02-08 08:44:45 +01:00
2c6bc95dd5 Demo: InputText password demo filters out blanks (#515) 2016-02-03 09:24:57 +01:00
b329a36d27 Moved declaration of SetItemAllowOverlap() to imgui.h (ref #517) 2016-02-02 19:52:30 +01:00
a908c109c0 Added flag for selectables to handle double clicks. 2016-01-31 22:08:35 +01:00
62fe0b59bf Updated todo list 2016-01-30 18:34:19 +01:00
2efaa9a86f ImDrawList: fixed index overflow check broken by AddText(). Added extra assert. (#514) 2016-01-30 17:01:10 +01:00
a3b00b79f2 Fixed removal of trailing draw command if it is a callback command 2016-01-30 16:37:30 +01:00
b671840d15 InputTex(): Comment (#512) 2016-01-30 15:00:45 +01:00
b1ec90d565 InputText() fixed clipping bounds of contents (#512) 2016-01-30 14:57:24 +01:00
7afd62ec57 Tentative fix for GCC/Clang (#484, #504) 2016-01-25 21:45:45 +00:00
595684e08c Remove dependency on <new> header (#484, #504)
(Now expecting something to fail somewhere..)
2016-01-25 21:26:53 +00:00
3ee50af57e Fixed clipping of child windows within parent not taking account of childouter clipping boundaries (including scrollbar, etc.) (#506) 2016-01-25 20:55:34 +00:00
005b897d7d ProgressBar() handling of border size + storing border size in window structure (#503) 2016-01-24 11:00:37 +00:00
9f6b1ace8f Tidying up internal FindBestPopupWindowPos() 2016-01-23 15:13:55 +00:00
94dc3df956 ColorEdit4: Empty label doesn't add InnerSpacing, like other widgets (ref #346) 2016-01-23 14:57:48 +00:00
b6fe5eb4b4 Cleaned up the top of imgui.h, documenting all types / forward declarations 2016-01-23 12:45:56 +00:00
d5fd87e806 Added IM_COL32 macros (ref #346) 2016-01-23 12:15:49 +00:00
570a9dadc4 Honoring exact width passed to PushItemWidth(), previously it would add extra FramePadding.x*2 over that width. (ref #346)
If you had manual pixel-perfect alignment in place it might affect you.
2016-01-23 12:07:26 +00:00
8f0f71c7ba InputScalarEx(): removed unnecessary aabb computation. 2016-01-23 11:56:39 +00:00
2a505ebb9a ColorEdit4(): removed unnecessary calls to scanf() when idle in hexadecimal edit mode. 2016-01-23 11:29:22 +00:00
56927cbb54 Begin(): made the close button explicitly set the boolean to false instead of toggling it (#499) 2016-01-22 10:00:32 +00:00
13b1e0ec9b Merge branch 'master' of https://github.com/ocornut/imgui 2016-01-21 22:30:51 +00:00
b8f86ec4bd Examples: OpenGL2/3 Makefile; Added -lGL to Linux build 2016-01-21 22:30:47 +00:00
d6be992bef Travis CI: test adding osx 2016-01-21 21:43:24 +00:00
a81a5e5235 Commented Clang warning that's not compatible with all versions. Comments. 2016-01-21 21:40:22 +00:00
9e8795f4e2 Examples: Added extra comments 2016-01-21 18:51:42 +00:00
f144646c83 Merge branch 'master' of https://github.com/ocornut/imgui 2016-01-20 10:30:33 +00:00
e585204d82 ImFontAtlas: heuristic increase texture width up to 4096 with 4000+ glyphs. Various comments (#491) 2016-01-20 10:30:28 +00:00
39510d05ea Update README.md 2016-01-17 10:35:21 +00:00
3922988dea TreeNode(), CollapsingHeader() fixed not being to use "##" sequence in formatted label.
Removed DisableHideTextAfterDoubleHash hack used by Metrics window.
2016-01-16 12:25:40 +00:00
739e73b07b CalcTextSize(): adding early out for empty displayed string (#487) 2016-01-16 12:11:57 +00:00
fc66365805 Added overlooked test for label_size.x>0 before calling RenderText for label in a few instances (#487) 2016-01-16 12:01:18 +00:00
31fe006c85 Examples: DirectX10 fixed ImGui_ImplDX10_NewFrame() from recreating device objects if render isn't called (g_pVB not set) 2016-01-11 10:29:03 +00:00
6277ffe00f Examples: DirectX11: fixed ImGui_ImplDX11_NewFrame() from recreating device objects if render isn't called (g_pVB not set) 2016-01-11 10:19:38 +00:00
85725ff9c6 Added ImGuiWindowFlags_ForceVerticalScrollbar, ImGuiWindowFlags_ForceHorizontalScrollbar flags (#476) 2016-01-10 12:01:56 +00:00
76ca7c42ca ImDrawList: Added PrimQuadUV() helper to ease custom rendering of textured quads 2016-01-08 14:57:25 +00:00
bf6f6ba858 Demo: extra comments and example for PushItemWidth(-1) 2016-01-06 01:24:49 +01:00
49fb7364b5 Examples: SDL2+OpenGL3: Fix context creation options (#468, #463) 2016-01-05 10:23:43 +01:00
35085a4480 Drag*, Slider* clarified that keyboard inputs aren't clamped (#413) 2016-01-02 12:21:30 +01:00
749e8fa345 Minor optimization so that mass-calling BeginPopupContext* functions can early out more commonly without hashing ID 2015-12-31 12:11:28 +01:00
81c86dd5e7 Various minor fixes following a pass of cppcheck static analyzer 2015-12-30 11:55:37 +01:00
8061a6ceea ImVector: erase/insert uses Data/Data+Size directly. 2015-12-30 11:45:34 +01:00
4e3c6f64c0 Various minor fixes following a pass of cppcheck static analyzer 2015-12-30 11:45:13 +01:00
3aa4a108ed Examples: SDL/OpenGL3: Fixed linking documentation for MacOSX (#463) 2015-12-30 11:27:39 +01:00
40ed6a51b0 Fixed ImGuITextBuffer::empty() - unused in core lib - from being utterly broken 2015-12-30 11:07:31 +01:00
68bde7b862 Clarify comment (#455) 2015-12-27 21:41:01 +01:00
d212401624 Fixed ImDrawList::AddRect() which used to render a rectangle 1 px too large on each axis., fixed Image(), ImageButton() as well (#457) 2015-12-27 21:31:43 +01:00
6dbdc69131 ImDrawList: Fixed AddCircle() to fit precisely within bounding box like AddCircleFilled() and AddRectFilled() (followup #457 2015-12-27 20:18:43 +01:00
668a247af0 Demo: added more draw primitives in the Custom Rendering example (#457) 2015-12-27 19:49:31 +01:00
dc4a07c49a Fixed various Clang -Weverything warnings 2015-12-26 14:59:07 +01:00
e41568f87f Version number 1.48 WIP + Update binaries 2015-12-26 10:02:57 +01:00
24d186753e Version number 1.47 2015-12-25 22:44:03 +01:00
1c5aa32d2b TODO items. Moved ImDrawList::Clear* methods suggesting they aren't for end-user. 2015-12-25 17:41:45 +01:00
1bdd3b8e00 Merge branch 'master' of https://github.com/ocornut/imgui 2015-12-25 12:00:07 +01:00
2849596069 Comments about ImDrawList::PushClipRect 2015-12-25 11:59:49 +01:00
8de3f4843c Update README.md - revert + patrons 2015-12-24 20:19:59 +01:00
f631ae26ca Update README.md - dear imgui 2015-12-24 20:06:09 +01:00
e4cf44e967 Minor rebranding "ImGui" -> "dear imgui" (#21) 2015-12-24 20:00:50 +01:00
25c9448dda imconfig.h tweak, not advertising IMGUI_INCLUDE_IMGUI_USER_INL anymore. 2015-12-24 20:00:49 +01:00
e34b4b46da Update README.md - dear imgui 2015-12-24 20:00:29 +01:00
f3b41b35c2 Initial creation of a ImGuiWindowFlags_NoBringToFrontOnFocus window push it at the front of global window list 2015-12-24 14:55:42 +01:00
40ddf8e287 Exported high-level versions of PushClipRect / PopClipRect to imgui_internal.h (#448) 2015-12-24 14:47:11 +01:00
96e2b925b1 Comments (#449) 2015-12-24 10:45:52 +01:00
fc7a3d07bb BeginPopupContextItem: fixed comment (#439) 2015-12-21 17:21:16 +01:00
4723d97cfb Added BeginPopupContextItem() comment (#439) 2015-12-21 00:04:33 +01:00
6102aa1375 BeginPopupContextWindow() and BeginPopupContextVoid() reopen window on subsequent click (#439) 2015-12-20 23:39:47 +01:00
66886405f6 Minor comment (#439) 2015-12-20 23:32:24 +01:00
217a6c875a Examples: OpenGL: Tentative fix for miscaled call to glViewport on high-DPI screens (#441)
Fix for 980ca286fe
2015-12-19 20:54:23 +01:00
2e5577f44f Fix for popups being incorrectly positioned if their contents are larger than display and WindowPadding < DisplaySafeAreaPadding 2015-12-17 12:22:50 +00:00
21f0d64a74 stb_rect_pack.h update to 0.08 2015-12-16 11:14:49 +00:00
0b10bec71f ImDrawList: Simplified code and added check to avoid mis-recycling a callback command. 2015-12-16 01:13:36 +00:00
0873da85ec ImDrawList: Fixed bug with PopClipRect() sometimes altering TextureId + fixed merging of draw calls with same TextureId 2015-12-16 01:01:34 +00:00
370de414ef TreeNode(): Fixed horizontal spacing for layout to match Bullet() (followup to #414, #282) 2015-12-13 23:42:44 +00:00
2e5352786a Bullet(), BulletText(): vertical and horizontal alignment fixes (namely for widget sized line height). (followup to #414, #282) 2015-12-13 23:41:02 +00:00
558430ca8f TreeNode() fixed alignment of collapse arrow to it matches bullet (broken in 4006fb77bc) 2015-12-13 22:07:01 +00:00
5084f90a0d Added ProgressBar() (#333) 2015-12-13 21:41:45 +00:00
76ab5587e4 GetColorU32: Comments 2015-12-13 19:55:15 +00:00
9b6b1bc0f3 Added GetColorU32 helpers (previously internal and misplaced as window->Color()) 2015-12-13 19:32:37 +00:00
7bcebdc207 Comments and missing forward declaration 2015-12-13 18:02:15 +00:00
8afbdd1ade ImColor: Added SetHSV helper function. 2015-12-13 17:17:53 +00:00
7b0bf23071 Ensure that individual widgets are pixel aligned when using non pixel snapped font rendering. 2015-12-13 17:12:35 +00:00
02ce1a2b32 Demo: Display extra info from ImFontConfig in the font display 2015-12-13 16:15:11 +00:00
56c4f5b7dc MenuBar clipping rectangle fix for bordered mode 2015-12-13 16:03:52 +00:00
b49a985324 Various adjustment for border to be inside instead of outside the window size 2015-12-13 16:01:25 +00:00
18223fd3ab Demo: Tweak window option and style display 2015-12-13 14:03:26 +00:00
a9bdda0d95 Demo: Added style editor in demo menu + exposed WindowFillAlphaDefault 2015-12-13 13:36:00 +00:00
b1b759938e Fixed SizeContents and auto-fit size not being rounded to integer, which affects border rendering when using non-default font 2015-12-13 12:52:55 +00:00
9583868bab Added ImGuiIO::ClearInputCharacters() superfluous helper. 2015-12-12 00:08:54 +00:00
6c7f8efe1e InputText: update mouse drag on mouse move only & key input reposition selection bounds (better fix for #429) 2015-12-11 22:37:47 +00:00
4bfd5cd95f InputText: when keys are being input while mouse is dragging, disable mouse drag until button release (#429) 2015-12-11 22:20:16 +00:00
bf83ac8b55 Examples: Fixed msvc batch files from warning. 2015-12-07 21:27:25 +00:00
de4ae2d53a Metrics: computing drawcmd bounding box handle case where buffer has been de-indexed. 2015-12-05 11:26:47 +00:00
5dec997fbe Minor tidying up of now redundant code 2015-12-04 23:41:24 +00:00
c80e2274f1 Renamed Color() helpers to ValueColor() - dangerously named, rarely used and probably to be made obsolete. 2015-12-04 23:39:54 +00:00
ecc97bda7d Added SetItemAllowOverlap() exposed in imgui_internal.h only 2015-12-03 21:30:17 +00:00
18724f021a Merge branch 'JuJuBoSc-master' 2015-12-03 18:32:33 +00:00
9596e6f794 Examples: DirectX10: Minor tweaks, updated to latest example changes (#424) 2015-12-03 18:32:01 +00:00
dadd03fc11 Examples: DirectX10: Fix warning, disable debug device, add ignore list (#424) 2015-12-03 18:20:48 +00:00
59f0db6f15 Merge branch 'master' of https://github.com/JuJuBoSc/imgui into JuJuBoSc-master 2015-12-03 18:18:14 +00:00
32c1a3e46c Removed d3d11 references 2015-12-03 13:39:03 +01:00
730e8119fe Updated stb_truetype 1.07 -> 1.08 2015-12-03 12:35:27 +00:00
1f3a0e78cc Ported d3d11 renderer to d3d10 2015-12-03 13:18:35 +01:00
fe2972e8b2 Merge pull request #420 from RaptorFactor/master
Examples: DX11: Compile shaders with lower features levels.
2015-11-30 19:36:06 +00:00
6adf644448 Allow DX11 renderer to be used with devices with lower feature levels. 2015-12-01 05:08:30 +11:00
1b7aee7b9d Examples: DX11: Remove debug flag (#415) 2015-11-30 10:22:46 +00:00
632f9ec36a Commenting asserts 2015-11-30 09:45:45 +00:00
5f8200d52c TreeNode/CollapsingHeader: some minor cleanup of that horrible function. 2015-11-29 22:38:58 +00:00
d1b4159b51 TreeNode/CollapsingHeader: some minor cleanup of that horrible function. 2015-11-29 22:25:13 +00:00
9dca2ca960 Comments & spacing 2015-11-29 22:01:26 +00:00
b7e1ae4bf9 Added comment on using PushFont() before building the font (#232) 2015-11-29 21:33:51 +00:00
a500c0daf7 Demo: some TreeNode layout examples (#414, #282) 2015-11-29 21:02:15 +00:00
4006fb77bc TreeNode,CollapsingHeader: sizing fixes to support laying out item on same line before/after (#414, #282) 2015-11-29 20:35:58 +00:00
546962351b Internal minor renaming 2015-11-29 20:27:48 +00:00
6cee2fca94 Examples: Not clearing input data/tex data in atlas (will be required for dynamic atlas anyway). Effectively fix resizing in DX examples.
+ Standardized comments.
2015-11-29 14:54:05 +00:00
6269859315 Replace OS IME (Input Method Editor) cursor on top-left when we are not text editing. 2015-11-29 14:15:07 +00:00
3aebddc4ac Tweak GetGlyphRangesJapanese() to it is easier to modify 2015-11-29 11:55:54 +00:00
94ec3d534e Examples: Header comments. 2015-11-29 11:25:15 +00:00
6800939e73 Examples: Header comments. 2015-11-29 11:19:30 +00:00
5c52e9ec0d Examples: Clarified comments. Removed font merging example from comments. 2015-11-29 11:11:03 +00:00
d673db3092 Examples: Added README into the Visual Studio solution to people are less likely to miss it. 2015-11-29 11:01:50 +00:00
9735563b65 Additional comments for new users 2015-11-29 10:53:03 +00:00
eb6575508f Demo: Tweaked Clipping example. 2015-11-29 10:29:06 +00:00
b2b4bbe5ea Demo: Fixed variable shadowing warning. 2015-11-29 10:25:55 +00:00
79b09e7d10 Fixed int>void* warnings for 64-bits architectures and fancy warnings 2015-11-29 10:20:50 +00:00
f505a372fd Speculative build fix for old versions of Visual Studio compiler 2015-11-28 20:00:40 +00:00
ba77166432 Demo: comments (#414) 2015-11-28 17:23:32 +00:00
32d2768734 Demo: Moved property editor demo to its own mini example applet (#414) 2015-11-28 17:16:59 +00:00
d3df39fed1 Columns: Added Property Tree demo among tidying up demos (#125, #414) 2015-11-28 16:44:09 +00:00
4ca34a879d Columns: Fixed bug with indentation within columns, also making code shorter/faster (#414, #125) 2015-11-28 16:36:25 +00:00
a9009b133c Columns: Undo accidental change from 807d4ff92c 2015-11-28 15:52:57 +00:00
6e2e60ffad Merge branch 'master' of https://github.com/ocornut/imgui 2015-11-28 15:35:22 +00:00
e4ba6e525b Columns:: columns set with no implicit id include the columns count into the id to avoid collisions (#125) 2015-11-28 15:35:10 +00:00
807d4ff92c Columns: minor tidying up while investigating severe issues with indenting within columns (#414) 2015-11-28 12:14:50 +00:00
c0ec9f4e63 Merge pull request #416 from zryan3/bugfix/sdl2_typos
Examples:SDL: fixed comment referencing GLFW.
2015-11-28 09:36:06 +00:00
aa6cb32bd4 fixed text referencing GLFW library in SDL examples 2015-11-27 23:04:35 -07:00
b4556c404d Update README.md
Removed paragraph.
2015-11-27 23:43:19 +00:00
bfacd250df Update README.md 2015-11-27 23:42:07 +00:00
58b23b4785 Columns: avoid growing ColumnsData vector when closing a window with no columns (#125)
(Will break calling GetColumnOffset() when there's no column but it
would only have worked after the first frame anyway, so basically it
didn't work)
2015-11-26 23:07:10 +00:00
1aac69c937 Columns: tidying up, moving OffsetT to a ImGuiColumnData structure 2015-11-26 23:01:15 +00:00
95138fa8d6 Merge branch 'master' of https://github.com/ocornut/imgui 2015-11-26 22:43:28 +00:00
3102c0c97e Rename internal ColumnsStartX to IndentX, makes more sense 2015-11-26 22:43:21 +00:00
60b75d78ea Update README.md 2015-11-24 19:13:05 +00:00
10ba61f882 Added links 2015-11-24 15:35:07 +00:00
5d84f4b450 Update README.md - faq 2015-11-22 23:16:19 +00:00
b959c74488 Update README.md - faq 2015-11-22 23:12:50 +00:00
83e6cfbec0 Examples: DirectX9/11: Removed assumption about Unicode build in example main.cpp (#399) 2015-11-22 21:23:56 +00:00
dc86a8a0bf Examples: OpenGL3: Fixed gl3w.c for Linux when compiled with C++ compiler (#411) 2015-11-22 17:16:55 +00:00
38cfdafbaf Examples: SDL/OpenGL3: Added -ldl to Linux command-line (#411) 2015-11-22 17:09:03 +01:00
1e69a86d30 Update README.md 2015-11-20 09:36:43 +01:00
92c518a420 InputText: Added password mode via ImGuiInputTextFlags_Password (#237, #363, #374) 2015-11-19 23:09:59 +01:00
6b03ddbcb1 Demo: Made the "menu inside a regular window" be in a different menuset. Added a comment (#409) 2015-11-16 22:43:42 +01:00
e2ecc02e02 Examples: Updated README 2015-11-16 22:17:10 +01:00
f96de74e05 Merge branch 'zach2good-SDL_OpenGL3_Implementation' 2015-11-16 22:13:58 +01:00
899cb3b4e9 Examples: SDL+OpenGL3: Fixed readme (#356) 2015-11-16 22:13:06 +01:00
ab7e91b65e Examples: SDL+OpenGL3: Various fixes to example to make it matches current GL3 example (#356) 2015-11-16 22:12:18 +01:00
9d0caa2e66 Examples: SDL+OpenGL3: Using glew like existing example + renaming (#356) 2015-11-16 22:05:22 +01:00
624adb1b23 Tweak build batch files and readmes 2015-11-16 22:03:13 +01:00
9a8cbf128d Merge branch 'SDL_OpenGL3_Implementation' of https://github.com/zach2good/imgui into zach2good-SDL_OpenGL3_Implementation 2015-11-16 21:35:49 +01:00
693efccb62 ImageButton() uses FrameRounding up to a maximum of available framing size (#394) 2015-11-15 19:43:05 +01:00
5549744e0f Minor popups comment tweak (#402) 2015-11-15 19:09:30 +01:00
f87deff0f3 Moving stdlib.h include outside of imgui.h (#405) 2015-11-13 17:08:54 +01:00
9243aee62c Fixed unused variable warning if asserts are compiled out. 2015-11-11 10:26:12 +00:00
3b2fdf27a8 Examples: Added /Zi (output debug information) in build_win32.bat files 2015-11-11 09:45:18 +00:00
0b47edcefe Merge pull request #403 from JasonWilkins/master
Fixed a couple of problems found by CppCat code analyzer.
2015-11-10 23:28:51 +00:00
4dee8473b5 Fixed a couple of problems found by CppCat code analyzer.
* incorrect implementation of ImVec4 operator- which always gives a w value of 0
* boolean formula of ((A && B) || B) can be simplified to just (B)
2015-11-10 17:06:37 -06:00
1d76890526 Examples: OpenGL3: Implement ImGui_ImplGlfwGL3_InvalidateDeviceObjects() like other examples. 2015-11-08 22:52:25 +00:00
e4fb14a9e0 TODO notes 2015-11-08 11:00:56 +00:00
e46c7b70eb Examples: Most examples apps detect if ImDrawIdx was changed to 32-bits instead of 16 2015-11-08 11:00:31 +00:00
4982cd136e Fixed Shutdown() not clearing FontAtlas if NewFrame() was never called. (#396, #303) 2015-11-07 23:10:09 +00:00
b168c72dd1 Update README.md 2015-11-01 22:53:29 +00:00
d963ff13ca Update README.md 2015-11-01 22:25:33 +01:00
acc87f7f5e Update README.md 2015-11-01 22:18:37 +01:00
6b23fca1ff Speculative build fix for using alloca on PS4 & FreeBSD 2015-10-30 18:05:06 +01:00
0a23e2c832 Tabs to spaces 2015-10-30 15:57:03 +01:00
980ca286fe Examples: OpenGL2/3: Save/setup/restore viewport as part of render function. Update SDL example to match GL2 one. (fix #392) 2015-10-30 15:44:47 +01:00
6ffe0fddbf Examples: Fixed crash when both buttons are held (#393) 2015-10-30 15:01:26 +01:00
1a42a3f91b Refactor internal SliderBehavior() to take flags instead of a bool.
Sorry!
2015-10-30 11:43:23 +01:00
3eabad0321 Refactor - Internal ButtonBehavior() removed unnecessary boolean arg, merged into flags using ImGuiButtonFlags_NoKeyModifiers.
This is quite a risky change frankly but I'd rather refactor sooner than
later. Hopefully few people are using the internal functions.
2015-10-30 11:36:51 +01:00
e858d229a0 Examples: update all examples with same comment (#389) 2015-10-30 10:45:16 +01:00
d0afb23a3f Merge pull request #389 from dougbinks/master
Font merge demo and documentation minor additions.
2015-10-30 10:39:59 +01:00
e1bc0dd7d5 Font merge demo and documentation minor additions.
Clarifies the lifetime requirements for the ranges parameter for AddFont* functions.
2015-10-25 16:06:42 +00:00
0b0c460324 Travis CI: revert, giving up update for now. 2015-10-19 20:10:43 +01:00
7245599f04 Travis CI: test upgrading to container-based build (3) 2015-10-19 20:05:02 +01:00
d86dd37091 Travis CI: test upgrading to container-based build 2015-10-19 19:59:53 +01:00
f11adc1c08 Travis CI: test upgrading to container-based build 2015-10-19 19:57:46 +01:00
217ef444d4 ColorEdit4: Fixed broken tooltip on hovering the color button (actually fixes #373, #380) 2015-10-19 12:02:52 +01:00
5f0db60a57 Version number 1.47 WIP 2015-10-18 20:13:01 +01:00
42529f1270 Merge pull request #378 from Gargaj/patch-1
Examples: DirectX9: NULL out font texture on Invalidate so NewFrame() can be called directly without ImGui_ImplDX9_CreateDeviceObjects()
2015-10-18 18:11:54 +01:00
e4d916a4b3 NULL out font texture on invalidate
If this isn't done, NewFrame won't re-create the font.
2015-10-18 19:05:04 +02:00
72dde4d323 Version 1.46 2015-10-18 17:36:27 +01:00
fbdcb51dde Fix to allow using SetNextWindow* functions with ImGuiSetCond_Appearing on modal windows (#377)
Also affect other popups which called FindBestPopupWindowPos() on their
second frame but it most often acts as a no-op but it wouldn't be
noticeable.
2015-10-18 17:30:53 +01:00
8b9c0b2545 Tweaks (calling inner SetNext* functions directly from Begin) 2015-10-18 17:20:03 +01:00
7a61b7dd57 Renamed Window LastFrameDrawn to LastFrameActive, more correct 2015-10-18 16:57:10 +01:00
465e6839a4 ColorEdit4: hovering the color button shows correct alpha (fix #373) 2015-10-18 16:24:44 +01:00
5b7a2149fc ColorConvertFloat4ToU32() round the floats instead of truncating them. 2015-10-18 16:09:37 +01:00
43ff5a41be InputText(): always use live input data for display in read-only mode (fix #360) 2015-10-18 15:50:46 +01:00
a0d24ac03d Scrollbar: background color less translucent in default style (flattened alpha) so it works better on non-WindowBg colored background. 2015-10-18 15:36:39 +01:00
64b6e87f54 Scrollbar: fixed vertical alignment with border + no menu bar (following #365) 2015-10-18 15:35:27 +01:00
b090d711e2 InputText: removed the need for text_end pointer in the cursor position calculation loop, allows switching buffers 2015-10-18 15:25:36 +01:00
214e87d59c InputText: comments. 2015-10-18 12:18:28 +01:00
bc34ac882f InputText: added comments and somehow clarified the optimized code that calculate text position + updated demo 2015-10-18 10:57:29 +01:00
2b3fb5c0f7 Example: Marmalade: shallow tweaks and cleanups to match ImGui coding style (#375) 2015-10-15 12:44:30 +02:00
81927b073e Merge pull request #375 from gzito/master
Examples: Added example app for the Marmalade platform.
2015-10-15 11:32:13 +01:00
ba9c469ff0 no message 2015-10-14 23:13:02 +02:00
ebf4f1fa02 no message 2015-10-14 23:05:01 +02:00
79ca203850 Merge branch 'master' of https://github.com/ocornut/imgui 2015-10-14 23:01:52 +02:00
5d53f37a5d Examples: Possibly clarified the intent of imgui_impl_* files. 2015-10-13 17:53:43 +02:00
1c69b3d0df Tools: binary_to_compressed_c.cpp: added -nocompress option. 2015-10-12 13:13:00 +02:00
d4d2e5bc62 Added items to Todo list 2015-10-12 12:31:41 +02:00
a5c895f791 Added SetClipboardText / GetClipboardText helper shortcuts to match MemAlloc / MemFree 2015-10-12 12:20:01 +02:00
59cedca02e Merge pull request #371 from nguillemot/master
Examples: DirectX11: Fix vertex POSITION format (ImDrawVert::pos is 2D, not 4D)
2015-10-12 09:26:49 +01:00
509ac33abe fix POSITION format (ImDrawVert::pos is 2D, not 4D)
the inputlayout incorrectly described the POSITION attribute as being
4D, while ImDrawVert::pos is 2D. This went unnoticed because the buffer
binding has a stride of sizeof(ImDrawVert) and the POSITION is treated
as a float2 in the vertex shader. If you switch POSITION to float4 in
the vertex shader (and actually use the z/w in the matrix
multiplication) then everything become wacky-looking since it's
interpreting the texture coordinates as z/w. On a similar note: It's
weird that the projection matrix takes z and w into consideration when
those don't exist in the shader due to positions being float2s.
2015-10-11 16:42:22 -07:00
a5132286b7 ImDrawList: ChannelsSetCurrent() added an extra assert 2015-10-11 17:50:55 +02:00
8eb4df0dd6 Added comments (#369 #370) 2015-10-11 17:20:07 +02:00
8c5c0c41fc ImDrawList: AddImage() uv parameters default to (0.0) and (1.1) 2015-10-11 17:17:03 +02:00
b93e787f51 Merge pull request #369 from richardkogelnig/master
InputText: Fix for not being able to enter certain characters in InputText on german keyboard
2015-10-11 17:16:10 +02:00
8a6bde3527 Fix for AltGR being send as Ctrl&Alt on german keyboards. Don't consume characters if CTRL key press is detected AND ALT key press is detected in Imgui::InputTextEx 2015-10-11 16:25:49 +02:00
fae7b34a3f Fixed bug with handling of malformed utf-8 at the end of a non-zero terminated string range. 2015-10-09 21:47:41 +02:00
50b25b6c75 Added example for the Marmalade platform 2015-10-08 22:38:37 +02:00
b8281d96bd Fixed mouse release double-triggering (#359, #362) 2015-10-08 20:59:49 +02:00
a77e534ded Examples: OpenGL2: Add msys2/mingw64 target (#361) 2015-10-08 20:48:50 +02:00
379079ac42 Merge pull request #361 from fr500/master
Examples: OpenGL3: Add msys2/mingw64 target.
2015-10-08 20:47:22 +02:00
80173fec96 Merge branch 'osman-brian-master' 2015-10-08 20:44:25 +02:00
edf730b672 Missing tidying up (#358) 2015-10-08 20:44:13 +02:00
48bb3c8026 Merge branch 'master' of https://github.com/osman-brian/imgui into osman-brian-master 2015-10-08 20:40:54 +02:00
de92bc873f Scrollbar: fixed minor rendering offset when borders are enabled (fix #365) 2015-10-08 20:25:49 +02:00
0298603040 Update README.md
More begging, still in search for a solution..
2015-10-08 15:35:39 +02:00
bd78892164 Fixed IsKeyReleased() and IsMouseReleased() returning true on the first frame.
Loosely related to #362
2015-10-08 15:28:09 +02:00
e83b529846 BeginChildFrame() helper has the extra_flags parameter. 2015-10-07 00:22:44 +02:00
d087671369 HoveredId is set via a SetHoveredID() function. Added HoveredIdAllowHoveringOthers not used by default API. 2015-10-06 19:27:24 +02:00
06d594e86b Dummy() create an item so functions such as IsItemHovered() can be used. 2015-10-05 20:27:22 +02:00
54805fd22a InputText: fixed crash when passing a buf_size==0 (which can be of use for read-only selectable text boxes) (#360) 2015-10-05 14:13:24 +02:00
a465b2b3d8 add msys2/mingw64 target 2015-10-04 15:14:35 -05:00
7508d30b83 ImGuiTextBuffer: added c_str() helper. 2015-10-04 11:22:47 +02:00
69678d1ed2 Merge pull request #357 from orthographic-pedant/spell_check/accommodate
Fixed typographical error, changed "accomodate" to "accommodate" in README.
2015-10-03 19:13:04 +02:00
e031fe484c Added ImGuiWindowFlags_NoBringToFrontOnFocus behavior. 2015-10-02 19:07:04 +02:00
69e6f299f3 Update imgui_draw.cpp
Fix Decode85 on big-endian systems.
2015-10-01 14:57:31 -04:00
c1983d5c3f Draw: Fixed rectangle rendering glitches with width/height <= 1/2 and rounding enabled. 2015-09-30 21:48:36 +02:00
f21fda1231 Scrollbar: Tweaked scrollbar inner padding for small scrollbars. 2015-09-30 21:47:44 +02:00
6e4d959953 Window: fixed window lower-right clipping limit so it plays more friendly with both OpenGL and DirectX coordinates.
Not sure about this. Hmm.
2015-09-30 21:30:27 +02:00
c9d51d99b4 Scrollbar: tidying up (#355) 2015-09-30 21:19:54 +02:00
5d3d136733 Scrollbar: horizontal scrollbar demo allows to enable simultanaeous scrollbars on both axises. 2015-09-30 21:15:47 +02:00
b92daf0ba2 Scrollbar: fixed rounding of background + child window consistenly have ChildWindowBg color under ScrollbarBg fill (#355) 2015-09-30 21:15:17 +02:00
ea66a34f9d Fixed typographical error, changed accomodate to accommodate in README. 2015-09-30 13:16:55 -04:00
e130b09d91 Previous SDL implementation didn't work with my OpenGL 3.3 project, spliced the GLFW OpenGL examples on top of the SDL example to create an option that works for me. Could be useful for others. 2015-09-30 15:12:00 +01:00
a76b75c2d5 InputFloat() fixed explicit precision modifier, both display and input were broken. 2015-09-30 15:36:17 +02:00
572bf91006 Comments 2015-09-30 15:35:30 +02:00
ecb63ff8f3 Inline functions not marked with IMGUI_API because apparently it is illegal for MinGW (fix #349)
ARGH C++.
2015-09-27 22:28:16 +02:00
963f6b782d Examples: OpenGL3: saving more of blend state (#347) 2015-09-27 22:21:11 +02:00
9d89e03346 Merge pull request #348 from zho7611/add_korean_support
ImFontAtlas: Added GetGlyphRangesKorean() for Korean.
2015-09-23 18:49:11 +02:00
cc53d31764 Add support for Korean. 2015-09-24 00:50:00 +09:00
d5502cdd6d Examples: OpenGL3: Saving/restoring the Enable state, better than nothing (#347) 2015-09-23 09:14:27 +02:00
98465d401b Silencing inadequate MSVC warnings when exporting as DLL (#345) 2015-09-22 00:53:51 +02:00
914516110c Minor spacing 2015-09-22 00:53:11 +02:00
127f44c12b Demo: Extra plotting examples. 2015-09-20 13:29:18 +02:00
ab5def6ad8 PlotHistogram: Minimum bar width ensure better rendering with lots of points (~related to #342) 2015-09-20 12:02:17 +02:00
e268303c02 PlotLines: fixed rendering issue added in previous commit (#342) 2015-09-20 11:37:46 +02:00
994c286f61 Merge pull request #342 from nem0/master
PlotHistogram: Fixed rendering of histogram with a lot of values.
2015-09-20 11:26:13 +02:00
93200a6c37 fixed rendering of histogram with a lot of values 2015-09-19 21:12:26 +02:00
774099918a Update README.md 2015-09-19 15:37:28 +02:00
fee9e07e61 Updated FAQ (#341) 2015-09-19 15:22:05 +02:00
ff12afbd18 InputText(): fixed cursor pixel-alignment when horizontally scrolled. 2015-09-19 13:48:27 +02:00
0e86ed9361 InputText(): fixed mouse-dragging not scroll tracking the cursor when text doesn't fit (fix #339) 2015-09-19 13:45:51 +02:00
08bfe9bc7c Fixed assert introduced in 3b01b0a2f2 2015-09-18 15:03:44 +02:00
c4562ac573 Fixed mouse click detection to be more friendly to DeltaTime 0.0 (#338) 2015-09-17 23:42:34 +01:00
3b01b0a2f2 Extracted a EndFrame() function out of Render() but kept it internal/private + clarified some asserts (#335) 2015-09-16 23:48:42 +01:00
0a1d6b6b74 InputText() fixed ignoring text inputs when ALT is pressed (#334) 2015-09-16 10:38:42 +01:00
ec7eb05e88 ImGuiTextFilter::Draw helper return bool and resplit when filter is modified 2015-09-14 13:03:20 +01:00
f9928e96c7 InputText(): lose cursor/undo-stack when reactivating focus is buffer has changed size 2015-09-12 00:02:59 +01:00
0abe668221 ImFontAtlas: Added TexDesiredWidth and tweaked default cheapo best-width choice(#327) 2015-09-11 16:50:00 +01:00
bc8eb5e9cf ImDrawList, ImFontAtlas: comments, tweaks. moved less scary functions at the top of the file. 2015-09-11 16:35:37 +01:00
7b1168eb30 Internal ImLoadFileToMemory() return void* instead of taking void** + allow optional int* file_size 2015-09-11 16:01:54 +01:00
4d83519244 Comments (#328) 2015-09-11 15:52:03 +01:00
25b4b88a7a Examples: Update readme. 2015-09-10 21:10:01 +01:00
ad4c962224 Examples: DirectX11: Fixed batch file for VS 2012+, still works for 2008/2010.. Include path order matters... 2015-09-10 20:58:43 +01:00
853f265025 Examples: Added batch files to build Windows examples with VS 2015-09-10 20:34:06 +01:00
167c02d502 Better Git ignore list for quick compilations in same folder 2015-09-10 20:09:29 +01:00
951e1bd9a8 Merge branch 'master' of https://github.com/ocornut/imgui 2015-09-10 10:26:20 +01:00
2903c98bca Minor typo 2015-09-10 10:26:09 +01:00
07776595c2 Added missing IMGUI_API definitions in imgui_internal (fix #326) 2015-09-10 10:22:17 +01:00
c31ca3e2d5 Update README.md - demo binaries 2015-09-09 14:28:09 +01:00
1793c1a991 Comments 2015-09-09 14:15:17 +01:00
cafe8b0cd7 Comments 2015-09-09 12:42:59 +01:00
fcbbb0070e Fixed assert introduced in dafad3903e if there are no active draw list 2015-09-09 12:39:16 +01:00
b4f1e88860 Added ImGuiInputTextFlags_ReadOnly flag for InputText()/InputTextMultiline() (#211) 2015-09-09 09:08:08 +01:00
f5fb5f0c1e Minor tidying, reordering functions/members/initialisation to follow same orders 2015-09-07 23:39:36 +01:00
a09411b936 Demo: using MouseDelta 2015-09-07 23:33:44 +01:00
8a3593257f Fixed warning with VS2015 in stb_truetype.h 2015-09-07 15:51:43 +01:00
7d6ddbe5c8 Examples: comment on setting the RenderDrawListsFn function. 2015-09-07 14:58:26 +01:00
dafad3903e Added GetDrawData() alternative to setting a Render function. 2015-09-07 14:56:39 +01:00
93f9ad9ddf README.md 2015-09-05 20:03:05 +01:00
e34ad0a05a ImDrawList: fixed 1 leak per ImDrawList using the ChannelsSplit() API (via Columns) (fix #318) 2015-09-03 23:42:08 +01:00
dbc7903da8 IsMouseHoveringRect() added 'bool clip' parameter to disable clipping the rectangle with the current parameters (#316) 2015-09-03 13:13:13 +01:00
09f659271e ImFont: fixed comment (#317) 2015-09-03 10:42:38 +01:00
fc052e24b2 Added ImGuiWindowFlags_NoFocusOnAppearing flag (#314) 2015-09-02 19:13:25 +01:00
965fa3cb16 Version number 1.46 WIP 2015-09-02 19:09:19 +01:00
c9e19f8953 Version number 1.45 2015-09-01 20:34:10 +01:00
77bcb7152b Examples: DirectX11: fixed vertex shader which breaks with VS2015 somehow (DX11 version?) (#313) 2015-09-01 10:47:36 +01:00
f195bf744f Tabs to spaces 2015-08-30 22:15:33 +01:00
4ab43dce19 Comments 2015-08-30 22:10:49 +01:00
13daaf78a2 Update README.md 2015-08-30 19:41:02 +01:00
e4ef140e10 Speculative Linux build fix, not using itoa (#246) 2015-08-30 18:55:46 +01:00
350d96466e Demo: tweaks (#246) 2015-08-30 18:43:42 +01:00
1eef2c9108 Comment 2015-08-30 18:35:02 +01:00
71026d3655 Added GetScrollX(), GetScrollX(), GetScrollMaxX() apis + demo (#246) 2015-08-30 18:33:38 +01:00
7a31030978 Begin() windows flags are locked on the first begin of the frame, allowing using to not bother passing flags for append 2015-08-30 18:30:54 +01:00
e5e9c5cfbe Demo: removed extraneous flag in demo code + tweak comment (#246) 2015-08-30 18:07:51 +01:00
bbf09fd47d Fixed initial ScrollbarX decision when no vertical scrollbar is in (#246) 2015-08-30 18:07:04 +01:00
a3cad2ff06 BeginChild() fixed missing rounding for child sizes which leaked into layout 2015-08-30 18:06:54 +01:00
6eed3dc7c8 GetContentRegionMax() when window content size is explicit we don't adjust it with scrollbar sizes (#246) 2015-08-30 17:46:02 +01:00
73e73e6ef9 TextUnformatted(): simplifying 2015-08-30 17:45:05 +01:00
afa0346a0b Demo: using DragFloat instead of SliderFloat 2015-08-30 17:38:42 +01:00
e1f8fed734 Separator(): removed unnecessary computation + comment. 2015-08-30 17:25:26 +01:00
f128a8bce1 ColumnsStartX include window->Scroll.x to simplify code (#246) 2015-08-30 17:25:10 +01:00
8edbdb9775 Style: minor menubar bg alpha tweak. 2015-08-30 16:44:44 +01:00
e68d3c614e Style: made scrollbars rounded by default. Because nice. (#246) 2015-08-30 16:43:08 +01:00
9e5fb40ddd Demo: added horizontal scrolling example + enabled in console, log and child examples (#246) 2015-08-30 16:38:55 +01:00
65a191c005 Added optional Horizontal Scrollbar & allow user to explicitly set content width via SetNextWindowContentSize() etc (#246)
GetCursorPos, SetCursorPos, GetContentRegionMax,
GetWindowContentRegionMin, GetWindowContentRegionMax are now including
the scrolling amount. It PROBABLY shouldn't break anything for you, but
take note that SetCursorPosX(100.0f) puts you at +100 from the starting
x position which may include scrolling, not at +100 from the window left
side.
2015-08-30 16:37:56 +01:00
9eed672725 Bullet() fixed inconsistent layout behaviour when clipped. 2015-08-30 15:42:42 +01:00
d88b73a8b7 Added GetContentRegionAvailWidth() helper. Demo tweaks. 2015-08-30 15:35:59 +01:00
fc13ae2aa5 Turning float ScrollY into ImVec2 Scroll - no feature change, this is just to remove some syntax noise from the following commit (#246) 2015-08-30 15:08:13 +01:00
e0c375e7b8 Tidying up 2015-08-30 13:09:56 +01:00
b326c8fd1f Added GetCurrentWindowRead() for functions that don't write to the window 2015-08-30 11:56:04 +01:00
b994dd777a Fixed OpenPopup() accessing current window, effectively opening "Debug" on an empty window stack 2015-08-30 11:11:15 +01:00
0aa353868f Minor internal shortcuts not calling GetCurrentWindow() 2015-08-30 10:49:47 +01:00
aa35547f94 Demo: long text example uses ImGuiListClipper 2015-08-30 00:03:08 +01:00
2d565d4bfb Style: rename ScrollbarWidth to ScrollbarSize (sorry!) 2015-08-29 23:47:47 +01:00
64fcb5e568 TreeNode() fixed IsItemHovered() being inconsistent with visual behavior (#282) 2015-08-29 18:15:42 +01:00
65fe60f2b2 Split tree/collapsable into internal TreeNodeBehaviorIsOpened() helper (unsure..) (#282) 2015-08-29 18:13:30 +01:00
0bb46c824e Examples: OpenGL2/3: save/restore some more state correctly.
Might save an hour of staring at blank-screen to 5% of the population,
worth it.
2015-08-29 17:44:52 +01:00
f2c68109a6 Merge branch 'master' of https://github.com/ocornut/imgui 2015-08-29 14:45:15 +01:00
c381d58fb1 TreeNode(): arbitrary interaction padding after text label not part of layout (#282) 2015-08-29 14:12:53 +01:00
62a3142036 Demo: comments. 2015-08-29 13:31:30 +01:00
da807e55ea Examples: Ignore list a little more friendly to Unix systems. 2015-08-28 16:03:05 +01:00
5ebd61f89c Ignore list a little more friendly to Unix systems 2015-08-28 15:55:22 +01:00
e7cc048d81 Demo: custom rendering tweak. 2015-08-28 15:35:08 +01:00
0a11024459 IO.WantInputCharacters -> WantTextInput (#305) 2015-08-28 15:34:53 +01:00
30461345aa Removed default name parameter in Begin()
We already have a "Debug" window pushed to the stack in the first place
so it's not really a useful default.
2015-08-28 15:24:04 +01:00
8430c88451 Demo: added a bezier curve in the old custom rendering demo. 2015-08-28 14:41:10 +01:00
b803d284c3 InvisibleButton() honor negative size consistently with other widgets that do so 2015-08-28 14:18:50 +01:00
90e5c97f13 AddBezier()->AddBezierCurve(). PathBezierTo()->PathBezierCurveTo(), and reads current point back, more standard (#311) 2015-08-28 13:48:14 +01:00
d2e529e533 Merge branch 'master' of https://github.com/ocornut/imgui 2015-08-28 13:19:43 +01:00
80ad773c87 ImDrawList: added AddBezier(), PathBezierTo() for cubic bezier curves (#311) 2015-08-28 13:18:34 +01:00
55ea2988d2 Update README.md 2015-08-28 00:04:49 +01:00
e58f99179a Examples: OpenGL: fix for retina screens + io.DisplayFramebufferScale storage (#287) 2015-08-27 19:51:02 +01:00
a36001212f ImDrawData: added ScaleClipRects() helper (#287) 2015-08-27 18:45:43 +01:00
8b225923f8 Malformed UTF-8 don't terminate string, output 0xFFFD (#307) 2015-08-27 13:44:31 +01:00
59d498f3d0 Added ColorConvertU32ToFloat4() helper and ImColor(ImU32) constructor. 2015-08-26 21:18:08 +01:00
62671ef96e Examples: update readme 2015-08-25 22:14:31 +01:00
8cf7df7ec4 Added GetWindowHeight() for completeness + BeginGroup() comment. 2015-08-25 16:55:14 +01:00
822eaf1751 Examples: DX9, DX11: mapping missing middle mouse button. 2015-08-25 16:54:47 +01:00
08b345efd9 ImDrawList: Add comments on the usage of drawing channels 2015-08-25 16:31:20 +01:00
77b82ecad7 ImDrawList: Fixed issues with channels split/merge. Functional without manually adding a draw cmd. + Removed unnecessary parameter to Channe 2015-08-25 16:24:17 +01:00
ad00d88923 Window clipping rect fixes (for child windows with borders among others) 2015-08-25 15:01:33 +01:00
f0aca186cc Comments 2015-08-25 13:35:25 +01:00
ad3c9f620d Tabs to spaces 2015-08-25 12:40:40 +01:00
466f01b313 Fixed child windows with the ImGuiWindowFlags_NoMove flag not taking direct focus 2015-08-25 12:39:44 +01:00
43d073db1e Metrics: showing some internal state 2015-08-25 12:22:30 +01:00
b76353bbb1 Passing ImGuiWindowFlags_NoMove to BeginChild() allows to inhibit moving root window from this child 2015-08-25 11:54:13 +01:00
063d26a191 Removed obsolete comment 2015-08-24 18:13:31 +01:00
9a0650dbd0 Examples: imgui_impl* functions declared with IMGUI_API to ease copy & pasting into projects using DLL 2015-08-24 14:02:51 +02:00
b1987d697f Trim trailing whitespace (#305) 2015-08-24 13:50:18 +02:00
425c6cb3a3 Remove CaptureInputCharactersFromApp and minor cleanups (#305) 2015-08-24 13:47:27 +02:00
73917115a8 Added flag showing whether the GUI wants text input
Conflicts:
	imgui.cpp
2015-08-24 13:44:43 +02:00
7eca754094 Merge pull request #304 from yinjimmy/fix_ios
Examples: Fixed missing files in iOS example.
2015-08-23 11:05:39 +02:00
01a17aa78e fix ios compile error 2015-08-23 08:03:21 +08:00
e885b08914 Web: Fixed screenshot (Argh web editor is broken) 2015-08-22 11:54:47 +02:00
0e898fb480 Web: Fixed screenshot 2015-08-22 11:54:13 +02:00
5f4cbed7ce Web: Fixed screenshot 2015-08-22 11:53:45 +02:00
b28858b33b InputText: intentionally ignore character input when ctrl/alt are held (not sure if correct) (#279) 2015-08-21 00:24:47 +02:00
23ce837dc7 Revert "Examples: GLFW: using glfwSetCharModsCallback() to ensure characters aren't passed when using mods (fix #279)"
This reverts commit d80869189a.
2015-08-21 00:16:07 +02:00
d80869189a Examples: GLFW: using glfwSetCharModsCallback() to ensure characters aren't passed when using mods (fix #279) 2015-08-20 22:32:07 +01:00
06c7453ee2 Merge pull request #302 from andresv/mac-sdl2-example-build-instructions
Examples: SDL: Add Mac OS X build instructions for sdl_opengl_example
2015-08-20 22:21:01 +01:00
bbced3f0f0 Build fix 2015-08-18 19:31:44 -06:00
4ac4d1ac37 ImHash: defaults seed to zero + comment. 2015-08-18 19:17:09 -06:00
ccbc72e98b add mac os x build instructions for sdl_opengl_example 2015-08-18 10:16:16 +03:00
97be3428f1 Added GetMousePosOnOpeningCurrentPopup(). 2015-08-15 15:10:07 -06:00
215747635d Examples: DirectX11: resizing buffers dynamically (#299) 2015-08-13 23:13:20 -06:00
c016f6c171 Examples: DirectX9: tweaks. 2015-08-13 23:07:53 -06:00
698c7cae85 Examples: DirectX9: resizing vertex and index buffers dynamically (#299) 2015-08-13 23:06:11 -06:00
ede5956b28 Metrics window: shows indices along with triangles count (#299) 2015-08-13 22:33:33 -06:00
0a6d6da732 Demo: Log: removed unnecessary style change, 2015-08-13 22:11:32 -06:00
67b2b5f3a9 Demo: Log: removed broken clipping, tweaks. 2015-08-13 22:04:31 -06:00
07de0448f9 ImGuiTextFilter: default parameter width=0.0f for no override, allow override with negative values 2015-08-13 21:51:34 -06:00
307ed78006 ImGuITextBuffer: shallow tweak. 2015-08-13 21:48:08 -06:00
b770f3ffaf Demo: Add filtering to log with better-than-none storage of line offsets. 2015-08-13 21:47:50 -06:00
42567a9516 ImGuiTextFilter::PassFilter() supports string range. Added [] helper to ImGuiTextBuffer. 2015-08-13 21:25:32 -06:00
72d3fca52f Demo: added simple Log demo 2015-08-13 20:59:37 -06:00
d36a634ac8 Demo: Fixed incorrectly formed string passed to Combo (#298) 2015-08-13 11:55:48 -06:00
c98318a914 Renaming some argument to clarify the local vs screen coordinates 2015-08-12 22:46:39 -06:00
f421f2f47e IsWindowHovered() takes account of window hoverability (may be disabled because of a popup) + comment
Was a dupe of IsMouseHoveringWindow() anyway, they are now "clearly"
different.
2015-08-12 22:30:07 -06:00
bcb83ed24e Fixed minor typo in example 2015-08-12 12:29:51 -06:00
4630815fb0 Links 2015-08-11 14:45:42 -06:00
f1f4d68f7f Prevent imgui_internal.h from being included without imgui.h (piles of errors) 2015-08-10 10:26:39 -06:00
0c9fcdbe71 Allow to override ImDrawIdx type (#292) 2015-08-09 11:11:39 -06:00
915b46f1c1 Added assert on index overflow (#292) 2015-08-09 11:05:38 -06:00
48ed0a10d7 Minor code compaction (following #296) 2015-08-09 10:54:28 -06:00
9a97ef673e Merge pull request #296 from tpoechtrager/master
Fixes for compiling Windows target with non-MSVC compiler.
2015-08-09 10:49:06 -06:00
6a90ac2094 Tentative GCC/Clang warning fixes with unused functions (cf #296) 2015-08-09 10:45:58 -06:00
3604aecf8f Minor Windows adjustments 2015-08-09 17:24:10 +02:00
23e7bdebcf Warnings for clang (#295) 2015-08-08 12:30:56 -06:00
32f15b9c9a Merge branch 'tpoechtrager-master' 2015-08-08 12:26:44 -06:00
aa3c26fd30 IM_PRINTFARGS takes one argument. Moved pragma outside of .h (#295) 2015-08-08 12:26:22 -06:00
b637850260 Merge branch 'master' of https://github.com/tpoechtrager/imgui into tpoechtrager-master 2015-08-08 12:18:59 -06:00
14822609bd Version number 1.45 WIP 2015-08-08 12:18:37 -06:00
947cf3434f Added printf attribute to printf like text formatting functions 2015-08-08 19:29:11 +02:00
a99ba42a39 Version number 1.44 2015-08-08 07:57:29 -06:00
20cc65788d Build fix for Orbis / PS4 2015-08-07 21:52:57 -06:00
27961401c6 Cleanup (#219) 2015-08-06 08:37:51 -06:00
88a00f77e9 Cleanup - using ImRect more consistently for ImGui-side cliprect data 2015-08-06 08:23:05 -06:00
f1fb62fa6d Cleanup - shuffle functions around (#219) 2015-08-06 08:11:33 -06:00
b6313577bb Merge pull request #291 from twoscomplement/surplus_inlines
Remove inline qualifiers inside .cpp
2015-08-06 07:33:12 -06:00
0911597550 Remove inline qualifiers inside .cpp
Use of inline in the .cpp file causes link errors with gcc.
2015-08-07 15:41:22 -07:00
80fc576d07 Update README.md 2015-08-05 22:17:10 -06:00
96a7873622 Update documentation 2015-08-05 22:00:27 -06:00
470200ee5c Update documentation 2015-08-05 21:59:07 -06:00
85dab1a680 Fixed documentation 2015-08-05 19:19:12 -06:00
15cfa63e97 Comments 2015-08-05 19:09:13 -06:00
692a38c0fc Merge branch 'master' into 2015-07-cleanup 2015-08-05 17:41:43 -06:00
f2b652a39e Comments 2015-08-05 17:38:17 -06:00
e7f1e28b6b Merge branch 'master' into 2015-07-cleanup 2015-08-05 17:27:47 -06:00
4b4f6d78ee InputFloat() fixed 0 decimal_precision 2015-08-05 17:26:04 -06:00
a54995eace RoundScalar() fallback use powf(10.f, -x) instead of 1.0f/powf(10.0f,x) 2015-08-05 17:11:20 -06:00
9b19f8c19d Merge branch 'master' into 2015-07-cleanup
Conflicts:
	imgui.cpp
2015-08-05 16:57:31 -06:00
12d941a42a Merge branch 'master' of https://github.com/ocornut/imgui 2015-08-05 16:51:17 -06:00
f6e21b7ab7 InputInt() also hexadecimal input (awkwardly via ImGuiInputTextFlags_CharsHexadecimal but we will allow fmt string in InputInt* later)
+ Fix for large ints constant assignment
2015-08-05 16:47:46 -06:00
cc8ff4c8d1 RoundScalar() use a lookup table to avoid calling powf(10.0f, x); 2015-08-05 16:17:11 -06:00
f0f2afa87d InputInt() doesn't cast to float, fix handling lost of precision with large integer. Added primitives to support more data types. 2015-08-05 16:08:53 -06:00
a793ad682d Merge branch 'master' into 2015-07-cleanup
Conflicts:
	imgui.cpp
2015-08-05 15:29:38 -06:00
ebd25cf1a3 Minor comments 2015-08-05 15:13:13 -06:00
7fea3eacfe Minor comments 2015-08-05 12:50:13 -06:00
e20b90154c Comments 2015-08-05 11:04:13 -06:00
3ee2fac892 Slider: fixed using FramePadding between frame and grab visual. Scaling that spacing would look odd. 2015-08-05 11:00:00 -06:00
e42bec5ba2 Fixed scaling of checkbox and radio button for the filling of "active" visual 2015-08-05 10:50:20 -06:00
155873a6b0 Added GetContentRegionAvail() helper 2015-08-05 10:43:12 -06:00
1b0a8f9ac3 Comments 2015-08-05 10:00:05 -06:00
60b46cc712 Comment (#219) 2015-08-05 09:34:07 -06:00
8be4d41540 Merge remote-tracking branch 'origin' into 2015-07-cleanup 2015-08-05 09:32:29 -06:00
1befd21b37 Moved ShowUserGuide() after ShowTestWindow() (#219) 2015-08-05 09:31:03 -06:00
3658314638 imgui_demo.cpp doesn't redefine functions from imgui_internal.h so all files can be unity-built (#219) 2015-08-05 09:28:19 -06:00
a526b423e8 Merge pull request #290 from cmaughan/master
Examples: DirectX11: Clear font texture view pointer to ensure Release() doesn't get called twice
2015-08-04 07:48:31 -06:00
d667de9490 Clear font texture view to ensure Release() doesn't get called twice 2015-08-04 14:22:05 +01:00
815d1d9be4 Merge remote-tracking branch 'origin' into 2015-07-cleanup
Conflicts:
	imgui.cpp
2015-08-03 08:12:57 -06:00
3aca446817 Added ImFontAtlas::AddFontFromMemoryCompressedBase85TTF() 2015-08-03 08:10:10 -06:00
da3baebd43 Fixed lower-right resize grip hit box not scaling along with its rendered size (#287) 2015-08-02 09:15:36 -06:00
e099798c97 Merge remote-tracking branch 'origin' into 2015-07-cleanup 2015-08-01 22:12:51 -06:00
3ccbdc8423 Unnecessary .gitignore in root folder 2015-08-01 22:12:18 -06:00
4b29cc9e10 Exposed relevant functions in imgui_internal.h (#219) 2015-08-01 21:57:24 -06:00
e47bf041bf Clang warning fixes 2015-08-01 21:37:32 -06:00
11d91a27a4 Carriage return (#289) 2015-08-01 17:18:01 -06:00
040e427dad Merge pull request #289 from twoscomplement/sdl_error_out
Examples: Show SDL error message on init failure.
2015-08-01 17:07:05 -06:00
f158617551 Show SDL error message on init failure 2015-08-02 01:35:43 -07:00
1e76c63bb6 Fixed comment 2015-08-01 08:07:16 -06:00
2d8c134747 Merge remote-tracking branch 'origin' into 2015-07-cleanup
Conflicts:
	imgui.cpp
2015-08-01 07:26:09 -06:00
26a992c6f6 Updated to stb_truetype 1.07 (back to vanilla version as our minor changes are now in master & fix #280) 2015-08-01 07:22:52 -06:00
6c63d80aa4 Tidying up InputTextApplyArithmeticOp() 2015-07-30 23:59:51 -06:00
f63beeae86 Internal version of LogText() -> LogRenderedText() + shallow tidying up 2015-07-30 23:48:59 -06:00
faa609a43c Internal cleanup ParseFormatPrecision() doesn't take a reference 2015-07-30 23:14:29 -06:00
f8646338c3 Merge remote-tracking branch 'origin' into 2015-07-cleanup 2015-07-30 23:00:11 -06:00
7650d4cc67 Internal SliderFloatAsInputText() -> InputFloatReplaceWidget() 2015-07-30 22:59:30 -06:00
abf823c6f6 Tidying up 2015-07-30 22:49:10 -06:00
58ee08f214 Todo list notes 2015-07-30 22:18:07 -06:00
040f3950a3 Merge remote-tracking branch 'origin' into 2015-07-cleanup
Conflicts:
	imgui.cpp
2015-07-30 21:54:07 -06:00
e6b29b70b4 Make internal SliderFloatAsInputText() take a size to match the calling widget 2015-07-30 21:51:55 -06:00
a7e5945206 Merge 2015-07-30 21:37:59 -06:00
c639f65eb7 Merge remote-tracking branch 'origin' into 2015-07-cleanup
Conflicts:
	imgui.cpp
2015-07-30 21:37:47 -06:00
02fbb36918 ImDrawList: Add missing support for anti-aliased thick-lines (#133, also ref #288) 2015-07-30 21:11:07 -06:00
a79ee94fc4 Removed unnecessary assignment + added comment 2015-07-30 20:59:41 -06:00
709c4c3168 Merge remote-tracking branch 'origin' into 2015-07-cleanup
Conflicts:
	imgui.cpp
2015-07-30 20:42:12 -06:00
527208ad7c Default font encoded as base85 saves ~100 lines / 26 KB of source code (from @mmalex) 2015-07-30 19:36:55 -06:00
fddc871870 Columns: never assume horizontal space for scrollbar if NoScrollbar flag is set. 2015-07-30 12:32:20 -06:00
fc9ee2bc9b Merge pull request #286 from GHF/cleanup
Remove non-text character at start of imgui.cpp
2015-07-30 12:14:01 -06:00
8d45c89352 Remove non-text character at start of imgui.cpp 2015-07-26 19:18:04 -07:00
4468ec001e Fixed warning in console example (we're iterating chars) 2015-07-22 06:38:19 -06:00
fb83323b1d Tidying up 2015-07-21 20:13:12 -06:00
62c888177a Tweaks 2015-07-21 20:06:34 -06:00
e1ac5a3198 Honor IMGUI_DISABLE_TEST_WINDOWS as described (#219) 2015-07-21 19:57:32 -06:00
68962ae683 README update 2015-07-21 19:53:06 -06:00
7552f48d7b ImLoadFileToMemory() default parameters 2015-07-21 17:46:49 -06:00
94f085aa3e Update comments (#219) 2015-07-21 17:19:11 -06:00
5a29eef1fa Fixed further warnings with GCC/Clang (#219) 2015-07-21 17:13:56 -06:00
e32f0931e8 Missing includes for imgui_draw.cpp (#219) 2015-07-21 17:08:20 -06:00
52a74701f5 Updated projects to reference new files (#219)
Didn't update iOS example (#247)
2015-07-21 17:04:03 -06:00
dace68b6fd Big cleanup, split imgui.cpp into imgui_demo.cpp,imgui_draw.cpp imgui_internal.h (#219) 2015-07-21 17:00:28 -06:00
60dce8bc22 Fix to get all code ShowTestWindow() copiable outside. Moved ShowMetricsWindows() above. (#219) 2015-07-19 11:45:03 -06:00
0eb196d544 Examples: OpenGL3: simplified code using glBufferData for vertices as well (#277, #278) 2015-07-19 10:52:51 -06:00
dc1cb9e625 Tweak 2015-07-19 10:49:56 -06:00
d184730dd2 Merge branch 'trevex-master' 2015-07-19 10:45:59 -06:00
bc9bae6d01 To support drivers with strict core profiles, a buffer is used for the indices as well (fixes ocornut/imgui#277). 2015-07-19 17:56:14 +02:00
83ebbebadd Fixed inconsistent declaration of ImVec2 privates operators 2015-07-18 22:37:08 -06:00
5a4b521855 Added ImDrawList::AddText() shorthand helper 2015-07-18 21:50:23 -06:00
74908a9513 Fixed angles in ImDrawList::PathArcTo(), PathArcToFast() being off by an extra PI for no reason 2015-07-18 18:45:37 -06:00
479211808f ImDrawList::AddPolyLine() tidying up in AA path 2015-07-18 17:31:40 -06:00
82727d7119 Version number 1.44 WIP 2015-07-18 14:07:22 -06:00
cdbf71ac12 Added ImGuiWindowFlags_NoInputs for input-passthru window
Would be more useful with finer control over display layer
2015-07-17 16:36:04 -06:00
0ab620c2b9 Combo() clamp popup to lower edge of visible area 2015-07-17 16:14:04 -06:00
20db726a9a Version number 1.44 WIP 2015-07-17 16:03:13 -06:00
4015414978 InputtextMultiline(): honor negative size consistently with other widgets 2015-07-17 16:01:21 -06:00
3b53a6513a Button() honor negative size consistently with other widgets that do so 2015-07-17 15:58:23 -06:00
eca26ae91d Build fix for MinGW (#276) 2015-07-17 13:38:55 -06:00
99c5f5735c Tweak button sizes 2015-07-17 07:08:51 -06:00
199 changed files with 47674 additions and 20076 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
imgui.ini

View File

@ -1,17 +1,34 @@
language: cpp
sudo: required
dist: trusty
os:
- linux
- osx
compiler:
- gcc
- clang
before_install:
- if [ $TRAVIS_OS_NAME == linux ]; then sudo add-apt-repository -y ppa:pyglfw/pyglfw && sudo apt-get update -qq && sudo apt-get install -y --no-install-recommends libglfw3-dev libxrandr-dev libxi-dev libxxf86vm-dev; fi
- if [ $TRAVIS_OS_NAME == osx ]; then brew update && brew install glfw3; fi
- if [ $TRAVIS_OS_NAME == linux ]; then
sudo apt-get update -qq;
sudo apt-get install -y --no-install-recommends libxrandr-dev libxi-dev libxxf86vm-dev libsdl2-dev;
wget https://github.com/glfw/glfw/releases/download/3.2.1/glfw-3.2.1.zip;
unzip glfw-3.2.1.zip && cd glfw-3.2.1;
cmake -DBUILD_SHARED_LIBS=true -DGLFW_BUILD_EXAMPLES=false -DGLFW_BUILD_TESTS=false -DGLFW_BUILD_DOCS=false .;
sudo make -j $CPU_NUM install && cd ..;
fi
- if [ $TRAVIS_OS_NAME == osx ]; then
brew update;
brew install glfw3;
brew install sdl2;
fi
script:
- make -C examples/opengl_example
- make -C examples/opengl3_example
- make -C examples/example_glfw_opengl2
- make -C examples/example_glfw_opengl3
- make -C examples/example_sdl_opengl3
- if [ $TRAVIS_OS_NAME == osx ]; then
xcodebuild -project examples/example_apple_metal/example_apple_metal.xcodeproj -target example_apple_metal_macos;
fi

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014-2015 Omar Cornut and ImGui contributors
Copyright (c) 2014-2019 Omar Cornut
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

147
README.md
View File

@ -1,147 +0,0 @@
ImGui
=====
[![Build Status](https://travis-ci.org/ocornut/imgui.svg?branch=master)](https://travis-ci.org/ocornut/imgui)
[![Coverity Status](https://scan.coverity.com/projects/4720/badge.svg)](https://scan.coverity.com/projects/4720)
[![Patreon](https://cloud.githubusercontent.com/assets/8225057/5990484/70413560-a9ab-11e4-8942-1a63607c0b00.png)](http://www.patreon.com/imgui) [![PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5Q73FPZ9C526U)
ImGui is a bloat-free graphical user interface library for C++. It outputs vertex buffers that you can render in your 3D-pipeline enabled application. It is portable, renderer agnostic and carries minimal amount of dependencies. It is based on an "immediate" graphical user interface paradigm which enables you to build user interfaces with ease.
ImGui is designed to enable fast iteration and allow programmers to create "content creation" or "debug" tools (as opposed to UI for the average end-user). It favors simplicity and productivity toward this goal, and thus lacks certain features normally found in more high-level libraries.
ImGui is particularly suited to integration in realtime 3D applications, fullscreen applications, embedded applications, games, or any applications on consoles platforms where operating system features are non-standard. pa
ImGui is self-contained within 6 files that you can easily copy and compile into your application/engine:
- imgui.cpp
- imgui.h
- imconfig.h (empty by default, user-editable)
- stb_rect_pack.h
- stb_textedit.h
- stb_truetype.h
Your code passes mouse/keyboard inputs and settings to ImGui (see example applications for more details). After ImGui is setup, you can use it like in this example:
![screenshot of sample code alongside its output with ImGui](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/code_sample_01.png)
ImGui outputs vertex buffers and simple command-lists that you can render in your application. Because it doesn't know or touch graphics state directly, you can call ImGui commands anywhere in your code (e.g. in the middle of a running algorithm, or in the middle of your own rendering process). Refer to the sample applications in the examples/ folder for instructions on how to integrate ImGui with your existing codebase.
ImGui allows you create elaborate tools as well as very short-lived ones. On the extreme side of short-liveness: using the Edit&Continue feature of compilers you can add a few widgets to tweaks variables while your application is running, and remove the code a minute later! ImGui is not just for tweaking values. You can use it to trace a running algorithm by just emitting text commands. You can use it along with your own reflection data to browse your dataset live. You can use it to expose the internals of a subsystem in your engine, to create a logger, an inspection tool, a profiler, a debugger, etc.
Demo
----
You should be able to build the examples from sources (tested on Windows/Mac/Linux). If you don't, let me know! If you want to have a quick look at the features of ImGui, you can download binaries of the demo app here.
- [imgui-demo-binaries-20150716.zip](http://www.miracleworld.net/imgui/binaries/imgui-demo-binaries-20150716.zip) (Windows binaries, ImGui 1.43 WIP 2015/07/16, 4 executables, 475 KB)
Gallery
-------
![screenshot 1](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v143/test_window_01.png)
![screenshot 2](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v143/test_window_02.png)
![screenshot 3](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v143/test_window_03.png)
![screenshot 5](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v140/test_window_05_menus.png)
![screenshot 4](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v143/skinning_sample_02.png)
![screenshot 6](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v143/examples_04.png)
![screenshot 7](https://cloud.githubusercontent.com/assets/8225057/7903336/96f0fb7c-07d0-11e5-95d6-41c6a1595e5a.png)
ImGui can load TTF fonts. UTF-8 is supported for text display and input. Here using Arial Unicode font to display Japanese. Initialize custom font with:
```
ImGuiIO& io = ImGui::GetIO();
io.Fonts->AddFontFromFileTTF("ArialUni.ttf", 18.0f, io.Fonts->GetGlyphRangesJapanese());
```
For Microsoft IME, pass your HWND to enable IME positioning:
```
io.ImeWindowHandle = my_hwnd;
```
![Japanese screenshot](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/code_sample_01.png)
References
----------
The Immediate Mode GUI paradigm may at first appear unusual to some users. This is mainly because "Retained Mode" GUIs have been so widespread and predominant. The following links can give you a better understanding about how Immediate Mode GUIs works.
- [Johannes 'johno' Norneby's article](http://www.johno.se/book/imgui.html).
- [A presentation by Rickard Gustafsson and Johannes Algelind](http://www.cse.chalmers.se/edu/year/2011/course/TDA361/Advanced%20Computer%20Graphics/IMGUI.pdf).
- [Jari Komppa's tutorial on building an ImGui library](http://iki.fi/sol/imgui/).
- [Casey Muratori's original video that popularized the concept](https://mollyrocket.com/861).
Frequently Asked Question
-------------------------
<b>Where is the documentation?</b>
- The documentation is at the top of imgui.cpp + effectively imgui.h.
- Example code is in the ImGui::ShowTestWindow() function. It covers most features of ImGui so you can read the code and call the function itself to see its output.
- Standalone example applications using OpenGL/DirectX are provided in the examples/ folder.
<b>How do you use ImGui on a platform that may not have a mouse or keyboard?</b>
I recommend using [Synergy](http://synergy-project.org) ([sources](https://github.com/synergy/synergy)). In particular, the _src/micro/uSynergy.c_ file contains a small client that you can use on any platform to connect to your host PC. You can seamlessly use your PC input devices from a video game console or a tablet. ImGui allows to increase the hit box of widgets (via the _TouchPadding_ setting) to accomodate a little for the lack of precision of touch inputs, but it is recommended you use a mouse to allow optimising for screen real-estate.
<b>I integrated ImGui in my engine and the text or lines are blurry..</b>
In your Render function, try translating your projection matrix by (0.5f,0.5f) or (0.375f,0.375f).
<b>Can you create elaborate/serious tools with ImGui?</b>
Yes. I have written data browsers, debuggers, profilers and all sort of non-trivial tools with the library. In my experience the simplicity of the API is very empowering. Your UI runs close to your live data. Make the tools always-on and everybody in the team will be inclined to create new tools (as opposed to more "offline" UI toolkits where only a fraction of your team effectively creates tools).
However note that ImGui is programmer centric and the immediate-mode GUI paradigm might requires a bit of adaptation before you can realize its full potential. Many programmers have unfortunately been taught by their environment to make complicated unproductive things. Strip yourself out of all those heavy layers and start making lots of useful tools!
<b>Is ImGui fast?</b>
Down to the fundation of its visual design, ImGui is engineered to be fairly performant both in term of CPU and GPU usage. Running elaborate code and creating elaborate UI will of course have a cost but ImGui aims to minimize it.
Mileage may vary but the following screenshot can give you a rough idea of the cost of running and rendering UI code (In the case of a trivial demo application like this one, your driver/os setup are likely to be the bottleneck. Testing performance as part of a real application is recommended).
![performance screenshot](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v138/performance_01.png)
This is showing framerate for the full application loop on my 2011 iMac running Windows 7, OpenGL, AMD Radeon HD 6700M with an optimized executable. In contrast, librairies featuring higher-quality rendering and layouting techniques may have a higher resources footprint.
If you intend to display large lists of items (say, 1000+) it can be beneficial for your code to perform clipping manually - using helpers such as ImGuiListClipper - in order to avoid submitting them to ImGui in the first place. Even though ImGui will discard your clipped items it still needs to calculate their size and that overhead will add up if you have thousands of items. If you can handle clipping and height positionning yourself then browsing a list with millions of items isn't a problem.
<b>Can you reskin the look of ImGui?</b>
You can alter the look of the interface to some degree: changing colors, sizes, padding, rounding, fonts. However, as ImGui is designed and optimised to create debug tools, the amount of skinning you can apply is limited. There is only so much you can stray away from the default look and feel of the interface.
<b>Why using C++ (as opposed to C)?</b>
ImGui takes advantage of a few C++ features for convenience but nothing anywhere Boost-insanity/quagmire. In particular, function overloading and default parameters are used to make the API easier to use and code more terse. Doing so I believe the API is sitting on a sweet spot and giving up on those features would make the API more cumbersome. Other features such as namespace, constructors and templates (in the case of the ImVector<> class) are also relied on as a convenience but could be removed.
Shall someone really need to use ImGui from another language, there is an unofficial but reasonably maintained [c-api for ImGui](https://github.com/Extrawurst/cimgui) by Stephan Dilly. I would suggest using your target language functionality to try replicating the function overloading and default parameters used in C++ else the API may be harder to use. It was really designed with C++ in mind and may not make the same amount of sense with another language.
Donate
------
<b>Can I donate to support the development of ImGui?</b>
[![Patreon](https://cloud.githubusercontent.com/assets/8225057/5990484/70413560-a9ab-11e4-8942-1a63607c0b00.png)](http://www.patreon.com/imgui) [![PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5Q73FPZ9C526U)
I'm currently an independant developer and your contributions are very meaningful to me. I have setup an [**ImGui Patreon page**](http://www.patreon.com/imgui) if you want to donate and enable me to spend more time improving the library. If your company uses ImGui please consider making a contribution. One-off donations are also greatly appreciated (PayPal link above). I am also available for hire to work on or with ImGui. Thanks!
Credits
-------
Developed by [Omar Cornut](http://www.miracleworld.net) and every direct or indirect contributors to the GitHub. The early version of this library was developed with the support of [Media Molecule](http://www.mediamolecule.com) and first used internally on the game [Tearaway](http://tearaway.mediamolecule.com).
Embeds [ProggyClean.ttf](http://upperbounds.net) font by Tristan Grimmer (MIT license).
Embeds [stb_textedit.h, stb_truetype.h, stb_rectpack.h](https://github.com/nothings/stb/) by Sean Barrett (public domain).
Inspiration, feedback, and testing for early versions: Casey Muratori, Atman Binstock, Mikko Mononen, Emmanuel Briney, Stefan Kamoda, Anton Mikhailov, Matt Willis. And everybody posting feedback, questions and patches on the GitHub.
ImGui development is financially supported on [**Patreon**](http://www.patreon.com/imgui).
Special supporters:
- Jetha Chan, Wild Sheep Studio, Pastagames, Mārtiņš Možeiko, Daniel Collin, Stefano Cristiano.
And:
- Michel Courtine, César Leblic, Dale Kim, Alex Evans, Rui Figueira, Paul Patrashcu, Jerome Lanquetot, Ctrl Alt Ninja, Paul Fleming, Neil Henning, Stephan Dilly, Neil Blakey-Milner, Aleksei.
And other supporters; thanks!
License
-------
ImGui is licensed under the MIT License, see LICENSE for more information.

1147
docs/CHANGELOG.txt Normal file

File diff suppressed because it is too large Load Diff

330
docs/README.md Normal file
View File

@ -0,0 +1,330 @@
dear imgui
=====
[![Build Status](https://travis-ci.org/ocornut/imgui.svg?branch=master)](https://travis-ci.org/ocornut/imgui)
[![Coverity Status](https://scan.coverity.com/projects/4720/badge.svg)](https://scan.coverity.com/projects/4720)
_(This library is free as in freedom, but needs your support to sustain its development. In addition to maintenance and stability there are many desirable features yet to be added. If your company is using dear imgui, please consider reaching out for invoiced financial support. If you are an individual using dear imgui, please consider donating via Patreon or PayPal.)_
Individuals/hobbyists: support continued maintenance and development via the monthly Patreon:
<br>&nbsp;&nbsp;[![Patreon](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/patreon_01.png)](http://www.patreon.com/imgui)
Individuals/hobbyists: support continued maintenance and development via PayPal:
<br>&nbsp;&nbsp;[![PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5Q73FPZ9C526U)
Businesses: support continued maintenance and development via support contracts or sponsoring:
<br>&nbsp;&nbsp;_E-mail: omarcornut at gmail dot com_
Dear ImGui is a bloat-free graphical user interface library for C++. It outputs optimized vertex buffers that you can render anytime in your 3D-pipeline enabled application. It is fast, portable, renderer agnostic and self-contained (no external dependencies).
Dear ImGui is designed to enable fast iterations and to empower programmers to create content creation tools and visualization / debug tools (as opposed to UI for the average end-user). It favors simplicity and productivity toward this goal, and lacks certain features normally found in more high-level libraries.
Dear ImGui is particularly suited to integration in games engine (for tooling), real-time 3D applications, fullscreen applications, embedded applications, or any applications on consoles platforms where operating system features are non-standard.
See [Software using dear imgui](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui), [Quotes](https://github.com/ocornut/imgui/wiki/Quotes) and [Gallery](https://github.com/ocornut/imgui/issues/2265) pages to get an idea of its use cases.
Dear ImGui is self-contained within a few files that you can easily copy and compile into your application/engine:
- imgui.cpp
- imgui.h
- imgui_demo.cpp
- imgui_draw.cpp
- imgui_widgets.cpp
- imgui_internal.h
- imconfig.h (empty by default, user-editable)
- imstb_rectpack.h
- imstb_textedit.h
- imstb_truetype.h
No specific build process is required. You can add the .cpp files to your project or #include them from an existing file.
### Usage
Your code passes mouse/keyboard/gamepad inputs and settings to Dear ImGui (see example applications for more details). After Dear ImGui is setup, you can use it from \_anywhere\_ in your program loop:
Code:
```cpp
ImGui::Text("Hello, world %d", 123);
if (ImGui::Button("Save"))
{
// do stuff
}
ImGui::InputText("string", buf, IM_ARRAYSIZE(buf));
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
```
Result:
<br>![sample code output](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/code_sample_02.png)
<br>_(settings: Dark style (left), Light style (right) / Font: Roboto-Medium, 16px / Rounding: 5)_
Code:
```cpp
// Create a window called "My First Tool", with a menu bar.
ImGui::Begin("My First Tool", &my_tool_active, ImGuiWindowFlags_MenuBar);
if (ImGui::BeginMenuBar())
{
if (ImGui::BeginMenu("File"))
{
if (ImGui::MenuItem("Open..", "Ctrl+O")) { /* Do stuff */ }
if (ImGui::MenuItem("Save", "Ctrl+S")) { /* Do stuff */ }
if (ImGui::MenuItem("Close", "Ctrl+W")) { my_tool_active = false; }
ImGui::EndMenu();
}
ImGui::EndMenuBar();
}
// Edit a color (stored as ~4 floats)
ImGui::ColorEdit4("Color", my_color);
// Plot some values
const float my_values[] = { 0.2f, 0.1f, 1.0f, 0.5f, 0.9f, 2.2f };
ImGui::PlotLines("Frame Times", my_values, IM_ARRAYSIZE(my_values));
// Display contents in a scrolling region
ImGui::TextColored(ImVec4(1,1,0,1), "Important Stuff");
ImGui::BeginChild("Scrolling");
for (int n = 0; n < 50; n++)
ImGui::Text("%04d: Some text", n);
ImGui::EndChild();
ImGui::End();
```
Result:
<br>![sample code output](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/code_sample_03_color.gif)
### How it works
Check out the References section if you want to understand the core principles behind the IMGUI paradigm. An IMGUI tries to minimize superfluous state duplication, state synchronization and state retention from the user's point of view. It is less error prone (less code and less bugs) than traditional retained-mode interfaces, and lends itself to create dynamic user interfaces.
Dear ImGui outputs vertex buffers and command lists that you can easily render in your application. The number of draw calls and state changes required to render them is fairly small. Because Dear ImGui doesn't know or touch graphics state directly, you can call its functions anywhere in your code (e.g. in the middle of a running algorithm, or in the middle of your own rendering process). Refer to the sample applications in the examples/ folder for instructions on how to integrate dear imgui with your existing codebase.
_A common misunderstanding is to mistake immediate mode gui for immediate mode rendering, which usually implies hammering your driver/GPU with a bunch of inefficient draw calls and state changes as the gui functions are called. This is NOT what Dear ImGui does. Dear ImGui outputs vertex buffers and a small list of draw calls batches. It never touches your GPU directly. The draw call batches are decently optimal and you can render them later, in your app or even remotely._
Dear ImGui allows you create elaborate tools as well as very short-lived ones. On the extreme side of short-liveness: using the Edit&Continue (hot code reload) feature of modern compilers you can add a few widgets to tweaks variables while your application is running, and remove the code a minute later! Dear ImGui is not just for tweaking values. You can use it to trace a running algorithm by just emitting text commands. You can use it along with your own reflection data to browse your dataset live. You can use it to expose the internals of a subsystem in your engine, to create a logger, an inspection tool, a profiler, a debugger, an entire game making editor/framework, etc.
Demo Binaries
-------------
You should be able to build the examples from sources (tested on Windows/Mac/Linux). If you don't, let me know! If you want to have a quick look at some Dear ImGui features, you can download Windows binaries of the demo app here:
- [imgui-demo-binaries-20181008.zip](http://www.miracleworld.net/imgui/binaries/imgui-demo-binaries-20181008.zip) (Windows binaries, Dear ImGui 1.66 WIP built 2018/10/08, master branch, 5 executables)
The demo applications are unfortunately not yet DPI aware so expect some blurriness on a 4K screen. For DPI awareness in your application, you can load/reload your font at different scale, and scale your Style with `style.ScaleAllSizes()`.
Bindings
--------
Integrating Dear ImGui within your custom engine is a matter of 1) wiring mouse/keyboard/gamepad inputs 2) uploading one texture to your GPU/render engine 3) providing a render function that can bind textures and render textured triangles. The [examples/](https://github.com/ocornut/imgui/tree/master/examples) folder is populated with applications doing just that. If you are an experienced programmer at ease with those concepts, it should take you about an hour to integrate Dear ImGui in your custom engine. Make sure to spend time reading the FAQ, the comments and other documentation!
_NB: those third-party bindings may be more or less maintained, more or less close to the original API (as people who create language bindings sometimes haven't used the C++ API themselves.. for the good reason that they aren't C++ users). Dear ImGui was designed with C++ in mind and some of the subtleties may be lost in translation with other languages. If your language supports it, I would suggest replicating the function overloading and default parameters used in the original, else the API may be harder to use. In doubt, please check the original C++ version first!_
Languages: (third-party bindings)
- C: [cimgui](https://github.com/cimgui/cimgui) (2018: now auto-generated! you can use its json output to generate bindings for other languages)
- C#/.Net: [ImGui.NET](https://github.com/mellinoe/ImGui.NET)
- ChaiScript: [imgui-chaiscript](https://github.com/JuJuBoSc/imgui-chaiscript)
- D: [DerelictImgui](https://github.com/Extrawurst/DerelictImgui)
- Go: [imgui-go](https://github.com/inkyblackness/imgui-go) or [go-imgui](https://github.com/Armored-Dragon/go-imgui)
- Haxe/hxcpp: [linc_imgui](https://github.com/Aidan63/linc_imgui)
- Java: [jimgui](https://github.com/ice1000/jimgui)
- JavaScript: [imgui-js](https://github.com/flyover/imgui-js)
- Lua: [LuaJIT-ImGui](https://github.com/sonoro1234/LuaJIT-ImGui), [imgui_lua_bindings](https://github.com/patrickriordan/imgui_lua_bindings) or [lua-ffi-bindings](https://github.com/thenumbernine/lua-ffi-bindings)
- Odin: [odin-dear_imgui](https://github.com/ThisDrunkDane/odin-dear_imgui)
- Pascal: [imgui-pas](https://github.com/dpethes/imgui-pas)
- PureBasic: [pb-cimgui](https://github.com/hippyau/pb-cimgui)
- Python [CyImGui](https://github.com/chromy/cyimgui) or [pyimgui](https://github.com/swistakm/pyimgui)
- Ruby: [ruby-imgui](https://github.com/vaiorabbit/ruby-imgui)
- Rust: [imgui-rs](https://github.com/Gekkio/imgui-rs) or [imgui-rust](https://github.com/nsf/imgui-rust)
- Swift [swift-imgui](https://github.com/mnmly/Swift-imgui)
Frameworks:
- Renderers: DirectX 9/10/11/12, Metal, OpenGL2, OpenGL3+/ES2/ES3, Vulkan: [examples/](https://github.com/ocornut/imgui/tree/master/examples)
- Platform: GLFW, SDL, Win32, OSX, Freeglut: [examples/](https://github.com/ocornut/imgui/tree/master/examples)
- Framework: Allegro 5, Marmalade: [examples/](https://github.com/ocornut/imgui/tree/master/examples)
- Unmerged PR: SDL2 + OpenGLES + Emscripten: [#336](https://github.com/ocornut/imgui/pull/336)
- Unmerged PR: Android: [#421](https://github.com/ocornut/imgui/pull/421)
- Cinder: [Cinder-ImGui](https://github.com/simongeilfus/Cinder-ImGui)
- Cocos2d-x: [imguix](https://github.com/c0i/imguix), [#551](https://github.com/ocornut/imgui/issues/551)
- Flexium: [FlexGUI](https://github.com/DXsmiley/FlexGUI)
- GML/GameMakerStudio2: [ImGuiGML](https://marketplace.yoyogames.com/assets/6221/imguigml)
- Irrlicht: [IrrIMGUI](https://github.com/ZahlGraf/IrrIMGUI)
- Ogre: [ogreimgui](https://bitbucket.org/LMCrashy/ogreimgui/src)
- OpenFrameworks: [ofxImGui](https://github.com/jvcleave/ofxImGui)
- OpenSceneGraph/OSG: [gist](https://gist.github.com/fulezi/d2442ca7626bf270226014501357042c)
- ORX: [pr #1843](https://github.com/ocornut/imgui/pull/1843)
- LÖVE+Lua: [love-imgui](https://github.com/slages/love-imgui)
- Magnum: [ImGuiIntegration](https://doc.magnum.graphics/magnum/namespaceMagnum_1_1ImGuiIntegration.html) ([example](https://doc.magnum.graphics/magnum/examples-imgui.html))
- NanoRT: [syoyo/imgui](https://github.com/syoyo/imgui/tree/nanort)
- Qt3d: [imgui-qt3d](https://github.com/alpqr/imgui-qt3d), QOpenGLWindow [qtimgui](https://github.com/ocornut/imgui/issues/1910)
- SFML: [imgui-sfml](https://github.com/EliasD/imgui-sfml)
- Software renderer: [imgui_software_renderer](https://github.com/emilk/imgui_software_renderer)
- Unreal Engine 4: [segross/UnrealImGui](https://github.com/segross/UnrealImGui) or [sronsse/UnrealEngine_ImGui](https://github.com/sronsse/UnrealEngine_ImGui)
For other bindings: see [Bindings](https://github.com/ocornut/imgui/wiki/Bindings/). Also see [Wiki](https://github.com/ocornut/imgui/wiki) for more links and ideas.
Roadmap
-------
Some of the goals for 2019 are:
- Finish work on docking, tabs. (see [#2109](https://github.com/ocornut/imgui/issues/2109), public branch looking for feedback)
- Finish work on multiple viewports / multiple OS windows. (see [#1542](https://github.com/ocornut/imgui/issues/1542), public branch looking for feedback)
- Finish work on gamepad/keyboard controls. (see [#787](https://github.com/ocornut/imgui/issues/787))
- Add an automation and testing system, both to test the library and end-user apps. (see [#435](https://github.com/ocornut/imgui/issues/435))
- Make Columns better. (they are currently pretty terrible!)
- Make the examples look better, improve styles, improve font support, make the examples hi-DPI aware.
Gallery
-------
User screenshots:
<br>[Gallery Part 1](https://github.com/ocornut/imgui/issues/123) (Feb 2015 to Feb 2016)
<br>[Gallery Part 2](https://github.com/ocornut/imgui/issues/539) (Feb 2016 to Aug 2016)
<br>[Gallery Part 3](https://github.com/ocornut/imgui/issues/772) (Aug 2016 to Jan 2017)
<br>[Gallery Part 4](https://github.com/ocornut/imgui/issues/973) (Jan 2017 to Aug 2017)
<br>[Gallery Part 5](https://github.com/ocornut/imgui/issues/1269) (Aug 2017 to Feb 2018)
<br>[Gallery Part 6](https://github.com/ocornut/imgui/issues/1607) (Feb 2018 to June 2018)
<br>[Gallery Part 7](https://github.com/ocornut/imgui/issues/1902) (June 2018 to January 2018)
<br>[Gallery Part 8](https://github.com/ocornut/imgui/issues/2265) (January 2018 onward)
<br>Also see the [Mega screenshots](https://github.com/ocornut/imgui/issues/1273) for an idea of the available features.
Custom engine
[![screenshot game](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v149/gallery_TheDragonsTrap-01-thumb.jpg)](https://cloud.githubusercontent.com/assets/8225057/20628927/33e14cac-b329-11e6-80f6-9524e93b048a.png)
Custom engine
[![screenshot tool](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/editor_white_preview.jpg)](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v160/editor_white.png)
Demo window
![screenshot demo](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v167/v167-misc.png)
[Tracy Profiler](https://bitbucket.org/wolfpld/tracy)
![tracy profiler](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v167/tracy_profiler.png)
References
----------
The Immediate Mode GUI paradigm may at first appear unusual to some users. This is mainly because "Retained Mode" GUIs have been so widespread and predominant. The following links can give you a better understanding about how Immediate Mode GUIs works.
- [Johannes 'johno' Norneby's article](http://www.johno.se/book/imgui.html).
- [A presentation by Rickard Gustafsson and Johannes Algelind](http://www.cse.chalmers.se/edu/year/2011/course/TDA361/Advanced%20Computer%20Graphics/IMGUI.pdf).
- [Jari Komppa's tutorial on building an ImGui library](http://iki.fi/sol/imgui/).
- [Casey Muratori's original video that popularized the concept](https://mollyrocket.com/861).
- [Nicolas Guillemot's CppCon'16 flash-talk about Dear ImGui](https://www.youtube.com/watch?v=LSRJ1jZq90k).
- [Thierry Excoffier's Zero Memory Widget](http://perso.univ-lyon1.fr/thierry.excoffier/ZMW/).
See the [Wiki](https://github.com/ocornut/imgui/wiki) for more references and [Bindings](https://github.com/ocornut/imgui/wiki/Bindings) for third-party bindings to different languages and frameworks.
Support Forums
--------------
If you have issues with: compiling, linking, adding fonts, running or displaying Dear ImGui, or wiring inputs: please post on the Discourse forums: https://discourse.dearimgui.org.
For any other questions, bug reports, requests, feedback, you may post on https://github.com/ocornut/imgui/issues. Please read and fill the New Issue template carefully.
Frequently Asked Question (FAQ)
-------------------------------
**Where is the documentation?**
- The documentation is at the top of imgui.cpp + effectively imgui.h.
- Example code is in imgui_demo.cpp and particularly the ImGui::ShowDemoWindow() function. It covers most features of ImGui so you can read the code and call the function itself to see its output.
- Standalone example applications using e.g. OpenGL/DirectX are provided in the examples/ folder.
- We obviously needs better documentation! Consider contributing or becoming a [Patron](http://www.patreon.com/imgui) to promote this effort.
- Your programming IDE is your friend, find the type or function declaration to find comments associated to it.
**Which version should I get?**
I occasionally tag [Releases](https://github.com/ocornut/imgui/releases) but it is generally safe and recommended to sync to master/latest. The library is fairly stable and regressions tend to be fixed fast when reported.
You may also peak at the [Multi-Viewport](https://github.com/ocornut/imgui/issues/1542) and [Docking](https://github.com/ocornut/imgui/issues/2109) branches. Even though they are marked beta, several projects are using them and they are kept in sync with master regularly.
**Who uses Dear ImGui?**
See the [Quotes](https://github.com/ocornut/imgui/wiki/Quotes) and [Software using dear imgui](https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui) pages for an (incomplete) list of games/software which are publicly known to use dear imgui. Please add yours if you can!
**Why the odd dual naming, "Dear ImGui" vs "ImGui"?**
The library started its life and is best known as "ImGui" only due to the fact that I didn't give it a proper name when I released it. However, the term IMGUI (immediate-mode graphical user interface) was coined before and is being used in variety of other situations. It seemed confusing and unfair to hog the name. To reduce the ambiguity without affecting existing codebases, I have decided on an alternate, longer name "dear imgui" that people can use to refer to this specific library in ambiguous situations.
**How can I tell whether to dispatch mouse/keyboard to imgui or to my application?**
<br>**How can I display an image? What is ImTextureID, how does it works?**
<br>**How can I have multiple widgets with the same label or with an empty label? A primer on labels and the ID Stack.**
<br>**How can I use my own math types instead of ImVec2/ImVec4?**
<br>**How can I load a different font than the default?**
<br>**How can I easily use icons in my application?**
<br>**How can I load multiple fonts?**
<br>**How can I display and input non-latin characters such as Chinese, Japanese, Korean, Cyrillic?** ([example](https://github.com/ocornut/imgui/wiki/Loading-Font-Example))
<br>**How can I interact with standard C++ types (such as std::string and std::vector)?**
<br>**How can I use the drawing facilities without an Dear ImGui window? (using ImDrawList API)**
<br>**How can I use this without a mouse, without a keyboard or without a screen? (gamepad, input share, remote display)**
<br>**I integrated Dear ImGui in my engine and the text or lines are blurry..**
<br>**I integrated Dear ImGui in my engine and some elements are disappearing when I move windows around..**
<br>**How can I help?**
See the FAQ in imgui.cpp for answers.
**Can you create elaborate/serious tools with Dear ImGui?**
Yes. People have written game editors, data browsers, debuggers, profilers and all sort of non-trivial tools with the library. In my experience the simplicity of the API is very empowering. Your UI runs close to your live data. Make the tools always-on and everybody in the team will be inclined to create new tools (as opposed to more "offline" UI toolkits where only a fraction of your team effectively creates tools). The list of sponsors below is also an indicator that serious game teams have been using the library.
Dear ImGui is very programmer centric and the immediate-mode GUI paradigm might requires you to readjust some habits before you can realize its full potential. Dear ImGui is about making things that are simple, efficient and powerful.
**Can you reskin the look of Dear ImGui?**
You can alter the look of the interface to some degree: changing colors, sizes, padding, rounding, fonts. However, as Dear ImGui is designed and optimized to create debug tools, the amount of skinning you can apply is limited. There is only so much you can stray away from the default look and feel of the interface. Below is a screenshot from [LumixEngine](https://github.com/nem0/LumixEngine) with custom colors + a docking/tabs extension (both of which you can find in the Issues section and will eventually be merged):
![LumixEngine](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/v151/lumix-201710-rearranged.png)
**Why using C++ (as opposed to C)?**
Dear ImGui takes advantage of a few C++ languages features for convenience but nothing anywhere Boost-insanity/quagmire. Dear ImGui does NOT require C++11 so it can be used with most old C++ compilers. Dear ImGui doesn't use any C++ header file. Language-wise, function overloading and default parameters are used to make the API easier to use and code more terse. Doing so I believe the API is sitting on a sweet spot and giving up on those features would make the API more cumbersome. Other features such as namespace, constructors and templates (in the case of the ImVector<> class) are also relied on as a convenience.
There is an auto-generated [c-api for Dear ImGui (cimgui)](https://github.com/cimgui/cimgui) by Sonoro1234 and Stephan Dilly. This is designed for binding other languages. If possible, I would suggest using your target language functionalities to try replicating the function overloading and default parameters used in C++ else the API may be harder to use. Also see [Bindings](https://github.com/ocornut/imgui/wiki/Bindings) for third-party bindings to other languages.
Support dear imgui
------------------
**How can I help?**
- You may participate in the [Discourse forums](https://discourse.dearimgui.org) and the GitHub [issues tracker](https://github.com/ocornut/imgui/issues).
- You may help with development and submit pull requests! Please understand that by submitting a PR you are also submitting a request for the maintainer to review your code and then take over its maintenance forever. PR should be crafted both in the interest in the end-users and also to ease the maintainer into understanding and accepting it.
- See [Help wanted](https://github.com/ocornut/imgui/wiki/Help-Wanted) on the [Wiki](https://github.com/ocornut/imgui/wiki/) for some more ideas.
- Convince your company to financially support this project.
**How can I help financing further development of Dear ImGui?**
Your contributions are keeping this project alive. The library is free as in freedom, but continued maintenance and development are a full-time endeavor. In addition to maintenance and stability there are many desirable features yet to be added. If your company is using dear imgui, please consider reaching out for financial support. If you are an individual using dear imgui, please consider donating via Patreon or PayPal. Thank you!
Individuals/hobbyists: support continued maintenance and development via the monthly Patreon:
<br>&nbsp;&nbsp;[![Patreon](https://raw.githubusercontent.com/wiki/ocornut/imgui/web/patreon_01.png)](http://www.patreon.com/imgui)
Individuals/hobbyists: support continued maintenance and development via PayPal:
<br>&nbsp;&nbsp;[![PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5Q73FPZ9C526U)
Businesses: support continued maintenance and development via support contracts or sponsoring:
<br>&nbsp;&nbsp;_E-mail: omarcornut at gmail dot com_
Ongoing dear imgui development is financially supported by users and private sponsors (past and present):
**Platinum-chocolate sponsors**
- **Blizzard Entertainment**.
**Double-chocolate sponsors**
- Media Molecule, Mobigame, Insomniac Games, Aras Pranckevičius, Lizardcube, Greggman, DotEmu, Nadeo, Supercell, Runner, Aiden Koss, Kylotonn.
**Salty caramel supporters**
- Jetha Chan, Wild Sheep Studio, Pastagames, Mārtiņš Možeiko, Daniel Collin, Recognition Robotics, Chris Genova, ikrima, Glenn Fiedler, Geoffrey Evans, Dakko Dakko, Mercury Labs, Singularity Demo Group, Mischa Alff, Sebastien Ronsse, Lionel Landwerlin, Nikolay Ivanov, Ron Gilbert, Brandon Townsend, Nikhil Deshpande, Cort Stratton, drudru, Harfang 3D, Jeff Roberts, Rainway inc.
**Caramel supporters**
- Michel Courtine, César Leblic, Dale Kim, Alex Evans, Rui Figueira, Paul Patrashcu, Jerome Lanquetot, Ctrl Alt Ninja, Paul Fleming, Neil Henning, Stephan Dilly, Neil Blakey-Milner, Aleksei, NeiloGD, Justin Paver, FiniteSol, Vincent Pancaldi, James Billot, Robin Hübner, furrtek, Eric, Simon Barratt, Game Atelier, Julian Bosch, Simon Lundmark, Vincent Hamm, Farhan Wali, Matt Reyer, Colin Riley, Victor Martins, Josh Simmons, Garrett Hoofman, Sergio Gonzales, Andrew Berridge, Roy Eltham, Game Preservation Society, Kit framework, Josh Faust, Martin Donlon, Quinton, Felix, Andrew Belt, Codecat, Cort Stratton, Claudio Canepa, Doug McNabb, Emmanuel Julien, Guillaume Chereau, Jeffrey Slutter, Jeremiah Deckard, r-lyeh, Roger Clark, Nekith, Joshua Fisher, Malte Hoffmann, Mustafa Karaalioglu, Merlyn Morgan-Graham, Per Vognsen, Fabian Giesen, Jan Staubach, Matt Hargett, John Shearer, Jesse Chounard, kingcoopa, Miloš Tošić, Jonas Bernemann, Johan Andersson, Nathan Hartman, Michael Labbe, Tomasz Golebiowski, Louis Schnellbach, Felipe Alfonso, Jimmy Andrews, Bojan Endrovski, Robin Berg Pettersen, Rachel Crawford, Edsel Malasig, Andrew Johnson, Sean Hunter, Jordan Mellow, Nefarius Software Solutions, Laura Wieme, Robert Nix, Mick Honey, Astrofra, Jonas Lehmann, Steven Kah Hien Wong, Bartosz Bielecki, Oscar Penas, A M, Liam Moynihan, Artometa, Mark Lee, Dimitri Diakopoulos.
And all other supporters; THANK YOU!
(Please contact me if you would like to be added or removed from this list)
Credits
-------
Developed by [Omar Cornut](http://www.miracleworld.net) and every direct or indirect contributors to the GitHub. The early version of this library was developed with the support of [Media Molecule](http://www.mediamolecule.com) and first used internally on the game [Tearaway](http://tearaway.mediamolecule.com).
I first discovered the IMGUI paradigm at [Q-Games](http://www.q-games.com) where Atman had dropped his own simple implementation in the codebase, which I spent quite some time improving and thinking about. It turned out that Atman was exposed to the concept directly by working with Casey. When I moved to Media Molecule I rewrote a new library trying to overcome the flaws and limitations of the first one I've worked with. It became this library and since then I have spent an unreasonable amount of time iterating on it.
Embeds [ProggyClean.ttf](http://upperbounds.net) font by Tristan Grimmer (MIT license).
Embeds [stb_textedit.h, stb_truetype.h, stb_rectpack.h](https://github.com/nothings/stb/) by Sean Barrett (public domain).
Inspiration, feedback, and testing for early versions: Casey Muratori, Atman Binstock, Mikko Mononen, Emmanuel Briney, Stefan Kamoda, Anton Mikhailov, Matt Willis. And everybody posting feedback, questions and patches on the GitHub.
License
-------
Dear ImGui is licensed under the MIT License, see LICENSE for more information.

324
docs/TODO.txt Normal file
View File

@ -0,0 +1,324 @@
dear imgui
ISSUES & TODO LIST
Issue numbers (#) refer to github issues listed at https://github.com/ocornut/imgui/issues/XXXX
The list below consist mostly of ideas noted down before they are requested/discussed by users (at which point they usually exist on the github issue tracker).
It's mostly a bunch of personal notes, probably incomplete. Feel free to query if you have any questions.
- doc/test: add a proper documentation+regression testing system (#435)
- doc/test: checklist app to verify binding/integration of imgui (test inputs, rendering, callback, etc.).
- doc/tips: tips of the day: website? applet in imgui_club?
- window: calling SetNextWindowSize() every frame with <= 0 doesn't do anything, may be useful to allow (particularly when used for a single axis). (#690)
- window: add a way for very transient windows (non-saved, temporary overlay over hundreds of objects) to "clean" up from the global window list. perhaps a lightweight explicit cleanup pass.
- window: auto-fit feedback loop when user relies on any dynamic layout (window width multiplier, column) appears weird to end-user. clarify.
- window: allow resizing of child windows (possibly given min/max for each axis?.)
- window: background options for child windows, border option (disable rounding).
- window: begin with *p_open == false could return false.
- window: get size/pos helpers given names (see discussion in #249)
- window: a collapsed window can be stuck behind the main menu bar?
- window: when window is very small, prioritize resize button over close button.
- window: detect extra End() call that pop the "Debug" window out and assert at End() call site instead of at end of frame.
- window: increase minimum size of a window with menus or fix the menu rendering so that it doesn't look odd.
- window: double-clicking on title bar to minimize isn't consistent, perhaps move to single-click on left-most collapse icon?
- window: expose contents size. (#1045)
- window: using SetWindowPos() inside Begin() and moving the window with the mouse reacts a very ugly glitch. We should just defer the SetWindowPos() call.
- window: GetWindowSize() returns (0,0) when not calculated? (#1045)
- window: investigate better auto-positioning for new windows.
- window/opt: freeze window flag: if not focused/hovered, return false, render with previous ImDrawList. and/or reduce refresh rate.
- window/child: the first draw command of a child window could be moved into the current draw command of the parent window (unless child+tooltip?).
- window/clipping: some form of clipping when DisplaySize (or corresponding viewport) is zero.
- scrolling: while holding down a scrollbar, try to keep the same contents visible (at least while not moving mouse)
- scrolling: allow immediately effective change of scroll after Begin() if we haven't appended items yet.
- scrolling/clipping: separator on the initial position of a window is not visible (cursorpos.y <= clippos.y). (2017-08-20: can't repro)
- scrolling/style: shadows on scrollable areas to denote that there is more contents
- drawdata: make it easy to clone (or swap?) a ImDrawData so user can easily save that data if they use threaded rendering.
- drawlist: end-user probably can't call Clear() directly because we expect a texture to be pushed in the stack.
- drawlist: maintaining bounding box per command would allow to merge draw command when clipping isn't relied on (typical non-scrolling window or non-overflowing column would merge with previous command).
- drawlist: primitives/helpers to manipulate vertices post submission, so e.g. a quad/rect can be resized to fit later submitted content, _without_ using the ChannelSplit api
- drawlist: make it easier to toggle AA per primitive, so we can use e.g. non-AA fill + AA borders more naturally
- drawlist: non-AA strokes have gaps between points (#593, #288), especially RenderCheckmark().
- drawlist: would be good to be able to deep copy of ImDrawData (we have a deep copy of ImDrawList now).
- drawlist: rendering: provide a way for imgui to output to a single/global vertex buffer, re-order indices only at the end of the frame (ref: https://gist.github.com/floooh/10388a0afbe08fce9e617d8aefa7d302)
- drawlist: callback: add an extra void* in ImDrawCallback to allow passing render-local data to the callback (would break API).
- drawlist/opt: store rounded corners in texture to use 1 quad per corner (filled and wireframe) to lower the cost of rounding. (#1962)
- drawlist/opt: AddRect() axis aligned pixel aligned (no-aa) could use 8 triangles instead of 16 and no normal calculation.
- main: considering adding an Init() function? some constructs are awkward in the implementation because of the lack of them.
- main: find a way to preserve relative orders of multiple reappearing windows (so an app toggling between "modes" e.g. fullscreen vs all tools) won't lose relative ordering.
- main: IsItemHovered() make it more consistent for various type of widgets, widgets with multiple components, etc. also effectively IsHovered() region sometimes differs from hot region, e.g tree nodes
- main: IsItemHovered() info stored in a stack? so that 'if TreeNode() { Text; TreePop; } if IsHovered' return the hover state of the TreeNode?
- main: rename the main "Debug" window to avoid ID collision with user who may want to use "Debug" with specific flags.
- widgets: display mode: widget-label, label-widget (aligned on column or using fixed size), label-newline-tab-widget etc. (#395)
- widgets: clean up widgets internal toward exposing everything and stabilizing imgui_internals.h.
- widgets: add visuals for Disabled/ReadOnly mode and expose publicly (#211)
- widgets: add always-allow-overlap mode.
- widgets: start exposing PushItemFlag() and ImGuiItemFlags
- widgets: alignment options in style (e.g. center Selectable, Right-Align within Button, etc.) #1260
- widgets: activate by identifier (trigger button, focus given id)
- widgets: a way to represent "mixed" values, so e.g. all values replaced with **, including check-boxes, colors, etc. with support for multi-components widgets (e.g. SliderFloat3, make only "Y" mixed)
- input text: clean up the mess caused by converting UTF-8 <> wchar. the code is rather inefficient right now and super fragile.
- input text: reorganize event handling, allow CharFilter to modify buffers, allow multiple events? (#541)
- input text: expose CursorPos in char filter event (#816)
- input text: access public fields via a non-callback API e.g. InputTextGetState("xxx") that may return NULL if not active.
- input text: flag to disable live update of the user buffer (also applies to float/int text input) (#701)
- input text: hover tooltip could show unclamped text
- input text: option to Tab after an Enter validation.
- input text: add ImGuiInputTextFlags_EnterToApply? (off #218)
- input text: easier ways to update buffer (from source char*) while owned. preserve some sort of cursor position for multi-line text.
- input text: add discard flag (e.g. ImGuiInputTextFlags_DiscardActiveBuffer) or make it easier to clear active focus for text replacement during edition (#725)
- input text: display bug when clicking a drag/slider after an input text in a different window has all-selected text (order dependent). actually a very old bug but no one appears to have noticed it.
- input text: allow centering/positioning text so that ctrl+clicking Drag or Slider keeps the textual value at the same pixel position.
- input text: what's the easiest way to implement a nice IP/Mac address input editor?
- input text: Global callback system so user can plug in an expression evaluator easily.
- input text multi-line: don't directly call AddText() which does an unnecessary vertex reserve for character count prior to clipping. and/or more line-based clipping to AddText(). and/or reorganize TextUnformatted/RenderText for more efficiency for large text (e.g TextUnformatted could clip and log separately, etc).
- input text multi-line: support for cut/paste without selection (cut/paste the current line)
- input text multi-line: line numbers? status bar? (follow up on #200)
- input text multi-line: behave better when user changes input buffer while editing is active (even though it is illegal behavior). namely, the change of buffer can create a scrollbar glitch (#725)
- input text multi-line: better horizontal scrolling support (#383, #1224)
- input text multi-line: single call to AddText() should be coarse clipped on InputTextEx() end.
- input number: optional range min/max for Input*() functions
- input number: holding [-]/[+] buttons could increase the step speed non-linearly (or user-controlled)
- input number: use mouse wheel to step up/down
- input number: applying arithmetics ops (+,-,*,/) messes up with text edit undo stack.
- layout: helper or a way to express ImGui::SameLine(ImGui::GetCursorStartPos().x + ImGui::CalcItemWidth() + ImGui::GetStyle().ItemInnerSpacing.x); in a simpler manner.
- layout: generalization of the above: a concept equivalent to word processor ruler tab stop ~ mini columns (position in X, no clipping implied) (vaguely relate to #267, #395, also what is used internally for menu items)
- layout: horizontal layout helper (#97)
- layout: horizontal flow until no space left (#404)
- layout: more generic alignment state (left/right/centered) for single items?
- layout: clean up the InputFloatN/SliderFloatN/ColorEdit4 layout code. item width should include frame padding.
- layout: BeginGroup() needs a border option. (~#1496)
- layout: vertical alignment of mixed height items (e.g. buttons) within a same line (#1284)
- columns: sizing policy (e.g. for each column: fixed size, %, fill, distribute default size among fills) (#513, #125)
- columns: add a conditional parameter to SetColumnOffset() (#513, #125)
- columns: headers. re-orderable. (#513, #125)
- columns: optional sorting modifiers (up/down), sort list so sorting can be done multi-criteria. notify user when sort order changed.
- columns: option to alternate background colors on odd/even scanlines.
- columns: allow columns to recurse.
- columns: allow a same columns set to be interrupted by e.g. CollapsingHeader and resume with columns in sync when moving them.
- columns: separator function or parameter that works within the column (currently Separator() bypass all columns) (#125)
- columns: flag to add horizontal separator above/below?
- columns/layout: setup minimum line height (equivalent of automatically calling AlignFirstTextHeightToWidgets)
!- color: the color conversion helpers/types are a mess and needs sorting out.
- color: (api breaking) ImGui::ColorConvertXXX functions should be loose ImColorConvertXX to match imgui_internals.h
- plot: full featured plot/graph api w/ scrolling, zooming etc. all bell & whistle. why not!
- plot: PlotLines() should use the polygon-stroke facilities, less vertices (currently issues with averaging normals)
- plot: make it easier for user to draw extra stuff into the graph (e.g: draw basis, highlight certain points, 2d plots, multiple plots)
- plot: "smooth" automatic scale over time, user give an input 0.0(full user scale) 1.0(full derived from value)
- plot: option/feature: draw the zero line
- plot: option/feature: draw grid, vertical markers
- plot: option/feature: draw unit
- plot: add a helper e.g. Plot(char* label, float value, float time_span=2.0f) that stores values and Plot them for you - probably another function name. and/or automatically allow to plot ANY displayed value (more reliance on stable ID)
- clipper: ability to force display 1 item in the list would be convenient (for patterns where we need to set active id etc.)
- clipper: ability to disable the clipping through a simple flag/bool.
- clipper: ability to run without knowing full count in advance.
- splitter/separator: formalize the splitter idiom into an official api (we want to handle n-way split) (#319)
- dock: merge docking branch (#2109)
- dock: dock out from a collapsing header? would work nicely but need emitting window to keep submitting the code.
- tabs: make EndTabBar fail if users doesn't respect BeginTabBar return value, for consistency/future-proofing.
- tabs: persistent order/focus in BeginTabBar() api (#261, #351)
- ext: stl-ish friendly extension (imgui_stl.h) that has wrapper for std::string, std::vector etc.
- button: provide a button that looks framed. (?)
- image/image button: misalignment on padded/bordered button?
- image/image button: parameters are confusing, image() has tint_col,border_col whereas imagebutton() has bg_col/tint_col. Even thou they are different parameters ordering could be more consistent. can we fix that?
- image button: not taking an explicit id is odd.
- slider: allow using the [-]/[+] buttons used by InputFloat()/InputInt()
- slider: initial absolute click is imprecise. change to relative movement slider (same as scrollbar). (#1946)
- slider: add dragging-based widgets to edit values with mouse (on 2 axises), saving screen real-estate.
- slider: tint background based on value (e.g. v_min -> v_max, or use 0.0f either side of the sign)
- slider: relative dragging? + precision dragging
- slider: step option (#1183)
- slider style: fill % of the bar instead of positioning a drag.
- knob: rotating knob widget (#942)
- drag float: power/logarithmic slider and drags are weird. (#1316)
- drag float: up/down axis
- drag float: power != 0.0f with current value being outside the the range keeps the value stuck.
- drag float: added leeway on edge (e.g. a few invisible steps past the clamp limits)
- combo: use clipper: make it easier to disable clipper with a single flag.
- combo: flag for BeginCombo to not return true when unchanged (#1182)
- combo: a way/helper to customize the combo preview (#1658)
- combo/listbox: keyboard control. need InputText-like non-active focus + key handling. considering keyboard for custom listbox (pr #203)
- listbox: refactor and clean the begin/end api
- listbox: multiple selection.
- listbox: unselect option (#1208)
- listbox: make it easier/more natural to implement range-select (need some sort of info/ref about the last clicked/focused item that user can translate to an index?) (wip stash)
- listbox: user may want to initial scroll to focus on the one selected value?
- listbox: expose hovered item for a basic ListBox
- listbox: keyboard navigation.
- listbox: scrolling should track modified selection.
!- popups/menus: clarify usage of popups id, how MenuItem/Selectable closing parent popups affects the ID, etc. this is quite fishy needs improvement! (#331, #402)
- popups/modal: make modal title bar blink when trying to click outside the modal
- popups: reopening context menu at new position should be the behavior by default? (equivalent to internal OpenPopupEx() with reopen_existing=true) (~#1497)
- popups: if the popup functions took explicit ImGuiID it would allow the user to manage the scope of those ID. (#331)
- popups: clicking outside (to close popup) and holding shouldn't drag window below.
- popups: add variant using global identifier similar to Begin/End (#402)
- popups: border options. richer api like BeginChild() perhaps? (#197)
- tooltip: drag and drop with tooltip near monitor edges lose/changes its last direction instead of locking one. The drag and drop tooltip should always follow without changing direction.
- tooltip: tooltip that doesn't fit in entire screen seems to lose their "last preferred direction" and may teleport when moving mouse.
- tooltip: allow to set the width of a tooltip to allow TextWrapped() etc. while keeping the height automatic.
- tooltip: tooltips with delay timers? or general timer policy? (instantaneous vs timed): IsItemHovered() with timer + implicit aabb-id for items with no ID. (#1485)
- menus: calling BeginMenu() twice with a same name doesn't append as Begin() does for regular windows (#1207)
- menus: menu bars inside modal windows are acting weird.
- status-bar: add a per-window status bar helper similar to what menu-bar does.
- shortcuts: local-style shortcut api, e.g. parse "&Save"
- shortcuts,menus: global-style shortcut api e.g. "Save (CTRL+S)" -> explicit flag for recursing into closed menu
- shortcuts: programmatically access shortcuts "Focus("&Save"))
- menus: menu-bar: main menu-bar could affect clamping of windows position (~ akin to modifying DisplayMin)
- menus: hovering from menu to menu on a menu-bar has 1 frame without any menu, which is a little annoying. ideally either 0 either longer.
- text: selectable text (for copy) as a generic feature (ItemFlags?)
- text: proper alignment options in imgui_internal.h
- text wrapped: figure out better way to use TextWrapped() in an always auto-resize context (tooltip, etc.) (#249)
- text: it's currently impossible to have a window title with "##". perhaps an official workaround would be nice. \ style inhibitor? non-visible ascii code to insert between #?
- text: provided a framed text helper, e.g. https://pastebin.com/1Laxy8bT
- text link/url button: underlined. should api expose an ID or use text contents as ID? which colors enum to use?
- tree node / optimization: avoid formatting when clipped.
- tree node: tree-node/header right-most side doesn't take account of horizontal scrolling.
- tree node: add treenode/treepush int variants? not there because (void*) cast from int warns on some platforms/settings?
- tree node: try to apply scrolling at time of TreePop() if node was just opened and end of node is past scrolling limits?
- tree node / selectable render mismatch which is visible if you use them both next to each other (e.g. cf. property viewer)
- tree node: tweak color scheme to distinguish headers from selected tree node (#581)
- tree node: leaf/non-leaf highlight mismatch.
- settings: write more decent code to allow saving/loading new fields: columns, selected tree nodes?
- settings: api for per-tool simple persistent data (bool,int,float,columns sizes,etc.) in .ini file (#437)
- stb: add defines to disable stb implementations
- style: better default styles. (#707)
- style: add a highlighted text color (for headers, etc.)
- style: border types: out-screen, in-screen, etc. (#447)
- style: add window shadow (fading away from the window. Paint-style calculation of vertices alpha after drawlist would be easier)
- style: a concept of "compact style" that the end-user can easily rely on (e.g. PushStyleCompact()?) that maps to other settings? avoid implementing duplicate helpers such as SmallCheckbox(), etc.
- style: try to make PushStyleVar() more robust to incorrect parameters (to be more friendly to edit & continues situation).
- style: global scale setting.
- style: WindowPadding needs to be EVEN as the 0.5 multiplier used on this value probably have a subtle effect on clip rectangle
- style: have a more global HSV setter (e.g. alter hue on all elements). consider replacing active/hovered by offset in HSV space? (#438, #707, #1223)
- style: gradients fill (#1223) ~ 2 bg colors for each fill? tricky with rounded shapes and using textures for corners.
- style editor: color child window height expressed in multiple of line height.
- log: LogButtons() options for specifying depth and/or hiding depth slider
- log: have more control over the log scope (e.g. stop logging when leaving current tree node scope)
- log: be able to log anything (e.g. right-click on a window/tree-node, shows context menu? log into tty/file/clipboard)
- log: let user copy any window content to clipboard easily (CTRL+C on windows? while moving it? context menu?). code is commented because it fails with multiple Begin/End pairs.
- filters: set a current filter that tree node can automatically query to hide themselves
- filters: handle wild-cards (with implicit leading/trailing *), reg-exprs
- filters: fuzzy matches (may use code at blog.forrestthewoods.com/4cffeed33fdb)
- drag and drop: releasing a drop shows the "..." tooltip for one frame - since e13e598 (#1725)
- drag and drop: have some way to know when a drag begin from BeginDragDropSource() pov.
- drag and drop: allow preview tooltip to be submitted from a different place than the drag source. (#1725)
- drag and drop: allow using with other mouse buttons (where activeid won't be set). (#1637)
- drag and drop: make it easier and provide a demo to have tooltip both are source and target site, with a more detailed one on target site (tooltip ordering problem)
- drag and drop: test with reordering nodes (in a list, or a tree node). (#143)
- drag and drop: test integrating with os drag and drop (make it easy to do a naive WM_DROPFILE integration)
- drag and drop: make payload optional? (#143)
- drag and drop: feedback when hovering a modal (cursor?)
- node/graph editor (#306)
- pie menus patterns (#434)
- markup: simple markup language for color change? (#902)
- font: MergeMode: flags to select overwriting or not (this is now very easy with refactored ImFontAtlasBuildWithStbTruetype)
- font: free the Alpha buffer if user only requested RGBA.
!- font: better CalcTextSizeA() API, at least for simple use cases. current one is horrible (perhaps have simple vs extended versions).
- font: a CalcTextHeight() helper could run faster than CalcTextSize().y
- font: enforce monospace through ImFontConfig (for icons?) + create dual ImFont output from same input, reusing rasterized data but with different glyphs/AdvanceX
- font: finish CustomRectRegister() to allow mapping Unicode codepoint to custom texture data
- font: PushFontSize API (#1018)
- font: MemoryTTF taking ownership confusing/not obvious, maybe default should be opposite?
- font/demo: add tools to show glyphs used by a text blob, display U16 value, list missing glyphs.
- font/demo: demonstrate use of ImFontGlyphRangesBuilder.
- font/atlas: add a missing Glyphs.reserve()
- font/atlas: incremental updates
- font/atlas: dynamic font atlas to avoid baking huge ranges into bitmap and make scaling easier.
- font/atlas: allow user to submit its own primitive to be rectpacked, and allow to map them on a Unicode point.
- font/draw: vertical and/or rotated text renderer (#705) - vertical is easier clipping wise
- font/draw: need to be able to specify wrap start position.
- font/draw: better reserve policy for large horizontal block of text (shouldn't reserve for all clipped lines)
- font: optimization: for monospace font (like the default one) we can trim IndexXAdvance as long as trailing value is == FallbackXAdvance (need to make sure TAB is still correct), would save on cache line.
- font: add support for kerning, probably optional. A) perhaps default to (32..128)^2 matrix ~ 9K entries = 36KB, then hash for non-ascii?. B) or sparse lookup into per-char list?
- font: add a simpler CalcTextSizeA() api? current one ok but not welcome if user needs to call it directly (without going through ImGui::CalcTextSize)
- font: fix AddRemapChar() to work before font has been built.
- font: what would it take to support codepoint higher than 0xFFFF? (smileys, etc.)
- font: (api breaking) remove "TTF" from symbol names. also because it now supports OTF.
- font/opt: Considering storing standalone AdvanceX table as 16-bit fixed point integer?
- font/opt: Glyph currently 40 bytes (2+9*4). Consider storing UV as 16 bits integer? (->32 bytes). X0/Y0/X1/Y1 as 16 fixed-point integers? Or X0/Y0 as float and X1/Y1 as fixed8_8?
- nav: NavScrollToBringItemIntoView() with item bigger than view should focus top-right? Repro: using Nav in "About Window"
- nav: wrap around logic to allow e.g. grid based layout (pressing NavRight on the right-most element would go to the next row, etc.). see internal's NavMoveRequestTryWrapping().
- nav: patterns to make it possible for arrows key to update selection
- nav: restore/find nearest navid when current one disappear (e.g. pressed a button that disappear, or perhaps auto restoring when current button change name)
- nav: SetItemDefaultFocus() level of priority, so widget like Selectable when inside a popup could claim a low-priority default focus on the first selected iem
- nav: allow input system to be be more tolerant of io.DeltaTime=0.0f
- nav: ESC within a menu of a child window seems to exit the child window.
- nav: NavFlattened: ESC on a flattened child should select something.
- nav: NavFlattened: broken: in typical usage scenario, the items of a fully clipped child are currently not considered to enter into a NavFlattened child.
- nav: NavFlattened: init request doesn't select items that are part of a NavFlattened child
- nav: NavFlattened: cannot access menu-bar of a flattened child window with Alt/menu key (not a very common use case..).
- nav: Left within a tree node block as a fallback (ImGuiTreeNodeFlags_NavLeftJumpsBackHere by default?)
- nav/menus: pressing left-right on a vertically clipped menu bar tends to jump to the collapse/close buttons.
- nav/menus: allow pressing Menu to leave a sub-menu.
- nav/menus: a way to access the main menu bar with Alt? (currently needs CTRL+TAB)
- nav/menus: when using the main menu bar, even though we restore focus after, the underlying window loses its title bar highlight during menu manipulation. could we prevent it?
- nav: simulate right-click or context activation? (SHIFT+F10)
- nav: tabs should go through most/all widgets (in submission order?).
- nav: when CTRL-Tab/windowing is active, the HoveredWindow detection doesn't take account of the window display re-ordering.
- nav: esc/enter default behavior for popups, e.g. be able to mark an "ok" or "cancel" button that would get triggered by those keys.
- nav: when activating a button that changes label (without a static ID) or disappear, can we somehow automatically recover into a nearest highlight item?
- nav: there's currently no way to completely clear focus with the keyboard. depending on patterns used by the application to dispatch inputs, it may be desirable.
- nav: configuration flag to disable global shortcuts (currently only CTRL-tab) ?
- focus: preserve ActiveId/focus stack state, e.g. when opening a menu and close it, previously selected InputText() focus gets restored (#622)
- focus: SetKeyboardFocusHere() on with >= 0 offset could be done on same frame (else latch and modulate on beginning of next frame)
- focus: unable to use SetKeyboardFocusHere() on clipped widgets. (#787)
- inputs: we need an explicit flag about whether the imgui window is focused, to be able to distinguish focused key releases vs alt-tabbing all release behaviors.
- inputs: rework IO system to be able to pass actual ordered/timestamped events. use an event queue? (~#335, #71)
- inputs: support track pad style scrolling & slider edit.
- inputs/io: backspace and arrows in the context of a text input could use system repeat rate.
- inputs/io: clarify/standardize/expose repeat rate and repeat delays (#1808)
- misc: idle: expose "woken up" boolean (set by inputs) and/or animation time (for cursor blink) for back-end to be able stop refreshing easily.
- misc: idle: if cursor blink if the _only_ visible animation, core imgui could rewrite vertex alpha to avoid CPU pass on ImGui:: calls.
- misc: make the ImGuiCond values linear (non-power-of-two). internal storage for ImGuiWindow can use integers to combine into flags (Why?)
- misc: provide a way to compile out the entire implementation while providing a dummy API (e.g. #define IMGUI_DUMMY_IMPL)
- misc: PushItemFlag(): add a flag to disable keyboard capture when used with mouse? (#1682)
- misc: use more size_t in public api?
- backend: bgfx? https://gist.github.com/RichardGale/6e2b74bc42b3005e08397236e4be0fd0
- web/emscriptem: refactor some examples to facilitate integration with emscripten main loop system. (#1713, #336)
- web/emscriptem: with refactored examples, we could provide a direct imgui_impl_emscripten platform layer (see eg. https://github.com/floooh/sokol-samples/blob/master/html5/imgui-emsc.cc#L42)
- remote: make a system like RemoteImGui first-class citizen/project (#75)
- demo: find a way to demonstrate textures in the examples application, as it such a a common issue for new users.
- demo: add vertical separator demo
- demo: add virtual scrolling example?
- demo: demonstrate Plot offset
- examples: window minimize, maximize (#583)
- examples: provide a zero frame-rate/idle example.
- examples: apple: example_apple should be using modern GL3.
- examples: glfw: could go idle when minimized? if (glfwGetWindowAttrib(window, GLFW_ICONIFIED)) { glfwWaitEvents(); continue; } // issue: DeltaTime will be super high on resume, perhaps provide a way to let impl know (#440)
- optimization: replace vsnprintf with stb_printf? or enable the defines/infrastructure to allow it (#1038)
- optimization: add clipping for multi-component widgets (SliderFloatX, ColorEditX, etc.). one problem is that nav branch can't easily clip parent group when there is a move request.
- optimization: add a flag to disable most of rendering, for the case where the user expect to skip it (#335)
- optimization: fully covered window (covered by another with non-translucent bg + WindowRounding worth of padding) may want to clip rendering.
- optimization: use another hash function than crc32, e.g. FNV1a
- optimization/render: merge command-lists with same clip-rect into one even if they aren't sequential? (as long as in-between clip rectangle don't overlap)?
- optimization: turn some the various stack vectors into statically-sized arrays

42
docs/issue_template.md Normal file
View File

@ -0,0 +1,42 @@
(Click "Preview" to turn any http URL into a clickable link)
1. PLEASE CAREFULLY READ:
https://github.com/ocornut/imgui/issues/2261
2. IF YOU ARE HAVING AN ISSUE COMPILING/LINKING/RUNNING/DISPLAYING/ADDING FONTS, please post on the "Getting Started" Discourse forum:
https://discourse.dearimgui.org/c/getting-started
3. PLEASE MAKE SURE that you have: read the FAQ in imgui.cpp; explored the contents of ShowDemoWindow() including the Examples menu; searched among Issues; used your IDE to search for keywords in all sources and text files; and read the link provided in (1).
4. Delete points 1-4 and PLEASE FILL THE TEMPLATE BELOW before submitting your issue.
----
_(you may also go to Demo>About Window, and click "Config/Build Information" to obtain a bunch of detailed information that you can paste here)_
**Version/Branch of Dear ImGui:**
Version: XXX
Branch: XXX _(master/viewport/docking/etc.)_
**Back-end/Renderer/Compiler/OS**
Back-ends: imgui_impl_XXX.cpp + imgui_impl_XXX.cpp _(or specify if using a custom engine/back-end)_
Compiler: XXX _(if the question is related to building or platform specific features)_
Operating System: XXX
**My Issue/Question:**
XXX _(please provide as much context as possible)_
**Screenshots/Video**
XXX _(you can drag files here)_
**Standalone, minimal, complete and verifiable example:** _(see https://github.com/ocornut/imgui/issues/2261)_
```
// Please do not forget this!
ImGui::Begin("Example Bug");
MoreCodeToExplainMyIssue();
ImGui::End();
```

View File

@ -0,0 +1,6 @@
(Click "Preview" to turn any http URL into a clickable link)
PLEASE CAREFULLY READ:
https://github.com/ocornut/imgui/issues/2261
(Clear this template before submitting your PR)

56
examples/.gitignore vendored
View File

@ -1,28 +1,38 @@
## Visual Studio files
Debug/*
Release/*
ipch/*
x64/*
directx9_example/Debug/*
directx9_example/Release/*
directx9_example/ipch/*
directx9_example/x64/*
directx11_example/Debug/*
directx11_example/Release/*
directx11_example/ipch/*
directx11_example/x64/*
opengl_example/Debug/*
opengl_example/Release/*
opengl_example/ipch/*
opengl_example/x64/*
opengl3_example/Debug/*
opengl3_example/Release/*
opengl3_example/ipch/*
opengl3_example/x64/*
build/*
*/Debug/*
*/Release/*
*/x64/*
*.o
*.obj
*.exe
## Visual Studio cruft
.vs/*
*/ipch/*
*.opensdf
*.log
*.pdb
*.ilk
*.user
*.sdf
*.suo
*.vcxproj.user
*.VC.db
*.VC.VC.opendb
## Ini files
## Xcode cruft
.DS_Store
project.xcworkspace
xcuserdata
## Emscripten output
*.out.js
*.out.wasm
## Unix executables
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

View File

@ -1,50 +1,230 @@
Those are standalone ready-to-build applications to demonstrate ImGui.
Binaries of those demos are available from the main GitHub page.
-----------------------------------------------------------------------
examples/README.txt
(This is the README file for the examples/ folder. See docs/ for more documentation)
-----------------------------------------------------------------------
TL;DR;
Refer to 'opengl_example' (not 'opengl3_example') to understand how the library is setup.
Copy the imgui_impl_xxx.cpp/.h file you need if you are using one of the rendering backend used in an example.
If you are using a different or your own backend, copy opengl_example/imgui_impl_opengl.cpp/.h to get started.
Dear ImGui is highly portable and only requires a few things to run and render:
ImGui is highly portable and only requires a few things to run:
- Providing mouse/keyboard inputs
- Load the font atlas texture into GPU memory
- Providing a render function to process the drawing commands (we rendere indexed textured triangles)
- Extra just as clipboard support, mouse cursor supports, Windows IME support.
So this is essentially what those examples are doing + the obligatory cruft for portability.
- Uploading the font atlas texture into graphics memory
- Providing a render function to render indexed textured triangles
- Optional: clipboard support, mouse cursor supports, Windows IME support, etc.
Unfortunately in 2015 it is still a massive pain to create and maintain portable build files using
external library like the ones we're using here.
For most example here I choose to provide Visual Studio 10 .sln files and Makefile for Linux/OSX.
Please let me know if they don't work with your setup!
You can probably just import the imgui_impl_xxx.cpp/.h files into your own codebase or compile those
directly with a command-line compiler.
This is essentially what the example bindings in this folder are providing + obligatory portability cruft.
opengl_example/
OpenGL example, using GLFW + fixed pipeline.
This is simple and should work for all OpenGL enabled applications.
Prefer following this example to learn how ImGui works!
It is important to understand the difference between the core Dear ImGui library (files in the root folder)
and examples bindings which we are describing here (examples/ folder).
You should be able to write bindings for pretty much any platform and any 3D graphics API. With some extra
effort you can even perform the rendering remotely, on a different machine than the one running the logic.
opengl3_example/
OpenGL example, using GLFW/GL3W + programmable pipeline.
This uses more modern OpenGL calls and custom shaders.
Even if your application is using modern OpenGL you are better off copying the code from the fixed pipeline version!
I don't think there is an advantage using this over the simpler example, but it is provided for reference.
This folder contains two things:
directx9_example/
- Example bindings for popular platforms/graphics API, which you can use as is or adapt for your own use.
They are the imgui_impl_XXXX files found in the examples/ folder.
- Example applications (standalone, ready-to-build) using the aforementioned bindings.
They are the in the XXXX_example/ sub-folders.
You can find binaries of some of those example applications at:
http://www.miracleworld.net/imgui/binaries
---------------------------------------
MISC COMMENTS AND SUGGESTIONS
---------------------------------------
- Please read 'PROGRAMMER GUIDE' in imgui.cpp for notes on how to setup Dear ImGui in your codebase.
Please read the comments and instruction at the top of each file.
- If you are using of the backend provided here, so you can copy the imgui_impl_xxx.cpp/h files
to your project and use them unmodified. Each imgui_impl_xxxx.cpp comes with its own individual
ChangeLog at the top of the .cpp files, so if you want to update them later it will be easier to
catch up with what changed.
- Dear ImGui has 0 to 1 frame of lag for most behaviors, at 60 FPS your experience should be pleasant.
However, consider that OS mouse cursors are typically drawn through a specific hardware accelerated path
and will feel smoother than common GPU rendered contents (including Dear ImGui windows).
You may experiment with the io.MouseDrawCursor flag to request Dear ImGui to draw a mouse cursor itself,
to visualize the lag between a hardware cursor and a software cursor. However, rendering a mouse cursor
at 60 FPS will feel slow. It might be beneficial to the user experience to switch to a software rendered
cursor only when an interactive drag is in progress.
Note that some setup or GPU drivers are likely to be causing extra lag depending on their settings.
If you feel that dragging windows feels laggy and you are not sure who to blame: try to build an
application drawing a shape directly under the mouse cursor.
---------------------------------------
EXAMPLE BINDINGS
---------------------------------------
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_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)
- The example _applications_ usually combine 1 platform + 1 renderer binding to create a working program.
Examples: the example_win32_directx11/ application combines imgui_impl_win32.cpp + imgui_impl_dx11.cpp.
- Some bindings for higher level frameworks carry both "Platform" and "Renderer" parts in one file.
This is the case for Allegro 5 (imgui_impl_allegro5.cpp), Marmalade (imgui_impl_marmalade5.cpp).
- If you use your own engine, you may decide to use some of existing bindings and/or rewrite some using
your own API. As a recommendation, if you are new to Dear ImGui, try using the existing binding as-is
first, before moving on to rewrite some of the code. Although it is tempting to rewrite both of the
imgui_impl_xxxx files to fit under your coding style, consider that it is not necessary!
In fact, if you are new to Dear ImGui, rewriting them will almost always be harder.
Example: your engine is built over Windows + DirectX11 but you have your own high-level rendering
system layered over DirectX11.
Suggestion: step 1: try using imgui_impl_win32.cpp + imgui_impl_dx11.cpp first.
Once this work, _if_ you want you can replace the imgui_impl_dx11.cpp code with a custom renderer
using your own functions, etc.
Please consider using the bindings to the lower-level platform/graphics API as-is.
Example: your engine is multi-platform (consoles, phones, etc.), you have high-level systems everywhere.
Suggestion: step 1: try using a non-portable binding first (e.g. win32 + underlying graphics API)!
This is counter-intuitive, but this will get you running faster! Once you better understand how imgui
works and is bound, you can rewrite the code using your own systems.
- Road-map: Dear ImGui 1.70 (WIP currently in the "viewport" branch) will allows imgui windows to be
seamlessly detached from the main application window. This is achieved using an extra layer to the
platform and renderer bindings, which allows imgui to communicate platform-specific requests.
If you decide to use unmodified imgui_impl_xxxx.cpp files, you will automatically benefit from
improvements and fixes related to viewports and platform windows without extra work on your side.
List of Platforms Bindings in this repository:
imgui_impl_glfw.cpp ; GLFW (Windows, macOS, Linux, etc.) http://www.glfw.org/
imgui_impl_osx.mm ; macOS native API
imgui_impl_sdl.cpp ; SDL2 (Windows, macOS, Linux, iOS, Android) https://www.libsdl.org
imgui_impl_win32.cpp ; Win32 native API (Windows)
imgui_impl_freeglut.cpp ; FreeGLUT (if you really miss the 90's)
List of Renderer Bindings in this repository:
imgui_impl_dx9.cpp ; DirectX9
imgui_impl_dx10.cpp ; DirectX10
imgui_impl_dx11.cpp ; DirectX11
imgui_impl_dx12.cpp ; DirectX12
imgui_impl_metal.mm ; Metal (with ObjC)
imgui_impl_opengl2.cpp ; OpenGL2 (legacy, fixed pipeline <- don't use with modern OpenGL context)
imgui_impl_opengl3.cpp ; OpenGL3, OpenGL ES 2, OpenGL ES 3 (modern programmable pipeline)
imgui_impl_vulkan.cpp ; Vulkan
List of high-level Frameworks Bindings in this repository: (combine Platform + Renderer)
imgui_impl_allegro5.cpp
imgui_impl_marmalade.cpp
Third-party framework, graphics API and languages bindings are listed at:
https://github.com/ocornut/imgui/wiki/Bindings
Languages: C, C#, ChaiScript, D, Go, Haxe, Java, Lua, Odin, Pascal, PureBasic, Python, Rust, Swift...
Frameworks: Cinder, Cocoa (OSX), Cocos2d-x, Emscripten, SFML, GML/GameMaker Studio, Irrlicht, Ogre,
OpenSceneGraph, openFrameworks, LOVE, NanoRT, Nim Game Lib, Qt3d, SFML, Unreal Engine 4...
Miscellaneous: Software Renderer, RemoteImgui, etc.
---------------------------------------
EXAMPLE APPLICATIONS
---------------------------------------
Building:
Unfortunately in 2018 it is still tedious to create and maintain portable build files using external
libraries (the kind we're using here to create a window and render 3D triangles) without relying on
third party software. For most examples here I choose to provide:
- Makefiles for Linux/OSX
- Batch files for Visual Studio 2008+
- A .sln project file for Visual Studio 2010+
- Xcode project files for the Apple examples
Please let me know if they don't work with your setup!
You can probably just import the imgui_impl_xxx.cpp/.h files into your own codebase or compile those
directly with a command-line compiler.
example_win32_directx9/
DirectX9 example, Windows only.
directx11_example/
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx9.cpp
example_win32_directx10/
DirectX10 example, Windows only.
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx10.cpp
example_win32_directx11/
DirectX11 example, Windows only.
This is quite long and tedious, because: DirectX11.
= main.cpp + imgui_impl_win32.cpp + imgui_impl_dx11.cpp
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
example_apple_metal/
OSX & iOS + Metal.
It is based on the "cross-platform" game template provided with Xcode as of Xcode 9.
(NB: you may still want to use GLFW or SDL which will also support Windows, Linux along with OSX.)
= game template + imgui_impl_osx.mm + imgui_impl_metal.mm
example_apple_opengl2/
OSX + OpenGL2.
(NB: you may still want to use GLFW or SDL which will also support Windows, Linux along with OSX.)
= main.mm + imgui_impl_osx.mm + imgui_impl_opengl2.cpp
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 Dear 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
example_glfw_opengl3/
GLFW (Win32, Mac, Linux) + OpenGL3+/ES2/ES3 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
ios_example/
iOS example.
Using Synergy to access keyboard/mouse data from server computer. Synergy keyboard integration is rather hacky.
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_opengl_example/
SDL2 + OpenGL example.
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 Dear 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_sdl.cpp + imgui_impl_opengl2.cpp
allegro5_example/
example_sdl_opengl3/
SDL2 (Win32, Mac, Linux, etc.) + OpenGL3+/ES2/ES3 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_sdl.cpp + imgui_impl_opengl3.cpp
example_sdl_vulkan/
SDL2 (Win32, Mac, Linux, etc.) + Vulkan example.
This is quite long and tedious, because: Vulkan.
= main.cpp + imgui_impl_sdl.cpp + imgui_impl_vulkan.cpp
example_allegro5/
Allegro 5 example.
= main.cpp + imgui_impl_allegro5.cpp
example_freeglut_opengl2/
FreeGLUT + OpenGL2.
= main.cpp + imgui_impl_freeglut.cpp + imgui_impl_opengl2.cpp
example_marmalade/
Marmalade example using IwGx.
= main.cpp + imgui_impl_marmalade.cpp

View File

@ -1,16 +0,0 @@
# How to Build
- On Ubuntu 14.04+
```bash
g++ -I ../imgui main.cpp imgui_impl_a5.cpp ../imgui/imgui.cpp -lallegro -lallegro_primitives
```
- On Windows with Visual Studio's CLI
\<a5path\> is your allegro5 folder.
```
cl /MD /I <a5path\include> /I ..\imgui main.cpp imgui_impl_a5.cpp ..\imgui\imgui.cpp /link /LIBPATH:<a5path\lib> allegro-5.0.10-monolith-md.lib user32.lib
```

View File

@ -1,290 +0,0 @@
// ImGui Allegro 5 bindings
// https://github.com/ocornut/imgui
// by @birthggd
#include <stdint.h> // uint64_t
#include <cstring> // memcpy
#include <imgui.h>
#include "imgui_impl_a5.h"
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#ifdef _WIN32
#include <allegro5/allegro_windows.h>
#endif
// Data
static ALLEGRO_DISPLAY* g_Display = NULL;
static ALLEGRO_BITMAP* g_Texture = NULL;
static double g_Time = 0.0;
static ALLEGRO_MOUSE_CURSOR* g_MouseCursorInvisible = NULL;
static ALLEGRO_VERTEX_DECL* g_VertexDecl = NULL;
#define OFFSETOF(TYPE, ELEMENT) ((size_t)&(((TYPE *)0)->ELEMENT))
struct ImDrawVertAllegro
{
ImVec2 pos;
ImVec2 uv;
ALLEGRO_COLOR col;
};
static void ImGui_ImplA5_RenderDrawLists(ImDrawData* draw_data)
{
int op, src, dst;
al_get_blender(&op, &src, &dst);
al_set_blender(ALLEGRO_ADD, ALLEGRO_ALPHA, ALLEGRO_INVERSE_ALPHA);
for (int n = 0; n < draw_data->CmdListsCount; n++)
{
const ImDrawList* cmd_list = draw_data->CmdLists[n];
// FIXME-OPT: Unfortunately Allegro doesn't support 32-bits packed colors so we have to convert them to 4 floats
static ImVector<ImDrawVertAllegro> vertices;
vertices.resize(cmd_list->VtxBuffer.size());
for (int i = 0; i < cmd_list->VtxBuffer.size(); ++i)
{
const ImDrawVert &dv = cmd_list->VtxBuffer[i];
ImDrawVertAllegro v;
v.pos = dv.pos;
v.uv = dv.uv;
unsigned char *c = (unsigned char*)&dv.col;
v.col = al_map_rgba(c[0], c[1], c[2], c[3]);
vertices[i] = v;
}
// FIXME-OPT: Unfortunately Allegro doesn't support 16-bit vertices
static ImVector<int> indices;
indices.resize(cmd_list->IdxBuffer.size());
for (int i = 0; i < cmd_list->IdxBuffer.size(); ++i)
indices[i] = (int)cmd_list->IdxBuffer.Data[i];
int idx_offset = 0;
for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.size(); cmd_i++)
{
const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];
if (pcmd->UserCallback)
{
pcmd->UserCallback(cmd_list, pcmd);
}
else
{
ALLEGRO_BITMAP* texture = (ALLEGRO_BITMAP*)pcmd->TextureId;
al_set_clipping_rectangle(pcmd->ClipRect.x, pcmd->ClipRect.y, pcmd->ClipRect.z-pcmd->ClipRect.x, pcmd->ClipRect.w-pcmd->ClipRect.y);
al_draw_indexed_prim(&vertices[0], g_VertexDecl, texture, &indices[idx_offset], pcmd->ElemCount, ALLEGRO_PRIM_TRIANGLE_LIST);
}
idx_offset += pcmd->ElemCount;
}
}
// Restore modified state
al_set_blender(op, src, dst);
al_set_clipping_rectangle(0, 0, al_get_display_width(g_Display), al_get_display_height(g_Display));
}
bool Imgui_ImplA5_CreateDeviceObjects()
{
ImGuiIO &io = ImGui::GetIO();
// Build texture
unsigned char *pixels;
int width, height;
io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);
// Create texture
int flags = al_get_new_bitmap_flags();
int fmt = al_get_new_bitmap_format();
al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP|ALLEGRO_MIN_LINEAR|ALLEGRO_MAG_LINEAR);
al_set_new_bitmap_format(ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE);
ALLEGRO_BITMAP* img = al_create_bitmap(width, height);
al_set_new_bitmap_flags(flags);
al_set_new_bitmap_format(fmt);
if (!img)
return false;
ALLEGRO_LOCKED_REGION *locked_img = al_lock_bitmap(img, al_get_bitmap_format(img), ALLEGRO_LOCK_WRITEONLY);
if (!locked_img)
{
al_destroy_bitmap(img);
return false;
}
memcpy(locked_img->data, pixels, sizeof(int)*width*height);
al_unlock_bitmap(img);
// Convert software texture to hardware texture.
ALLEGRO_BITMAP* cloned_img = al_clone_bitmap(img);
al_destroy_bitmap(img);
if (!cloned_img)
return false;
// Store our identifier
io.Fonts->TexID = (void*)cloned_img;
g_Texture = cloned_img;
// Cleanup (don't clear the input data if you want to append new fonts later)
io.Fonts->ClearInputData();
io.Fonts->ClearTexData();
// Create an invisible mouse cursor
// Because al_hide_mouse_cursor() seems to mess up with the actual inputs..
ALLEGRO_BITMAP* mouse_cursor = al_create_bitmap(8,8);
g_MouseCursorInvisible = al_create_mouse_cursor(mouse_cursor, 0, 0);
al_destroy_bitmap(mouse_cursor);
return true;
}
void ImGui_ImplA5_InvalidateDeviceObjects()
{
if (g_Texture)
{
al_destroy_bitmap(g_Texture);
ImGui::GetIO().Fonts->TexID = NULL;
g_Texture = NULL;
}
if (g_MouseCursorInvisible)
{
al_destroy_mouse_cursor(g_MouseCursorInvisible);
g_MouseCursorInvisible = NULL;
}
}
bool ImGui_ImplA5_Init(ALLEGRO_DISPLAY* display)
{
g_Display = display;
// Create custom vertex declaration.
// Unfortunately Allegro doesn't support 32-bits packed colors so we have to convert them to 4 floats.
// We still use a custom declaration to use 'ALLEGRO_PRIM_TEX_COORD' instead of 'ALLEGRO_PRIM_TEX_COORD_PIXEL' else we can't do a reliable conversion.
ALLEGRO_VERTEX_ELEMENT elems[] =
{
{ ALLEGRO_PRIM_POSITION, ALLEGRO_PRIM_FLOAT_2, OFFSETOF(ImDrawVertAllegro, pos) },
{ ALLEGRO_PRIM_TEX_COORD, ALLEGRO_PRIM_FLOAT_2, OFFSETOF(ImDrawVertAllegro, uv) },
{ ALLEGRO_PRIM_COLOR_ATTR, 0, OFFSETOF(ImDrawVertAllegro, col) },
{ 0, 0, 0 }
};
g_VertexDecl = al_create_vertex_decl(elems, sizeof(ImDrawVertAllegro));
ImGuiIO& io = ImGui::GetIO();
io.KeyMap[ImGuiKey_Tab] = ALLEGRO_KEY_TAB;
io.KeyMap[ImGuiKey_LeftArrow] = ALLEGRO_KEY_LEFT;
io.KeyMap[ImGuiKey_RightArrow] = ALLEGRO_KEY_RIGHT;
io.KeyMap[ImGuiKey_UpArrow] = ALLEGRO_KEY_UP;
io.KeyMap[ImGuiKey_DownArrow] = ALLEGRO_KEY_DOWN;
io.KeyMap[ImGuiKey_PageUp] = ALLEGRO_KEY_PGUP;
io.KeyMap[ImGuiKey_PageDown] = ALLEGRO_KEY_PGDN;
io.KeyMap[ImGuiKey_Home] = ALLEGRO_KEY_HOME;
io.KeyMap[ImGuiKey_End] = ALLEGRO_KEY_END;
io.KeyMap[ImGuiKey_Delete] = ALLEGRO_KEY_DELETE;
io.KeyMap[ImGuiKey_Backspace] = ALLEGRO_KEY_BACKSPACE;
io.KeyMap[ImGuiKey_Enter] = ALLEGRO_KEY_ENTER;
io.KeyMap[ImGuiKey_Escape] = ALLEGRO_KEY_ESCAPE;
io.KeyMap[ImGuiKey_A] = ALLEGRO_KEY_A;
io.KeyMap[ImGuiKey_C] = ALLEGRO_KEY_C;
io.KeyMap[ImGuiKey_V] = ALLEGRO_KEY_V;
io.KeyMap[ImGuiKey_X] = ALLEGRO_KEY_X;
io.KeyMap[ImGuiKey_Y] = ALLEGRO_KEY_Y;
io.KeyMap[ImGuiKey_Z] = ALLEGRO_KEY_Z;
io.RenderDrawListsFn = ImGui_ImplA5_RenderDrawLists;
#ifdef _WIN32
io.ImeWindowHandle = al_get_win_window_handle(g_Display);
#endif
return true;
}
void ImGui_ImplA5_Shutdown()
{
ImGui_ImplA5_InvalidateDeviceObjects();
ImGui::Shutdown();
}
bool ImGui_ImplA5_ProcessEvent(ALLEGRO_EVENT *ev)
{
ImGuiIO &io = ImGui::GetIO();
switch (ev->type)
{
case ALLEGRO_EVENT_MOUSE_AXES:
io.MouseWheel += ev->mouse.dz;
return true;
case ALLEGRO_EVENT_KEY_CHAR:
if (ev->keyboard.display == g_Display)
if (ev->keyboard.unichar > 0 && ev->keyboard.unichar < 0x10000)
io.AddInputCharacter((unsigned short)ev->keyboard.unichar);
return true;
case ALLEGRO_EVENT_KEY_DOWN:
case ALLEGRO_EVENT_KEY_UP:
if (ev->keyboard.display == g_Display)
io.KeysDown[ev->keyboard.keycode] = (ev->type == ALLEGRO_EVENT_KEY_DOWN);
return true;
}
return false;
}
void ImGui_ImplA5_NewFrame()
{
if (!g_Texture)
Imgui_ImplA5_CreateDeviceObjects();
ImGuiIO &io = ImGui::GetIO();
// Setup display size (every frame to accommodate for window resizing)
int w, h;
w = al_get_display_width(g_Display);
h = al_get_display_height(g_Display);
io.DisplaySize = ImVec2((float)w, (float)h);
// Setup time step
double current_time = al_get_time();
io.DeltaTime = g_Time > 0.0 ? (float)(current_time - g_Time) : (float)(1.0f/60.0f);
g_Time = current_time;
// Setup inputs
ALLEGRO_KEYBOARD_STATE keys;
al_get_keyboard_state(&keys);
io.KeyCtrl = al_key_down(&keys, ALLEGRO_KEY_LCTRL) || al_key_down(&keys, ALLEGRO_KEY_RCTRL);
io.KeyShift = al_key_down(&keys, ALLEGRO_KEY_LSHIFT) || al_key_down(&keys, ALLEGRO_KEY_RSHIFT);
io.KeyAlt = al_key_down(&keys, ALLEGRO_KEY_ALT) || al_key_down(&keys, ALLEGRO_KEY_ALTGR);
ALLEGRO_MOUSE_STATE mouse;
if (keys.display == g_Display)
{
al_get_mouse_state(&mouse);
io.MousePos = ImVec2((float)mouse.x, (float)mouse.y);
}
else
{
io.MousePos = ImVec2(-1, -1);
}
al_get_mouse_state(&mouse);
io.MouseDown[0] = mouse.buttons & (1 << 0);
io.MouseDown[1] = mouse.buttons & (1 << 1);
io.MouseDown[2] = mouse.buttons & (1 << 2);
// Hide OS mouse cursor if ImGui is drawing it
if (io.MouseDrawCursor)
{
al_set_mouse_cursor(g_Display, g_MouseCursorInvisible);
}
else
{
ALLEGRO_SYSTEM_MOUSE_CURSOR cursor_id = ALLEGRO_SYSTEM_MOUSE_CURSOR_DEFAULT;
switch (ImGui::GetMouseCursor())
{
case ImGuiMouseCursor_TextInput: cursor_id = ALLEGRO_SYSTEM_MOUSE_CURSOR_EDIT; break;
case ImGuiMouseCursor_Move: cursor_id = ALLEGRO_SYSTEM_MOUSE_CURSOR_MOVE; break;
case ImGuiMouseCursor_ResizeNS: cursor_id = ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_N; break;
case ImGuiMouseCursor_ResizeEW: cursor_id = ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_E; break;
case ImGuiMouseCursor_ResizeNESW: cursor_id = ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_NE; break;
case ImGuiMouseCursor_ResizeNWSE: cursor_id = ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_NW; break;
}
al_set_system_mouse_cursor(g_Display, cursor_id);
}
// Start the frame
ImGui::NewFrame();
}

View File

@ -1,18 +0,0 @@
// ImGui Allegro 5 bindings
// https://github.com/ocornut/imgui
// by @birthggd
#pragma once
struct ALLEGRO_DISPLAY;
union ALLEGRO_EVENT;
bool ImGui_ImplA5_Init(ALLEGRO_DISPLAY* display);
void ImGui_ImplA5_Shutdown();
void ImGui_ImplA5_NewFrame();
bool ImGui_ImplA5_ProcessEvent(ALLEGRO_EVENT* event);
// Use if you want to reset your rendering device without losing ImGui state.
bool Imgui_ImplA5_CreateDeviceObjects();
void ImGui_ImplA5_InvalidateDeviceObjects();

View File

@ -1,105 +0,0 @@
// ImGui - standalone example application for Allegro 5
#include <stdint.h>
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include <imgui.h>
#include "imgui_impl_a5.h"
int main(int, char**)
{
// Setup Allegro
al_init();
al_install_keyboard();
al_install_mouse();
al_init_primitives_addon();
al_set_new_display_flags(ALLEGRO_RESIZABLE);
ALLEGRO_DISPLAY* display = al_create_display(1280, 720);
al_set_window_title(display, "ImGui Allegro 5 example");
ALLEGRO_EVENT_QUEUE* queue = al_create_event_queue();
al_register_event_source(queue, al_get_display_event_source(display));
al_register_event_source(queue, al_get_keyboard_event_source());
al_register_event_source(queue, al_get_mouse_event_source());
// Setup ImGui binding
ImGui_ImplA5_Init(display);
// Load Fonts
// (see extra_fonts/README.txt for more details)
//ImGuiIO& io = ImGui::GetIO();
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyClean.ttf", 13.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyTiny.ttf", 10.0f);
//io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
// Merge glyphs from multiple fonts into one (e.g. combine default font with another with Chinese glyphs, or add icons)
//ImWchar icons_ranges[] = { 0xf000, 0xf3ff, 0 };
//ImFontConfig icons_config; icons_config.MergeMode = true; icons_config.PixelSnapH = true;
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 18.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/fontawesome-webfont.ttf", 18.0f, &icons_config, icons_ranges);
bool show_test_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImColor(114, 144, 154);
// Main loop
bool running = true;
while (running)
{
ALLEGRO_EVENT ev;
while (al_get_next_event(queue, &ev))
{
ImGui_ImplA5_ProcessEvent(&ev);
if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) running = false;
if (ev.type == ALLEGRO_EVENT_DISPLAY_RESIZE)
{
ImGui_ImplA5_InvalidateDeviceObjects();
al_acknowledge_resize(display);
Imgui_ImplA5_CreateDeviceObjects();
}
}
ImGui_ImplA5_NewFrame();
// 1. Show a simple window
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug"
{
static float f;
ImGui::Text("Hello, world!");
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
ImGui::ColorEdit3("clear color", (float*)&clear_color);
if (ImGui::Button("Test Window")) show_test_window ^= 1;
if (ImGui::Button("Another Window")) show_another_window ^= 1;
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f/ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
}
// 2. Show another simple window, this time using an explicit Begin/End pair
if (show_another_window)
{
ImGui::SetNextWindowSize(ImVec2(200, 100), ImGuiSetCond_FirstUseEver);
ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello");
ImGui::End();
}
// 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow()
if (show_test_window)
{
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiSetCond_FirstUseEver);
ImGui::ShowTestWindow(&show_test_window);
}
// Rendering
al_clear_to_color(al_map_rgba_f(clear_color.x, clear_color.y, clear_color.z, clear_color.w));
ImGui::Render();
al_flip_display();
}
// Cleanup
ImGui_ImplA5_Shutdown();
al_destroy_event_queue(queue);
al_destroy_display(display);
return 0;
}

View File

@ -1,498 +0,0 @@
// ImGui Win32 + DirectX11 binding
// https://github.com/ocornut/imgui
#include <imgui.h>
#include "imgui_impl_dx11.h"
// DirectX
#include <d3d11.h>
#include <d3dcompiler.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
// Data
static INT64 g_Time = 0;
static INT64 g_TicksPerSecond = 0;
static HWND g_hWnd = 0;
static ID3D11Device* g_pd3dDevice = NULL;
static ID3D11DeviceContext* g_pd3dDeviceContext = NULL;
static ID3D11Buffer* g_pVB = NULL;
static ID3D11Buffer* g_pIB = NULL;
static ID3D10Blob * g_pVertexShaderBlob = NULL;
static ID3D11VertexShader* g_pVertexShader = NULL;
static ID3D11InputLayout* g_pInputLayout = NULL;
static ID3D11Buffer* g_pVertexConstantBuffer = NULL;
static ID3D10Blob * g_pPixelShaderBlob = NULL;
static ID3D11PixelShader* g_pPixelShader = NULL;
static ID3D11SamplerState* g_pFontSampler = NULL;
static ID3D11ShaderResourceView*g_pFontTextureView = NULL;
static ID3D11RasterizerState* g_pRasterizerState = NULL;
static ID3D11BlendState* g_pBlendState = NULL;
static int VERTEX_BUFFER_SIZE = 20000; // TODO: Make buffers smaller and grow dynamically as needed.
static int INDEX_BUFFER_SIZE = 40000; // TODO: Make buffers smaller and grow dynamically as needed.
struct VERTEX_CONSTANT_BUFFER
{
float mvp[4][4];
};
// This is the main rendering function that you have to implement and provide to ImGui (via setting up 'RenderDrawListsFn' in the ImGuiIO structure)
// If text or lines are blurry when integrating ImGui in your engine:
// - in your Render function, try translating your projection matrix by (0.5f,0.5f) or (0.375f,0.375f)
static void ImGui_ImplDX11_RenderDrawLists(ImDrawData* draw_data)
{
// Copy and convert all vertices into a single contiguous buffer
D3D11_MAPPED_SUBRESOURCE vtx_resource, idx_resource;
if (g_pd3dDeviceContext->Map(g_pVB, 0, D3D11_MAP_WRITE_DISCARD, 0, &vtx_resource) != S_OK)
return;
if (g_pd3dDeviceContext->Map(g_pIB, 0, D3D11_MAP_WRITE_DISCARD, 0, &idx_resource) != S_OK)
return;
ImDrawVert* vtx_dst = (ImDrawVert*)vtx_resource.pData;
ImDrawIdx* idx_dst = (ImDrawIdx*)idx_resource.pData;
for (int n = 0; n < draw_data->CmdListsCount; n++)
{
const ImDrawList* cmd_list = draw_data->CmdLists[n];
memcpy(vtx_dst, &cmd_list->VtxBuffer[0], cmd_list->VtxBuffer.size() * sizeof(ImDrawVert));
memcpy(idx_dst, &cmd_list->IdxBuffer[0], cmd_list->IdxBuffer.size() * sizeof(ImDrawIdx));
vtx_dst += cmd_list->VtxBuffer.size();
idx_dst += cmd_list->IdxBuffer.size();
}
g_pd3dDeviceContext->Unmap(g_pVB, 0);
g_pd3dDeviceContext->Unmap(g_pIB, 0);
// Setup orthographic projection matrix into our constant buffer
{
D3D11_MAPPED_SUBRESOURCE mappedResource;
if (g_pd3dDeviceContext->Map(g_pVertexConstantBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource) != S_OK)
return;
VERTEX_CONSTANT_BUFFER* pConstantBuffer = (VERTEX_CONSTANT_BUFFER*)mappedResource.pData;
const float L = 0.0f;
const float R = ImGui::GetIO().DisplaySize.x;
const float B = ImGui::GetIO().DisplaySize.y;
const float T = 0.0f;
const float mvp[4][4] =
{
{ 2.0f/(R-L), 0.0f, 0.0f, 0.0f},
{ 0.0f, 2.0f/(T-B), 0.0f, 0.0f,},
{ 0.0f, 0.0f, 0.5f, 0.0f },
{ (R+L)/(L-R), (T+B)/(B-T), 0.5f, 1.0f },
};
memcpy(&pConstantBuffer->mvp, mvp, sizeof(mvp));
g_pd3dDeviceContext->Unmap(g_pVertexConstantBuffer, 0);
}
// Setup viewport
{
D3D11_VIEWPORT vp;
memset(&vp, 0, sizeof(D3D11_VIEWPORT));
vp.Width = ImGui::GetIO().DisplaySize.x;
vp.Height = ImGui::GetIO().DisplaySize.y;
vp.MinDepth = 0.0f;
vp.MaxDepth = 1.0f;
vp.TopLeftX = 0;
vp.TopLeftY = 0;
g_pd3dDeviceContext->RSSetViewports(1, &vp);
}
// Bind shader and vertex buffers
unsigned int stride = sizeof(ImDrawVert);
unsigned int offset = 0;
g_pd3dDeviceContext->IASetInputLayout(g_pInputLayout);
g_pd3dDeviceContext->IASetVertexBuffers(0, 1, &g_pVB, &stride, &offset);
g_pd3dDeviceContext->IASetIndexBuffer(g_pIB, DXGI_FORMAT_R16_UINT, 0);
g_pd3dDeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
g_pd3dDeviceContext->VSSetShader(g_pVertexShader, NULL, 0);
g_pd3dDeviceContext->VSSetConstantBuffers(0, 1, &g_pVertexConstantBuffer);
g_pd3dDeviceContext->PSSetShader(g_pPixelShader, NULL, 0);
g_pd3dDeviceContext->PSSetSamplers(0, 1, &g_pFontSampler);
// Setup render state
const float blendFactor[4] = { 0.f, 0.f, 0.f, 0.f };
g_pd3dDeviceContext->OMSetBlendState(g_pBlendState, blendFactor, 0xffffffff);
g_pd3dDeviceContext->RSSetState(g_pRasterizerState);
// Render command lists
int vtx_offset = 0;
int idx_offset = 0;
for (int n = 0; n < draw_data->CmdListsCount; n++)
{
const ImDrawList* cmd_list = draw_data->CmdLists[n];
for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.size(); cmd_i++)
{
const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];
if (pcmd->UserCallback)
{
pcmd->UserCallback(cmd_list, pcmd);
}
else
{
const D3D11_RECT r = { (LONG)pcmd->ClipRect.x, (LONG)pcmd->ClipRect.y, (LONG)pcmd->ClipRect.z, (LONG)pcmd->ClipRect.w };
g_pd3dDeviceContext->PSSetShaderResources(0, 1, (ID3D11ShaderResourceView**)&pcmd->TextureId);
g_pd3dDeviceContext->RSSetScissorRects(1, &r);
g_pd3dDeviceContext->DrawIndexed(pcmd->ElemCount, idx_offset, vtx_offset);
}
idx_offset += pcmd->ElemCount;
}
vtx_offset += cmd_list->VtxBuffer.size();
}
// Restore modified state
g_pd3dDeviceContext->IASetInputLayout(NULL);
g_pd3dDeviceContext->PSSetShader(NULL, NULL, 0);
g_pd3dDeviceContext->VSSetShader(NULL, NULL, 0);
}
LRESULT ImGui_ImplDX11_WndProcHandler(HWND, UINT msg, WPARAM wParam, LPARAM lParam)
{
ImGuiIO& io = ImGui::GetIO();
switch (msg)
{
case WM_LBUTTONDOWN:
io.MouseDown[0] = true;
return true;
case WM_LBUTTONUP:
io.MouseDown[0] = false;
return true;
case WM_RBUTTONDOWN:
io.MouseDown[1] = true;
return true;
case WM_RBUTTONUP:
io.MouseDown[1] = false;
return true;
case WM_MOUSEWHEEL:
io.MouseWheel += GET_WHEEL_DELTA_WPARAM(wParam) > 0 ? +1.0f : -1.0f;
return true;
case WM_MOUSEMOVE:
io.MousePos.x = (signed short)(lParam);
io.MousePos.y = (signed short)(lParam >> 16);
return true;
case WM_KEYDOWN:
if (wParam < 256)
io.KeysDown[wParam] = 1;
return true;
case WM_KEYUP:
if (wParam < 256)
io.KeysDown[wParam] = 0;
return true;
case WM_CHAR:
// You can also use ToAscii()+GetKeyboardState() to retrieve characters.
if (wParam > 0 && wParam < 0x10000)
io.AddInputCharacter((unsigned short)wParam);
return true;
}
return 0;
}
static void ImGui_ImplDX11_CreateFontsTexture()
{
ImGuiIO& io = ImGui::GetIO();
// Build
unsigned char* pixels;
int width, height;
io.Fonts->GetTexDataAsRGBA32(&pixels, &width, &height);
// Create DX11 texture
{
D3D11_TEXTURE2D_DESC texDesc;
ZeroMemory(&texDesc, sizeof(texDesc));
texDesc.Width = width;
texDesc.Height = height;
texDesc.MipLevels = 1;
texDesc.ArraySize = 1;
texDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
texDesc.SampleDesc.Count = 1;
texDesc.Usage = D3D11_USAGE_DEFAULT;
texDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
texDesc.CPUAccessFlags = 0;
ID3D11Texture2D *pTexture = NULL;
D3D11_SUBRESOURCE_DATA subResource;
subResource.pSysMem = pixels;
subResource.SysMemPitch = texDesc.Width * 4;
subResource.SysMemSlicePitch = 0;
g_pd3dDevice->CreateTexture2D(&texDesc, &subResource, &pTexture);
// Create texture view
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
ZeroMemory(&srvDesc, sizeof(srvDesc));
srvDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
srvDesc.Texture2D.MipLevels = texDesc.MipLevels;
srvDesc.Texture2D.MostDetailedMip = 0;
g_pd3dDevice->CreateShaderResourceView(pTexture, &srvDesc, &g_pFontTextureView);
pTexture->Release();
}
// Store our identifier
io.Fonts->TexID = (void *)g_pFontTextureView;
// Create texture sampler
{
D3D11_SAMPLER_DESC samplerDesc;
ZeroMemory(&samplerDesc, sizeof(samplerDesc));
samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR;
samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP;
samplerDesc.MipLODBias = 0.f;
samplerDesc.ComparisonFunc = D3D11_COMPARISON_ALWAYS;
samplerDesc.MinLOD = 0.f;
samplerDesc.MaxLOD = 0.f;
g_pd3dDevice->CreateSamplerState(&samplerDesc, &g_pFontSampler);
}
// Cleanup (don't clear the input data if you want to append new fonts later)
io.Fonts->ClearInputData();
io.Fonts->ClearTexData();
}
bool ImGui_ImplDX11_CreateDeviceObjects()
{
if (!g_pd3dDevice)
return false;
if (g_pVB)
ImGui_ImplDX11_InvalidateDeviceObjects();
// Create the vertex shader
{
static const char* vertexShader =
"cbuffer vertexBuffer : register(c0) \
{\
float4x4 ProjectionMatrix; \
};\
struct VS_INPUT\
{\
float2 pos : POSITION;\
float4 col : COLOR0;\
float2 uv : TEXCOORD0;\
};\
\
struct PS_INPUT\
{\
float4 pos : SV_POSITION;\
float4 col : COLOR0;\
float2 uv : TEXCOORD0;\
};\
\
PS_INPUT main(VS_INPUT input)\
{\
PS_INPUT output;\
output.pos = mul( ProjectionMatrix, float4(input.pos.xy, 0.f, 1.f));\
output.col = input.col;\
output.uv = input.uv;\
return output;\
}";
D3DCompile(vertexShader, strlen(vertexShader), NULL, NULL, NULL, "main", "vs_5_0", 0, 0, &g_pVertexShaderBlob, NULL);
if (g_pVertexShaderBlob == NULL) // NB: Pass ID3D10Blob* pErrorBlob to D3DCompile() to get error showing in (const char*)pErrorBlob->GetBufferPointer(). Make sure to Release() the blob!
return false;
if (g_pd3dDevice->CreateVertexShader((DWORD*)g_pVertexShaderBlob->GetBufferPointer(), g_pVertexShaderBlob->GetBufferSize(), NULL, &g_pVertexShader) != S_OK)
return false;
// Create the input layout
D3D11_INPUT_ELEMENT_DESC localLayout[] = {
{ "POSITION", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, (size_t)(&((ImDrawVert*)0)->pos), D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, (size_t)(&((ImDrawVert*)0)->uv), D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R8G8B8A8_UNORM, 0, (size_t)(&((ImDrawVert*)0)->col), D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
if (g_pd3dDevice->CreateInputLayout(localLayout, 3, g_pVertexShaderBlob->GetBufferPointer(), g_pVertexShaderBlob->GetBufferSize(), &g_pInputLayout) != S_OK)
return false;
// Create the constant buffer
{
D3D11_BUFFER_DESC cbDesc;
cbDesc.ByteWidth = sizeof(VERTEX_CONSTANT_BUFFER);
cbDesc.Usage = D3D11_USAGE_DYNAMIC;
cbDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
cbDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
cbDesc.MiscFlags = 0;
g_pd3dDevice->CreateBuffer(&cbDesc, NULL, &g_pVertexConstantBuffer);
}
}
// Create the pixel shader
{
static const char* pixelShader =
"struct PS_INPUT\
{\
float4 pos : SV_POSITION;\
float4 col : COLOR0;\
float2 uv : TEXCOORD0;\
};\
sampler sampler0;\
Texture2D texture0;\
\
float4 main(PS_INPUT input) : SV_Target\
{\
float4 out_col = input.col * texture0.Sample(sampler0, input.uv); \
return out_col; \
}";
D3DCompile(pixelShader, strlen(pixelShader), NULL, NULL, NULL, "main", "ps_5_0", 0, 0, &g_pPixelShaderBlob, NULL);
if (g_pPixelShaderBlob == NULL) // NB: Pass ID3D10Blob* pErrorBlob to D3DCompile() to get error showing in (const char*)pErrorBlob->GetBufferPointer(). Make sure to Release() the blob!
return false;
if (g_pd3dDevice->CreatePixelShader((DWORD*)g_pPixelShaderBlob->GetBufferPointer(), g_pPixelShaderBlob->GetBufferSize(), NULL, &g_pPixelShader) != S_OK)
return false;
}
// Create the blending setup
{
D3D11_BLEND_DESC desc;
ZeroMemory(&desc, sizeof(desc));
desc.AlphaToCoverageEnable = false;
desc.RenderTarget[0].BlendEnable = true;
desc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA;
desc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA;
desc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD;
desc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_INV_SRC_ALPHA;
desc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO;
desc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD;
desc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL;
g_pd3dDevice->CreateBlendState(&desc, &g_pBlendState);
}
// Create the rasterizer state
{
D3D11_RASTERIZER_DESC desc;
ZeroMemory(&desc, sizeof(desc));
desc.FillMode = D3D11_FILL_SOLID;
desc.CullMode = D3D11_CULL_NONE;
desc.ScissorEnable = true;
desc.DepthClipEnable = true;
g_pd3dDevice->CreateRasterizerState(&desc, &g_pRasterizerState);
}
// Create the vertex buffer
{
D3D11_BUFFER_DESC desc;
memset(&desc, 0, sizeof(D3D11_BUFFER_DESC));
desc.Usage = D3D11_USAGE_DYNAMIC;
desc.ByteWidth = VERTEX_BUFFER_SIZE * sizeof(ImDrawVert);
desc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
desc.MiscFlags = 0;
if (g_pd3dDevice->CreateBuffer(&desc, NULL, &g_pVB) < 0)
return false;
}
// Create the index buffer
{
D3D11_BUFFER_DESC bufferDesc;
memset(&bufferDesc, 0, sizeof(D3D11_BUFFER_DESC));
bufferDesc.Usage = D3D11_USAGE_DYNAMIC;
bufferDesc.ByteWidth = INDEX_BUFFER_SIZE * sizeof(ImDrawIdx);
bufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER;
bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
if (g_pd3dDevice->CreateBuffer(&bufferDesc, NULL, &g_pIB) < 0)
return false;
}
ImGui_ImplDX11_CreateFontsTexture();
return true;
}
void ImGui_ImplDX11_InvalidateDeviceObjects()
{
if (!g_pd3dDevice)
return;
if (g_pFontSampler) { g_pFontSampler->Release(); g_pFontSampler = NULL; }
if (g_pFontTextureView) { g_pFontTextureView->Release(); ImGui::GetIO().Fonts->TexID = 0; }
if (g_pIB) { g_pIB->Release(); g_pIB = NULL; }
if (g_pVB) { g_pVB->Release(); g_pVB = NULL; }
if (g_pBlendState) { g_pBlendState->Release(); g_pBlendState = NULL; }
if (g_pRasterizerState) { g_pRasterizerState->Release(); g_pRasterizerState = NULL; }
if (g_pPixelShader) { g_pPixelShader->Release(); g_pPixelShader = NULL; }
if (g_pPixelShaderBlob) { g_pPixelShaderBlob->Release(); g_pPixelShaderBlob = NULL; }
if (g_pVertexConstantBuffer) { g_pVertexConstantBuffer->Release(); g_pVertexConstantBuffer = NULL; }
if (g_pInputLayout) { g_pInputLayout->Release(); g_pInputLayout = NULL; }
if (g_pVertexShader) { g_pVertexShader->Release(); g_pVertexShader = NULL; }
if (g_pVertexShaderBlob) { g_pVertexShaderBlob->Release(); g_pVertexShaderBlob = NULL; }
}
bool ImGui_ImplDX11_Init(void* hwnd, ID3D11Device* device, ID3D11DeviceContext* device_context)
{
g_hWnd = (HWND)hwnd;
g_pd3dDevice = device;
g_pd3dDeviceContext = device_context;
if (!QueryPerformanceFrequency((LARGE_INTEGER *)&g_TicksPerSecond))
return false;
if (!QueryPerformanceCounter((LARGE_INTEGER *)&g_Time))
return false;
ImGuiIO& io = ImGui::GetIO();
io.KeyMap[ImGuiKey_Tab] = VK_TAB; // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array that we will update during the application lifetime.
io.KeyMap[ImGuiKey_LeftArrow] = VK_LEFT;
io.KeyMap[ImGuiKey_RightArrow] = VK_RIGHT;
io.KeyMap[ImGuiKey_UpArrow] = VK_UP;
io.KeyMap[ImGuiKey_DownArrow] = VK_DOWN;
io.KeyMap[ImGuiKey_PageUp] = VK_PRIOR;
io.KeyMap[ImGuiKey_PageDown] = VK_NEXT;
io.KeyMap[ImGuiKey_Home] = VK_HOME;
io.KeyMap[ImGuiKey_End] = VK_END;
io.KeyMap[ImGuiKey_Delete] = VK_DELETE;
io.KeyMap[ImGuiKey_Backspace] = VK_BACK;
io.KeyMap[ImGuiKey_Enter] = VK_RETURN;
io.KeyMap[ImGuiKey_Escape] = VK_ESCAPE;
io.KeyMap[ImGuiKey_A] = 'A';
io.KeyMap[ImGuiKey_C] = 'C';
io.KeyMap[ImGuiKey_V] = 'V';
io.KeyMap[ImGuiKey_X] = 'X';
io.KeyMap[ImGuiKey_Y] = 'Y';
io.KeyMap[ImGuiKey_Z] = 'Z';
io.RenderDrawListsFn = ImGui_ImplDX11_RenderDrawLists;
io.ImeWindowHandle = g_hWnd;
return true;
}
void ImGui_ImplDX11_Shutdown()
{
ImGui_ImplDX11_InvalidateDeviceObjects();
ImGui::Shutdown();
g_pd3dDevice = NULL;
g_pd3dDeviceContext = NULL;
g_hWnd = (HWND)0;
}
void ImGui_ImplDX11_NewFrame()
{
if (!g_pVB)
ImGui_ImplDX11_CreateDeviceObjects();
ImGuiIO& io = ImGui::GetIO();
// Setup display size (every frame to accommodate for window resizing)
RECT rect;
GetClientRect(g_hWnd, &rect);
io.DisplaySize = ImVec2((float)(rect.right - rect.left), (float)(rect.bottom - rect.top));
// Setup time step
INT64 current_time;
QueryPerformanceCounter((LARGE_INTEGER *)&current_time);
io.DeltaTime = (float)(current_time - g_Time) / g_TicksPerSecond;
g_Time = current_time;
// Read keyboard modifiers inputs
io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0;
io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0;
io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0;
// io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events
// io.MousePos : filled by WM_MOUSEMOVE events
// io.MouseDown : filled by WM_*BUTTON* events
// io.MouseWheel : filled by WM_MOUSEWHEEL events
// Hide OS mouse cursor if ImGui is drawing it
SetCursor(io.MouseDrawCursor ? NULL : LoadCursor(NULL, IDC_ARROW));
// Start the frame
ImGui::NewFrame();
}

View File

@ -1,20 +0,0 @@
// ImGui Win32 + DirectX11 binding
// https://github.com/ocornut/imgui
struct ID3D11Device;
struct ID3D11DeviceContext;
bool ImGui_ImplDX11_Init(void* hwnd, ID3D11Device* device, ID3D11DeviceContext* device_context);
void ImGui_ImplDX11_Shutdown();
void ImGui_ImplDX11_NewFrame();
// Use if you want to reset your rendering device without losing ImGui state.
void ImGui_ImplDX11_InvalidateDeviceObjects();
bool ImGui_ImplDX11_CreateDeviceObjects();
// Handler for Win32 messages, update mouse/keyboard data.
// You may or not need this for your implementation, but it can serve as reference for handling inputs.
// Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code.
/*
extern LRESULT ImGui_ImplDX11_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
*/

View File

@ -1,225 +0,0 @@
// ImGui - standalone example application for DirectX 11
#include <imgui.h>
#include "imgui_impl_dx11.h"
#include <d3d11.h>
#include <d3dcompiler.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
// Data
static ID3D11Device* g_pd3dDevice = NULL;
static ID3D11DeviceContext* g_pd3dDeviceContext = NULL;
static IDXGISwapChain* g_pSwapChain = NULL;
static ID3D11RenderTargetView* g_mainRenderTargetView = NULL;
void CreateRenderTarget()
{
DXGI_SWAP_CHAIN_DESC sd;
g_pSwapChain->GetDesc(&sd);
// Create the render target
ID3D11Texture2D* pBackBuffer;
D3D11_RENDER_TARGET_VIEW_DESC render_target_view_desc;
ZeroMemory(&render_target_view_desc, sizeof(render_target_view_desc));
render_target_view_desc.Format = sd.BufferDesc.Format;
render_target_view_desc.ViewDimension = D3D11_RTV_DIMENSION_TEXTURE2D;
g_pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
g_pd3dDevice->CreateRenderTargetView(pBackBuffer, &render_target_view_desc, &g_mainRenderTargetView);
g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL);
pBackBuffer->Release();
}
void CleanupRenderTarget()
{
if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = NULL; }
}
HRESULT 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;
#ifdef _DEBUG
createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif
D3D_FEATURE_LEVEL featureLevel;
const D3D_FEATURE_LEVEL featureLevelArray[1] = { D3D_FEATURE_LEVEL_11_0, };
if (D3D11CreateDeviceAndSwapChain(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, featureLevelArray, 1, D3D11_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice, &featureLevel, &g_pd3dDeviceContext) != S_OK)
return E_FAIL;
// Setup rasterizer
{
D3D11_RASTERIZER_DESC RSDesc;
memset(&RSDesc, 0, sizeof(D3D11_RASTERIZER_DESC));
RSDesc.FillMode = D3D11_FILL_SOLID;
RSDesc.CullMode = D3D11_CULL_NONE;
RSDesc.FrontCounterClockwise = FALSE;
RSDesc.DepthBias = 0;
RSDesc.SlopeScaledDepthBias = 0.0f;
RSDesc.DepthBiasClamp = 0;
RSDesc.DepthClipEnable = TRUE;
RSDesc.ScissorEnable = TRUE;
RSDesc.AntialiasedLineEnable = FALSE;
RSDesc.MultisampleEnable = (sd.SampleDesc.Count > 1) ? TRUE : FALSE;
ID3D11RasterizerState* pRState = NULL;
g_pd3dDevice->CreateRasterizerState(&RSDesc, &pRState);
g_pd3dDeviceContext->RSSetState(pRState);
pRState->Release();
}
CreateRenderTarget();
return S_OK;
}
void CleanupDeviceD3D()
{
CleanupRenderTarget();
if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; }
if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; }
if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; }
}
extern LRESULT ImGui_ImplDX11_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (ImGui_ImplDX11_WndProcHandler(hWnd, msg, wParam, lParam))
return true;
switch (msg)
{
case WM_SIZE:
if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED)
{
ImGui_ImplDX11_InvalidateDeviceObjects();
CleanupRenderTarget();
g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0);
CreateRenderTarget();
ImGui_ImplDX11_CreateDeviceObjects();
}
return 0;
case WM_SYSCOMMAND:
if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu
return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int main(int, char**)
{
// Create application window
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, LoadCursor(NULL, IDC_ARROW), NULL, NULL, L"ImGui Example", NULL };
RegisterClassEx(&wc);
HWND hwnd = CreateWindow(L"ImGui Example", L"ImGui DirectX11 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL);
// Initialize Direct3D
if (CreateDeviceD3D(hwnd) < 0)
{
CleanupDeviceD3D();
UnregisterClass(L"ImGui Example", wc.hInstance);
return 1;
}
// Show the window
ShowWindow(hwnd, SW_SHOWDEFAULT);
UpdateWindow(hwnd);
// Setup ImGui binding
ImGui_ImplDX11_Init(hwnd, g_pd3dDevice, g_pd3dDeviceContext);
// Load Fonts
// (see extra_fonts/README.txt for more details)
//ImGuiIO& io = ImGui::GetIO();
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyClean.ttf", 13.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyTiny.ttf", 10.0f);
//io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
// Merge glyphs from multiple fonts into one (e.g. combine default font with another with Chinese glyphs, or add icons)
//ImWchar icons_ranges[] = { 0xf000, 0xf3ff, 0 };
//ImFontConfig icons_config; icons_config.MergeMode = true; icons_config.PixelSnapH = true;
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 18.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/fontawesome-webfont.ttf", 18.0f, &icons_config, icons_ranges);
bool show_test_window = true;
bool show_another_window = false;
ImVec4 clear_col = ImColor(114, 144, 154);
// Main loop
MSG msg;
ZeroMemory(&msg, sizeof(msg));
while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
continue;
}
ImGui_ImplDX11_NewFrame();
// 1. Show a simple window
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug"
{
static float f = 0.0f;
ImGui::Text("Hello, world!");
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
ImGui::ColorEdit3("clear color", (float*)&clear_col);
if (ImGui::Button("Test Window")) show_test_window ^= 1;
if (ImGui::Button("Another Window")) show_another_window ^= 1;
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
}
// 2. Show another simple window, this time using an explicit Begin/End pair
if (show_another_window)
{
ImGui::SetNextWindowSize(ImVec2(200,100), ImGuiSetCond_FirstUseEver);
ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello");
ImGui::End();
}
// 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow()
if (show_test_window)
{
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiSetCond_FirstUseEver); // Normally user code doesn't need/want to call it because positions are saved in .ini file anyway. Here we just want to make the demo initial state a bit more friendly!
ImGui::ShowTestWindow(&show_test_window);
}
// Rendering
g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, (float*)&clear_col);
ImGui::Render();
g_pSwapChain->Present(0, 0);
}
ImGui_ImplDX11_Shutdown();
CleanupDeviceD3D();
UnregisterClass(L"ImGui Example", wc.hInstance);
return 0;
}

View File

@ -1,308 +0,0 @@
// ImGui Win32 + DirectX9 binding
// https://github.com/ocornut/imgui
#include <imgui.h>
#include "imgui_impl_dx9.h"
// DirectX
#include <d3dx9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
// Data
static HWND g_hWnd = 0;
static INT64 g_Time = 0;
static INT64 g_TicksPerSecond = 0;
static LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
static LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;
static LPDIRECT3DINDEXBUFFER9 g_pIB = NULL;
static int VERTEX_BUFFER_SIZE = 20000; // TODO: Make buffers smaller and grow dynamically as needed.
static int INDEX_BUFFER_SIZE = 40000; // TODO: Make buffers smaller and grow dynamically as needed.
struct CUSTOMVERTEX
{
D3DXVECTOR3 pos;
D3DCOLOR col;
D3DXVECTOR2 uv;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
// This is the main rendering function that you have to implement and provide to ImGui (via setting up 'RenderDrawListsFn' in the ImGuiIO structure)
// If text or lines are blurry when integrating ImGui in your engine:
// - in your Render function, try translating your projection matrix by (0.5f,0.5f) or (0.375f,0.375f)
static void ImGui_ImplDX9_RenderDrawLists(ImDrawData* draw_data)
{
// Copy and convert all vertices into a single contiguous buffer
CUSTOMVERTEX* vtx_dst;
ImDrawIdx* idx_dst;
if (g_pVB->Lock(0, (UINT)(draw_data->TotalVtxCount * sizeof(CUSTOMVERTEX)), (void**)&vtx_dst, D3DLOCK_DISCARD) < 0)
return;
if (g_pIB->Lock(0, (UINT)(draw_data->TotalIdxCount * sizeof(ImDrawIdx)), (void**)&idx_dst, D3DLOCK_DISCARD) < 0)
return;
for (int n = 0; n < draw_data->CmdListsCount; n++)
{
const ImDrawList* cmd_list = draw_data->CmdLists[n];
const ImDrawVert* vtx_src = &cmd_list->VtxBuffer[0];
for (int i = 0; i < cmd_list->VtxBuffer.size(); i++)
{
vtx_dst->pos.x = vtx_src->pos.x;
vtx_dst->pos.y = vtx_src->pos.y;
vtx_dst->pos.z = 0.0f;
vtx_dst->col = (vtx_src->col & 0xFF00FF00) | ((vtx_src->col & 0xFF0000)>>16) | ((vtx_src->col & 0xFF) << 16); // RGBA --> ARGB for DirectX9
vtx_dst->uv.x = vtx_src->uv.x;
vtx_dst->uv.y = vtx_src->uv.y;
vtx_dst++;
vtx_src++;
}
memcpy(idx_dst, &cmd_list->IdxBuffer[0], cmd_list->IdxBuffer.size() * sizeof(ImDrawIdx));
idx_dst += cmd_list->IdxBuffer.size();
}
g_pVB->Unlock();
g_pIB->Unlock();
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetIndices( g_pIB );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
// Setup render state: fixed-pipeline, alpha-blending, no face culling, no depth testing
g_pd3dDevice->SetPixelShader( NULL );
g_pd3dDevice->SetVertexShader( NULL );
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, false );
g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, false );
g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true );
g_pd3dDevice->SetRenderState( D3DRS_BLENDOP, D3DBLENDOP_ADD );
g_pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, false );
g_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
g_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
g_pd3dDevice->SetRenderState( D3DRS_SCISSORTESTENABLE, true );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_DIFFUSE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
g_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
// Setup orthographic projection matrix
D3DXMATRIXA16 mat;
D3DXMatrixIdentity(&mat);
g_pd3dDevice->SetTransform(D3DTS_WORLD, &mat);
g_pd3dDevice->SetTransform(D3DTS_VIEW, &mat);
D3DXMatrixOrthoOffCenterLH(&mat, 0.5f, ImGui::GetIO().DisplaySize.x+0.5f, ImGui::GetIO().DisplaySize.y+0.5f, 0.5f, -1.0f, +1.0f);
g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &mat);
// Render command lists
int vtx_offset = 0;
int idx_offset = 0;
for (int n = 0; n < draw_data->CmdListsCount; n++)
{
const ImDrawList* cmd_list = draw_data->CmdLists[n];
for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.size(); cmd_i++)
{
const ImDrawCmd* pcmd = &cmd_list->CmdBuffer[cmd_i];
if (pcmd->UserCallback)
{
pcmd->UserCallback(cmd_list, pcmd);
}
else
{
const RECT r = { (LONG)pcmd->ClipRect.x, (LONG)pcmd->ClipRect.y, (LONG)pcmd->ClipRect.z, (LONG)pcmd->ClipRect.w };
g_pd3dDevice->SetTexture( 0, (LPDIRECT3DTEXTURE9)pcmd->TextureId );
g_pd3dDevice->SetScissorRect(&r);
g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, vtx_offset, 0, (UINT)cmd_list->VtxBuffer.size(), idx_offset, pcmd->ElemCount/3);
}
idx_offset += pcmd->ElemCount;
}
vtx_offset += cmd_list->VtxBuffer.size();
}
}
LRESULT ImGui_ImplDX9_WndProcHandler(HWND, UINT msg, WPARAM wParam, LPARAM lParam)
{
ImGuiIO& io = ImGui::GetIO();
switch (msg)
{
case WM_LBUTTONDOWN:
io.MouseDown[0] = true;
return true;
case WM_LBUTTONUP:
io.MouseDown[0] = false;
return true;
case WM_RBUTTONDOWN:
io.MouseDown[1] = true;
return true;
case WM_RBUTTONUP:
io.MouseDown[1] = false;
return true;
case WM_MOUSEWHEEL:
io.MouseWheel += GET_WHEEL_DELTA_WPARAM(wParam) > 0 ? +1.0f : -1.0f;
return true;
case WM_MOUSEMOVE:
io.MousePos.x = (signed short)(lParam);
io.MousePos.y = (signed short)(lParam >> 16);
return true;
case WM_KEYDOWN:
if (wParam < 256)
io.KeysDown[wParam] = 1;
return true;
case WM_KEYUP:
if (wParam < 256)
io.KeysDown[wParam] = 0;
return true;
case WM_CHAR:
// You can also use ToAscii()+GetKeyboardState() to retrieve characters.
if (wParam > 0 && wParam < 0x10000)
io.AddInputCharacter((unsigned short)wParam);
return true;
}
return 0;
}
bool ImGui_ImplDX9_Init(void* hwnd, IDirect3DDevice9* device)
{
g_hWnd = (HWND)hwnd;
g_pd3dDevice = device;
if (!QueryPerformanceFrequency((LARGE_INTEGER *)&g_TicksPerSecond))
return false;
if (!QueryPerformanceCounter((LARGE_INTEGER *)&g_Time))
return false;
ImGuiIO& io = ImGui::GetIO();
io.KeyMap[ImGuiKey_Tab] = VK_TAB; // Keyboard mapping. ImGui will use those indices to peek into the io.KeyDown[] array that we will update during the application lifetime.
io.KeyMap[ImGuiKey_LeftArrow] = VK_LEFT;
io.KeyMap[ImGuiKey_RightArrow] = VK_RIGHT;
io.KeyMap[ImGuiKey_UpArrow] = VK_UP;
io.KeyMap[ImGuiKey_DownArrow] = VK_DOWN;
io.KeyMap[ImGuiKey_PageUp] = VK_PRIOR;
io.KeyMap[ImGuiKey_PageDown] = VK_NEXT;
io.KeyMap[ImGuiKey_Home] = VK_HOME;
io.KeyMap[ImGuiKey_End] = VK_END;
io.KeyMap[ImGuiKey_Delete] = VK_DELETE;
io.KeyMap[ImGuiKey_Backspace] = VK_BACK;
io.KeyMap[ImGuiKey_Enter] = VK_RETURN;
io.KeyMap[ImGuiKey_Escape] = VK_ESCAPE;
io.KeyMap[ImGuiKey_A] = 'A';
io.KeyMap[ImGuiKey_C] = 'C';
io.KeyMap[ImGuiKey_V] = 'V';
io.KeyMap[ImGuiKey_X] = 'X';
io.KeyMap[ImGuiKey_Y] = 'Y';
io.KeyMap[ImGuiKey_Z] = 'Z';
io.RenderDrawListsFn = ImGui_ImplDX9_RenderDrawLists;
io.ImeWindowHandle = g_hWnd;
return true;
}
void ImGui_ImplDX9_Shutdown()
{
ImGui_ImplDX9_InvalidateDeviceObjects();
ImGui::Shutdown();
g_pd3dDevice = NULL;
g_hWnd = 0;
}
static void ImGui_ImplDX9_CreateFontsTexture()
{
ImGuiIO& io = ImGui::GetIO();
// Build
unsigned char* pixels;
int width, height, bytes_per_pixel;
io.Fonts->GetTexDataAsAlpha8(&pixels, &width, &height, &bytes_per_pixel);
// Create DX9 texture
LPDIRECT3DTEXTURE9 pTexture = NULL;
if (D3DXCreateTexture(g_pd3dDevice, width, height, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8, D3DPOOL_DEFAULT, &pTexture) < 0)
{
IM_ASSERT(0);
return;
}
D3DLOCKED_RECT tex_locked_rect;
if (pTexture->LockRect(0, &tex_locked_rect, NULL, 0) != D3D_OK)
{
IM_ASSERT(0);
return;
}
for (int y = 0; y < height; y++)
memcpy((unsigned char *)tex_locked_rect.pBits + tex_locked_rect.Pitch * y, pixels + (width * bytes_per_pixel) * y, (width * bytes_per_pixel));
pTexture->UnlockRect(0);
// Store our identifier
io.Fonts->TexID = (void *)pTexture;
// Cleanup (don't clear the input data if you want to append new fonts later)
io.Fonts->ClearInputData();
io.Fonts->ClearTexData();
}
bool ImGui_ImplDX9_CreateDeviceObjects()
{
if (!g_pd3dDevice)
return false;
if (g_pd3dDevice->CreateVertexBuffer(VERTEX_BUFFER_SIZE * sizeof(CUSTOMVERTEX), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL) < 0)
return false;
if (g_pd3dDevice->CreateIndexBuffer(INDEX_BUFFER_SIZE * sizeof(ImDrawIdx), D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_DEFAULT, &g_pIB, NULL) < 0)
return false;
ImGui_ImplDX9_CreateFontsTexture();
return true;
}
void ImGui_ImplDX9_InvalidateDeviceObjects()
{
if (!g_pd3dDevice)
return;
if (g_pVB)
{
g_pVB->Release();
g_pVB = NULL;
}
if (g_pIB)
{
g_pIB->Release();
g_pIB = NULL;
}
if (LPDIRECT3DTEXTURE9 tex = (LPDIRECT3DTEXTURE9)ImGui::GetIO().Fonts->TexID)
{
tex->Release();
ImGui::GetIO().Fonts->TexID = 0;
}
}
void ImGui_ImplDX9_NewFrame()
{
if (!g_pVB)
ImGui_ImplDX9_CreateDeviceObjects();
ImGuiIO& io = ImGui::GetIO();
// Setup display size (every frame to accommodate for window resizing)
RECT rect;
GetClientRect(g_hWnd, &rect);
io.DisplaySize = ImVec2((float)(rect.right - rect.left), (float)(rect.bottom - rect.top));
// Setup time step
INT64 current_time;
QueryPerformanceCounter((LARGE_INTEGER *)&current_time);
io.DeltaTime = (float)(current_time - g_Time) / g_TicksPerSecond;
g_Time = current_time;
// Read keyboard modifiers inputs
io.KeyCtrl = (GetKeyState(VK_CONTROL) & 0x8000) != 0;
io.KeyShift = (GetKeyState(VK_SHIFT) & 0x8000) != 0;
io.KeyAlt = (GetKeyState(VK_MENU) & 0x8000) != 0;
// io.KeysDown : filled by WM_KEYDOWN/WM_KEYUP events
// io.MousePos : filled by WM_MOUSEMOVE events
// io.MouseDown : filled by WM_*BUTTON* events
// io.MouseWheel : filled by WM_MOUSEWHEEL events
// Hide OS mouse cursor if ImGui is drawing it
SetCursor(io.MouseDrawCursor ? NULL : LoadCursor(NULL, IDC_ARROW));
// Start the frame
ImGui::NewFrame();
}

View File

@ -1,19 +0,0 @@
// ImGui Win32 + DirectX9 binding
// https://github.com/ocornut/imgui
struct IDirect3DDevice9;
bool ImGui_ImplDX9_Init(void* hwnd, IDirect3DDevice9* device);
void ImGui_ImplDX9_Shutdown();
void ImGui_ImplDX9_NewFrame();
// Use if you want to reset your rendering device without losing ImGui state.
void ImGui_ImplDX9_InvalidateDeviceObjects();
bool ImGui_ImplDX9_CreateDeviceObjects();
// Handler for Win32 messages, update mouse/keyboard data.
// You may or not need this for your implementation, but it can serve as reference for handling inputs.
// Commented out to avoid dragging dependencies on <windows.h> types. You can copy the extern declaration in your code.
/*
extern LRESULT ImGui_ImplDX9_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
*/

View File

@ -1,160 +0,0 @@
// ImGui - standalone example application for DirectX 9
#include <imgui.h>
#include "imgui_impl_dx9.h"
#include <d3dx9.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
// Data
static LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
static D3DPRESENT_PARAMETERS g_d3dpp;
extern LRESULT ImGui_ImplDX9_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (ImGui_ImplDX9_WndProcHandler(hWnd, msg, wParam, lParam))
return true;
switch (msg)
{
case WM_SIZE:
if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED)
{
ImGui_ImplDX9_InvalidateDeviceObjects();
g_d3dpp.BackBufferWidth = LOWORD(lParam);
g_d3dpp.BackBufferHeight = HIWORD(lParam);
HRESULT hr = g_pd3dDevice->Reset(&g_d3dpp);
if (hr == D3DERR_INVALIDCALL)
IM_ASSERT(0);
ImGui_ImplDX9_CreateDeviceObjects();
}
return 0;
case WM_SYSCOMMAND:
if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu
return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int main(int, char**)
{
// Create application window
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, LoadCursor(NULL, IDC_ARROW), NULL, NULL, L"ImGui Example", NULL };
RegisterClassEx(&wc);
HWND hwnd = CreateWindow(L"ImGui Example", L"ImGui DirectX9 Example", WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL);
// Initialize Direct3D
LPDIRECT3D9 pD3D;
if ((pD3D = Direct3DCreate9(D3D_SDK_VERSION)) == NULL)
{
UnregisterClass(L"ImGui Example", wc.hInstance);
return 0;
}
ZeroMemory(&g_d3dpp, sizeof(g_d3dpp));
g_d3dpp.Windowed = TRUE;
g_d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
g_d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
g_d3dpp.EnableAutoDepthStencil = TRUE;
g_d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
g_d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
// Create the D3DDevice
if (pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &g_d3dpp, &g_pd3dDevice) < 0)
{
pD3D->Release();
UnregisterClass(L"ImGui Example", wc.hInstance);
return 0;
}
// Setup ImGui binding
ImGui_ImplDX9_Init(hwnd, g_pd3dDevice);
// Load Fonts
// (see extra_fonts/README.txt for more details)
//ImGuiIO& io = ImGui::GetIO();
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyClean.ttf", 13.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyTiny.ttf", 10.0f);
//io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
// Merge glyphs from multiple fonts into one (e.g. combine default font with another with Chinese glyphs, or add icons)
//ImWchar icons_ranges[] = { 0xf000, 0xf3ff, 0 };
//ImFontConfig icons_config; icons_config.MergeMode = true; icons_config.PixelSnapH = true;
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 18.0f);
//io.Fonts->AddFontFromFileTTF("../../extra_fonts/fontawesome-webfont.ttf", 18.0f, &icons_config, icons_ranges);
bool show_test_window = true;
bool show_another_window = false;
ImVec4 clear_col = ImColor(114, 144, 154);
// Main loop
MSG msg;
ZeroMemory(&msg, sizeof(msg));
ShowWindow(hwnd, SW_SHOWDEFAULT);
UpdateWindow(hwnd);
while (msg.message != WM_QUIT)
{
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
continue;
}
ImGui_ImplDX9_NewFrame();
// 1. Show a simple window
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug"
{
static float f = 0.0f;
ImGui::Text("Hello, world!");
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
ImGui::ColorEdit3("clear color", (float*)&clear_col);
if (ImGui::Button("Test Window")) show_test_window ^= 1;
if (ImGui::Button("Another Window")) show_another_window ^= 1;
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
}
// 2. Show another simple window, this time using an explicit Begin/End pair
if (show_another_window)
{
ImGui::SetNextWindowSize(ImVec2(200,100), ImGuiSetCond_FirstUseEver);
ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello");
ImGui::End();
}
// 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow()
if (show_test_window)
{
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiSetCond_FirstUseEver);
ImGui::ShowTestWindow(&show_test_window);
}
// Rendering
g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, false);
g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
g_pd3dDevice->SetRenderState(D3DRS_SCISSORTESTENABLE, false);
D3DCOLOR clear_col_dx = D3DCOLOR_RGBA((int)(clear_col.x*255.0f), (int)(clear_col.y*255.0f), (int)(clear_col.z*255.0f), (int)(clear_col.w*255.0f));
g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, clear_col_dx, 1.0f, 0);
if (g_pd3dDevice->BeginScene() >= 0)
{
ImGui::Render();
g_pd3dDevice->EndScene();
}
g_pd3dDevice->Present(NULL, NULL, NULL, NULL);
}
ImGui_ImplDX9_Shutdown();
if (g_pd3dDevice) g_pd3dDevice->Release();
if (pD3D) pD3D->Release();
UnregisterClass(L"ImGui Example", wc.hInstance);
return 0;
}

View File

@ -0,0 +1,23 @@
# Configuration
Dear ImGui outputs 16-bit vertex indices by default.
Allegro doesn't support them natively, so we have two solutions: convert the indices manually in imgui_impl_allegro5.cpp, or compile imgui with 32-bit indices.
You can either modify imconfig.h that comes with Dear ImGui (easier), or set a C++ preprocessor option IMGUI_USER_CONFIG to find to a filename.
We are providing `imconfig_allegro5.h` that enables 32-bit indices.
Note that the back-end supports _BOTH_ 16-bit and 32-bit indices, but 32-bit indices will be slightly faster as they won't require a manual conversion.
# How to Build
- On Ubuntu 14.04+
```bash
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/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
```

View File

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{2AE17FDE-F7F3-4CAC-ADAB-0710EDA4F741}</ProjectGuid>
<RootNamespace>example_allegro5</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_allegro5.cpp" />
<ClCompile Include="imconfig_allegro5.h" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_allegro5.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{20b90ce4-7fcb-4731-b9a0-075f875de82d}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_allegro5.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="imconfig_allegro5.h">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_allegro5.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,11 @@
//-----------------------------------------------------------------------------
// COMPILE-TIME OPTIONS FOR DEAR IMGUI ALLEGRO 5 EXAMPLE
// See imconfig.h for the full template
// Because Allegro doesn't support 16-bit vertex indices, we enable the compile-time option of imgui to use 32-bit indices
//-----------------------------------------------------------------------------
#pragma once
// Use 32-bit vertex indices because Allegro doesn't support 16-bit ones
// This allows us to avoid converting vertices format at runtime
#define ImDrawIdx int

View File

@ -0,0 +1,135 @@
// dear imgui: standalone example application for Allegro 5
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
#include <stdint.h>
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include "imgui.h"
#include "imgui_impl_allegro5.h"
int main(int, char**)
{
// Setup Allegro
al_init();
al_install_keyboard();
al_install_mouse();
al_init_primitives_addon();
al_set_new_display_flags(ALLEGRO_RESIZABLE);
ALLEGRO_DISPLAY* display = al_create_display(1280, 720);
al_set_window_title(display, "Dear ImGui Allegro 5 example");
ALLEGRO_EVENT_QUEUE* queue = al_create_event_queue();
al_register_event_source(queue, al_get_display_event_source(display));
al_register_event_source(queue, al_get_keyboard_event_source());
al_register_event_source(queue, al_get_mouse_event_source());
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplAllegro5_Init(display);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
bool running = true;
while (running)
{
// Poll and handle events (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
ALLEGRO_EVENT ev;
while (al_get_next_event(queue, &ev))
{
ImGui_ImplAllegro5_ProcessEvent(&ev);
if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE)
running = false;
if (ev.type == ALLEGRO_EVENT_DISPLAY_RESIZE)
{
ImGui_ImplAllegro5_InvalidateDeviceObjects();
al_acknowledge_resize(display);
ImGui_ImplAllegro5_CreateDeviceObjects();
}
}
// Start the Dear ImGui frame
ImGui_ImplAllegro5_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
al_clear_to_color(al_map_rgba_f(clear_color.x, clear_color.y, clear_color.z, clear_color.w));
ImGui_ImplAllegro5_RenderDrawData(ImGui::GetDrawData());
al_flip_display();
}
// Cleanup
ImGui_ImplAllegro5_Shutdown();
ImGui::DestroyContext();
al_destroy_event_queue(queue);
al_destroy_display(display);
return 0;
}

View File

@ -0,0 +1,8 @@
# iOS / OSX Metal example
## Introduction
This example shows how to integrate Dear ImGui with Metal. It is based on the "cross-platform" game template provided with Xcode as of Xcode 9.
(NB: you may still want to use GLFW or SDL which will also support Windows, Linux along with OSX.)

View File

@ -0,0 +1,19 @@
#import <TargetConditionals.h>
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
#else
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@end
#endif

View File

@ -0,0 +1,12 @@
#import "AppDelegate.h"
@implementation AppDelegate
#if TARGET_OS_OSX
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
return YES;
}
#endif
@end

View File

@ -0,0 +1,9 @@
#import <MetalKit/MetalKit.h>
@interface Renderer : NSObject <MTKViewDelegate>
-(nonnull instancetype)initWithView:(nonnull MTKView *)view;
@end

View File

@ -0,0 +1,130 @@
#import "Renderer.h"
#import <Metal/Metal.h>
#include "imgui.h"
#include "imgui_impl_metal.h"
#if TARGET_OS_OSX
#include "imgui_impl_osx.h"
#endif
@interface Renderer ()
@property (nonatomic, strong) id <MTLDevice> device;
@property (nonatomic, strong) id <MTLCommandQueue> commandQueue;
@end
@implementation Renderer
-(nonnull instancetype)initWithView:(nonnull MTKView *)view;
{
self = [super init];
if(self)
{
_device = view.device;
_commandQueue = [_device newCommandQueue];
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGui::StyleColorsDark();
ImGui_ImplMetal_Init(_device);
}
return self;
}
- (void)drawInMTKView:(MTKView *)view
{
ImGuiIO &io = ImGui::GetIO();
io.DisplaySize.x = view.bounds.size.width;
io.DisplaySize.y = view.bounds.size.height;
#if TARGET_OS_OSX
CGFloat framebufferScale = view.window.screen.backingScaleFactor ?: NSScreen.mainScreen.backingScaleFactor;
#else
CGFloat framebufferScale = view.window.screen.scale ?: UIScreen.mainScreen.scale;
#endif
io.DisplayFramebufferScale = ImVec2(framebufferScale, framebufferScale);
io.DeltaTime = 1 / float(view.preferredFramesPerSecond ?: 60);
id<MTLCommandBuffer> commandBuffer = [self.commandQueue commandBuffer];
static bool show_demo_window = true;
static bool show_another_window = false;
static float clear_color[4] = { 0.28f, 0.36f, 0.5f, 1.0f };
MTLRenderPassDescriptor *renderPassDescriptor = view.currentRenderPassDescriptor;
if (renderPassDescriptor != nil)
{
renderPassDescriptor.colorAttachments[0].clearColor = MTLClearColorMake(clear_color[0], clear_color[1], clear_color[2], clear_color[3]);
// Here, you could do additional rendering work, including other passes as necessary.
id <MTLRenderCommandEncoder> renderEncoder = [commandBuffer renderCommandEncoderWithDescriptor:renderPassDescriptor];
[renderEncoder pushDebugGroup:@"ImGui demo"];
// Start the Dear ImGui frame
ImGui_ImplMetal_NewFrame(renderPassDescriptor);
#if TARGET_OS_OSX
ImGui_ImplOSX_NewFrame(view);
#endif
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
ImDrawData *drawData = ImGui::GetDrawData();
ImGui_ImplMetal_RenderDrawData(drawData, commandBuffer, renderEncoder);
[renderEncoder popDebugGroup];
[renderEncoder endEncoding];
[commandBuffer presentDrawable:view.currentDrawable];
}
[commandBuffer commit];
}
- (void)mtkView:(MTKView *)view drawableSizeWillChange:(CGSize)size
{
}
@end

View File

@ -0,0 +1,20 @@
#import <Metal/Metal.h>
#import <MetalKit/MetalKit.h>
#import "Renderer.h"
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
#else
#import <Cocoa/Cocoa.h>
@interface ViewController : NSViewController
@end
#endif

View File

@ -0,0 +1,130 @@
#import "ViewController.h"
#import "Renderer.h"
#include "imgui.h"
#if TARGET_OS_OSX
#include "imgui_impl_osx.h"
#endif
@interface ViewController ()
@property (nonatomic, readonly) MTKView *mtkView;
@property (nonatomic, strong) Renderer *renderer;
@end
@implementation ViewController
- (MTKView *)mtkView {
return (MTKView *)self.view;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.mtkView.device = MTLCreateSystemDefaultDevice();
if (!self.mtkView.device) {
NSLog(@"Metal is not supported");
abort();
}
self.renderer = [[Renderer alloc] initWithView:self.mtkView];
[self.renderer mtkView:self.mtkView drawableSizeWillChange:self.mtkView.bounds.size];
self.mtkView.delegate = self.renderer;
#if TARGET_OS_OSX
// Add a tracking area in order to receive mouse events whenever the mouse is within the bounds of our view
NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:NSZeroRect
options:NSTrackingMouseMoved | NSTrackingInVisibleRect | NSTrackingActiveAlways
owner:self
userInfo:nil];
[self.view addTrackingArea:trackingArea];
// If we want to receive key events, we either need to be in the responder chain of the key view,
// or else we can install a local monitor. The consequence of this heavy-handed approach is that
// we receive events for all controls, not just Dear ImGui widgets. If we had native controls in our
// window, we'd want to be much more careful than just ingesting the complete event stream, though we
// do make an effort to be good citizens by passing along events when Dear ImGui doesn't want to capture.
NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel;
[NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event) {
BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view);
if (event.type == NSEventTypeKeyDown && wantsCapture) {
return nil;
} else {
return event;
}
}];
ImGui_ImplOSX_Init();
#endif
}
#if TARGET_OS_OSX
- (void)mouseMoved:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}
- (void)mouseDown:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}
- (void)mouseUp:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}
- (void)mouseDragged:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}
- (void)scrollWheel:(NSEvent *)event {
ImGui_ImplOSX_HandleEvent(event, self.view);
}
#elif TARGET_OS_IOS
// This touch mapping is super cheesy/hacky. We treat any touch on the screen
// as if it were a depressed left mouse button, and we don't bother handling
// multitouch correctly at all. This causes the "cursor" to behave very erratically
// when there are multiple active touches. But for demo purposes, single-touch
// interaction actually works surprisingly well.
- (void)updateIOWithTouchEvent:(UIEvent *)event {
UITouch *anyTouch = event.allTouches.anyObject;
CGPoint touchLocation = [anyTouch locationInView:self.view];
ImGuiIO &io = ImGui::GetIO();
io.MousePos = ImVec2(touchLocation.x, touchLocation.y);
BOOL hasActiveTouch = NO;
for (UITouch *touch in event.allTouches) {
if (touch.phase != UITouchPhaseEnded && touch.phase != UITouchPhaseCancelled) {
hasActiveTouch = YES;
break;
}
}
io.MouseDown[0] = hasActiveTouch;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self updateIOWithTouchEvent:event];
}
#endif
@end

View File

@ -1,7 +1,7 @@
//
// main.m
// imguiex
//
#import <TargetConditionals.h>
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
@ -11,3 +11,13 @@ int main(int argc, char * argv[]) {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
#else
#import <Cocoa/Cocoa.h>
int main(int argc, const char * argv[]) {
return NSApplicationMain(argc, argv);
}
#endif

View File

@ -0,0 +1,539 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
07A82ED82139413D0078D120 /* imgui_widgets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07A82ED72139413C0078D120 /* imgui_widgets.cpp */; };
07A82ED92139418F0078D120 /* imgui_widgets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07A82ED72139413C0078D120 /* imgui_widgets.cpp */; };
8307E7CC20E9F9C900473790 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7CB20E9F9C900473790 /* ViewController.mm */; };
8307E7CF20E9F9C900473790 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8307E7CD20E9F9C900473790 /* Main.storyboard */; };
8307E7DE20E9F9C900473790 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7DD20E9F9C900473790 /* AppDelegate.m */; };
8307E7E420E9F9C900473790 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8307E7E220E9F9C900473790 /* Main.storyboard */; };
8307E7E720E9F9C900473790 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7E620E9F9C900473790 /* main.m */; };
8307E7E820E9F9C900473790 /* Renderer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7BC20E9F9C700473790 /* Renderer.mm */; };
8307E7E920E9F9C900473790 /* Renderer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7BC20E9F9C700473790 /* Renderer.mm */; };
836D2A2E20EE208E0098E909 /* imgui_impl_osx.mm in Sources */ = {isa = PBXBuildFile; fileRef = 836D2A2D20EE208E0098E909 /* imgui_impl_osx.mm */; };
836D2A3020EE4A180098E909 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 836D2A2F20EE4A180098E909 /* Default-568h@2x.png */; };
836D2A3220EE4A900098E909 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 836D2A3120EE4A900098E909 /* Launch Screen.storyboard */; };
83BBE9DE20EB3FFC00295997 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7E620E9F9C900473790 /* main.m */; };
83BBE9DF20EB40AE00295997 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7DD20E9F9C900473790 /* AppDelegate.m */; };
83BBE9E020EB42D000295997 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8307E7CB20E9F9C900473790 /* ViewController.mm */; };
83BBE9E520EB46B900295997 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83BBE9E420EB46B900295997 /* Metal.framework */; };
83BBE9E720EB46BD00295997 /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83BBE9E620EB46BD00295997 /* MetalKit.framework */; };
83BBE9E920EB46C100295997 /* ModelIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83BBE9E820EB46C100295997 /* ModelIO.framework */; };
83BBE9EC20EB471700295997 /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83BBE9EA20EB471700295997 /* MetalKit.framework */; };
83BBE9ED20EB471700295997 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83BBE9EB20EB471700295997 /* Metal.framework */; };
83BBE9EF20EB471C00295997 /* ModelIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83BBE9EE20EB471C00295997 /* ModelIO.framework */; };
83BBE9FE20EB54D800295997 /* imgui_impl_metal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 83BBE9FD20EB54D800295997 /* imgui_impl_metal.mm */; };
83BBE9FF20EB54D800295997 /* imgui_impl_metal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 83BBE9FD20EB54D800295997 /* imgui_impl_metal.mm */; };
83BBEA0520EB54E700295997 /* imgui_draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83BBEA0120EB54E700295997 /* imgui_draw.cpp */; };
83BBEA0620EB54E700295997 /* imgui_draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83BBEA0120EB54E700295997 /* imgui_draw.cpp */; };
83BBEA0720EB54E700295997 /* imgui_demo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83BBEA0220EB54E700295997 /* imgui_demo.cpp */; };
83BBEA0820EB54E700295997 /* imgui_demo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83BBEA0220EB54E700295997 /* imgui_demo.cpp */; };
83BBEA0920EB54E700295997 /* imgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83BBEA0320EB54E700295997 /* imgui.cpp */; };
83BBEA0A20EB54E700295997 /* imgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83BBEA0320EB54E700295997 /* imgui.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
07A82ED62139413C0078D120 /* imgui_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui_internal.h; path = ../../imgui_internal.h; sourceTree = "<group>"; };
07A82ED72139413C0078D120 /* imgui_widgets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui_widgets.cpp; path = ../../imgui_widgets.cpp; sourceTree = "<group>"; };
8307E7BB20E9F9C700473790 /* Renderer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Renderer.h; sourceTree = "<group>"; };
8307E7BC20E9F9C700473790 /* Renderer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = Renderer.mm; sourceTree = "<group>"; };
8307E7C420E9F9C900473790 /* example_apple_metal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example_apple_metal.app; sourceTree = BUILT_PRODUCTS_DIR; };
8307E7CA20E9F9C900473790 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
8307E7CB20E9F9C900473790 /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = "<group>"; };
8307E7CE20E9F9C900473790 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
8307E7D320E9F9C900473790 /* Info-iOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-iOS.plist"; sourceTree = "<group>"; };
8307E7DA20E9F9C900473790 /* example_apple_metal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example_apple_metal.app; sourceTree = BUILT_PRODUCTS_DIR; };
8307E7DC20E9F9C900473790 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
8307E7DD20E9F9C900473790 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
8307E7E320E9F9C900473790 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
8307E7E520E9F9C900473790 /* Info-macOS.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-macOS.plist"; sourceTree = "<group>"; };
8307E7E620E9F9C900473790 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
836D2A2C20EE208D0098E909 /* imgui_impl_osx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui_impl_osx.h; path = ../../imgui_impl_osx.h; sourceTree = "<group>"; };
836D2A2D20EE208E0098E909 /* imgui_impl_osx.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = imgui_impl_osx.mm; path = ../../imgui_impl_osx.mm; sourceTree = "<group>"; };
836D2A2F20EE4A180098E909 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
836D2A3120EE4A900098E909 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
83BBE9E420EB46B900295997 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; };
83BBE9E620EB46BD00295997 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/System/Library/Frameworks/MetalKit.framework; sourceTree = DEVELOPER_DIR; };
83BBE9E820EB46C100295997 /* ModelIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ModelIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.4.sdk/System/Library/Frameworks/ModelIO.framework; sourceTree = DEVELOPER_DIR; };
83BBE9EA20EB471700295997 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
83BBE9EB20EB471700295997 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
83BBE9EE20EB471C00295997 /* ModelIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ModelIO.framework; path = System/Library/Frameworks/ModelIO.framework; sourceTree = SDKROOT; };
83BBE9FC20EB54D800295997 /* imgui_impl_metal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui_impl_metal.h; path = ../../imgui_impl_metal.h; sourceTree = "<group>"; };
83BBE9FD20EB54D800295997 /* imgui_impl_metal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = imgui_impl_metal.mm; path = ../../imgui_impl_metal.mm; sourceTree = "<group>"; };
83BBEA0020EB54E700295997 /* imgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui.h; path = ../../imgui.h; sourceTree = "<group>"; };
83BBEA0120EB54E700295997 /* imgui_draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui_draw.cpp; path = ../../imgui_draw.cpp; sourceTree = "<group>"; };
83BBEA0220EB54E700295997 /* imgui_demo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui_demo.cpp; path = ../../imgui_demo.cpp; sourceTree = "<group>"; };
83BBEA0320EB54E700295997 /* imgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui.cpp; path = ../../imgui.cpp; sourceTree = "<group>"; };
83BBEA0420EB54E700295997 /* imconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imconfig.h; path = ../../imconfig.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
8307E7C120E9F9C900473790 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
83BBE9E920EB46C100295997 /* ModelIO.framework in Frameworks */,
83BBE9E720EB46BD00295997 /* MetalKit.framework in Frameworks */,
83BBE9E520EB46B900295997 /* Metal.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8307E7D720E9F9C900473790 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
83BBE9EF20EB471C00295997 /* ModelIO.framework in Frameworks */,
83BBE9EC20EB471700295997 /* MetalKit.framework in Frameworks */,
83BBE9ED20EB471700295997 /* Metal.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
8307E7B520E9F9C700473790 = {
isa = PBXGroup;
children = (
83BBE9F020EB544400295997 /* imgui */,
8307E7BA20E9F9C700473790 /* Shared */,
8307E7C620E9F9C900473790 /* iOS */,
8307E7DB20E9F9C900473790 /* macOS */,
8307E7C520E9F9C900473790 /* Products */,
83BBE9E320EB46B800295997 /* Frameworks */,
);
sourceTree = "<group>";
};
8307E7BA20E9F9C700473790 /* Shared */ = {
isa = PBXGroup;
children = (
83BBE9FC20EB54D800295997 /* imgui_impl_metal.h */,
83BBE9FD20EB54D800295997 /* imgui_impl_metal.mm */,
836D2A2C20EE208D0098E909 /* imgui_impl_osx.h */,
836D2A2D20EE208E0098E909 /* imgui_impl_osx.mm */,
8307E7DC20E9F9C900473790 /* AppDelegate.h */,
8307E7DD20E9F9C900473790 /* AppDelegate.m */,
8307E7BB20E9F9C700473790 /* Renderer.h */,
8307E7BC20E9F9C700473790 /* Renderer.mm */,
8307E7CA20E9F9C900473790 /* ViewController.h */,
8307E7CB20E9F9C900473790 /* ViewController.mm */,
8307E7E620E9F9C900473790 /* main.m */,
);
path = Shared;
sourceTree = "<group>";
};
8307E7C520E9F9C900473790 /* Products */ = {
isa = PBXGroup;
children = (
8307E7C420E9F9C900473790 /* example_apple_metal.app */,
8307E7DA20E9F9C900473790 /* example_apple_metal.app */,
);
name = Products;
sourceTree = "<group>";
};
8307E7C620E9F9C900473790 /* iOS */ = {
isa = PBXGroup;
children = (
836D2A2F20EE4A180098E909 /* Default-568h@2x.png */,
8307E7CD20E9F9C900473790 /* Main.storyboard */,
8307E7D320E9F9C900473790 /* Info-iOS.plist */,
836D2A3120EE4A900098E909 /* Launch Screen.storyboard */,
);
path = iOS;
sourceTree = "<group>";
};
8307E7DB20E9F9C900473790 /* macOS */ = {
isa = PBXGroup;
children = (
8307E7E220E9F9C900473790 /* Main.storyboard */,
8307E7E520E9F9C900473790 /* Info-macOS.plist */,
);
path = macOS;
sourceTree = "<group>";
};
83BBE9E320EB46B800295997 /* Frameworks */ = {
isa = PBXGroup;
children = (
83BBE9EE20EB471C00295997 /* ModelIO.framework */,
83BBE9EB20EB471700295997 /* Metal.framework */,
83BBE9EA20EB471700295997 /* MetalKit.framework */,
83BBE9E820EB46C100295997 /* ModelIO.framework */,
83BBE9E620EB46BD00295997 /* MetalKit.framework */,
83BBE9E420EB46B900295997 /* Metal.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
83BBE9F020EB544400295997 /* imgui */ = {
isa = PBXGroup;
children = (
83BBEA0420EB54E700295997 /* imconfig.h */,
83BBEA0320EB54E700295997 /* imgui.cpp */,
83BBEA0020EB54E700295997 /* imgui.h */,
83BBEA0220EB54E700295997 /* imgui_demo.cpp */,
83BBEA0120EB54E700295997 /* imgui_draw.cpp */,
07A82ED62139413C0078D120 /* imgui_internal.h */,
07A82ED72139413C0078D120 /* imgui_widgets.cpp */,
);
name = imgui;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
8307E7C320E9F9C900473790 /* example_apple_metal_ios */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8307E7F020E9F9C900473790 /* Build configuration list for PBXNativeTarget "example_apple_metal_ios" */;
buildPhases = (
8307E7C020E9F9C900473790 /* Sources */,
8307E7C120E9F9C900473790 /* Frameworks */,
8307E7C220E9F9C900473790 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = example_apple_metal_ios;
productName = "imguiex iOS";
productReference = 8307E7C420E9F9C900473790 /* example_apple_metal.app */;
productType = "com.apple.product-type.application";
};
8307E7D920E9F9C900473790 /* example_apple_metal_macos */ = {
isa = PBXNativeTarget;
buildConfigurationList = 8307E7F320E9F9C900473790 /* Build configuration list for PBXNativeTarget "example_apple_metal_macos" */;
buildPhases = (
8307E7D620E9F9C900473790 /* Sources */,
8307E7D720E9F9C900473790 /* Frameworks */,
8307E7D820E9F9C900473790 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = example_apple_metal_macos;
productName = "imguiex macOS";
productReference = 8307E7DA20E9F9C900473790 /* example_apple_metal.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
8307E7B620E9F9C700473790 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0940;
ORGANIZATIONNAME = "Warren Moore";
TargetAttributes = {
8307E7C320E9F9C900473790 = {
CreatedOnToolsVersion = 9.4.1;
ProvisioningStyle = Automatic;
};
8307E7D920E9F9C900473790 = {
CreatedOnToolsVersion = 9.4.1;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 8307E7B920E9F9C700473790 /* Build configuration list for PBXProject "example_apple_metal" */;
compatibilityVersion = "Xcode 8.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 8307E7B520E9F9C700473790;
productRefGroup = 8307E7C520E9F9C900473790 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
8307E7C320E9F9C900473790 /* example_apple_metal_ios */,
8307E7D920E9F9C900473790 /* example_apple_metal_macos */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
8307E7C220E9F9C900473790 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
836D2A3220EE4A900098E909 /* Launch Screen.storyboard in Resources */,
8307E7CF20E9F9C900473790 /* Main.storyboard in Resources */,
836D2A3020EE4A180098E909 /* Default-568h@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8307E7D820E9F9C900473790 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8307E7E420E9F9C900473790 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
8307E7C020E9F9C900473790 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8307E7E820E9F9C900473790 /* Renderer.mm in Sources */,
8307E7CC20E9F9C900473790 /* ViewController.mm in Sources */,
83BBEA0520EB54E700295997 /* imgui_draw.cpp in Sources */,
83BBE9DF20EB40AE00295997 /* AppDelegate.m in Sources */,
83BBEA0920EB54E700295997 /* imgui.cpp in Sources */,
83BBEA0720EB54E700295997 /* imgui_demo.cpp in Sources */,
83BBE9FE20EB54D800295997 /* imgui_impl_metal.mm in Sources */,
07A82ED82139413D0078D120 /* imgui_widgets.cpp in Sources */,
83BBE9DE20EB3FFC00295997 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
8307E7D620E9F9C900473790 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
83BBE9E020EB42D000295997 /* ViewController.mm in Sources */,
8307E7E920E9F9C900473790 /* Renderer.mm in Sources */,
83BBEA0620EB54E700295997 /* imgui_draw.cpp in Sources */,
07A82ED92139418F0078D120 /* imgui_widgets.cpp in Sources */,
8307E7E720E9F9C900473790 /* main.m in Sources */,
83BBEA0A20EB54E700295997 /* imgui.cpp in Sources */,
83BBEA0820EB54E700295997 /* imgui_demo.cpp in Sources */,
83BBE9FF20EB54D800295997 /* imgui_impl_metal.mm in Sources */,
836D2A2E20EE208E0098E909 /* imgui_impl_osx.mm in Sources */,
8307E7DE20E9F9C900473790 /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
8307E7CD20E9F9C900473790 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
8307E7CE20E9F9C900473790 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
8307E7E220E9F9C900473790 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
8307E7E320E9F9C900473790 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
8307E7EE20E9F9C900473790 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
};
name = Debug;
};
8307E7EF20E9F9C900473790 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = NO;
};
name = Release;
};
8307E7F120E9F9C900473790 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info-iOS.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "org.imgui.example.apple-metal-ios";
PRODUCT_NAME = example_apple_metal;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
8307E7F220E9F9C900473790 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info-iOS.plist";
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "org.imgui.example.apple-metal-ios";
PRODUCT_NAME = example_apple_metal;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
8307E7F420E9F9C900473790 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info-macOS.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.12;
PRODUCT_BUNDLE_IDENTIFIER = "org.imgui.example.apple-metal-macos";
PRODUCT_NAME = example_apple_metal;
SDKROOT = macosx;
};
name = Debug;
};
8307E7F520E9F9C900473790 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info-macOS.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.12;
PRODUCT_BUNDLE_IDENTIFIER = "org.imgui.example.apple-metal-macos";
PRODUCT_NAME = example_apple_metal;
SDKROOT = macosx;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
8307E7B920E9F9C700473790 /* Build configuration list for PBXProject "example_apple_metal" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8307E7EE20E9F9C900473790 /* Debug */,
8307E7EF20E9F9C900473790 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8307E7F020E9F9C900473790 /* Build configuration list for PBXNativeTarget "example_apple_metal_ios" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8307E7F120E9F9C900473790 /* Debug */,
8307E7F220E9F9C900473790 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
8307E7F320E9F9C900473790 /* Build configuration list for PBXNativeTarget "example_apple_metal_macos" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8307E7F420E9F9C900473790 /* Debug */,
8307E7F520E9F9C900473790 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 8307E7B620E9F9C700473790 /* Project object */;
}

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BV1-FR-VrT">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tXr-a1-R10">
<objects>
<viewController id="BV1-FR-VrT" customClass="ViewController" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="3se-qz-xqx" customClass="MTKView">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="BKg-qs-eN0"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="SZV-WD-TEh" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -3,33 +3,34 @@
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>org.imgui.example.$(PRODUCT_NAME:rfc1034identifier)</string>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<string>imgui</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<string>Launch Screen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>metal</string>
</array>
<key>UIRequiresFullScreen</key>
<true/>
<key>UIStatusBarHidden</key>
<true/>
<key>UISupportedInterfaceOrientations</key>
@ -37,6 +38,7 @@
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14269.14" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14252.5"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="14269.14" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14269.14"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Application-->
<scene sceneID="JPo-4y-FX3">
<objects>
<application id="hnw-xV-0zn" sceneMemberID="viewController">
<menu key="mainMenu" title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
<menuItem title="ImGui" id="1Xt-HY-uBw">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="ImGui" systemMenu="apple" id="uQy-DD-JDr">
<items>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
<menuItem title="Services" id="NMo-om-nkz">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
</menuItem>
<menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
<menuItem title="Hide" keyEquivalent="h" id="Olw-nP-bQN">
<connections>
<action selector="hide:" target="Ady-hI-5gd" id="PnN-Uc-m68"/>
</connections>
</menuItem>
<menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="hideOtherApplications:" target="Ady-hI-5gd" id="VT4-aY-XCT"/>
</connections>
</menuItem>
<menuItem title="Show All" id="Kd2-mp-pUS">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="unhideAllApplications:" target="Ady-hI-5gd" id="Dhg-Le-xox"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
<menuItem title="Quit" keyEquivalent="q" id="4sb-4s-VLi">
<connections>
<action selector="terminate:" target="Ady-hI-5gd" id="Te7-pn-YzF"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="View" id="H8h-7b-M4v">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="View" id="HyV-fh-RgO">
<items>
<menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
<connections>
<action selector="toggleFullScreen:" target="Ady-hI-5gd" id="dU3-MA-1Rq"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
<items>
<menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
<connections>
<action selector="performMiniaturize:" target="Ady-hI-5gd" id="VwT-WD-YPe"/>
</connections>
</menuItem>
<menuItem title="Zoom" id="R4o-n2-Eq4">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="performZoom:" target="Ady-hI-5gd" id="DIl-cC-cCs"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
</items>
</menu>
<connections>
<outlet property="delegate" destination="Voe-Tx-rLC" id="PrD-fu-P6m"/>
</connections>
</application>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate"/>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<customObject id="Ady-hI-5gd" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="75" y="0.0"/>
</scene>
<!--Window Controller-->
<scene sceneID="R2V-B0-nI4">
<objects>
<windowController id="B8D-0N-5wS" sceneMemberID="viewController">
<window key="window" title="ImGui" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" titleVisibility="hidden" id="IQv-IB-iLA">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="480" height="270"/>
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1027"/>
<connections>
<outlet property="delegate" destination="B8D-0N-5wS" id="CyC-Pq-WbN"/>
</connections>
</window>
<connections>
<segue destination="XfG-lQ-9wD" kind="relationship" relationship="window.shadowedContentViewController" id="cq2-FE-JQM"/>
</connections>
</windowController>
<customObject id="Oky-zY-oP4" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-128" y="390"/>
</scene>
<!--View Controller-->
<scene sceneID="hIz-AP-VOD">
<objects>
<viewController id="XfG-lQ-9wD" customClass="ViewController" sceneMemberID="viewController">
<view key="view" wantsLayer="YES" id="m2S-Jp-Qdl" customClass="MTKView">
<rect key="frame" x="0.0" y="0.0" width="1280" height="720"/>
<autoresizingMask key="autoresizingMask"/>
</view>
</viewController>
<customObject id="rPt-NT-nkU" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="205" y="1032"/>
</scene>
</scenes>
</document>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>imgui</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2018 Warren Moore. All rights reserved.</string>
<key>NSMainStoryboardFile</key>
<string>Main</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>

View File

@ -0,0 +1,332 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 48;
objects = {
/* Begin PBXBuildFile section */
07A82EDB213941D00078D120 /* imgui_widgets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07A82EDA213941D00078D120 /* imgui_widgets.cpp */; };
4080A99820B02D340036BA46 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4080A98A20B02CD90036BA46 /* main.mm */; };
4080A9A220B034280036BA46 /* imgui_impl_opengl2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4080A99E20B034280036BA46 /* imgui_impl_opengl2.cpp */; };
4080A9AD20B0343C0036BA46 /* imgui_demo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4080A9A620B0343C0036BA46 /* imgui_demo.cpp */; };
4080A9AE20B0343C0036BA46 /* imgui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4080A9A720B0343C0036BA46 /* imgui.cpp */; };
4080A9AF20B0343C0036BA46 /* imgui_draw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4080A9AA20B0343C0036BA46 /* imgui_draw.cpp */; };
4080A9B020B0347A0036BA46 /* imgui_impl_osx.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4080A99F20B034280036BA46 /* imgui_impl_osx.mm */; };
4080A9B320B034E40036BA46 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4080A9B220B034E40036BA46 /* Cocoa.framework */; };
4080A9B520B034EA0036BA46 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4080A9B420B034EA0036BA46 /* OpenGL.framework */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
4080A96920B029B00036BA46 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = /usr/share/man/man1/;
dstSubfolderSpec = 0;
files = (
);
runOnlyForDeploymentPostprocessing = 1;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
07A82EDA213941D00078D120 /* imgui_widgets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui_widgets.cpp; path = ../../imgui_widgets.cpp; sourceTree = "<group>"; };
4080A96B20B029B00036BA46 /* example_osx_opengl2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = example_osx_opengl2; sourceTree = BUILT_PRODUCTS_DIR; };
4080A98A20B02CD90036BA46 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = SOURCE_ROOT; };
4080A99E20B034280036BA46 /* imgui_impl_opengl2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui_impl_opengl2.cpp; path = ../imgui_impl_opengl2.cpp; sourceTree = "<group>"; };
4080A99F20B034280036BA46 /* imgui_impl_osx.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = imgui_impl_osx.mm; path = ../imgui_impl_osx.mm; sourceTree = "<group>"; };
4080A9A020B034280036BA46 /* imgui_impl_opengl2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui_impl_opengl2.h; path = ../imgui_impl_opengl2.h; sourceTree = "<group>"; };
4080A9A120B034280036BA46 /* imgui_impl_osx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui_impl_osx.h; path = ../imgui_impl_osx.h; sourceTree = "<group>"; };
4080A9A420B0343C0036BA46 /* stb_truetype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_truetype.h; path = ../../stb_truetype.h; sourceTree = "<group>"; };
4080A9A520B0343C0036BA46 /* imgui_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui_internal.h; path = ../../imgui_internal.h; sourceTree = "<group>"; };
4080A9A620B0343C0036BA46 /* imgui_demo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui_demo.cpp; path = ../../imgui_demo.cpp; sourceTree = "<group>"; };
4080A9A720B0343C0036BA46 /* imgui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui.cpp; path = ../../imgui.cpp; sourceTree = "<group>"; };
4080A9A820B0343C0036BA46 /* imgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imgui.h; path = ../../imgui.h; sourceTree = "<group>"; };
4080A9A920B0343C0036BA46 /* stb_rect_pack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_rect_pack.h; path = ../../stb_rect_pack.h; sourceTree = "<group>"; };
4080A9AA20B0343C0036BA46 /* imgui_draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = imgui_draw.cpp; path = ../../imgui_draw.cpp; sourceTree = "<group>"; };
4080A9AB20B0343C0036BA46 /* stb_textedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stb_textedit.h; path = ../../stb_textedit.h; sourceTree = "<group>"; };
4080A9AC20B0343C0036BA46 /* imconfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = imconfig.h; path = ../../imconfig.h; sourceTree = "<group>"; };
4080A9B220B034E40036BA46 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
4080A9B420B034EA0036BA46 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
4080A96820B029B00036BA46 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4080A9B520B034EA0036BA46 /* OpenGL.framework in Frameworks */,
4080A9B320B034E40036BA46 /* Cocoa.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
4080A96220B029B00036BA46 = {
isa = PBXGroup;
children = (
4080A9AC20B0343C0036BA46 /* imconfig.h */,
4080A9A720B0343C0036BA46 /* imgui.cpp */,
4080A9A820B0343C0036BA46 /* imgui.h */,
07A82EDA213941D00078D120 /* imgui_widgets.cpp */,
4080A9A620B0343C0036BA46 /* imgui_demo.cpp */,
4080A9AA20B0343C0036BA46 /* imgui_draw.cpp */,
4080A9A520B0343C0036BA46 /* imgui_internal.h */,
4080A9A920B0343C0036BA46 /* stb_rect_pack.h */,
4080A9AB20B0343C0036BA46 /* stb_textedit.h */,
4080A9A420B0343C0036BA46 /* stb_truetype.h */,
4080A99E20B034280036BA46 /* imgui_impl_opengl2.cpp */,
4080A9A020B034280036BA46 /* imgui_impl_opengl2.h */,
4080A9A120B034280036BA46 /* imgui_impl_osx.h */,
4080A99F20B034280036BA46 /* imgui_impl_osx.mm */,
4080A98A20B02CD90036BA46 /* main.mm */,
4080A96C20B029B00036BA46 /* Products */,
4080A9B120B034E40036BA46 /* Frameworks */,
);
sourceTree = "<group>";
};
4080A96C20B029B00036BA46 /* Products */ = {
isa = PBXGroup;
children = (
4080A96B20B029B00036BA46 /* example_osx_opengl2 */,
);
name = Products;
sourceTree = "<group>";
};
4080A9B120B034E40036BA46 /* Frameworks */ = {
isa = PBXGroup;
children = (
4080A9B420B034EA0036BA46 /* OpenGL.framework */,
4080A9B220B034E40036BA46 /* Cocoa.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
4080A96A20B029B00036BA46 /* example_osx_opengl2 */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4080A97220B029B00036BA46 /* Build configuration list for PBXNativeTarget "example_osx_opengl2" */;
buildPhases = (
4080A96720B029B00036BA46 /* Sources */,
4080A96820B029B00036BA46 /* Frameworks */,
4080A96920B029B00036BA46 /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = example_osx_opengl2;
productName = example_osx_opengl2;
productReference = 4080A96B20B029B00036BA46 /* example_osx_opengl2 */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
4080A96320B029B00036BA46 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = ImGui;
TargetAttributes = {
4080A96A20B029B00036BA46 = {
CreatedOnToolsVersion = 9.3.1;
ProvisioningStyle = Automatic;
};
};
};
buildConfigurationList = 4080A96620B029B00036BA46 /* Build configuration list for PBXProject "example_apple_opengl2" */;
compatibilityVersion = "Xcode 8.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = 4080A96220B029B00036BA46;
productRefGroup = 4080A96C20B029B00036BA46 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
4080A96A20B029B00036BA46 /* example_osx_opengl2 */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
4080A96720B029B00036BA46 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4080A99820B02D340036BA46 /* main.mm in Sources */,
4080A9AD20B0343C0036BA46 /* imgui_demo.cpp in Sources */,
4080A9AF20B0343C0036BA46 /* imgui_draw.cpp in Sources */,
4080A9A220B034280036BA46 /* imgui_impl_opengl2.cpp in Sources */,
4080A9B020B0347A0036BA46 /* imgui_impl_osx.mm in Sources */,
4080A9AE20B0343C0036BA46 /* imgui.cpp in Sources */,
07A82EDB213941D00078D120 /* imgui_widgets.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
4080A97020B029B00036BA46 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
4080A97120B029B00036BA46 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "-";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.13;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = macosx;
};
name = Release;
};
4080A97320B029B00036BA46 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
MACOSX_DEPLOYMENT_TARGET = 10.12;
PRODUCT_NAME = "$(TARGET_NAME)";
SYSTEM_HEADER_SEARCH_PATHS = ../libs/gl3w;
USER_HEADER_SEARCH_PATHS = ../..;
};
name = Debug;
};
4080A97420B029B00036BA46 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Automatic;
MACOSX_DEPLOYMENT_TARGET = 10.12;
PRODUCT_NAME = "$(TARGET_NAME)";
SYSTEM_HEADER_SEARCH_PATHS = ../libs/gl3w;
USER_HEADER_SEARCH_PATHS = ../..;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
4080A96620B029B00036BA46 /* Build configuration list for PBXProject "example_apple_opengl2" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4080A97020B029B00036BA46 /* Debug */,
4080A97120B029B00036BA46 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4080A97220B029B00036BA46 /* Build configuration list for PBXNativeTarget "example_osx_opengl2" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4080A97320B029B00036BA46 /* Debug */,
4080A97420B029B00036BA46 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 4080A96320B029B00036BA46 /* Project object */;
}

View File

@ -0,0 +1,282 @@
// dear imgui: standalone example application for OSX + OpenGL2, using legacy fixed pipeline
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
#include "imgui.h"
#include "../imgui_impl_osx.h"
#include "../imgui_impl_opengl2.h"
#include <stdio.h>
#import <Cocoa/Cocoa.h>
#import <OpenGL/gl.h>
#import <OpenGL/glu.h>
//-----------------------------------------------------------------------------------
// ImGuiExampleView
//-----------------------------------------------------------------------------------
@interface ImGuiExampleView : NSOpenGLView
{
NSTimer* animationTimer;
}
@end
@implementation ImGuiExampleView
-(void)animationTimerFired:(NSTimer*)timer
{
[self setNeedsDisplay:YES];
}
-(void)prepareOpenGL
{
[super prepareOpenGL];
#ifndef DEBUG
GLint swapInterval = 1;
[[self openGLContext] setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval];
if (swapInterval == 0)
NSLog(@"Error: Cannot set swap interval.");
#endif
}
-(void)updateAndDrawDemoView
{
// Start the Dear ImGui frame
ImGui_ImplOpenGL2_NewFrame();
ImGui_ImplOSX_NewFrame(self);
ImGui::NewFrame();
// Global data for the demo
static bool show_demo_window = true;
static bool show_another_window = false;
static ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
[[self openGLContext] makeCurrentContext];
ImGuiIO& io = ImGui::GetIO();
GLsizei width = (GLsizei)(io.DisplaySize.x * io.DisplayFramebufferScale.x);
GLsizei height = (GLsizei)(io.DisplaySize.y * io.DisplayFramebufferScale.y);
glViewport(0, 0, width, height);
glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
glClear(GL_COLOR_BUFFER_BIT);
ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());
// Present
[[self openGLContext] flushBuffer];
if (!animationTimer)
animationTimer = [NSTimer scheduledTimerWithTimeInterval:0.017 target:self selector:@selector(animationTimerFired:) userInfo:nil repeats:YES];
}
-(void)reshape
{
[[self openGLContext] update];
[self updateAndDrawDemoView];
}
-(void)drawRect:(NSRect)bounds
{
[self updateAndDrawDemoView];
}
-(BOOL)acceptsFirstResponder
{
return (YES);
}
-(BOOL)becomeFirstResponder
{
return (YES);
}
-(BOOL)resignFirstResponder
{
return (YES);
}
// Flip coordinate system upside down on Y
-(BOOL)isFlipped
{
return (YES);
}
-(void)dealloc
{
animationTimer = nil;
}
// Forward Mouse/Keyboard events to dear imgui OSX back-end. It returns true when imgui is expecting to use the event.
-(void)keyUp:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
-(void)keyDown:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
-(void)flagsChanged:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
-(void)mouseDown:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
-(void)mouseUp:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
-(void)scrollWheel:(NSEvent *)event { ImGui_ImplOSX_HandleEvent(event, self); }
@end
//-----------------------------------------------------------------------------------
// ImGuiExampleAppDelegate
//-----------------------------------------------------------------------------------
@interface ImGuiExampleAppDelegate : NSObject <NSApplicationDelegate>
@property (nonatomic, readonly) NSWindow* window;
@end
@implementation ImGuiExampleAppDelegate
@synthesize window = _window;
-(BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication
{
return YES;
}
-(NSWindow*)window
{
if (_window != nil)
return (_window);
NSRect viewRect = NSMakeRect(100.0, 100.0, 100.0 + 1280.0, 100 + 720.0);
_window = [[NSWindow alloc] initWithContentRect:viewRect styleMask:NSWindowStyleMaskTitled|NSWindowStyleMaskMiniaturizable|NSWindowStyleMaskResizable|NSWindowStyleMaskClosable backing:NSBackingStoreBuffered defer:YES];
[_window setTitle:@"Dear ImGui OSX+OpenGL2 Example"];
[_window setOpaque:YES];
[_window makeKeyAndOrderFront:NSApp];
return (_window);
}
-(void)setupMenu
{
NSMenu* mainMenuBar = [[NSMenu alloc] init];
NSMenu* appMenu;
NSMenuItem* menuItem;
appMenu = [[NSMenu alloc] initWithTitle:@"Dear ImGui OSX+OpenGL2 Example"];
menuItem = [appMenu addItemWithTitle:@"Quit Dear ImGui OSX+OpenGL2 Example" action:@selector(terminate:) keyEquivalent:@"q"];
[menuItem setKeyEquivalentModifierMask:NSEventModifierFlagCommand];
menuItem = [[NSMenuItem alloc] init];
[menuItem setSubmenu:appMenu];
[mainMenuBar addItem:menuItem];
appMenu = nil;
[NSApp setMainMenu:mainMenuBar];
}
-(void)dealloc
{
_window = nil;
}
-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Make the application a foreground application (else it won't receive keyboard events)
ProcessSerialNumber psn = {0, kCurrentProcess};
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
// Menu
[self setupMenu];
NSOpenGLPixelFormatAttribute attrs[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFADepthSize, 32,
0
};
NSOpenGLPixelFormat* format = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
ImGuiExampleView* view = [[ImGuiExampleView alloc] initWithFrame:self.window.frame pixelFormat:format];
format = nil;
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6)
[view setWantsBestResolutionOpenGLSurface:YES];
#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
[self.window setContentView:view];
if ([view openGLContext] == nil)
NSLog(@"No OpenGL Context!");
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplOSX_Init();
ImGui_ImplOpenGL2_Init();
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
}
@end
int main(int argc, const char* argv[])
{
@autoreleasepool
{
NSApp = [NSApplication sharedApplication];
ImGuiExampleAppDelegate* delegate = [[ImGuiExampleAppDelegate alloc] init];
[[NSApplication sharedApplication] setDelegate:delegate];
[NSApp run];
}
return NSApplicationMain(argc, argv);
}

View File

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{F90D0333-5FB1-440D-918D-DD39A1B5187E}</ProjectGuid>
<RootNamespace>example_freeglut_opengl2</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GLUT_ROOT_PATH)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;freeglut.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(GLUT_ROOT_PATH)/lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;freeglut.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(GLUT_ROOT_PATH)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;freeglut.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(GLUT_INCLUDE_DIR);..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(GLUT_ROOT_PATH)/lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;freeglut.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_freeglut.cpp" />
<ClCompile Include="..\imgui_impl_opengl2.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_freeglut.h" />
<ClInclude Include="..\imgui_impl_opengl2.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{c336cfe3-f0c4-464c-9ef0-a9e17a7ff222}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_freeglut.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_opengl2.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_freeglut.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_opengl2.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,135 @@
// dear imgui: standalone example application for FreeGLUT + OpenGL2, using legacy fixed pipeline
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
// (Using GLUT or FreeGLUT is not recommended unless you really miss the 90's)
#include "imgui.h"
#include "../imgui_impl_freeglut.h"
#include "../imgui_impl_opengl2.h"
#include <GL/freeglut.h>
#ifdef _MSC_VER
#pragma warning (disable: 4505) // unreferenced local function has been removed
#endif
static bool show_demo_window = true;
static bool show_another_window = false;
static ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
void my_display_code()
{
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
}
void glut_display_func()
{
// Start the Dear ImGui frame
ImGui_ImplOpenGL2_NewFrame();
ImGui_ImplFreeGLUT_NewFrame();
my_display_code();
// Rendering
ImGui::Render();
ImGuiIO& io = ImGui::GetIO();
glViewport(0, 0, (GLsizei)io.DisplaySize.x, (GLsizei)io.DisplaySize.y);
glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
glClear(GL_COLOR_BUFFER_BIT);
//glUseProgram(0); // You may want this if using this code in an OpenGL 3+ context where shaders may be bound, but prefer using the GL3+ code.
ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());
glutSwapBuffers();
glutPostRedisplay();
}
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
int main(int argc, char** argv)
{
// Create GLUT window
glutInit(&argc, argv);
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_MULTISAMPLE);
glutInitWindowSize(1280, 720);
glutCreateWindow("Dear ImGui FreeGLUT+OpenGL2 Example");
// Setup GLUT display function
// We will also call ImGui_ImplFreeGLUT_InstallFuncs() to get all the other functions installed for us,
// otherwise it is possible to install our own functions and call the imgui_impl_freeglut.h functions ourselves.
glutDisplayFunc(glut_display_func);
// Setup Dear ImGui context
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplFreeGLUT_Init();
ImGui_ImplFreeGLUT_InstallFuncs();
ImGui_ImplOpenGL2_Init();
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
glutMainLoop();
// Cleanup
ImGui_ImplOpenGL2_Shutdown();
ImGui_ImplFreeGLUT_Shutdown();
ImGui::DestroyContext();
return 0;
}

View File

@ -0,0 +1,73 @@
#
# Cross Platform Makefile
# Compatible with MSYS2/MINGW, Ubuntu 14.04.1 and Mac OS X
#
# You will need GLFW (http://www.glfw.org):
# Linux:
# apt-get install libglfw-dev
# Mac OS X:
# brew install glfw
# MSYS2:
# pacman -S --noconfirm --needed mingw-w64-x86_64-toolchain mingw-w64-x86_64-glfw
#
#CXX = g++
#CXX = clang++
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 ../../imgui_widgets.cpp
OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES))))
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Linux) #LINUX
ECHO_MESSAGE = "Linux"
LIBS = -lGL `pkg-config --static --libs glfw3`
CXXFLAGS = -I../ -I../../ `pkg-config --cflags glfw3`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(UNAME_S), Darwin) #APPLE
ECHO_MESSAGE = "Mac OS X"
LIBS = -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo
#LIBS += -L/usr/local/lib -lglfw3
LIBS += -L/usr/local/lib -lglfw
CXXFLAGS = -I../ -I../../ -I/usr/local/include
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(findstring MINGW,$(UNAME_S)),MINGW)
ECHO_MESSAGE = "Windows"
LIBS = -lglfw3 -lgdi32 -lopengl32 -limm32
CXXFLAGS = -I../ -I../../ -I../libs/gl3w `pkg-config --cflags glfw3`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
%.o:%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
all: $(EXE)
@echo Build complete for $(ECHO_MESSAGE)
$(EXE): $(OBJS)
$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS)
clean:
rm -f $(EXE) $(OBJS)

View File

@ -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\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

View File

@ -20,7 +20,7 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{9CDA7840-B7A5-496D-A527-E95571496D18}</ProjectGuid>
<RootNamespace>opengl_example</RootNamespace>
<RootNamespace>example_glfw_opengl2</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@ -85,7 +85,7 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -99,7 +99,7 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -115,7 +115,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -134,7 +135,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -149,13 +151,23 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="imgui_impl_glfw.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_glfw.cpp" />
<ClCompile Include="..\imgui_impl_opengl2.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="imgui_impl_glfw.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_glfw.h" />
<ClInclude Include="..\imgui_impl_opengl2.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -16,9 +16,21 @@
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_impl_glfw.cpp">
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_glfw.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_opengl2.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
@ -27,8 +39,20 @@
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="imgui_impl_glfw.h">
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_glfw.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_opengl2.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,148 @@
// dear imgui: standalone example application for GLFW + OpenGL2, using legacy fixed pipeline
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
// (GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.)
// **DO NOT USE THIS CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)**
// **Prefer using the code in the example_glfw_opengl2/ folder**
// See imgui_impl_glfw.cpp for details.
#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl2.h"
#include <stdio.h>
#include <GLFW/glfw3.h>
// [Win32] Our example includes a copy of glfw3.lib pre-compiled with VS2010 to maximize ease of testing and compatibility with old VS compilers.
// To link with VS2010-era libraries, VS2015+ requires linking with legacy_stdio_definitions.lib, which we do using this pragma.
// Your own project should not be affected, as you are likely to link with a newer binary of GLFW that is adequate for your version of Visual Studio.
#if defined(_MSC_VER) && (_MSC_VER >= 1900) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS)
#pragma comment(lib, "legacy_stdio_definitions")
#endif
static void glfw_error_callback(int error, const char* description)
{
fprintf(stderr, "Glfw Error %d: %s\n", error, description);
}
int main(int, char**)
{
// Setup window
glfwSetErrorCallback(glfw_error_callback);
if (!glfwInit())
return 1;
GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL2 example", NULL, NULL);
if (window == NULL)
return 1;
glfwMakeContextCurrent(window);
glfwSwapInterval(1); // Enable vsync
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplGlfw_InitForOpenGL(window, true);
ImGui_ImplOpenGL2_Init();
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
while (!glfwWindowShouldClose(window))
{
// Poll and handle events (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
glfwPollEvents();
// Start the Dear ImGui frame
ImGui_ImplOpenGL2_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
int display_w, display_h;
glfwGetFramebufferSize(window, &display_w, &display_h);
glViewport(0, 0, display_w, display_h);
glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
glClear(GL_COLOR_BUFFER_BIT);
//glUseProgram(0); // You may want this if using this code in an OpenGL 3+ context where shaders may be bound, but prefer using the GL3+ code.
ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());
glfwMakeContextCurrent(window);
glfwSwapBuffers(window);
}
// Cleanup
ImGui_ImplOpenGL2_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}

View File

@ -0,0 +1,98 @@
#
# Cross Platform Makefile
# Compatible with MSYS2/MINGW, Ubuntu 14.04.1 and Mac OS X
#
# You will need GLFW (http://www.glfw.org):
# Linux:
# apt-get install libglfw-dev
# Mac OS X:
# brew install glfw
# MSYS2:
# pacman -S --noconfirm --needed mingw-w64-x86_64-toolchain mingw-w64-x86_64-glfw
#
#CXX = g++
#CXX = clang++
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 ../../imgui_widgets.cpp
OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES))))
UNAME_S := $(shell uname -s)
##---------------------------------------------------------------------
## OPENGL LOADER
##---------------------------------------------------------------------
## Using OpenGL loader: gl3w [default]
SOURCES += ../libs/gl3w/GL/gl3w.c
CXXFLAGS = -I../libs/gl3w
## Using OpenGL loader: glew
## (This assumes a system-wide installation)
# CXXFLAGS = -lGLEW -DIMGUI_IMPL_OPENGL_LOADER_GLEW
## Using OpenGL loader: glad
## (You'll also need to change the rule at line ~77 of this Makefile to compile/link glad.c/.o)
# SOURCES += ../libs/glad/src/glad.c
# CXXFLAGS = -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD
##---------------------------------------------------------------------
## BUILD FLAGS PER PLATFORM
##---------------------------------------------------------------------
ifeq ($(UNAME_S), Linux) #LINUX
ECHO_MESSAGE = "Linux"
LIBS = -lGL `pkg-config --static --libs glfw3`
CXXFLAGS += -I../ -I../../ `pkg-config --cflags glfw3`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(UNAME_S), Darwin) #APPLE
ECHO_MESSAGE = "Mac OS X"
LIBS = -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo
#LIBS += -L/usr/local/lib -lglfw3
LIBS += -L/usr/local/lib -lglfw
CXXFLAGS += -I../ -I../../ -I/usr/local/include
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(findstring MINGW,$(UNAME_S)),MINGW)
ECHO_MESSAGE = "Windows"
LIBS = -lglfw3 -lgdi32 -lopengl32 -limm32
CXXFLAGS += -I../ -I../../ `pkg-config --cflags glfw3`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
##---------------------------------------------------------------------
## BUILD RULES
##---------------------------------------------------------------------
%.o:%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../libs/gl3w/GL/%.c
# %.o:../libs/glad/src/%.c
$(CC) $(CFLAGS) -c -o $@ $<
all: $(EXE)
@echo Build complete for $(ECHO_MESSAGE)
$(EXE): $(OBJS)
$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS)
clean:
rm -f $(EXE) $(OBJS)

View File

@ -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\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

View File

@ -20,7 +20,7 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{4a1fb5ea-22f5-42a8-ab92-1d2df5d47fb9}</ProjectGuid>
<RootNamespace>opengl3_example</RootNamespace>
<RootNamespace>example_glfw_opengl3</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@ -85,7 +85,7 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -99,7 +99,7 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -115,7 +115,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -134,7 +135,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;$(SolutionDir)\libs\glfw\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -149,16 +151,26 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_glfw.cpp" />
<ClCompile Include="..\imgui_impl_opengl3.cpp" />
<ClCompile Include="..\libs\gl3w\GL\gl3w.c" />
<ClCompile Include="imgui_impl_glfw_gl3.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_glfw.h" />
<ClInclude Include="..\imgui_impl_opengl3.h" />
<ClInclude Include="..\libs\gl3w\GL\gl3w.h" />
<ClInclude Include="..\libs\gl3w\GL\glcorearb.h" />
<ClInclude Include="imgui_impl_glfw_gl3.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -19,12 +19,24 @@
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_impl_glfw_gl3.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\libs\gl3w\GL\gl3w.c">
<Filter>gl3w</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_glfw.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_opengl3.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
@ -33,14 +45,26 @@
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="imgui_impl_glfw_gl3.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\libs\gl3w\GL\gl3w.h">
<Filter>gl3w</Filter>
</ClInclude>
<ClInclude Include="..\libs\gl3w\GL\glcorearb.h">
<Filter>gl3w</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_glfw.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_opengl3.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,194 @@
// dear imgui: standalone example application for GLFW + OpenGL 3, using programmable pipeline
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
// (GLFW is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.)
#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h"
#include <stdio.h>
// About OpenGL function loaders: modern OpenGL doesn't have a standard header file and requires individual function pointers to be loaded manually.
// Helper libraries are often used for this purpose! Here we are supporting a few common ones: gl3w, glew, glad.
// You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own.
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
#include <GL/gl3w.h> // Initialize with gl3wInit()
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
#include <GL/glew.h> // Initialize with glewInit()
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
#include <glad/glad.h> // Initialize with gladLoadGL()
#else
#include IMGUI_IMPL_OPENGL_LOADER_CUSTOM
#endif
// Include glfw3.h after our OpenGL definitions
#include <GLFW/glfw3.h>
// [Win32] Our example includes a copy of glfw3.lib pre-compiled with VS2010 to maximize ease of testing and compatibility with old VS compilers.
// To link with VS2010-era libraries, VS2015+ requires linking with legacy_stdio_definitions.lib, which we do using this pragma.
// Your own project should not be affected, as you are likely to link with a newer binary of GLFW that is adequate for your version of Visual Studio.
#if defined(_MSC_VER) && (_MSC_VER >= 1900) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS)
#pragma comment(lib, "legacy_stdio_definitions")
#endif
static void glfw_error_callback(int error, const char* description)
{
fprintf(stderr, "Glfw Error %d: %s\n", error, description);
}
int main(int, char**)
{
// Setup window
glfwSetErrorCallback(glfw_error_callback);
if (!glfwInit())
return 1;
// Decide GL+GLSL versions
#if __APPLE__
// GL 3.2 + GLSL 150
const char* glsl_version = "#version 150";
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac
#else
// GL 3.0 + GLSL 130
const char* glsl_version = "#version 130";
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
//glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // 3.0+ only
#endif
// Create window with graphics context
GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+OpenGL3 example", NULL, NULL);
if (window == NULL)
return 1;
glfwMakeContextCurrent(window);
glfwSwapInterval(1); // Enable vsync
// Initialize OpenGL loader
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
bool err = gl3wInit() != 0;
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
bool err = glewInit() != GLEW_OK;
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
bool err = gladLoadGL() == 0;
#else
bool err = false; // If you use IMGUI_IMPL_OPENGL_LOADER_CUSTOM, your loader is likely to requires some form of initialization.
#endif
if (err)
{
fprintf(stderr, "Failed to initialize OpenGL loader!\n");
return 1;
}
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplGlfw_InitForOpenGL(window, true);
ImGui_ImplOpenGL3_Init(glsl_version);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
while (!glfwWindowShouldClose(window))
{
// Poll and handle events (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
glfwPollEvents();
// Start the Dear ImGui frame
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
int display_w, display_h;
glfwMakeContextCurrent(window);
glfwGetFramebufferSize(window, &display_w, &display_h);
glViewport(0, 0, display_w, display_h);
glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
glClear(GL_COLOR_BUFFER_BIT);
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
glfwMakeContextCurrent(window);
glfwSwapBuffers(window);
}
// Cleanup
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}

View File

@ -0,0 +1,36 @@
cmake_minimum_required(VERSION 2.8)
project(imgui_example_glfw_vulkan C CXX)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
endif()
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DVK_PROTOTYPES")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DVK_PROTOTYPES")
# GLFW
set(GLFW_DIR ../../../glfw) # Set this to point to an up-to-date GLFW repo
option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" OFF)
option(GLFW_BUILD_TESTS "Build the GLFW test programs" OFF)
option(GLFW_BUILD_DOCS "Build the GLFW documentation" OFF)
option(GLFW_INSTALL "Generate installation target" OFF)
option(GLFW_DOCUMENT_INTERNALS "Include internals in documentation" OFF)
add_subdirectory(${GLFW_DIR} binary_dir EXCLUDE_FROM_ALL)
include_directories(${GLFW_DIR}/include)
# ImGui
set(IMGUI_DIR ../../)
include_directories(${IMGUI_DIR} ..)
# Libraries
find_library(VULKAN_LIBRARY
NAMES vulkan vulkan-1)
set(LIBRARIES "glfw;${VULKAN_LIBRARY}")
# Use vulkan headers from glfw:
include_directories(${GLFW_DIR}/deps)
file(GLOB sources *.cpp)
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 ${IMGUI_DIR}/imgui_widgets.cpp)
target_link_libraries(example_glfw_vulkan ${LIBRARIES})

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{57E2DF5A-6FC8-45BB-99DD-91A18C646E80}</ProjectGuid>
<RootNamespace>example_glfw_vulkan</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib32;$(SolutionDir)\libs\glfw\lib-vc2010-32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib;$(SolutionDir)\libs\glfw\lib-vc2010-64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib32;$(SolutionDir)\libs\glfw\lib-vc2010-32;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;$(SolutionDir)\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib;$(SolutionDir)\libs\glfw\lib-vc2010-64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_glfw.cpp" />
<ClCompile Include="..\imgui_impl_vulkan.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_glfw.h" />
<ClInclude Include="..\imgui_impl_vulkan.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{20b90ce4-7fcb-4731-b9a0-075f875de82d}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_glfw.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_vulkan.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_glfw.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_vulkan.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,3 @@
#!/bin/bash
glslangValidator -V -x -o glsl_shader.frag.u32 glsl_shader.frag
glslangValidator -V -x -o glsl_shader.vert.u32 glsl_shader.vert

View File

@ -0,0 +1,14 @@
#version 450 core
layout(location = 0) out vec4 fColor;
layout(set=0, binding=0) uniform sampler2D sTexture;
layout(location = 0) in struct{
vec4 Color;
vec2 UV;
} In;
void main()
{
fColor = In.Color * texture(sTexture, In.UV.st);
}

View File

@ -0,0 +1,25 @@
#version 450 core
layout(location = 0) in vec2 aPos;
layout(location = 1) in vec2 aUV;
layout(location = 2) in vec4 aColor;
layout(push_constant) uniform uPushConstant{
vec2 uScale;
vec2 uTranslate;
} pc;
out gl_PerVertex{
vec4 gl_Position;
};
layout(location = 0) out struct{
vec4 Color;
vec2 UV;
} Out;
void main()
{
Out.Color = aColor;
Out.UV = aUV;
gl_Position = vec4(aPos*pc.uScale+pc.uTranslate, 0, 1);
}

View File

@ -0,0 +1,504 @@
// dear imgui: standalone example application for Glfw + Vulkan
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
#include "imgui.h"
#include "imgui_impl_glfw.h"
#include "imgui_impl_vulkan.h"
#include <stdio.h> // printf, fprintf
#include <stdlib.h> // abort
#define GLFW_INCLUDE_NONE
#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>
#include <vulkan/vulkan.h>
// [Win32] Our example includes a copy of glfw3.lib pre-compiled with VS2010 to maximize ease of testing and compatibility with old VS compilers.
// To link with VS2010-era libraries, VS2015+ requires linking with legacy_stdio_definitions.lib, which we do using this pragma.
// Your own project should not be affected, as you are likely to link with a newer binary of GLFW that is adequate for your version of Visual Studio.
#if defined(_MSC_VER) && (_MSC_VER >= 1900) && !defined(IMGUI_DISABLE_WIN32_FUNCTIONS)
#pragma comment(lib, "legacy_stdio_definitions")
#endif
//#define IMGUI_UNLIMITED_FRAME_RATE
#ifdef _DEBUG
#define IMGUI_VULKAN_DEBUG_REPORT
#endif
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_WindowData g_WindowData;
static bool g_ResizeWanted = false;
static int g_ResizeWidth = 0, g_ResizeHeight = 0;
static void check_vk_result(VkResult err)
{
if (err == 0) return;
printf("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] 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 create_info = {};
create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
create_info.enabledExtensionCount = extensions_count;
create_info.ppEnabledExtensionNames = extensions;
#ifdef IMGUI_VULKAN_DEBUG_REPORT
// Enabling multiple validation layers grouped as LunarG standard validation
const char* layers[] = { "VK_LAYER_LUNARG_standard_validation" };
create_info.enabledLayerCount = 1;
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";
create_info.enabledExtensionCount = extensions_count + 1;
create_info.ppEnabledExtensionNames = extensions_ext;
// Create Vulkan Instance
err = vkCreateInstance(&create_info, g_Allocator, &g_Instance);
check_vk_result(err);
free(extensions_ext);
// Get the function pointer (required for any extensions)
auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT");
IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL);
// Setup the debug report callback
VkDebugReportCallbackCreateInfoEXT debug_report_ci = {};
debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
debug_report_ci.pfnCallback = debug_report;
debug_report_ci.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(&create_info, g_Allocator, &g_Instance);
check_vk_result(err);
#endif
}
// Select GPU
{
uint32_t gpu_count;
err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL);
check_vk_result(err);
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, you should find the best fit GPU for your purpose
// e.g. VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU if available, or with the greatest memory available, etc.
// for sake of simplicity we'll just take the first one, assuming it has a graphics queue family.
g_PhysicalDevice = gpus[0];
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 != -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] = {};
queue_info[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queue_info[0].queueFamilyIndex = g_QueueFamily;
queue_info[0].queueCount = 1;
queue_info[0].pQueuePriorities = queue_priority;
VkDeviceCreateInfo create_info = {};
create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
create_info.queueCreateInfoCount = sizeof(queue_info) / sizeof(queue_info[0]);
create_info.pQueueCreateInfos = queue_info;
create_info.enabledExtensionCount = device_extension_count;
create_info.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 = {};
pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
pool_info.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;
pool_info.maxSets = 1000 * IM_ARRAYSIZE(pool_sizes);
pool_info.poolSizeCount = (uint32_t)IM_ARRAYSIZE(pool_sizes);
pool_info.pPoolSizes = pool_sizes;
err = vkCreateDescriptorPool(g_Device, &pool_info, g_Allocator, &g_DescriptorPool);
check_vk_result(err);
}
}
static void SetupVulkanWindowData(ImGui_ImplVulkanH_WindowData* 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));
//printf("[vulkan] Selected PresentMode = %d\n", wd->PresentMode);
// Create SwapChain, RenderPass, Framebuffer, etc.
ImGui_ImplVulkanH_CreateWindowDataCommandBuffers(g_PhysicalDevice, g_Device, g_QueueFamily, wd, g_Allocator);
ImGui_ImplVulkanH_CreateWindowDataSwapChainAndFramebuffer(g_PhysicalDevice, g_Device, wd, g_Allocator, width, height);
}
static void CleanupVulkan()
{
ImGui_ImplVulkanH_WindowData* wd = &g_WindowData;
ImGui_ImplVulkanH_DestroyWindowData(g_Instance, g_Device, wd, g_Allocator);
vkDestroyDescriptorPool(g_Device, g_DescriptorPool, g_Allocator);
#ifdef IMGUI_VULKAN_DEBUG_REPORT
// Remove the debug report callback
auto 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 FrameRender(ImGui_ImplVulkanH_WindowData* wd)
{
VkResult err;
VkSemaphore& image_acquired_semaphore = wd->Frames[wd->FrameIndex].ImageAcquiredSemaphore;
err = vkAcquireNextImageKHR(g_Device, wd->Swapchain, UINT64_MAX, image_acquired_semaphore, VK_NULL_HANDLE, &wd->FrameIndex);
check_vk_result(err);
ImGui_ImplVulkanH_FrameData* 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 = {};
info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
info.flags |= VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
err = vkBeginCommandBuffer(fd->CommandBuffer, &info);
check_vk_result(err);
}
{
VkRenderPassBeginInfo info = {};
info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
info.renderPass = wd->RenderPass;
info.framebuffer = wd->Framebuffer[wd->FrameIndex];
info.renderArea.extent.width = wd->Width;
info.renderArea.extent.height = wd->Height;
info.clearValueCount = 1;
info.pClearValues = &wd->ClearValue;
vkCmdBeginRenderPass(fd->CommandBuffer, &info, VK_SUBPASS_CONTENTS_INLINE);
}
// Record Imgui Draw Data and draw funcs into command buffer
ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), fd->CommandBuffer);
// Submit command buffer
vkCmdEndRenderPass(fd->CommandBuffer);
{
VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
VkSubmitInfo info = {};
info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
info.waitSemaphoreCount = 1;
info.pWaitSemaphores = &image_acquired_semaphore;
info.pWaitDstStageMask = &wait_stage;
info.commandBufferCount = 1;
info.pCommandBuffers = &fd->CommandBuffer;
info.signalSemaphoreCount = 1;
info.pSignalSemaphores = &fd->RenderCompleteSemaphore;
err = vkEndCommandBuffer(fd->CommandBuffer);
check_vk_result(err);
err = vkQueueSubmit(g_Queue, 1, &info, fd->Fence);
check_vk_result(err);
}
}
static void FramePresent(ImGui_ImplVulkanH_WindowData* wd)
{
ImGui_ImplVulkanH_FrameData* fd = &wd->Frames[wd->FrameIndex];
VkPresentInfoKHR info = {};
info.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
info.waitSemaphoreCount = 1;
info.pWaitSemaphores = &fd->RenderCompleteSemaphore;
info.swapchainCount = 1;
info.pSwapchains = &wd->Swapchain;
info.pImageIndices = &wd->FrameIndex;
VkResult err = vkQueuePresentKHR(g_Queue, &info);
check_vk_result(err);
}
static void glfw_error_callback(int error, const char* description)
{
fprintf(stderr, "Glfw Error %d: %s\n", error, description);
}
static void glfw_resize_callback(GLFWwindow*, int w, int h)
{
g_ResizeWanted = true;
g_ResizeWidth = w;
g_ResizeHeight = h;
}
int main(int, char**)
{
// Setup window
glfwSetErrorCallback(glfw_error_callback);
if (!glfwInit())
return 1;
glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
GLFWwindow* window = glfwCreateWindow(1280, 720, "Dear ImGui GLFW+Vulkan example", NULL, NULL);
// Setup Vulkan
if (!glfwVulkanSupported())
{
printf("GLFW: Vulkan Not Supported\n");
return 1;
}
uint32_t extensions_count = 0;
const char** extensions = glfwGetRequiredInstanceExtensions(&extensions_count);
SetupVulkan(extensions, extensions_count);
// Create Window Surface
VkSurfaceKHR surface;
VkResult err = glfwCreateWindowSurface(g_Instance, window, g_Allocator, &surface);
check_vk_result(err);
// Create Framebuffers
int w, h;
glfwGetFramebufferSize(window, &w, &h);
glfwSetFramebufferSizeCallback(window, glfw_resize_callback);
ImGui_ImplVulkanH_WindowData* wd = &g_WindowData;
SetupVulkanWindowData(wd, surface, w, h);
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplGlfw_InitForVulkan(window, true);
ImGui_ImplVulkan_InitInfo init_info = {};
init_info.Instance = g_Instance;
init_info.PhysicalDevice = g_PhysicalDevice;
init_info.Device = g_Device;
init_info.QueueFamily = g_QueueFamily;
init_info.Queue = g_Queue;
init_info.PipelineCache = g_PipelineCache;
init_info.DescriptorPool = g_DescriptorPool;
init_info.Allocator = g_Allocator;
init_info.CheckVkResultFn = check_vk_result;
ImGui_ImplVulkan_Init(&init_info, wd->RenderPass);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != 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 = {};
begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
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 = {};
end_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
end_info.commandBufferCount = 1;
end_info.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_InvalidateFontUploadObjects();
}
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
while (!glfwWindowShouldClose(window))
{
// Poll and handle events (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
glfwPollEvents();
if (g_ResizeWanted)
{
ImGui_ImplVulkanH_CreateWindowDataSwapChainAndFramebuffer(g_PhysicalDevice, g_Device, &g_WindowData, g_Allocator, g_ResizeWidth, g_ResizeHeight);
g_ResizeWanted = false;
}
// Start the Dear ImGui frame
ImGui_ImplVulkan_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
memcpy(&wd->ClearValue.color.float32[0], &clear_color, 4 * sizeof(float));
FrameRender(wd);
FramePresent(wd);
}
// Cleanup
err = vkDeviceWaitIdle(g_Device);
check_vk_result(err);
ImGui_ImplVulkan_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
CleanupVulkan();
glfwDestroyWindow(window);
glfwTerminate();
return 0;
}

View File

@ -0,0 +1,32 @@
# This file is for configuration settings for your
# application.
#
# The syntax is similar to windows .ini files ie
#
# [GroupName]
# Setting = Value
#
# Which can be read by your application using
# e.g s3eConfigGetString("GroupName", "Setting", string)
#
# All settings must be documented in .config.txt files.
# New settings specific to this application should be
# documented in app.config.txt
#
# Some conditional operations are also permitted, see the
# S3E documentation for details.
[S3E]
MemSize=6000000
MemSizeDebug=6000000
DispFixRot=FixedLandscape
# emulate iphone 5 resolution, change these settings to emulate other display resolution
WinWidth=1136
WinHeight=640
[GX]
DataCacheSize=131070
[Util]
#MemoryBreakpoint=1282

View File

@ -0,0 +1,122 @@
// dear imgui: standalone example application for Marmalade
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
// Copyright (C) 2015 by Giovanni Zito
// This file is part of Dear ImGui
#include "imgui.h"
#include "imgui_impl_marmalade.h"
#include <stdio.h>
#include <s3eKeyboard.h>
#include <s3ePointer.h>
#include <IwGx.h>
int main(int, char**)
{
IwGxInit();
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_Marmalade_Init(true);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
while (true)
{
if (s3eDeviceCheckQuitRequest())
break;
// Poll and handle inputs
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
s3eKeyboardUpdate();
s3ePointerUpdate();
// Start the Dear ImGui frame
ImGui_Marmalade_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
IwGxSetColClear(clear_color.x * 255, clear_color.y * 255, clear_color.z * 255, clear_color.w * 255);
IwGxClear();
ImGui_Marmalade_RenderDrawData(ImGui::GetDrawData());
IwGxSwapBuffers();
s3eDeviceYield(0);
}
// Cleanup
ImGui_Marmalade_Shutdown();
ImGui::DestroyContext();
IwGxTerminate();
return 0;
}

View File

@ -0,0 +1,46 @@
#!/usr/bin/env mkb
# ImGui - standalone example application for Marmalade
# Copyright (C) 2015 by Giovanni Zito
# This file is part of ImGui
# https://github.com/ocornut/imgui
define IMGUI_DISABLE_INCLUDE_IMCONFIG_H
define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS
define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS
define _snprintf=snprintf
options
{
optimise-speed=1
}
includepaths
{
..
../..
}
subprojects
{
iwgx
}
files
{
(.)
["imgui"]
../../imgui.cpp
../../imgui_demo.cpp
../../imgui_draw.cpp
../../imgui_widgets.cpp
../../imconfig.h
../../imgui.h
../../imgui_internal.h
["imgui","Marmalade binding"]
../imgui_impl_marmalade.h
../imgui_impl_marmalade.cpp
main.cpp
}

View File

@ -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 ..\.. *.cpp ..\..\*.cpp /FeDebug/example_null.exe /FoDebug/ /link gdi32.lib shell32.lib

View File

@ -0,0 +1,35 @@
// dear imgui: null/dummy example application (compile and link imgui with no inputs, no outputs)
#include "imgui.h"
#include <stdio.h>
int main(int, char**)
{
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
// Build atlas
unsigned char* tex_pixels = NULL;
int tex_w, tex_h;
io.Fonts->GetTexDataAsRGBA32(&tex_pixels, &tex_w, &tex_h);
for (int n = 0; n < 50; n++)
{
printf("NewFrame() %d\n", n);
io.DisplaySize = ImVec2(1920, 1080);
io.DeltaTime = 1.0f / 60.0f;
ImGui::NewFrame();
static float f = 0.0f;
ImGui::Text("Hello, world!");
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate);
ImGui::ShowDemoWindow(NULL);
ImGui::Render();
}
printf("DestroyContext()\n");
ImGui::DestroyContext();
return 0;
}

View File

@ -0,0 +1,69 @@
#
# Cross Platform Makefile
# Compatible with MSYS2/MINGW, Ubuntu 14.04.1 and Mac OS X
#
# You will need SDL2 (http://www.libsdl.org):
# Linux:
# apt-get install libsdl2-dev
# Mac OS X:
# brew install sdl2
# MSYS2:
# pacman -S mingw-w64-i686-SDL
#
#CXX = g++
#CXX = clang++
EXE = example_sdl_opengl2
SOURCES = main.cpp ../imgui_impl_sdl.cpp ../imgui_impl_opengl2.cpp
SOURCES += ../../imgui.cpp ../../imgui_demo.cpp ../../imgui_draw.cpp ../../imgui_widgets.cpp
OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES))))
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Linux) #LINUX
ECHO_MESSAGE = "Linux"
LIBS = -lGL -ldl `sdl2-config --libs`
CXXFLAGS = -I ../ -I../../ `sdl2-config --cflags`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(UNAME_S), Darwin) #APPLE
ECHO_MESSAGE = "Mac OS X"
LIBS = -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo `sdl2-config --libs`
CXXFLAGS = -I ../ -I../../ -I/usr/local/include `sdl2-config --cflags`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(findstring MINGW,$(UNAME_S)),MINGW)
ECHO_MESSAGE = "Windows"
LIBS = -lgdi32 -lopengl32 -limm32 `pkg-config --static --libs sdl2`
CXXFLAGS = -I ../ -I../../ `pkg-config --cflags sdl2`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
%.o:%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
all: $(EXE)
@echo Build complete for $(ECHO_MESSAGE)
$(EXE): $(OBJS)
$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS)
clean:
rm -f $(EXE) $(OBJS)

View File

@ -0,0 +1,25 @@
# How to Build
- On Windows with Visual Studio's CLI
```
set SDL2_DIR=path_to_your_sdl2_folder
cl /Zi /MD /I.. /I..\.. /I%SDL2_DIR%\include main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl2.cpp ..\..\imgui*.cpp /FeDebug/example_sdl_opengl2.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console
# ^^ include paths ^^ source files ^^ output exe ^^ output dir ^^ libraries
# or for 64-bit:
cl /Zi /MD /I.. /I..\.. /I%SDL2_DIR%\include main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl2.cpp ..\..\imgui*.cpp /FeDebug/example_sdl_opengl2.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x64 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console
```
- On Linux and similar Unixes
```
c++ `sdl2-config --cflags` -I .. -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 .. -I ../.. main.cpp ../imgui_impl_sdl.cpp ../imgui_impl_opengl2.cpp ../../imgui*.cpp `sdl2-config --libs` -framework OpenGl
```

View File

@ -0,0 +1,8 @@
@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler.
set OUT_DIR=Debug
set OUT_EXE=example_sdl_opengl2.exe
set INCLUDES=/I.. /I..\.. /I%SDL2_DIR%\include
set SOURCES=main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl2.cpp ..\..\imgui*.cpp
set LIBS=/libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib
mkdir %OUT_DIR%
cl /nologo /Zi /MD %INCLUDES% %SOURCES% /Fe%OUT_DIR%/%OUT_DIR%.exe /Fo%OUT_DIR%/ /link %LIBS% /subsystem:console

View File

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{94E991D0-790A-4DAF-B442-AAADE3233C75}</ProjectGuid>
<RootNamespace>example_sdl_opengl2</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_opengl2.cpp" />
<ClCompile Include="..\imgui_impl_sdl.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_opengl2.h" />
<ClInclude Include="..\imgui_impl_sdl.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{20b90ce4-7fcb-4731-b9a0-075f875de82d}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_sdl.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_opengl2.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_opengl2.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_sdl.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,149 @@
// dear imgui: standalone example application for SDL2 + OpenGL
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
// (SDL is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.)
// **DO NOT USE THIS CODE IF YOUR CODE/ENGINE IS USING MODERN OPENGL (SHADERS, VBO, VAO, etc.)**
// **Prefer using the code in the example_sdl_opengl3/ folder**
// See imgui_impl_sdl.cpp for details.
#include "imgui.h"
#include "imgui_impl_sdl.h"
#include "imgui_impl_opengl2.h"
#include <stdio.h>
#include <SDL.h>
#include <SDL_opengl.h>
int main(int, char**)
{
// Setup SDL
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0)
{
printf("Error: %s\n", SDL_GetError());
return -1;
}
// Setup window
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_DisplayMode current;
SDL_GetCurrentDisplayMode(0, &current);
SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+OpenGL example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
SDL_GLContext gl_context = SDL_GL_CreateContext(window);
SDL_GL_SetSwapInterval(1); // Enable vsync
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplSDL2_InitForOpenGL(window, gl_context);
ImGui_ImplOpenGL2_Init();
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
bool done = false;
while (!done)
{
// Poll and handle events (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
SDL_Event event;
while (SDL_PollEvent(&event))
{
ImGui_ImplSDL2_ProcessEvent(&event);
if (event.type == SDL_QUIT)
done = true;
}
// Start the Dear ImGui frame
ImGui_ImplOpenGL2_NewFrame();
ImGui_ImplSDL2_NewFrame(window);
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);
glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
glClear(GL_COLOR_BUFFER_BIT);
//glUseProgram(0); // You may want this if using this code in an OpenGL 3+ context where shaders may be bound
ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData());
SDL_GL_SwapWindow(window);
}
// Cleanup
ImGui_ImplOpenGL2_Shutdown();
ImGui_ImplSDL2_Shutdown();
ImGui::DestroyContext();
SDL_GL_DeleteContext(gl_context);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

View File

@ -0,0 +1,95 @@
#
# Cross Platform Makefile
# Compatible with MSYS2/MINGW, Ubuntu 14.04.1 and Mac OS X
#
# You will need SDL2 (http://www.libsdl.org):
# Linux:
# apt-get install libsdl2-dev
# Mac OS X:
# brew install sdl2
# MSYS2:
# pacman -S mingw-w64-i686-SDL
#
#CXX = g++
#CXX = clang++
EXE = example_sdl_opengl3
SOURCES = main.cpp
SOURCES += ../imgui_impl_sdl.cpp ../imgui_impl_opengl3.cpp
SOURCES += ../../imgui.cpp ../../imgui_demo.cpp ../../imgui_draw.cpp ../../imgui_widgets.cpp
OBJS = $(addsuffix .o, $(basename $(notdir $(SOURCES))))
UNAME_S := $(shell uname -s)
##---------------------------------------------------------------------
## OPENGL LOADER
##---------------------------------------------------------------------
## Using OpenGL loader: gl3w [default]
SOURCES += ../libs/gl3w/GL/gl3w.c
CXXFLAGS = -I../libs/gl3w
## Using OpenGL loader: glew
## (This assumes a system-wide installation)
# CXXFLAGS = -lGLEW -DIMGUI_IMPL_OPENGL_LOADER_GLEW
## Using OpenGL loader: glad
## (You'll also need to change the rule at line ~77 of this Makefile to compile/link glad.c/.o)
# SOURCES += ../libs/glad/src/glad.c
# CXXFLAGS = -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD
##---------------------------------------------------------------------
## BUILD FLAGS PER PLATFORM
##---------------------------------------------------------------------
ifeq ($(UNAME_S), Linux) #LINUX
ECHO_MESSAGE = "Linux"
LIBS = -lGL -ldl `sdl2-config --libs`
CXXFLAGS = -I../ -I../../ -I../libs/gl3w `sdl2-config --cflags`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(UNAME_S), Darwin) #APPLE
ECHO_MESSAGE = "Mac OS X"
LIBS = -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo `sdl2-config --libs`
CXXFLAGS = -I../ -I../../ -I../libs/gl3w -I/usr/local/include `sdl2-config --cflags`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
ifeq ($(findstring MINGW,$(UNAME_S)),MINGW)
ECHO_MESSAGE = "Windows"
LIBS = -lgdi32 -lopengl32 -limm32 `pkg-config --static --libs sdl2`
CXXFLAGS = -I../ -I../../ -I../libs/gl3w `pkg-config --cflags sdl2`
CXXFLAGS += -Wall -Wformat
CFLAGS = $(CXXFLAGS)
endif
##---------------------------------------------------------------------
## BUILD RULES
##---------------------------------------------------------------------
%.o:%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../../%.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<
%.o:../libs/gl3w/GL/%.c
$(CC) $(CFLAGS) -c -o $@ $<
all: $(EXE)
@echo Build complete for $(ECHO_MESSAGE)
$(EXE): $(OBJS)
$(CXX) -o $@ $^ $(CXXFLAGS) $(LIBS)
clean:
rm -f $(EXE) $(OBJS)

View File

@ -0,0 +1,25 @@
# How to Build
- On Windows with Visual Studio's CLI
```
set SDL2_DIR=path_to_your_sdl2_folder
cl /Zi /MD /I.. /I..\.. /I%SDL2_DIR%\include /I..\libs\gl3w main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl3.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
# ^^ include paths ^^ source files ^^ output exe ^^ output dir ^^ libraries
# or for 64-bit:
cl /Zi /MD /I.. /I..\.. /I%SDL2_DIR%\include /I..\libs\gl3w main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c /FeDebug/example_sdl_opengl3.exe /FoDebug/ /link /libpath:%SDL2_DIR%\lib\x64 SDL2.lib SDL2main.lib opengl32.lib /subsystem:console
```
- On Linux and similar Unixes
```
c++ `sdl2-config --cflags` -I .. -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 ../.. -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
```

View File

@ -0,0 +1,8 @@
@REM Build for Visual Studio compiler. Run your copy of vcvars32.bat or vcvarsall.bat to setup command-line compiler.
set OUT_DIR=Debug
set OUT_EXE=example_sdl_opengl3.exe
set INCLUDES=/I.. /I..\.. /I%SDL2_DIR%\include /I..\libs\gl3w
set SOURCES=main.cpp ..\imgui_impl_sdl.cpp ..\imgui_impl_opengl3.cpp ..\..\imgui*.cpp ..\libs\gl3w\GL\gl3w.c
set LIBS=/libpath:%SDL2_DIR%\lib\x86 SDL2.lib SDL2main.lib opengl32.lib
mkdir %OUT_DIR%
cl /nologo /Zi /MD %INCLUDES% %SOURCES% /Fe%OUT_DIR%/%OUT_EXE%.exe /Fo%OUT_DIR%/ /link %LIBS% /subsystem:console

View File

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{BBAEB705-1669-40F3-8567-04CF6A991F4C}</ProjectGuid>
<RootNamespace>example_sdl_opengl3</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%SDL2_DIR%\include;$(SolutionDir)\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%SDL2_DIR%\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>opengl32.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_opengl3.cpp" />
<ClCompile Include="..\imgui_impl_sdl.cpp" />
<ClCompile Include="..\libs\gl3w\GL\gl3w.c" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_opengl3.h" />
<ClInclude Include="..\imgui_impl_sdl.h" />
<ClInclude Include="..\libs\gl3w\GL\gl3w.h" />
<ClInclude Include="..\libs\gl3w\GL\glcorearb.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{20b90ce4-7fcb-4731-b9a0-075f875de82d}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="gl3w">
<UniqueIdentifier>{f9997b32-5479-4756-9ffc-77793ad3764f}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\libs\gl3w\GL\gl3w.c">
<Filter>gl3w</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_opengl3.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_sdl.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\libs\gl3w\GL\gl3w.h">
<Filter>gl3w</Filter>
</ClInclude>
<ClInclude Include="..\libs\gl3w\GL\glcorearb.h">
<Filter>gl3w</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_opengl3.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_sdl.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,191 @@
// dear imgui: standalone example application for SDL2 + OpenGL
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
// (SDL is a cross-platform general purpose library for handling windows, inputs, OpenGL/Vulkan graphics context creation, etc.)
// (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_sdl.h"
#include "imgui_impl_opengl3.h"
#include <stdio.h>
#include <SDL.h>
// About OpenGL function loaders: modern OpenGL doesn't have a standard header file and requires individual function pointers to be loaded manually.
// Helper libraries are often used for this purpose! Here we are supporting a few common ones: gl3w, glew, glad.
// You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own.
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
#include <GL/gl3w.h> // Initialize with gl3wInit()
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
#include <GL/glew.h> // Initialize with glewInit()
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
#include <glad/glad.h> // Initialize with gladLoadGL()
#else
#include IMGUI_IMPL_OPENGL_LOADER_CUSTOM
#endif
int main(int, char**)
{
// Setup SDL
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0)
{
printf("Error: %s\n", SDL_GetError());
return -1;
}
// Decide GL+GLSL versions
#if __APPLE__
// GL 3.2 Core + GLSL 150
const char* glsl_version = "#version 150";
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG); // Always required on Mac
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
#else
// GL 3.0 + GLSL 130
const char* glsl_version = "#version 130";
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
#endif
// Create window with graphics context
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
SDL_DisplayMode current;
SDL_GetCurrentDisplayMode(0, &current);
SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+OpenGL3 example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE);
SDL_GLContext gl_context = SDL_GL_CreateContext(window);
SDL_GL_SetSwapInterval(1); // Enable vsync
// Initialize OpenGL loader
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
bool err = gl3wInit() != 0;
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
bool err = glewInit() != GLEW_OK;
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
bool err = gladLoadGL() == 0;
#else
bool err = false; // If you use IMGUI_IMPL_OPENGL_LOADER_CUSTOM, your loader is likely to requires some form of initialization.
#endif
if (err)
{
fprintf(stderr, "Failed to initialize OpenGL loader!\n");
return 1;
}
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplSDL2_InitForOpenGL(window, gl_context);
ImGui_ImplOpenGL3_Init(glsl_version);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
bool done = false;
while (!done)
{
// Poll and handle events (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
SDL_Event event;
while (SDL_PollEvent(&event))
{
ImGui_ImplSDL2_ProcessEvent(&event);
if (event.type == SDL_QUIT)
done = true;
if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_CLOSE && event.window.windowID == SDL_GetWindowID(window))
done = true;
}
// Start the Dear ImGui frame
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplSDL2_NewFrame(window);
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
SDL_GL_MakeCurrent(window, gl_context);
glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y);
glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
glClear(GL_COLOR_BUFFER_BIT);
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
SDL_GL_SwapWindow(window);
}
// Cleanup
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplSDL2_Shutdown();
ImGui::DestroyContext();
SDL_GL_DeleteContext(gl_context);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

View File

@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{BAE3D0B5-9695-4EB1-AD0F-75890EB4A3B3}</ProjectGuid>
<RootNamespace>example_sdl_vulkan</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
<IncludePath>$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib32;%SDL2_DIR%\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib;%SDL2_DIR%\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib32;%SDL2_DIR%\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%VULKAN_SDK%\include;%SDL2_DIR%\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>%VULKAN_SDK%\lib;%SDL2_DIR%\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vulkan-1.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
<IgnoreSpecificDefaultLibraries>
</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_sdl.cpp" />
<ClCompile Include="..\imgui_impl_vulkan.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_sdl.h" />
<ClInclude Include="..\imgui_impl_vulkan.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{20b90ce4-7fcb-4731-b9a0-075f875de82d}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_sdl.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_vulkan.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_sdl.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_vulkan.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,489 @@
// dear imgui: standalone example application for SDL2 + Vulkan
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
#include "imgui.h"
#include "imgui_impl_sdl.h"
#include "imgui_impl_vulkan.h"
#include <stdio.h> // printf, fprintf
#include <stdlib.h> // abort
#include <SDL.h>
#include <SDL_vulkan.h>
#include <vulkan/vulkan.h>
//#define IMGUI_UNLIMITED_FRAME_RATE
#ifdef _DEBUG
#define IMGUI_VULKAN_DEBUG_REPORT
#endif
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_WindowData g_WindowData;
static void check_vk_result(VkResult err)
{
if (err == 0) return;
printf("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] 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 create_info = {};
create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
create_info.enabledExtensionCount = extensions_count;
create_info.ppEnabledExtensionNames = extensions;
#ifdef IMGUI_VULKAN_DEBUG_REPORT
// Enabling multiple validation layers grouped as LunarG standard validation
const char* layers[] = { "VK_LAYER_LUNARG_standard_validation" };
create_info.enabledLayerCount = 1;
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";
create_info.enabledExtensionCount = extensions_count + 1;
create_info.ppEnabledExtensionNames = extensions_ext;
// Create Vulkan Instance
err = vkCreateInstance(&create_info, g_Allocator, &g_Instance);
check_vk_result(err);
free(extensions_ext);
// Get the function pointer (required for any extensions)
auto vkCreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)vkGetInstanceProcAddr(g_Instance, "vkCreateDebugReportCallbackEXT");
IM_ASSERT(vkCreateDebugReportCallbackEXT != NULL);
// Setup the debug report callback
VkDebugReportCallbackCreateInfoEXT debug_report_ci = {};
debug_report_ci.sType = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT;
debug_report_ci.flags = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT;
debug_report_ci.pfnCallback = debug_report;
debug_report_ci.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(&create_info, g_Allocator, &g_Instance);
check_vk_result(err);
#endif
}
// Select GPU
{
uint32_t gpu_count;
err = vkEnumeratePhysicalDevices(g_Instance, &gpu_count, NULL);
check_vk_result(err);
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, you should find the best fit GPU for your purpose
// e.g. VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU if available, or with the greatest memory available, etc.
// for sake of simplicity we'll just take the first one, assuming it has a graphics queue family.
g_PhysicalDevice = gpus[0];
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 != -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] = {};
queue_info[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
queue_info[0].queueFamilyIndex = g_QueueFamily;
queue_info[0].queueCount = 1;
queue_info[0].pQueuePriorities = queue_priority;
VkDeviceCreateInfo create_info = {};
create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
create_info.queueCreateInfoCount = sizeof(queue_info) / sizeof(queue_info[0]);
create_info.pQueueCreateInfos = queue_info;
create_info.enabledExtensionCount = device_extension_count;
create_info.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 = {};
pool_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO;
pool_info.flags = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT;
pool_info.maxSets = 1000 * IM_ARRAYSIZE(pool_sizes);
pool_info.poolSizeCount = (uint32_t)IM_ARRAYSIZE(pool_sizes);
pool_info.pPoolSizes = pool_sizes;
err = vkCreateDescriptorPool(g_Device, &pool_info, g_Allocator, &g_DescriptorPool);
check_vk_result(err);
}
}
static void SetupVulkanWindowData(ImGui_ImplVulkanH_WindowData* 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));
//printf("[vulkan] Selected PresentMode = %d\n", wd->PresentMode);
// Create SwapChain, RenderPass, Framebuffer, etc.
ImGui_ImplVulkanH_CreateWindowDataCommandBuffers(g_PhysicalDevice, g_Device, g_QueueFamily, wd, g_Allocator);
ImGui_ImplVulkanH_CreateWindowDataSwapChainAndFramebuffer(g_PhysicalDevice, g_Device, wd, g_Allocator, width, height);
}
static void CleanupVulkan()
{
ImGui_ImplVulkanH_WindowData* wd = &g_WindowData;
ImGui_ImplVulkanH_DestroyWindowData(g_Instance, g_Device, wd, g_Allocator);
vkDestroyDescriptorPool(g_Device, g_DescriptorPool, g_Allocator);
#ifdef IMGUI_VULKAN_DEBUG_REPORT
// Remove the debug report callback
auto 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 FrameRender(ImGui_ImplVulkanH_WindowData* wd)
{
VkResult err;
VkSemaphore& image_acquired_semaphore = wd->Frames[wd->FrameIndex].ImageAcquiredSemaphore;
err = vkAcquireNextImageKHR(g_Device, wd->Swapchain, UINT64_MAX, image_acquired_semaphore, VK_NULL_HANDLE, &wd->FrameIndex);
check_vk_result(err);
ImGui_ImplVulkanH_FrameData* 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 = {};
info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
info.flags |= VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
err = vkBeginCommandBuffer(fd->CommandBuffer, &info);
check_vk_result(err);
}
{
VkRenderPassBeginInfo info = {};
info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
info.renderPass = wd->RenderPass;
info.framebuffer = wd->Framebuffer[wd->FrameIndex];
info.renderArea.extent.width = wd->Width;
info.renderArea.extent.height = wd->Height;
info.clearValueCount = 1;
info.pClearValues = &wd->ClearValue;
vkCmdBeginRenderPass(fd->CommandBuffer, &info, VK_SUBPASS_CONTENTS_INLINE);
}
// Record Imgui Draw Data and draw funcs into command buffer
ImGui_ImplVulkan_RenderDrawData(ImGui::GetDrawData(), fd->CommandBuffer);
// Submit command buffer
vkCmdEndRenderPass(fd->CommandBuffer);
{
VkPipelineStageFlags wait_stage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
VkSubmitInfo info = {};
info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
info.waitSemaphoreCount = 1;
info.pWaitSemaphores = &image_acquired_semaphore;
info.pWaitDstStageMask = &wait_stage;
info.commandBufferCount = 1;
info.pCommandBuffers = &fd->CommandBuffer;
info.signalSemaphoreCount = 1;
info.pSignalSemaphores = &fd->RenderCompleteSemaphore;
err = vkEndCommandBuffer(fd->CommandBuffer);
check_vk_result(err);
err = vkQueueSubmit(g_Queue, 1, &info, fd->Fence);
check_vk_result(err);
}
}
static void FramePresent(ImGui_ImplVulkanH_WindowData* wd)
{
ImGui_ImplVulkanH_FrameData* fd = &wd->Frames[wd->FrameIndex];
VkPresentInfoKHR info = {};
info.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
info.waitSemaphoreCount = 1;
info.pWaitSemaphores = &fd->RenderCompleteSemaphore;
info.swapchainCount = 1;
info.pSwapchains = &wd->Swapchain;
info.pImageIndices = &wd->FrameIndex;
VkResult err = vkQueuePresentKHR(g_Queue, &info);
check_vk_result(err);
}
int main(int, char**)
{
// Setup SDL
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) != 0)
{
printf("Error: %s\n", SDL_GetError());
return 1;
}
// Setup window
SDL_DisplayMode current;
SDL_GetCurrentDisplayMode(0, &current);
SDL_Window* window = SDL_CreateWindow("Dear ImGui SDL2+Vulkan example", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_VULKAN|SDL_WINDOW_RESIZABLE);
// Setup Vulkan
uint32_t extensions_count = 0;
SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, NULL);
const char** extensions = new const char*[extensions_count];
SDL_Vulkan_GetInstanceExtensions(window, &extensions_count, extensions);
SetupVulkan(extensions, extensions_count);
delete[] 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_WindowData* wd = &g_WindowData;
SetupVulkanWindowData(wd, surface, w, h);
// Setup Dear ImGui context
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplSDL2_InitForVulkan(window);
ImGui_ImplVulkan_InitInfo init_info = {};
init_info.Instance = g_Instance;
init_info.PhysicalDevice = g_PhysicalDevice;
init_info.Device = g_Device;
init_info.QueueFamily = g_QueueFamily;
init_info.Queue = g_Queue;
init_info.PipelineCache = g_PipelineCache;
init_info.DescriptorPool = g_DescriptorPool;
init_info.Allocator = g_Allocator;
init_info.CheckVkResultFn = check_vk_result;
ImGui_ImplVulkan_Init(&init_info, wd->RenderPass);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != 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 = {};
begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
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 = {};
end_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
end_info.commandBufferCount = 1;
end_info.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_InvalidateFontUploadObjects();
}
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
bool done = false;
while (!done)
{
// Poll and handle events (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
SDL_Event event;
while (SDL_PollEvent(&event))
{
ImGui_ImplSDL2_ProcessEvent(&event);
if (event.type == SDL_QUIT)
done = true;
if (event.type == SDL_WINDOWEVENT && event.window.event == SDL_WINDOWEVENT_RESIZED && event.window.windowID == SDL_GetWindowID(window))
ImGui_ImplVulkanH_CreateWindowDataSwapChainAndFramebuffer(g_PhysicalDevice, g_Device, &g_WindowData, g_Allocator, (int)event.window.data1, (int)event.window.data2);
}
// Start the Dear ImGui frame
ImGui_ImplVulkan_NewFrame();
ImGui_ImplSDL2_NewFrame(window);
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
memcpy(&wd->ClearValue.color.float32[0], &clear_color, 4 * sizeof(float));
FrameRender(wd);
FramePresent(wd);
}
// Cleanup
err = vkDeviceWaitIdle(g_Device);
check_vk_result(err);
ImGui_ImplVulkan_Shutdown();
ImGui_ImplSDL2_Shutdown();
ImGui::DestroyContext();
CleanupVulkan();
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

View File

@ -0,0 +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/example_win32_directx10.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d10.lib d3dcompiler.lib

View File

@ -0,0 +1,165 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{345A953E-A004-4648-B442-DC5F9F11068C}</ProjectGuid>
<RootNamespace>example_win32_directx10</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>d3d10.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(DXSDK_DIR)/Lib/x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>d3d10.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(DXSDK_DIR)/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>d3d10.lib;d3dcompiler.lib;dxgi.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(DXSDK_DIR)/Lib/x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>d3d10.lib;d3dcompiler.lib;dxgi.lib;imm32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(DXSDK_DIR)/Lib/x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_dx10.h" />
<ClInclude Include="..\imgui_impl_win32.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_dx10.cpp" />
<ClCompile Include="..\imgui_impl_win32.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -15,7 +15,13 @@
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="imgui_impl_dx11.h">
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_dx10.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_win32.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
@ -26,8 +32,26 @@
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="imgui_impl_dx11.cpp">
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_dx10.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_win32.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,224 @@
// dear imgui: standalone example application for DirectX 10
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
#include "imgui.h"
#include "imgui_impl_win32.h"
#include "imgui_impl_dx10.h"
#include <d3d10_1.h>
#include <d3d10.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
// Data
static ID3D10Device* g_pd3dDevice = NULL;
static IDXGISwapChain* g_pSwapChain = NULL;
static ID3D10RenderTargetView* g_mainRenderTargetView = NULL;
void CreateRenderTarget()
{
ID3D10Texture2D* pBackBuffer;
g_pSwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (LPVOID*)&pBackBuffer);
g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_mainRenderTargetView);
pBackBuffer->Release();
}
void CleanupRenderTarget()
{
if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = NULL; }
}
HRESULT 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 |= D3D10_CREATE_DEVICE_DEBUG;
if (D3D10CreateDeviceAndSwapChain(NULL, D3D10_DRIVER_TYPE_HARDWARE, NULL, createDeviceFlags, D3D10_SDK_VERSION, &sd, &g_pSwapChain, &g_pd3dDevice) != S_OK)
return E_FAIL;
CreateRenderTarget();
return S_OK;
}
void CleanupDeviceD3D()
{
CleanupRenderTarget();
if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; }
if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; }
}
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
return true;
switch (msg)
{
case WM_SIZE:
if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED)
{
CleanupRenderTarget();
g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0);
CreateRenderTarget();
}
return 0;
case WM_SYSCOMMAND:
if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu
return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int main(int, char**)
{
// Create application window
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, _T("ImGui Example"), NULL };
RegisterClassEx(&wc);
HWND hwnd = CreateWindow(_T("ImGui Example"), _T("Dear ImGui DirectX10 Example"), WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL);
// Initialize Direct3D
if (CreateDeviceD3D(hwnd) < 0)
{
CleanupDeviceD3D();
UnregisterClass(_T("ImGui Example"), wc.hInstance);
return 1;
}
// Show the window
ShowWindow(hwnd, SW_SHOWDEFAULT);
UpdateWindow(hwnd);
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplWin32_Init(hwnd);
ImGui_ImplDX10_Init(g_pd3dDevice);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
MSG msg;
ZeroMemory(&msg, sizeof(msg));
while (msg.message != WM_QUIT)
{
// Poll and handle messages (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
continue;
}
// Start the Dear ImGui frame
ImGui_ImplDX10_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
g_pd3dDevice->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL);
g_pd3dDevice->ClearRenderTargetView(g_mainRenderTargetView, (float*)&clear_color);
ImGui_ImplDX10_RenderDrawData(ImGui::GetDrawData());
g_pSwapChain->Present(1, 0); // Present with vsync
//g_pSwapChain->Present(0, 0); // Present without vsync
}
ImGui_ImplDX10_Shutdown();
ImGui_ImplWin32_Shutdown();
ImGui::DestroyContext();
CleanupDeviceD3D();
DestroyWindow(hwnd);
UnregisterClass(_T("ImGui Example"), wc.hInstance);
return 0;
}

View File

@ -0,0 +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/example_win32_directx11.exe /FoDebug/ /link /LIBPATH:"%DXSDK_DIR%/Lib/x86" d3d11.lib d3dcompiler.lib

View File

@ -20,7 +20,7 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{9F316E83-5AE5-4939-A723-305A94F48005}</ProjectGuid>
<RootNamespace>directx11_example</RootNamespace>
<RootNamespace>example_win32_directx11</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@ -81,7 +81,7 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -94,7 +94,7 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -109,7 +109,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -126,7 +127,8 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
@ -140,13 +142,23 @@
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="imgui_impl_dx11.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_dx11.h" />
<ClInclude Include="..\imgui_impl_win32.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="imgui_impl_dx11.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_dx11.cpp" />
<ClCompile Include="..\imgui_impl_win32.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{0587d7a3-f2ce-4d56-b84f-a0005d3bfce6}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{08e36723-ce4f-4cff-9662-c40801cf1acf}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_win32.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_dx11.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_win32.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_dx11.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

View File

@ -0,0 +1,228 @@
// dear imgui - standalone example application for DirectX 11
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
#include "imgui.h"
#include "imgui_impl_win32.h"
#include "imgui_impl_dx11.h"
#include <d3d11.h>
#define DIRECTINPUT_VERSION 0x0800
#include <dinput.h>
#include <tchar.h>
// Data
static ID3D11Device* g_pd3dDevice = NULL;
static ID3D11DeviceContext* g_pd3dDeviceContext = NULL;
static IDXGISwapChain* g_pSwapChain = NULL;
static ID3D11RenderTargetView* g_mainRenderTargetView = NULL;
void CreateRenderTarget()
{
ID3D11Texture2D* pBackBuffer;
g_pSwapChain->GetBuffer(0, __uuidof(ID3D11Texture2D), (LPVOID*)&pBackBuffer);
g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, &g_mainRenderTargetView);
pBackBuffer->Release();
}
void CleanupRenderTarget()
{
if (g_mainRenderTargetView) { g_mainRenderTargetView->Release(); g_mainRenderTargetView = NULL; }
}
HRESULT 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 E_FAIL;
CreateRenderTarget();
return S_OK;
}
void CleanupDeviceD3D()
{
CleanupRenderTarget();
if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; }
if (g_pd3dDeviceContext) { g_pd3dDeviceContext->Release(); g_pd3dDeviceContext = NULL; }
if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; }
}
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
return true;
switch (msg)
{
case WM_SIZE:
if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED)
{
CleanupRenderTarget();
g_pSwapChain->ResizeBuffers(0, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam), DXGI_FORMAT_UNKNOWN, 0);
CreateRenderTarget();
}
return 0;
case WM_SYSCOMMAND:
if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu
return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int main(int, char**)
{
// Create application window
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, _T("ImGui Example"), NULL };
RegisterClassEx(&wc);
HWND hwnd = CreateWindow(_T("ImGui Example"), _T("Dear ImGui DirectX11 Example"), WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL);
// Initialize Direct3D
if (CreateDeviceD3D(hwnd) < 0)
{
CleanupDeviceD3D();
UnregisterClass(_T("ImGui Example"), wc.hInstance);
return 1;
}
// Show the window
ShowWindow(hwnd, SW_SHOWDEFAULT);
UpdateWindow(hwnd);
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplWin32_Init(hwnd);
ImGui_ImplDX11_Init(g_pd3dDevice, g_pd3dDeviceContext);
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
// Our state
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
MSG msg;
ZeroMemory(&msg, sizeof(msg));
while (msg.message != WM_QUIT)
{
// Poll and handle messages (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
continue;
}
// Start the Dear ImGui frame
ImGui_ImplDX11_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
ImGui::Render();
g_pd3dDeviceContext->OMSetRenderTargets(1, &g_mainRenderTargetView, NULL);
g_pd3dDeviceContext->ClearRenderTargetView(g_mainRenderTargetView, (float*)&clear_color);
ImGui_ImplDX11_RenderDrawData(ImGui::GetDrawData());
g_pSwapChain->Present(1, 0); // Present with vsync
//g_pSwapChain->Present(0, 0); // Present without vsync
}
ImGui_ImplDX11_Shutdown();
ImGui_ImplWin32_Shutdown();
ImGui::DestroyContext();
CleanupDeviceD3D();
DestroyWindow(hwnd);
UnregisterClass(_T("ImGui Example"), wc.hInstance);
return 0;
}

View File

@ -0,0 +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/example_win32_directx12.exe /FoDebug/ /link d3d12.lib d3dcompiler.lib dxgi.lib

View File

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{b4cf9797-519d-4afe-a8f4-5141a6b521d3}</ProjectGuid>
<RootNamespace>example_win32_directx12</RootNamespace>
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>$(ProjectDir)$(Configuration)\</OutDir>
<IntDir>$(ProjectDir)$(Configuration)\</IntDir>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>d3d12.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>d3d12.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>d3d12.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>d3d12.lib;d3dcompiler.lib;dxgi.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_dx12.h" />
<ClInclude Include="..\imgui_impl_win32.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_dx12.cpp" />
<ClCompile Include="..\imgui_impl_win32.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="imgui">
<UniqueIdentifier>{fb3d294f-51ec-478e-a627-25831c80fefd}</UniqueIdentifier>
</Filter>
<Filter Include="sources">
<UniqueIdentifier>{4f33ddea-9910-456d-b868-4267eb3c2b19}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_dx12.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_win32.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="main.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_dx12.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_win32.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,430 @@
// dear imgui: standalone example application for DirectX 12
// If you are new to dear imgui, see examples/README.txt and documentation at the top of imgui.cpp.
// FIXME: 64-bit only for now! (Because sizeof(ImTextureId) == sizeof(void*))
#include "imgui.h"
#include "imgui_impl_win32.h"
#include "imgui_impl_dx12.h"
#include <d3d12.h>
#include <dxgi1_4.h>
#include <tchar.h>
#define DX12_ENABLE_DEBUG_LAYER 0
struct FrameContext
{
ID3D12CommandAllocator* CommandAllocator;
UINT64 FenceValue;
};
// Data
static int const NUM_FRAMES_IN_FLIGHT = 3;
static FrameContext g_frameContext[NUM_FRAMES_IN_FLIGHT] = {};
static UINT g_frameIndex = 0;
static int const NUM_BACK_BUFFERS = 3;
static ID3D12Device* g_pd3dDevice = NULL;
static ID3D12DescriptorHeap* g_pd3dRtvDescHeap = NULL;
static ID3D12DescriptorHeap* g_pd3dSrvDescHeap = NULL;
static ID3D12CommandQueue* g_pd3dCommandQueue = NULL;
static ID3D12GraphicsCommandList* g_pd3dCommandList = NULL;
static ID3D12Fence* g_fence = NULL;
static HANDLE g_fenceEvent = NULL;
static UINT64 g_fenceLastSignaledValue = 0;
static IDXGISwapChain3* g_pSwapChain = NULL;
static HANDLE g_hSwapChainWaitableObject = NULL;
static ID3D12Resource* g_mainRenderTargetResource[NUM_BACK_BUFFERS] = {};
static D3D12_CPU_DESCRIPTOR_HANDLE g_mainRenderTargetDescriptor[NUM_BACK_BUFFERS] = {};
void CreateRenderTarget()
{
ID3D12Resource* pBackBuffer;
for (UINT i = 0; i < NUM_BACK_BUFFERS; i++)
{
g_pSwapChain->GetBuffer(i, IID_PPV_ARGS(&pBackBuffer));
g_pd3dDevice->CreateRenderTargetView(pBackBuffer, NULL, g_mainRenderTargetDescriptor[i]);
g_mainRenderTargetResource[i] = pBackBuffer;
}
}
void WaitForLastSubmittedFrame()
{
FrameContext* frameCtxt = &g_frameContext[g_frameIndex % NUM_FRAMES_IN_FLIGHT];
UINT64 fenceValue = frameCtxt->FenceValue;
if (fenceValue == 0)
return; // No fence was signaled
frameCtxt->FenceValue = 0;
if (g_fence->GetCompletedValue() >= fenceValue)
return;
g_fence->SetEventOnCompletion(fenceValue, g_fenceEvent);
WaitForSingleObject(g_fenceEvent, INFINITE);
}
FrameContext* WaitForNextFrameResources()
{
UINT nextFrameIndex = g_frameIndex + 1;
g_frameIndex = nextFrameIndex;
HANDLE waitableObjects[] = { g_hSwapChainWaitableObject, NULL };
DWORD numWaitableObjects = 1;
FrameContext* frameCtxt = &g_frameContext[nextFrameIndex % NUM_FRAMES_IN_FLIGHT];
UINT64 fenceValue = frameCtxt->FenceValue;
if (fenceValue != 0) // means no fence was signaled
{
frameCtxt->FenceValue = 0;
g_fence->SetEventOnCompletion(fenceValue, g_fenceEvent);
waitableObjects[1] = g_fenceEvent;
numWaitableObjects = 2;
}
WaitForMultipleObjects(numWaitableObjects, waitableObjects, TRUE, INFINITE);
return frameCtxt;
}
void ResizeSwapChain(HWND hWnd, int width, int height)
{
DXGI_SWAP_CHAIN_DESC1 sd;
g_pSwapChain->GetDesc1(&sd);
sd.Width = width;
sd.Height = height;
IDXGIFactory4* dxgiFactory = NULL;
g_pSwapChain->GetParent(IID_PPV_ARGS(&dxgiFactory));
g_pSwapChain->Release();
CloseHandle(g_hSwapChainWaitableObject);
IDXGISwapChain1* swapChain1 = NULL;
dxgiFactory->CreateSwapChainForHwnd(g_pd3dCommandQueue, hWnd, &sd, NULL, NULL, &swapChain1);
swapChain1->QueryInterface(IID_PPV_ARGS(&g_pSwapChain));
swapChain1->Release();
dxgiFactory->Release();
g_pSwapChain->SetMaximumFrameLatency(NUM_BACK_BUFFERS);
g_hSwapChainWaitableObject = g_pSwapChain->GetFrameLatencyWaitableObject();
assert(g_hSwapChainWaitableObject != NULL);
}
void CleanupRenderTarget()
{
WaitForLastSubmittedFrame();
for (UINT i = 0; i < NUM_BACK_BUFFERS; i++)
if (g_mainRenderTargetResource[i]) { g_mainRenderTargetResource[i]->Release(); g_mainRenderTargetResource[i] = NULL; }
}
HRESULT CreateDeviceD3D(HWND hWnd)
{
// Setup swap chain
DXGI_SWAP_CHAIN_DESC1 sd;
{
ZeroMemory(&sd, sizeof(sd));
sd.BufferCount = NUM_BACK_BUFFERS;
sd.Width = 0;
sd.Height = 0;
sd.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
sd.Flags = DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.SampleDesc.Count = 1;
sd.SampleDesc.Quality = 0;
sd.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
sd.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED;
sd.Scaling = DXGI_SCALING_STRETCH;
sd.Stereo = FALSE;
}
if (DX12_ENABLE_DEBUG_LAYER)
{
ID3D12Debug* dx12Debug = NULL;
if (SUCCEEDED(D3D12GetDebugInterface(IID_PPV_ARGS(&dx12Debug))))
{
dx12Debug->EnableDebugLayer();
dx12Debug->Release();
}
}
D3D_FEATURE_LEVEL featureLevel = D3D_FEATURE_LEVEL_11_0;
if (D3D12CreateDevice(NULL, featureLevel, IID_PPV_ARGS(&g_pd3dDevice)) != S_OK)
return E_FAIL;
{
D3D12_DESCRIPTOR_HEAP_DESC desc = {};
desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_RTV;
desc.NumDescriptors = NUM_BACK_BUFFERS;
desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_NONE;
desc.NodeMask = 1;
if (g_pd3dDevice->CreateDescriptorHeap(&desc, IID_PPV_ARGS(&g_pd3dRtvDescHeap)) != S_OK)
return E_FAIL;
SIZE_T rtvDescriptorSize = g_pd3dDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_RTV);
D3D12_CPU_DESCRIPTOR_HANDLE rtvHandle = g_pd3dRtvDescHeap->GetCPUDescriptorHandleForHeapStart();
for (UINT i = 0; i < NUM_BACK_BUFFERS; i++)
{
g_mainRenderTargetDescriptor[i] = rtvHandle;
rtvHandle.ptr += rtvDescriptorSize;
}
}
{
D3D12_DESCRIPTOR_HEAP_DESC desc = {};
desc.Type = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV;
desc.NumDescriptors = 1;
desc.Flags = D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE;
if (g_pd3dDevice->CreateDescriptorHeap(&desc, IID_PPV_ARGS(&g_pd3dSrvDescHeap)) != S_OK)
return E_FAIL;
}
{
D3D12_COMMAND_QUEUE_DESC desc = {};
desc.Type = D3D12_COMMAND_LIST_TYPE_DIRECT;
desc.Flags = D3D12_COMMAND_QUEUE_FLAG_NONE;
desc.NodeMask = 1;
if (g_pd3dDevice->CreateCommandQueue(&desc, IID_PPV_ARGS(&g_pd3dCommandQueue)) != S_OK)
return E_FAIL;
}
for (UINT i = 0; i < NUM_FRAMES_IN_FLIGHT; i++)
if (g_pd3dDevice->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&g_frameContext[i].CommandAllocator)) != S_OK)
return E_FAIL;
if (g_pd3dDevice->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, g_frameContext[0].CommandAllocator, NULL, IID_PPV_ARGS(&g_pd3dCommandList)) != S_OK ||
g_pd3dCommandList->Close() != S_OK)
return E_FAIL;
if (g_pd3dDevice->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&g_fence)) != S_OK)
return E_FAIL;
g_fenceEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (g_fenceEvent == NULL)
return E_FAIL;
{
IDXGIFactory4* dxgiFactory = NULL;
IDXGISwapChain1* swapChain1 = NULL;
if (CreateDXGIFactory1(IID_PPV_ARGS(&dxgiFactory)) != S_OK ||
dxgiFactory->CreateSwapChainForHwnd(g_pd3dCommandQueue, hWnd, &sd, NULL, NULL, &swapChain1) != S_OK ||
swapChain1->QueryInterface(IID_PPV_ARGS(&g_pSwapChain)) != S_OK)
return E_FAIL;
swapChain1->Release();
dxgiFactory->Release();
g_pSwapChain->SetMaximumFrameLatency(NUM_BACK_BUFFERS);
g_hSwapChainWaitableObject = g_pSwapChain->GetFrameLatencyWaitableObject();
}
CreateRenderTarget();
return S_OK;
}
void CleanupDeviceD3D()
{
CleanupRenderTarget();
if (g_pSwapChain) { g_pSwapChain->Release(); g_pSwapChain = NULL; }
if (g_hSwapChainWaitableObject != NULL) { CloseHandle(g_hSwapChainWaitableObject); }
for (UINT i = 0; i < NUM_FRAMES_IN_FLIGHT; i++)
if (g_frameContext[i].CommandAllocator) { g_frameContext[i].CommandAllocator->Release(); g_frameContext[i].CommandAllocator = NULL; }
if (g_pd3dCommandQueue) { g_pd3dCommandQueue->Release(); g_pd3dCommandQueue = NULL; }
if (g_pd3dCommandList) { g_pd3dCommandList->Release(); g_pd3dCommandList = NULL; }
if (g_pd3dRtvDescHeap) { g_pd3dRtvDescHeap->Release(); g_pd3dRtvDescHeap = NULL; }
if (g_pd3dSrvDescHeap) { g_pd3dSrvDescHeap->Release(); g_pd3dSrvDescHeap = NULL; }
if (g_fence) { g_fence->Release(); g_fence = NULL; }
if (g_fenceEvent) { CloseHandle(g_fenceEvent); g_fenceEvent = NULL; }
if (g_pd3dDevice) { g_pd3dDevice->Release(); g_pd3dDevice = NULL; }
}
extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (ImGui_ImplWin32_WndProcHandler(hWnd, msg, wParam, lParam))
return true;
switch (msg)
{
case WM_SIZE:
if (g_pd3dDevice != NULL && wParam != SIZE_MINIMIZED)
{
ImGui_ImplDX12_InvalidateDeviceObjects();
CleanupRenderTarget();
ResizeSwapChain(hWnd, (UINT)LOWORD(lParam), (UINT)HIWORD(lParam));
CreateRenderTarget();
ImGui_ImplDX12_CreateDeviceObjects();
}
return 0;
case WM_SYSCOMMAND:
if ((wParam & 0xfff0) == SC_KEYMENU) // Disable ALT application menu
return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int main(int, char**)
{
// Create application window
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, WndProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, _T("ImGui Example"), NULL };
RegisterClassEx(&wc);
HWND hwnd = CreateWindow(_T("ImGui Example"), _T("Dear ImGui DirectX12 Example"), WS_OVERLAPPEDWINDOW, 100, 100, 1280, 800, NULL, NULL, wc.hInstance, NULL);
// Initialize Direct3D
if (CreateDeviceD3D(hwnd) < 0)
{
CleanupDeviceD3D();
UnregisterClass(_T("ImGui Example"), wc.hInstance);
return 1;
}
// Show the window
ShowWindow(hwnd, SW_SHOWDEFAULT);
UpdateWindow(hwnd);
// Setup Dear ImGui context
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO(); (void)io;
//io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; // Enable Keyboard Controls
// Setup Dear ImGui style
ImGui::StyleColorsDark();
//ImGui::StyleColorsClassic();
// Setup Platform/Renderer bindings
ImGui_ImplWin32_Init(hwnd);
ImGui_ImplDX12_Init(g_pd3dDevice, NUM_FRAMES_IN_FLIGHT,
DXGI_FORMAT_R8G8B8A8_UNORM,
g_pd3dSrvDescHeap->GetCPUDescriptorHandleForHeapStart(),
g_pd3dSrvDescHeap->GetGPUDescriptorHandleForHeapStart());
// Load Fonts
// - If no fonts are loaded, dear imgui will use the default font. You can also load multiple fonts and use ImGui::PushFont()/PopFont() to select them.
// - AddFontFromFileTTF() will return the ImFont* so you can store it if you need to select the font among multiple.
// - If the file cannot be loaded, the function will return NULL. Please handle those errors in your application (e.g. use an assertion, or display an error and quit).
// - The fonts will be rasterized at a given size (w/ oversampling) and stored into a texture when calling ImFontAtlas::Build()/GetTexDataAsXXXX(), which ImGui_ImplXXXX_NewFrame below will call.
// - Read 'misc/fonts/README.txt' for more instructions and details.
// - Remember that in C/C++ if you want to include a backslash \ in a string literal you need to write a double backslash \\ !
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
//ImFont* font = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, NULL, io.Fonts->GetGlyphRangesJapanese());
//IM_ASSERT(font != NULL);
bool show_demo_window = true;
bool show_another_window = false;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
// Main loop
MSG msg;
ZeroMemory(&msg, sizeof(msg));
while (msg.message != WM_QUIT)
{
// Poll and handle messages (inputs, window resize, etc.)
// You can read the io.WantCaptureMouse, io.WantCaptureKeyboard flags to tell if dear imgui wants to use your inputs.
// - When io.WantCaptureMouse is true, do not dispatch mouse input data to your main application.
// - When io.WantCaptureKeyboard is true, do not dispatch keyboard input data to your main application.
// Generally you may always pass all inputs to dear imgui, and hide them from your application based on those two flags.
if (PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
continue;
}
// Start the Dear ImGui frame
ImGui_ImplDX12_NewFrame();
ImGui_ImplWin32_NewFrame();
ImGui::NewFrame();
// 1. Show the big demo window (Most of the sample code is in ImGui::ShowDemoWindow()! You can browse its code to learn more about Dear ImGui!).
if (show_demo_window)
ImGui::ShowDemoWindow(&show_demo_window);
// 2. Show a simple window that we create ourselves. We use a Begin/End pair to created a named window.
{
static float f = 0.0f;
static int counter = 0;
ImGui::Begin("Hello, world!"); // Create a window called "Hello, world!" and append into it.
ImGui::Text("This is some useful text."); // Display some text (you can use a format strings too)
ImGui::Checkbox("Demo Window", &show_demo_window); // Edit bools storing our window open/close state
ImGui::Checkbox("Another Window", &show_another_window);
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); // Edit 1 float using a slider from 0.0f to 1.0f
ImGui::ColorEdit3("clear color", (float*)&clear_color); // Edit 3 floats representing a color
if (ImGui::Button("Button")) // Buttons return true when clicked (most widgets return true when edited/activated)
counter++;
ImGui::SameLine();
ImGui::Text("counter = %d", counter);
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f / ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
ImGui::End();
}
// 3. Show another simple window.
if (show_another_window)
{
ImGui::Begin("Another Window", &show_another_window); // Pass a pointer to our bool variable (the window will have a closing button that will clear the bool when clicked)
ImGui::Text("Hello from another window!");
if (ImGui::Button("Close Me"))
show_another_window = false;
ImGui::End();
}
// Rendering
FrameContext* frameCtxt = WaitForNextFrameResources();
UINT backBufferIdx = g_pSwapChain->GetCurrentBackBufferIndex();
frameCtxt->CommandAllocator->Reset();
D3D12_RESOURCE_BARRIER barrier = {};
barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION;
barrier.Flags = D3D12_RESOURCE_BARRIER_FLAG_NONE;
barrier.Transition.pResource = g_mainRenderTargetResource[backBufferIdx];
barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES;
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_PRESENT;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_RENDER_TARGET;
g_pd3dCommandList->Reset(frameCtxt->CommandAllocator, NULL);
g_pd3dCommandList->ResourceBarrier(1, &barrier);
g_pd3dCommandList->ClearRenderTargetView(g_mainRenderTargetDescriptor[backBufferIdx], (float*)&clear_color, 0, NULL);
g_pd3dCommandList->OMSetRenderTargets(1, &g_mainRenderTargetDescriptor[backBufferIdx], FALSE, NULL);
g_pd3dCommandList->SetDescriptorHeaps(1, &g_pd3dSrvDescHeap);
ImGui::Render();
ImGui_ImplDX12_RenderDrawData(ImGui::GetDrawData(), g_pd3dCommandList);
barrier.Transition.StateBefore = D3D12_RESOURCE_STATE_RENDER_TARGET;
barrier.Transition.StateAfter = D3D12_RESOURCE_STATE_PRESENT;
g_pd3dCommandList->ResourceBarrier(1, &barrier);
g_pd3dCommandList->Close();
g_pd3dCommandQueue->ExecuteCommandLists(1, (ID3D12CommandList* const*)&g_pd3dCommandList);
g_pSwapChain->Present(1, 0); // Present with vsync
//g_pSwapChain->Present(0, 0); // Present without vsync
UINT64 fenceValue = g_fenceLastSignaledValue + 1;
g_pd3dCommandQueue->Signal(g_fence, fenceValue);
g_fenceLastSignaledValue = fenceValue;
frameCtxt->FenceValue = fenceValue;
}
WaitForLastSubmittedFrame();
ImGui_ImplDX12_Shutdown();
ImGui_ImplWin32_Shutdown();
ImGui::DestroyContext();
CleanupDeviceD3D();
DestroyWindow(hwnd);
UnregisterClass(_T("ImGui Example"), wc.hInstance);
return 0;
}

View File

@ -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 "%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

View File

@ -20,7 +20,7 @@
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{4165A294-21F2-44CA-9B38-E3F935ABADF5}</ProjectGuid>
<RootNamespace>directx9_example</RootNamespace>
<RootNamespace>example_win32_directx9</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@ -81,12 +81,12 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>d3d9.lib;d3dx9d.lib;dxerr.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>d3d9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -94,12 +94,12 @@
<ClCompile>
<WarningLevel>Level4</WarningLevel>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>d3d9.lib;d3dx9d.lib;dxerr.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>d3d9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -109,14 +109,15 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>d3d9.lib;d3dx9d.lib;dxerr.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>d3d9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
@ -126,26 +127,37 @@
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..;..;%(AdditionalIncludeDirectories);$(DXSDK_DIR)Include;</AdditionalIncludeDirectories>
<BufferSecurityCheck>false</BufferSecurityCheck>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalLibraryDirectories>$(DXSDK_DIR)Lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>d3d9.lib;d3dx9d.lib;dxerr.lib;dxguid.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalDependencies>d3d9.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Console</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\imgui.cpp" />
<ClCompile Include="imgui_impl_dx9.cpp" />
<ClCompile Include="..\..\imgui_demo.cpp" />
<ClCompile Include="..\..\imgui_draw.cpp" />
<ClCompile Include="..\..\imgui_widgets.cpp" />
<ClCompile Include="..\imgui_impl_dx9.cpp" />
<ClCompile Include="..\imgui_impl_win32.cpp" />
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h" />
<ClInclude Include="..\..\imgui.h" />
<ClInclude Include="imgui_impl_dx9.h" />
<ClInclude Include="..\..\imgui_internal.h" />
<ClInclude Include="..\imgui_impl_dx9.h" />
<ClInclude Include="..\imgui_impl_win32.h" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\misc\natvis\imgui.natvis" />
<None Include="..\README.txt" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

View File

@ -16,9 +16,21 @@
<ClCompile Include="..\..\imgui.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="imgui_impl_dx9.cpp">
<ClCompile Include="..\..\imgui_demo.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_draw.cpp">
<Filter>imgui</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_win32.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\imgui_impl_dx9.cpp">
<Filter>sources</Filter>
</ClCompile>
<ClCompile Include="..\..\imgui_widgets.cpp">
<Filter>imgui</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\imconfig.h">
@ -27,8 +39,20 @@
<ClInclude Include="..\..\imgui.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="imgui_impl_dx9.h">
<ClInclude Include="..\..\imgui_internal.h">
<Filter>imgui</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_win32.h">
<Filter>sources</Filter>
</ClInclude>
<ClInclude Include="..\imgui_impl_dx9.h">
<Filter>sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\README.txt" />
<None Include="..\..\misc\natvis\imgui.natvis">
<Filter>sources</Filter>
</None>
</ItemGroup>
</Project>

Some files were not shown because too many files have changed in this diff Show More