mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-30 20:51:06 +01:00 
			
		
		
		
	Internals: shuffling some sections (2)
This commit is contained in:
		
							
								
								
									
										191
									
								
								imgui_internal.h
									
									
									
									
									
								
							
							
						
						
									
										191
									
								
								imgui_internal.h
									
									
									
									
									
								
							| @@ -17,7 +17,8 @@ Index of this file: | ||||
| // [SECTION] Macros | ||||
| // [SECTION] Generic helpers | ||||
| // [SECTION] ImDrawList support | ||||
| // [SECTION] Misc flags, enums and data structures | ||||
| // [SECTION] Widgets support: flags, enums, data structures | ||||
| // [SECTION] Columns support | ||||
| // [SECTION] Settings support | ||||
| // [SECTION] ImGuiContext (main imgui context) | ||||
| // [SECTION] ImGuiWindowTempData, ImGuiWindow | ||||
| @@ -552,9 +553,45 @@ struct ImDrawDataBuilder | ||||
| }; | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] Misc flags, enums and data structures | ||||
| // [SECTION] Widgets support: flags, enums, data structures | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| // Transient per-window flags, reset at the beginning of the frame. For child window, inherited from parent on first Begin(). | ||||
| // This is going to be exposed in imgui.h when stabilized enough. | ||||
| enum ImGuiItemFlags_ | ||||
| { | ||||
|     ImGuiItemFlags_None                     = 0, | ||||
|     ImGuiItemFlags_NoTabStop                = 1 << 0,  // false | ||||
|     ImGuiItemFlags_ButtonRepeat             = 1 << 1,  // false    // Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings. | ||||
|     ImGuiItemFlags_Disabled                 = 1 << 2,  // false    // [BETA] Disable interactions but doesn't affect visuals yet. See github.com/ocornut/imgui/issues/211 | ||||
|     ImGuiItemFlags_NoNav                    = 1 << 3,  // false | ||||
|     ImGuiItemFlags_NoNavDefaultFocus        = 1 << 4,  // false | ||||
|     ImGuiItemFlags_SelectableDontClosePopup = 1 << 5,  // false    // MenuItem/Selectable() automatically closes current Popup window | ||||
|     ImGuiItemFlags_MixedValue               = 1 << 6,  // false    // [BETA] Represent a mixed/indeterminate value, generally multi-selection where values differ. Currently only supported by Checkbox() (later should support all sorts of widgets) | ||||
|     ImGuiItemFlags_Default_                 = 0 | ||||
| }; | ||||
|  | ||||
| // Storage for LastItem data | ||||
| enum ImGuiItemStatusFlags_ | ||||
| { | ||||
|     ImGuiItemStatusFlags_None               = 0, | ||||
|     ImGuiItemStatusFlags_HoveredRect        = 1 << 0, | ||||
|     ImGuiItemStatusFlags_HasDisplayRect     = 1 << 1, | ||||
|     ImGuiItemStatusFlags_Edited             = 1 << 2,   // Value exposed by item was edited in the current frame (should match the bool return value of most widgets) | ||||
|     ImGuiItemStatusFlags_ToggledSelection   = 1 << 3,   // Set when Selectable(), TreeNode() reports toggling a selection. We can't report "Selected" because reporting the change allows us to handle clipping with less issues. | ||||
|     ImGuiItemStatusFlags_ToggledOpen        = 1 << 4,   // Set when TreeNode() reports toggling their open state. | ||||
|     ImGuiItemStatusFlags_HasDeactivated     = 1 << 5,   // Set if the widget/group is able to provide data for the ImGuiItemStatusFlags_Deactivated flag. | ||||
|     ImGuiItemStatusFlags_Deactivated        = 1 << 6    // Only valid if ImGuiItemStatusFlags_HasDeactivated is set. | ||||
|  | ||||
| #ifdef IMGUI_ENABLE_TEST_ENGINE | ||||
|     , // [imgui_tests only] | ||||
|     ImGuiItemStatusFlags_Openable           = 1 << 10,  // | ||||
|     ImGuiItemStatusFlags_Opened             = 1 << 11,  // | ||||
|     ImGuiItemStatusFlags_Checkable          = 1 << 12,  // | ||||
|     ImGuiItemStatusFlags_Checked            = 1 << 13   // | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| enum ImGuiButtonFlags_ | ||||
| { | ||||
|     ImGuiButtonFlags_None                   = 0, | ||||
| @@ -597,17 +634,6 @@ enum ImGuiDragFlags_ | ||||
|     ImGuiDragFlags_Vertical                 = 1 << 0 | ||||
| }; | ||||
|  | ||||
| enum ImGuiColumnsFlags_ | ||||
| { | ||||
|     // Default: 0 | ||||
|     ImGuiColumnsFlags_None                  = 0, | ||||
|     ImGuiColumnsFlags_NoBorder              = 1 << 0,   // Disable column dividers | ||||
|     ImGuiColumnsFlags_NoResize              = 1 << 1,   // Disable resizing columns when clicking on the dividers | ||||
|     ImGuiColumnsFlags_NoPreserveWidths      = 1 << 2,   // Disable column width preservation when adjusting columns | ||||
|     ImGuiColumnsFlags_NoForceWithinWindow   = 1 << 3,   // Disable forcing columns to fit within window | ||||
|     ImGuiColumnsFlags_GrowParentContentsSize= 1 << 4    // (WIP) Restore pre-1.51 behavior of extending the parent window contents size but _without affecting the columns width at all_. Will eventually remove. | ||||
| }; | ||||
|  | ||||
| // Extend ImGuiSelectableFlags_ | ||||
| enum ImGuiSelectableFlagsPrivate_ | ||||
| { | ||||
| @@ -634,42 +660,6 @@ enum ImGuiSeparatorFlags_ | ||||
|     ImGuiSeparatorFlags_SpanAllColumns      = 1 << 2 | ||||
| }; | ||||
|  | ||||
| // Transient per-window flags, reset at the beginning of the frame. For child window, inherited from parent on first Begin(). | ||||
| // This is going to be exposed in imgui.h when stabilized enough. | ||||
| enum ImGuiItemFlags_ | ||||
| { | ||||
|     ImGuiItemFlags_None                     = 0, | ||||
|     ImGuiItemFlags_NoTabStop                = 1 << 0,  // false | ||||
|     ImGuiItemFlags_ButtonRepeat             = 1 << 1,  // false    // Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings. | ||||
|     ImGuiItemFlags_Disabled                 = 1 << 2,  // false    // [BETA] Disable interactions but doesn't affect visuals yet. See github.com/ocornut/imgui/issues/211 | ||||
|     ImGuiItemFlags_NoNav                    = 1 << 3,  // false | ||||
|     ImGuiItemFlags_NoNavDefaultFocus        = 1 << 4,  // false | ||||
|     ImGuiItemFlags_SelectableDontClosePopup = 1 << 5,  // false    // MenuItem/Selectable() automatically closes current Popup window | ||||
|     ImGuiItemFlags_MixedValue               = 1 << 6,  // false    // [BETA] Represent a mixed/indeterminate value, generally multi-selection where values differ. Currently only supported by Checkbox() (later should support all sorts of widgets) | ||||
|     ImGuiItemFlags_Default_                 = 0 | ||||
| }; | ||||
|  | ||||
| // Storage for LastItem data | ||||
| enum ImGuiItemStatusFlags_ | ||||
| { | ||||
|     ImGuiItemStatusFlags_None               = 0, | ||||
|     ImGuiItemStatusFlags_HoveredRect        = 1 << 0, | ||||
|     ImGuiItemStatusFlags_HasDisplayRect     = 1 << 1, | ||||
|     ImGuiItemStatusFlags_Edited             = 1 << 2,   // Value exposed by item was edited in the current frame (should match the bool return value of most widgets) | ||||
|     ImGuiItemStatusFlags_ToggledSelection   = 1 << 3,   // Set when Selectable(), TreeNode() reports toggling a selection. We can't report "Selected" because reporting the change allows us to handle clipping with less issues. | ||||
|     ImGuiItemStatusFlags_ToggledOpen        = 1 << 4,   // Set when TreeNode() reports toggling their open state. | ||||
|     ImGuiItemStatusFlags_HasDeactivated     = 1 << 5,   // Set if the widget/group is able to provide data for the ImGuiItemStatusFlags_Deactivated flag. | ||||
|     ImGuiItemStatusFlags_Deactivated        = 1 << 6    // Only valid if ImGuiItemStatusFlags_HasDeactivated is set. | ||||
|  | ||||
| #ifdef IMGUI_ENABLE_TEST_ENGINE | ||||
|     , // [imgui_tests only] | ||||
|     ImGuiItemStatusFlags_Openable           = 1 << 10,  // | ||||
|     ImGuiItemStatusFlags_Opened             = 1 << 11,  // | ||||
|     ImGuiItemStatusFlags_Checkable          = 1 << 12,  // | ||||
|     ImGuiItemStatusFlags_Checked            = 1 << 13   // | ||||
| #endif | ||||
| }; | ||||
|  | ||||
| enum ImGuiTextFlags_ | ||||
| { | ||||
|     ImGuiTextFlags_None = 0, | ||||
| @@ -897,50 +887,6 @@ struct ImGuiPopupData | ||||
|     ImGuiPopupData() { PopupId = 0; Window = SourceWindow = NULL; OpenFrameCount = -1; OpenParentId = 0; } | ||||
| }; | ||||
|  | ||||
| struct ImGuiColumnData | ||||
| { | ||||
|     float               OffsetNorm;         // Column start offset, normalized 0.0 (far left) -> 1.0 (far right) | ||||
|     float               OffsetNormBeforeResize; | ||||
|     ImGuiColumnsFlags   Flags;              // Not exposed | ||||
|     ImRect              ClipRect; | ||||
|  | ||||
|     ImGuiColumnData()   { OffsetNorm = OffsetNormBeforeResize = 0.0f; Flags = ImGuiColumnsFlags_None; } | ||||
| }; | ||||
|  | ||||
| struct ImGuiColumns | ||||
| { | ||||
|     ImGuiID             ID; | ||||
|     ImGuiColumnsFlags   Flags; | ||||
|     bool                IsFirstFrame; | ||||
|     bool                IsBeingResized; | ||||
|     int                 Current; | ||||
|     int                 Count; | ||||
|     float               OffMinX, OffMaxX;       // Offsets from HostWorkRect.Min.x | ||||
|     float               LineMinY, LineMaxY; | ||||
|     float               HostCursorPosY;         // Backup of CursorPos at the time of BeginColumns() | ||||
|     float               HostCursorMaxPosX;      // Backup of CursorMaxPos at the time of BeginColumns() | ||||
|     ImRect              HostClipRect;           // Backup of ClipRect at the time of BeginColumns() | ||||
|     ImRect              HostWorkRect;           // Backup of WorkRect at the time of BeginColumns() | ||||
|     ImVector<ImGuiColumnData> Columns; | ||||
|     ImDrawListSplitter  Splitter; | ||||
|  | ||||
|     ImGuiColumns()      { Clear(); } | ||||
|     void Clear() | ||||
|     { | ||||
|         ID = 0; | ||||
|         Flags = ImGuiColumnsFlags_None; | ||||
|         IsFirstFrame = false; | ||||
|         IsBeingResized = false; | ||||
|         Current = 0; | ||||
|         Count = 1; | ||||
|         OffMinX = OffMaxX = 0.0f; | ||||
|         LineMinY = LineMaxY = 0.0f; | ||||
|         HostCursorPosY = 0.0f; | ||||
|         HostCursorMaxPosX = 0.0f; | ||||
|         Columns.clear(); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| struct ImGuiNavMoveResult | ||||
| { | ||||
|     ImGuiWindow*    Window;             // Best candidate window | ||||
| @@ -1025,6 +971,65 @@ struct ImGuiPtrOrIndex | ||||
|     ImGuiPtrOrIndex(int index)  { Ptr = NULL; Index = index; } | ||||
| }; | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] Columns support | ||||
| //----------------------------------------------------------------------------- | ||||
|  | ||||
| enum ImGuiColumnsFlags_ | ||||
| { | ||||
|     // Default: 0 | ||||
|     ImGuiColumnsFlags_None                  = 0, | ||||
|     ImGuiColumnsFlags_NoBorder              = 1 << 0,   // Disable column dividers | ||||
|     ImGuiColumnsFlags_NoResize              = 1 << 1,   // Disable resizing columns when clicking on the dividers | ||||
|     ImGuiColumnsFlags_NoPreserveWidths      = 1 << 2,   // Disable column width preservation when adjusting columns | ||||
|     ImGuiColumnsFlags_NoForceWithinWindow   = 1 << 3,   // Disable forcing columns to fit within window | ||||
|     ImGuiColumnsFlags_GrowParentContentsSize= 1 << 4    // (WIP) Restore pre-1.51 behavior of extending the parent window contents size but _without affecting the columns width at all_. Will eventually remove. | ||||
| }; | ||||
|  | ||||
| struct ImGuiColumnData | ||||
| { | ||||
|     float               OffsetNorm;         // Column start offset, normalized 0.0 (far left) -> 1.0 (far right) | ||||
|     float               OffsetNormBeforeResize; | ||||
|     ImGuiColumnsFlags   Flags;              // Not exposed | ||||
|     ImRect              ClipRect; | ||||
|  | ||||
|     ImGuiColumnData()   { OffsetNorm = OffsetNormBeforeResize = 0.0f; Flags = ImGuiColumnsFlags_None; } | ||||
| }; | ||||
|  | ||||
| struct ImGuiColumns | ||||
| { | ||||
|     ImGuiID             ID; | ||||
|     ImGuiColumnsFlags   Flags; | ||||
|     bool                IsFirstFrame; | ||||
|     bool                IsBeingResized; | ||||
|     int                 Current; | ||||
|     int                 Count; | ||||
|     float               OffMinX, OffMaxX;       // Offsets from HostWorkRect.Min.x | ||||
|     float               LineMinY, LineMaxY; | ||||
|     float               HostCursorPosY;         // Backup of CursorPos at the time of BeginColumns() | ||||
|     float               HostCursorMaxPosX;      // Backup of CursorMaxPos at the time of BeginColumns() | ||||
|     ImRect              HostClipRect;           // Backup of ClipRect at the time of BeginColumns() | ||||
|     ImRect              HostWorkRect;           // Backup of WorkRect at the time of BeginColumns() | ||||
|     ImVector<ImGuiColumnData> Columns; | ||||
|     ImDrawListSplitter  Splitter; | ||||
|  | ||||
|     ImGuiColumns()      { Clear(); } | ||||
|     void Clear() | ||||
|     { | ||||
|         ID = 0; | ||||
|         Flags = ImGuiColumnsFlags_None; | ||||
|         IsFirstFrame = false; | ||||
|         IsBeingResized = false; | ||||
|         Current = 0; | ||||
|         Count = 1; | ||||
|         OffMinX = OffMaxX = 0.0f; | ||||
|         LineMinY = LineMaxY = 0.0f; | ||||
|         HostCursorPosY = 0.0f; | ||||
|         HostCursorMaxPosX = 0.0f; | ||||
|         Columns.clear(); | ||||
|     } | ||||
| }; | ||||
|  | ||||
| //----------------------------------------------------------------------------- | ||||
| // [SECTION] Settings support | ||||
| //----------------------------------------------------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user