Difference between revisions of "Dear ImGui Flags"

From GiderosMobile
 
(20 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
== BackendFlags ==
 
== BackendFlags ==
 
Backend capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom backend.
 
Backend capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom backend.
 +
 
*'''ImGui.BackendFlags_None''': default = 0
 
*'''ImGui.BackendFlags_None''': default = 0
 
*'''ImGui.BackendFlags_HasGamepad''': Backend Platform supports gamepad and currently has one connected
 
*'''ImGui.BackendFlags_HasGamepad''': Backend Platform supports gamepad and currently has one connected
Line 13: Line 14:
 
== Col ==
 
== Col ==
 
Enumeration for PushStyleColor() / PopStyleColor()
 
Enumeration for PushStyleColor() / PopStyleColor()
 +
 
*'''ImGui.Col_Border''':  
 
*'''ImGui.Col_Border''':  
 
*'''ImGui.Col_BorderShadow''':  
 
*'''ImGui.Col_BorderShadow''':  
Line 69: Line 71:
 
== ColorEditFlags ==
 
== ColorEditFlags ==
 
Flags for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton()
 
Flags for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton()
 +
 
*'''ImGui.ColorEditFlags_None''': default = 0
 
*'''ImGui.ColorEditFlags_None''': default = 0
 
*'''ImGui.ColorEditFlags_AlphaBar''': User Options (right-click on widget to change some of them). ColorEdit, ColorPicker: show vertical alpha bar/gradient in picker
 
*'''ImGui.ColorEditFlags_AlphaBar''': User Options (right-click on widget to change some of them). ColorEdit, ColorPicker: show vertical alpha bar/gradient in picker
Line 104: Line 107:
 
== ComboFlags ==
 
== ComboFlags ==
 
Flags for ImGui::BeginCombo()
 
Flags for ImGui::BeginCombo()
 +
 
*'''ImGui.ComboFlags_None''': default = 0
 
*'''ImGui.ComboFlags_None''': default = 0
 
*'''ImGui.ComboFlags_HeightLarge''': Max ~20 items visible
 
*'''ImGui.ComboFlags_HeightLarge''': Max ~20 items visible
Line 115: Line 119:
  
 
== Cond ==
 
== Cond ==
Enumeration for ImGui::setWindow***(), setNextWindow***(), setNextItem***() functions
+
Enumeration for ImGui::setWindow***(), setNextWindow***(), setNextItem***() functions.
  
 
Represent a condition.
 
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 ImGui.Cond_Always.
+
'''''Important''''': treat as a regular enum! Do NOT combine multiple values using binary operators! All the functions above treat 0 as a shortcut to ImGui.Cond_Always
  
 
*'''ImGui.Cond_None''': default = 0
 
*'''ImGui.Cond_None''': default = 0
Line 129: Line 133:
 
== ConfigFlags ==
 
== ConfigFlags ==
 
Configuration flags stored in io.ConfigFlags. Set by user/application.
 
Configuration flags stored in io.ConfigFlags. Set by user/application.
 +
 
*'''ImGui.ConfigFlags_None''': default = 0
 
*'''ImGui.ConfigFlags_None''': default = 0
 
*'''ImGui.ConfigFlags_IsSRGB''': User storage (to allow your backend/engine to communicate to code that may be shared between multiple projects. Those flags are NOT used by core Dear ImGui). Application is SRGB-aware
 
*'''ImGui.ConfigFlags_IsSRGB''': User storage (to allow your backend/engine to communicate to code that may be shared between multiple projects. Those flags are NOT used by core Dear ImGui). Application is SRGB-aware
Line 143: Line 148:
  
 
('''''Legacy''''': bit 0 must always correspond to ImDrawFlags_Closed to be backward compatible with old API using a bool. Bits 1..3 must be unused)
 
('''''Legacy''''': bit 0 must always correspond to ImDrawFlags_Closed to be backward compatible with old API using a bool. Bits 1..3 must be unused)
 +
 
*'''ImGui.DrawFlags_None''': default = 0
 
*'''ImGui.DrawFlags_None''': default = 0
 
*'''ImGui.DrawFlags_Closed''': PathStroke(), AddPolyline(): specify that shape should be closed (Important: this is always == 1 for legacy reason)
 
*'''ImGui.DrawFlags_Closed''': PathStroke(), AddPolyline(): specify that shape should be closed (Important: this is always == 1 for legacy reason)
Line 161: Line 167:
 
== DataType ==
 
== DataType ==
 
A primary data type.
 
A primary data type.
 +
 
*'''ImGui.DataType_Double''': double
 
*'''ImGui.DataType_Double''': double
 
*'''ImGui.DataType_Float''': float
 
*'''ImGui.DataType_Float''': float
Line 174: Line 181:
 
== Dir ==
 
== Dir ==
 
A cardinal direction.
 
A cardinal direction.
 +
 
*'''ImGui.Dir_None''': -1
 
*'''ImGui.Dir_None''': -1
 
*'''ImGui.Dir_Down''': 3
 
*'''ImGui.Dir_Down''': 3
Line 182: Line 190:
 
== DragDropFlags ==
 
== DragDropFlags ==
 
Flags for ImGui::BeginDragDropSource(), ImGui::AcceptDragDropPayload().
 
Flags for ImGui::BeginDragDropSource(), ImGui::AcceptDragDropPayload().
 +
 
*'''ImGui.DragDropFlags_None''': default = 0
 
*'''ImGui.DragDropFlags_None''': default = 0
 
*'''ImGui.DragDropFlags_AcceptBeforeDelivery''': AcceptDragDropPayload() flags. AcceptDragDropPayload() will returns true even before the mouse button is released. You can then call IsDelivery() to test if the payload needs to be delivered
 
*'''ImGui.DragDropFlags_AcceptBeforeDelivery''': AcceptDragDropPayload() flags. AcceptDragDropPayload() will returns true even before the mouse button is released. You can then call IsDelivery() to test if the payload needs to be delivered
Line 196: Line 205:
 
== FocusedFlags ==
 
== FocusedFlags ==
 
Flags for ImGui::IsWindowFocused()
 
Flags for ImGui::IsWindowFocused()
 +
 
*'''ImGui.FocusedFlags_None''': default = 0
 
*'''ImGui.FocusedFlags_None''': default = 0
 
*'''ImGui.FocusedFlags_AnyWindow''': Return true if any window is focused. Important: If you are trying to tell how to dispatch your low-level inputs, do NOT use this. Use 'io.WantCaptureMouse' instead! Please read the FAQ!
 
*'''ImGui.FocusedFlags_AnyWindow''': Return true if any window is focused. Important: If you are trying to tell how to dispatch your low-level inputs, do NOT use this. Use 'io.WantCaptureMouse' instead! Please read the FAQ!
Line 205: Line 215:
 
== GlyphRanges ==
 
== GlyphRanges ==
 
Helpers to retrieve list of common Unicode ranges (2 value per range, values are inclusive, zero-terminated list).
 
Helpers to retrieve list of common Unicode ranges (2 value per range, values are inclusive, zero-terminated list).
  '''NB''': Make sure that your string are UTF-8 and NOT in your local code page.
+
  '''NB''': Make sure that your string are UTF-8 and NOT in your local code page
  Read https://github.com/ocornut/imgui/blob/master/docs/FONTS.md/#about-utf-8-encoding for details.
+
  Read https://github.com/ocornut/imgui/blob/master/docs/FONTS.md/#about-utf-8-encoding for details
  '''NB''': Consider using ImFontGlyphRangesBuilder to build glyph ranges from textual data.
+
  '''NB''': Consider using ImFontGlyphRangesBuilder to build glyph ranges from textual data
  
 
*'''ImGui.GlyphRanges_ChineseFull''': Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs
 
*'''ImGui.GlyphRanges_ChineseFull''': Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs
Line 241: Line 251:
  
 
== ImageScaleMode ==
 
== ImageScaleMode ==
<syntaxhighlight lang="lua">
+
*'''ImGui.ImageScaleMode_FitHeight''':
ImGui.ImageScaleMode_FitHeight
+
*'''ImGui.ImageScaleMode_FitWidth''':
ImGui.ImageScaleMode_FitWidth
+
*'''ImGui.ImageScaleMode_LetterBox''':
ImGui.ImageScaleMode_LetterBox
+
*'''ImGui.ImageScaleMode_Stretch''':
ImGui.ImageScaleMode_Stretch
 
</syntaxhighlight>
 
  
 
== InputTextFlags ==
 
== InputTextFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::InputText()
ImGui.InputTextFlags_None
+
(Those are per-item flags. There are shared flags in ImGuiIO: io.ConfigInputTextCursorBlink and io.ConfigInputTextEnterKeepActive)
ImGui.InputTextFlags_AllowTabInput
+
 
ImGui.InputTextFlags_AlwaysInsertMode
+
*'''ImGui.InputTextFlags_None''': default = 0
ImGui.InputTextFlags_AutoSelectAll
+
*'''ImGui.InputTextFlags_AllowTabInput''': Pressing TAB input a '\t' character into the text field
ImGui.InputTextFlags_CallbackAlways
+
*'''ImGui.InputTextFlags_AlwaysOverwrite''': Overwrite mode
ImGui.InputTextFlags_CallbackCharFilter
+
*'''ImGui.InputTextFlags_AutoSelectAll''': Select entire text when first taking mouse focus
ImGui.InputTextFlags_CallbackCompletion
+
*'''ImGui.InputTextFlags_CallbackAlways''': Callback on each iteration. User code may query cursor position, modify text buffer
ImGui.InputTextFlags_CallbackEdit
+
*'''ImGui.InputTextFlags_CallbackCharFilter''': Callback on character inputs to replace or discard them. Modify 'EventChar' to replace or discard, or return 1 in callback to discard
ImGui.InputTextFlags_CallbackHistory
+
*'''ImGui.InputTextFlags_CallbackCompletion''': Callback on pressing TAB (for completion handling)
ImGui.InputTextFlags_CallbackResize
+
*'''ImGui.InputTextFlags_CallbackEdit''': Callback on any edit (note that InputText() already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active)
ImGui.InputTextFlags_CharsDecimal
+
*'''ImGui.InputTextFlags_CallbackHistory''': Callback on pressing Up/Down arrows (for history handling)
ImGui.InputTextFlags_CharsHexadecimal
+
*'''ImGui.InputTextFlags_CallbackResize''': Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing the string to grow. Notify when the string wants to be resized (for string types which hold a cache of their Size). You will be provided a new BufSize in the callback and NEED to honor it. (see misc/cpp/imgui_stdlib.h for an example of using this)
ImGui.InputTextFlags_CharsNoBlank
+
*'''ImGui.InputTextFlags_CharsDecimal''': Allow 0123456789.+-*/
ImGui.InputTextFlags_CharsScientific
+
*'''ImGui.InputTextFlags_CharsHexadecimal''': Allow 0123456789ABCDEFabcdef
ImGui.InputTextFlags_CharsUppercase
+
*'''ImGui.InputTextFlags_CharsNoBlank''': Filter out spaces, tabs
ImGui.InputTextFlags_CtrlEnterForNewLine
+
*'''ImGui.InputTextFlags_CharsScientific''': Allow 0123456789.+-*/eE (Scientific notation input)
ImGui.InputTextFlags_EnterReturnsTrue
+
*'''ImGui.InputTextFlags_CharsUppercase''': Turn a..z into A..Z
ImGui.InputTextFlags_EscapeClearsAll
+
*'''ImGui.InputTextFlags_CtrlEnterForNewLine''': In multi-line mode, unfocus with Enter, add new line with Ctrl+Enter (default is opposite: unfocus with Ctrl+Enter, add line with Enter)
ImGui.InputTextFlags_NoBackground -- custom constant, used to disable background
+
*'''ImGui.InputTextFlags_EnterReturnsTrue''': Return 'true' when Enter is pressed (as opposed to every time the value was modified). Consider looking at the IsItemDeactivatedAfterEdit() function
ImGui.InputTextFlags_NoHorizontalScroll
+
*'''ImGui.InputTextFlags_EscapeClearsAll''': Escape key clears content if not empty, and deactivate otherwise (contrast to default behavior of Escape to revert)
ImGui.InputTextFlags_NoUndoRedo
+
*'''ImGui.InputTextFlags_NoBackground -- custom constant, used to disable background''':
ImGui.InputTextFlags_Password
+
*'''ImGui.InputTextFlags_NoHorizontalScroll''': Disable following the cursor horizontally
ImGui.InputTextFlags_ReadOnly
+
*'''ImGui.InputTextFlags_NoUndoRedo''': Disable undo/redo. Note that input text owns the text data while active, if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID()
</syntaxhighlight>
+
*'''ImGui.InputTextFlags_Password''': Password mode, display all characters as '*'
 +
*'''ImGui.InputTextFlags_ReadOnly''': Read-only mode
  
 
== ItemFlags ==
 
== ItemFlags ==
<syntaxhighlight lang="lua">
+
Flags used by upcoming items
ImGui.ItemFlags_ButtonRepeat
+
- input: PushItemFlag() manipulates g.CurrentItemFlags, ItemAdd() calls may add extra flags
ImGui.ItemFlags_Disabled
+
- output: stored in g.LastItemData.InFlags
ImGui.ItemFlags_NoTabStop
+
Current window shared by all windows.
</syntaxhighlight>
+
 
 +
*'''ImGui.ItemFlags_ButtonRepeat''': ''false'', Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings
 +
*'''ImGui.ItemFlags_Disabled''': ''false'', Disable interactions but doesn't affect visuals. See BeginDisabled()/EndDisabled(). See github.com/ocornut/imgui/issues/211
 +
*'''ImGui.ItemFlags_NoTabStop''': ''false'', Disable keyboard tabbing. This is a "lighter" version of ImGuiItemFlags_NoNav
  
 
== MouseButton ==
 
== MouseButton ==
<syntaxhighlight lang="lua">
+
Identify a mouse button.
ImGui.MouseButton_Left
+
 
ImGui.MouseButton_Middle
+
Those values are guaranteed to be stable and we frequently use 0/1 directly. Named enums provided for convenience
ImGui.MouseButton_Right
+
 
</syntaxhighlight>
+
*'''ImGui.MouseButton_Left''': 0
 +
*'''ImGui.MouseButton_Middle''': 2
 +
*'''ImGui.MouseButton_Right''': 1
  
 
== MouseCursor ==
 
== MouseCursor ==
<syntaxhighlight lang="lua">
+
Enumeration for GetMouseCursor()
ImGui.MouseCursor_None
+
 
ImGui.MouseCursor_Arrow
+
User code may request backend to display given cursor by calling SetMouseCursor(), which is why we have some cursors that are marked unused here
ImGui.MouseCursor_Hand
 
ImGui.MouseCursor_NotAllowed
 
ImGui.MouseCursor_ResizeAll
 
ImGui.MouseCursor_ResizeEW
 
ImGui.MouseCursor_ResizeNESW
 
ImGui.MouseCursor_ResizeNS
 
ImGui.MouseCursor_ResizeNWSE
 
ImGui.MouseCursor_TextInput
 
</syntaxhighlight>
 
  
== NavInput ==
+
*'''ImGui.MouseCursor_None''': -1
<syntaxhighlight lang="lua">
+
*'''ImGui.MouseCursor_Arrow''': 0
ImGui.NavInput_Activate
+
*'''ImGui.MouseCursor_Hand''': (Unused by Dear ImGui functions. Use for e.g. hyperlinks)
ImGui.NavInput_Cancel
+
*'''ImGui.MouseCursor_NotAllowed''': When hovering something with disallowed interaction. Usually a crossed circle
ImGui.NavInput_DpadDown
+
*'''ImGui.MouseCursor_ResizeAll''': (Unused by Dear ImGui functions)
ImGui.NavInput_DpadLeft
+
*'''ImGui.MouseCursor_ResizeEW''': When hovering over a vertical border or a column
ImGui.NavInput_DpadRight
+
*'''ImGui.MouseCursor_ResizeNESW''': When hovering over the bottom-left corner of a window
ImGui.NavInput_DpadUp
+
*'''ImGui.MouseCursor_ResizeNS''': When hovering over a horizontal border
ImGui.NavInput_FocusNext
+
*'''ImGui.MouseCursor_ResizeNWSE''': When hovering over the bottom-right corner of a window
ImGui.NavInput_FocusPrev
+
*'''ImGui.MouseCursor_TextInput''': When hovering over InputText, etc.
ImGui.NavInput_Input
 
ImGui.NavInput_LStickDown
 
ImGui.NavInput_LStickLeft
 
ImGui.NavInput_LStickRight
 
ImGui.NavInput_LStickUp
 
ImGui.NavInput_Menu
 
ImGui.NavInput_TweakFast
 
ImGui.NavInput_TweakSlow
 
</syntaxhighlight>
 
  
 
== PopupFlags ==
 
== PopupFlags ==
<syntaxhighlight lang="lua">
+
Flags for OpenPopup*(), BeginPopupContext*(), IsPopupOpen() functions.
ImGui.PopupFlags_None
+
 
ImGui.PopupFlags_AnyPopup
+
- To be backward compatible with older API which took an 'int mouse_button = 1' argument, we need to treat small flags values as a mouse button index, so we encode the mouse button in the first few bits of the flags. It is therefore guaranteed to be legal to pass a mouse button index in ImGuiPopupFlags
ImGui.PopupFlags_AnyPopupId
+
- For the same reason, we exceptionally default the ImGuiPopupFlags argument of BeginPopupContextXXX functions to 1 instead of 0
ImGui.PopupFlags_AnyPopupLevel
+
 
ImGui.PopupFlags_MouseButtonDefault
+
IMPORTANT: because the default parameter is 1 (==ImGuiPopupFlags_MouseButtonRight), if you rely on the default parameter and want to use another flag, you need to pass in the ImGuiPopupFlags_MouseButtonRight flag explicitly
ImGui.PopupFlags_MouseButtonLeft
+
- Multiple buttons currently cannot be combined/or-ed in those functions (we could allow it later)
ImGui.PopupFlags_MouseButtonMask
+
 
ImGui.PopupFlags_MouseButtonMiddle
+
*'''ImGui.PopupFlags_None''': default = 0
ImGui.PopupFlags_MouseButtonRight
+
*'''ImGui.PopupFlags_AnyPopup''': ImGui.PopupFlags_AnyPopupId | ImGui.PopupFlags_AnyPopupLevel,
ImGui.PopupFlags_NoOpenOverExistingPopup
+
*'''ImGui.PopupFlags_AnyPopupId''': For IsPopupOpen(): ignore the ImGuiID parameter and test for any popup
ImGui.PopupFlags_NoOpenOverItems
+
*'''ImGui.PopupFlags_AnyPopupLevel''': For IsPopupOpen(): search/test at any level of the popup stack (default test in the current level)
</syntaxhighlight>
+
*'''ImGui.PopupFlags_MouseButtonDefault''': /
 +
*'''ImGui.PopupFlags_MouseButtonLeft''': For BeginPopupContext*(): open on Left Mouse release. Guaranteed to always be == 0 (same as ImGuiMouseButton_Left)
 +
*'''ImGui.PopupFlags_MouseButtonMask''': /
 +
*'''ImGui.PopupFlags_MouseButtonMiddle''': For BeginPopupContext*(): open on Middle Mouse release. Guaranteed to always be == 2 (same as ImGuiMouseButton_Middle)
 +
*'''ImGui.PopupFlags_MouseButtonRight''': For BeginPopupContext*(): open on Right Mouse release. Guaranteed to always be == 1 (same as ImGuiMouseButton_Right)
 +
*'''ImGui.PopupFlags_NoOpenOverExistingPopup''': For OpenPopup*(), BeginPopupContext*(): don't open if there's already a popup at the same level of the popup stack
 +
*'''ImGui.PopupFlags_NoOpenOverItems''': For BeginPopupContextWindow(): don't return true when hovering items, only when hovering empty space
  
 
== SelectableFlags ==
 
== SelectableFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::Selectable()
ImGui.SelectableFlags_None
+
 
ImGui.SelectableFlags_AllowDoubleClick
+
*'''ImGui.SelectableFlags_None''': default = 0
ImGui.SelectableFlags_AllowItemOverlap
+
*'''ImGui.SelectableFlags_AllowDoubleClick''': Generate press events on double clicks too
ImGui.SelectableFlags_Disabled
+
*'''ImGui.SelectableFlags_AllowItemOverlap''': (WIP) Hit testing to allow subsequent widgets to overlap this one
ImGui.SelectableFlags_DontClosePopups
+
*'''ImGui.SelectableFlags_Disabled''': Cannot be selected, display grayed out text
ImGui.SelectableFlags_SpanAllColumns
+
*'''ImGui.SelectableFlags_DontClosePopups''': Clicking this doesn't close parent popup window
</syntaxhighlight>
+
*'''ImGui.SelectableFlags_SpanAllColumns''': Selectable frame can span all columns (text will still fit in current column)
  
 
== SliderFlags ==
 
== SliderFlags ==
 +
Flags for DragFloat(), DragInt(), SliderFloat(), SliderInt() etc.
 +
We use the same sets of flags for DragXXX() and SliderXXX() functions as the features are the same and it makes it easier to swap them
 +
(Those are per-item flags. There are shared flags in ImGuiIO: io.ConfigDragClickToInputText)
 +
 
*'''ImGui.SliderFlags_None''': default = 0
 
*'''ImGui.SliderFlags_None''': default = 0
*'''ImGui.SliderFlags_AlwaysClamp''': clamp value to min/max bounds when input manually with CTRL+Click. By default CTRL+Click allows going out of bounds
+
*'''ImGui.SliderFlags_AlwaysClamp''': Clamp value to min/max bounds when input manually with CTRL+Click. By default CTRL+Click allows going out of bounds
*'''ImGui.SliderFlags_Logarithmic''': make the widget logarithmic (linear otherwise). Consider using ImGuiSliderFlags_NoRoundToFormat with this if using a format-string with small amount of digits
+
*'''ImGui.SliderFlags_Logarithmic''': Make the widget logarithmic (linear otherwise). Consider using ImGuiSliderFlags_NoRoundToFormat with this if using a format-string with small amount of digits
*'''ImGui.SliderFlags_NoInput''': disable CTRL+Click or Enter key allowing to input text directly into the widget
+
*'''ImGui.SliderFlags_NoInput''': Disable CTRL+Click or Enter key allowing to input text directly into the widget
*'''ImGui.SliderFlags_NoRoundToFormat''': disable rounding underlying value to match precision of the display format string (e.g. %.3f values are rounded to those 3 digits)
+
*'''ImGui.SliderFlags_NoRoundToFormat''': Disable rounding underlying value to match precision of the display format string (e.g. %.3f values are rounded to those 3 digits)
  
 
== SortDirection ==
 
== SortDirection ==
<syntaxhighlight lang="lua">
+
A sorting direction.
ImGui.SortDirection_None
+
 
ImGui.SortDirection_Ascending
+
*'''ImGui.SortDirection_None''': default = 0
ImGui.SortDirection_Descending
+
*'''ImGui.SortDirection_Ascending''': Ascending = 0->9, A->Z etc.
</syntaxhighlight>
+
*'''ImGui.SortDirection_Descending''': Descending = 9->0, Z->A etc.
  
 
== StyleVar ==
 
== StyleVar ==
<syntaxhighlight lang="lua">
+
Enumeration for PushStyleVar() / PopStyleVar() to temporarily modify the ImGuiStyle structure.
ImGui.StyleVar_Alpha
+
- The enum only refers to fields of ImGuiStyle which makes sense to be pushed/popped inside UI code. During initialization or between frames, feel free to just poke into ImGuiStyle directly
ImGui.StyleVar_ButtonTextAlign
+
 
ImGui.StyleVar_CellPadding
+
*'''ImGui.StyleVar_Alpha''': ''float'', Alpha
ImGui.StyleVar_ChildBorderSize
+
*'''ImGui.StyleVar_ButtonTextAlign''': ''ImVec2'', ButtonTextAlign
ImGui.StyleVar_ChildRounding
+
*'''ImGui.StyleVar_CellPadding''': ''ImVec2'', CellPadding
ImGui.StyleVar_DisabledAlpha
+
*'''ImGui.StyleVar_ChildBorderSize''': ''float'', ChildBorderSize
ImGui.StyleVar_FrameBorderSize
+
*'''ImGui.StyleVar_ChildRounding''': ''float'', ChildRounding
ImGui.StyleVar_FramePadding
+
*'''ImGui.StyleVar_DisabledAlpha''': ''float'', DisabledAlpha
ImGui.StyleVar_FrameRounding
+
*'''ImGui.StyleVar_FrameBorderSize''': ''float'', FrameBorderSize
ImGui.StyleVar_GrabMinSize
+
*'''ImGui.StyleVar_FramePadding''': ''ImVec2'', FramePadding
ImGui.StyleVar_GrabRounding
+
*'''ImGui.StyleVar_FrameRounding''': ''float'', FrameRounding
ImGui.StyleVar_IndentSpacing
+
*'''ImGui.StyleVar_GrabMinSize''': ''float'', GrabMinSize
ImGui.StyleVar_ItemInnerSpacing
+
*'''ImGui.StyleVar_GrabRounding''': ''float'', GrabRounding
ImGui.StyleVar_ItemSpacing
+
*'''ImGui.StyleVar_IndentSpacing''': ''float'', IndentSpacing
ImGui.StyleVar_PopupBorderSize
+
*'''ImGui.StyleVar_ItemInnerSpacing''': ''ImVec2'', ItemInnerSpacing
ImGui.StyleVar_PopupRounding
+
*'''ImGui.StyleVar_ItemSpacing''': ''ImVec2'', ItemSpacing
ImGui.StyleVar_ScrollbarRounding
+
*'''ImGui.StyleVar_PopupBorderSize''': ''float'', PopupBorderSize
ImGui.StyleVar_ScrollbarSize
+
*'''ImGui.StyleVar_PopupRounding''': ''float'', PopupRounding
ImGui.StyleVar_SelectableTextAlign
+
*'''ImGui.StyleVar_ScrollbarRounding''': ''float'', ScrollbarRounding
ImGui.StyleVar_SeparatorTextAlign
+
*'''ImGui.StyleVar_ScrollbarSize''': ''float'', ScrollbarSize
ImGui.StyleVar_SeparatorTextBorderSize
+
*'''ImGui.StyleVar_SelectableTextAlign''': ''ImVec2'', SelectableTextAlign
ImGui.StyleVar_SeparatorTextPadding
+
*'''ImGui.StyleVar_SeparatorTextAlign''': ''ImVec2'', SeparatorTextAlign
ImGui.StyleVar_TabRounding
+
*'''ImGui.StyleVar_SeparatorTextBorderSize''': ''float'', SeparatorTextBorderSize
ImGui.StyleVar_WindowBorderSize
+
*'''ImGui.StyleVar_SeparatorTextPadding''': ''ImVec2'', SeparatorTextPadding
ImGui.StyleVar_WindowMinSize
+
*'''ImGui.StyleVar_TabRounding''': ''float'', TabRounding
ImGui.StyleVar_WindowPadding
+
*'''ImGui.StyleVar_WindowBorderSize''': ''float'', WindowBorderSize
ImGui.StyleVar_WindowRounding
+
*'''ImGui.StyleVar_WindowMinSize''': ''ImVec2'', WindowMinSize
ImGui.StyleVar_WindowTitleAlign
+
*'''ImGui.StyleVar_WindowPadding''': ''ImVec2'', WindowPadding
</syntaxhighlight>
+
*'''ImGui.StyleVar_WindowRounding''': ''float'', WindowRounding
 +
*'''ImGui.StyleVar_WindowTitleAlign''': ''ImVec2'', WindowTitleAlign
  
 
== TabBarFlags ==
 
== TabBarFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::BeginTabBar()
ImGui.TabBarFlags_None
+
 
ImGui.TabBarFlags_AutoSelectNewTabs
+
*'''ImGui.TabBarFlags_None''': default = 0
ImGui.TabBarFlags_FittingPolicyDefault
+
*'''ImGui.TabBarFlags_AutoSelectNewTabs''': Automatically select new tabs when they appear
ImGui.TabBarFlags_FittingPolicyMask
+
*'''ImGui.TabBarFlags_FittingPolicyDefault''': ImGui.TabBarFlags_FittingPolicyResizeDown,
ImGui.TabBarFlags_FittingPolicyResizeDown
+
*'''ImGui.TabBarFlags_FittingPolicyMask''': ImGui.TabBarFlags_FittingPolicyResizeDown | ImGui.TabBarFlags_FittingPolicyScroll,
ImGui.TabBarFlags_FittingPolicyScroll
+
*'''ImGui.TabBarFlags_FittingPolicyResizeDown''': Resize tabs when they don't fit
ImGui.TabBarFlags_NoCloseWithMiddleMouseButton
+
*'''ImGui.TabBarFlags_FittingPolicyScroll''': Add scroll buttons when tabs don't fit
ImGui.TabBarFlags_NoTabListScrollingButtons
+
*'''ImGui.TabBarFlags_NoCloseWithMiddleMouseButton''': Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false
ImGui.TabBarFlags_NoTooltip
+
*'''ImGui.TabBarFlags_NoTabListScrollingButtons''':
ImGui.TabBarFlags_Reorderable
+
*'''ImGui.TabBarFlags_NoTooltip''': Disable tooltips when hovering a tab
ImGui.TabBarFlags_TabListPopupButton
+
*'''ImGui.TabBarFlags_Reorderable''': Allow manually dragging tabs to re-order them + New tabs are appended at the end of list
</syntaxhighlight>
+
*'''ImGui.TabBarFlags_TabListPopupButton''': Disable buttons to open the tab list popup
  
 
== TabItemFlags ==
 
== TabItemFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::BeginTabItem()
ImGui.TabItemFlags_None
+
 
ImGui.TabItemFlags_Leading
+
*'''ImGui.TabItemFlags_None''': default = 0
ImGui.TabItemFlags_NoCloseWithMiddleMouseButton
+
*'''ImGui.TabItemFlags_Leading''': Enforce the tab position to the left of the tab bar (after the tab list popup button)
ImGui.TabItemFlags_NoPushId
+
*'''ImGui.TabItemFlags_NoCloseWithMiddleMouseButton''': Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false
ImGui.TabItemFlags_NoReorder
+
*'''ImGui.TabItemFlags_NoPushId''': Don't call PushID(tab->ID)/PopID() on BeginTabItem()/EndTabItem()
ImGui.TabItemFlags_NoTooltip
+
*'''ImGui.TabItemFlags_NoReorder''': Disable reordering this tab or having another tab cross over this tab
ImGui.TabItemFlags_SetSelected
+
*'''ImGui.TabItemFlags_NoTooltip''': Disable tooltip for the given tab
ImGui.TabItemFlags_Trailing
+
*'''ImGui.TabItemFlags_SetSelected''': Trigger flag to programmatically make the tab selected when calling BeginTabItem()
ImGui.TabItemFlags_UnsavedDocument
+
*'''ImGui.TabItemFlags_Trailing''': Enforce the tab position to the right of the tab bar (before the scrolling buttons)
</syntaxhighlight>
+
*'''ImGui.TabItemFlags_UnsavedDocument''': Display a dot next to the title + tab is selected when clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar
  
 
== TableFlags ==
 
== TableFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::BeginTable()
ImGui.TableFlags_None
+
- '''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
ImGui.TableFlags_Borders
+
- The DEFAULT sizing policies are:
ImGui.TableFlags_BordersH
+
    - Default to ImGuiTableFlags_SizingFixedFit if ScrollX is on, or if host window has ImGuiWindowFlags_AlwaysAutoResize
ImGui.TableFlags_BordersInner
+
    - Default to ImGuiTableFlags_SizingStretchSame if ScrollX is off
ImGui.TableFlags_BordersInnerH  
+
- When ScrollX is off:
ImGui.TableFlags_BordersInnerV
+
    - Table defaults to ImGuiTableFlags_SizingStretchSame -> all Columns defaults to ImGuiTableColumnFlags_WidthStretch with same weight
ImGui.TableFlags_BordersOuter
+
    - Columns sizing policy allowed: Stretch (default), Fixed/Auto
ImGui.TableFlags_BordersOuterH
+
    - Fixed Columns (if any) will generally obtain their requested width (unless the table cannot fit them all)
ImGui.TableFlags_BordersOuterV
+
    - Stretch Columns will share the remaining width according to their respective weight
ImGui.TableFlags_BordersV
+
    - Mixed Fixed/Stretch columns is possible but has various side-effects on resizing behaviors
ImGui.TableFlags_ContextMenuInBody
+
      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)
ImGui.TableFlags_Hideable
+
- When ScrollX is on:
ImGui.TableFlags_NoBordersInBody
+
    - Table defaults to ImGuiTableFlags_SizingFixedFit -> all Columns defaults to ImGuiTableColumnFlags_WidthFixed
ImGui.TableFlags_NoBordersInBodyUntilResize
+
    - Columns sizing policy allowed: Fixed/Auto mostly
ImGui.TableFlags_NoClip
+
    - Fixed Columns can be enlarged as needed. Table will show a horizontal scrollbar if needed
ImGui.TableFlags_NoHostExtendX
+
    - 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
ImGui.TableFlags_NoHostExtendY
+
    - Using Stretch columns OFTEN DOES NOT MAKE SENSE if ScrollX is on, UNLESS you have specified a value for 'inner_width' in BeginTable()
ImGui.TableFlags_NoKeepColumnsVisible
+
      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
ImGui.TableFlags_NoPadInnerX
+
 
ImGui.TableFlags_NoPadOuterX
+
*'''ImGui.TableFlags_None''': default = 0
ImGui.TableFlags_NoSavedSettings
+
*'''ImGui.TableFlags_Borders''': ImGui.TableFlags_BordersInner | ImGui.TableFlags_BordersOuter, Draw all borders
ImGui.TableFlags_PadOuterX
+
*'''ImGui.TableFlags_BordersH''': ImGui.TableFlags_BordersInnerH | ImGui.TableFlags_BordersOuterH, Draw horizontal borders
ImGui.TableFlags_PreciseWidths
+
*'''ImGui.TableFlags_BordersInner''': ImGui.TableFlags_BordersInnerV | ImGui.TableFlags_BordersInnerH, Draw inner borders
ImGui.TableFlags_Reorderable
+
*'''ImGui.TableFlags_BordersInnerH ''': Draw horizontal borders between rows
ImGui.TableFlags_Resizable
+
*'''ImGui.TableFlags_BordersInnerV''': Draw vertical borders between columns
ImGui.TableFlags_RowBg
+
*'''ImGui.TableFlags_BordersOuter''': ImGui.TableFlags_BordersOuterV | ImGui.TableFlags_BordersOuterH, Draw outer borders
ImGui.TableFlags_ScrollX
+
*'''ImGui.TableFlags_BordersOuterH''': Draw horizontal borders at the top and bottom
ImGui.TableFlags_ScrollY
+
*'''ImGui.TableFlags_BordersOuterV''': Draw vertical borders on the left and right sides
ImGui.TableFlags_SizingFixedFit
+
*'''ImGui.TableFlags_BordersV''': ImGui.TableFlags_BordersInnerV | ImGui.TableFlags_BordersOuterV, Draw vertical borders
ImGui.TableFlags_SizingFixedSame
+
*'''ImGui.TableFlags_ContextMenuInBody''': Right-click on columns body/contents will display table context menu. By default it is available in TableHeadersRow()
ImGui.TableFlags_SizingStretchProp
+
*'''ImGui.TableFlags_Hideable''': Enable hiding/disabling columns in context menu
ImGui.TableFlags_SizingStretchSame
+
*'''ImGui.TableFlags_NoBordersInBody''': [ALPHA] Disable vertical borders in columns Body (borders will always appear in Headers). -> May move to style
ImGui.TableFlags_Sortable
+
*'''ImGui.TableFlags_NoBordersInBodyUntilResize''': [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders will always appear in Headers). -> May move to style
ImGui.TableFlags_SortMulti
+
*'''ImGui.TableFlags_NoClip''': Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze()
ImGui.TableFlags_SortTristate
+
*'''ImGui.TableFlags_NoHostExtendX''': 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
</syntaxhighlight>
+
*'''ImGui.TableFlags_NoHostExtendY''': 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
 +
*'''ImGui.TableFlags_NoKeepColumnsVisible''': Disable keeping column always minimally visible when ScrollX is off and table gets too small. Not recommended if columns are resizable
 +
*'''ImGui.TableFlags_NoPadInnerX''': Disable inner padding between columns (double inner padding if BordersOuterV is on, single inner padding if BordersOuterV is off)
 +
*'''ImGui.TableFlags_NoPadOuterX''': Default if BordersOuterV is off. Disable outermost padding
 +
*'''ImGui.TableFlags_NoSavedSettings''': Disable persisting columns order, width and sort settings in the .ini file
 +
*'''ImGui.TableFlags_PadOuterX''': Default if BordersOuterV is on. Enable outermost padding. Generally desirable if you have headers
 +
*'''ImGui.TableFlags_PreciseWidths''': 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
 +
*'''ImGui.TableFlags_Reorderable''': Enable reordering columns in header row (need calling TableSetupColumn() + TableHeadersRow() to display headers)
 +
*'''ImGui.TableFlags_Resizable''': Enable resizing columns
 +
*'''ImGui.TableFlags_RowBg''': Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually)
 +
*'''ImGui.TableFlags_ScrollX''': 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
 +
*'''ImGui.TableFlags_ScrollY''': Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size
 +
*'''ImGui.TableFlags_SizingFixedFit''': Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching contents width
 +
*'''ImGui.TableFlags_SizingFixedSame''': Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable ImGuiTableFlags_NoKeepColumnsVisible
 +
*'''ImGui.TableFlags_SizingStretchProp''': Columns default to _WidthStretch with default weights proportional to each columns contents widths
 +
*'''ImGui.TableFlags_SizingStretchSame''': Columns default to _WidthStretch with default weights all equal, unless overridden by TableSetupColumn()
 +
*'''ImGui.TableFlags_Sortable''': Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see ImGuiTableFlags_SortMulti and ImGuiTableFlags_SortTristate
 +
*'''ImGui.TableFlags_SortMulti''': Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount > 1)
 +
*'''ImGui.TableFlags_SortTristate''': Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0)
  
 
== TableBgTarget ==
 
== TableBgTarget ==
<syntaxhighlight lang="lua">
+
Enum for ImGui::TableSetBgColor()
ImGui.TableBgTarget_None
+
Background colors are rendering in 3 layers:
ImGui.TableBgTarget_CellBg
+
  - Layer 0: draw with RowBg0 color if set, otherwise draw with ColumnBg0 if set
ImGui.TableBgTarget_RowBg0
+
  - Layer 1: draw with RowBg1 color if set, otherwise draw with ColumnBg1 if set
ImGui.TableBgTarget_RowBg1
+
  - Layer 2: draw with CellBg color if set
</syntaxhighlight>
+
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
 +
 
 +
*'''ImGui.TableBgTarget_None''': default = 0
 +
*'''ImGui.TableBgTarget_CellBg''': Set cell background color (top-most color)
 +
*'''ImGui.TableBgTarget_RowBg0''': Set row background color 0 (generally used for background, automatically set when ImGuiTableFlags_RowBg is used)
 +
*'''ImGui.TableBgTarget_RowBg1''': Set row background color 1 (generally used for selection marking)
  
 
== TableColumnFlags ==
 
== TableColumnFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::TableSetupColumn()
ImGui.TableColumnFlags_None
+
 
ImGui.TableColumnFlags_DefaultHide
+
*'''ImGui.TableColumnFlags_None''': default = 0
ImGui.TableColumnFlags_DefaultSort
+
*'''ImGui.TableColumnFlags_DefaultHide''': Default as a hidden/disabled column
ImGui.TableColumnFlags_Disabled
+
*'''ImGui.TableColumnFlags_DefaultSort''': Default as a sorting column
ImGui.TableColumnFlags_IndentDisable
+
*'''ImGui.TableColumnFlags_Disabled''': Overriding/master disable flag: hide column, won't show in context menu (unlike calling TableSetColumnEnabled() which manipulates the user accessible state)
ImGui.TableColumnFlags_IndentEnable
+
*'''ImGui.TableColumnFlags_IndentDisable''': Ignore current Indent value when entering cell (default for columns > 0). Indentation changes _within_ the cell will still be honored
ImGui.TableColumnFlags_IsEnabled
+
*'''ImGui.TableColumnFlags_IndentEnable''': Use current Indent value when entering cell (default for column 0)
ImGui.TableColumnFlags_IsHovered
+
*'''ImGui.TableColumnFlags_IsEnabled''': Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags
ImGui.TableColumnFlags_IsSorted
+
*'''ImGui.TableColumnFlags_IsHovered''': Status: is hovered by mouse
ImGui.TableColumnFlags_IsVisible
+
*'''ImGui.TableColumnFlags_IsSorted''': Status: is currently part of the sort specs
ImGui.TableColumnFlags_NoClip
+
*'''ImGui.TableColumnFlags_IsVisible''': Status: is visible == is enabled AND not clipped by scrolling
ImGui.TableColumnFlags_NoHeaderLabel
+
*'''ImGui.TableColumnFlags_NoClip''': Disable clipping for this column (all NoClip columns will render in a same draw command)
ImGui.TableColumnFlags_NoHeaderWidth
+
*'''ImGui.TableColumnFlags_NoHeaderLabel''': TableHeadersRow() will not submit label for this column. Convenient for some small columns. Name will still appear in context menu
ImGui.TableColumnFlags_NoHide
+
*'''ImGui.TableColumnFlags_NoHeaderWidth''': Disable header text width contribution to automatic column width
ImGui.TableColumnFlags_NoReorder
+
*'''ImGui.TableColumnFlags_NoHide''': Disable ability to hide/disable this column
ImGui.TableColumnFlags_NoResize
+
*'''ImGui.TableColumnFlags_NoReorder''': Disable manual reordering this column, this will also prevent other columns from crossing over this column
ImGui.TableColumnFlags_NoSort
+
*'''ImGui.TableColumnFlags_NoResize''': Disable manual resizing
ImGui.TableColumnFlags_NoSortAscending
+
*'''ImGui.TableColumnFlags_NoSort''': Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table)
ImGui.TableColumnFlags_NoSortDescending
+
*'''ImGui.TableColumnFlags_NoSortAscending''': Disable ability to sort in the ascending direction
ImGui.TableColumnFlags_PreferSortAscending
+
*'''ImGui.TableColumnFlags_NoSortDescending''': Disable ability to sort in the descending direction
ImGui.TableColumnFlags_PreferSortDescending
+
*'''ImGui.TableColumnFlags_PreferSortAscending''': Make the initial sort direction Ascending when first sorting on this column (default)
ImGui.TableColumnFlags_WidthFixed
+
*'''ImGui.TableColumnFlags_PreferSortDescending''': Make the initial sort direction Descending when first sorting on this column
ImGui.TableColumnFlags_WidthStretch
+
*'''ImGui.TableColumnFlags_WidthFixed''': Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable)
</syntaxhighlight>
+
*'''ImGui.TableColumnFlags_WidthStretch''': Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp)
  
 
== TableRowFlags ==
 
== TableRowFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::TableNextRow()
ImGui.TableRowFlags_None
+
 
ImGui.TableRowFlags_Headers
+
*'''ImGui.TableRowFlags_None''': default = 0
</syntaxhighlight>
+
*'''ImGui.TableRowFlags_Headers''': Identify header row (set default background color + width of its contents accounted differently for auto column width)
  
 
== TE ==
 
== TE ==
<syntaxhighlight lang="lua">
+
*'''ImGui.TE_Background''':
ImGui.TE_Background
+
*'''ImGui.TE_Breakpoint''':
ImGui.TE_Breakpoint
+
*'''ImGui.TE_CharLiteral''':
ImGui.TE_CharLiteral
+
*'''ImGui.TE_Comment''':
ImGui.TE_ColorIndex
+
*'''ImGui.TE_CurrentLineEdge''':
ImGui.TE_Comment
+
*'''ImGui.TE_CurrentLineFill''':
ImGui.TE_CurrentLineEdge
+
*'''ImGui.TE_CurrentLineFillInactive''':
ImGui.TE_CurrentLineFill
+
*'''ImGui.TE_Cursor''':
ImGui.TE_CurrentLineFillInactive
+
*'''ImGui.TE_Default''':
ImGui.TE_Cursor
+
*'''ImGui.TE_ErrorMarker''':
ImGui.TE_Default
+
*'''ImGui.TE_Identifier''':
ImGui.TE_ErrorMarker
+
*'''ImGui.TE_Keyword''':
ImGui.TE_Identifier
+
*'''ImGui.TE_KnownIdentifier''':
ImGui.TE_Keyword
+
*'''ImGui.TE_LineNumber''':
ImGui.TE_KnownIdentifier
+
*'''ImGui.TE_MultiLineComment''':
ImGui.TE_LineNumber
+
*'''ImGui.TE_Number''':
ImGui.TE_MultiLineComment
+
*'''ImGui.TE_Preprocessor''':
ImGui.TE_Number
+
*'''ImGui.TE_PreprocIdentifier''':
ImGui.TE_Preprocessor
+
*'''ImGui.TE_Punctuation''':
ImGui.TE_PreprocIdentifier
+
*'''ImGui.TE_Selection''':
ImGui.TE_Punctuation
+
*'''ImGui.TE_String''':
ImGui.TE_Selection
 
ImGui.TE_String
 
</syntaxhighlight>
 
  
 
== TreeNodeFlags ==
 
== TreeNodeFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::TreeNodeEx(), ImGui::CollapsingHeader*()
ImGui.TreeNodeFlags_None
+
 
ImGui.TreeNodeFlags_AllowItemOverlap
+
*'''ImGui.TreeNodeFlags_None''': default = 0
ImGui.TreeNodeFlags_Bullet
+
*'''ImGui.TreeNodeFlags_AllowItemOverlap''': Hit testing to allow subsequent widgets to overlap this one
ImGui.TreeNodeFlags_CollapsingHeader
+
*'''ImGui.TreeNodeFlags_Bullet''': Display a bullet instead of arrow
ImGui.TreeNodeFlags_DefaultOpen
+
*'''ImGui.TreeNodeFlags_CollapsingHeader''': ImGui.TreeNodeFlags_Framed | ImGui.TreeNodeFlags_NoTreePushOnOpen | ImGui.TreeNodeFlags_NoAutoOpenOnLog,
ImGui.TreeNodeFlags_Framed
+
*'''ImGui.TreeNodeFlags_DefaultOpen''': Default node to be open
ImGui.TreeNodeFlags_FramePadding
+
*'''ImGui.TreeNodeFlags_Framed''': Draw frame with background (e.g. for CollapsingHeader)
ImGui.TreeNodeFlags_Leaf
+
*'''ImGui.TreeNodeFlags_FramePadding''': Use FramePadding (even for an unframed text node) to vertically align text baseline to regular widget height. Equivalent to calling AlignTextToFramePadding()
ImGui.TreeNodeFlags_NavLeftJumpsBackHere
+
*'''ImGui.TreeNodeFlags_Leaf''': No collapsing, no arrow (use as a convenience for leaf nodes)
ImGui.TreeNodeFlags_NoAutoOpenOnLog
+
*'''ImGui.TreeNodeFlags_NavLeftJumpsBackHere''': (WIP) Nav: left direction may move to this TreeNode() from any of its child (items submitted between TreeNode and TreePop)
ImGui.TreeNodeFlags_NoTreePushOnOpen
+
*'''ImGui.TreeNodeFlags_NoAutoOpenOnLog''': Don't automatically and temporarily open node when Logging is active (by default logging will automatically open tree nodes)
ImGui.TreeNodeFlags_OpenOnArrow
+
*'''ImGui.TreeNodeFlags_NoTreePushOnOpen''': Don't do a TreePush() when open (e.g. for CollapsingHeader) = no extra indent nor pushing on ID stack
ImGui.TreeNodeFlags_OpenOnDoubleClick
+
*'''ImGui.TreeNodeFlags_OpenOnArrow''': Only open when clicking on the arrow part. If ImGuiTreeNodeFlags_OpenOnDoubleClick is also set, single-click arrow or double-click all box to open
ImGui.TreeNodeFlags_Selected
+
*'''ImGui.TreeNodeFlags_OpenOnDoubleClick''': Need double-click to open node
ImGui.TreeNodeFlags_SpanAvailWidth
+
*'''ImGui.TreeNodeFlags_Selected''': Draw as selected
ImGui.TreeNodeFlags_SpanFullWidth
+
*'''ImGui.TreeNodeFlags_SpanAvailWidth''': Extend hit box to the right-most edge, even if not framed. This is not the default in order to allow adding other items on the same line. In the future we may refactor the hit system to be front-to-back, allowing natural overlaps and then this can become the default
</syntaxhighlight>
+
*'''ImGui.TreeNodeFlags_SpanFullWidth''': Extend hit box to the left-most and right-most edges (bypass the indented area)
  
 
== WindowFlags ==
 
== WindowFlags ==
 +
Flags for ImGui::Begin()
 +
(Those are per-window flags. There are shared flags in ImGuiIO: io.ConfigWindowsResizeFromEdges and io.ConfigWindowsMoveFromTitleBarOnly)
 +
 
*'''ImGui.WindowFlags_None''': default = 0
 
*'''ImGui.WindowFlags_None''': default = 0
*'''ImGui.WindowFlags_AlwaysAutoResize''': resize every window to its content every frame
+
*'''ImGui.WindowFlags_AlwaysAutoResize''': Resize every window to its content every frame
*'''ImGui.WindowFlags_AlwaysHorizontalScrollbar''': always show horizontal scrollbar (even if ContentSize.x < Size.x)
+
*'''ImGui.WindowFlags_AlwaysHorizontalScrollbar''': Always show horizontal scrollbar (even if ContentSize.x < Size.x)
*'''ImGui.WindowFlags_AlwaysUseWindowPadding''': ensure child windows without border uses style.WindowPadding (ignored by default for non-bordered child windows, because more convenient)
+
*'''ImGui.WindowFlags_AlwaysUseWindowPadding''': Ensure child windows without border uses style.WindowPadding (ignored by default for non-bordered child windows, because more convenient)
*'''ImGui.WindowFlags_AlwaysVerticalScrollbar''': always show vertical scrollbar (even if ContentSize.y < Size.y)
+
*'''ImGui.WindowFlags_AlwaysVerticalScrollbar''': Always show vertical scrollbar (even if ContentSize.y < Size.y)
*'''ImGui.WindowFlags_FullScreen''': custom constant, used to create a fullscreen window
+
*'''ImGui.WindowFlags_FullScreen''': Custom constant, used to create a fullscreen window
*'''ImGui.WindowFlags_HorizontalScrollbar''': allow horizontal scrollbar to appear (off by default). You may use SetNextWindowContentSize(ImVec2(width,0.0f)); prior to calling Begin() to specify width. Read code in imgui_demo in the "Horizontal Scrolling" section
+
*'''ImGui.WindowFlags_HorizontalScrollbar''': Allow horizontal scrollbar to appear (off by default). You may use SetNextWindowContentSize(ImVec2(width,0.0f)); prior to calling Begin() to specify width. Read code in imgui_demo in the "Horizontal Scrolling" section
*'''ImGui.WindowFlags_MenuBar''': has a menu-bar
+
*'''ImGui.WindowFlags_MenuBar''': Has a menu-bar
*'''ImGui.WindowFlags_NoBackground''': disable drawing background color (WindowBg, etc.) and outside border. Similar as using SetNextWindowBgAlpha(0.0f)
+
*'''ImGui.WindowFlags_NoBackground''': Disable drawing background color (WindowBg, etc.) and outside border. Similar as using SetNextWindowBgAlpha(0.0f)
*'''ImGui.WindowFlags_NoBringToFrontOnFocus''': disable bringing window to front when taking focus (e.g. clicking on it or programmatically giving it focus)
+
*'''ImGui.WindowFlags_NoBringToFrontOnFocus''': Disable bringing window to front when taking focus (e.g. clicking on it or programmatically giving it focus)
*'''ImGui.WindowFlags_NoCollapse''': disable user collapsing window by double-clicking on it. Also referred to as Window Menu Button (e.g. within a docking node)
+
*'''ImGui.WindowFlags_NoCollapse''': Disable user collapsing window by double-clicking on it. Also referred to as Window Menu Button (e.g. within a docking node)
*'''ImGui.WindowFlags_NoDecoration''': a combination of ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse
+
*'''ImGui.WindowFlags_NoDecoration''': A combination of ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse
*'''ImGui.WindowFlags_NoFocusOnAppearing''': disable taking focus when transitioning from hidden to visible state
+
*'''ImGui.WindowFlags_NoFocusOnAppearing''': Disable taking focus when transitioning from hidden to visible state
*'''ImGui.WindowFlags_NoInputs''': a combination of ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus
+
*'''ImGui.WindowFlags_NoInputs''': A combination of ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus
*'''ImGui.WindowFlags_NoMouseInputs''': disable catching mouse, hovering test with pass through
+
*'''ImGui.WindowFlags_NoMouseInputs''': Disable catching mouse, hovering test with pass through
*'''ImGui.WindowFlags_NoMove''': disable user moving the window
+
*'''ImGui.WindowFlags_NoMove''': Disable user moving the window
*'''ImGui.WindowFlags_NoNav''': a combination of ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus
+
*'''ImGui.WindowFlags_NoNav''': A combination of ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus
*'''ImGui.WindowFlags_NoNavFocus''': no focusing toward this window with gamepad/keyboard navigation (e.g. skipped by CTRL+TAB)
+
*'''ImGui.WindowFlags_NoNavFocus''': No focusing toward this window with gamepad/keyboard navigation (e.g. skipped by CTRL+TAB)
*'''ImGui.WindowFlags_NoNavInputs''': no gamepad/keyboard navigation within the window
+
*'''ImGui.WindowFlags_NoNavInputs''': No gamepad/keyboard navigation within the window
*'''ImGui.WindowFlags_NoResize''': disable user resizing with the lower-right grip
+
*'''ImGui.WindowFlags_NoResize''': Disable user resizing with the lower-right grip
*'''ImGui.WindowFlags_NoSavedSettings''': never load/save settings in .ini file
+
*'''ImGui.WindowFlags_NoSavedSettings''': Never load/save settings in .ini file
*'''ImGui.WindowFlags_NoScrollbar''': disable scrollbars (window can still scroll with mouse or programmatically)
+
*'''ImGui.WindowFlags_NoScrollbar''': Disable scrollbars (window can still scroll with mouse or programmatically)
*'''ImGui.WindowFlags_NoScrollWithMouse''': disable user vertically scrolling with mouse wheel. On child window, mouse wheel will be forwarded to the parent unless NoScrollbar is also set
+
*'''ImGui.WindowFlags_NoScrollWithMouse''': Disable user vertically scrolling with mouse wheel. On child window, mouse wheel will be forwarded to the parent unless NoScrollbar is also set
*'''ImGui.WindowFlags_NoTitleBar''': disable title-bar
+
*'''ImGui.WindowFlags_NoTitleBar''': Disable title-bar
*'''ImGui.WindowFlags_UnsavedDocument''': display a dot next to the title. When used in a tab/docking context, tab is selected when clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar
+
*'''ImGui.WindowFlags_UnsavedDocument''': Display a dot next to the title. When used in a tab/docking context, tab is selected when clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar
  
  
 
'''[[Dear ImGui]]'''
 
'''[[Dear ImGui]]'''
 
{{GIDEROS IMPORTANT LINKS}}
 
{{GIDEROS IMPORTANT LINKS}}

Latest revision as of 19:59, 8 October 2024

_VERSION

  • ImGui._VERSION: Dear ImGui version

BackendFlags

Backend capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom backend.

  • ImGui.BackendFlags_None: default = 0
  • ImGui.BackendFlags_HasGamepad: Backend Platform supports gamepad and currently has one connected
  • ImGui.BackendFlags_HasMouseCursors: Backend Platform supports honoring GetMouseCursor() value to change the OS cursor shape
  • ImGui.BackendFlags_HasSetMousePos: Backend Platform supports io.WantSetMousePos requests to reposition the OS mouse position (only used if ImGuiConfigFlags_NavEnableSetMousePos is set)
  • ImGui.BackendFlags_RendererHasVtxOffset: Backend Renderer supports ImDrawCmd::VtxOffset. This enables output of large meshes (64K+ vertices) while still using 16-bit indices

Col

Enumeration for PushStyleColor() / PopStyleColor()

  • ImGui.Col_Border:
  • ImGui.Col_BorderShadow:
  • ImGui.Col_Button:
  • ImGui.Col_ButtonActive:
  • ImGui.Col_ButtonHovered:
  • ImGui.Col_CheckMark:
  • ImGui.Col_ChildBg: Background of child windows
  • ImGui.Col_DragDropTarget: Rectangle highlighting a drop target
  • ImGui.Col_FrameBg: Background of checkbox, radio button, plot, slider, text input
  • ImGui.Col_FrameBgActive:
  • ImGui.Col_FrameBgHovered:
  • ImGui.Col_Header: Header* colors are used for CollapsingHeader, TreeNode, Selectable, MenuItem
  • ImGui.Col_HeaderActive:
  • ImGui.Col_HeaderHovered:
  • ImGui.Col_MenuBarBg:
  • ImGui.Col_ModalWindowDimBg: Darken/colorize entire screen behind a modal window, when one is active
  • ImGui.Col_NavHighlight: Gamepad/keyboard: current highlighted item
  • ImGui.Col_NavWindowingDimBg: Darken/colorize entire screen behind the CTRL+TAB window list, when active
  • ImGui.Col_NavWindowingHighlight: Highlight window when using CTRL+TAB
  • ImGui.Col_PlotHistogram:
  • ImGui.Col_PlotHistogramHovered:
  • ImGui.Col_PlotLines:
  • ImGui.Col_PlotLinesHovered:
  • ImGui.Col_PopupBg: Background of popups, menus, tooltips windows
  • ImGui.Col_ResizeGrip: Resize grip in lower-right and lower-left corners of windows.
  • ImGui.Col_ResizeGripActive:
  • ImGui.Col_ResizeGripHovered:
  • ImGui.Col_ScrollbarBg:
  • ImGui.Col_ScrollbarGrab:
  • ImGui.Col_ScrollbarGrabActive:
  • ImGui.Col_ScrollbarGrabHovered:
  • ImGui.Col_Separator:
  • ImGui.Col_SeparatorActive:
  • ImGui.Col_SeparatorHovered:
  • ImGui.Col_SliderGrab:
  • ImGui.Col_SliderGrabActive:
  • ImGui.Col_Tab: TabItem in a TabBar
  • ImGui.Col_TabActive:
  • ImGui.Col_TabHovered:
  • ImGui.Col_TableBorderLight: Table inner borders (prefer using Alpha=1.0 here)
  • ImGui.Col_TableBorderStrong: Table outer and header borders (prefer using Alpha=1.0 here)
  • ImGui.Col_TableHeaderBg: Table header background
  • ImGui.Col_TableRowBg: Table row background (even rows)
  • ImGui.Col_TableRowBgAlt: Table row background (odd rows)
  • ImGui.Col_TabUnfocused:
  • ImGui.Col_TabUnfocusedActive:
  • ImGui.Col_Text:
  • ImGui.Col_TextDisabled:
  • ImGui.Col_TextSelectedBg:
  • ImGui.Col_TitleBg:
  • ImGui.Col_TitleBgActive:
  • ImGui.Col_TitleBgCollapsed:
  • ImGui.Col_WindowBg: Background of normal windows

ColorEditFlags

Flags for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton()

  • ImGui.ColorEditFlags_None: default = 0
  • ImGui.ColorEditFlags_AlphaBar: User Options (right-click on widget to change some of them). ColorEdit, ColorPicker: show vertical alpha bar/gradient in picker
  • ImGui.ColorEditFlags_AlphaPreview: User Options (right-click on widget to change some of them). ColorEdit, ColorPicker, ColorButton: display preview as a transparent color over a checkerboard, instead of opaque
  • ImGui.ColorEditFlags_AlphaPreviewHalf: User Options (right-click on widget to change some of them). ColorEdit, ColorPicker, ColorButton: display half opaque / half checkerboard, instead of opaque
  • ImGui.ColorEditFlags_DisplayHex: User Options (right-click on widget to change some of them). [Display] ColorEdit: override _display_ type among RGB/HSV/Hex. ColorPicker: select any combination using one or more of RGB/HSV/Hex
  • ImGui.ColorEditFlags_DisplayHSV: User Options (right-click on widget to change some of them). [Display] ColorEdit: override _display_ type among RGB/HSV/Hex. ColorPicker: select any combination using one or more of RGB/HSV/Hex
  • ImGui.ColorEditFlags_DisplayRGB: User Options (right-click on widget to change some of them). [Display] ColorEdit: override _display_ type among RGB/HSV/Hex. ColorPicker: select any combination using one or more of RGB/HSV/Hex
  • ImGui.ColorEditFlags_Float: User Options (right-click on widget to change some of them). [DataType] ColorEdit, ColorPicker, ColorButton: _display_ values formatted as 0.0f..1.0f floats instead of 0..255 integers. No round-trip of value via integers
  • ImGui.ColorEditFlags_HDR: User Options (right-click on widget to change some of them). (WIP) ColorEdit: Currently only disable 0.0f..1.0f limits in RGBA edition (note: you probably want to use ImGuiColorEditFlags_Float flag as well)
  • ImGui.ColorEditFlags_InputHSV: User Options (right-click on widget to change some of them). [Input] ColorEdit, ColorPicker: input and output data in HSV format
  • ImGui.ColorEditFlags_InputRGB: User Options (right-click on widget to change some of them). [Input] ColorEdit, ColorPicker: input and output data in RGB format
  • ImGui.ColorEditFlags_NoAlpha: ColorEdit, ColorPicker, ColorButton: ignore Alpha component (will only read 3 components from the input pointer)
  • ImGui.ColorEditFlags_NoBorder: ColorButton: disable border (which is enforced by default)
  • ImGui.ColorEditFlags_NoDragDrop: ColorEdit: disable drag and drop target. ColorButton: disable drag and drop source
  • ImGui.ColorEditFlags_NoInputs: ColorEdit, ColorPicker: disable inputs sliders/text widgets (e.g. to show only the small preview color square)
  • ImGui.ColorEditFlags_NoLabel: ColorEdit, ColorPicker: disable display of inline text label (the label is still forwarded to the tooltip and picker)
  • ImGui.ColorEditFlags_NoOptions: ColorEdit: disable toggling options menu when right-clicking on inputs/small preview
  • ImGui.ColorEditFlags_NoPicker: ColorEdit: disable picker when clicking on color square
  • ImGui.ColorEditFlags_NoSidePreview: ColorPicker: disable bigger color preview on right side of the picker, use small color square preview instead
  • ImGui.ColorEditFlags_NoSmallPreview: ColorEdit, ColorPicker: disable color square preview next to the inputs. (e.g. to show only the inputs)
  • ImGui.ColorEditFlags_NoTooltip: ColorEdit, ColorPicker, ColorButton: disable tooltip when hovering the preview
  • ImGui.ColorEditFlags_OptionsDefault: Defaults Options. You can set application defaults using SetColorEditOptions(). The intent is that you probably don't want to override them in most of your calls. Let the user choose via the option menu and/or call SetColorEditOptions() once during startup
  • ImGui.ColorEditFlags_PickerHueBar: User Options (right-click on widget to change some of them). [Picker] ColorPicker: bar for Hue, rectangle for Sat/Value
  • ImGui.ColorEditFlags_PickerHueWheel: User Options (right-click on widget to change some of them). [Picker] ColorPicker: wheel for Hue, triangle for Sat/Value
  • ImGui.ColorEditFlags_Uint8: User Options (right-click on widget to change some of them). [DataType] ColorEdit, ColorPicker, ColorButton: _display_ values formatted as 0..255

Sample:

ImGui.ColorEditFlags_OptionsDefault =
	ImGui.ColorEditFlags_Uint8 | ImGui.ColorEditFlags_DisplayRGB | ImGui.ColorEditFlags_InputRGB |
	ImGui.ColorEditFlags_PickerHueBar,

ComboFlags

Flags for ImGui::BeginCombo()

  • ImGui.ComboFlags_None: default = 0
  • ImGui.ComboFlags_HeightLarge: Max ~20 items visible
  • ImGui.ComboFlags_HeightLargest: As many fitting items as possible
  • ImGui.ComboFlags_HeightMask: ImGui.ComboFlags_HeightSmall | ImGui.ComboFlags_HeightRegular | ImGui.ComboFlags_HeightLarge | ImGui.ComboFlags_HeightLargest,
  • ImGui.ComboFlags_HeightRegular: Max ~8 items visible (default)
  • ImGui.ComboFlags_HeightSmall: Max ~4 items visible. Tip: If you want your combo popup to be a specific size you can use SetNextWindowSizeConstraints() prior to calling BeginCombo()
  • ImGui.ComboFlags_NoArrowButton: Display on the preview box without the square arrow button
  • ImGui.ComboFlags_NoPreview: Display only a square arrow button
  • ImGui.ComboFlags_PopupAlignLeft: Align the popup toward the left by default

Cond

Enumeration for ImGui::setWindow***(), setNextWindow***(), 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 ImGui.Cond_Always

  • ImGui.Cond_None: default = 0
  • ImGui.Cond_Always: No condition (always set the variable), same as _None
  • ImGui.Cond_Appearing: Set the variable if the object/window is appearing after being hidden/inactive (or the first time)
  • ImGui.Cond_FirstUseEver: Set the variable if the object/window has no persistently saved data (no entry in .ini file)
  • ImGui.Cond_Once: Set the variable once per runtime session (only the first call will succeed)

ConfigFlags

Configuration flags stored in io.ConfigFlags. Set by user/application.

  • ImGui.ConfigFlags_None: default = 0
  • ImGui.ConfigFlags_IsSRGB: User storage (to allow your backend/engine to communicate to code that may be shared between multiple projects. Those flags are NOT used by core Dear ImGui). Application is SRGB-aware
  • ImGui.ConfigFlags_IsTouchScreen: User storage (to allow your backend/engine to communicate to code that may be shared between multiple projects. Those flags are NOT used by core Dear ImGui). Application is using a touch screen instead of a mouse
  • ImGui.ConfigFlags_NavEnableGamepad: Master gamepad navigation enable flag. Backend also needs to set ImGuiBackendFlags_HasGamepad
  • ImGui.ConfigFlags_NavEnableKeyboard: Master keyboard navigation enable flag. Enable full Tabbing + directional arrows + space/enter to activate
  • ImGui.ConfigFlags_NavEnableSetMousePos: Instruct navigation to move the mouse cursor. May be useful on TV/console systems where moving a virtual mouse is awkward. Will update io.MousePos and set io.WantSetMousePos=true. If enabled you MUST honor io.WantSetMousePos requests in your backend, otherwise ImGui will react as if the mouse is jumping around back and forth
  • ImGui.ConfigFlags_NavNoCaptureKeyboard: Instruct navigation to not set the io.WantCaptureKeyboard flag when io.NavActive is set
  • ImGui.ConfigFlags_NoMouse: Instruct imgui to clear mouse position/buttons in NewFrame(). This allows ignoring the mouse information set by the backend
  • ImGui.ConfigFlags_NoMouseCursorChange: Instruct backend to not alter mouse cursor shape and visibility. Use if the backend cursor changes are interfering with yours and you don't want to use SetMouseCursor() to change mouse cursor. You may want to honor requests from imgui by reading GetMouseCursor() yourself instead

corner_flags

Flags for ImGui DrawList functions.

(Legacy: bit 0 must always correspond to ImDrawFlags_Closed to be backward compatible with old API using a bool. Bits 1..3 must be unused)

  • ImGui.DrawFlags_None: default = 0
  • ImGui.DrawFlags_Closed: PathStroke(), AddPolyline(): specify that shape should be closed (Important: this is always == 1 for legacy reason)
  • ImGui.DrawFlags_RoundCornersAll: ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight | ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
  • ImGui.DrawFlags_RoundCornersBottom: ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersBottomRight,
  • ImGui.DrawFlags_RoundCornersBottomLeft: AddRect(), AddRectFilled(), PathRect(): enable rounding bottom-left corner only (when rounding > 0.0f, we default to all corners). Was 0x04
  • ImGui.DrawFlags_RoundCornersBottomRight: AddRect(), AddRectFilled(), PathRect(): enable rounding bottom-right corner only (when rounding > 0.0f, we default to all corners). Wax 0x08
  • ImGui.DrawFlags_RoundCornersLeft: ImDrawFlags_RoundCornersBottomLeft | ImDrawFlags_RoundCornersTopLeft,
  • ImGui.DrawFlags_RoundCornersRight: ImDrawFlags_RoundCornersBottomRight | ImDrawFlags_RoundCornersTopRight,
  • ImGui.DrawFlags_RoundCornersTop: ImDrawFlags_RoundCornersTopLeft | ImDrawFlags_RoundCornersTopRight,
  • ImGui.DrawFlags_RoundCornersTopLeft: AddRect(), AddRectFilled(), PathRect(): enable rounding top-left corner only (when rounding > 0.0f, we default to all corners). Was 0x01
  • ImGui.DrawFlags_RoundCornersTopRight: AddRect(), AddRectFilled(), PathRect(): enable rounding top-right corner only (when rounding > 0.0f, we default to all corners). Was 0x02


  • ImGui.DrawFlags_RoundCornersNone: AddRect(), AddRectFilled(), PathRect(): disable rounding on all corners (when rounding > 0.0f). This is NOT zero, NOT an implicit flag!
  • ImGui.DrawFlags_RoundCornersDefault: ImDrawFlags_RoundCornersAll, // Default to ALL corners if none of the _RoundCornersXX flags are specified

DataType

A primary data type.

  • ImGui.DataType_Double: double
  • ImGui.DataType_Float: float
  • ImGui.DataType_S8: signed char / char (with sensible compilers)
  • ImGui.DataType_S16: short
  • ImGui.DataType_S32: int
  • ImGui.DataType_S64: long long / __int64
  • ImGui.DataType_U8: unsigned char
  • ImGui.DataType_U16: unsigned short
  • ImGui.DataType_U32: unsigned int
  • ImGui.DataType_U64: unsigned long long / unsigned __int64

Dir

A cardinal direction.

  • ImGui.Dir_None: -1
  • ImGui.Dir_Down: 3
  • ImGui.Dir_Left: 0
  • ImGui.Dir_Right: 1
  • ImGui.Dir_Up: 2

DragDropFlags

Flags for ImGui::BeginDragDropSource(), ImGui::AcceptDragDropPayload().

  • ImGui.DragDropFlags_None: default = 0
  • ImGui.DragDropFlags_AcceptBeforeDelivery: AcceptDragDropPayload() flags. AcceptDragDropPayload() will returns true even before the mouse button is released. You can then call IsDelivery() to test if the payload needs to be delivered
  • ImGui.DragDropFlags_AcceptNoDrawDefaultRect: AcceptDragDropPayload() flags. Do not draw the default highlight rectangle when hovering over target
  • ImGui.DragDropFlags_AcceptNoPreviewTooltip: AcceptDragDropPayload() flags. Request hiding the BeginDragDropSource tooltip from the BeginDragDropTarget site
  • ImGui.DragDropFlags_AcceptPeekOnly: AcceptDragDropPayload() flags. ImGui.DragDropFlags_AcceptBeforeDelivery | ImGui.DragDropFlags_AcceptNoDrawDefaultRect, // For peeking ahead and inspecting the payload before delivery
  • ImGui.DragDropFlags_SourceAllowNullID: BeginDragDropSource() flags. Allow items such as Text(), Image() that have no unique identifier to be used as drag source, by manufacturing a temporary identifier based on their window-relative position. This is extremely unusual within the dear imgui ecosystem and so we made it explicit
  • ImGui.DragDropFlags_SourceAutoExpirePayload: BeginDragDropSource() flags. Automatically expire the payload if the source cease to be submitted (otherwise payloads are persisting while being dragged)
  • ImGui.DragDropFlags_SourceExtern: BeginDragDropSource() flags. External source (from outside of dear imgui), won't attempt to read current item/window info. Will always return true. Only one Extern source can be active simultaneously
  • ImGui.DragDropFlags_SourceNoDisableHover: BeginDragDropSource() flags. By default, when dragging we clear data so that IsItemHovered() will return false, to avoid subsequent user code submitting tooltips. This flag disables this behavior so you can still call IsItemHovered() on the source item
  • ImGui.DragDropFlags_SourceNoHoldToOpenOthers: BeginDragDropSource() flags. Disable the behavior that allows to open tree nodes and collapsing header by holding over them while dragging a source item
  • ImGui.DragDropFlags_SourceNoPreviewTooltip: BeginDragDropSource() flags. Disable preview tooltip. By default, a successful call to BeginDragDropSource opens a tooltip so you can display a preview or description of the source contents. This flag disables this behavior

FocusedFlags

Flags for ImGui::IsWindowFocused()

  • ImGui.FocusedFlags_None: default = 0
  • ImGui.FocusedFlags_AnyWindow: Return true if any window is focused. Important: If you are trying to tell how to dispatch your low-level inputs, do NOT use this. Use 'io.WantCaptureMouse' instead! Please read the FAQ!
  • ImGui.FocusedFlags_ChildWindows: Return true if any children of the window is focused
  • ImGui.FocusedFlags_NoPopupHierarchy: Do not consider popup hierarchy (do not treat popup emitter as parent of popup) (when used with _ChildWindows or _RootWindow)
  • ImGui.FocusedFlags_RootAndChildWindows: ImGui.FocusedFlags_RootWindow | ImGui.FocusedFlags_ChildWindows,
  • ImGui.FocusedFlags_RootWindow: Test from root window (top most parent of the current hierarchy)

GlyphRanges

Helpers to retrieve list of common Unicode ranges (2 value per range, values are inclusive, zero-terminated list).

NB: Make sure that your string are UTF-8 and NOT in your local code page
Read https://github.com/ocornut/imgui/blob/master/docs/FONTS.md/#about-utf-8-encoding for details
NB: Consider using ImFontGlyphRangesBuilder to build glyph ranges from textual data
  • ImGui.GlyphRanges_ChineseFull: Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs
  • ImGui.GlyphRanges_ChineseSimplifiedCommon: Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese
  • ImGui.GlyphRanges_Cyrillic: Default + about 400 Cyrillic characters
  • ImGui.GlyphRanges_Default: Basic Latin, Extended Latin
  • ImGui.GlyphRanges_Greek: Default + Greek and Coptic
  • ImGui.GlyphRanges_Japanese: Default + Hiragana, Katakana, Half-Width, Selection of 2999 Ideographs
  • ImGui.GlyphRanges_Korean: Default + Korean characters
  • ImGui.GlyphRanges_Thai: Default + Thai characters
  • ImGui.GlyphRanges_Vietnamese: Default + Vietnamese characters

HoveredFlags

Flags for ImGui::IsItemHovered(), ImGui::IsWindowHovered()

Note: if you are trying to check whether your mouse should be dispatched to Dear ImGui or to your app, you should use 'io.WantCaptureMouse' instead! Please read the FAQ!
Note: windows with the ImGuiWindowFlags_NoInputs flag are ignored by IsWindowHovered() calls
  • ImGui.HoveredFlags_None: default = 0, Return true if directly over the item/window, not obstructed by another window, not obstructed by an active popup or modal blocking inputs under them
  • ImGui.HoveredFlags_AllowWhenBlockedByActiveItem: Return true even if an active item is blocking access to this item/window. Useful for Drag and Drop patterns
  • ImGui.HoveredFlags_AllowWhenBlockedByPopup: Return true even if a popup window is normally blocking access to this item/window
  • ImGui.HoveredFlags_AllowWhenDisabled: IsItemHovered() only: Return true even if the item is disabled
  • ImGui.HoveredFlags_AllowWhenOverlapped: IsItemHovered() only: Return true even if the position is obstructed or overlapped by another window
  • ImGui.HoveredFlags_AnyWindow: IsWindowHovered() only: Return true if any window is hovered
  • ImGui.HoveredFlags_ChildWindows: IsWindowHovered() only: Return true if any children of the window is hovered
  • ImGui.HoveredFlags_DelayNormal: Hovering delays (for tooltips). Return true after io.HoverDelayNormal elapsed (~0.30 sec)
  • ImGui.HoveredFlags_DelayShort: Hovering delays (for tooltips). Return true after io.HoverDelayShort elapsed (~0.10 sec)
  • ImGui.HoveredFlags_NoNavOverride: Disable using gamepad/keyboard navigation state when active, always query mouse
  • ImGui.HoveredFlags_NoPopupHierarchy: IsWindowHovered() only: Do not consider popup hierarchy (do not treat popup emitter as parent of popup) (when used with _ChildWindows or _RootWindow)
  • ImGui.HoveredFlags_NoSharedDelay: Hovering delays (for tooltips). Disable shared delay system where moving from one item to the next keeps the previous timer for a short time (standard for tooltips with long delays)
  • ImGui.HoveredFlags_RectOnly: ImGui.HoveredFlags_AllowWhenBlockedByPopup | ImGui.HoveredFlags_AllowWhenBlockedByActiveItem | ImGui.HoveredFlags_AllowWhenOverlapped,
  • ImGui.HoveredFlags_RootAndChildWindows: ImGui.HoveredFlags_RootWindow | ImGui.HoveredFlags_ChildWindows,
  • ImGui.HoveredFlags_RootWindow: IsWindowHovered() only: Test from root window (top most parent of the current hierarchy)

ImageScaleMode

  • ImGui.ImageScaleMode_FitHeight:
  • ImGui.ImageScaleMode_FitWidth:
  • ImGui.ImageScaleMode_LetterBox:
  • ImGui.ImageScaleMode_Stretch:

InputTextFlags

Flags for ImGui::InputText()

(Those are per-item flags. There are shared flags in ImGuiIO: io.ConfigInputTextCursorBlink and io.ConfigInputTextEnterKeepActive)
  • ImGui.InputTextFlags_None: default = 0
  • ImGui.InputTextFlags_AllowTabInput: Pressing TAB input a '\t' character into the text field
  • ImGui.InputTextFlags_AlwaysOverwrite: Overwrite mode
  • ImGui.InputTextFlags_AutoSelectAll: Select entire text when first taking mouse focus
  • ImGui.InputTextFlags_CallbackAlways: Callback on each iteration. User code may query cursor position, modify text buffer
  • ImGui.InputTextFlags_CallbackCharFilter: Callback on character inputs to replace or discard them. Modify 'EventChar' to replace or discard, or return 1 in callback to discard
  • ImGui.InputTextFlags_CallbackCompletion: Callback on pressing TAB (for completion handling)
  • ImGui.InputTextFlags_CallbackEdit: Callback on any edit (note that InputText() already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active)
  • ImGui.InputTextFlags_CallbackHistory: Callback on pressing Up/Down arrows (for history handling)
  • ImGui.InputTextFlags_CallbackResize: Callback on buffer capacity changes request (beyond 'buf_size' parameter value), allowing the string to grow. Notify when the string wants to be resized (for string types which hold a cache of their Size). You will be provided a new BufSize in the callback and NEED to honor it. (see misc/cpp/imgui_stdlib.h for an example of using this)
  • ImGui.InputTextFlags_CharsDecimal: Allow 0123456789.+-*/
  • ImGui.InputTextFlags_CharsHexadecimal: Allow 0123456789ABCDEFabcdef
  • ImGui.InputTextFlags_CharsNoBlank: Filter out spaces, tabs
  • ImGui.InputTextFlags_CharsScientific: Allow 0123456789.+-*/eE (Scientific notation input)
  • ImGui.InputTextFlags_CharsUppercase: Turn a..z into A..Z
  • ImGui.InputTextFlags_CtrlEnterForNewLine: In multi-line mode, unfocus with Enter, add new line with Ctrl+Enter (default is opposite: unfocus with Ctrl+Enter, add line with Enter)
  • ImGui.InputTextFlags_EnterReturnsTrue: Return 'true' when Enter is pressed (as opposed to every time the value was modified). Consider looking at the IsItemDeactivatedAfterEdit() function
  • ImGui.InputTextFlags_EscapeClearsAll: Escape key clears content if not empty, and deactivate otherwise (contrast to default behavior of Escape to revert)
  • ImGui.InputTextFlags_NoBackground -- custom constant, used to disable background:
  • ImGui.InputTextFlags_NoHorizontalScroll: Disable following the cursor horizontally
  • ImGui.InputTextFlags_NoUndoRedo: Disable undo/redo. Note that input text owns the text data while active, if you want to provide your own undo/redo stack you need e.g. to call ClearActiveID()
  • ImGui.InputTextFlags_Password: Password mode, display all characters as '*'
  • ImGui.InputTextFlags_ReadOnly: Read-only mode

ItemFlags

Flags used by upcoming items

- input: PushItemFlag() manipulates g.CurrentItemFlags, ItemAdd() calls may add extra flags
- output: stored in g.LastItemData.InFlags

Current window shared by all windows.

  • ImGui.ItemFlags_ButtonRepeat: false, Button() will return true multiple times based on io.KeyRepeatDelay and io.KeyRepeatRate settings
  • ImGui.ItemFlags_Disabled: false, Disable interactions but doesn't affect visuals. See BeginDisabled()/EndDisabled(). See github.com/ocornut/imgui/issues/211
  • ImGui.ItemFlags_NoTabStop: false, Disable keyboard tabbing. This is a "lighter" version of ImGuiItemFlags_NoNav

MouseButton

Identify a mouse button.

Those values are guaranteed to be stable and we frequently use 0/1 directly. Named enums provided for convenience
  • ImGui.MouseButton_Left: 0
  • ImGui.MouseButton_Middle: 2
  • ImGui.MouseButton_Right: 1

MouseCursor

Enumeration for GetMouseCursor()

User code may request backend to display given cursor by calling SetMouseCursor(), which is why we have some cursors that are marked unused here
  • ImGui.MouseCursor_None: -1
  • ImGui.MouseCursor_Arrow: 0
  • ImGui.MouseCursor_Hand: (Unused by Dear ImGui functions. Use for e.g. hyperlinks)
  • ImGui.MouseCursor_NotAllowed: When hovering something with disallowed interaction. Usually a crossed circle
  • ImGui.MouseCursor_ResizeAll: (Unused by Dear ImGui functions)
  • ImGui.MouseCursor_ResizeEW: When hovering over a vertical border or a column
  • ImGui.MouseCursor_ResizeNESW: When hovering over the bottom-left corner of a window
  • ImGui.MouseCursor_ResizeNS: When hovering over a horizontal border
  • ImGui.MouseCursor_ResizeNWSE: When hovering over the bottom-right corner of a window
  • ImGui.MouseCursor_TextInput: When hovering over InputText, etc.

PopupFlags

Flags for OpenPopup*(), BeginPopupContext*(), IsPopupOpen() functions.

- To be backward compatible with older API which took an 'int mouse_button = 1' argument, we need to treat small flags values as a mouse button index, so we encode the mouse button in the first few bits of the flags. It is therefore guaranteed to be legal to pass a mouse button index in ImGuiPopupFlags
- For the same reason, we exceptionally default the ImGuiPopupFlags argument of BeginPopupContextXXX functions to 1 instead of 0
IMPORTANT: because the default parameter is 1 (==ImGuiPopupFlags_MouseButtonRight), if you rely on the default parameter and want to use another flag, you need to pass in the ImGuiPopupFlags_MouseButtonRight flag explicitly
- Multiple buttons currently cannot be combined/or-ed in those functions (we could allow it later)
  • ImGui.PopupFlags_None: default = 0
  • ImGui.PopupFlags_AnyPopup: ImGui.PopupFlags_AnyPopupId | ImGui.PopupFlags_AnyPopupLevel,
  • ImGui.PopupFlags_AnyPopupId: For IsPopupOpen(): ignore the ImGuiID parameter and test for any popup
  • ImGui.PopupFlags_AnyPopupLevel: For IsPopupOpen(): search/test at any level of the popup stack (default test in the current level)
  • ImGui.PopupFlags_MouseButtonDefault: /
  • ImGui.PopupFlags_MouseButtonLeft: For BeginPopupContext*(): open on Left Mouse release. Guaranteed to always be == 0 (same as ImGuiMouseButton_Left)
  • ImGui.PopupFlags_MouseButtonMask: /
  • ImGui.PopupFlags_MouseButtonMiddle: For BeginPopupContext*(): open on Middle Mouse release. Guaranteed to always be == 2 (same as ImGuiMouseButton_Middle)
  • ImGui.PopupFlags_MouseButtonRight: For BeginPopupContext*(): open on Right Mouse release. Guaranteed to always be == 1 (same as ImGuiMouseButton_Right)
  • ImGui.PopupFlags_NoOpenOverExistingPopup: For OpenPopup*(), BeginPopupContext*(): don't open if there's already a popup at the same level of the popup stack
  • ImGui.PopupFlags_NoOpenOverItems: For BeginPopupContextWindow(): don't return true when hovering items, only when hovering empty space

SelectableFlags

Flags for ImGui::Selectable()

  • ImGui.SelectableFlags_None: default = 0
  • ImGui.SelectableFlags_AllowDoubleClick: Generate press events on double clicks too
  • ImGui.SelectableFlags_AllowItemOverlap: (WIP) Hit testing to allow subsequent widgets to overlap this one
  • ImGui.SelectableFlags_Disabled: Cannot be selected, display grayed out text
  • ImGui.SelectableFlags_DontClosePopups: Clicking this doesn't close parent popup window
  • ImGui.SelectableFlags_SpanAllColumns: Selectable frame can span all columns (text will still fit in current column)

SliderFlags

Flags for DragFloat(), DragInt(), SliderFloat(), SliderInt() etc.

We use the same sets of flags for DragXXX() and SliderXXX() functions as the features are the same and it makes it easier to swap them
(Those are per-item flags. There are shared flags in ImGuiIO: io.ConfigDragClickToInputText)
  • ImGui.SliderFlags_None: default = 0
  • ImGui.SliderFlags_AlwaysClamp: Clamp value to min/max bounds when input manually with CTRL+Click. By default CTRL+Click allows going out of bounds
  • ImGui.SliderFlags_Logarithmic: Make the widget logarithmic (linear otherwise). Consider using ImGuiSliderFlags_NoRoundToFormat with this if using a format-string with small amount of digits
  • ImGui.SliderFlags_NoInput: Disable CTRL+Click or Enter key allowing to input text directly into the widget
  • ImGui.SliderFlags_NoRoundToFormat: Disable rounding underlying value to match precision of the display format string (e.g. %.3f values are rounded to those 3 digits)

SortDirection

A sorting direction.

  • ImGui.SortDirection_None: default = 0
  • ImGui.SortDirection_Ascending: Ascending = 0->9, A->Z etc.
  • ImGui.SortDirection_Descending: Descending = 9->0, Z->A etc.

StyleVar

Enumeration for PushStyleVar() / PopStyleVar() to temporarily modify the ImGuiStyle structure.

- The enum only refers to fields of ImGuiStyle which makes sense to be pushed/popped inside UI code. During initialization or between frames, feel free to just poke into ImGuiStyle directly
  • ImGui.StyleVar_Alpha: float, Alpha
  • ImGui.StyleVar_ButtonTextAlign: ImVec2, ButtonTextAlign
  • ImGui.StyleVar_CellPadding: ImVec2, CellPadding
  • ImGui.StyleVar_ChildBorderSize: float, ChildBorderSize
  • ImGui.StyleVar_ChildRounding: float, ChildRounding
  • ImGui.StyleVar_DisabledAlpha: float, DisabledAlpha
  • ImGui.StyleVar_FrameBorderSize: float, FrameBorderSize
  • ImGui.StyleVar_FramePadding: ImVec2, FramePadding
  • ImGui.StyleVar_FrameRounding: float, FrameRounding
  • ImGui.StyleVar_GrabMinSize: float, GrabMinSize
  • ImGui.StyleVar_GrabRounding: float, GrabRounding
  • ImGui.StyleVar_IndentSpacing: float, IndentSpacing
  • ImGui.StyleVar_ItemInnerSpacing: ImVec2, ItemInnerSpacing
  • ImGui.StyleVar_ItemSpacing: ImVec2, ItemSpacing
  • ImGui.StyleVar_PopupBorderSize: float, PopupBorderSize
  • ImGui.StyleVar_PopupRounding: float, PopupRounding
  • ImGui.StyleVar_ScrollbarRounding: float, ScrollbarRounding
  • ImGui.StyleVar_ScrollbarSize: float, ScrollbarSize
  • ImGui.StyleVar_SelectableTextAlign: ImVec2, SelectableTextAlign
  • ImGui.StyleVar_SeparatorTextAlign: ImVec2, SeparatorTextAlign
  • ImGui.StyleVar_SeparatorTextBorderSize: float, SeparatorTextBorderSize
  • ImGui.StyleVar_SeparatorTextPadding: ImVec2, SeparatorTextPadding
  • ImGui.StyleVar_TabRounding: float, TabRounding
  • ImGui.StyleVar_WindowBorderSize: float, WindowBorderSize
  • ImGui.StyleVar_WindowMinSize: ImVec2, WindowMinSize
  • ImGui.StyleVar_WindowPadding: ImVec2, WindowPadding
  • ImGui.StyleVar_WindowRounding: float, WindowRounding
  • ImGui.StyleVar_WindowTitleAlign: ImVec2, WindowTitleAlign

TabBarFlags

Flags for ImGui::BeginTabBar()

  • ImGui.TabBarFlags_None: default = 0
  • ImGui.TabBarFlags_AutoSelectNewTabs: Automatically select new tabs when they appear
  • ImGui.TabBarFlags_FittingPolicyDefault: ImGui.TabBarFlags_FittingPolicyResizeDown,
  • ImGui.TabBarFlags_FittingPolicyMask: ImGui.TabBarFlags_FittingPolicyResizeDown | ImGui.TabBarFlags_FittingPolicyScroll,
  • ImGui.TabBarFlags_FittingPolicyResizeDown: Resize tabs when they don't fit
  • ImGui.TabBarFlags_FittingPolicyScroll: Add scroll buttons when tabs don't fit
  • ImGui.TabBarFlags_NoCloseWithMiddleMouseButton: Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false
  • ImGui.TabBarFlags_NoTabListScrollingButtons:
  • ImGui.TabBarFlags_NoTooltip: Disable tooltips when hovering a tab
  • ImGui.TabBarFlags_Reorderable: Allow manually dragging tabs to re-order them + New tabs are appended at the end of list
  • ImGui.TabBarFlags_TabListPopupButton: Disable buttons to open the tab list popup

TabItemFlags

Flags for ImGui::BeginTabItem()

  • ImGui.TabItemFlags_None: default = 0
  • ImGui.TabItemFlags_Leading: Enforce the tab position to the left of the tab bar (after the tab list popup button)
  • ImGui.TabItemFlags_NoCloseWithMiddleMouseButton: Disable behavior of closing tabs (that are submitted with p_open != NULL) with middle mouse button. You can still repro this behavior on user's side with if (IsItemHovered() && IsMouseClicked(2)) *p_open = false
  • ImGui.TabItemFlags_NoPushId: Don't call PushID(tab->ID)/PopID() on BeginTabItem()/EndTabItem()
  • ImGui.TabItemFlags_NoReorder: Disable reordering this tab or having another tab cross over this tab
  • ImGui.TabItemFlags_NoTooltip: Disable tooltip for the given tab
  • ImGui.TabItemFlags_SetSelected: Trigger flag to programmatically make the tab selected when calling BeginTabItem()
  • ImGui.TabItemFlags_Trailing: Enforce the tab position to the right of the tab bar (before the scrolling buttons)
  • ImGui.TabItemFlags_UnsavedDocument: Display a dot next to the title + tab is selected when clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar

TableFlags

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
  • ImGui.TableFlags_None: default = 0
  • ImGui.TableFlags_Borders: ImGui.TableFlags_BordersInner | ImGui.TableFlags_BordersOuter, Draw all borders
  • ImGui.TableFlags_BordersH: ImGui.TableFlags_BordersInnerH | ImGui.TableFlags_BordersOuterH, Draw horizontal borders
  • ImGui.TableFlags_BordersInner: ImGui.TableFlags_BordersInnerV | ImGui.TableFlags_BordersInnerH, Draw inner borders
  • ImGui.TableFlags_BordersInnerH : Draw horizontal borders between rows
  • ImGui.TableFlags_BordersInnerV: Draw vertical borders between columns
  • ImGui.TableFlags_BordersOuter: ImGui.TableFlags_BordersOuterV | ImGui.TableFlags_BordersOuterH, Draw outer borders
  • ImGui.TableFlags_BordersOuterH: Draw horizontal borders at the top and bottom
  • ImGui.TableFlags_BordersOuterV: Draw vertical borders on the left and right sides
  • ImGui.TableFlags_BordersV: ImGui.TableFlags_BordersInnerV | ImGui.TableFlags_BordersOuterV, Draw vertical borders
  • ImGui.TableFlags_ContextMenuInBody: Right-click on columns body/contents will display table context menu. By default it is available in TableHeadersRow()
  • ImGui.TableFlags_Hideable: Enable hiding/disabling columns in context menu
  • ImGui.TableFlags_NoBordersInBody: [ALPHA] Disable vertical borders in columns Body (borders will always appear in Headers). -> May move to style
  • ImGui.TableFlags_NoBordersInBodyUntilResize: [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders will always appear in Headers). -> May move to style
  • ImGui.TableFlags_NoClip: Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze()
  • ImGui.TableFlags_NoHostExtendX: 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
  • ImGui.TableFlags_NoHostExtendY: 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
  • ImGui.TableFlags_NoKeepColumnsVisible: Disable keeping column always minimally visible when ScrollX is off and table gets too small. Not recommended if columns are resizable
  • ImGui.TableFlags_NoPadInnerX: Disable inner padding between columns (double inner padding if BordersOuterV is on, single inner padding if BordersOuterV is off)
  • ImGui.TableFlags_NoPadOuterX: Default if BordersOuterV is off. Disable outermost padding
  • ImGui.TableFlags_NoSavedSettings: Disable persisting columns order, width and sort settings in the .ini file
  • ImGui.TableFlags_PadOuterX: Default if BordersOuterV is on. Enable outermost padding. Generally desirable if you have headers
  • ImGui.TableFlags_PreciseWidths: 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
  • ImGui.TableFlags_Reorderable: Enable reordering columns in header row (need calling TableSetupColumn() + TableHeadersRow() to display headers)
  • ImGui.TableFlags_Resizable: Enable resizing columns
  • ImGui.TableFlags_RowBg: Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually)
  • ImGui.TableFlags_ScrollX: 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
  • ImGui.TableFlags_ScrollY: Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size
  • ImGui.TableFlags_SizingFixedFit: Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching contents width
  • ImGui.TableFlags_SizingFixedSame: Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable ImGuiTableFlags_NoKeepColumnsVisible
  • ImGui.TableFlags_SizingStretchProp: Columns default to _WidthStretch with default weights proportional to each columns contents widths
  • ImGui.TableFlags_SizingStretchSame: Columns default to _WidthStretch with default weights all equal, unless overridden by TableSetupColumn()
  • ImGui.TableFlags_Sortable: Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see ImGuiTableFlags_SortMulti and ImGuiTableFlags_SortTristate
  • ImGui.TableFlags_SortMulti: Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount > 1)
  • ImGui.TableFlags_SortTristate: Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0)

TableBgTarget

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
  • ImGui.TableBgTarget_None: default = 0
  • ImGui.TableBgTarget_CellBg: Set cell background color (top-most color)
  • ImGui.TableBgTarget_RowBg0: Set row background color 0 (generally used for background, automatically set when ImGuiTableFlags_RowBg is used)
  • ImGui.TableBgTarget_RowBg1: Set row background color 1 (generally used for selection marking)

TableColumnFlags

Flags for ImGui::TableSetupColumn()

  • ImGui.TableColumnFlags_None: default = 0
  • ImGui.TableColumnFlags_DefaultHide: Default as a hidden/disabled column
  • ImGui.TableColumnFlags_DefaultSort: Default as a sorting column
  • ImGui.TableColumnFlags_Disabled: Overriding/master disable flag: hide column, won't show in context menu (unlike calling TableSetColumnEnabled() which manipulates the user accessible state)
  • ImGui.TableColumnFlags_IndentDisable: Ignore current Indent value when entering cell (default for columns > 0). Indentation changes _within_ the cell will still be honored
  • ImGui.TableColumnFlags_IndentEnable: Use current Indent value when entering cell (default for column 0)
  • ImGui.TableColumnFlags_IsEnabled: Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags
  • ImGui.TableColumnFlags_IsHovered: Status: is hovered by mouse
  • ImGui.TableColumnFlags_IsSorted: Status: is currently part of the sort specs
  • ImGui.TableColumnFlags_IsVisible: Status: is visible == is enabled AND not clipped by scrolling
  • ImGui.TableColumnFlags_NoClip: Disable clipping for this column (all NoClip columns will render in a same draw command)
  • ImGui.TableColumnFlags_NoHeaderLabel: TableHeadersRow() will not submit label for this column. Convenient for some small columns. Name will still appear in context menu
  • ImGui.TableColumnFlags_NoHeaderWidth: Disable header text width contribution to automatic column width
  • ImGui.TableColumnFlags_NoHide: Disable ability to hide/disable this column
  • ImGui.TableColumnFlags_NoReorder: Disable manual reordering this column, this will also prevent other columns from crossing over this column
  • ImGui.TableColumnFlags_NoResize: Disable manual resizing
  • ImGui.TableColumnFlags_NoSort: Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table)
  • ImGui.TableColumnFlags_NoSortAscending: Disable ability to sort in the ascending direction
  • ImGui.TableColumnFlags_NoSortDescending: Disable ability to sort in the descending direction
  • ImGui.TableColumnFlags_PreferSortAscending: Make the initial sort direction Ascending when first sorting on this column (default)
  • ImGui.TableColumnFlags_PreferSortDescending: Make the initial sort direction Descending when first sorting on this column
  • ImGui.TableColumnFlags_WidthFixed: Column will not stretch. Preferable with horizontal scrolling enabled (default if table sizing policy is _SizingFixedFit and table is resizable)
  • ImGui.TableColumnFlags_WidthStretch: Column will stretch. Preferable with horizontal scrolling disabled (default if table sizing policy is _SizingStretchSame or _SizingStretchProp)

TableRowFlags

Flags for ImGui::TableNextRow()

  • ImGui.TableRowFlags_None: default = 0
  • ImGui.TableRowFlags_Headers: Identify header row (set default background color + width of its contents accounted differently for auto column width)

TE

  • ImGui.TE_Background:
  • ImGui.TE_Breakpoint:
  • ImGui.TE_CharLiteral:
  • ImGui.TE_Comment:
  • ImGui.TE_CurrentLineEdge:
  • ImGui.TE_CurrentLineFill:
  • ImGui.TE_CurrentLineFillInactive:
  • ImGui.TE_Cursor:
  • ImGui.TE_Default:
  • ImGui.TE_ErrorMarker:
  • ImGui.TE_Identifier:
  • ImGui.TE_Keyword:
  • ImGui.TE_KnownIdentifier:
  • ImGui.TE_LineNumber:
  • ImGui.TE_MultiLineComment:
  • ImGui.TE_Number:
  • ImGui.TE_Preprocessor:
  • ImGui.TE_PreprocIdentifier:
  • ImGui.TE_Punctuation:
  • ImGui.TE_Selection:
  • ImGui.TE_String:

TreeNodeFlags

Flags for ImGui::TreeNodeEx(), ImGui::CollapsingHeader*()

  • ImGui.TreeNodeFlags_None: default = 0
  • ImGui.TreeNodeFlags_AllowItemOverlap: Hit testing to allow subsequent widgets to overlap this one
  • ImGui.TreeNodeFlags_Bullet: Display a bullet instead of arrow
  • ImGui.TreeNodeFlags_CollapsingHeader: ImGui.TreeNodeFlags_Framed | ImGui.TreeNodeFlags_NoTreePushOnOpen | ImGui.TreeNodeFlags_NoAutoOpenOnLog,
  • ImGui.TreeNodeFlags_DefaultOpen: Default node to be open
  • ImGui.TreeNodeFlags_Framed: Draw frame with background (e.g. for CollapsingHeader)
  • ImGui.TreeNodeFlags_FramePadding: Use FramePadding (even for an unframed text node) to vertically align text baseline to regular widget height. Equivalent to calling AlignTextToFramePadding()
  • ImGui.TreeNodeFlags_Leaf: No collapsing, no arrow (use as a convenience for leaf nodes)
  • ImGui.TreeNodeFlags_NavLeftJumpsBackHere: (WIP) Nav: left direction may move to this TreeNode() from any of its child (items submitted between TreeNode and TreePop)
  • ImGui.TreeNodeFlags_NoAutoOpenOnLog: Don't automatically and temporarily open node when Logging is active (by default logging will automatically open tree nodes)
  • ImGui.TreeNodeFlags_NoTreePushOnOpen: Don't do a TreePush() when open (e.g. for CollapsingHeader) = no extra indent nor pushing on ID stack
  • ImGui.TreeNodeFlags_OpenOnArrow: Only open when clicking on the arrow part. If ImGuiTreeNodeFlags_OpenOnDoubleClick is also set, single-click arrow or double-click all box to open
  • ImGui.TreeNodeFlags_OpenOnDoubleClick: Need double-click to open node
  • ImGui.TreeNodeFlags_Selected: Draw as selected
  • ImGui.TreeNodeFlags_SpanAvailWidth: Extend hit box to the right-most edge, even if not framed. This is not the default in order to allow adding other items on the same line. In the future we may refactor the hit system to be front-to-back, allowing natural overlaps and then this can become the default
  • ImGui.TreeNodeFlags_SpanFullWidth: Extend hit box to the left-most and right-most edges (bypass the indented area)

WindowFlags

Flags for ImGui::Begin()

(Those are per-window flags. There are shared flags in ImGuiIO: io.ConfigWindowsResizeFromEdges and io.ConfigWindowsMoveFromTitleBarOnly)
  • ImGui.WindowFlags_None: default = 0
  • ImGui.WindowFlags_AlwaysAutoResize: Resize every window to its content every frame
  • ImGui.WindowFlags_AlwaysHorizontalScrollbar: Always show horizontal scrollbar (even if ContentSize.x < Size.x)
  • ImGui.WindowFlags_AlwaysUseWindowPadding: Ensure child windows without border uses style.WindowPadding (ignored by default for non-bordered child windows, because more convenient)
  • ImGui.WindowFlags_AlwaysVerticalScrollbar: Always show vertical scrollbar (even if ContentSize.y < Size.y)
  • ImGui.WindowFlags_FullScreen: Custom constant, used to create a fullscreen window
  • ImGui.WindowFlags_HorizontalScrollbar: Allow horizontal scrollbar to appear (off by default). You may use SetNextWindowContentSize(ImVec2(width,0.0f)); prior to calling Begin() to specify width. Read code in imgui_demo in the "Horizontal Scrolling" section
  • ImGui.WindowFlags_MenuBar: Has a menu-bar
  • ImGui.WindowFlags_NoBackground: Disable drawing background color (WindowBg, etc.) and outside border. Similar as using SetNextWindowBgAlpha(0.0f)
  • ImGui.WindowFlags_NoBringToFrontOnFocus: Disable bringing window to front when taking focus (e.g. clicking on it or programmatically giving it focus)
  • ImGui.WindowFlags_NoCollapse: Disable user collapsing window by double-clicking on it. Also referred to as Window Menu Button (e.g. within a docking node)
  • ImGui.WindowFlags_NoDecoration: A combination of ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse
  • ImGui.WindowFlags_NoFocusOnAppearing: Disable taking focus when transitioning from hidden to visible state
  • ImGui.WindowFlags_NoInputs: A combination of ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus
  • ImGui.WindowFlags_NoMouseInputs: Disable catching mouse, hovering test with pass through
  • ImGui.WindowFlags_NoMove: Disable user moving the window
  • ImGui.WindowFlags_NoNav: A combination of ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus
  • ImGui.WindowFlags_NoNavFocus: No focusing toward this window with gamepad/keyboard navigation (e.g. skipped by CTRL+TAB)
  • ImGui.WindowFlags_NoNavInputs: No gamepad/keyboard navigation within the window
  • ImGui.WindowFlags_NoResize: Disable user resizing with the lower-right grip
  • ImGui.WindowFlags_NoSavedSettings: Never load/save settings in .ini file
  • ImGui.WindowFlags_NoScrollbar: Disable scrollbars (window can still scroll with mouse or programmatically)
  • ImGui.WindowFlags_NoScrollWithMouse: Disable user vertically scrolling with mouse wheel. On child window, mouse wheel will be forwarded to the parent unless NoScrollbar is also set
  • ImGui.WindowFlags_NoTitleBar: Disable title-bar
  • ImGui.WindowFlags_UnsavedDocument: Display a dot next to the title. When used in a tab/docking context, tab is selected when clicking the X + closure is not assumed (will wait for user to stop submitting the tab). Otherwise closure is assumed when pressing the X, so if you keep submitting the tab may reappear at end of tab bar


Dear ImGui