|
@@ -34,10 +34,11 @@ Index of this file:
|
|
|
// [SECTION] Forward declarations and basic types
|
|
|
// [SECTION] Dear ImGui end-user API functions
|
|
|
// [SECTION] Flags & Enumerations
|
|
|
+// [SECTION] Tables API flags and structures (ImGuiTableFlags, ImGuiTableColumnFlags, ImGuiTableRowFlags, ImGuiTableBgTarget, ImGuiTableSortSpecs, ImGuiTableColumnSortSpecs)
|
|
|
// [SECTION] Helpers: Memory allocations macros, ImVector<>
|
|
|
// [SECTION] ImGuiStyle
|
|
|
// [SECTION] ImGuiIO
|
|
|
-// [SECTION] Misc data structures (ImGuiInputTextCallbackData, ImGuiSizeCallbackData, ImGuiPayload, ImGuiTableSortSpecs, ImGuiTableColumnSortSpecs)
|
|
|
+// [SECTION] Misc data structures (ImGuiInputTextCallbackData, ImGuiSizeCallbackData, ImGuiPayload)
|
|
|
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, Math Operators, ImColor)
|
|
|
// [SECTION] Drawing API (ImDrawCallback, ImDrawCmd, ImDrawIdx, ImDrawVert, ImDrawChannel, ImDrawListSplitter, ImDrawFlags, ImDrawListFlags, ImDrawList, ImDrawData)
|
|
|
// [SECTION] Font API (ImFontConfig, ImFontGlyph, ImFontGlyphRangesBuilder, ImFontAtlasFlags, ImFontAtlas, ImFont)
|
|
@@ -759,12 +760,10 @@ namespace ImGui
|
|
|
// TableNextColumn() will automatically wrap-around into the next row if needed.
|
|
|
// - IMPORTANT: Comparatively to the old Columns() API, we need to call TableNextColumn() for the first column!
|
|
|
// - Summary of possible call flow:
|
|
|
- // --------------------------------------------------------------------------------------------------------
|
|
|
- // TableNextRow() -> TableSetColumnIndex(0) -> Text("Hello 0") -> TableSetColumnIndex(1) -> Text("Hello 1") // OK
|
|
|
- // TableNextRow() -> TableNextColumn() -> Text("Hello 0") -> TableNextColumn() -> Text("Hello 1") // OK
|
|
|
- // TableNextColumn() -> Text("Hello 0") -> TableNextColumn() -> Text("Hello 1") // OK: TableNextColumn() automatically gets to next row!
|
|
|
- // TableNextRow() -> Text("Hello 0") // Not OK! Missing TableSetColumnIndex() or TableNextColumn()! Text will not appear!
|
|
|
- // --------------------------------------------------------------------------------------------------------
|
|
|
+ // - TableNextRow() -> TableSetColumnIndex(0) -> Text("Hello 0") -> TableSetColumnIndex(1) -> Text("Hello 1") // OK
|
|
|
+ // - TableNextRow() -> TableNextColumn() -> Text("Hello 0") -> TableNextColumn() -> Text("Hello 1") // OK
|
|
|
+ // - TableNextColumn() -> Text("Hello 0") -> TableNextColumn() -> Text("Hello 1") // OK: TableNextColumn() automatically gets to next row!
|
|
|
+ // - TableNextRow() -> Text("Hello 0") // Not OK! Missing TableSetColumnIndex() or TableNextColumn()! Text will not appear!
|
|
|
// - 5. Call EndTable()
|
|
|
IMGUI_API bool BeginTable(const char* str_id, int column, ImGuiTableFlags flags = 0, const ImVec2& outer_size = ImVec2(0.0f, 0.0f), float inner_width = 0.0f);
|
|
|
IMGUI_API void EndTable(); // only call EndTable() if BeginTable() returns true!
|
|
@@ -1187,142 +1186,6 @@ enum ImGuiTabItemFlags_
|
|
|
ImGuiTabItemFlags_Trailing = 1 << 7, // Enforce the tab position to the right of the tab bar (before the scrolling buttons)
|
|
|
};
|
|
|
|
|
|
-// Flags for ImGui::BeginTable()
|
|
|
-// - Important! Sizing policies have complex and subtle side effects, much more so than you would expect.
|
|
|
-// Read comments/demos carefully + experiment with live demos to get acquainted with them.
|
|
|
-// - The DEFAULT sizing policies are:
|
|
|
-// - Default to ImGuiTableFlags_SizingFixedFit if ScrollX is on, or if host window has ImGuiWindowFlags_AlwaysAutoResize.
|
|
|
-// - Default to ImGuiTableFlags_SizingStretchSame if ScrollX is off.
|
|
|
-// - When ScrollX is off:
|
|
|
-// - Table defaults to ImGuiTableFlags_SizingStretchSame -> all Columns defaults to ImGuiTableColumnFlags_WidthStretch with same weight.
|
|
|
-// - Columns sizing policy allowed: Stretch (default), Fixed/Auto.
|
|
|
-// - Fixed Columns (if any) will generally obtain their requested width (unless the table cannot fit them all).
|
|
|
-// - Stretch Columns will share the remaining width according to their respective weight.
|
|
|
-// - Mixed Fixed/Stretch columns is possible but has various side-effects on resizing behaviors.
|
|
|
-// The typical use of mixing sizing policies is: any number of LEADING Fixed columns, followed by one or two TRAILING Stretch columns.
|
|
|
-// (this is because the visible order of columns have subtle but necessary effects on how they react to manual resizing).
|
|
|
-// - When ScrollX is on:
|
|
|
-// - Table defaults to ImGuiTableFlags_SizingFixedFit -> all Columns defaults to ImGuiTableColumnFlags_WidthFixed
|
|
|
-// - Columns sizing policy allowed: Fixed/Auto mostly.
|
|
|
-// - Fixed Columns can be enlarged as needed. Table will show a horizontal scrollbar if needed.
|
|
|
-// - When using auto-resizing (non-resizable) fixed columns, querying the content width to use item right-alignment e.g. SetNextItemWidth(-FLT_MIN) doesn't make sense, would create a feedback loop.
|
|
|
-// - Using Stretch columns OFTEN DOES NOT MAKE SENSE if ScrollX is on, UNLESS you have specified a value for 'inner_width' in BeginTable().
|
|
|
-// If you specify a value for 'inner_width' then effectively the scrolling space is known and Stretch or mixed Fixed/Stretch columns become meaningful again.
|
|
|
-// - Read on documentation at the top of imgui_tables.cpp for details.
|
|
|
-enum ImGuiTableFlags_
|
|
|
-{
|
|
|
- // Features
|
|
|
- ImGuiTableFlags_None = 0,
|
|
|
- ImGuiTableFlags_Resizable = 1 << 0, // Enable resizing columns.
|
|
|
- ImGuiTableFlags_Reorderable = 1 << 1, // Enable reordering columns in header row (need calling TableSetupColumn() + TableHeadersRow() to display headers)
|
|
|
- ImGuiTableFlags_Hideable = 1 << 2, // Enable hiding/disabling columns in context menu.
|
|
|
- ImGuiTableFlags_Sortable = 1 << 3, // Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see ImGuiTableFlags_SortMulti and ImGuiTableFlags_SortTristate.
|
|
|
- ImGuiTableFlags_NoSavedSettings = 1 << 4, // Disable persisting columns order, width and sort settings in the .ini file.
|
|
|
- ImGuiTableFlags_ContextMenuInBody = 1 << 5, // Right-click on columns body/contents will display table context menu. By default it is available in TableHeadersRow().
|
|
|
- // Decorations
|
|
|
- ImGuiTableFlags_RowBg = 1 << 6, // Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually)
|
|
|
- ImGuiTableFlags_BordersInnerH = 1 << 7, // Draw horizontal borders between rows.
|
|
|
- ImGuiTableFlags_BordersOuterH = 1 << 8, // Draw horizontal borders at the top and bottom.
|
|
|
- ImGuiTableFlags_BordersInnerV = 1 << 9, // Draw vertical borders between columns.
|
|
|
- ImGuiTableFlags_BordersOuterV = 1 << 10, // Draw vertical borders on the left and right sides.
|
|
|
- ImGuiTableFlags_BordersH = ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH, // Draw horizontal borders.
|
|
|
- ImGuiTableFlags_BordersV = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersOuterV, // Draw vertical borders.
|
|
|
- ImGuiTableFlags_BordersInner = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersInnerH, // Draw inner borders.
|
|
|
- ImGuiTableFlags_BordersOuter = ImGuiTableFlags_BordersOuterV | ImGuiTableFlags_BordersOuterH, // Draw outer borders.
|
|
|
- ImGuiTableFlags_Borders = ImGuiTableFlags_BordersInner | ImGuiTableFlags_BordersOuter, // Draw all borders.
|
|
|
- ImGuiTableFlags_NoBordersInBody = 1 << 11, // [ALPHA] Disable vertical borders in columns Body (borders will always appear in Headers). -> May move to style
|
|
|
- ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12, // [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders will always appear in Headers). -> May move to style
|
|
|
- // Sizing Policy (read above for defaults)
|
|
|
- ImGuiTableFlags_SizingFixedFit = 1 << 13, // Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching contents width.
|
|
|
- ImGuiTableFlags_SizingFixedSame = 2 << 13, // Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable ImGuiTableFlags_NoKeepColumnsVisible.
|
|
|
- ImGuiTableFlags_SizingStretchProp = 3 << 13, // Columns default to _WidthStretch with default weights proportional to each columns contents widths.
|
|
|
- ImGuiTableFlags_SizingStretchSame = 4 << 13, // Columns default to _WidthStretch with default weights all equal, unless overridden by TableSetupColumn().
|
|
|
- // Sizing Extra Options
|
|
|
- ImGuiTableFlags_NoHostExtendX = 1 << 16, // Make outer width auto-fit to columns, overriding outer_size.x value. Only available when ScrollX/ScrollY are disabled and Stretch columns are not used.
|
|
|
- ImGuiTableFlags_NoHostExtendY = 1 << 17, // Make outer height stop exactly at outer_size.y (prevent auto-extending table past the limit). Only available when ScrollX/ScrollY are disabled. Data below the limit will be clipped and not visible.
|
|
|
- ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18, // Disable keeping column always minimally visible when ScrollX is off and table gets too small. Not recommended if columns are resizable.
|
|
|
- ImGuiTableFlags_PreciseWidths = 1 << 19, // Disable distributing remainder width to stretched columns (width allocation on a 100-wide table with 3 columns: Without this flag: 33,33,34. With this flag: 33,33,33). With larger number of columns, resizing will appear to be less smooth.
|
|
|
- // Clipping
|
|
|
- ImGuiTableFlags_NoClip = 1 << 20, // Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze().
|
|
|
- // Padding
|
|
|
- ImGuiTableFlags_PadOuterX = 1 << 21, // Default if BordersOuterV is on. Enable outermost padding. Generally desirable if you have headers.
|
|
|
- ImGuiTableFlags_NoPadOuterX = 1 << 22, // Default if BordersOuterV is off. Disable outermost padding.
|
|
|
- ImGuiTableFlags_NoPadInnerX = 1 << 23, // Disable inner padding between columns (double inner padding if BordersOuterV is on, single inner padding if BordersOuterV is off).
|
|
|
- // Scrolling
|
|
|
- ImGuiTableFlags_ScrollX = 1 << 24, // Enable horizontal scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size. Changes default sizing policy. Because this creates a child window, ScrollY is currently generally recommended when using ScrollX.
|
|
|
- ImGuiTableFlags_ScrollY = 1 << 25, // Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size.
|
|
|
- // Sorting
|
|
|
- ImGuiTableFlags_SortMulti = 1 << 26, // Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount > 1).
|
|
|
- ImGuiTableFlags_SortTristate = 1 << 27, // Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0).
|
|
|
- // Miscellaneous
|
|
|
- ImGuiTableFlags_HighlightHoveredColumn = 1 << 28, // Highlight column headers when hovered (may evolve into a fuller highlight)
|
|
|
-
|
|
|
- // [Internal] Combinations and masks
|
|
|
- ImGuiTableFlags_SizingMask_ = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_SizingFixedSame | ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchSame,
|
|
|
-};
|
|
|
-
|
|
|
-// Flags for ImGui::TableSetupColumn()
|
|
|
-enum ImGuiTableColumnFlags_
|
|
|
-{
|
|
|
- // Input configuration flags
|
|
|
- ImGuiTableColumnFlags_None = 0,
|
|
|
- ImGuiTableColumnFlags_Disabled = 1 << 0, // Overriding/master disable flag: hide column, won't show in context menu (unlike calling TableSetColumnEnabled() which manipulates the user accessible state)
|
|
|
- ImGuiTableColumnFlags_DefaultHide = 1 << 1, // Default as a hidden/disabled column.
|
|
|
- ImGuiTableColumnFlags_DefaultSort = 1 << 2, // Default as a sorting column.
|
|
|
- ImGuiTableColumnFlags_WidthStretch = 1 << 3, // Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp).
|
|
|
- ImGuiTableColumnFlags_WidthFixed = 1 << 4, // Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable).
|
|
|
- ImGuiTableColumnFlags_NoResize = 1 << 5, // Disable manual resizing.
|
|
|
- ImGuiTableColumnFlags_NoReorder = 1 << 6, // Disable manual reordering this column, this will also prevent other columns from crossing over this column.
|
|
|
- ImGuiTableColumnFlags_NoHide = 1 << 7, // Disable ability to hide/disable this column.
|
|
|
- ImGuiTableColumnFlags_NoClip = 1 << 8, // Disable clipping for this column (all NoClip columns will render in a same draw command).
|
|
|
- ImGuiTableColumnFlags_NoSort = 1 << 9, // Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table).
|
|
|
- ImGuiTableColumnFlags_NoSortAscending = 1 << 10, // Disable ability to sort in the ascending direction.
|
|
|
- ImGuiTableColumnFlags_NoSortDescending = 1 << 11, // Disable ability to sort in the descending direction.
|
|
|
- ImGuiTableColumnFlags_NoHeaderLabel = 1 << 12, // TableHeadersRow() will not submit horizontal label for this column. Convenient for some small columns. Name will still appear in context menu or in angled headers.
|
|
|
- ImGuiTableColumnFlags_NoHeaderWidth = 1 << 13, // Disable header text width contribution to automatic column width.
|
|
|
- ImGuiTableColumnFlags_PreferSortAscending = 1 << 14, // Make the initial sort direction Ascending when first sorting on this column (default).
|
|
|
- ImGuiTableColumnFlags_PreferSortDescending = 1 << 15, // Make the initial sort direction Descending when first sorting on this column.
|
|
|
- ImGuiTableColumnFlags_IndentEnable = 1 << 16, // Use current Indent value when entering cell (default for column 0).
|
|
|
- ImGuiTableColumnFlags_IndentDisable = 1 << 17, // Ignore current Indent value when entering cell (default for columns > 0). Indentation changes _within_ the cell will still be honored.
|
|
|
- ImGuiTableColumnFlags_AngledHeader = 1 << 18, // TableHeadersRow() will submit an angled header row for this column. Note this will add an extra row.
|
|
|
-
|
|
|
- // Output status flags, read-only via TableGetColumnFlags()
|
|
|
- ImGuiTableColumnFlags_IsEnabled = 1 << 24, // Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags.
|
|
|
- ImGuiTableColumnFlags_IsVisible = 1 << 25, // Status: is visible == is enabled AND not clipped by scrolling.
|
|
|
- ImGuiTableColumnFlags_IsSorted = 1 << 26, // Status: is currently part of the sort specs
|
|
|
- ImGuiTableColumnFlags_IsHovered = 1 << 27, // Status: is hovered by mouse
|
|
|
-
|
|
|
- // [Internal] Combinations and masks
|
|
|
- ImGuiTableColumnFlags_WidthMask_ = ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_WidthFixed,
|
|
|
- ImGuiTableColumnFlags_IndentMask_ = ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_IndentDisable,
|
|
|
- ImGuiTableColumnFlags_StatusMask_ = ImGuiTableColumnFlags_IsEnabled | ImGuiTableColumnFlags_IsVisible | ImGuiTableColumnFlags_IsSorted | ImGuiTableColumnFlags_IsHovered,
|
|
|
- ImGuiTableColumnFlags_NoDirectResize_ = 1 << 30, // [Internal] Disable user resizing this column directly (it may however we resized indirectly from its left edge)
|
|
|
-};
|
|
|
-
|
|
|
-// Flags for ImGui::TableNextRow()
|
|
|
-enum ImGuiTableRowFlags_
|
|
|
-{
|
|
|
- ImGuiTableRowFlags_None = 0,
|
|
|
- ImGuiTableRowFlags_Headers = 1 << 0, // Identify header row (set default background color + width of its contents accounted differently for auto column width)
|
|
|
-};
|
|
|
-
|
|
|
-// Enum for ImGui::TableSetBgColor()
|
|
|
-// Background colors are rendering in 3 layers:
|
|
|
-// - Layer 0: draw with RowBg0 color if set, otherwise draw with ColumnBg0 if set.
|
|
|
-// - Layer 1: draw with RowBg1 color if set, otherwise draw with ColumnBg1 if set.
|
|
|
-// - Layer 2: draw with CellBg color if set.
|
|
|
-// The purpose of the two row/columns layers is to let you decide if a background color change should override or blend with the existing color.
|
|
|
-// When using ImGuiTableFlags_RowBg on the table, each row has the RowBg0 color automatically set for odd/even rows.
|
|
|
-// If you set the color of RowBg0 target, your color will override the existing RowBg0 color.
|
|
|
-// If you set the color of RowBg1 or ColumnBg1 target, your color will blend over the RowBg0 color.
|
|
|
-enum ImGuiTableBgTarget_
|
|
|
-{
|
|
|
- ImGuiTableBgTarget_None = 0,
|
|
|
- ImGuiTableBgTarget_RowBg0 = 1, // Set row background color 0 (generally used for background, automatically set when ImGuiTableFlags_RowBg is used)
|
|
|
- ImGuiTableBgTarget_RowBg1 = 2, // Set row background color 1 (generally used for selection marking)
|
|
|
- ImGuiTableBgTarget_CellBg = 3, // Set cell background color (top-most color)
|
|
|
-};
|
|
|
-
|
|
|
// Flags for ImGui::IsWindowFocused()
|
|
|
enum ImGuiFocusedFlags_
|
|
|
{
|
|
@@ -1822,7 +1685,7 @@ enum ImGuiMouseSource : int
|
|
|
ImGuiMouseSource_COUNT
|
|
|
};
|
|
|
|
|
|
-// Enumeration for ImGui::SetWindow***(), SetNextWindow***(), SetNextItem***() functions
|
|
|
+// Enumeration for ImGui::SetNextWindow***(), SetWindow***(), SetNextItem***() functions
|
|
|
// Represent a condition.
|
|
|
// Important: Treat as a regular enum! Do NOT combine multiple values using binary operators! All the functions above treat 0 as a shortcut to ImGuiCond_Always.
|
|
|
enum ImGuiCond_
|
|
@@ -1834,6 +1697,170 @@ enum ImGuiCond_
|
|
|
ImGuiCond_Appearing = 1 << 3, // Set the variable if the object/window is appearing after being hidden/inactive (or the first time)
|
|
|
};
|
|
|
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+// [SECTION] Tables API flags and structures (ImGuiTableFlags, ImGuiTableColumnFlags, ImGuiTableRowFlags, ImGuiTableBgTarget, ImGuiTableSortSpecs, ImGuiTableColumnSortSpecs)
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+
|
|
|
+// Flags for ImGui::BeginTable()
|
|
|
+// - Important! Sizing policies have complex and subtle side effects, much more so than you would expect.
|
|
|
+// Read comments/demos carefully + experiment with live demos to get acquainted with them.
|
|
|
+// - The DEFAULT sizing policies are:
|
|
|
+// - Default to ImGuiTableFlags_SizingFixedFit if ScrollX is on, or if host window has ImGuiWindowFlags_AlwaysAutoResize.
|
|
|
+// - Default to ImGuiTableFlags_SizingStretchSame if ScrollX is off.
|
|
|
+// - When ScrollX is off:
|
|
|
+// - Table defaults to ImGuiTableFlags_SizingStretchSame -> all Columns defaults to ImGuiTableColumnFlags_WidthStretch with same weight.
|
|
|
+// - Columns sizing policy allowed: Stretch (default), Fixed/Auto.
|
|
|
+// - Fixed Columns (if any) will generally obtain their requested width (unless the table cannot fit them all).
|
|
|
+// - Stretch Columns will share the remaining width according to their respective weight.
|
|
|
+// - Mixed Fixed/Stretch columns is possible but has various side-effects on resizing behaviors.
|
|
|
+// The typical use of mixing sizing policies is: any number of LEADING Fixed columns, followed by one or two TRAILING Stretch columns.
|
|
|
+// (this is because the visible order of columns have subtle but necessary effects on how they react to manual resizing).
|
|
|
+// - When ScrollX is on:
|
|
|
+// - Table defaults to ImGuiTableFlags_SizingFixedFit -> all Columns defaults to ImGuiTableColumnFlags_WidthFixed
|
|
|
+// - Columns sizing policy allowed: Fixed/Auto mostly.
|
|
|
+// - Fixed Columns can be enlarged as needed. Table will show a horizontal scrollbar if needed.
|
|
|
+// - When using auto-resizing (non-resizable) fixed columns, querying the content width to use item right-alignment e.g. SetNextItemWidth(-FLT_MIN) doesn't make sense, would create a feedback loop.
|
|
|
+// - Using Stretch columns OFTEN DOES NOT MAKE SENSE if ScrollX is on, UNLESS you have specified a value for 'inner_width' in BeginTable().
|
|
|
+// If you specify a value for 'inner_width' then effectively the scrolling space is known and Stretch or mixed Fixed/Stretch columns become meaningful again.
|
|
|
+// - Read on documentation at the top of imgui_tables.cpp for details.
|
|
|
+enum ImGuiTableFlags_
|
|
|
+{
|
|
|
+ // Features
|
|
|
+ ImGuiTableFlags_None = 0,
|
|
|
+ ImGuiTableFlags_Resizable = 1 << 0, // Enable resizing columns.
|
|
|
+ ImGuiTableFlags_Reorderable = 1 << 1, // Enable reordering columns in header row (need calling TableSetupColumn() + TableHeadersRow() to display headers)
|
|
|
+ ImGuiTableFlags_Hideable = 1 << 2, // Enable hiding/disabling columns in context menu.
|
|
|
+ ImGuiTableFlags_Sortable = 1 << 3, // Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see ImGuiTableFlags_SortMulti and ImGuiTableFlags_SortTristate.
|
|
|
+ ImGuiTableFlags_NoSavedSettings = 1 << 4, // Disable persisting columns order, width and sort settings in the .ini file.
|
|
|
+ ImGuiTableFlags_ContextMenuInBody = 1 << 5, // Right-click on columns body/contents will display table context menu. By default it is available in TableHeadersRow().
|
|
|
+ // Decorations
|
|
|
+ ImGuiTableFlags_RowBg = 1 << 6, // Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually)
|
|
|
+ ImGuiTableFlags_BordersInnerH = 1 << 7, // Draw horizontal borders between rows.
|
|
|
+ ImGuiTableFlags_BordersOuterH = 1 << 8, // Draw horizontal borders at the top and bottom.
|
|
|
+ ImGuiTableFlags_BordersInnerV = 1 << 9, // Draw vertical borders between columns.
|
|
|
+ ImGuiTableFlags_BordersOuterV = 1 << 10, // Draw vertical borders on the left and right sides.
|
|
|
+ ImGuiTableFlags_BordersH = ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH, // Draw horizontal borders.
|
|
|
+ ImGuiTableFlags_BordersV = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersOuterV, // Draw vertical borders.
|
|
|
+ ImGuiTableFlags_BordersInner = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersInnerH, // Draw inner borders.
|
|
|
+ ImGuiTableFlags_BordersOuter = ImGuiTableFlags_BordersOuterV | ImGuiTableFlags_BordersOuterH, // Draw outer borders.
|
|
|
+ ImGuiTableFlags_Borders = ImGuiTableFlags_BordersInner | ImGuiTableFlags_BordersOuter, // Draw all borders.
|
|
|
+ ImGuiTableFlags_NoBordersInBody = 1 << 11, // [ALPHA] Disable vertical borders in columns Body (borders will always appear in Headers). -> May move to style
|
|
|
+ ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12, // [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders will always appear in Headers). -> May move to style
|
|
|
+ // Sizing Policy (read above for defaults)
|
|
|
+ ImGuiTableFlags_SizingFixedFit = 1 << 13, // Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching contents width.
|
|
|
+ ImGuiTableFlags_SizingFixedSame = 2 << 13, // Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable ImGuiTableFlags_NoKeepColumnsVisible.
|
|
|
+ ImGuiTableFlags_SizingStretchProp = 3 << 13, // Columns default to _WidthStretch with default weights proportional to each columns contents widths.
|
|
|
+ ImGuiTableFlags_SizingStretchSame = 4 << 13, // Columns default to _WidthStretch with default weights all equal, unless overridden by TableSetupColumn().
|
|
|
+ // Sizing Extra Options
|
|
|
+ ImGuiTableFlags_NoHostExtendX = 1 << 16, // Make outer width auto-fit to columns, overriding outer_size.x value. Only available when ScrollX/ScrollY are disabled and Stretch columns are not used.
|
|
|
+ ImGuiTableFlags_NoHostExtendY = 1 << 17, // Make outer height stop exactly at outer_size.y (prevent auto-extending table past the limit). Only available when ScrollX/ScrollY are disabled. Data below the limit will be clipped and not visible.
|
|
|
+ ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18, // Disable keeping column always minimally visible when ScrollX is off and table gets too small. Not recommended if columns are resizable.
|
|
|
+ ImGuiTableFlags_PreciseWidths = 1 << 19, // Disable distributing remainder width to stretched columns (width allocation on a 100-wide table with 3 columns: Without this flag: 33,33,34. With this flag: 33,33,33). With larger number of columns, resizing will appear to be less smooth.
|
|
|
+ // Clipping
|
|
|
+ ImGuiTableFlags_NoClip = 1 << 20, // Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze().
|
|
|
+ // Padding
|
|
|
+ ImGuiTableFlags_PadOuterX = 1 << 21, // Default if BordersOuterV is on. Enable outermost padding. Generally desirable if you have headers.
|
|
|
+ ImGuiTableFlags_NoPadOuterX = 1 << 22, // Default if BordersOuterV is off. Disable outermost padding.
|
|
|
+ ImGuiTableFlags_NoPadInnerX = 1 << 23, // Disable inner padding between columns (double inner padding if BordersOuterV is on, single inner padding if BordersOuterV is off).
|
|
|
+ // Scrolling
|
|
|
+ ImGuiTableFlags_ScrollX = 1 << 24, // Enable horizontal scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size. Changes default sizing policy. Because this creates a child window, ScrollY is currently generally recommended when using ScrollX.
|
|
|
+ ImGuiTableFlags_ScrollY = 1 << 25, // Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size.
|
|
|
+ // Sorting
|
|
|
+ ImGuiTableFlags_SortMulti = 1 << 26, // Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount > 1).
|
|
|
+ ImGuiTableFlags_SortTristate = 1 << 27, // Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0).
|
|
|
+ // Miscellaneous
|
|
|
+ ImGuiTableFlags_HighlightHoveredColumn = 1 << 28, // Highlight column headers when hovered (may evolve into a fuller highlight)
|
|
|
+
|
|
|
+ // [Internal] Combinations and masks
|
|
|
+ ImGuiTableFlags_SizingMask_ = ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_SizingFixedSame | ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_SizingStretchSame,
|
|
|
+};
|
|
|
+
|
|
|
+// Flags for ImGui::TableSetupColumn()
|
|
|
+enum ImGuiTableColumnFlags_
|
|
|
+{
|
|
|
+ // Input configuration flags
|
|
|
+ ImGuiTableColumnFlags_None = 0,
|
|
|
+ ImGuiTableColumnFlags_Disabled = 1 << 0, // Overriding/master disable flag: hide column, won't show in context menu (unlike calling TableSetColumnEnabled() which manipulates the user accessible state)
|
|
|
+ ImGuiTableColumnFlags_DefaultHide = 1 << 1, // Default as a hidden/disabled column.
|
|
|
+ ImGuiTableColumnFlags_DefaultSort = 1 << 2, // Default as a sorting column.
|
|
|
+ ImGuiTableColumnFlags_WidthStretch = 1 << 3, // Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp).
|
|
|
+ ImGuiTableColumnFlags_WidthFixed = 1 << 4, // Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable).
|
|
|
+ ImGuiTableColumnFlags_NoResize = 1 << 5, // Disable manual resizing.
|
|
|
+ ImGuiTableColumnFlags_NoReorder = 1 << 6, // Disable manual reordering this column, this will also prevent other columns from crossing over this column.
|
|
|
+ ImGuiTableColumnFlags_NoHide = 1 << 7, // Disable ability to hide/disable this column.
|
|
|
+ ImGuiTableColumnFlags_NoClip = 1 << 8, // Disable clipping for this column (all NoClip columns will render in a same draw command).
|
|
|
+ ImGuiTableColumnFlags_NoSort = 1 << 9, // Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table).
|
|
|
+ ImGuiTableColumnFlags_NoSortAscending = 1 << 10, // Disable ability to sort in the ascending direction.
|
|
|
+ ImGuiTableColumnFlags_NoSortDescending = 1 << 11, // Disable ability to sort in the descending direction.
|
|
|
+ ImGuiTableColumnFlags_NoHeaderLabel = 1 << 12, // TableHeadersRow() will not submit horizontal label for this column. Convenient for some small columns. Name will still appear in context menu or in angled headers.
|
|
|
+ ImGuiTableColumnFlags_NoHeaderWidth = 1 << 13, // Disable header text width contribution to automatic column width.
|
|
|
+ ImGuiTableColumnFlags_PreferSortAscending = 1 << 14, // Make the initial sort direction Ascending when first sorting on this column (default).
|
|
|
+ ImGuiTableColumnFlags_PreferSortDescending = 1 << 15, // Make the initial sort direction Descending when first sorting on this column.
|
|
|
+ ImGuiTableColumnFlags_IndentEnable = 1 << 16, // Use current Indent value when entering cell (default for column 0).
|
|
|
+ ImGuiTableColumnFlags_IndentDisable = 1 << 17, // Ignore current Indent value when entering cell (default for columns > 0). Indentation changes _within_ the cell will still be honored.
|
|
|
+ ImGuiTableColumnFlags_AngledHeader = 1 << 18, // TableHeadersRow() will submit an angled header row for this column. Note this will add an extra row.
|
|
|
+
|
|
|
+ // Output status flags, read-only via TableGetColumnFlags()
|
|
|
+ ImGuiTableColumnFlags_IsEnabled = 1 << 24, // Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags.
|
|
|
+ ImGuiTableColumnFlags_IsVisible = 1 << 25, // Status: is visible == is enabled AND not clipped by scrolling.
|
|
|
+ ImGuiTableColumnFlags_IsSorted = 1 << 26, // Status: is currently part of the sort specs
|
|
|
+ ImGuiTableColumnFlags_IsHovered = 1 << 27, // Status: is hovered by mouse
|
|
|
+
|
|
|
+ // [Internal] Combinations and masks
|
|
|
+ ImGuiTableColumnFlags_WidthMask_ = ImGuiTableColumnFlags_WidthStretch | ImGuiTableColumnFlags_WidthFixed,
|
|
|
+ ImGuiTableColumnFlags_IndentMask_ = ImGuiTableColumnFlags_IndentEnable | ImGuiTableColumnFlags_IndentDisable,
|
|
|
+ ImGuiTableColumnFlags_StatusMask_ = ImGuiTableColumnFlags_IsEnabled | ImGuiTableColumnFlags_IsVisible | ImGuiTableColumnFlags_IsSorted | ImGuiTableColumnFlags_IsHovered,
|
|
|
+ ImGuiTableColumnFlags_NoDirectResize_ = 1 << 30, // [Internal] Disable user resizing this column directly (it may however we resized indirectly from its left edge)
|
|
|
+};
|
|
|
+
|
|
|
+// Flags for ImGui::TableNextRow()
|
|
|
+enum ImGuiTableRowFlags_
|
|
|
+{
|
|
|
+ ImGuiTableRowFlags_None = 0,
|
|
|
+ ImGuiTableRowFlags_Headers = 1 << 0, // Identify header row (set default background color + width of its contents accounted differently for auto column width)
|
|
|
+};
|
|
|
+
|
|
|
+// Enum for ImGui::TableSetBgColor()
|
|
|
+// Background colors are rendering in 3 layers:
|
|
|
+// - Layer 0: draw with RowBg0 color if set, otherwise draw with ColumnBg0 if set.
|
|
|
+// - Layer 1: draw with RowBg1 color if set, otherwise draw with ColumnBg1 if set.
|
|
|
+// - Layer 2: draw with CellBg color if set.
|
|
|
+// The purpose of the two row/columns layers is to let you decide if a background color change should override or blend with the existing color.
|
|
|
+// When using ImGuiTableFlags_RowBg on the table, each row has the RowBg0 color automatically set for odd/even rows.
|
|
|
+// If you set the color of RowBg0 target, your color will override the existing RowBg0 color.
|
|
|
+// If you set the color of RowBg1 or ColumnBg1 target, your color will blend over the RowBg0 color.
|
|
|
+enum ImGuiTableBgTarget_
|
|
|
+{
|
|
|
+ ImGuiTableBgTarget_None = 0,
|
|
|
+ ImGuiTableBgTarget_RowBg0 = 1, // Set row background color 0 (generally used for background, automatically set when ImGuiTableFlags_RowBg is used)
|
|
|
+ ImGuiTableBgTarget_RowBg1 = 2, // Set row background color 1 (generally used for selection marking)
|
|
|
+ ImGuiTableBgTarget_CellBg = 3, // Set cell background color (top-most color)
|
|
|
+};
|
|
|
+
|
|
|
+// Sorting specifications for a table (often handling sort specs for a single column, occasionally more)
|
|
|
+// Obtained by calling TableGetSortSpecs().
|
|
|
+// When 'SpecsDirty == true' you can sort your data. It will be true with sorting specs have changed since last call, or the first time.
|
|
|
+// Make sure to set 'SpecsDirty = false' after sorting, else you may wastefully sort your data every frame!
|
|
|
+struct ImGuiTableSortSpecs
|
|
|
+{
|
|
|
+ const ImGuiTableColumnSortSpecs* Specs; // Pointer to sort spec array.
|
|
|
+ int SpecsCount; // Sort spec count. Most often 1. May be > 1 when ImGuiTableFlags_SortMulti is enabled. May be == 0 when ImGuiTableFlags_SortTristate is enabled.
|
|
|
+ bool SpecsDirty; // Set to true when specs have changed since last time! Use this to sort again, then clear the flag.
|
|
|
+
|
|
|
+ ImGuiTableSortSpecs() { memset(this, 0, sizeof(*this)); }
|
|
|
+};
|
|
|
+
|
|
|
+// Sorting specification for one column of a table (sizeof == 12 bytes)
|
|
|
+struct ImGuiTableColumnSortSpecs
|
|
|
+{
|
|
|
+ ImGuiID ColumnUserID; // User id of the column (if specified by a TableSetupColumn() call)
|
|
|
+ ImS16 ColumnIndex; // Index of the column
|
|
|
+ ImS16 SortOrder; // Index within parent ImGuiTableSortSpecs (always stored in order starting from 0, tables sorted on a single criteria will always have a 0 here)
|
|
|
+ ImGuiSortDirection SortDirection : 8; // ImGuiSortDirection_Ascending or ImGuiSortDirection_Descending
|
|
|
+
|
|
|
+ ImGuiTableColumnSortSpecs() { memset(this, 0, sizeof(*this)); }
|
|
|
+};
|
|
|
+
|
|
|
//-----------------------------------------------------------------------------
|
|
|
// [SECTION] Helpers: Memory allocations macros, ImVector<>
|
|
|
//-----------------------------------------------------------------------------
|
|
@@ -2207,7 +2234,7 @@ struct ImGuiIO
|
|
|
};
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
-// [SECTION] Misc data structures
|
|
|
+// [SECTION] Misc data structures (ImGuiInputTextCallbackData, ImGuiSizeCallbackData, ImGuiPayload)
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
// Shared state of InputText(), passed as an argument to your callback when a ImGuiInputTextFlags_Callback* flag is used.
|
|
@@ -2281,30 +2308,6 @@ struct ImGuiPayload
|
|
|
bool IsDelivery() const { return Delivery; }
|
|
|
};
|
|
|
|
|
|
-// Sorting specification for one column of a table (sizeof == 12 bytes)
|
|
|
-struct ImGuiTableColumnSortSpecs
|
|
|
-{
|
|
|
- ImGuiID ColumnUserID; // User id of the column (if specified by a TableSetupColumn() call)
|
|
|
- ImS16 ColumnIndex; // Index of the column
|
|
|
- ImS16 SortOrder; // Index within parent ImGuiTableSortSpecs (always stored in order starting from 0, tables sorted on a single criteria will always have a 0 here)
|
|
|
- ImGuiSortDirection SortDirection : 8; // ImGuiSortDirection_Ascending or ImGuiSortDirection_Descending
|
|
|
-
|
|
|
- ImGuiTableColumnSortSpecs() { memset(this, 0, sizeof(*this)); }
|
|
|
-};
|
|
|
-
|
|
|
-// Sorting specifications for a table (often handling sort specs for a single column, occasionally more)
|
|
|
-// Obtained by calling TableGetSortSpecs().
|
|
|
-// When 'SpecsDirty == true' you can sort your data. It will be true with sorting specs have changed since last call, or the first time.
|
|
|
-// Make sure to set 'SpecsDirty = false' after sorting, else you may wastefully sort your data every frame!
|
|
|
-struct ImGuiTableSortSpecs
|
|
|
-{
|
|
|
- const ImGuiTableColumnSortSpecs* Specs; // Pointer to sort spec array.
|
|
|
- int SpecsCount; // Sort spec count. Most often 1. May be > 1 when ImGuiTableFlags_SortMulti is enabled. May be == 0 when ImGuiTableFlags_SortTristate is enabled.
|
|
|
- bool SpecsDirty; // Set to true when specs have changed since last time! Use this to sort again, then clear the flag.
|
|
|
-
|
|
|
- ImGuiTableSortSpecs() { memset(this, 0, sizeof(*this)); }
|
|
|
-};
|
|
|
-
|
|
|
//-----------------------------------------------------------------------------
|
|
|
// [SECTION] Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, Math Operators, ImColor)
|
|
|
//-----------------------------------------------------------------------------
|