Green Sky
84b1bb45b9
8199457a7d9 Version 1.91.0 ec9a4ef487a Clipper: accept that no item have been submitted if in indeterminate Begin(INT_MAX) mode. (#1311, #3823) 1b44e404449 Demo: re-use tree data. Fix property editor vertical alignment. Tweak recent memory allocation monitor. 1f634f1d94e Eaxmples: Android: Fix build failed issue. (#7832) ce3a8d7c79f Demo: MultiSelect: added tree demo. (#6990, #3823, #1861) c2a3d5e47b0 Comments, minor tweaks to ImGuiTextFilter. df387049268 Added SetNextItemStorageID() for tree nodes. (#7553, #6990, #3823, #1131) b847c414372 MultiSelect: BoxSelect: fixed using in frozen table. (#7821, #5143) + added Demo. 249d5caedbe Tables: storing LastFrozenHeight for frozen requests that don't have actual freezing due to zero scrolling. (#7821, #5143) c7b92560977 Selectable: added ImGuiSelectableFlags_Highlight flag to highlight items independently from the hovered state. (#7820) 96460a8a126 InputText: Added '\' and '/' as word seperator. (#7824, #7704) 79e83d65352 Docs: misc update. d42fa46dc6b Misc micro-optimizations related to hot-path of dealing with a large clipped tree. 692bee5f221 Added GetID(int) variant for consistency. (#7111) b3ba6b30952 Added io.ConfigNavSwapGamepadButtons to swap Activate/Cancel (A<>B) buttons, to match the typical "Nintendo/Japanese consoles" button layout when using Gamepad navigation. (#787, #5723) 3f9a90e2a3c Docs: added extraneous link to Getting Started section. b20f62b162e Obsoleted GetContentRegionMax(). 4227402b2fe Internals: removed GetContentRegionMaxAbs() which was only meaningfully used in place of GetContentRegionAvail(). 055b2e80fbe Moved everyone's best friend GetContentRegionAvail() to a more prominent position. aad86b8756b Obsoleted GetWindowContentRegionMin() and GetWindowContentRegionMax(). 55f54fa512f Internals: comment out obsolete g.ActiveIdUsingNavInputMask obsoleted two years ago. (#4921, #4858, #787, #1599, #323) ed356dc1812 MultiSelect: BoxSelect: fixed box-select from void setting nav id multiple times. 237165a9359 MultiSelect: fixed an issue caused by previous commit. a285835ac4a MultiSelect: add internal MultiSelectAddSetAll() helper. 79b77d91c98 MultiSelect: sequential SetRange merging not generally handled by box-select path, useful for others. e3da939b86f Groups, Tables: fixed EndGroup() failing to correctly capture current table occupied size. (#7543) b67b375ae69 Debug Log: fixed incorrect checkbox layout when partially clipped., doesn't parse 64-bits hex value as ImGuiID lookups. 97c6f4047cc CollapsingHeader: left-side outer extend matches right-side one (moved left by one pixel) 1230b4410cd Internals, TreeNode, Selectable: tweak span_all_columns paths for clarity. 4d8c56c8133 Internals, TreeNode: indent all render block into its own scope (aim is to add a is_visible test there later) fe09ebbe0a1 Backends: OpenGL3: Fixed unsupported option warning with apple clang (#7810) 605c8d71101 Demo: Property Editor: using ImGuiChildFlags_NavFlattened now that a bug is fixed. Fixed static analyzer. 97ff9bd3703 Nav: fixed c licking window decorations (e.g. resize borders) from losing focused item when within a child window using ImGuiChildFlags_NavFlattened. c3dca77a197 Demo: rework Property Editor. fd994943c2d Added a comment hinting at how to set IMGUI_API for shared librairies on e.g. Linux, macOS (#7806) da363363219 TabBar, Style: added style option for the size of the Tab-Bar Overline (#7804) eb72b5a8eee Backends: SDL3: Update for API changes: SDL_GetGamepads() memory ownership change. (#7807) f9cda1fa245 Inputs: added SetItemKeyOwner(ImGuiKey key) in public API. (#456, #2637, #2620, #2891, #3370, #3724, #4828, #5108, #5242, #5641) b6e313bc05d MultiSelect: using ImGuiMultiSelectFlags_NoRangeSelect ensure never having to interpolate between two ImGuiSelectionUserData. 168ef39984c Demo: moved menu bar code to its own function. 57eea6746e6 Demo: moved some fields inside a struct. 2546d0a0dbe Demo: moved ExampleTreeNode, ExampleMemberInfo above in the demo file. Tidying up index. d7e605d4309 Merge branch 'features/range_select' 02c31a8dd1f MultiSelect: added Changelog for the feature. Removed IMGUI_HAS_MULTI_SELECT. 2688562fd2d MultiSelect: Better document how TreeNode() is not trivially usable yet. 7814518049e MultiSelect: ImGuiSelectionBasicStorage: optimized for smaller insertion amounts in larger sets + fix caling batch select with same value. 1b635224465 MultiSelect: Box-Select: handle Esc to disable box-select. 2697cfe3546 MultiSelect: Box-Select: uses SetActiveIdUsingAllKeyboardKeys() to avoid nav interference, much like most drag operations. 7d4de84ee3c MultiSelect: added courtesy ImGuiMultiSelectFlags_NavWrapX flag so we can demo this until a nav api is designed. d411c9054ad MultiSelect: minor tidying up. 3f34c83bc6e MultiSelect: added ImGuiMultiSelectFlags_NoAutoClearOnReselect + tweak flags comments. (#7424) 529c73ba218 MultiSelect: Shift+Tab doesn't enable Shift select on landing item. a8a1f295126 MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_BoxSelect -> ImGuiMultiSelectFlags_BoxSelect2d. Which include not assuming one flag imply the other. c52346850d7 MultiSelect: ImGuiSelectionBasicStorage: added PreserveOrder, maintain implicit order data in storage. df664329cb5 MultiSelect: provide RangeDirection to allow selection handler to handler backward shift+click. 3ac367ff41b MultiSelect: ImGuiSelectionBasicStorage: (breaking) rework GetNextSelectedItem() api to avoid ambiguity/failure when user uses a zero id. f472f170540 Demo: Assets Browser: added a way to disable sorting and hide sorting options. c07864f64ab MultiSelect: ImGuiSelectionBasicStorage: move function bodies to cpp file. 2af3b2ac815 MultiSelect: ImGuiSelectionBasicStorage: simplify by removing compacting code (compacting may be opt-in?). e61612a6873 MultiSelect: ImGuiSelectionBasicStorage: rework to accept massive selections requests without flinching. e1fd25051e1 MultiSelect: ImGuiSelectionBasicStorage: added GetNextSelectedItem() to abstract selection storage from user. Amend Assets Browser demo to handle drag and drop correctly. c3d7aa252b3 MultiSelect: comments, header tweaks., simplication (some of it on wiki). db4898cb913 MultiSelect: added ImGuiSelectionExternalStorage helper. Simplify bool demo. f9caf4447a6 MultiSelect: fixed ImGuiSelectionBasicStorage::Swap() helper. c94cf6f01fe MultiSelect: added ImGuiSelectionBasicStorage::GetStorageIdFromIndex() indirection to be easier on the reader. ab995d3d4f3 MultiSelect: (breaking) Added 'items_count' parameter to BeginMultiSelect(). Will enable extra features, and remove equivalent param from ImGuiSelectionBasicStorage::ApplyRequests(. 443b034895c MultiSelect: mark parent child window as navigable into, with highlight. Assume user will always submit interactive items. f6b5caf82c7 MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_BoxSelect -> ImGuiMultiSelectFlags_BoxSelect1d, ImGuiMultiSelectFlags_BoxSelect2d -> ImGuiMultiSelectFlags_BoxSelect. 7bbbbea2004 MultiSelect: Box-Select: fixes for checkboxes support. Comments. 2f56df48398 MultiSelect: (breaking) renamed ImGuiSelectionBasicStorage::AdapterData to UserData. 1113f13f838 MultiSelect: Box-Select: fixed "when dragging from void" implementation messing with calling BeginMultiSelect() without a selection size. 81548cb6bf3 MultiSelect: added GetMultiSelectState() + store LastSelectionSize as provided by user, convenient for quick debugging and testing. dc0a1682e3b MultiSelect: Box-Select: when dragging from void, first hit item sets NavId by simulating a press, so navigation can resume from that spot. 65ebc0513b2 MultiSelect: Box-Select: minor refactor, tidying up. 9435a3185af RangeSelect/MultiSelect: (Breaking) Added current_selection_size to BeginMultiSelect(). 955210ae5bf MultiSelect: Demo: use Shortcut(). 0be238ec587 MultiSelect: Box-Select: fix preventing focus. amend determination of scope_hovered for decorated/non-child windows + avoid stealing NavId. (#7424) e7a734f78d1 MultiSelect: added ImGuiMultiSelectFlags_NoAutoSelect, ImGuiMultiSelectFlags_NoAutoClear features + added Checkbox Demo a639346fbaf MultiSelect: Demo: make various child windows resizable, with synched heights for the dual list box demo. 2111e3597bc MultiSelect: Comments + tweaked location for widgets to test ImGuiItemFlags_IsMultiSelect to avoid misleading into thinking doing it before ItemAdd() is necessary. dbc67bbf23f MultiSelect: Simplified ImGuiSelectionBasicStorage by using a single SetItemSelected() entry point. f36a03c317a MultiSelect: (Breaking) merge ImGuiSelectionRequestType_Clear and ImGuiSelectionRequestType_SelectAll into ImGuiSelectionRequestType_SetAll., rename ImGuiSelectionRequest::RangeSelected to Selected. b13a78e6b2d MultiSelect: Fixed ImGuiMultiSelectFlags_SelectOnClickRelease over tree node arrow. 9337151a013 MultiSelect: Box-Select: Fixed initial drag from not claiming hovered id, preventing window behind to move for a frame. 3141d87ef81 MultiSelect: Box-Select: Fixed CTRL+drag from void clearing items. 8312c75fef0 MultiSelect: Added ImGuiMultiSelectFlags_NoRangeSelect. Fixed ImGuiMultiSelectFlags_ScopeRect not querying proper window hover. d439f590ab5 MultiSelect: Comments + Assets Browser : Tweak colors. 6c4bf8e56ec MultiSelect: Fixed ImGuiSelectionBasicStorage::ApplyRequests() incorrectly maintaining selection size on SelectAll. f3d77d8e71b MultiSelect: Box-Select: Further refactor to extra mode code away from multi-select function into box-select funcitons. 907268a4305 MultiSelect: Box-Select: Fixed scrolling on high framerates. 5d9de14493c MultiSelect: Box-Select: Refactor: Renames. 75bac1aac67 MultiSelect: Box-Select: Refactor into its own structure, designed for single-instance but closer to being reusable outside Multi-Select. 15391762ddb MultiSelect: Box-Select: Added ImGuiMultiSelectFlags_BoxSelect2d support. Enabled in Asset Browser. Selectable() supports it. 1ac469b50f5 MultiSelect: Box-Select: Fixed holes when using with clipper (in 1D list.) 7546a2d345c MultiSelect: Demo: Assets Browser: track scrolling target so we can roughly land on hovered item. 750e23998f5 MultiSelect: Demo: Assets Browser: added deletion support. Store ID in selection. Moved QueueDeletion to local var to emphasis that this is a user extension. 51fe0bfcf64 MultiSelect: reworked comments in imgui.h now that we have our own section. 0f633c1d99b MultiSelect: move demo's ExampleSelection to main api as a convenient ImGuiSelectionBasicStorage for basic users. e0282347db7 MultiSelect: remove ImGuiSelectionRequest/ImGuiMultiSelectIO details from public api to reduce confusion + comments. 0af6fbb51d5 MultiSelect: added support for nested/stacked BeginMultiSelect(). b747d6fe591 MultiSelect: Demo: rework and move selection adapter inside ExampleSelection. aa4d64be925 MultiSelect: Box-Select: added scroll support. f904a6646c2 MultiSelect: Box-Select: added support for ImGuiMultiSelectFlags_BoxSelect. 90305c57e43 MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_ClearOnClickWindowVoid -> ImGuiMultiSelectFlags_ClearOnClickVoid. Added ImGuiMultiSelectFlags_ScopeWindow, ImGuiMultiSelectFlags_ScopeRect. bf017954830 Demo: Assets Browser: add hit spacing, requierd for box-select patterns. 3d41994a632 MultiSelect: simplify clearing ImGuiMultiSelectTempData. 33fc61a091e MultiSelect: use a single ImGuiMultiSelectIO buffer. 5941edd9f7c MultiSelect: added support for recovery in ErrorCheckEndWindowRecover(). c527cba4700 MultiSelect: we don't need to ever write to EndIO.RangeSrcItem as this is not meant to be used. 6feff6ff051 MultiSelect: (Breaking) io contains a ImVector<ImGuiSelectionRequest> list. a6adfb2b494 MultiSelect: added missing call on Shutdown(). Better reuse selection buffer. c3998b70ccb MultiSelect: clarified purpose and use of IsItemToggledSelection(). Added assert. Moved to multi-selection section of imgui.h. 2765fdb43ea MultiSelect: removed seemingly unnecessary block in BeginMultiSelect(). 88df5901458 Demo: Assets Browser: store items, sorting, type overlay. d18e57e6732 Demo: Assets Browser: Added assets browser demo. 82de6c470b1 MultiSelect: Added ImGuiMultiSelectFlags_SelectOnClickRelease to allow dragging an unselected item without altering selection + update drag and drop demo. 5628dda5a5c MultiSelect: move shared logic to MultiSelectItemHeader(). 9da4efed2a1 MultiSelect: moved RequestClear output so it'll match request list version better. Use Storage->RangeSrcItem in EndMultiSelect(). a6f43dfadda MultiSelect: ImGuiMultiSelectIO's field are not used during loop anymore, stripping them out of comments. dce02f5c4b0 Demo: Dual List Box: Added a dual list box (6648) ba698df7bbd MultiSelect: Demo: Deletion: Various renames to clarify. Use adapter and item list in both ApplyDeletion functions. e1d21092087 MultiSelect: Demo: Deletion: Rework ApplyDeletionPreLoop to use adapter + fix PostLoop not using right value of RequestFocusItem. fa516c3d765 MultiSelect: Demo: Make ExampleSelection use ImGuiID. More self-explanatory. 530155d85aa MultiSelect: Demo: Remove UserDataToIndex from ExampleSelectionAdapter. 8c1f659b3dc MultiSelect: Demo: rework ExampleSelection with an ExampleSelectionAdapter layer, allowing to share more code accross examples using different storage systems. 8fe6b319528 MultiSelect: (Breaking) Removed RangeSrcPassedBy in favor of favoring user to call IncludeByIndex(RangeSrcItem) which is easier/simpler to honor. 6ddc5f38afa MultiSelect: Demo: added simpler demo using Clipper. Clarify RangeSrcPassedBy doc. c3753809b1d MultiSelect: Demo: rework ExampleSelection names to map better to typical user code + variety of Comments tweaks. ff95fdb668a MultiSelect: (Breaking) RequestSetRange's parameter are RangeFirstItem...RangeLastItem (which was always ordered unlike RangeSrcItem...RangeDstItme). Removed RangeDstItem. Removed RangeDirection. af83a3eea44 MultiSelect: clear selection when leaving a scope with a nav directional request. 6821401a3f0 MultiSelect: Tweak debug log to print decimal+hex values for item data. c9eb3714e8b MultiSelect: move HasSelectionData to ImGuiItemFlags to facilitate copying around in standardized fieds. e82b49d2d46 MultiSelect: (Breaking) Use ImGuiSelectionUserData (= ImS64) instead of void* for selection user data. 140a2f0565b MultiSelect: Comments, tweaks. 847b1dde8c5 MultiSelect: (Breaking) Fix + Rename ImGuiMultiSelectFlags_NoMultiSelect to ImGuiMultiSelectFlags_SingleSelect as it seems easier to grasp. 0cf376348bc MultiSelect: Cleanup unused comments/code. ab9326f4ae9 MultiSelect: Fixed right-click handling in MultiSelectItemFooter() when not focused. e3616e151ff MultiSelect: Demo: Delete items from menu. c0035705cae MultiSelect: Further simplication of user code to support Deletion. df1eeb9a20d MultiSelect: Maintain NavIdSelected for user. Simplify deletion demo. 9223ffc2552 MultiSelect: (Breaking) BeginMultiSelect() doesn't need two last params maintained by users. Moving some storage from user to core. Proper deletion demo. 564dde0ee34 MultiSelect: Demo: first-draft of user-side deletion idioms. 387fc138945 MultiSelect: Clarify and better enforce lifetime of BeginMultiSelect() value. 961b81c3628 MultiSelect: Tidying up/simpllifying MultiSelectItemFooter(). 1ea9ca748cd MultiSelect: Remove the need for using IsItemToggledSelection(). Update comments. 6ef70a97fd4 MultiSelect: Remove ImGuiMultiSelectFlags_NoUnselect because I currently can't find use for this specific design. ccf43d6a964 MultiSelect: (Breaking) Renamed 'RangeValue' -> 'RangeSelected' + amend comments. a83326bc529 MultiSelect: (Breaking) Renamed 'RangeSrc -> 'RangeSrcItem', "RangeDst' -> 'RangeDstItem' a39f9e76614 MultiSelect: Internals rename of IO fields to avoid ambiguity with io/rw concepts + memset constructors, tweaks. c61ada200f9 MultiSelect: Demo tweak. Removed multi-scope from Advanced (too messy), made it a seperate mini-demo. 35b5ebc9b55 MultiSelect: (Breaking) Rename ImGuiMultiSelectData to ImGuiMultiSelectIO. 11bcae1ebd4 MultiSelect: refactor before introducing persistant state pool and to facilitate adding recursion + debug log calls. 5d71314f712 MultiSelect: removed DragDropActive/preserve_existing_selection logic which seems unused + comments. 85954c845e3 MultiSelect: Enter can alter selection if current item is not selected. d2f208a30c4 MultiSelect: made SetNextItemSelectionData() optional to allow disjoint selection (e.g. with a CollapsingHeader between items). Amend demo. 815c61b82eb MultiSelect: Fixed needing to set RangeSrcPassedBy when not using clipper. 78cb1661cb5 MultiSelect: Shallow tweaks/refactors. a05700e3272 MultiSelect: Enter doesn't alter selection (unlike Space). 35bbadcf0c7 MultiSelect: Added ImGuiMultiSelectFlags_ClearOnClickWindowVoid. + Demo: showcase multiple selection scopes in same window. b91ae122e15 MultiSelect: Demo: Added pointer indirection and indent level. 19086c1c489 MultiSelect: Added ImGuiMultiSelectFlags_ClearOnEscape (unsure of best design), expose IsFocused for custom shortcuts. 919cac14829 MultiSelect: Demo: Add a simpler version. ad5d3c9bff8 MultiSelect: Fixed issue with Ctrl+click on TreeNode + amend demo to test drag and drop. b9721c1ed71 MultiSelect: Temporary fix/work-around for child/popup to not inherit MultiSelectEnabled flag, until we make mulit-select data stackable. 00c4b8f2a34 MultiSelect: Fix testing key mods from after the nav request (remove need to hold the mod longer) 3ba3f0d905f MultiSelect: Fix Selectable() ambiguous return value, clarify need to use IsItemToggledSelection(). 0479b188d06 MultiSelect: Comments. Tweak demo. 9aeebd24f77 MultiSelect: Fixed CTRL+A not testing focus scope id. Fixed CTRL+A not testing active id. Added demo code. 7abda179af6 MultiSelect: Fix for TreeNode following merge of 011d4755. Demo: basic test for tree nodes. 9c7183dd048 MultiSelect: Transition to use FocusScope bits merged in master. 4afbfd5e719 MultiSelect: Renamed SetNextItemMultiSelectData() to SetNextItemSelectionUserData() 17c4c2154a1 MultiSelect: Demo sharing selection helper code. Fixed static analyzer warnings. 57da88093f5 MultiSelect: Added IMGUI_HAS_MULTI_SELECT define. Fixed right-click toggling selection without clearing active id, could lead to MarkItemEdited() asserting. Fixed demo. 8947c35fa1e MultiSelect: Removed SelectableSpacing as I'm not sure it is of use for now (history insert) 554db6bc0f3 MultiSelect: WIP range-select (#1861) (rebased six millions times) git-subtree-dir: external/imgui/imgui git-subtree-split: 8199457a7d9e453f8d3d9cadc14683fb54a858b5
137 lines
11 KiB
C++
137 lines
11 KiB
C++
//-----------------------------------------------------------------------------
|
|
// DEAR IMGUI COMPILE-TIME OPTIONS
|
|
// Runtime options (clipboard callbacks, enabling various features, etc.) can generally be set via the ImGuiIO structure.
|
|
// You can use ImGui::SetAllocatorFunctions() before calling ImGui::CreateContext() to rewire memory allocation functions.
|
|
//-----------------------------------------------------------------------------
|
|
// A) You may edit imconfig.h (and not overwrite it when updating Dear ImGui, or maintain a patch/rebased branch with your modifications to it)
|
|
// B) or '#define IMGUI_USER_CONFIG "my_imgui_config.h"' in your project and then add directives in your own file without touching this template.
|
|
//-----------------------------------------------------------------------------
|
|
// You need to make sure that configuration settings are defined consistently _everywhere_ Dear ImGui is used, which include the imgui*.cpp
|
|
// files but also _any_ of your code that uses Dear ImGui. This is because some compile-time options have an affect on data structures.
|
|
// Defining those options in imconfig.h will ensure every compilation unit gets to see the same data structure layouts.
|
|
// Call IMGUI_CHECKVERSION() from your .cpp file to verify that the data structures your files are using are matching the ones imgui.cpp is using.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
//---- Define assertion handler. Defaults to calling assert().
|
|
// If your macro uses multiple statements, make sure is enclosed in a 'do { .. } while (0)' block so it can be used as a single statement.
|
|
//#define IM_ASSERT(_EXPR) MyAssert(_EXPR)
|
|
//#define IM_ASSERT(_EXPR) ((void)(_EXPR)) // Disable asserts
|
|
|
|
//---- Define attributes of all API symbols declarations, e.g. for DLL under Windows
|
|
// Using Dear ImGui via a shared library is not recommended, because of function call overhead and because we don't guarantee backward nor forward ABI compatibility.
|
|
// - Windows DLL users: heaps and globals are not shared across DLL boundaries! You will need to call SetCurrentContext() + SetAllocatorFunctions()
|
|
// for each static/DLL boundary you are calling from. Read "Context and Memory Allocators" section of imgui.cpp for more details.
|
|
//#define IMGUI_API __declspec(dllexport) // MSVC Windows: DLL export
|
|
//#define IMGUI_API __declspec(dllimport) // MSVC Windows: DLL import
|
|
//#define IMGUI_API __attribute__((visibility("default"))) // GCC/Clang: override visibility when set is hidden
|
|
|
|
//---- Don't define obsolete functions/enums/behaviors. Consider enabling from time to time after updating to clean your code of obsolete function/names.
|
|
//#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS
|
|
//#define IMGUI_DISABLE_OBSOLETE_KEYIO // 1.87+ disable legacy io.KeyMap[]+io.KeysDown[] in favor io.AddKeyEvent(). This is automatically done by IMGUI_DISABLE_OBSOLETE_FUNCTIONS.
|
|
|
|
//---- Disable all of Dear ImGui or don't implement standard windows/tools.
|
|
// It is very strongly recommended to NOT disable the demo windows and debug tool during development. They are extremely useful in day to day work. Please read comments in imgui_demo.cpp.
|
|
//#define IMGUI_DISABLE // Disable everything: all headers and source files will be empty.
|
|
//#define IMGUI_DISABLE_DEMO_WINDOWS // Disable demo windows: ShowDemoWindow()/ShowStyleEditor() will be empty.
|
|
//#define IMGUI_DISABLE_DEBUG_TOOLS // Disable metrics/debugger and other debug tools: ShowMetricsWindow(), ShowDebugLogWindow() and ShowIDStackToolWindow() will be empty.
|
|
|
|
//---- Don't implement some functions to reduce linkage requirements.
|
|
//#define IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS // [Win32] Don't implement default clipboard handler. Won't use and link with OpenClipboard/GetClipboardData/CloseClipboard etc. (user32.lib/.a, kernel32.lib/.a)
|
|
//#define IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with Visual Studio] Implement default IME handler (require imm32.lib/.a, auto-link for Visual Studio, -limm32 on command-line for MinGW)
|
|
//#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS // [Win32] [Default with non-Visual Studio compilers] Don't implement default IME handler (won't require imm32.lib/.a)
|
|
//#define IMGUI_DISABLE_WIN32_FUNCTIONS // [Win32] Won't use and link with any Win32 function (clipboard, IME).
|
|
//#define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS // [OSX] Implement default OSX clipboard handler (need to link with '-framework ApplicationServices', this is why this is not the default).
|
|
//#define IMGUI_DISABLE_DEFAULT_SHELL_FUNCTIONS // Don't implement default io.PlatformOpenInShellFn() handler (Win32: ShellExecute(), require shell32.lib/.a, Mac/Linux: use system("")).
|
|
//#define IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS // Don't implement ImFormatString/ImFormatStringV so you can implement them yourself (e.g. if you don't want to link with vsnprintf)
|
|
//#define IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS // Don't implement ImFabs/ImSqrt/ImPow/ImFmod/ImCos/ImSin/ImAcos/ImAtan2 so you can implement them yourself.
|
|
//#define IMGUI_DISABLE_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle at all (replace them with dummies)
|
|
//#define IMGUI_DISABLE_DEFAULT_FILE_FUNCTIONS // Don't implement ImFileOpen/ImFileClose/ImFileRead/ImFileWrite and ImFileHandle so you can implement them yourself if you don't want to link with fopen/fclose/fread/fwrite. This will also disable the LogToTTY() function.
|
|
//#define IMGUI_DISABLE_DEFAULT_ALLOCATORS // Don't implement default allocators calling malloc()/free() to avoid linking with them. You will need to call ImGui::SetAllocatorFunctions().
|
|
//#define IMGUI_DISABLE_SSE // Disable use of SSE intrinsics even if available
|
|
|
|
//---- Enable Test Engine / Automation features.
|
|
//#define IMGUI_ENABLE_TEST_ENGINE // Enable imgui_test_engine hooks. Generally set automatically by include "imgui_te_config.h", see Test Engine for details.
|
|
|
|
//---- Include imgui_user.h at the end of imgui.h as a convenience
|
|
// May be convenient for some users to only explicitly include vanilla imgui.h and have extra stuff included.
|
|
//#define IMGUI_INCLUDE_IMGUI_USER_H
|
|
//#define IMGUI_USER_H_FILENAME "my_folder/my_imgui_user.h"
|
|
|
|
//---- Pack colors to BGRA8 instead of RGBA8 (to avoid converting from one to another)
|
|
//#define IMGUI_USE_BGRA_PACKED_COLOR
|
|
|
|
//---- Use 32-bit for ImWchar (default is 16-bit) to support Unicode planes 1-16. (e.g. point beyond 0xFFFF like emoticons, dingbats, symbols, shapes, ancient languages, etc...)
|
|
//#define IMGUI_USE_WCHAR32
|
|
|
|
//---- Avoid multiple STB libraries implementations, or redefine path/filenames to prioritize another version
|
|
// By default the embedded implementations are declared static and not available outside of Dear ImGui sources files.
|
|
//#define IMGUI_STB_TRUETYPE_FILENAME "my_folder/stb_truetype.h"
|
|
//#define IMGUI_STB_RECT_PACK_FILENAME "my_folder/stb_rect_pack.h"
|
|
//#define IMGUI_STB_SPRINTF_FILENAME "my_folder/stb_sprintf.h" // only used if IMGUI_USE_STB_SPRINTF is defined.
|
|
//#define IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION
|
|
//#define IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION
|
|
//#define IMGUI_DISABLE_STB_SPRINTF_IMPLEMENTATION // only disabled if IMGUI_USE_STB_SPRINTF is defined.
|
|
|
|
//---- Use stb_sprintf.h for a faster implementation of vsnprintf instead of the one from libc (unless IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS is defined)
|
|
// Compatibility checks of arguments and formats done by clang and GCC will be disabled in order to support the extra formats provided by stb_sprintf.h.
|
|
//#define IMGUI_USE_STB_SPRINTF
|
|
|
|
//---- Use FreeType to build and rasterize the font atlas (instead of stb_truetype which is embedded by default in Dear ImGui)
|
|
// Requires FreeType headers to be available in the include path. Requires program to be compiled with 'misc/freetype/imgui_freetype.cpp' (in this repository) + the FreeType library (not provided).
|
|
// On Windows you may use vcpkg with 'vcpkg install freetype --triplet=x64-windows' + 'vcpkg integrate install'.
|
|
//#define IMGUI_ENABLE_FREETYPE
|
|
|
|
//---- Use FreeType+lunasvg library to render OpenType SVG fonts (SVGinOT)
|
|
// Requires lunasvg headers to be available in the include path + program to be linked with the lunasvg library (not provided).
|
|
// Only works in combination with IMGUI_ENABLE_FREETYPE.
|
|
// (implementation is based on Freetype's rsvg-port.c which is licensed under CeCILL-C Free Software License Agreement)
|
|
//#define IMGUI_ENABLE_FREETYPE_LUNASVG
|
|
|
|
//---- Use stb_truetype to build and rasterize the font atlas (default)
|
|
// The only purpose of this define is if you want force compilation of the stb_truetype backend ALONG with the FreeType backend.
|
|
//#define IMGUI_ENABLE_STB_TRUETYPE
|
|
|
|
//---- Define constructor and implicit cast operators to convert back<>forth between your math types and ImVec2/ImVec4.
|
|
// This will be inlined as part of ImVec2 and ImVec4 class declarations.
|
|
/*
|
|
#define IM_VEC2_CLASS_EXTRA \
|
|
constexpr ImVec2(const MyVec2& f) : x(f.x), y(f.y) {} \
|
|
operator MyVec2() const { return MyVec2(x,y); }
|
|
|
|
#define IM_VEC4_CLASS_EXTRA \
|
|
constexpr ImVec4(const MyVec4& f) : x(f.x), y(f.y), z(f.z), w(f.w) {} \
|
|
operator MyVec4() const { return MyVec4(x,y,z,w); }
|
|
*/
|
|
//---- ...Or use Dear ImGui's own very basic math operators.
|
|
//#define IMGUI_DEFINE_MATH_OPERATORS
|
|
|
|
//---- Use 32-bit vertex indices (default is 16-bit) is one way to allow large meshes with more than 64K vertices.
|
|
// Your renderer backend will need to support it (most example renderer backends support both 16/32-bit indices).
|
|
// Another way to allow large meshes while keeping 16-bit indices is to handle ImDrawCmd::VtxOffset in your renderer.
|
|
// Read about ImGuiBackendFlags_RendererHasVtxOffset for details.
|
|
//#define ImDrawIdx unsigned int
|
|
|
|
//---- Override ImDrawCallback signature (will need to modify renderer backends accordingly)
|
|
//struct ImDrawList;
|
|
//struct ImDrawCmd;
|
|
//typedef void (*MyImDrawCallback)(const ImDrawList* draw_list, const ImDrawCmd* cmd, void* my_renderer_user_data);
|
|
//#define ImDrawCallback MyImDrawCallback
|
|
|
|
//---- Debug Tools: Macro to break in Debugger (we provide a default implementation of this in the codebase)
|
|
// (use 'Metrics->Tools->Item Picker' to pick widgets with the mouse and break into them for easy debugging.)
|
|
//#define IM_DEBUG_BREAK IM_ASSERT(0)
|
|
//#define IM_DEBUG_BREAK __debugbreak()
|
|
|
|
//---- Debug Tools: Enable slower asserts
|
|
//#define IMGUI_DEBUG_PARANOID
|
|
|
|
//---- Tip: You can add extra functions within the ImGui:: namespace from anywhere (e.g. your own sources/header files)
|
|
/*
|
|
namespace ImGui
|
|
{
|
|
void MyFunction(const char* name, MyMatrix44* mtx);
|
|
}
|
|
*/
|