diff options
Diffstat (limited to 'kscurses/ui/master.jai')
| -rw-r--r-- | kscurses/ui/master.jai | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/kscurses/ui/master.jai b/kscurses/ui/master.jai deleted file mode 100644 index 9cb0702..0000000 --- a/kscurses/ui/master.jai +++ /dev/null @@ -1,105 +0,0 @@ -UI_Master :: struct { - style : UI_Style; - canvas : Canvas; - root : *UI_Elem; - should_exit := false; - - blink_stage := 0; - - before_draw : struct { - proc := (data : *void) { }; - data : *void; - }; - extra_handle : struct { - proc := (e : Event, data : *void) { }; - data : *void; - }; -} -__ui_master : UI_Master; - - -set_main_scene :: (scene : UI_Scene) { - __ui_master.root = scene.root; - set_active_recursive(scene.entry); -} -run_singlethread_ui :: () { - use_default_winch_handler(); - using __ui_master; - while 1 { - before_draw.proc(before_draw.data); - if should_exit break; - draw(*__ui_master); - reset_temporary_storage(); - handle_key(*__ui_master, ks_getch(block = false)); - if should_exit break; - } - deinit(*__ui_master); -} -run_multithread_ui :: () { - use_events(tick_duration_ms = 530); - __event_handler = .{ - proc = (e : Event, __data : *void) { - using __ui_master; - if e.type == { - case .KEY; - handle_key(*__ui_master, e.key); - case .TICK; - #if ENABLE_UI_BLINKING __ui_master.blink_stage = xx !__ui_master.blink_stage; - } - extra_handle.proc(e, extra_handle.data); - }, - data = null - }; defer __event_handler = .{}; - - using __ui_master; - - while 1 { - before_draw.proc(before_draw.data); - if should_exit break; - processed := wait_and_process_events(); - if should_exit break; - if processed { - draw(*__ui_master); - reset_temporary_storage(); - } - } - deinit(*__ui_master); -} - -#scope_file -draw :: (using ui_master : *UI_Master) { - new_zone := Ibox2.{size = terminal_state.size}; - builder : String_Builder; - - if new_zone != canvas.zone { - resize_clear(*canvas, new_zone); - } - ok := c_draw(*canvas, root, canvas.zone, *style); - if ok { - ks_draw_canvas(*canvas); - } else { - b_mode_set(*builder, style.text.default); - b_clear_screen(*builder); - b_print(*builder, .{0, 0}, style.text.debug, "screen to small: %x%", terminal_state.size.x, terminal_state.size.y); - } - b_cursor_set_visibility(*builder, terminal_state.cursor != ivec2.{-1, -1}); - if terminal_state.cursor != ivec2.{-1, -1} then b_move_cursor(*builder, terminal_state.cursor); - - ks_write(builder_to_string(*builder, allocator = temp)); -} -handle_key :: (using ui_master : *UI_Master, key : Key) { - handled := handle_key(root, key); - if handled return; - - if key == { - case .ESCAPE; { - should_exit = true; - unset_active_recursive(__last_set); - } - case; if key != .READ_ERROR ui_bell(); - } -} -deinit :: (using ui_master : *UI_Master) { - deinit(*canvas); - __ui_master = .{}; -}
\ No newline at end of file |
