Difference between revisions of "Dear ImGui Flags"

From GiderosMobile
(wip)
 
(39 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
__TOC__
 
__TOC__
 +
== _VERSION ==
 +
*'''ImGui._VERSION''': Dear ImGui version
 +
 
== BackendFlags ==
 
== BackendFlags ==
<syntaxhighlight lang="lua">
+
Backend capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom backend.
ImGui.BackendFlags_None
+
 
ImGui.BackendFlags_HasGamepad
+
*'''ImGui.BackendFlags_None''': default = 0
ImGui.BackendFlags_HasMouseCursors
+
*'''ImGui.BackendFlags_HasGamepad''': Backend Platform supports gamepad and currently has one connected
ImGui.BackendFlags_HasSetMousePos
+
*'''ImGui.BackendFlags_HasMouseCursors''': Backend Platform supports honoring GetMouseCursor() value to change the OS cursor shape
ImGui.BackendFlags_RendererHasVtxOffset
+
*'''ImGui.BackendFlags_HasSetMousePos''': Backend Platform supports io.WantSetMousePos requests to reposition the OS mouse position (only used if ImGuiConfigFlags_NavEnableSetMousePos is set)
</syntaxhighlight>
+
*'''ImGui.BackendFlags_RendererHasVtxOffset''': Backend Renderer supports ImDrawCmd::VtxOffset. This enables output of large meshes (64K+ vertices) while still using 16-bit indices
  
 
== Col ==
 
== Col ==
<syntaxhighlight lang="lua">
+
Enumeration for PushStyleColor() / PopStyleColor()
ImGui.Col_Border
+
 
ImGui.Col_BorderShadow
+
*'''ImGui.Col_Border''':
ImGui.Col_Button
+
*'''ImGui.Col_BorderShadow''':
ImGui.Col_ButtonActive
+
*'''ImGui.Col_Button''':
ImGui.Col_ButtonHovered
+
*'''ImGui.Col_ButtonActive''':
ImGui.Col_CheckMark
+
*'''ImGui.Col_ButtonHovered''':
ImGui.Col_ChildBg
+
*'''ImGui.Col_CheckMark''':
ImGui.Col_DragDropTarget
+
*'''ImGui.Col_ChildBg''': Background of child windows
ImGui.Col_FrameBg
+
*'''ImGui.Col_DragDropTarget''': Rectangle highlighting a drop target
ImGui.Col_FrameBgActive
+
*'''ImGui.Col_FrameBg''': Background of checkbox, radio button, plot, slider, text input
ImGui.Col_FrameBgHovered
+
*'''ImGui.Col_FrameBgActive''':
ImGui.Col_Header
+
*'''ImGui.Col_FrameBgHovered''':
ImGui.Col_HeaderActive
+
*'''ImGui.Col_Header''': Header* colors are used for CollapsingHeader, TreeNode, Selectable, MenuItem
ImGui.Col_HeaderHovered
+
*'''ImGui.Col_HeaderActive''':
ImGui.Col_MenuBarBg
+
*'''ImGui.Col_HeaderHovered''':
ImGui.Col_ModalWindowDimBg
+
*'''ImGui.Col_MenuBarBg''':
ImGui.Col_NavHighlight
+
*'''ImGui.Col_ModalWindowDimBg''': Darken/colorize entire screen behind a modal window, when one is active
ImGui.Col_NavWindowingDimBg
+
*'''ImGui.Col_NavHighlight''': Gamepad/keyboard: current highlighted item
ImGui.Col_NavWindowingHighlight
+
*'''ImGui.Col_NavWindowingDimBg''': Darken/colorize entire screen behind the CTRL+TAB window list, when active
ImGui.Col_PlotHistogram
+
*'''ImGui.Col_NavWindowingHighlight''': Highlight window when using CTRL+TAB
ImGui.Col_PlotHistogramHovered
+
*'''ImGui.Col_PlotHistogram''':
ImGui.Col_PlotLines
+
*'''ImGui.Col_PlotHistogramHovered''':
ImGui.Col_PlotLinesHovered
+
*'''ImGui.Col_PlotLines''':
ImGui.Col_PopupBg
+
*'''ImGui.Col_PlotLinesHovered''':
ImGui.Col_ResizeGrip
+
*'''ImGui.Col_PopupBg''': Background of popups, menus, tooltips windows
ImGui.Col_ResizeGripActive
+
*'''ImGui.Col_ResizeGrip''': Resize grip in lower-right and lower-left corners of windows.
ImGui.Col_ResizeGripHovered
+
*'''ImGui.Col_ResizeGripActive''':
ImGui.Col_ScrollbarBg
+
*'''ImGui.Col_ResizeGripHovered''':
ImGui.Col_ScrollbarGrab
+
*'''ImGui.Col_ScrollbarBg''':
ImGui.Col_ScrollbarGrabActive
+
*'''ImGui.Col_ScrollbarGrab''':
ImGui.Col_ScrollbarGrabHovered
+
*'''ImGui.Col_ScrollbarGrabActive''':
ImGui.Col_Separator
+
*'''ImGui.Col_ScrollbarGrabHovered''':
ImGui.Col_SeparatorActive
+
*'''ImGui.Col_Separator''':
ImGui.Col_SeparatorHovered
+
*'''ImGui.Col_SeparatorActive''':
ImGui.Col_SliderGrab
+
*'''ImGui.Col_SeparatorHovered''':
ImGui.Col_SliderGrabActive
+
*'''ImGui.Col_SliderGrab''':
ImGui.Col_Tab
+
*'''ImGui.Col_SliderGrabActive''':
ImGui.Col_TabActive
+
*'''ImGui.Col_Tab''': TabItem in a TabBar
ImGui.Col_TabHovered
+
*'''ImGui.Col_TabActive''':
ImGui.Col_TableBorderLight
+
*'''ImGui.Col_TabHovered''':
ImGui.Col_TableBorderStrong
+
*'''ImGui.Col_TableBorderLight''': Table inner borders (prefer using Alpha=1.0 here)
ImGui.Col_TableHeaderBg
+
*'''ImGui.Col_TableBorderStrong''': Table outer and header borders (prefer using Alpha=1.0 here)
ImGui.Col_TableRowBg
+
*'''ImGui.Col_TableHeaderBg''': Table header background
ImGui.Col_TableRowBgAlt
+
*'''ImGui.Col_TableRowBg''': Table row background (even rows)
ImGui.Col_TabUnfocused
+
*'''ImGui.Col_TableRowBgAlt''': Table row background (odd rows)
ImGui.Col_TabUnfocusedActive
+
*'''ImGui.Col_TabUnfocused''':
ImGui.Col_Text
+
*'''ImGui.Col_TabUnfocusedActive''':
ImGui.Col_TextDisabled
+
*'''ImGui.Col_Text''':
ImGui.Col_TextSelectedBg
+
*'''ImGui.Col_TextDisabled''':
ImGui.Col_TitleBg
+
*'''ImGui.Col_TextSelectedBg''':
ImGui.Col_TitleBgActive
+
*'''ImGui.Col_TitleBg''':
ImGui.Col_TitleBgCollapsed
+
*'''ImGui.Col_TitleBgActive''':
ImGui.Col_WindowBg
+
*'''ImGui.Col_TitleBgCollapsed''':
</syntaxhighlight>
+
*'''ImGui.Col_WindowBg''': Background of normal windows
  
 
== ColorEditFlags ==
 
== 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''':
 
<syntaxhighlight lang="lua">
 
<syntaxhighlight lang="lua">
ImGui.ColorEditFlags_AlphaPreview
+
ImGui.ColorEditFlags_OptionsDefault =
ImGui.ColorEditFlags_DisplayRGB
+
ImGui.ColorEditFlags_Uint8 | ImGui.ColorEditFlags_DisplayRGB | ImGui.ColorEditFlags_InputRGB |
ImGui.ColorEditFlags_DisplayHex
+
ImGui.ColorEditFlags_PickerHueBar,
ImGui.ColorEditFlags_InputHSV
 
ImGui.ColorEditFlags_NoSidePreview
 
ImGui.ColorEditFlags_Uint8
 
ImGui.ColorEditFlags_AlphaPreviewHalf
 
ImGui.ColorEditFlags_Float
 
ImGui.ColorEditFlags_PickerHueWheel
 
ImGui.ColorEditFlags_OptionsDefault
 
ImGui.ColorEditFlags_InputRGB
 
ImGui.ColorEditFlags_HDR
 
ImGui.ColorEditFlags_NoPicker
 
ImGui.ColorEditFlags_AlphaBar
 
ImGui.ColorEditFlags_DisplayHSV
 
ImGui.ColorEditFlags_PickerHueBar
 
ImGui.ColorEditFlags_NoAlpha
 
ImGui.ColorEditFlags_NoOptions
 
ImGui.ColorEditFlags_NoDragDrop
 
ImGui.ColorEditFlags_NoInputs
 
ImGui.ColorEditFlags_None
 
ImGui.ColorEditFlags_NoSmallPreview
 
ImGui.ColorEditFlags_NoBorder
 
ImGui.ColorEditFlags_NoLabel
 
ImGui.ColorEditFlags_NoTooltip
 
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
== 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 ==
 
== FocusedFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::IsWindowFocused()
ImGui.FocusedFlags_ChildWindows
+
 
ImGui.FocusedFlags_AnyWindow
+
*'''ImGui.FocusedFlags_None''': default = 0
ImGui.FocusedFlags_RootWindow
+
*'''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_RootAndChildWindows
+
*'''ImGui.FocusedFlags_ChildWindows''': Return true if any children of the window is focused
ImGui.FocusedFlags_None
+
*'''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_NoPopupHierarchy
+
*'''ImGui.FocusedFlags_RootAndChildWindows''': ImGui.FocusedFlags_RootWindow | ImGui.FocusedFlags_ChildWindows,
</syntaxhighlight>
+
*'''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
  
== PopupFlags ==
+
*'''ImGui.GlyphRanges_ChineseFull''': Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs
<syntaxhighlight lang="lua">
+
*'''ImGui.GlyphRanges_ChineseSimplifiedCommon''': Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese
ImGui.PopupFlags_NoOpenOverExistingPopup
+
*'''ImGui.GlyphRanges_Cyrillic''': Default + about 400 Cyrillic characters
ImGui.PopupFlags_MouseButtonLeft
+
*'''ImGui.GlyphRanges_Default''': Basic Latin, Extended Latin
ImGui.PopupFlags_MouseButtonMask
+
*'''ImGui.GlyphRanges_Greek''': Default + Greek and Coptic
ImGui.PopupFlags_MouseButtonRight
+
*'''ImGui.GlyphRanges_Japanese''': Default + Hiragana, Katakana, Half-Width, Selection of 2999 Ideographs
ImGui.PopupFlags_AnyPopupId
+
*'''ImGui.GlyphRanges_Korean''': Default + Korean characters
ImGui.PopupFlags_MouseButtonDefault
+
*'''ImGui.GlyphRanges_Thai''': Default + Thai characters
ImGui.PopupFlags_MouseButtonMiddle
+
*'''ImGui.GlyphRanges_Vietnamese''': Default + Vietnamese characters
ImGui.PopupFlags_None
 
ImGui.PopupFlags_AnyPopup
 
ImGui.PopupFlags_AnyPopupLevel
 
ImGui.PopupFlags_NoOpenOverItems
 
</syntaxhighlight>
 
  
 
== HoveredFlags ==
 
== HoveredFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::IsItemHovered(), ImGui::IsWindowHovered()
ImGui.HoveredFlags_None
+
'''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!
ImGui.HoveredFlags_RootAndChildWindows
+
'''Note''': windows with the ImGuiWindowFlags_NoInputs flag are ignored by IsWindowHovered() calls
ImGui.HoveredFlags_AllowWhenBlockedByPopup
+
 
ImGui.HoveredFlags_AllowWhenBlockedByActiveItem
+
*'''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_ChildWindows
+
*'''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_RectOnly
+
*'''ImGui.HoveredFlags_AllowWhenBlockedByPopup''': Return true even if a popup window is normally blocking access to this item/window
ImGui.HoveredFlags_AllowWhenDisabled
+
*'''ImGui.HoveredFlags_AllowWhenDisabled''': IsItemHovered() only: Return true even if the item is disabled
ImGui.HoveredFlags_AllowWhenOverlapped
+
*'''ImGui.HoveredFlags_AllowWhenOverlapped''': IsItemHovered() only: Return true even if the position is obstructed or overlapped by another window
ImGui.HoveredFlags_AnyWindow
+
*'''ImGui.HoveredFlags_AnyWindow''': IsWindowHovered() only: Return true if any window is hovered
ImGui.HoveredFlags_RootWindow
+
*'''ImGui.HoveredFlags_ChildWindows''': IsWindowHovered() only: Return true if any children of the window is hovered
ImGui.HoveredFlags_NoNavOverride
+
*'''ImGui.HoveredFlags_DelayNormal''': Hovering delays (for tooltips). Return true after io.HoverDelayNormal elapsed (~0.30 sec)
ImGui.HoveredFlags_DelayNormal
+
*'''ImGui.HoveredFlags_DelayShort''': Hovering delays (for tooltips). Return true after io.HoverDelayShort elapsed (~0.10 sec)
ImGui.HoveredFlags_DelayShort
+
*'''ImGui.HoveredFlags_NoNavOverride''': Disable using gamepad/keyboard navigation state when active, always query mouse
ImGui.HoveredFlags_NoSharedDelay
+
*'''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)
</syntaxhighlight>
+
*'''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 ==
 
== 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_EnterReturnsTrue
+
 
ImGui.InputTextFlags_ReadOnly
+
*'''ImGui.InputTextFlags_None''': default = 0
ImGui.InputTextFlags_AutoSelectAll
+
*'''ImGui.InputTextFlags_AllowTabInput''': Pressing TAB input a '\t' character into the text field
ImGui.InputTextFlags_AllowTabInput
+
*'''ImGui.InputTextFlags_AlwaysOverwrite''': Overwrite mode
ImGui.InputTextFlags_CharsScientific
+
*'''ImGui.InputTextFlags_AutoSelectAll''': Select entire text when first taking mouse focus
ImGui.InputTextFlags_CharsDecimal
+
*'''ImGui.InputTextFlags_CallbackAlways''': Callback on each iteration. User code may query cursor position, modify text buffer
ImGui.InputTextFlags_NoUndoRedo
+
*'''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_CtrlEnterForNewLine
+
*'''ImGui.InputTextFlags_CallbackCompletion''': Callback on pressing TAB (for completion handling)
ImGui.InputTextFlags_CharsHexadecimal
+
*'''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_CharsNoBlank
+
*'''ImGui.InputTextFlags_CallbackHistory''': Callback on pressing Up/Down arrows (for history handling)
ImGui.InputTextFlags_Password
+
*'''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_NoHorizontalScroll
+
*'''ImGui.InputTextFlags_CharsDecimal''': Allow 0123456789.+-*/
ImGui.InputTextFlags_AlwaysInsertMode
+
*'''ImGui.InputTextFlags_CharsHexadecimal''': Allow 0123456789ABCDEFabcdef
ImGui.InputTextFlags_CharsUppercase
+
*'''ImGui.InputTextFlags_CharsNoBlank''': Filter out spaces, tabs
ImGui.InputTextFlags_NoBackground -- custom constant, used to disable background
+
*'''ImGui.InputTextFlags_CharsScientific''': Allow 0123456789.+-*/eE (Scientific notation input)
ImGui.InputTextFlags_EscapeClearsAll
+
*'''ImGui.InputTextFlags_CharsUppercase''': Turn a..z into A..Z
ImGui.InputTextFlags_CallbackCompletion
+
*'''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_CallbackResize
+
*'''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_CallbackAlways
+
*'''ImGui.InputTextFlags_EscapeClearsAll''': Escape key clears content if not empty, and deactivate otherwise (contrast to default behavior of Escape to revert)
ImGui.InputTextFlags_CallbackHistory
+
*'''ImGui.InputTextFlags_NoBackground -- custom constant, used to disable background''':
ImGui.InputTextFlags_CallbackCharFilter
+
*'''ImGui.InputTextFlags_NoHorizontalScroll''': Disable following the cursor horizontally
ImGui.InputTextFlags_CallbackEdit
+
*'''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 ==
 +
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
  
== NavInput ==
+
== MouseButton ==
<syntaxhighlight lang="lua">
+
Identify a mouse button.
ImGui.NavInput_FocusNext
 
ImGui.NavInput_TweakFast
 
ImGui.NavInput_Input
 
ImGui.NavInput_DpadRight
 
ImGui.NavInput_FocusPrev
 
ImGui.NavInput_LStickDown
 
ImGui.NavInput_LStickUp
 
ImGui.NavInput_Activate
 
ImGui.NavInput_LStickLeft
 
ImGui.NavInput_LStickRight
 
ImGui.NavInput_DpadLeft
 
ImGui.NavInput_DpadDown
 
ImGui.NavInput_TweakSlow
 
ImGui.NavInput_DpadUp
 
ImGui.NavInput_Menu
 
ImGui.NavInput_Cancel
 
</syntaxhighlight>
 
  
== TabBarFlags ==
+
Those values are guaranteed to be stable and we frequently use 0/1 directly. Named enums provided for convenience
<syntaxhighlight lang="lua">
 
ImGui.TabBarFlags_AutoSelectNewTabs
 
ImGui.TabBarFlags_NoCloseWithMiddleMouseButton
 
ImGui.TabBarFlags_TabListPopupButton
 
ImGui.TabBarFlags_NoTooltip
 
ImGui.TabBarFlags_FittingPolicyMask
 
ImGui.TabBarFlags_Reorderable
 
ImGui.TabBarFlags_FittingPolicyDefault
 
ImGui.TabBarFlags_FittingPolicyScroll
 
ImGui.TabBarFlags_FittingPolicyResizeDown
 
ImGui.TabBarFlags_None
 
ImGui.TabBarFlags_NoTabListScrollingButtons
 
</syntaxhighlight>
 
  
== TreeNodeFlags ==
+
*'''ImGui.MouseButton_Left''': 0
<syntaxhighlight lang="lua">
+
*'''ImGui.MouseButton_Middle''': 2
ImGui.TreeNodeFlags_Bullet
+
*'''ImGui.MouseButton_Right''': 1
ImGui.TreeNodeFlags_None
 
ImGui.TreeNodeFlags_CollapsingHeader
 
ImGui.TreeNodeFlags_NavLeftJumpsBackHere
 
ImGui.TreeNodeFlags_Framed
 
ImGui.TreeNodeFlags_FramePadding
 
ImGui.TreeNodeFlags_AllowItemOverlap
 
ImGui.TreeNodeFlags_OpenOnArrow
 
ImGui.TreeNodeFlags_SpanFullWidth
 
ImGui.TreeNodeFlags_NoAutoOpenOnLog
 
ImGui.TreeNodeFlags_Leaf
 
ImGui.TreeNodeFlags_NoTreePushOnOpen
 
ImGui.TreeNodeFlags_Selected
 
ImGui.TreeNodeFlags_SpanAvailWidth
 
ImGui.TreeNodeFlags_OpenOnDoubleClick
 
ImGui.TreeNodeFlags_DefaultOpen
 
</syntaxhighlight>
 
  
== StyleVar ==
+
== MouseCursor ==
<syntaxhighlight lang="lua">
+
Enumeration for GetMouseCursor()
ImGui.StyleVar_GrabRounding
 
ImGui.StyleVar_Alpha
 
ImGui.StyleVar_WindowMinSize
 
ImGui.StyleVar_PopupBorderSize
 
ImGui.StyleVar_WindowBorderSize
 
ImGui.StyleVar_FrameBorderSize
 
ImGui.StyleVar_ItemSpacing
 
ImGui.StyleVar_IndentSpacing
 
ImGui.StyleVar_FramePadding
 
ImGui.StyleVar_WindowPadding
 
ImGui.StyleVar_ChildRounding
 
ImGui.StyleVar_ItemInnerSpacing
 
ImGui.StyleVar_WindowRounding
 
ImGui.StyleVar_FrameRounding
 
ImGui.StyleVar_TabRounding
 
ImGui.StyleVar_ChildBorderSize
 
ImGui.StyleVar_GrabMinSize
 
ImGui.StyleVar_ScrollbarRounding
 
ImGui.StyleVar_ScrollbarSize
 
ImGui.StyleVar_WindowTitleAlign
 
ImGui.StyleVar_SelectableTextAlign
 
ImGui.StyleVar_PopupRounding
 
ImGui.StyleVar_ButtonTextAlign
 
ImGui.StyleVar_CellPadding
 
ImGui.StyleVar_DisabledAlpha
 
ImGui.StyleVar_SeparatorTextBorderSize
 
ImGui.StyleVar_SeparatorTextAlign
 
ImGui.StyleVar_SeparatorTextPadding
 
</syntaxhighlight>
 
  
== DataType ==
+
User code may request backend to display given cursor by calling SetMouseCursor(), which is why we have some cursors that are marked unused here
<syntaxhighlight lang="lua">
 
ImGui.DataType_U8
 
ImGui.DataType_S64
 
ImGui.DataType_Float
 
ImGui.DataType_S16
 
ImGui.DataType_U16
 
ImGui.DataType_Double
 
ImGui.DataType_S8
 
ImGui.DataType_U32
 
ImGui.DataType_S32
 
ImGui.DataType_U64
 
</syntaxhighlight>
 
  
== Dir ==
+
*'''ImGui.MouseCursor_None''': -1
<syntaxhighlight lang="lua">
+
*'''ImGui.MouseCursor_Arrow''': 0
ImGui.Dir_None
+
*'''ImGui.MouseCursor_Hand''': (Unused by Dear ImGui functions. Use for e.g. hyperlinks)
ImGui.Dir_Left
+
*'''ImGui.MouseCursor_NotAllowed''': When hovering something with disallowed interaction. Usually a crossed circle
ImGui.Dir_Up
+
*'''ImGui.MouseCursor_ResizeAll''': (Unused by Dear ImGui functions)
ImGui.Dir_Down
+
*'''ImGui.MouseCursor_ResizeEW''': When hovering over a vertical border or a column
ImGui.Dir_Right
+
*'''ImGui.MouseCursor_ResizeNESW''': When hovering over the bottom-left corner of a window
</syntaxhighlight>
+
*'''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.
  
== WindowFlags ==
+
== PopupFlags ==
<syntaxhighlight lang="lua">
+
Flags for OpenPopup*(), BeginPopupContext*(), IsPopupOpen() functions.
ImGui.WindowFlags_NoScrollWithMouse
 
ImGui.WindowFlags_None
 
ImGui.WindowFlags_NoScrollbar
 
ImGui.WindowFlags_HorizontalScrollbar
 
ImGui.WindowFlags_NoFocusOnAppearing
 
ImGui.WindowFlags_NoBringToFrontOnFocus
 
ImGui.WindowFlags_NoDecoration
 
ImGui.WindowFlags_NoCollapse
 
ImGui.WindowFlags_NoTitleBar
 
ImGui.WindowFlags_NoMove
 
ImGui.WindowFlags_NoInputs
 
ImGui.WindowFlags_NoMouseInputs
 
ImGui.WindowFlags_NoSavedSettings
 
ImGui.WindowFlags_NoNav
 
ImGui.WindowFlags_UnsavedDocument
 
ImGui.WindowFlags_NoNavFocus
 
ImGui.WindowFlags_AlwaysHorizontalScrollbar
 
ImGui.WindowFlags_AlwaysUseWindowPadding
 
ImGui.WindowFlags_NoNavInputs
 
ImGui.WindowFlags_NoResize
 
ImGui.WindowFlags_AlwaysVerticalScrollbar
 
ImGui.WindowFlags_MenuBar
 
ImGui.WindowFlags_NoBackground
 
ImGui.WindowFlags_AlwaysAutoResize
 
ImGui.WindowFlags_FullScreen -- custom constant, used to create a fullscreen window
 
</syntaxhighlight>
 
  
== TabItemFlags ==
+
- 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
<syntaxhighlight lang="lua">
+
- For the same reason, we exceptionally default the ImGuiPopupFlags argument of BeginPopupContextXXX functions to 1 instead of 0
ImGui.TabItemFlags_SetSelected
 
ImGui.TabItemFlags_NoCloseWithMiddleMouseButton
 
ImGui.TabItemFlags_NoTooltip
 
ImGui.TabItemFlags_None
 
ImGui.TabItemFlags_NoPushId
 
ImGui.TabItemFlags_UnsavedDocument
 
ImGui.TabItemFlags_Leading
 
ImGui.TabItemFlags_Trailing
 
ImGui.TabItemFlags_NoReorder
 
</syntaxhighlight>
 
  
== ComboFlags ==
+
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
<syntaxhighlight lang="lua">
+
- Multiple buttons currently cannot be combined/or-ed in those functions (we could allow it later)
ImGui.ComboFlags_HeightSmall
 
ImGui.ComboFlags_HeightLarge
 
ImGui.ComboFlags_PopupAlignLeft
 
ImGui.ComboFlags_None
 
ImGui.ComboFlags_NoPreview
 
ImGui.ComboFlags_HeightRegular
 
ImGui.ComboFlags_HeightMask
 
ImGui.ComboFlags_NoArrowButton
 
ImGui.ComboFlags_HeightLargest
 
</syntaxhighlight>
 
  
== Cond ==
+
*'''ImGui.PopupFlags_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''ImGui.PopupFlags_AnyPopup''': ImGui.PopupFlags_AnyPopupId | ImGui.PopupFlags_AnyPopupLevel,
ImGui.Cond_Appearing
+
*'''ImGui.PopupFlags_AnyPopupId''': For IsPopupOpen(): ignore the ImGuiID parameter and test for any popup
ImGui.Cond_None
+
*'''ImGui.PopupFlags_AnyPopupLevel''': For IsPopupOpen(): search/test at any level of the popup stack (default test in the current level)
ImGui.Cond_Always
+
*'''ImGui.PopupFlags_MouseButtonDefault''': /
ImGui.Cond_FirstUseEver
+
*'''ImGui.PopupFlags_MouseButtonLeft''': For BeginPopupContext*(): open on Left Mouse release. Guaranteed to always be == 0 (same as ImGuiMouseButton_Left)
ImGui.Cond_Once
+
*'''ImGui.PopupFlags_MouseButtonMask''': /
</syntaxhighlight>
+
*'''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_SpanAllColumns
 
ImGui.SelectableFlags_AllowItemOverlap
 
ImGui.SelectableFlags_DontClosePopups
 
ImGui.SelectableFlags_AllowDoubleClick
 
ImGui.SelectableFlags_Disabled
 
</syntaxhighlight>
 
  
== MouseCursor ==
+
*'''ImGui.SelectableFlags_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''ImGui.SelectableFlags_AllowDoubleClick''': Generate press events on double clicks too
ImGui.MouseCursor_Hand
+
*'''ImGui.SelectableFlags_AllowItemOverlap''': (WIP) Hit testing to allow subsequent widgets to overlap this one
ImGui.MouseCursor_ResizeAll
+
*'''ImGui.SelectableFlags_Disabled''': Cannot be selected, display grayed out text
ImGui.MouseCursor_ResizeEW
+
*'''ImGui.SelectableFlags_DontClosePopups''': Clicking this doesn't close parent popup window
ImGui.MouseCursor_Arrow
+
*'''ImGui.SelectableFlags_SpanAllColumns''': Selectable frame can span all columns (text will still fit in current column)
ImGui.MouseCursor_ResizeNS
 
ImGui.MouseCursor_None
 
ImGui.MouseCursor_NotAllowed
 
ImGui.MouseCursor_ResizeNWSE
 
ImGui.MouseCursor_ResizeNESW
 
ImGui.MouseCursor_TextInput
 
</syntaxhighlight>
 
  
== MouseButton ==
+
== SliderFlags ==
<syntaxhighlight lang="lua">
+
Flags for DragFloat(), DragInt(), SliderFloat(), SliderInt() etc.
ImGui.MouseButton_Right
+
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
ImGui.MouseButton_Middle
+
(Those are per-item flags. There are shared flags in ImGuiIO: io.ConfigDragClickToInputText)
ImGui.MouseButton_Left
 
</syntaxhighlight>
 
  
== ColorEditFlags ==
+
*'''ImGui.SliderFlags_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''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)
  
== DragDropFlags ==
+
== SortDirection ==
<syntaxhighlight lang="lua">
+
A sorting direction.
ImGui.DragDropFlags_SourceNoPreviewTooltip
 
ImGui.DragDropFlags_SourceAllowNullID
 
ImGui.DragDropFlags_AcceptNoDrawDefaultRect
 
ImGui.DragDropFlags_AcceptPeekOnly
 
ImGui.DragDropFlags_AcceptBeforeDelivery
 
ImGui.DragDropFlags_SourceNoHoldToOpenOthers
 
ImGui.DragDropFlags_AcceptNoPreviewTooltip
 
ImGui.DragDropFlags_SourceAutoExpirePayload
 
ImGui.DragDropFlags_SourceExtern
 
ImGui.DragDropFlags_None
 
ImGui.DragDropFlags_SourceNoDisableHover
 
</syntaxhighlight>
 
  
== corner_flags ==
+
*'''ImGui.SortDirection_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''ImGui.SortDirection_Ascending''': Ascending = 0->9, A->Z etc.
ImGui.DrawFlags_None
+
*'''ImGui.SortDirection_Descending''': Descending = 9->0, Z->A etc.
ImGui.DrawFlags_Closed
 
ImGui.DrawFlags_RoundCornersTopLeft
 
ImGui.DrawFlags_RoundCornersTopRight
 
ImGui.DrawFlags_RoundCornersBottomLeft
 
ImGui.DrawFlags_RoundCornersBottomRight
 
ImGui.DrawFlags_RoundCornersTop
 
ImGui.DrawFlags_RoundCornersBottom
 
ImGui.DrawFlags_RoundCornersLeft
 
ImGui.DrawFlags_RoundCornersRight
 
ImGui.DrawFlags_RoundCornersAll
 
</syntaxhighlight>
 
  
== ConfigFlags ==
+
== StyleVar ==
<syntaxhighlight lang="lua">
+
Enumeration for PushStyleVar() / PopStyleVar() to temporarily modify the ImGuiStyle structure.
ImGui.ConfigFlags_None                 
+
- 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.ConfigFlags_NavEnableKeyboard     
 
ImGui.ConfigFlags_NavEnableGamepad     
 
ImGui.ConfigFlags_NavEnableSetMousePos 
 
ImGui.ConfigFlags_NavNoCaptureKeyboard 
 
ImGui.ConfigFlags_NoMouse               
 
ImGui.ConfigFlags_NoMouseCursorChange
 
ImGui.ConfigFlags_IsSRGB               
 
ImGui.ConfigFlags_IsTouchScreen
 
</syntaxhighlight>
 
  
== SliderFlags ==
+
*'''ImGui.StyleVar_Alpha''': ''float'', Alpha
<syntaxhighlight lang="lua">
+
*'''ImGui.StyleVar_ButtonTextAlign''': ''ImVec2'', ButtonTextAlign
ImGui.SliderFlags_None         
+
*'''ImGui.StyleVar_CellPadding''': ''ImVec2'', CellPadding
ImGui.SliderFlags_AlwaysClamp
+
*'''ImGui.StyleVar_ChildBorderSize''': ''float'', ChildBorderSize
ImGui.SliderFlags_Logarithmic 
+
*'''ImGui.StyleVar_ChildRounding''': ''float'', ChildRounding
ImGui.SliderFlags_NoRoundToFormat
+
*'''ImGui.StyleVar_DisabledAlpha''': ''float'', DisabledAlpha
ImGui.SliderFlags_NoInput
+
*'''ImGui.StyleVar_FrameBorderSize''': ''float'', FrameBorderSize
</syntaxhighlight>
+
*'''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
  
== GlyphRanges ==
+
== TabBarFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::BeginTabBar()
ImGui.GlyphRanges_Default,
 
ImGui.GlyphRanges_Korean,
 
ImGui.GlyphRanges_ChineseFull,
 
ImGui.GlyphRanges_ChineseSimplifiedCommon,
 
ImGui.GlyphRanges_Japanese,
 
ImGui.GlyphRanges_Cyrillic,
 
ImGui.GlyphRanges_Thai,
 
ImGui.GlyphRanges_Vietnamese
 
</syntaxhighlight>
 
  
== ItemFlags ==
+
*'''ImGui.TabBarFlags_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''ImGui.TabBarFlags_AutoSelectNewTabs''': Automatically select new tabs when they appear
ImGui.ItemFlags_Disabled
+
*'''ImGui.TabBarFlags_FittingPolicyDefault''': ImGui.TabBarFlags_FittingPolicyResizeDown,
ImGui.ItemFlags_ButtonRepeat
+
*'''ImGui.TabBarFlags_FittingPolicyMask''': ImGui.TabBarFlags_FittingPolicyResizeDown | ImGui.TabBarFlags_FittingPolicyScroll,
ImGui.ItemFlags_NoTabStop
+
*'''ImGui.TabBarFlags_FittingPolicyResizeDown''': Resize tabs when they don't fit
</syntaxhighlight>
+
*'''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
  
== TableBgTarget ==
+
== TabItemFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::BeginTabItem()
ImGui.TableBgTarget_None
 
ImGui.TableBgTarget_RowBg0
 
ImGui.TableBgTarget_RowBg1
 
ImGui.TableBgTarget_CellBg
 
</syntaxhighlight>
 
  
== TableColumnFlags ==
+
*'''ImGui.TabItemFlags_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''ImGui.TabItemFlags_Leading''': Enforce the tab position to the left of the tab bar (after the tab list popup button)
ImGui.TableColumnFlags_None
+
*'''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.TableColumnFlags_DefaultHide
+
*'''ImGui.TabItemFlags_NoPushId''': Don't call PushID(tab->ID)/PopID() on BeginTabItem()/EndTabItem()
ImGui.TableColumnFlags_DefaultSort
+
*'''ImGui.TabItemFlags_NoReorder''': Disable reordering this tab or having another tab cross over this tab
ImGui.TableColumnFlags_WidthStretch
+
*'''ImGui.TabItemFlags_NoTooltip''': Disable tooltip for the given tab
ImGui.TableColumnFlags_WidthFixed
+
*'''ImGui.TabItemFlags_SetSelected''': Trigger flag to programmatically make the tab selected when calling BeginTabItem()
ImGui.TableColumnFlags_NoResize
+
*'''ImGui.TabItemFlags_Trailing''': Enforce the tab position to the right of the tab bar (before the scrolling buttons)
ImGui.TableColumnFlags_NoReorder
+
*'''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
ImGui.TableColumnFlags_NoHide
 
ImGui.TableColumnFlags_NoClip
 
ImGui.TableColumnFlags_NoSort
 
ImGui.TableColumnFlags_NoSortAscending
 
ImGui.TableColumnFlags_NoSortDescending
 
ImGui.TableColumnFlags_NoHeaderWidth
 
ImGui.TableColumnFlags_PreferSortAscending
 
ImGui.TableColumnFlags_PreferSortDescending
 
ImGui.TableColumnFlags_IndentEnable
 
ImGui.TableColumnFlags_IndentDisable
 
ImGui.TableColumnFlags_IsEnabled
 
ImGui.TableColumnFlags_IsVisible
 
ImGui.TableColumnFlags_IsSorted
 
ImGui.TableColumnFlags_IsHovered
 
ImGui.TableColumnFlags_Disabled
 
ImGui.TableColumnFlags_NoHeaderLabel
 
</syntaxhighlight>
 
  
 
== 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_Resizable
+
- The DEFAULT sizing policies are:
ImGui.TableFlags_Reorderable
+
    - Default to ImGuiTableFlags_SizingFixedFit if ScrollX is on, or if host window has ImGuiWindowFlags_AlwaysAutoResize
ImGui.TableFlags_Hideable
+
    - Default to ImGuiTableFlags_SizingStretchSame if ScrollX is off
ImGui.TableFlags_Sortable
+
- When ScrollX is off:
ImGui.TableFlags_NoSavedSettings
+
    - Table defaults to ImGuiTableFlags_SizingStretchSame -> all Columns defaults to ImGuiTableColumnFlags_WidthStretch with same weight
ImGui.TableFlags_ContextMenuInBody
+
    - Columns sizing policy allowed: Stretch (default), Fixed/Auto
ImGui.TableFlags_RowBg
+
    - Fixed Columns (if any) will generally obtain their requested width (unless the table cannot fit them all)
ImGui.TableFlags_BordersInnerH  
+
    - Stretch Columns will share the remaining width according to their respective weight
ImGui.TableFlags_BordersOuterH
+
    - Mixed Fixed/Stretch columns is possible but has various side-effects on resizing behaviors
ImGui.TableFlags_BordersInnerV
+
      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_BordersOuterV
+
- When ScrollX is on:
ImGui.TableFlags_BordersH
+
    - Table defaults to ImGuiTableFlags_SizingFixedFit -> all Columns defaults to ImGuiTableColumnFlags_WidthFixed
ImGui.TableFlags_BordersV
+
    - Columns sizing policy allowed: Fixed/Auto mostly
ImGui.TableFlags_BordersInner
+
    - Fixed Columns can be enlarged as needed. Table will show a horizontal scrollbar if needed
ImGui.TableFlags_BordersOuter
+
    - 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_Borders
+
    - 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_NoBordersInBody
+
      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_NoBordersInBodyUntilResize
+
 
ImGui.TableFlags_SizingFixedFit
+
*'''ImGui.TableFlags_None''': default = 0
ImGui.TableFlags_SizingFixedSame
+
*'''ImGui.TableFlags_Borders''': ImGui.TableFlags_BordersInner | ImGui.TableFlags_BordersOuter, Draw all borders
ImGui.TableFlags_SizingStretchProp
+
*'''ImGui.TableFlags_BordersH''': ImGui.TableFlags_BordersInnerH | ImGui.TableFlags_BordersOuterH, Draw horizontal borders
ImGui.TableFlags_SizingStretchSame
+
*'''ImGui.TableFlags_BordersInner''': ImGui.TableFlags_BordersInnerV | ImGui.TableFlags_BordersInnerH, Draw inner borders
ImGui.TableFlags_NoHostExtendX
+
*'''ImGui.TableFlags_BordersInnerH ''': Draw horizontal borders between rows
ImGui.TableFlags_NoHostExtendY
+
*'''ImGui.TableFlags_BordersInnerV''': Draw vertical borders between columns
ImGui.TableFlags_NoKeepColumnsVisible
+
*'''ImGui.TableFlags_BordersOuter''': ImGui.TableFlags_BordersOuterV | ImGui.TableFlags_BordersOuterH, Draw outer borders
ImGui.TableFlags_PreciseWidths
+
*'''ImGui.TableFlags_BordersOuterH''': Draw horizontal borders at the top and bottom
ImGui.TableFlags_NoClip
+
*'''ImGui.TableFlags_BordersOuterV''': Draw vertical borders on the left and right sides
ImGui.TableFlags_PadOuterX
+
*'''ImGui.TableFlags_BordersV''': ImGui.TableFlags_BordersInnerV | ImGui.TableFlags_BordersOuterV, Draw vertical borders
ImGui.TableFlags_NoPadOuterX
+
*'''ImGui.TableFlags_ContextMenuInBody''': Right-click on columns body/contents will display table context menu. By default it is available in TableHeadersRow()
ImGui.TableFlags_NoPadInnerX
+
*'''ImGui.TableFlags_Hideable''': Enable hiding/disabling columns in context menu
ImGui.TableFlags_ScrollX
+
*'''ImGui.TableFlags_NoBordersInBody''': [ALPHA] Disable vertical borders in columns Body (borders will always appear in Headers). -> May move to style
ImGui.TableFlags_ScrollY
+
*'''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 ==
 +
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 ==
 
== 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_WidthStretch
+
*'''ImGui.TableColumnFlags_DefaultSort''': Default as a sorting column
ImGui.TableColumnFlags_WidthFixed
+
*'''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_NoResize
+
*'''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_NoReorder
+
*'''ImGui.TableColumnFlags_IndentEnable''': Use current Indent value when entering cell (default for column 0)
ImGui.TableColumnFlags_NoHide
+
*'''ImGui.TableColumnFlags_IsEnabled''': Status: is enabled == not hidden by user/api (referred to as "Hide" in _DefaultHide and _NoHide) flags
ImGui.TableColumnFlags_NoClip
+
*'''ImGui.TableColumnFlags_IsHovered''': Status: is hovered by mouse
ImGui.TableColumnFlags_NoSort
+
*'''ImGui.TableColumnFlags_IsSorted''': Status: is currently part of the sort specs
ImGui.TableColumnFlags_NoSortAscending
+
*'''ImGui.TableColumnFlags_IsVisible''': Status: is visible == is enabled AND not clipped by scrolling
ImGui.TableColumnFlags_NoSortDescending
+
*'''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_PreferSortAscending
+
*'''ImGui.TableColumnFlags_NoHeaderWidth''': Disable header text width contribution to automatic column width
ImGui.TableColumnFlags_PreferSortDescending
+
*'''ImGui.TableColumnFlags_NoHide''': Disable ability to hide/disable this column
ImGui.TableColumnFlags_IndentEnable
+
*'''ImGui.TableColumnFlags_NoReorder''': Disable manual reordering this column, this will also prevent other columns from crossing over this column
ImGui.TableColumnFlags_IndentDisable
+
*'''ImGui.TableColumnFlags_NoResize''': Disable manual resizing
ImGui.TableColumnFlags_IsEnabled
+
*'''ImGui.TableColumnFlags_NoSort''': Disable ability to sort on this field (even if ImGuiTableFlags_Sortable is set on the table)
ImGui.TableColumnFlags_IsVisible
+
*'''ImGui.TableColumnFlags_NoSortAscending''': Disable ability to sort in the ascending direction
ImGui.TableColumnFlags_IsSorted
+
*'''ImGui.TableColumnFlags_NoSortDescending''': Disable ability to sort in the descending direction
ImGui.TableColumnFlags_IsHovered
+
*'''ImGui.TableColumnFlags_PreferSortAscending''': Make the initial sort direction Ascending when first sorting on this column (default)
</syntaxhighlight>
+
*'''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 ==
 
== 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 ==
 +
*'''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*()
  
== SortDirection ==
+
*'''ImGui.TreeNodeFlags_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''ImGui.TreeNodeFlags_AllowItemOverlap''': Hit testing to allow subsequent widgets to overlap this one
ImGui.SortDirection_None
+
*'''ImGui.TreeNodeFlags_Bullet''': Display a bullet instead of arrow
ImGui.SortDirection_Ascending
+
*'''ImGui.TreeNodeFlags_CollapsingHeader''': ImGui.TreeNodeFlags_Framed | ImGui.TreeNodeFlags_NoTreePushOnOpen | ImGui.TreeNodeFlags_NoAutoOpenOnLog,
ImGui.SortDirection_Descending
+
*'''ImGui.TreeNodeFlags_DefaultOpen''': Default node to be open
</syntaxhighlight>
+
*'''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)
  
== TE_ColorIndex ==
+
== WindowFlags ==
<syntaxhighlight lang="lua">
+
Flags for ImGui::Begin()
ImGui.TE_Default
+
(Those are per-window flags. There are shared flags in ImGuiIO: io.ConfigWindowsResizeFromEdges and io.ConfigWindowsMoveFromTitleBarOnly)
ImGui.TE_Keyword
 
ImGui.TE_Number
 
ImGui.TE_String
 
ImGui.TE_CharLiteral
 
ImGui.TE_Punctuation
 
ImGui.TE_Preprocessor
 
ImGui.TE_Identifier
 
ImGui.TE_KnownIdentifier
 
ImGui.TE_PreprocIdentifier
 
ImGui.TE_Comment
 
ImGui.TE_MultiLineComment
 
ImGui.TE_Background
 
ImGui.TE_Cursor
 
ImGui.TE_Selection
 
ImGui.TE_ErrorMarker
 
ImGui.TE_Breakpoint
 
ImGui.TE_LineNumber
 
ImGui.TE_CurrentLineFill
 
ImGui.TE_CurrentLineFillInactive
 
ImGui.TE_CurrentLineEdge
 
</syntaxhighlight>
 
  
== ImageScaleMode ==
+
*'''ImGui.WindowFlags_None''': default = 0
<syntaxhighlight lang="lua">
+
*'''ImGui.WindowFlags_AlwaysAutoResize''': Resize every window to its content every frame
ImGui.ImageScaleMode_LetterBox
+
*'''ImGui.WindowFlags_AlwaysHorizontalScrollbar''': Always show horizontal scrollbar (even if ContentSize.x < Size.x)
ImGui.ImageScaleMode_FitWidth
+
*'''ImGui.WindowFlags_AlwaysUseWindowPadding''': Ensure child windows without border uses style.WindowPadding (ignored by default for non-bordered child windows, because more convenient)
ImGui.ImageScaleMode_FitHeight
+
*'''ImGui.WindowFlags_AlwaysVerticalScrollbar''': Always show vertical scrollbar (even if ContentSize.y < Size.y)
ImGui.ImageScaleMode_Stretch
+
*'''ImGui.WindowFlags_FullScreen''': Custom constant, used to create a fullscreen window
</syntaxhighlight>
+
*'''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]]'''
 
'''[[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