Skip to content

imgui

windowpos() function

Return the position of the current ImGui window as an ImVec2.

Returns: A 2-element array [x, y] representing the top-left corner of the current window in screen coordinates.

plot2pixels(coords) function

Convert a point from plot coordinates to pixel coordinates in the current ImPlot.

coords: A 2-element array [x, y] in plot coordinates.

Returns: A 2-element array [x, y] in pixel coordinates, mapped from the current ImPlot.

plotpos() function

Return the top-left corner of the current ImPlot region in screen (pixel) coordinates.

Returns: A 2-element array [x, y] representing the position of the current ImPlot in screen coordinates.

plotlimits() function

Retrieve the current plot’s axis limits (min/max) for both X and Y axes.

Returns: An object { x: { min, max }, y: { min, max } } describing the current plot’s visible axis ranges.

setaxes(xAxis, yAxis) function

Switch the active axes in ImPlot (useful if multiple axes exist).

xAxis: The x-axis index (0..2).

yAxis: The y-axis index (0..2).

Returns: None

setupaxis(axis) function

Setup the specified axis in the current ImPlot (e.g., for customizing tick labels).

axis: The numeric index of the axis (0..2).

Returns: None

inplot(coords) function

Check if the given point is within the current ImPlot's visible region.

coords: A 2-element array [x, y] in plot coordinates.

Returns: True if the point is within the visible plot region, otherwise false.

window(title, callback) function

Create a new ImGui window with the given title and invoke the callback to render inside it.

title: The text displayed as the window title.

callback: A function called to render the contents of the window.

Returns: A boolean indicating if the window is still active (open) after rendering.

Create a new menu entry in a menu bar or menu. The callback is invoked to populate the menu if opened.

label: The label of the menu (visible in the menubar).

callback: A function called to render menu items when the menu is open.

Returns: None

sameline(offset) function

Place the next widget on the same line, optionally specifying a horizontal offset.

offset: A float offset from the current cursor position. If omitted, defaults to 0.

Returns: None

int(label, value) function

Display an integer input box with a label.

label: The label text for the input.

value: The initial integer value.

Returns: The updated integer value after user edits.

pushid(id) function

Push an integer ID onto the ImGui ID stack.

id: An integer used to differentiate widgets/items with the same label.

Returns: None

popid() function

Pop an ID off the ImGui ID stack.

Returns: None

slider(label, value, minValue, maxValue) function

Create a float slider (or multi-float sliders if given an array) within the specified range.

label: The slider label text.

value: A single float or an array of floats (e.g., [r,g,b,a]).

minValue: The minimum slider value.

maxValue: The maximum slider value.

Returns: The updated float or array of floats after user adjustment.

intslider(label, value, minValue, maxValue) function

Create an integer slider (or multiple integer sliders if given a typed array) in the specified range.

label: The slider label text.

value: A single integer or a typed array of integers (for multi-component sliders).

minValue: The minimum integer value.

maxValue: The maximum integer value.

Returns: The updated integer or array of integers after user adjustment.

Begin rendering a menubar. The callback is invoked to create menu items. Ends automatically.

callback: A function that creates menu items within the menubar.

Returns: None

Create the main menu bar at the top of the screen. The callback is invoked for populating it.

callback: A function to render items in the main menu bar.

Returns: None

Create a menu item that can optionally be toggled. If selected, calls the provided callback.

label: The text label of the menu item.

shortcut: An optional shortcut text to display (e.g. "Ctrl+S").

callback: A function called if the user clicks or activates this item.

selected: A boolean indicating whether this menu item is toggled or not.

Returns: A boolean reflecting the toggled state.

radio(label, active) function

Create a radio button.

label: The text label for the radio button.

active: Whether this radio button is currently selected.

Returns: True if this radio button is now selected by the user, otherwise false.

image(texture) function

Render a texture as an image at a default size (100x100).

texture: The GPU texture to display.

Returns: None

imagebutton(label, texture, callback) function

Create an ImageButton widget which displays a texture; calls the callback when clicked.

label: A string identifier (not visually used).

texture: The GPU texture to display on the button.

callback: A function called when the button is clicked.

Returns: None

textinput(label, text) function

Show a single-line text input widget.

label: The label text next to the input box.

text: The current text. If undefined, the box starts empty.

Returns: The updated text string after user editing.

textbox(label, text) function

Show a multi-line text input widget.

label: The label text next to the input box.

text: The current multi-line text. If undefined, starts empty.

Returns: The updated text after user editing.

button(label, callback) function

Create a button. The callback fires if the user clicks it.

label: The text displayed on the button.

callback: The function called on click.

Returns: None

checkbox(label, checked) function

Create a checkbox to toggle a boolean value.

label: The text label for the checkbox.

checked: The current boolean state.

Returns: The updated boolean state after user toggle.

text(text) function

Render a line of text in the ImGui window.

text: The string to display.

Returns: None

plot(title, callback) function

Begin a new ImPlot region with the specified title. Calls the callback to render plot contents.

title: The title (label) of the plot.

callback: A function that sets up and draws within the ImPlot region.

Returns: None

lineplot(label, data, shaded, lastPoint) function

Plot a line graph in the current ImPlot.

label: The label for the line plot.

data: An array of [x,y] points or a single array of y-values.

shaded: Boolean indicating if the area under the line should be filled.

lastPoint: (Optional) Additional point or frame usage. (Currently partial/placeholder in code.)

Returns: None

scatterplot(label, data, shaded, lastPoint) function

Plot a scatter graph in the current ImPlot.

label: The label for the scatter plot.

data: An array of [x,y] points or a single array of y-values.

shaded: Typically unused for scatter.

lastPoint: (Optional) Additional param if needed.

Returns: None

stairplot(label, data, shaded, lastPoint) function

Plot a stair-step graph in the current ImPlot.

label: The label for the stair plot.

data: An array of [x,y] points or a single array of y-values.

shaded: A boolean to fill under the stair-step line.

lastPoint: (Optional) Extended data usage if needed.

Returns: None

digitalplot(label, data, shaded, lastPoint) function

Plot a digital (step-like) graph in the current ImPlot.

label: The label for the digital plot.

data: An array of [x,y] points or a single array of y-values.

shaded: Typically not used for digital plots.

lastPoint: (Optional) Extended data usage if needed.

Returns: None

barplot(label, data, width) function

Plot a bar chart in the current ImPlot.

label: The label for the bar series.

data: An array of [x,y] points or just an array of y-values.

width: The width of each bar in plot units.

Returns: None

textplot(text, coords) function

Render text at the specified coordinates in plot space.

text: The string to render.

coords: A 2-element array [x, y] in plot coordinates.

Returns: None

histogramplot(label, data) function

Plot a histogram from the given data array/typed array in the current ImPlot.

label: The label for the histogram.

data: A typed array (or numeric array) containing the values to bin/display.

Returns: None

plotaxes(xLabel, yLabel) function

Set up labels for the X and Y axes of the current ImPlot.

xLabel: The label for the x-axis.

yLabel: The label for the y-axis.

Returns: None

plotmousepos() function

Get the mouse cursor’s position in the current plot’s coordinate system.

Returns: A 2-element array [x, y] representing the mouse position in plot coordinates.

plothovered() function

Check if the mouse is hovering over the current ImPlot.

Returns: True if the plot area is hovered, otherwise false.

axeslimits(xMin, xMax, yMin, yMax) function

Set up the visible axis limits in the current ImPlot.

xMin: The left (min) bound of the x-axis.

xMax: The right (max) bound of the x-axis.

yMin: The bottom (min) bound of the y-axis.

yMax: The top (max) bound of the y-axis.

Returns: None

prepend(commandBuffer) function

Prepare ImGui draw data for rendering, typically called after ImGui::Render().

commandBuffer: The SDL GPU command buffer where draw data will be queued.

Returns: None

fitaxis(axis) function

Fit either the x-axis or y-axis to its data range on the next plot frame.

axis: 0 for X-axis, 1 for Y-axis.

Returns: None

columns(count) function

Switch the layout to use a specified number of columns.

count: The number of columns to layout in the current region.

Returns: None

nextcolumn() function

Advance to the next column in a multi-column layout.

Returns: None

collapsingheader(label) function

Create a collapsible header. Returns true if it is open (expanded).

label: The text label of the header.

Returns: True if the header is expanded, otherwise false.

tree(label, callback) function

Create a tree node. If opened, calls the callback for nested content.

label: The label for the tree node.

callback: A function called if the node is expanded.

Returns: None

listbox(label, items, selectedIndex) function

Create a list box widget to select from a list of strings.

label: The label next to the list box.

items: An array of strings to display.

selectedIndex: The currently selected index.

Returns: The updated selected index after user selection.

axisfmt(axis, callback) function

Set a custom formatter for a specified y-axis in ImPlot.

axis: The y-axis index (0..2) to format.

callback: A function(value) => string that converts axis values to text.

Returns: None

tabbar(label, callback) function

Begin a tab bar container. The callback is invoked to create tabs.

label: The identifier label of the tab bar.

callback: A function that creates tab items.

Returns: None

tab(label, callback) function

Create a tab item. If selected, calls the callback for tab content.

label: The name of the tab.

callback: A function to render the tab’s content if active.

Returns: None

open_popup(label) function

Open a popup by its identifier.

label: The identifier of the popup to open.

Returns: None

modal(label, callback) function

Begin a modal popup. The callback is invoked to display contents if the modal is open.

label: The identifier of the modal popup.

callback: A function for rendering the modal’s UI if open.

Returns: None

popup(label, callback) function

Begin a popup. The callback is invoked if the popup is open.

label: The identifier of the popup.

callback: A function for rendering the popup’s UI.

Returns: None

close_popup() function

Close the current popup.

Returns: None

context(label, callback) function

Create a popup context menu. The callback is invoked if the menu opens.

label: The identifier for the context menu.

callback: A function that renders menu items in the context.

Returns: None

table(label, columns, callback, sortCallback) function

Create a table with multiple columns. Optionally enable sorting and pass a sort callback.

label: The identifier for the table.

columns: The number of columns.

callback: A function to populate the table (rows/cells).

sortCallback: An optional function(columnIndex, ascending) called if user sorts a column.

Returns: None

tablenextcolumn() function

Move to the next column in a table row.

Returns: None

tablenextrow() function

Move to the next row in a table.

Returns: None

tableheadersrow() function

Create a row of headers in the current table (should be called once after column setup).

Returns: None

tableangledheadersrow() function

Create an angled header row (for advanced usage). Typically not used as often.

Returns: None

tablesetupcolumn(label) function

Setup configuration for a single column in the table.

label: The label/header text for this column.

Returns: None

dnd(type, payload, callback) function

Begin a drag source for custom data payload.

type: A string identifier for the drag-drop payload type.

payload: A numeric payload stored in the drag-drop.

callback: (Currently unused) Placeholder if you want to do extra on drag start.

Returns: None

dndtarget(type, callback) function

Create a drop target for matching drag-drop payload type. Invokes callback on drop.

type: A string identifier for the drag-drop payload type to accept.

callback: A function(payloadNumber) called when a matching payload is dropped.

Returns: None

color(label, color) function

Create a color editor (3 or 4 floats). Returns the updated color.

label: The label for the color editor.

color: An array [r,g,b] or [r,g,b,a].

Returns: Updated color array after user input.

startnode(callback, linkCreatedCallback, nodeHoveredCallback, linkHoveredCallback) function

Begin a node editor session with ImNodes. The callback defines nodes. Additional callbacks handle link creation and hover events.

callback: A function to define node editor contents (adding nodes, etc).

linkCreatedCallback: A function(startAttr, endAttr) called when a new link is created.

nodeHoveredCallback: A function(nodeId) called when a node is hovered.

linkHoveredCallback: A function(linkId) called when a link is hovered.

Returns: None

node(nodeId, callback) function

Begin a node with a unique ID, then call the callback to define its contents.

nodeId: A unique integer ID for this node.

callback: A function that populates the node’s UI.

Returns: None

nodein(attributeId, callback) function

Create an input attribute in the current node.

attributeId: The attribute ID for this input.

callback: A function that defines the UI within the input attribute.

Returns: None

nodeout(attributeId, callback) function

Create an output attribute in the current node.

attributeId: The attribute ID for this output.

callback: A function that defines the UI within the output attribute.

Returns: None

nodelink(linkId, startAttributeId, endAttributeId) function

Link two node attributes by their IDs.

linkId: A unique integer ID for this link.

startAttributeId: The attribute ID where the link starts.

endAttributeId: The attribute ID where the link ends.

Returns: None

nodemini(size) function

Show a minimap for the current node editor.

size: A float controlling the minimap size ratio.

Returns: None

mousehoveringrect(min, max) function

Check if the mouse is hovering within the given rectangle.

min: A 2-element array [x, y] for the top-left corner.

max: A 2-element array [x, y] for the bottom-right corner.

Returns: True if the mouse is within that rectangle, otherwise false.

mouseclicked(button) function

Check if a specific mouse button was clicked (went from up to down) this frame.

button: An integer for the mouse button index (0 = left, 1 = right, etc).

Returns: True if the button was clicked, otherwise false.

mousedown(button) function

Check if the specified mouse button is currently held down.

button: The mouse button index.

Returns: True if the button is down, otherwise false.

mousereleased(button) function

Check if the specified mouse button was released this frame.

button: The mouse button index.

Returns: True if the button was released, otherwise false.

mousedragging(button) function

Check if the mouse is being dragged with the specified button.

button: The mouse button index.

Returns: True if the mouse is dragging, otherwise false.

mousedelta() function

Get the mouse movement delta (difference) for the current frame.

Returns: A 2-element array [dx, dy] representing the mouse movement.

rect(pMin, pMax, color) function

Draw a rectangle outline in the current window’s draw list.

pMin: A 2-element array [x, y] for the top-left corner.

pMax: A 2-element array [x, y] for the bottom-right corner.

color: A 4-element array [r, g, b, a] specifying the outline color.

Returns: None

rectfilled(pMin, pMax, color) function

Draw a filled rectangle in the current window’s draw list.

pMin: [x, y] for the top-left corner.

pMax: [x, y] for the bottom-right corner.

color: [r, g, b, a] fill color.

Returns: None

line(p1, p2, color) function

Draw a line between two points in the current window’s draw list.

p1: [x, y] start position.

p2: [x, y] end position.

color: [r, g, b, a] line color.

Returns: None

bezierquad(p1, p2, p3, color, thickness) function

Draw a quadratic bezier curve.

p1: [x, y] start point.

p2: [x, y] control point.

p3: [x, y] end point.

color: [r, g, b, a] color.

thickness: Line thickness.

Returns: None

beziercubic(p1, p2, p3, p4, color, thickness) function

Draw a cubic bezier curve.

p1: [x, y] start point.

p2: [x, y] first control point.

p3: [x, y] second control point.

p4: [x, y] end point.

color: [r, g, b, a] color.

thickness: Line thickness.

Returns: None

point(center, radius, color) function

Draw a filled circle (point) in the current window’s draw list.

center: [x, y] center of the circle.

radius: The radius of the circle.

color: [r, g, b, a] fill color.

Returns: None

drawtext(text, position, color) function

Draw text at the given screen position with a specified color.

text: The string to draw.

position: [x, y] in screen coordinates.

color: [r, g, b, a] text color.

Returns: None

cursorscreenpos() function

Get the current ImGui cursor screen position.

Returns: A 2-element array [x, y] in screen coordinates.

setcursorscreenpos(position) function

Set the ImGui cursor screen position.

position: A 2-element array [x, y] in screen coordinates.

Returns: None

contentregionavail() function

Return the available space in the current window’s content region.

Returns: A 2-element array [width, height] of available space.

dummy(size) function

Add a dummy item (invisible) of the specified size to the layout.

size: A 2-element array [width, height].

Returns: None

invisiblebutton(label, size) function

Create an invisible button that occupies a given size and can catch clicks.

label: The identifier for the button.

size: [width, height] specifying the button area.

Returns: None

width(width) function

Set the width of the next item in the layout.

width: The width (in pixels) for the next item.

Returns: None

setclipboard(text) function

Set the system clipboard text.

text: The string to put into the clipboard.

Returns: None

newframe() function

Start a new ImGui frame. Should be called once per frame before rendering UI elements.

Returns: None

endframe(commandBuffer, renderPass) function

Finalize and render the ImGui draw data to the specified command buffer and render pass.

commandBuffer: The SDL GPU command buffer to render into.

renderPass: The SDL GPU render pass used to draw ImGui data.

Returns: None

wantmouse() function

Check if ImGui wants to capture the mouse (e.g., if a window or widget needs mouse events).

Returns: True if ImGui is capturing the mouse, otherwise false.

wantkeys() function

Check if ImGui wants to capture the keyboard (e.g., if a text input is active).

Returns: True if ImGui is capturing the keyboard, otherwise false.

init(gpuDevice, window) function

Initialize ImGui with SDL and SDL_gpu, creating the ImGui context and configuring it.

gpuDevice: The SDL_GPUDevice object.

window: The SDL_Window object to attach ImGui onto.

Returns: None

render_menu(render) function

prosperon_menu() function