Update orca bindings and macros to requested changes

This commit is contained in:
skytrias
2024-08-02 23:46:02 +02:00
parent f8e0cda113
commit 9f5854e24e
2 changed files with 105 additions and 110 deletions

View File

@@ -192,7 +192,7 @@ arena_push_type :: proc "contextless" (arena: ^arena, $T: typeid) -> ^T {
}
arena_push_array :: proc "contextless" (arena: ^arena, $T: typeid, count: u64) -> []T {
return (^T)(arena_push_aligned(arena, size_of(T) * count, align_of(T)))[:count]
return ([^]T)(arena_push_aligned(arena, size_of(T) * count, align_of(T)))[:count]
}
scratch_end :: arena_scope_end
@@ -206,7 +206,7 @@ str8_list_first :: proc "contextless" (sl: ^str8_list) -> str8 {
return ""
}
return list_first_entry(&sl.list, str8_elt, "listElt")._string
return list_first_entry(&sl.list, str8_elt, "listElt").string
}
str8_list_last :: proc "contextless" (sl: ^str8_list) -> str8 {
@@ -214,7 +214,7 @@ str8_list_last :: proc "contextless" (sl: ^str8_list) -> str8 {
return ""
}
return list_last_entry(&sl.list, str8_elt, "listElt")._string
return list_last_entry(&sl.list, str8_elt, "listElt").string
}
str8_list_for :: proc "contextless" (list: ^str8_list, elt: ^^list_elt) -> (^str8_elt, bool) {
@@ -232,7 +232,7 @@ str16_list_first :: proc "contextless" (sl: ^str16_list) -> str16 {
return {}
}
return list_first_entry(&sl.list, str16_elt, "listElt")._string
return list_first_entry(&sl.list, str16_elt, "listElt").string
}
str16_list_last :: proc "contextless" (sl: ^str16_list) -> str16 {
@@ -240,7 +240,7 @@ str16_list_last :: proc "contextless" (sl: ^str16_list) -> str16 {
return {}
}
return list_last_entry(&sl.list, str16_elt, "listElt")._string
return list_last_entry(&sl.list, str16_elt, "listElt").string
}
str16_list_for :: proc "contextless" (list: ^str16_list, elt: ^^list_elt) -> (^str16_elt, bool) {
@@ -252,7 +252,7 @@ str32_list_first :: proc "contextless" (sl: ^str32_list) -> str32 {
return {}
}
return list_first_entry(&sl.list, str32_elt, "listElt")._string
return list_first_entry(&sl.list, str32_elt, "listElt").string
}
str32_list_last :: proc "contextless" (sl: ^str32_list) -> str32 {
@@ -260,7 +260,7 @@ str32_list_last :: proc "contextless" (sl: ^str32_list) -> str32 {
return {}
}
return list_last_entry(&sl.list, str32_elt, "listElt")._string
return list_last_entry(&sl.list, str32_elt, "listElt").string
}
str32_list_for :: proc "contextless" (list: ^str32_list, elt: ^^list_elt) -> (^str32_elt, bool) {

View File

@@ -1,4 +1,3 @@
//+build orca
package orca
import "core:c"
@@ -28,7 +27,7 @@ foreign {
SYS_MAX_ERROR :: 1024
sys_err_def :: struct {
msg: [SYS_MAX_ERROR]u8,
msg: [SYS_MAX_ERROR]u8 `fmt:"s,0"`,
code: i32,
}
@@ -245,7 +244,7 @@ rect :: struct { x, y, w, h: f32 }
@(default_calling_convention="c", link_prefix="oc_")
foreign {
// Check if two 2D vectors are equal.
vec2_equal :: proc(v0: vec2, v1: vec2) -> c.bool ---
vec2_equal :: proc(v0: vec2, v1: vec2) -> bool ---
// Multiply a 2D vector by a scalar.
vec2_mul :: proc(f: f32, v: vec2) -> vec2 ---
// Add two 2D vectors
@@ -324,7 +323,7 @@ list :: struct {
@(default_calling_convention="c", link_prefix="oc_")
foreign {
// Check if a list is empty.
list_empty :: proc(list: list) -> c.bool ---
list_empty :: proc(list: list) -> bool ---
// Zero-initializes a linked list.
list_init :: proc(list: ^list) ---
// Insert an element in a list after a given element.
@@ -348,10 +347,10 @@ foreign {
////////////////////////////////////////////////////////////////////////////////
// The prototype of a procedure to reserve memory from the system.
mem_reserve_proc :: proc(_context: ^base_allocator, size: u64) -> rawptr
mem_reserve_proc :: proc "c" (_context: ^base_allocator, size: u64) -> rawptr
// The prototype of a procedure to modify a memory reservation.
mem_modify_proc :: proc(_context: ^base_allocator, ptr: rawptr, size: u64)
mem_modify_proc :: proc "c" (_context: ^base_allocator, ptr: rawptr, size: u64)
// A structure that defines how to allocate memory from the system.
base_allocator :: struct {
@@ -445,7 +444,7 @@ str8_elt :: struct {
// The string element is linked into its parent string list through this field.
listElt: list_elt,
// The string for this element.
_string: str8,
string: str8,
}
// A type representing a string list.
@@ -466,7 +465,7 @@ str16_elt :: struct {
// The string element is linked into its parent string list through this field.
listElt: list_elt,
// The string for this element.
_string: str16,
string: str16,
}
str16_list :: struct {
@@ -486,7 +485,7 @@ str32_elt :: struct {
// The string element is linked into its parent string list through this field.
listElt: list_elt,
// The string for this element.
_string: str32,
string: str32,
}
str32_list :: struct {
@@ -512,14 +511,10 @@ foreign {
str8_push_copy :: proc(arena: ^arena, s: str8) -> str8 ---
// Make a copy of a string slice. This function copies a subsequence of the input string onto an arena, and returns a new string referring to the copied content.
str8_push_slice :: proc(arena: ^arena, s: str8, start: u64, end: u64) -> str8 ---
// Build a string from a null-terminated format string and a variadic argument list, similar to `vasprintf()`.
str8_pushfv :: proc(arena: ^arena, format: cstring, #c_vararg args: ..any) -> str8 ---
// Build a string from a null-terminated format string and variadic arguments, similar to `asprintf()`.
str8_pushf :: proc(arena: ^arena, format: cstring, #c_vararg args: ..any) -> str8 ---
// Lexicographically compare the contents of two strings.
str8_cmp :: proc(s1: str8, s2: str8) -> i32 ---
// Create a null-terminated C-string from an `oc_str8` string.
str8_to_cstring :: proc(arena: ^arena, _string: str8) -> cstring ---
str8_to_cstring :: proc(arena: ^arena, string: str8) -> cstring ---
// Push a string element to the back of a string list. This creates a `oc_str8_elt` element referring to the contents of the input string, and links that element at the end of the string list.
str8_list_push :: proc(arena: ^arena, list: ^str8_list, str: str8) ---
// Build a string from a null-terminated format string an variadic arguments, and append it to a string list.
@@ -605,25 +600,25 @@ foreign {
utf8_size_from_leading_char :: proc(leadingChar: char) -> u32 ---
// Get the size of the utf8 encoding of a codepoint.
utf8_codepoint_size :: proc(codePoint: utf32) -> u32 ---
utf8_codepoint_count_for_string :: proc(_string: str8) -> u64 ---
utf8_codepoint_count_for_string :: proc(string: str8) -> u64 ---
// Get the length of the utf8 encoding of a sequence of unicode codepoints.
utf8_byte_count_for_codepoints :: proc(codePoints: str32) -> u64 ---
// Get the offset of the next codepoint after a given offset, in a utf8 encoded string.
utf8_next_offset :: proc(_string: str8, byteOffset: u64) -> u64 ---
utf8_next_offset :: proc(string: str8, byteOffset: u64) -> u64 ---
// Get the offset of the previous codepoint before a given offset, in a utf8 encoded string.
utf8_prev_offset :: proc(_string: str8, byteOffset: u64) -> u64 ---
utf8_prev_offset :: proc(string: str8, byteOffset: u64) -> u64 ---
// Decode a utf8 encoded codepoint.
utf8_decode :: proc(_string: str8) -> utf8_dec ---
utf8_decode :: proc(string: str8) -> utf8_dec ---
// Decode a codepoint at a given offset in a utf8 encoded string.
utf8_decode_at :: proc(_string: str8, offset: u64) -> utf8_dec ---
utf8_decode_at :: proc(string: str8, offset: u64) -> utf8_dec ---
// Encode a unicode codepoint into a utf8 sequence.
utf8_encode :: proc(dst: cstring, codePoint: utf32) -> str8 ---
// Decode a utf8 string to a string of unicode codepoints using memory passed by the caller.
utf8_to_codepoints :: proc(maxCount: u64, backing: ^utf32, _string: str8) -> str32 ---
utf8_to_codepoints :: proc(maxCount: u64, backing: ^utf32, string: str8) -> str32 ---
// Encode a string of unicode codepoints into a utf8 string using memory passed by the caller.
utf8_from_codepoints :: proc(maxBytes: u64, backing: cstring, codePoints: str32) -> str8 ---
// Decode a utf8 encoded string to a string of unicode codepoints using an arena.
utf8_push_to_codepoints :: proc(arena: ^arena, _string: str8) -> str32 ---
utf8_push_to_codepoints :: proc(arena: ^arena, string: str8) -> str32 ---
// Encode a string of unicode codepoints into a utf8 string using an arena.
utf8_push_from_codepoints :: proc(arena: ^arena, codePoints: str32) -> str8 ---
}
@@ -945,7 +940,7 @@ key_code :: enum u32 {
}
keymod_flag :: enum u32 {
ALT = 1,
ALT = 0,
SHIFT,
CTRL,
CMD,
@@ -1017,7 +1012,7 @@ event :: struct {
window: window,
// The type of the event. This determines which member of the event union is active.
type: event_type,
_: struct #raw_union {
using _: struct #raw_union {
key: key_event,
character: char_event,
mouse: mouse_event,
@@ -1095,7 +1090,7 @@ foreign {
// Convert a scancode to a keycode, according to current keyboard layout.
scancode_to_keycode :: proc(scanCode: scan_code) -> key_code ---
// Put a string in the clipboard.
clipboard_set_string :: proc(_string: str8) ---
clipboard_set_string :: proc(string: str8) ---
}
////////////////////////////////////////////////////////////////////////////////
@@ -1180,11 +1175,11 @@ io_req :: struct {
offset: i64,
// A size indicating the capacity of the buffer pointed to by `buffer`, in bytes.
size: u64,
_: struct #raw_union {
using _: struct #raw_union {
buffer: [^]char,
unused: u64,
},
_: struct #raw_union {
using _: struct #raw_union {
open: struct {
// The access permissions requested on the file to open.
rights: file_access,
@@ -1252,7 +1247,7 @@ io_cmp :: struct {
id: io_req_id,
// The error value for the operation.
error: io_error,
_: struct #raw_union {
using _: struct #raw_union {
result: i64,
size: u64,
offset: i64,
@@ -1319,7 +1314,7 @@ foreign {
// Returns a `nil` file handle
file_nil :: proc() -> file ---
// Test if a file handle is `nil`.
file_is_nil :: proc(handle: file) -> c.bool ---
file_is_nil :: proc(handle: file) -> bool ---
// Open a file in the applications' default directory subtree.
file_open :: proc(path: str8, rights: file_access, flags: file_open_flags) -> file ---
// Open a file in a given directory's subtree.
@@ -1384,7 +1379,7 @@ foreign {
// Append a path to another path.
path_append :: proc(arena: ^arena, parent: str8, relPath: str8) -> str8 ---
// Test wether a path is an absolute path.
path_is_absolute :: proc(path: str8) -> c.bool ---
path_is_absolute :: proc(path: str8) -> bool ---
}
////////////////////////////////////////////////////////////////////////////////
@@ -1458,19 +1453,19 @@ image_region :: struct {
@(default_calling_convention="c", link_prefix="oc_")
foreign {
surface_nil :: proc() -> surface ---
surface_is_nil :: proc(surface: surface) -> c.bool ---
surface_is_nil :: proc(surface: surface) -> bool ---
surface_destroy :: proc(surface: surface) ---
surface_get_size :: proc(surface: surface) -> vec2 ---
surface_contents_scaling :: proc(surface: surface) -> vec2 ---
surface_bring_to_front :: proc(surface: surface) ---
surface_send_to_back :: proc(surface: surface) ---
surface_get_hidden :: proc(surface: surface) -> c.bool ---
surface_set_hidden :: proc(surface: surface, hidden: c.bool) ---
surface_get_hidden :: proc(surface: surface) -> bool ---
surface_set_hidden :: proc(surface: surface, hidden: bool) ---
color_rgba :: proc(r: f32, g: f32, b: f32, a: f32) -> color ---
color_srgba :: proc(r: f32, g: f32, b: f32, a: f32) -> color ---
color_convert :: proc(_color: color, colorSpace: color_space) -> color ---
canvas_renderer_nil :: proc() -> canvas_renderer ---
canvas_renderer_is_nil :: proc(renderer: canvas_renderer) -> c.bool ---
canvas_renderer_is_nil :: proc(renderer: canvas_renderer) -> bool ---
canvas_renderer_create :: proc() -> canvas_renderer ---
canvas_renderer_destroy :: proc(renderer: canvas_renderer) ---
canvas_render :: proc(renderer: canvas_renderer, _context: canvas_context, surface: surface) ---
@@ -1478,13 +1473,13 @@ foreign {
canvas_surface_create :: proc(renderer: canvas_renderer) -> surface ---
canvas_surface_swap_interval :: proc(surface: surface, swap: i32) ---
canvas_context_nil :: proc() -> canvas_context ---
canvas_context_is_nil :: proc(_context: canvas_context) -> c.bool ---
canvas_context_is_nil :: proc(_context: canvas_context) -> bool ---
canvas_context_create :: proc() -> canvas_context ---
canvas_context_destroy :: proc(_context: canvas_context) ---
canvas_context_select :: proc(_context: canvas_context) -> canvas_context ---
canvas_context_set_msaa_sample_count :: proc(_context: canvas_context, sampleCount: u32) ---
font_nil :: proc() -> font ---
font_is_nil :: proc(font: font) -> c.bool ---
font_is_nil :: proc(font: font) -> bool ---
font_create_from_memory :: proc(mem: str8, rangeCount: u32, ranges: ^unicode_range) -> font ---
font_create_from_file :: proc(file: file, rangeCount: u32, ranges: ^unicode_range) -> font ---
font_create_from_path :: proc(path: str8, rangeCount: u32, ranges: ^unicode_range) -> font ---
@@ -1498,22 +1493,22 @@ foreign {
font_text_metrics_utf32 :: proc(font: font, fontSize: f32, codepoints: str32) -> text_metrics ---
font_text_metrics :: proc(font: font, fontSize: f32, text: str8) -> text_metrics ---
image_nil :: proc() -> image ---
image_is_nil :: proc(a: image) -> c.bool ---
image_is_nil :: proc(a: image) -> bool ---
image_create :: proc(renderer: canvas_renderer, width: u32, height: u32) -> image ---
image_create_from_rgba8 :: proc(renderer: canvas_renderer, width: u32, height: u32, pixels: ^u8) -> image ---
image_create_from_memory :: proc(renderer: canvas_renderer, mem: str8, flip: c.bool) -> image ---
image_create_from_file :: proc(renderer: canvas_renderer, file: file, flip: c.bool) -> image ---
image_create_from_path :: proc(renderer: canvas_renderer, path: str8, flip: c.bool) -> image ---
image_create_from_rgba8 :: proc(renderer: canvas_renderer, width: u32, height: u32, pixels: [^]u8) -> image ---
image_create_from_memory :: proc(renderer: canvas_renderer, mem: str8, flip: bool) -> image ---
image_create_from_file :: proc(renderer: canvas_renderer, file: file, flip: bool) -> image ---
image_create_from_path :: proc(renderer: canvas_renderer, path: str8, flip: bool) -> image ---
image_destroy :: proc(image: image) ---
image_upload_region_rgba8 :: proc(image: image, region: rect, pixels: ^u8) ---
image_upload_region_rgba8 :: proc(image: image, region: rect, pixels: [^]u8) ---
image_size :: proc(image: image) -> vec2 ---
rect_atlas_create :: proc(arena: ^arena, width: i32, height: i32) -> ^rect_atlas ---
rect_atlas_alloc :: proc(atlas: ^rect_atlas, width: i32, height: i32) -> rect ---
rect_atlas_recycle :: proc(atlas: ^rect_atlas, rect: rect) ---
image_atlas_alloc_from_rgba8 :: proc(atlas: ^rect_atlas, backingImage: image, width: u32, height: u32, pixels: ^u8) -> image_region ---
image_atlas_alloc_from_memory :: proc(atlas: ^rect_atlas, backingImage: image, mem: str8, flip: c.bool) -> image_region ---
image_atlas_alloc_from_file :: proc(atlas: ^rect_atlas, backingImage: image, file: file, flip: c.bool) -> image_region ---
image_atlas_alloc_from_path :: proc(atlas: ^rect_atlas, backingImage: image, path: str8, flip: c.bool) -> image_region ---
image_atlas_alloc_from_rgba8 :: proc(atlas: ^rect_atlas, backingImage: image, width: u32, height: u32, pixels: [^]u8) -> image_region ---
image_atlas_alloc_from_memory :: proc(atlas: ^rect_atlas, backingImage: image, mem: str8, flip: bool) -> image_region ---
image_atlas_alloc_from_file :: proc(atlas: ^rect_atlas, backingImage: image, file: file, flip: bool) -> image_region ---
image_atlas_alloc_from_path :: proc(atlas: ^rect_atlas, backingImage: image, path: str8, flip: bool) -> image_region ---
image_atlas_recycle :: proc(atlas: ^rect_atlas, imageRgn: image_region) ---
matrix_push :: proc(_matrix: mat2x3) ---
matrix_multiply_push :: proc(_matrix: mat2x3) ---
@@ -1533,7 +1528,7 @@ foreign {
set_cap :: proc(cap: cap_type) ---
set_font :: proc(font: font) ---
set_font_size :: proc(size: f32) ---
set_text_flip :: proc(flip: c.bool) ---
set_text_flip :: proc(flip: bool) ---
set_image :: proc(image: image) ---
set_image_source_region :: proc(region: rect) ---
get_color :: proc() -> color ---
@@ -1544,7 +1539,7 @@ foreign {
get_cap :: proc() -> cap_type ---
get_font :: proc() -> font ---
get_font_size :: proc() -> f32 ---
get_text_flip :: proc() -> c.bool ---
get_text_flip :: proc() -> bool ---
get_image :: proc() -> image ---
get_image_source_region :: proc() -> rect ---
get_position :: proc() -> vec2 ---
@@ -1554,8 +1549,8 @@ foreign {
cubic_to :: proc(x1: f32, y1: f32, x2: f32, y2: f32, x3: f32, y3: f32) ---
close_path :: proc() ---
glyph_outlines :: proc(glyphIndices: str32) -> rect ---
codepoints_outlines :: proc(_string: str32) ---
text_outlines :: proc(_string: str8) ---
codepoints_outlines :: proc(string: str32) ---
text_outlines :: proc(string: str8) ---
clear :: proc() ---
fill :: proc() ---
stroke :: proc() ---
@@ -1593,10 +1588,10 @@ key_state :: struct {
lastUpdate: u64,
transitionCount: u32,
repeatCount: u32,
down: c.bool,
sysClicked: c.bool,
sysDoubleClicked: c.bool,
sysTripleClicked: c.bool,
down: bool,
sysClicked: bool,
sysDoubleClicked: bool,
sysTripleClicked: bool,
}
keyboard_state :: struct {
@@ -1606,11 +1601,11 @@ keyboard_state :: struct {
mouse_state :: struct {
lastUpdate: u64,
posValid: c.bool,
posValid: bool,
pos: vec2,
delta: vec2,
wheel: vec2,
_: struct #raw_union {
using _: struct #raw_union {
buttons: [5]key_state,
_: struct {
left: key_state,
@@ -1924,7 +1919,7 @@ ui_selector :: struct {
listElt: list_elt,
kind: ui_selector_kind,
op: ui_selector_op,
data: struct #raw_union {
using _: struct #raw_union {
text: str8,
key: ui_key,
tag: ui_tag,
@@ -1945,7 +1940,7 @@ ui_box :: struct {
key: ui_key,
frameCounter: u64,
flags: ui_flags,
_string: str8,
string: str8,
tags: list,
drawProc: ui_box_draw_proc,
drawData: rawptr,
@@ -1960,12 +1955,12 @@ ui_box :: struct {
minSize: [2]f32,
rect: rect,
sig: ^ui_sig,
fresh: c.bool,
closed: c.bool,
parentClosed: c.bool,
dragging: c.bool,
hot: c.bool,
active: c.bool,
fresh: bool,
closed: bool,
parentClosed: bool,
dragging: bool,
hot: bool,
active: bool,
scroll: vec2,
pressedMouse: vec2,
hotTransition: f32,
@@ -1987,15 +1982,15 @@ ui_sig :: struct {
mouse: vec2,
delta: vec2,
wheel: vec2,
pressed: c.bool,
released: c.bool,
clicked: c.bool,
doubleClicked: c.bool,
tripleClicked: c.bool,
rightPressed: c.bool,
dragging: c.bool,
hovering: c.bool,
pasted: c.bool,
pressed: bool,
released: bool,
clicked: bool,
doubleClicked: bool,
tripleClicked: bool,
rightPressed: bool,
dragging: bool,
hovering: bool,
pasted: bool,
}
ui_box_draw_proc :: proc "c" (arg0: ^ui_box, arg1: rawptr)
@@ -2022,13 +2017,13 @@ ui_flags :: bit_set[ui_flag; u32]
MAX_INPUT_CHAR_PER_FRAME :: 64
ui_input_text :: struct {
count: u8,
codePoints: [64]utf32,
count: u8 `fmt:"-"`,
codePoints: [64]utf32 `fmt:"s,count"`,
}
ui_stack_elt :: struct {
parent: ^ui_stack_elt,
_: struct #raw_union {
using _: struct #raw_union {
box: ^ui_box,
size: ui_size,
clip: rect,
@@ -2050,7 +2045,7 @@ ui_edit_move :: enum u32 {
}
ui_context :: struct {
init: c.bool,
init: bool,
input: input_state,
frameCounter: u64,
frameTime: f64,
@@ -2080,49 +2075,49 @@ ui_context :: struct {
}
ui_text_box_result :: struct {
changed: c.bool,
accepted: c.bool,
changed: bool,
accepted: bool,
text: str8,
}
ui_select_popup_info :: struct {
changed: c.bool,
changed: bool,
selectedIndex: i32,
optionCount: i32,
options: [^]str8,
optionCount: i32 `fmt:"-"`,
options: [^]str8 `fmt:"s,optionCount"`,
placeholder: str8,
}
ui_radio_group_info :: struct {
changed: c.bool,
changed: bool,
selectedIndex: i32,
optionCount: i32,
options: [^]str8,
optionCount: i32 `fmt:"-"`,
options: [^]str8 `fmt:"s,optionCount"`,
}
@(default_calling_convention="c", link_prefix="oc_")
foreign {
input_process_event :: proc(arena: ^arena, state: ^input_state, event: ^event) ---
input_next_frame :: proc(state: ^input_state) ---
key_down :: proc(state: ^input_state, key: key_code) -> c.bool ---
key_down :: proc(state: ^input_state, key: key_code) -> bool ---
key_press_count :: proc(state: ^input_state, key: key_code) -> u8 ---
key_release_count :: proc(state: ^input_state, key: key_code) -> u8 ---
key_repeat_count :: proc(state: ^input_state, key: key_code) -> u8 ---
key_down_scancode :: proc(state: ^input_state, key: scan_code) -> c.bool ---
key_down_scancode :: proc(state: ^input_state, key: scan_code) -> bool ---
key_press_count_scancode :: proc(state: ^input_state, key: scan_code) -> u8 ---
key_release_count_scancode :: proc(state: ^input_state, key: scan_code) -> u8 ---
key_repeat_count_scancode :: proc(state: ^input_state, key: scan_code) -> u8 ---
mouse_down :: proc(state: ^input_state, button: mouse_button) -> c.bool ---
mouse_down :: proc(state: ^input_state, button: mouse_button) -> bool ---
mouse_pressed :: proc(state: ^input_state, button: mouse_button) -> u8 ---
mouse_released :: proc(state: ^input_state, button: mouse_button) -> u8 ---
mouse_clicked :: proc(state: ^input_state, button: mouse_button) -> c.bool ---
mouse_double_clicked :: proc(state: ^input_state, button: mouse_button) -> c.bool ---
mouse_clicked :: proc(state: ^input_state, button: mouse_button) -> bool ---
mouse_double_clicked :: proc(state: ^input_state, button: mouse_button) -> bool ---
mouse_position :: proc(state: ^input_state) -> vec2 ---
mouse_delta :: proc(state: ^input_state) -> vec2 ---
mouse_wheel :: proc(state: ^input_state) -> vec2 ---
input_text_utf32 :: proc(arena: ^arena, state: ^input_state) -> str32 ---
input_text_utf8 :: proc(arena: ^arena, state: ^input_state) -> str8 ---
clipboard_pasted :: proc(state: ^input_state) -> c.bool ---
clipboard_pasted :: proc(state: ^input_state) -> bool ---
clipboard_pasted_text :: proc(state: ^input_state) -> str8 ---
key_mods :: proc(state: ^input_state) -> keymod_flags ---
ui_init :: proc(_context: ^ui_context) ---
@@ -2133,28 +2128,28 @@ foreign {
ui_end_frame :: proc() ---
ui_draw :: proc() ---
ui_set_theme :: proc(theme: ^ui_theme) ---
ui_key_make_str8 :: proc(_string: str8) -> ui_key ---
ui_key_make_str8 :: proc(string: str8) -> ui_key ---
ui_key_make_path :: proc(path: str8_list) -> ui_key ---
ui_box_make_str8 :: proc(_string: str8, flags: ui_flags) -> ^ui_box ---
ui_box_begin_str8 :: proc(_string: str8, flags: ui_flags) -> ^ui_box ---
ui_box_make_str8 :: proc(string: str8, flags: ui_flags) -> ^ui_box ---
ui_box_begin_str8 :: proc(string: str8, flags: ui_flags) -> ^ui_box ---
ui_box_end :: proc() -> ^ui_box ---
ui_box_push :: proc(box: ^ui_box) ---
ui_box_pop :: proc() ---
ui_box_top :: proc() -> ^ui_box ---
ui_box_lookup_key :: proc(key: ui_key) -> ^ui_box ---
ui_box_lookup_str8 :: proc(_string: str8) -> ^ui_box ---
ui_box_lookup_str8 :: proc(string: str8) -> ^ui_box ---
ui_box_set_draw_proc :: proc(box: ^ui_box, _proc: ui_box_draw_proc, data: rawptr) ---
ui_box_closed :: proc(box: ^ui_box) -> c.bool ---
ui_box_set_closed :: proc(box: ^ui_box, closed: c.bool) ---
ui_box_active :: proc(box: ^ui_box) -> c.bool ---
ui_box_closed :: proc(box: ^ui_box) -> bool ---
ui_box_set_closed :: proc(box: ^ui_box, closed: bool) ---
ui_box_active :: proc(box: ^ui_box) -> bool ---
ui_box_activate :: proc(box: ^ui_box) ---
ui_box_deactivate :: proc(box: ^ui_box) ---
ui_box_hot :: proc(box: ^ui_box) -> c.bool ---
ui_box_set_hot :: proc(box: ^ui_box, hot: c.bool) ---
ui_box_hot :: proc(box: ^ui_box) -> bool ---
ui_box_set_hot :: proc(box: ^ui_box, hot: bool) ---
ui_box_sig :: proc(box: ^ui_box) -> ui_sig ---
ui_tag_make_str8 :: proc(_string: str8) -> ui_tag ---
ui_tag_box_str8 :: proc(box: ^ui_box, _string: str8) ---
ui_tag_next_str8 :: proc(_string: str8) ---
ui_tag_make_str8 :: proc(string: str8) -> ui_tag ---
ui_tag_box_str8 :: proc(box: ^ui_box, string: str8) ---
ui_tag_next_str8 :: proc(string: str8) ---
ui_apply_style_with_mask :: proc(dst: ^ui_style, src: ^ui_style, mask: ui_style_mask) ---
ui_pattern_push :: proc(arena: ^arena, pattern: ^ui_pattern, selector: ui_selector) ---
ui_pattern_all :: proc() -> ui_pattern ---
@@ -2165,7 +2160,7 @@ foreign {
ui_label :: proc(label: cstring) -> ui_sig ---
ui_label_str8 :: proc(label: str8) -> ui_sig ---
ui_button :: proc(label: cstring) -> ui_sig ---
ui_checkbox :: proc(name: cstring, checked: ^c.bool) -> ui_sig ---
ui_checkbox :: proc(name: cstring, checked: ^bool) -> ui_sig ---
ui_slider :: proc(name: cstring, value: ^f32) -> ^ui_box ---
ui_scrollbar :: proc(name: cstring, thumbRatio: f32, scrollValue: ^f32) -> ^ui_box ---
ui_tooltip :: proc(label: cstring) ---