package vendor:microui
Overview
An Odin-native source port of rxi's microui immediate mode UI.
** Original work: Copyright (c) 2020 rxi ** Modified work: Copyright (c) 2020 oskarnp ** Modified work: Copyright (c) 2021 gingerBill ** ** Permission is hereby granted, free of charge, to any person obtaining a copy ** of this software and associated documentation files (the "Software"), to ** deal in the Software without restriction, including without limitation the ** rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ** sell copies of the Software, and to permit persons to whom the Software is ** furnished to do so, subject to the following conditions: ** ** The above copyright notice and this permission notice shall be included in ** all copies or substantial portions of the Software. ** ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ** AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ** FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS ** IN THE SOFTWARE.
External Examples 4 ¶
The programs in odin-lang/examples about this package, and how many of its declarations each uses.
Index
Constants (21)
Variables (4)
Procedures (84)
- begin
begin_… (4)
- bring_to_front
- button
- check_clip
- checkbox
- default_atlas_text_height
- default_atlas_text_width
- end
end_… (4)
- expand_rect
- header
- init
- intersect_rects
- label
- mouse_over
- next_command
- next_command_iterator
- number
- number_textbox
- open_popup
pool_… (3)
- pop
- pop_clip_rect
- pop_id
- popup
- push
- rect_overlaps_vec2
scoped_… (3)
- set_clip
- set_focus
- slider
- text
- textbox
- textbox_raw
- treenode
- update_control
- window
Types
Color ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
Color_Type ¶
Color_Type :: enum u32 { TEXT, SELECTION_BG, BORDER, WINDOW_BG, TITLE_BG, TITLE_TEXT, PANEL_BG, BUTTON, BUTTON_HOVER = BUTTON + 1, BUTTON_FOCUS = BUTTON + 2, BASE, BASE_HOVER = BASE + 1, BASE_FOCUS = BASE + 2, SCROLL_BASE, SCROLL_THUMB, }
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Related Procedures With Parameters
Command ¶
Command :: struct { variant: Command_Variant, size: i32, }
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Command_Clip ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Command_Icon ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Command_Jump ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Command_Rect ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Command_Text ¶
Command_Text :: struct { using command: Command, font: Font, pos: Vec2, color: Color, str: string, }
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Command_Variant ¶
Command_Variant :: union { ^Command_Jump, ^Command_Clip, ^Command_Rect, ^Command_Text, ^Command_Icon, }
Container ¶
Container :: struct { head: ^Command, tail: ^Command, rect: Rect, body: Rect, content_size: Vec2, scroll: Vec2, zindex: i32, open: b32, }
Related Procedures With Returns
Context ¶
Context :: struct { // callbacks text_width: proc(font: Font, str: string) -> i32, text_height: proc(font: Font) -> i32, draw_frame: proc(ctx: ^Context, rect: Rect, colorid: Color_Type), // core state _style: Style, style: ^Style, hover_id: Id, focus_id: Id, last_id: Id, last_rect: Rect, last_zindex: i32, updated_focus: b32, frame: Frame_Index, hover_root: ^Container, next_hover_root: ^Container, scroll_target: ^Container, number_edit_buf: [127]u8, number_edit_len: int, number_edit_id: Id, // stacks command_list: Stack($T=u8, $N=262144), root_list: Stack($T=^Container, $N=32), container_stack: Stack($T=^Container, $N=32), clip_stack: Stack($T=Rect, $N=32), id_stack: Stack($T=Id, $N=32), layout_stack: Stack($T=Layout, $N=16), // retained state pools container_pool: [48]Pool_Item, containers: [48]Container, treenode_pool: [48]Pool_Item, // input state mouse_pos: Vec2, last_mouse_pos: Vec2, mouse_delta: Vec2, scroll_delta: Vec2, mouse_down_bits: Mouse_Set, mouse_pressed_bits: Mouse_Set, mouse_released_bits: Mouse_Set, key_down_bits: Key_Set, key_pressed_bits: Key_Set, _text_store: [1024]u8, text_input: strings.Builder, // uses `_text_store` as backing store with nil_allocator. textbox_state: text_edit.State, textbox_offset: i32, }
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Related Procedures With Parameters
- begin
- begin_panel
- begin_popup
- begin_treenode
- begin_window
- bring_to_front
- button
- check_clip
- checkbox
- draw_box
- draw_control_frame
- draw_control_text
- draw_icon
- draw_rect
- draw_text
- end
- end_panel
- end_popup
- end_treenode
- end_window
- get_clip_rect
- get_container
- get_current_container
- get_id_bytes
- get_id_rawptr
- get_id_string
- get_id_uintptr
- get_layout
- header
- init
- input_key_down
- input_key_up
- input_mouse_down
- input_mouse_move
- input_mouse_up
- input_scroll
- input_text
- label
- layout_begin_column
- layout_column
- layout_end_column
- layout_height
- layout_next
- layout_row
- layout_row_items
- layout_set_next
- layout_width
- mouse_over
- next_command
- next_command_iterator
- number
- number_textbox
- open_popup
- pool_get
- pool_init
- pool_update
- pop_clip_rect
- pop_id
- popup
- push_clip_rect
- push_command
- push_id_bytes
- push_id_rawptr
- push_id_string
- push_id_uintptr
- scoped_end_popup
- scoped_end_treenode
- scoped_end_window
- set_clip
- set_focus
- slider
- text
- textbox
- textbox_raw
- treenode
- update_control
- window
- get_id (procedure groups)
- push_id (procedure groups)
Frame_Index ¶
Frame_Index :: distinct i32
Icon ¶
Icon :: enum u32 { NONE, CLOSE, CHECK, COLLAPSED, EXPANDED, RESIZE, }
External examples wgpu/microui
Id ¶
Id :: distinct u32
Related Procedures With Parameters
Related Procedures With Returns
- get_id_bytes
- get_id_rawptr
- get_id_string
- get_id_uintptr
- get_id (procedure groups)
Key ¶
Key :: enum u32 { SHIFT, CTRL, ALT, BACKSPACE, DELETE, RETURN, LEFT, RIGHT, HOME, END, A, X, C, V, }
External examples raylib/microui · wgpu/microui
Related Procedures With Parameters
Layout_Type ¶
Layout_Type :: enum int { NONE = 0, RELATIVE = 1, ABSOLUTE = 2, }
Mouse ¶
Mouse :: enum u32 { LEFT, RIGHT, MIDDLE, }
External examples raylib/microui · wgpu/microui
Related Procedures With Parameters
Opt ¶
Opt :: enum u32 { ALIGN_CENTER, ALIGN_RIGHT, NO_INTERACT, NO_FRAME, NO_RESIZE, NO_SCROLL, NO_CLOSE, NO_TITLE, HOLD_FOCUS, AUTO_SIZE, POPUP, CLOSED, EXPANDED, }
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Options ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Related Procedures With Parameters
Pool_Item ¶
Pool_Item :: struct { id: Id, last_update: Frame_Index, }
Real ¶
Real :: f32
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Related Procedures With Parameters
Rect ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
Related Procedures With Parameters
Related Procedures With Returns
Result_Set ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Related Procedures With Returns
Constants
CLIP_STACK_SIZE ¶
CLIP_STACK_SIZE :: #config(MICROUI_CLIP_STACK_SIZE, 32)
-define:MICROUI_CLIP_STACK_SIZE=32
COMMAND_LIST_SIZE ¶
COMMAND_LIST_SIZE :: #config(MICROUI_COMMAND_LIST_SIZE, 256 * 1024)
-define:MICROUI_COMMAND_LIST_SIZE=<value>
CONTAINER_POOL_SIZE ¶
CONTAINER_POOL_SIZE :: #config(MICROUI_CONTAINER_POOL_SIZE, 48)
-define:MICROUI_CONTAINER_POOL_SIZE=48
CONTAINER_STACK_SIZE ¶
CONTAINER_STACK_SIZE :: #config(MICROUI_CONTAINER_STACK_SIZE, 32)
-define:MICROUI_CONTAINER_STACK_SIZE=32
DEFAULT_ATLAS_FONT ¶
DEFAULT_ATLAS_FONT :: int(len(Icon) + 2)
External examples raylib/microui · sdl2/microui · sdl3/microui +1
DEFAULT_ATLAS_HEIGHT ¶
DEFAULT_ATLAS_HEIGHT :: 128
External examples raylib/microui · sdl2/microui · sdl3/microui +1
DEFAULT_ATLAS_ICON_CHECK ¶
DEFAULT_ATLAS_ICON_CHECK :: int(Icon.CHECK)
DEFAULT_ATLAS_ICON_CLOSE ¶
DEFAULT_ATLAS_ICON_CLOSE :: int(Icon.CLOSE)
DEFAULT_ATLAS_ICON_COLLAPSED ¶
DEFAULT_ATLAS_ICON_COLLAPSED :: int(Icon.COLLAPSED)
DEFAULT_ATLAS_ICON_EXPANDED ¶
DEFAULT_ATLAS_ICON_EXPANDED :: int(Icon.EXPANDED)
DEFAULT_ATLAS_ICON_RESIZE ¶
DEFAULT_ATLAS_ICON_RESIZE :: int(Icon.RESIZE)
DEFAULT_ATLAS_WIDTH ¶
DEFAULT_ATLAS_WIDTH :: 128
External examples raylib/microui · sdl2/microui · sdl3/microui +1
ID_STACK_SIZE ¶
ID_STACK_SIZE :: #config(MICROUI_ID_STACK_SIZE, 32)
-define:MICROUI_ID_STACK_SIZE=32
LAYOUT_STACK_SIZE ¶
LAYOUT_STACK_SIZE :: #config(MICROUI_LAYOUT_STACK_SIZE, 16)
-define:MICROUI_LAYOUT_STACK_SIZE=16
MAX_FMT ¶
MAX_FMT :: #config(MICROUI_MAX_FMT, 127)
-define:MICROUI_MAX_FMT=127
MAX_TEXT_STORE ¶
MAX_TEXT_STORE :: #config(MICROUI_MAX_TEXT_STORE, 1024)
-define:MICROUI_MAX_TEXT_STORE=1024
MAX_WIDTHS ¶
MAX_WIDTHS :: #config(MICROUI_MAX_WIDTHS, 16)
-define:MICROUI_MAX_WIDTHS=16
ROOT_LIST_SIZE ¶
ROOT_LIST_SIZE :: #config(MICROUI_ROOT_LIST_SIZE, 32)
-define:MICROUI_ROOT_LIST_SIZE=32
SLIDER_FMT ¶
SLIDER_FMT :: #config(MICROUI_SLIDER_FMT, "%.2f")
-define:MICROUI_SLIDER_FMT="%.2f"
TREENODE_POOL_SIZE ¶
TREENODE_POOL_SIZE :: #config(MICROUI_TREENODE_POOL_SIZE, 48)
-define:MICROUI_TREENODE_POOL_SIZE=48
Variables
default_atlas ¶
default_atlas: [136]Rect = …
External examples wgpu/microui · raylib/microui · sdl2/microui +1
default_atlas_alpha ¶
default_atlas_alpha: [16384]u8 = …
External examples raylib/microui · sdl2/microui · sdl3/microui +1
default_style ¶
default_style: Style = …
unclipped_rect ¶
unclipped_rect: Rect = …
Procedures
begin ¶
begin :: proc(ctx: ^Context) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
begin_panel ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
button ¶
button :: proc( ctx: ^Context, label: string, icon: Icon = .NONE, opt: Options = {.ALIGN_CENTER}, ) -> (res: bit_set[Result; u32]) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
checkbox ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
default_atlas_text_height ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
default_atlas_text_width ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
draw_box ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
draw_control_frame ¶
draw_control_frame :: proc( ctx: ^Context, id: Id, rect: Rect, colorid: Color_Type, opt: Options = Options{}, ) {…}
draw_control_text ¶
draw_control_text :: proc( ctx: ^Context, str: string, rect: Rect, colorid: Color_Type, opt: Options = Options{}, ) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
draw_rect ¶
External examples raylib/microui · sdl3/microui · wgpu/microui +1
end ¶
end :: proc(ctx: ^Context) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
end_panel ¶
end_panel :: proc(ctx: ^Context) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
end_popup ¶
end_popup :: proc(ctx: ^Context) {…}
end_treenode ¶
end_treenode :: proc(ctx: ^Context) {…}
end_window ¶
end_window :: proc(ctx: ^Context) {…}
expand_rect ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
get_current_container ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
header ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
init ¶
init :: proc( ctx: ^Context, set_clipboard: proc(user_data: rawptr, text: string) -> (ok: bool) = nil, get_clipboard: proc(user_data: rawptr) -> (text: string, ok: bool) = nil, clipboard_user_data: rawptr = nil, ) {…}
External examples wgpu/microui · raylib/microui · sdl2/microui +1
input_key_down ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
input_key_up ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
input_mouse_down ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
input_mouse_move ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
input_mouse_up ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
input_scroll ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
input_text ¶
External examples wgpu/microui · raylib/microui · sdl2/microui +1
label ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
layout_begin_column ¶
layout_begin_column :: proc(ctx: ^Context) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
layout_end_column ¶
layout_end_column :: proc(ctx: ^Context) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
layout_next ¶
External examples raylib/microui · sdl3/microui · wgpu/microui +1
layout_row ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
next_command_iterator ¶
next_command_iterator :: proc "contextless" ( ctx: ^Context, pcm: ^^Command, ) -> (Command_Variant, bool) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
pop_clip_rect ¶
pop_clip_rect :: proc(ctx: ^Context) {…}
pop_id ¶
pop_id :: proc(ctx: ^Context) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
popup ¶
This is scoped and is intended to be use in the condition of a if-statement
set_focus ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
slider ¶
slider :: proc( ctx: ^Context, value: ^f32, low, high: f32, step: f32 = 0.0, fmt_string: string = SLIDER_FMT, opt: Options = {.ALIGN_CENTER}, ) -> (res: bit_set[Result; u32]) {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
text ¶
External examples raylib/microui · sdl2/microui · sdl3/microui +1
textbox ¶
textbox :: proc( ctx: ^Context, buf: []u8, textlen: ^int, opt: Options = Options{}, ) -> bit_set[Result; u32] {…}
External examples raylib/microui · sdl2/microui · sdl3/microui +1
treenode ¶
@(deferred_in_out=scoped_end_treenode) treenode :: proc( ctx: ^Context, label: string, opt: Options = Options{}, ) -> bit_set[Result; u32] {…}
This is scoped and is intended to be use in the condition of a if-statement
External examples raylib/microui · sdl2/microui · sdl3/microui +1
window ¶
@(deferred_in_out=scoped_end_window) window :: proc(ctx: ^Context, title: string, rect: Rect, opt: Options = Options{}) -> bool {…}
This is scoped and is intended to be use in the condition of a if-statement
External examples raylib/microui · sdl2/microui · sdl3/microui +1
Procedure Groups
get_id ¶
get_id :: proc{ get_id_string, get_id_bytes, get_id_rawptr, get_id_uintptr, }
push_id ¶
push_id :: proc{ push_id_string, push_id_bytes, push_id_rawptr, push_id_uintptr, }
External examples raylib/microui · sdl2/microui · sdl3/microui +1
`#config` values
- CLIP_STACK_SIZE
-define:MICROUI_CLIP_STACK_SIZE=32 - COMMAND_LIST_SIZE
-define:MICROUI_COMMAND_LIST_SIZE=<value> - CONTAINER_POOL_SIZE
-define:MICROUI_CONTAINER_POOL_SIZE=48 - CONTAINER_STACK_SIZE
-define:MICROUI_CONTAINER_STACK_SIZE=32 - ID_STACK_SIZE
-define:MICROUI_ID_STACK_SIZE=32 - LAYOUT_STACK_SIZE
-define:MICROUI_LAYOUT_STACK_SIZE=16 - MAX_FMT
-define:MICROUI_MAX_FMT=127 - MAX_TEXT_STORE
-define:MICROUI_MAX_TEXT_STORE=1024 - MAX_WIDTHS
-define:MICROUI_MAX_WIDTHS=16 - ROOT_LIST_SIZE
-define:MICROUI_ROOT_LIST_SIZE=32 - SLIDER_FMT
-define:MICROUI_SLIDER_FMT="%.2f" - TREENODE_POOL_SIZE
-define:MICROUI_TREENODE_POOL_SIZE=48
Source Files
Generation Information
Generated with odin version dev-2026-10 (vendor "odin") Windows_amd64 @ 2026-10-08 00:39:44.566002900 +0000 UTC