/* libjoltzvui — the retained-tree C ABI, painted by dvui. * * The shape crates/jolt-vidya exports on egui and crates/jolt-tui exports over * terminal cells. A caller builds a tree of nodes between frames, calls * zvui_frame() to paint it, and drains what the person did with * zvui_tree_poll_event(). * * Node ids are small positive ints; 0 is "no node". Ids are reused after a * free, but widget identity is not — see src/tree.zig. * * Every `const char *` returned here points into one scratch slot and is valid * only until the next string-returning call. Copy it if you need it longer. * Nothing here calls back: events are queued and polled. */ #ifndef JOLTZVUI_H #define JOLTZVUI_H #ifdef __cplusplus extern "C" { #endif /* The window. */ int zvui_open(int width, int height, const char *title); void zvui_close(void); int zvui_should_close(void); /* 1 once asked to quit, or with no window */ void zvui_set_title(const char *title); float zvui_screen_width(void); /* points, not pixels; 0 before frame one */ float zvui_screen_height(void); void zvui_frame(void); /* paint the whole tree once, and present */ /* The tree. */ int zvui_tree_root(void); int zvui_node_new(const char *tag); void zvui_node_free(int node); /* and everything under it */ int zvui_node_exists(int node); const char *zvui_node_tag(int node); int zvui_node_parent(int node); void zvui_node_set_str(int node, const char *key, const char *value); void zvui_node_set_num(int node, const char *key, double value); void zvui_node_set_bool(int node, const char *key, int value); void zvui_node_clear_props(int node); const char *zvui_node_get_str(int node, const char *key); double zvui_node_get_num(int node, const char *key); int zvui_node_get_bool(int node, const char *key); int zvui_node_child_count(int node); int zvui_node_child_at(int node, int index); int zvui_node_append(int parent, int child); void zvui_node_remove(int parent, int child); int zvui_node_insert_after(int parent, int child, int sibling); int zvui_node_replace(int parent, int old_child, int new_child); const char *zvui_tree_dump(int node); /* Events: poll until it answers 0, reading each with the accessors. */ int zvui_tree_poll_event(void); int zvui_tree_event_node(void); const char *zvui_tree_event_name(void); /* click | change | toggled | activate */ const char *zvui_tree_event_text(void); double zvui_tree_event_num(void); #ifdef __cplusplus } #endif #endif /* JOLTZVUI_H */