carb::simplegui::ISimpleGui
Defined in carb/simplegui/ISimpleGui.h
-
struct ISimpleGui
Defines the simplegui interface.
Based on: ImGui 1.70
Public Functions
-
inline void sameLine()
Tell the widget to stay on the same line.
Public Members
-
Context *(*createContext)(const ContextDesc &desc)
Creates a new immediate mode GUI context.
- Param desc
Context descriptor.
- Return
The context used for the current state of the GUI.
-
void (*destroyContext)(Context *ctx)
Destroys an immediate mode GUI context.
- Param ctx
The context to be destroyed.
-
void (*setCurrentContext)(Context *ctx)
Sets the current immediate mode GUI context to be used.
-
Context *(*getCurrentContext)()
Gets the current immediate mode GUI context that is used.
- Return
returns current immediate GUI mode context.
-
void (*newFrame)()
Start rendering a new immediate mode GUI frame.
-
void (*render)(float elapsedTime)
Render the immediate mode GUI frame.
- Param elapsedTime
The amount of elapsed time since the last render() call.
-
void (*showDemoWindow)(bool *open)
Shows a demo window of all features supported.
- Param open
Is window opened, can be changed after the call.
-
void (*showMetricsWindow)(bool *open)
Create metrics window.
Display simplegui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.
- Param open
Is window opened, can be changed after the call.
-
void (*showStyleEditor)(Style *style)
Add style editor block (not a window).
You can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style)
- Param style
Style to edit. Pass nullptr to edit the default one.
-
bool (*showStyleSelector)(const char *label)
Add style selector block (not a window).
Essentially a combo listing the default styles.
- Param label
Label.
-
void (*showFontSelector)(const char *label)
Add font selector block (not a window).
Essentially a combo listing the loaded fonts.
- Param label
Label.
-
void (*showUserGuide)()
Add basic help/info block (not a window): how to manipulate simplegui as a end-user (mouse/keyboard controls).
-
const char *(*getImGuiVersion)()
Get underlying ImGui library version string.
- Return
The version string e.g. “1.70”.
-
void (*setStyleColors)(Style *style, StyleColorsPreset preset)
Set style colors from one of the predefined presets:
- Param style
Style to change. Pass nullptr to change the default one.
- Param preset
Colors preset.
-
bool (*begin)(const char *label, bool *open, WindowFlags flags)
Begins defining a new immediate mode GUI (window).
- Param label
The window label.
- Param open
Returns if the window was active.
- Param windowFlags
The window flags to be used.
- Return
return false to indicate the window is collapsed or fully clipped, so you may early out and omit submitting anything to the window.
-
void (*end)()
Ends defining a immediate mode.
-
bool (*beginChild)(const char *strId, Float2 size, bool border, WindowFlags flags)
Begins a scrolling child region.
- Param strId
The string identifier for the child region.
- Param size
The size of the region. size==0.0f: use remaining window size, size<0.0f: use remaining window.
- Param border
Draw border.
- Param flags
Sets any WindowFlags for the dialog.
- Return
true if the region change, false if not.
-
bool (*beginChildId)(uint32_t id, Float2 size, bool border, WindowFlags flags)
Begins a scrolling child region.
- Param id
The identifier for the child region.
- Param size
The size of the region. size==0.0f: use remaining window size, size<0.0f: use remaining window.
- Param border
Draw border.
- Param flags
Sets any WindowFlags for the dialog.
- Return
true if the region change, false if not.
-
void (*endChild)()
Ends a child region.
-
bool (*isWindowAppearing)()
Is window appearing?
- Return
true if window is appearing, false if not.
-
bool (*isWindowCollapsed)()
Is window collapsed?
- Return
true if window is collapsed, false is not.
-
bool (*isWindowFocused)(FocusedFlags flags)
Is current window focused? or its root/child, depending on flags.
see flags for options.
- Param flags
The focused flags to use.
- Return
true if window is focused, false if not.
-
bool (*isWindowHovered)(HoveredFlags flags)
Is current window hovered (and typically: not blocked by a popup/modal)? see flags for options.
If you are trying to check whether your mouse should be dispatched to simplegui or to your app, you should use the ‘io.WantCaptureMouse’ boolean for that! Please read the FAQ!
- Param flags
The hovered flags to use.
- Return
true if window is currently hovered over, false if not.
-
DrawList *(*getWindowDrawList)()
Get the draw list associated to the window, to append your own drawing primitives.
- Return
The draw list associated to the window, to append your own drawing primitives.
-
float (*getWindowDpiScale)()
Gets the DPI scale currently associated to the current window’s viewport.
- Return
The DPI scale currently associated to the current window’s viewport.
-
Float2 (*getWindowPos)()
Get current window position in screen space.
This is useful if you want to do your own drawing via the DrawList API.
- Return
The current window position in screen space.
-
float (*getWindowWidth)()
Gets the current window width.
- Return
The current window width.
-
float (*getWindowHeight)()
Gets the current window height.
- Return
The current window height.
-
Float2 (*getContentRegionMax)()
Gets the current content boundaries.
This is typically window boundaries including scrolling, or current column boundaries, in windows coordinates.
- Return
The current content boundaries.
-
Float2 (*getContentRegionAvail)()
Gets the current content region available.
This is: getContentRegionMax() - getCursorPos()
- Return
The current content region available.
-
float (*ContentRegionAvailWidth)()
Gets the width of the current content region available.
- Return
The width of the current content region available.
-
Float2 (*getWindowContentRegionMin)()
Content boundaries min (roughly (0,0)-Scroll), in window coordinates.
-
Float2 (*getWindowContentRegionMax)()
Gets the maximum content boundaries.
This is roughly (0,0)+Size-Scroll) where Size can be override with SetNextWindowContentSize(), in window coordinates.
- Return
The maximum content boundaries.
-
float (*getWindowContentRegionWidth)()
Content region width.
-
void (*setNextWindowPos)(Float2 position, Condition cond, Float2 pivot)
Sets the next window position.
Call before begin(). use pivot=(0.5f,0.5f) to center on given point, etc.
- Param position
The position to set.
- Param pivot
The offset pivot.
-
void (*setNextWindowSize)(Float2 size, Condition cond)
Set next window size.
Set axis to 0.0f to force an auto-fit on this axis. call before begin()
- Param size
The next window size.
-
void (*setNextWindowSizeConstraints)(const Float2 &sizeMin, const Float2 &sizeMax)
Set next window size limits.
use -1,-1 on either X/Y axis to preserve the current size. Use callback to apply non-trivial programmatic constraints.
-
void (*setNextWindowContentSize)(const Float2 &size)
Set next window content size (~ enforce the range of scrollbars).
not including window decorations (title bar, menu bar, etc.). set an axis to 0.0f to leave it automatic. call before Begin()
-
void (*setNextWindowCollapsed)(bool collapsed, Condition cond)
Set next window collapsed state.
call before Begin()
-
void (*setNextWindowFocus)()
Set next window to be focused / front-most.
call before Begin()
-
void (*setNextWindowBgAlpha)(float alpha)
Set next window background color alpha.
helper to easily modify ImGuiCol_WindowBg/ChildBg/PopupBg.
-
void (*setWindowFontScale)(float scale)
Set font scale.
Adjust IO.FontGlobalScale if you want to scale all windows
-
void (*setWindowPos)(const char *name, const Float2 &pos, Condition cond)
Set named window position.
-
void (*setWindowSize)(const char *name, const Float2 &size, Condition cond)
Set named window size.
set axis to 0.0f to force an auto-fit on this axis.
-
void (*setWindowCollapsed)(const char *name, bool collapsed, Condition cond)
Set named window collapsed state.
-
void (*setWindowFocus)(const char *name)
Set named window to be focused / front-most.
use NULL to remove focus.
-
float (*getScrollX)()
Get scrolling amount [0..GetScrollMaxX()].
-
float (*getScrollY)()
Get scrolling amount [0..GetScrollMaxY()].
-
float (*getScrollMaxX)()
Get maximum scrolling amount ~~ ContentSize.X - WindowSize.X.
-
float (*getScrollMaxY)()
Get maximum scrolling amount ~~ ContentSize.Y - WindowSize.Y.
-
void (*setScrollX)(float scrollX)
Set scrolling amount [0..GetScrollMaxX()].
-
void (*setScrollY)(float scrollY)
Set scrolling amount [0..GetScrollMaxY()].
-
void (*setScrollHereY)(float centerYRatio)
Adjust scrolling amount to make current cursor position visible.
- Param centerYRatio
Center y ratio: 0.0: top, 0.5: center, 1.0: bottom.
-
void (*setScrollFromPosY)(float posY, float centerYRatio)
Adjust scrolling amount to make given position valid.
use getCursorPos() or getCursorStartPos()+offset to get valid positions. default: centerYRatio = 0.5f
-
void (*pushFont)(Font *font)
Use NULL as a shortcut to push default font.
-
void (*popFont)()
Pop font from the stack.
-
void (*pushStyleColor)(StyleColor styleColorIndex, Float4 color)
Pushes and applies a style color for the current widget.
- Param styleColorIndex
The style color index.
- Param color
The color to be applied for the style color being pushed.
-
void (*popStyleColor)()
Pops off and stops applying the style color for the current widget.
-
void (*pushStyleVarFloat)(StyleVar styleVarIndex, float value)
Pushes a style variable(property) with a float value.
- Param styleVarIndex
The style variable(property) index.
- Param value
The value to be applied.
-
void (*pushStyleVarFloat2)(StyleVar styleVarIndex, Float2 value)
Pushes a style variable(property) with a Float2 value.
- Param styleVarIndex
The style variable(property) index.
- Param value
The value to be applied.
-
void (*popStyleVar)()
Pops off and stops applying the style variable(property) for the current widget.
-
const Float4 &(*getStyleColorVec4)(StyleColor colorIndex)
Retrieve style color as stored in ImGuiStyle structure.
use to feed back into PushStyleColor(), otherwise use GetColorU32() to get style color with style alpha baked in.
-
Font *(*getFont)()
Get current font.
-
float (*getFontSize)()
Get current font size (= height in pixels) of current font with current scale applied.
-
Float2 (*getFontTexUvWhitePixel)()
Get UV coordinate for a while pixel, useful to draw custom shapes via the ImDrawList API.
-
uint32_t (*getColorU32StyleColor)(StyleColor colorIndex, float alphaMul)
Retrieve given style color with style alpha applied and optional extra alpha multiplier.
-
uint32_t (*getColorU32)(uint32_t color)
Retrieve given color with style alpha applied.
-
void (*pushItemWidth)(float width)
Push an item width for next widgets.
In pixels. 0.0f = default to ~2/3 of windows width, >0.0f: width in pixels, <0.0f align xx pixels to the right of window (so -1.0f always align width to the right side).
- Param width
The width.
-
void (*popItemWidth)()
Pops an item width.
-
carb::Float2 (*calcItemSize)(carb::Float2 size, float defaultX, float defaultY)
Size of item given pushed settings and current cursor position NOTE: This is not the same as calcItemWidth.
-
float (*calcItemWidth)()
Width of item given pushed settings and current cursor position.
-
void (*pushTextWrapPos)(float wrapPosX)
Word-wrapping for Text*() commands.
< 0.0f: no wrapping; 0.0f: wrap to end of window (or column); > 0.0f: wrap at ‘wrapPosX’ position in window local space
-
void (*popTextWrapPos)()
Pop text wrap pos form the stack.
-
void (*pushAllowKeyboardFocus)(bool allow)
Allow focusing using TAB/Shift-TAB, enabled by default but you can disable it for certain widgets.
-
void (*popAllowKeyboardFocus)()
Pop allow keyboard focus.
-
void (*pushButtonRepeat)(bool repeat)
In ‘repeat’ mode, Button*() functions return repeated true in a typematic manner (using io.KeyRepeatDelay/io.KeyRepeatRate setting).
Note that you can call IsItemActive() after any Button() to tell if the button is held in the current frame.
-
void (*popButtonRepeat)()
Pop button repeat.
-
void (*separator)()
Adds a widget separator.
-
void (*sameLineEx)(float posX, float spacingW)
Tell the widget to stay on the same line with parameters.
-
void (*newLine)()
Undo sameLine()
-
void (*spacing)()
Adds widget spacing.
-
void (*dummy)(Float2 size)
Adds a dummy element of a given size.
- Param size
The size of a dummy element.
-
void (*indent)()
Indents.
-
void (*indentEx)(float indentWidth)
Indents with width indent spacing.
-
void (*unindent)()
Undo indent.
-
void (*beginGroup)()
Lock horizontal starting position + capture group bounding box into one “item” (so you can use IsItemHovered() or layout primitives such as () on whole group, etc.)
-
void (*endGroup)()
End group.
-
Float2 (*getCursorScreenPos)()
Cursor position in absolute screen coordinates [0..io.DisplaySize] (useful to work with ImDrawList API)
-
void (*setCursorScreenPos)(const Float2 &pos)
Cursor position in absolute screen coordinates [0..io.DisplaySize].
-
void (*alignTextToFramePadding)()
Vertically align upcoming text baseline to FramePadding.y so that it will align properly to regularly framed items (call if you have text on a line before a framed item)
-
float (*getTextLineHeight)()
~ FontSize
-
float (*getTextLineHeightWithSpacing)()
~ FontSize + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of text)
-
float (*getFrameHeight)()
~ FontSize + style.FramePadding.y * 2
-
float (*getFrameHeightWithSpacing)()
~ FontSize + style.FramePadding.y * 2 + style.ItemSpacing.y (distance in pixels between 2 consecutive lines of framed widgets)
-
void (*pushIdString)(const char *id)
Push a string id for next widgets.
If you are creating widgets in a loop you most likely want to push a unique identifier (e.g. object pointer, loop index) so simplegui can differentiate them. popId() must be called later.
- Param id
The string id.
-
void (*pushIdStringBeginEnd)(const char *idBegin, const char *idEnd)
Push a string id for next widgets.
If you are creating widgets in a loop you most likely want to push a unique identifier (e.g. object pointer, loop index) so simplegui can differentiate them. popId() must be called later.
- Param id
The string id.
-
void (*pushIdInt)(int id)
Push an integer id for next widgets.
If you are creating widgets in a loop you most likely want to push a unique identifier (e.g. object pointer, loop index) so simplegui can differentiate them. popId() must be called later.
- Param id
The integer id.
-
void (*pushIdPtr)(const void *id)
Push pointer id for next widgets.
-
void (*popId)()
Pops an id.
-
uint32_t (*getIdString)(const char *id)
Calculate unique ID (hash of whole ID stack + given parameter).
e.g. if you want to query into ImGuiStorage yourself.
-
uint32_t (*getIdStringBeginEnd)(const char *idBegin, const char *idEnd)
Calculate unique ID (hash of whole ID stack + given parameter).
e.g. if you want to query into ImGuiStorage yourself.
-
void (*textUnformatted)(const char *text)
Shows a text widget, without text formatting.
Faster version, use for big texts.
- Param text
The null terminated text string.
-
void (*text)(const char *fmt, ...)
Shows a text widget.
- Param fmt
The formatted label for the text.
- Param …
The variable arguments for the label.
-
void (*textColored)(const Float4 &color, const char *fmt, ...)
Shows a colored text widget.
- Param fmt
The formatted label for the text.
- Param …
The variable arguments for the label.
-
void (*textDisabled)(const char *fmt, ...)
Shows a disabled text widget.
- Param fmt
The formatted label for the text.
- Param …
The variable arguments for the label.
-
void (*textWrapped)(const char *fmt, ...)
Shows a wrapped text widget.
- Param fmt
The formatted label for the text.
- Param …
The variable arguments for the label.
-
void (*labelText)(const char *label, const char *fmt, ...)
Display text+label aligned the same way as value+label widgets.
-
void (*bulletText)(const char *fmt, ...)
Shortcut for Bullet()+Text()
-
bool (*buttonEx)(const char *label, const Float2 &size)
Shows a button widget.
- Param label
The label for the button.
- Return
true if the button was pressed, false if not.
-
bool (*smallButton)(const char *label)
Shows a smallButton widget.
- Param label
The label for the button.
- Return
true if the button was pressed, false if not.
-
bool (*invisibleButton)(const char *id, const Float2 &size)
Button behavior without the visuals.
Useful to build custom behaviors using the public api (along with isItemActive, isItemHovered, etc.)
-
void (*image)(TextureId userTextureId, const Float2 &size, const Float2 &uv0, const Float2 &uv1, const Float4 &tintColor, const Float4 &borderColor)
Image with user texture id defaults: uv0 = Float2(0,0) uv1 = Float2(1,1) tintColor = Float4(1,1,1,1) borderColor = Float4(0,0,0,0)
-
bool (*imageButton)(TextureId userTextureId, const Float2 &size, const Float2 &uv0, const Float2 &uv1, int framePadding, const Float4 &bgColor, const Float4 &tintColor)
Image as a button.
<0 framePadding uses default frame padding settings. 0 for no padding defaults: uv0 = Float2(0,0) uv1 = Float2(1,1) framePadding = -1 bgColor = Float4(0,0,0,0) tintColor = Float4(1,1,1,1)
-
bool (*checkbox)(const char *label, bool *value)
Adds a checkbox widget.
- Param label
The checkbox label.
- Param value
The current value of the checkbox
- Return
true if the checkbox was pressed, false if not.
-
bool (*checkboxFlags)(const char *label, uint32_t *flags, uint32_t flagsValue)
Flags checkbox.
-
bool (*radioButton)(const char *label, bool active)
Radio button.
-
bool (*radioButtonEx)(const char *label, int *v, int vButton)
Radio button.
-
void (*progressBar)(float fraction, Float2 size, const char *overlay)
Adds a progress bar widget.
- Param fraction
The progress value (0-1).
- Param size
The widget size.
- Param overlay
The text overlay, if nullptr the default with percents is displayed.
-
void (*bullet)()
Draws a small circle.
-
bool (*beginCombo)(const char *label, const char *previewValue, ComboFlags flags)
The new beginCombo()/endCombo() api allows you to manage your contents and selection state however you want it.
The old Combo() api are helpers over beginCombo()/endCombo() which are kept available for convenience purpose.
-
void (*endCombo)()
only call endCombo() if beginCombo() returns true!
-
bool (*combo)(const char *label, int *currentItem, const char *const *items, int itemCount)
Adds a combo box widget.
- Param label
The label for the combo box.
- Param currentItem
The current (selected) element index.
- Param items
The array of items.
- Param itemCount
The number of items.
- Return
true if the selected item value has changed, false if not.
-
bool (*dragFloat)(const char *label, float *v, float vSpeed, float vMin, float vMax, const char *displayFormat, float power)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). If vMin >= vMax we have no bound. For all the Float2/Float3/Float4/Int2/Int3/Int4 versions of every functions, note that a ‘float v[X]’ function argument is the same as ‘float* v’, the array syntax is just a way to document the number of elements that are expected to be accessible. You can pass address of your first element out of a contiguous set, e.g. &myvector.x. Speed are per-pixel of mouse movement (vSpeed=0.2f: mouse needs to move by 5 pixels to increase value by 1). For gamepad/keyboard navigation, minimum speed is Max(vSpeed,
minimum_step_at_given_precision). Defaults: float vSpeed = 1.0f, float vMin = 0.0f, float vMax = 0.0f, const char* displayFormat = “%.3f”, float power = 1.0f)
-
bool (*dragFloat2)(const char *label, float v[2], float vSpeed, float vMin, float vMax, const char *displayFormat, float power)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds) Defaults: float vSpeed = 1.0f, float vMin = 0.0f, float vMax = 0.0f, const char* displayFormat = “%.3f”, float power = 1.0f)
-
bool (*dragFloat3)(const char *label, float v[3], float vSpeed, float vMin, float vMax, const char *displayFormat, float power)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds) Defaults: float vSpeed = 1.0f, float vMin = 0.0f, float vMax = 0.0f, const char* displayFormat = “%.3f”, float power = 1.0f)
-
bool (*dragFloat4)(const char *label, float v[4], float vSpeed, float vMin, float vMax, const char *displayFormat, float power)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds) Defaults: float vSpeed = 1.0f, float vMin = 0.0f, float vMax = 0.0f, const char* displayFormat = “%.3f”, float power = 1.0f)
-
bool (*dragFloatRange2)(const char *label, float *vCurrentMin, float *vCurrentMax, float vSpeed, float vMin, float vMax, const char *displayFormat, const char *displayFormatMax, float power)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: float vSpeed = 1.0f, float vMin = 0.0f, float vMax = 0.0f, const char* displayFormat = “%.3f”, const char* displayFormatMax = NULL, float power = 1.0f
-
bool (*dragInt)(const char *label, int *v, float vSpeed, int vMin, int vMax, const char *displayFormat)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). If vMin >= vMax we have no bound.. Defaults: float vSpeed = 1.0f, int vMin = 0, int vMax = 0, const char* displayFormat = “%.0f”
-
bool (*dragInt2)(const char *label, int v[2], float vSpeed, int vMin, int vMax, const char *displayFormat)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: float vSpeed = 1.0f, int vMin = 0, int vMax = 0, const char* displayFormat = “%.0f”
-
bool (*dragInt3)(const char *label, int v[3], float vSpeed, int vMin, int vMax, const char *displayFormat)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: float vSpeed = 1.0f, int vMin = 0, int vMax = 0, const char* displayFormat = “%.0f”
-
bool (*dragInt4)(const char *label, int v[4], float vSpeed, int vMin, int vMax, const char *displayFormat)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: float vSpeed = 1.0f, int vMin = 0, int vMax = 0, const char* displayFormat = “%.0f”
-
bool (*dragIntRange2)(const char *label, int *vCurrentMin, int *vCurrentMax, float vSpeed, int vMin, int vMax, const char *displayFormat, const char *displayFormatMax)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: float vSpeed = 1.0f, int vMin = 0, int vMax = 0, const char* displayFormat = “%.0f”, const char* displayFormatMax = NULL
-
bool (*dragScalar)(const char *label, DataType dataType, void *v, float vSpeed, const void *vMin, const void *vMax, const char *displayFormat, float power)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). If vMin >= vMax we have no bound.. Defaults: float vSpeed = 1.0f, int vMin = 0, int vMax = 0, const char* displayFormat = “%.0f”, power = 1.0f
-
bool (*dragScalarN)(const char *label, DataType dataType, void *v, int components, float vSpeed, const void *vMin, const void *vMax, const char *displayFormat, float power)
Widgets: Drags (tip: ctrl+click on a drag box to input with keyboard.
manually input values aren’t clamped, can go off-bounds). If vMin >= vMax we have no bound.. Defaults: float vSpeed = 1.0f, int vMin = 0, int vMax = 0, const char* displayFormat = “%.0f”, power = 1.0f
-
bool (*sliderFloat)(const char *label, float *v, float vMin, float vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Adjust displayFormat to decorate the value with a prefix or a suffix for in-slider labels or unit display. Use power!=1.0 for logarithmic sliders . Defaults: const char* displayFormat = “%.3f”, float power = 1.0f
-
bool (*sliderFloat2)(const char *label, float v[2], float vMin, float vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.3f”, float power = 1.0f
-
bool (*sliderFloat3)(const char *label, float v[3], float vMin, float vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.3f”, float power = 1.0f
-
bool (*sliderFloat4)(const char *label, float v[4], float vMin, float vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.3f”, float power = 1.0f
-
bool (*sliderAngle)(const char *label, float *vRad, float vDegreesMin, float vDegreesMax)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: float vDegreesMin = -360.0f, float vDegreesMax = +360.0f
-
bool (*sliderInt)(const char *label, int *v, int vMin, int vMax, const char *displayFormat)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”
-
bool (*sliderInt2)(const char *label, int v[2], int vMin, int vMax, const char *displayFormat)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”
-
bool (*sliderInt3)(const char *label, int v[3], int vMin, int vMax, const char *displayFormat)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”
-
bool (*sliderInt4)(const char *label, int v[4], int vMin, int vMax, const char *displayFormat)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”
-
bool (*sliderScalar)(const char *label, DataType dataType, void *v, const void *vMin, const void *vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”, power = 1.0f
-
bool (*sliderScalarN)(const char *label, DataType dataType, void *v, int components, const void *vMin, const void *vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”, power = 1.0f
-
bool (*vSliderFloat)(const char *label, const Float2 &size, float *v, float vMin, float vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.3f”, float power = 1.0f
-
bool (*vSliderInt)(const char *label, const Float2 &size, int *v, int vMin, int vMax, const char *displayFormat)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”
-
bool (*vSliderScalar)(const char *label, const Float2 &size, DataType dataType, void *v, const void *vMin, const void *vMax, const char *displayFormat, float power)
Widgets: Sliders (tip: ctrl+click on a slider to input with keyboard.
manually input values aren’t clamped, can go off-bounds). Defaults: const char* displayFormat = “%.0f”, power = 1.0f
-
bool (*inputText)(const char *label, char *buf, size_t bufSize, InputTextFlags flags, TextEditCallback callback, void *userData)
Widgets: Input with Keyboard.
-
bool (*inputTextMultiline)(const char *label, char *buf, size_t bufSize, const Float2 &size, InputTextFlags flags, TextEditCallback callback, void *userData)
Widgets: Input with Keyboard.
-
bool (*inputFloat)(const char *label, float *v, float step, float stepFast, int decimalPrecision, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: float step = 0.0f, float stepFast = 0.0f, int decimalPrecision = -1, InputTextFlags extraFlags = 0
-
bool (*inputFloat2)(const char *label, float v[2], int decimalPrecision, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: int decimalPrecision = -1, InputTextFlags extraFlags = 0
-
bool (*inputFloat3)(const char *label, float v[3], int decimalPrecision, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: int decimalPrecision = -1, InputTextFlags extraFlags = 0
-
bool (*inputFloat4)(const char *label, float v[4], int decimalPrecision, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: int decimalPrecision = -1, InputTextFlags extraFlags = 0
-
bool (*inputInt)(const char *label, int *v, int step, int stepFast, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: int step = 1, int stepFast = 100, InputTextFlags extraFlags = 0
-
bool (*inputInt2)(const char *label, int v[2], InputTextFlags extraFlags)
Widgets: Input with Keyboard.
-
bool (*inputInt3)(const char *label, int v[3], InputTextFlags extraFlags)
Widgets: Input with Keyboard.
-
bool (*inputInt4)(const char *label, int v[4], InputTextFlags extraFlags)
Widgets: Input with Keyboard.
-
bool (*inputDouble)(const char *label, double *v, double step, double stepFast, const char *displayFormat, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: double step = 0.0f, double stepFast = 0.0f, const char* displayFormat = “%.6f”, InputTextFlags extraFlags = 0
-
bool (*inputScalar)(const char *label, DataType dataType, void *v, const void *step, const void *stepFast, const char *displayFormat, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: double step = 0.0f, double stepFast = 0.0f, const char* displayFormat = “%.6f”, InputTextFlags extraFlags = 0
-
bool (*inputScalarN)(const char *label, DataType dataType, void *v, int components, const void *step, const void *stepFast, const char *displayFormat, InputTextFlags extraFlags)
Widgets: Input with Keyboard.
Defaults: double step = 0.0f, double stepFast = 0.0f, const char* displayFormat = “%.6f”, InputTextFlags extraFlags = 0
-
bool (*colorEdit3)(const char *label, float col[3], ColorEditFlags flags)
Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
-
bool (*colorEdit4)(const char *label, float col[4], ColorEditFlags flags)
Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
-
bool (*colorPicker3)(const char *label, float col[3], ColorEditFlags flags)
Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
-
bool (*colorPicker4)(const char *label, float col[4], ColorEditFlags flags, const float *refCol)
Widgets: Color Editor/Picker (tip: the ColorEdit* functions have a little colored preview square that can be left-clicked to open a picker, and right-clicked to open an option menu.)
-
bool (*colorButton)(const char *descId, const Float4 &col, ColorEditFlags flags, Float2 size)
display a colored square/button, hover for details, return true when pressed.
-
void (*setColorEditOptions)(ColorEditFlags flags)
initialize current options (generally on application startup) if you want to select a default format, picker type, etc.
User will be able to change many settings, unless you pass the _NoOptions flag to your calls.
-
bool (*treeNode)(const char *label)
Tree node.
if returning ‘true’ the node is open and the tree id is pushed into the id stack. user is responsible for calling TreePop().
-
bool (*treeNodeString)(const char *strId, const char *fmt, ...)
Tree node with string id.
read the FAQ about why and how to use ID. to align arbitrary text at the same level as a TreeNode() you can use Bullet().
-
bool (*treeNodePtr)(const void *ptrId, const char *fmt, ...)
Tree node with ptr id.
-
bool (*treeNodeEx)(const char *label, TreeNodeFlags flags)
Tree node with flags.
-
bool (*treeNodeStringEx)(const char *strId, TreeNodeFlags flags, const char *fmt, ...)
Tree node with flags and string id.
-
bool (*treeNodePtrEx)(const void *ptrId, TreeNodeFlags flags, const char *fmt, ...)
Tree node with flags and ptr id.
-
void (*treePushString)(const char *strId)
~ Indent()+PushId().
Already called by TreeNode() when returning true, but you can call Push/Pop yourself for layout purpose
-
void (*treePop)()
~ Unindent()+PopId()
-
void (*treeAdvanceToLabelPos)()
Advance cursor x position by GetTreeNodeToLabelSpacing()
-
float (*getTreeNodeToLabelSpacing)()
Horizontal distance preceding label when using TreeNode*() or Bullet() == (g.FontSize + style.FramePadding.x*2) for a regular unframed TreeNode.
-
void (*setNextTreeNodeOpen)(bool isOpen, Condition cond)
Set next TreeNode/CollapsingHeader open state.
-
bool (*collapsingHeader)(const char *label, TreeNodeFlags flags)
If returning ‘true’ the header is open.
doesn’t indent nor push on ID stack. user doesn’t have to call TreePop().
-
bool (*collapsingHeaderEx)(const char *label, bool *open, TreeNodeFlags flags)
When ‘open’ isn’t NULL, display an additional small close button on upper right of the header.
-
bool (*selectable)(const char *label, bool selected, SelectableFlags flags, const Float2 &size)
Selectable.
“bool selected” carry the selection state (read-only). Selectable() is clicked is returns true so you can modify your selection state. size.x==0.0: use remaining width, size.x>0.0: specify width. size.y==0.0: use label height, size.y>0.0: specify height.
-
bool (*selectableEx)(const char *label, bool *selected, SelectableFlags flags, const Float2 &size)
Selectable.
“bool* selected” point to the selection state (read-write), as a convenient helper.
-
bool (*listBox)(const char *label, int *currentItem, const char *const items[], int itemCount, int heightInItems)
ListBox.
-
bool (*listBoxEx)(const char *label, int *currentItem, bool (*itemsGetterFn)(void *data, int idx, const char **out_text), void *data, int itemCount, int heightInItems)
ListBox.
-
bool (*listBoxHeader)(const char *label, const Float2 &size)
ListBox Header.
use if you want to reimplement ListBox() will custom data or interactions. make sure to call ListBoxFooter() afterwards.
-
bool (*listBoxHeaderEx)(const char *label, int itemCount, int heightInItems)
ListBox Header.
Terminate the scrolling region.
-
void (*plotLines)(const char *label, const float *values, int valuesCount, int valuesOffset, const char *overlayText, float scaleMin, float scaleMax, Float2 graphSize, int stride)
Plot defaults: valuesOffset = 0 overlayText = nullptr scaleMin = FLT_MAX scaleMax = FLT_MAX graphSize = Float2(0,0) stride = sizeof(float)
-
void (*plotLinesEx)(const char *label, float (*valuesGetterFn)(void *data, int idx), void *data, int valuesCount, int valuesOffset, const char *overlayText, float scaleMin, float scaleMax, Float2 graphSize)
Plot defaults: valuesOffset = 0 overlayText = nullptr scaleMin = FLT_MAX scaleMax = FLT_MAX graphSize = Float2(0,0)
-
void (*plotHistogram)(const char *label, const float *values, int valuesCount, int valuesOffset, const char *overlayText, float scaleMin, float scaleMax, Float2 graphSize, int stride)
Histogram defaults: valuesOffset = 0 overlayText = nullptr scaleMin = FLT_MAX scaleMax = FLT_MAX graphSize = Float2(0,0) stride = sizeof(float)
-
void (*plotHistogramEx)(const char *label, float (*valuesGetterFn)(void *data, int idx), void *data, int valuesCount, int valuesOffset, const char *overlayText, float scaleMin, float scaleMax, Float2 graphSize)
Histogram defaults: valuesOffset = 0 overlayText = nullptr scaleMin = FLT_MAX scaleMax = FLT_MAX graphSize = Float2(0,0)
-
void (*valueBool)(const char *prefix, bool b)
Widgets: Value() Helpers.
Output single value in “name: value” format.
-
void (*valueInt)(const char *prefix, int v)
Widgets: Value() Helpers.
Output single value in “name: value” format.
-
void (*valueUInt32)(const char *prefix, uint32_t v)
Widgets: Value() Helpers.
Output single value in “name: value” format.
-
void (*valueFloat)(const char *prefix, float v, const char *floatFormat)
Widgets: Value() Helpers.
Output single value in “name: value” format.
-
bool (*beginMainMenuBar)()
Create and append to a full screen menu-bar.
-
void (*endMainMenuBar)()
Only call EndMainMenuBar() if BeginMainMenuBar() returns true!
-
bool (*beginMenuBar)()
Append to menu-bar of current window (requires WindowFlags_MenuBar flag set on parent window).
-
void (*endMenuBar)()
Only call EndMenuBar() if BeginMenuBar() returns true!
-
bool (*beginMenu)(const char *label, bool enabled)
Create a sub-menu entry.
only call EndMenu() if this returns true!
-
void (*endMenu)()
Only call EndMenu() if BeginMenu() returns true!
Return true when activated.
shortcuts are displayed for convenience but not processed by simplegui at the moment
Return true when activated + toggle (*pSelected) if pSelected != NULL.
-
void (*setTooltip)(const char *fmt, ...)
Set text tooltip under mouse-cursor, typically use with ISimpleGui::IsItemHovered().
Overrides any previous call to SetTooltip().
-
void (*beginTooltip)()
Begin/append a tooltip window.
to create full-featured tooltip (with any kind of contents).
-
void (*endTooltip)()
End tooltip.
-
void (*openPopup)(const char *strId)
Call to mark popup as open (don’t call every frame!).
popups are closed when user click outside, or if CloseCurrentPopup() is called within a BeginPopup()/EndPopup() block. By default, Selectable()/MenuItem() are calling CloseCurrentPopup(). Popup identifiers are relative to the current ID-stack (so OpenPopup and BeginPopup needs to be at the same level).
-
bool (*beginPopup)(const char *strId, WindowFlags flags)
Return true if the popup is open, and you can start outputting to it.
only call EndPopup() if BeginPopup() returns true!
-
bool (*beginPopupContextItem)(const char *strId, int mouseButton)
Helper to open and begin popup when clicked on last item.
if you can pass a NULL strId only if the previous item had an id. If you want to use that on a non-interactive item such as Text() you need to pass in an explicit ID here. read comments in .cpp!
-
bool (*beginPopupContextWindow)(const char *strId, int mouseButton, bool alsoOverItems)
Helper to open and begin popup when clicked on current window.
-
bool (*beginPopupContextVoid)(const char *strId, int mouseButton)
Helper to open and begin popup when clicked in void (where there are no simplegui windows).
-
bool (*beginPopupModal)(const char *name, bool *open, WindowFlags flags)
Modal dialog (regular window with title bar, block interactions behind the modal window, can’t close the modal window by clicking outside)
-
void (*endPopup)()
Only call EndPopup() if BeginPopupXXX() returns true!
-
bool (*openPopupOnItemClick)(const char *strId, int mouseButton)
Helper to open popup when clicked on last item.
return true when just opened.
-
bool (*isPopupOpen)(const char *strId)
Return true if the popup is open.
-
void (*closeCurrentPopup)()
Close the popup we have begin-ed into.
clicking on a MenuItem or Selectable automatically close the current popup.
-
void (*columns)(int count, const char *id, bool border)
Columns.
You can also use SameLine(pos_x) for simplified columns. The columns API is still work-in-progress and rather lacking.
-
void (*nextColumn)()
Next column, defaults to current row or next row if the current row is finished.
-
int (*getColumnIndex)()
Get current column index.
-
float (*getColumnWidth)(int columnIndex)
Get column width (in pixels).
pass -1 to use current column
-
void (*setColumnWidth)(int columnIndex, float width)
Set column width (in pixels).
pass -1 to use current column
-
float (*getColumnOffset)(int columnIndex)
Get position of column line (in pixels, from the left side of the contents region).
pass -1 to use current column, otherwise 0..GetColumnsCount() inclusive. column 0 is typically 0.0f
-
void (*setColumnOffset)(int columnIndex, float offsetX)
Set position of column line (in pixels, from the left side of the contents region).
pass -1 to use current column
-
int (*getColumnsCount)()
Columns count.
-
bool (*beginTabBar)(const char *strId, TabBarFlags flags)
Create and append into a TabBar.
defaults: flags = 0
-
void (*endTabBar)()
End TabBar.
-
bool (*beginTabItem)(const char *label, bool *open, TabItemFlags flags)
Create a Tab.
Returns true if the Tab is selected. defaults: open = nullptr flags = 0
-
void (*endTabItem)()
Only call endTabItem() if beginTabItem() returns true!
-
void (*setTabItemClosed)(const char *tabOrDockedWindowLabel)
Notify TabBar or Docking system of a closed tab/window ahead (useful to reduce visual flicker on reorderable tab bars).
For tab-bar: call after beginTabBar() and before Tab submissions. Otherwise call with a window name.
-
void (*dockSpace)(uint32_t id, const Float2 &size, DockNodeFlags flags, const WindowClass *windowClass)
defaults: size = Float2(0, 0), flags = 0, windowClass = nullptr
-
uint32_t (*dockSpaceOverViewport)(Viewport *viewport, DockNodeFlags dockspaceFlags, const WindowClass *windowClass)
defaults: viewport = nullptr, dockspaceFlags = 0, windowClass = nullptr
-
void (*setNextWindowClass)(const WindowClass *windowClass)
Set next window user type (docking filters by same user_type).
-
uint32_t (*getWindowDockId)()
Get window dock Id.
-
bool (*isWindowDocked)()
Return is window Docked.
-
bool (*beginDragDropSource)(DragDropFlags flags)
Call when the current item is active.
If this return true, you can call setDragDropPayload() + endDragDropSource()
-
bool (*setDragDropPayload)(const char *type, const void *data, size_t size, Condition cond)
Type is a user defined string of maximum 32 characters.
Strings starting with ‘_’ are reserved for simplegui internal types. Data is copied and held by simplegui. Defaults: cond = 0
-
void (*endDragDropSource)()
Only call endDragDropSource() if beginDragDropSource() returns true!
-
bool (*beginDragDropTarget)()
Call after submitting an item that may receive a payload.
If this returns true, you can call acceptDragDropPayload() + endDragDropTarget()
-
const Payload *(*acceptDragDropPayload)(const char *type, DragDropFlags flags)
Accept contents of a given type.
If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released.
-
void (*endDragDropTarget)()
Only call endDragDropTarget() if beginDragDropTarget() returns true!
-
const Payload *(*getDragDropPayload)()
Peek directly into the current payload from anywhere.
may return NULL. use ImGuiPayload::IsDataType() to test for the payload type.
-
void (*pushClipRect)(const Float2 &clipRectMin, const Float2 &clipRectMax, bool intersectWithCurrentClipRect)
Clipping.
-
void (*popClipRect)()
Clipping.
-
void (*setItemDefaultFocus)()
Make last item the default focused item of a window.
Please use instead of “if (IsWindowAppearing())
SetScrollHere()” to signify “default item”.
-
void (*setKeyboardFocusHere)(int offset)
Focus keyboard on the next widget.
Use positive ‘offset’ to access sub components of a multiple component widget. Use -1 to access previous widget.
-
void (*clearActiveId)()
Clears the active element id in the internal state.
-
bool (*isItemHovered)(HoveredFlags flags)
Is the last item hovered? (and usable, aka not blocked by a popup, etc.).
See HoveredFlags for more options.
-
bool (*isItemActive)()
Is the last item active? (e.g.
button being held, text field being edited- items that don’t interact will always return false)
-
bool (*isItemFocused)()
Is the last item focused for keyboard/gamepad navigation?
-
bool (*isItemClicked)(int mouseButton)
Is the last item clicked? (e.g.
button/node just clicked on)
-
bool (*isItemVisible)()
Is the last item visible? (aka not out of sight due to clipping/scrolling.)
-
bool (*isItemEdited)()
Is the last item visible? (items may be out of sight because of clipping/scrolling)
-
bool (*isItemDeactivated)()
Was the last item just made inactive (item was previously active).
Useful for Undo/Redo patterns with widgets that requires continuous editing.
-
bool (*isItemDeactivatedAfterEdit)()
Was the last item just made inactive and made a value change when it was active? (e.g.
Slider/Drag moved).
Useful for Undo/Redo patterns with widgets that requires continuous editing. Note that you may get false positives (some widgets such as Combo()/ListBox()/Selectable() will return true even when clicking an already selected item).
-
bool (*isItemIdActive)(uint32_t id)
Is specific item active?
-
void (*setItemAllowOverlap)()
Allow last item to be overlapped by a subsequent item.
sometimes useful with invisible buttons, selectables, etc. to catch unused area.
-
bool (*isRectVisible)(const Float2 &size)
Test if rectangle (of given size, starting from cursor position) is visible / not clipped.
-
bool (*isRectVisibleEx)(const Float2 &rectMin, const Float2 &rectMax)
Test if rectangle (in screen space) is visible / not clipped.
to perform coarse clipping on user’s side.
-
float (*getTime)()
Time.
-
int (*getFrameCount)()
Frame Count.
-
DrawList *(*getOverlayDrawList)()
This draw list will be the last rendered one, useful to quickly draw overlays shapes/text.
-
void (*calcListClipping)(int itemCount, float itemsHeight, int *outItemsDisplayStart, int *outItemsDisplayEnd)
Calculate coarse clipping for large list of evenly sized items.
Prefer using the ImGuiListClipper higher-level helper if you can.
-
bool (*beginChildFrame)(uint32_t id, const Float2 &size, WindowFlags flags)
Helper to create a child window / scrolling region that looks like a normal widget frame.
-
void (*endChildFrame)()
Always call EndChildFrame() regardless of BeginChildFrame() return values (which indicates a collapsed/clipped window)
-
int (*getKeyIndex)(int imguiKey)
Map ImGuiKey_* values into user’s key index.
== io.KeyMap[key]
-
bool (*isKeyDown)(int userKeyIndex)
Is key being held.
== io.KeysDown[userKeyIndex]. note that simplegui doesn’t know the semantic of each entry of io.KeyDown[]. Use your own indices/enums according to how your backend/engine stored them into KeyDown[]!
-
bool (*isKeyPressed)(int userKeyIndex, bool repeat)
Was key pressed (went from !Down to Down).
if repeat=true, uses io.KeyRepeatDelay / KeyRepeatRate
-
bool (*isKeyReleased)(int userKeyIndex)
Was key released (went from Down to !Down).
-
int (*getKeyPressedAmount)(int keyIndex, float repeatDelay, float rate)
Uses provided repeat rate/delay.
return a count, most often 0 or 1 but might be >1 if RepeatRate is small enough that DeltaTime > RepeatRate
-
KeyModifiers (*getKeyModifiers)()
Gets the key modifiers for each frame.
Shortcut to bitwise modifier from ImGui::GetIO().KeyCtrl + .KeyShift + .KeyAlt + .KeySuper
- Return
The key modifiers for each frame.
-
bool (*isMouseDown)(int button)
Is mouse button held.
-
bool (*isAnyMouseDown)()
Is any mouse button held.
-
bool (*isMouseClicked)(int button, bool repeat)
Did mouse button clicked (went from !Down to Down)
-
bool (*isMouseDoubleClicked)(int button)
Did mouse button double-clicked.
a double-click returns false in IsMouseClicked(). uses io.MouseDoubleClickTime.
-
bool (*isMouseReleased)(int button)
Did mouse button released (went from Down to !Down)
-
bool (*isMouseDragging)(int button, float lockThreshold)
Is mouse dragging.
if lockThreshold < -1.0f uses io.MouseDraggingThreshold
-
bool (*isMouseHoveringRect)(const Float2 &rMin, const Float2 &rMax, bool clip)
Is mouse hovering given bounding rect (in screen space).
clipped by current clipping settings. disregarding of consideration of focus/window ordering/blocked by a popup.
-
Float2 (*getMousePos)()
Shortcut to ImGui::GetIO().MousePos provided by user, to be consistent with other calls.
-
Float2 (*getMousePosOnOpeningCurrentPopup)()
Retrieve backup of mouse position at the time of opening popup we have BeginPopup() into.
-
Float2 (*getMouseDragDelta)(int button, float lockThreshold)
Dragging amount since clicking.
if lockThreshold < -1.0f uses io.MouseDraggingThreshold
-
carb::Float2 (*getMouseWheel)()
Gets the mouse wheel delta for each frame.
Shortcut to ImGui::GetIO().MouseWheel + .MouseWheelH.
- Return
The mouse wheel delta for each frame.
-
MouseCursor (*getMouseCursor)()
Get desired cursor type, reset in ISimpleGui::newFrame(), this is updated during the frame.
valid before Render(). If you use software rendering by setting io.MouseDrawCursor simplegui will render those for you
-
void (*setMouseCursor)(MouseCursor type)
Set desired cursor type.
-
void (*captureKeyboardFromApp)(bool capture)
Manually override io.WantCaptureKeyboard flag next frame (said flag is entirely left for your application to handle).
e.g. force capture keyboard when your widget is being hovered.
-
void (*captureMouseFromApp)(bool capture)
Manually override io.WantCaptureMouse flag next frame (said flag is entirely left for your application to handle).
-
const char *(*getClipboardText)()
Used to capture text data to the clipboard.
- Return
The text captures from the clipboard
-
void (*setClipboardText)(const char *text)
Used to apply text into the clipboard.
- Param text
The text to be set into the clipboard.
-
bool (*getWantSaveIniSettings)()
Shortcut to ImGui::GetIO().WantSaveIniSettings provided by user, to be consistent with other calls.
-
void (*setWantSaveIniSettings)(bool wantSaveIniSettings)
Shortcut to ImGui::GetIO().WantSaveIniSettings provided by user, to be consistent with other calls.
-
void (*loadIniSettingsFromMemory)(const char *iniData, size_t iniSize)
Manually load the previously saved setting from memory loaded from an .ini settings file.
- Param iniData
The init data to be loaded.
- Param initSize
The size of the ini data to be loaded.
-
const char *(*saveIniSettingsToMemory)(size_t *iniSize)
Manually save settings to a ini memory as a string.
- Param iniSize[out]
The ini size of memory to be saved.
- Return
The memory
-
Viewport *(*getMainViewport)()
Main viewport.
Same as GetPlatformIO().MainViewport == GetPlatformIO().Viewports[0]
-
void (*dockBuilderDockWindow)(const char *windowName, uint32_t nodeId)
Associates a windowName to a dock node id.
- Param windowName
The name of the window.
- Param nodeId
The dock node id.
-
DockNode *(*dockBuilderGetNode)(uint32_t nodeId)
DO NOT HOLD ON ImGuiDockNode* pointer, will be invalided by any split/merge/remove operation.
-
void (*dockBuilderAddNode)(uint32_t nodeId, DockNodeFlags flags)
Defaults: flags = 0.
-
void (*dockBuilderRemoveNode)(uint32_t nodeId)
Remove node and all its child, undock all windows.
-
void (*dockBuilderRemoveNodeDockedWindows)(uint32_t nodeId, bool clearPersistentDockingReferences)
Defaults: clearPersistentDockingReferences = true.
-
void (*dockBuilderRemoveNodeChildNodes)(uint32_t nodeId)
Remove all split/hierarchy.
All remaining docked windows will be re-docked to the root.
-
uint32_t (*dockBuilderSplitNode)(uint32_t nodeId, Direction splitDir, float sizeRatioForNodeAtDir, uint32_t *outIdDir, uint32_t *outIdOther)
Dock building split node.
-
void (*dockBuilderFinish)(uint32_t nodeId)
Dock building finished.
-
Font *(*addFont)(const FontConfig *fontConfig)
Adds a font from a given font config.
- Param fontConfig
The font config struct.
- Return
A valid font, or
nullptr
if an error occurred.
-
Font *(*addFontDefault)(const FontConfig *fontConfig)
Adds a default font from a given font config.
- Param fontConfig
The font config struct.
- Return
A valid font, or
nullptr
if an error occurred.
-
Font *(*addFontFromFileTTF)(const char *filename, float sizePixels, const FontConfig *fontCfg, const Wchar *glyphRanges)
Adds a TTF font from a file.
- Param filename
The path to the file.
- Param sizePixels
The size of the font in pixels.
- Param fontCfg
(Optional) The font config struct.
- Param glyphRanges
(Optional) The range of glyphs.
- Return
A valid font, or
nullptr
if an error occurred.
-
Font *(*addFontFromMemoryTTF)(void *fontData, int fontSize, float sizePixels, const FontConfig *fontCfg, const Wchar *glyphRanges)
Adds a TTF font from a memory region.
- Param fontData
The font data in memory.
- Param fontSize
The number of bytes of the font data in memory.
- Param sizePixels
The size of the font in pixels.
- Param fontCfg
(Optional) The font config struct.
- Param glyphRanges
(Optional) The range of glyphs.
- Return
A valid font, or
nullptr
if an error occurred.
-
Font *(*addFontFromMemoryCompressedTTF)(const void *compressedFontData, int compressedFontSize, float sizePixels, const FontConfig *fontCfg, const Wchar *glyphRanges)
Adds a compressed TTF font from a memory region.
- Param compressedFontData
The font data in memory.
- Param compressedFontSize
The number of bytes of the font data in memory.
- Param sizePixels
The size of the font in pixels.
- Param fontCfg
(Optional) The font config struct.
- Param glyphRanges
(Optional) The range of glyphs.
- Return
A valid font, or
nullptr
if an error occurred.
-
Font *(*addFontFromMemoryCompressedBase85TTF)(const char *compressedFontDataBase85, float sizePixels, const FontConfig *fontCfg, const Wchar *glyphRanges)
Adds a compressed base-85 TTF font from a memory region.
- Param compressedFontDataBase85
The font data in memory.
- Param sizePixels
The size of the font in pixels.
- Param fontCfg
(Optional) The font config struct.
- Param glyphRanges
(Optional) The range of glyphs.
- Return
A valid font, or
nullptr
if an error occurred.
-
int (*addFontCustomRectGlyph)(Font *font, Wchar id, int width, int height, float advanceX, const carb::Float2 &offset)
Add a custom rect glyph that can be built into the font atlas.
Call buildFont after.
- Param font
The font to add to.
- Param id
The Unicode point to add for.
- Param width
The width of the glyph.
- Param height
The height of the glyph
- Param advanceX
The advance x for the glyph.
- Param offset
The glyph offset.
- Return
The glyph index.
-
const FontCustomRect *(*getFontCustomRectByIndex)(int index)
Gets the font custom rect by glyph index.
- Param index
The glyph index to get the custom rect information for.
- Return
The font glyph custom rect information.
-
bool (*buildFont)()
Builds the font atlas.
- Return
true if the font atlas was built successfully.
-
bool (*isFontBuilt)()
Determines if changes have been made to font atlas.
- Return
true if the font atlas is built.
-
void (*getFontTexDataAsAlpha8)(unsigned char **outPixels, int *outWidth, int *outHeight)
Gets the font texture data.
- Param outPixel
The pixel texture data in A8 format.
- Param outWidth
The texture width.
- Param outPixel
The texture height.
-
void (*clearFontInputData)()
Clear input data (all ImFontConfig structures including sizes, TTF data, glyph ranges, etc.) = all the data used to build the texture and fonts.
-
void (*clearFontTexData)()
Clear output texture data (CPU side).
Saves RAM once the texture has been copied to graphics memory.
-
void (*clearFonts)()
Clear output font data (glyphs storage, UV coordinates).
-
void (*clearFontInputOutput)()
Clear all input and output.
-
const Wchar *(*getFontGlyphRangesJapanese)()
Default + Hiragana, Katakana, Half-Width, Selection of 1946 Ideographs.
-
const Wchar *(*getFontGlyphRangesChineseFull)()
Default + Half-Width + Japanese Hiragana/Katakana + full set of about 21000 CJK Unified Ideographs.
-
const Wchar *(*getGlyphRangesChineseSimplifiedCommon)()
Default + Half-Width + Japanese Hiragana/Katakana + set of 2500 CJK Unified Ideographs for common simplified Chinese.
-
void (*setFontGlobalScale)(float scale)
set Global Font Scale
-
void (*addWindowDrawCallback)(DrawCallback callback, void *userData)
Shortcut for getWindowDrawList() + DrawList::AddCallback()
-
void (*addLine)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, uint32_t col, float thickness)
Adds a line to the draw list.
-
void (*addRect)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, uint32_t col, float rounding, DrawCornerFlags roundingCornersFlags, float thickness)
Adds a rect to the draw list.
- Param a
Upper-left.
- Param b
Lower-right.
- Param col
color.
- Param rounding
Default = 0.f;
- Param roundingCornersFlags
4-bits corresponding to which corner to round. Default = kDrawCornerFlagAll
- Param thickness
Default = 1.0f
-
void (*addRectFilled)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, uint32_t col, float rounding, DrawCornerFlags roundingCornersFlags)
Adds a filled rect to the draw list.
- Param a
Upper-left.
- Param b
Lower-right.
- Param col
color.
- Param rounding
Default = 0.f;
- Param roundingCornersFlags
4-bits corresponding to which corner to round. Default = kDrawCornerFlagAll
-
void (*addRectFilledMultiColor)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, uint32_t colUprLeft, uint32_t colUprRight, uint32_t colBotRight, uint32_t colBotLeft)
Adds a filled multi-color rect to the draw list.
-
void (*addQuad)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, const carb::Float2 &c, const carb::Float2 &d, uint32_t col, float thickness)
Adds a quad to the draw list.
Default: thickness = 1.0f.
-
void (*addQuadFilled)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, const carb::Float2 &c, const carb::Float2 &d, uint32_t col)
Adds a filled quad to the draw list.
-
void (*addTriangle)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, const carb::Float2 &c, uint32_t col, float thickness)
Adds a triangle to the draw list.
Defaults: thickness = 1.0f.
-
void (*addTriangleFilled)(DrawList *drawList, const carb::Float2 &a, const carb::Float2 &b, const carb::Float2 &c, uint32_t col)
Adds a filled triangle to the draw list.
-
void (*addCircle)(DrawList *drawList, const carb::Float2 ¢re, float radius, uint32_t col, int32_t numSegments, float thickness)
Adds a circle to the draw list.
Defaults: numSegments = 12, thickness = 1.0f.
-
void (*addCircleFilled)(DrawList *drawList, const carb::Float2 ¢re, float radius, uint32_t col, int32_t numSegments)
Adds a filled circle to the draw list.
Defaults: numSegments = 12, thickness = 1.0f.
-
void (*addText)(DrawList *drawList, const carb::Float2 &pos, uint32_t col, const char *textBegin, const char *textEnd)
Adds text to the draw list.
-
void (*addTextEx)(DrawList *drawList, const Font *font, float fontSize, const carb::Float2 &pos, uint32_t col, const char *textBegin, const char *textEnd, float wrapWidth, const carb::Float4 *cpuFineClipRect)
Adds text to the draw list.
Defaults: textEnd = nullptr, wrapWidth = 0.f, cpuFineClipRect = nullptr.
-
void (*addImage)(DrawList *drawList, TextureId textureId, const carb::Float2 &a, const carb::Float2 &b, const carb::Float2 &uvA, const carb::Float2 &uvB, uint32_t col)
Adds an image to the draw list.
-
void (*addImageQuad)(DrawList *drawList, TextureId textureId, const carb::Float2 &a, const carb::Float2 &b, const carb::Float2 &c, const carb::Float2 &d, const carb::Float2 &uvA, const carb::Float2 &uvB, const carb::Float2 &uvC, const carb::Float2 &uvD, uint32_t col)
Adds an image quad to the draw list.
defaults: uvA = (0, 0), uvB = (1, 0), uvC = (1, 1), uvD = (0, 1), col = 0xFFFFFFFF.
-
void (*addImageRounded)(DrawList *drawList, TextureId textureId, const carb::Float2 &a, const carb::Float2 &b, const carb::Float2 &uvA, const carb::Float2 &uvB, uint32_t col, float rounding, DrawCornerFlags roundingCorners)
Adds an rounded image to the draw list.
defaults: roundingCorners = kDrawCornerFlagAll
-
void (*addPolyline)(DrawList *drawList, const carb::Float2 *points, const int32_t numPoints, uint32_t col, bool closed, float thickness)
Adds a polygon line to the draw list.
-
void (*addConvexPolyFilled)(DrawList *drawList, const carb::Float2 *points, const int32_t numPoints, uint32_t col)
Adds a filled convex polygon to draw list.
Note: Anti-aliased filling requires points to be in clockwise order.
-
void (*addBezierCurve)(DrawList *drawList, const carb::Float2 &pos0, const carb::Float2 &cp0, const carb::Float2 &cp1, const carb::Float2 &pos1, uint32_t col, float thickness, int32_t numSegments)
Adds a Bezier curve to draw list.
defaults: numSegments = 0.
-
ListClipper *(*createListClipper)(int32_t itemsCount, float itemsHeight)
Creates a ListClipper to clip large list of items.
- Param itemsCount
Number of items to clip. Use INT_MAX if you don’t know how many items you have (in which case the cursor won’t be advanced in the final step)
- Param float
itemsHeight Use -1.0f to be calculated automatically on first step. Otherwise pass in the distance between your items, typically getTextLineHeightWithSpacing() or getFrameHeightWithSpacing().
- Return
returns the created ListClipper instance.
-
bool (*stepListClipper)(ListClipper *listClipper)
Call until it returns false.
The displayStart/displayEnd fields will be set and you can process/draw those items.
- Param listClipper
The listClipper instance to advance.
-
void (*destroyListClipper)(ListClipper *listClipper)
Destroys a listClipper instance.
- Param listClipper
The listClipper instance to destroy.
-
bool (*feedKeyboardEvent)(Context *ctx, const input::KeyboardEvent &event)
Feed the keyboard event into the simplegui.
- Param ctx
The context to be fed input event to.
- Param event
Keyboard event description.
-
bool (*feedMouseEvent)(Context *ctx, const input::MouseEvent &event)
Feed the mouse event into the simplegui.
- Param ctx
The context to be fed input event to.
- Param event
Mouse event description.
-
void (*enumerateFonts)(FontEnumFn func, void *user)
Walks all of the currently loaded fonts and calls a callback for each.
- Param func
The function to call for each loaded font.
- Param user
The user data to pass to
func
.
-
const char *(*getFontName)(const Font *font)
Returns the name of a loaded font.
- Param font
The font to retrieve the name of.
- Return
The font name, or “<unknown>” if not known.
-
Font *(*getDefaultFont)()
Returns the default font for the current context.
- Return
The default font for the current context.
-
Font *(*setDefaultFont)(Font *font)
Sets the default font for the current context.
- Param font
The font to use as the default.
- Return
The previous default font.
Public Static Functions
-
static inline constexpr carb::InterfaceDesc getInterfaceDesc() noexcept
Returns information about this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns
The carb::InterfaceDesc struct with information about this interface.
-
static inline constexpr carb::InterfaceDesc getLatestInterfaceDesc() noexcept
Returns information about the latest version of this interface.
Auto-generated by CARB_PLUGIN_INTERFACE() or CARB_PLUGIN_INTERFACE_EX.
- Returns
The carb::InterfaceDesc struct with information about the latest version of this interface.
-
inline void sameLine()