# 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. ### menu(label, callback) function 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. ### menubar(callback) function 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 ### mainmenubar(callback) function 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 ### menuitem(label, shortcut, callback, selected) function 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