using scrolling_area instead
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 8 Jul 2021 15:42:57 +0000 (10:42 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Thu, 8 Jul 2021 15:42:57 +0000 (10:42 -0500)
src/build.onyx
src/key_handler.onyx [deleted file]
src/main.onyx
src/mouse_handler.onyx [deleted file]

index 98c6cc32a2c5700b7b3ccbe955eea671ae45da2d..50c527a1b8836b5c3d1e2e3b985d8f74f34f4450 100644 (file)
@@ -13,7 +13,6 @@
     #load "modules/bmfont/module"
 
     #load "src/main"
-    #load "src/key_handler"
 }
 
 #if (package runtime).Runtime == (package runtime).Runtime_Wasi {
diff --git a/src/key_handler.onyx b/src/key_handler.onyx
deleted file mode 100644 (file)
index 0442386..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-
-#private_file events :: package js_events
-
-Key_Count :: 256
-
-Key_State :: enum (u8) {
-    Up;
-    Down;
-    Just_Up;
-    Just_Down;
-}
-
-Key_Handler :: struct {
-    state : [Key_Count] Key_State;
-}
-
-key_handler_notify :: (use handler: ^Key_Handler, event: ^events.KeyboardEvent) {
-    transition_table :: Key_State.[
-                    /* KeyUp */   /* KeyDown */
-        /* Up */        .Up,       .Just_Down,
-        /* Down */      .Just_Up,  .Down,
-        /* Just_Up */   .Up,       .Just_Down,
-        /* Just_Down */ .Just_Up,  .Down,
-    ]
-
-    event_idx := 0 if event.kind == .KeyUp else 1;
-
-    state[event.keycode] = transition_table[cast(i32) state[event.keycode] * 2 + event_idx];
-}
-
-key_handler_is_down :: (use handler: ^Key_Handler, keycode: u32) -> bool {
-    ks := state[keycode];
-    return ks == .Down || ks == .Just_Down;
-}
-
-key_handler_is_up :: (use handler: ^Key_Handler, keycode: u32) -> bool {
-    ks := state[keycode];
-    return ks == .Up || ks == .Just_Up;
-}
-
-key_handler_just_down :: (use handler: ^Key_Handler, keycode: u32) -> bool {
-    ks := state[keycode];
-    return ks == .Just_Down;
-}
-
-key_handler_just_up :: (use handler: ^Key_Handler, keycode: u32) -> bool {
-    ks := state[keycode];
-    return ks == .Just_Up;
-}
index 90e221f0a76cc4f4391f762a5cf532390aefa0d8..e4f4329ab8b976739ff3f04c9242369c22ba2933 100644 (file)
@@ -7,8 +7,6 @@ use package core
 #private_file ui     :: package ui
 #private_file config :: package config
 
-keys : Key_Handler;
-
 search_buffer: string.String_Buffer;
 
 background_tile_texture : gfx.Texture;
@@ -119,19 +117,26 @@ poll_events :: () -> bool {
         had_event = true;
         switch event.kind {
             case .MouseDown do switch event.mouse.button {
-                case .Left  do ui.button_pressed(.Left);
-                case .Right do ui.button_pressed(.Right);
+                case .Left      do ui.button_pressed(.Left);
+                case .Right     do ui.button_pressed(.Right);
+                case .Middle    do ui.button_pressed(.Middle);
             }
 
             case .MouseUp do switch event.mouse.button {
-                case .Left  do ui.button_released(.Left);
-                case .Right do ui.button_released(.Right);
+                case .Left      do ui.button_released(.Left);
+                case .Right     do ui.button_released(.Right);
+                case .Middle    do ui.button_released(.Middle);
             }
 
             case .MouseMove do ui.update_mouse_position(~~ event.mouse.pos_x, ~~ event.mouse.pos_y);
 
+            case .MouseWheel do switch event.mouse.button {
+                case .WheelUp   do ui.button_pressed(.WheelUp);
+                case .WheelDown do ui.button_pressed(.WheelDown);
+            }
+
             case .KeyDown, .KeyUp {
-                modifiers : ui.Keyboard_State.Key_State.Modifiers;
+                modifiers : ui.Keyboard_State.Key_Event.Modifiers;
                 if event.keyboard.modifiers & .CTRL  do modifiers |= .CTRL;
                 if event.keyboard.modifiers & .ALT   do modifiers |= .ALT;
                 if event.keyboard.modifiers & .META  do modifiers |= .META;
@@ -148,8 +153,6 @@ poll_events :: () -> bool {
                 } else {
                     ui.key_up(event.keyboard.keycode, modifiers);    @KeycodeIsWrong // see above
                 }
-
-                key_handler_notify(^keys, ^event.keyboard);
             }
 
             case .Resize {
@@ -166,54 +169,6 @@ poll_events :: () -> bool {
 }
 
 update :: (dt: f32) {
-    speed :: 400.0f;
-    scale_speed :: 0.02f;
-
-    transform := gfx.global_renderer->get_transform();
-    if key_handler_is_down(^keys, 38)  do transform.translation.y += speed * dt;
-    if key_handler_is_down(^keys, 40)  do transform.translation.y -= speed * dt;
-    if key_handler_is_down(^keys, 39)  do transform.translation.x -= speed * dt;
-    if key_handler_is_down(^keys, 37)  do transform.translation.x += speed * dt;
-    if key_handler_is_down(^keys, 187) {
-        bx: f32 = (transform.translation.x - ~~(window_width / 2)) / transform.scale.x;
-        by: f32 = (transform.translation.y - ~~(window_height / 2)) / transform.scale.y;
-
-        transform.scale.x *= 1 + scale_speed;
-        transform.scale.y *= 1 + scale_speed;
-
-        transform.translation.x = bx * transform.scale.x + ~~(window_width / 2);
-        transform.translation.y = by * transform.scale.y + ~~(window_height / 2);
-    }
-    if key_handler_is_down(^keys, 189) {
-        bx: f32 = (transform.translation.x - ~~(window_width / 2)) / transform.scale.x;
-        by: f32 = (transform.translation.y - ~~(window_height / 2)) / transform.scale.y;
-
-        transform.scale.x /= 1 + scale_speed;
-        transform.scale.y /= 1 + scale_speed;
-
-        transform.translation.x = bx * transform.scale.x + ~~(window_width / 2);
-        transform.translation.y = by * transform.scale.y + ~~(window_height / 2);
-    }
-}
-
-push_state :: () -> Iterator(u8) {
-    next :: (done: ^bool) -> (u8, bool) {
-        *done = !*done;
-        if *done do return 0, false;
-
-        gfx.push_matrix();
-
-        return 0, true;
-    }
-
-    close :: (_: rawptr) {
-        gfx.pop_matrix();
-    }
-
-    done := new(bool);
-    *done = true;
-
-    return .{ done, next, close };
 }
 
 draw :: () {
@@ -222,41 +177,32 @@ draw :: () {
     gl.clear(gl.COLOR_BUFFER_BIT);
 
     window_rectangle := ui.Rectangle.{ 0, 0, ~~window_width, ~~window_height };
+    menu_bar, main_area := ui.Flow.split_horizontal(window_rectangle, top_height=32);
 
-    // m_pos := gfx.global_renderer->to_world_coordinates(.{ ui.mouse_state.x, ui.mouse_state.y });
-    // gfx.rect(.{ m_pos.x - 10, m_pos.y - 10 }, .{ 720, 720 }, color=config.Colors.primary_dark);
-    // gfx.push_scissor(m_pos.x, m_pos.y, 700, 700);
+    ui.scrollable_area_start(main_area);
 
     draw_background_lines(~~window_width, ~~window_height, line_color=config.Colors.background);
 
-    random.set_seed(32185);
-    for i: 100 {
-        x := cast(f32) random.between(0, 4000);
-        y := cast(f32) random.between(0, 4000);
-        w := cast(f32) random.between(100, 400);
-        h := cast(f32) random.between(100, 400);
-        gfx.rect(.{ x+2, y+2 }, .{ w, h }, color=config.Colors.primary_dark);
-        gfx.rect(.{ x, y }, .{ w, h }, color=config.Colors.primary);
-    }
+    ui.button(.{ 200, 300, 500, 400 }, "Test Button");
+    ui.textbox(.{ 200, 400, 500, 450 }, ^search_buffer);
 
-    // gfx.pop_scissor();
+    ui.scrollable_area_end();
 
     {
         gfx.push_matrix();
         defer gfx.pop_matrix();
         
         gfx.identity();
-        draw_menu_bar(window_rectangle);
+        draw_menu_bar(^menu_bar);
     }
 
     gfx.flush();
-    ui.clear_buttons();
+    ui.end_frame();
 }
 
 #private_file
-draw_menu_bar :: (window_rectangle: ui.Rectangle) {
-    menu_bar, _ := ui.Flow.split_horizontal(window_rectangle, top_height=32);
-
+draw_menu_bar :: (menu_bar_: ^ui.Rectangle) {
+    menu_bar := *menu_bar_;
     ui.draw_rect(menu_bar, color=config.Colors.background);
 
     menu_button_theme := ui.default_button_theme;
@@ -278,8 +224,7 @@ draw_menu_bar :: (window_rectangle: ui.Rectangle) {
     button_rect, menu_bar = ui.Flow.split_vertical(menu_bar, left_width=100);
     ui.button(button_rect, "Help", theme=^menu_button_theme);
 
-    search_rect: ui.Rectangle;
-    menu_bar, search_rect = ui.Flow.split_vertical(menu_bar, right_width=300);
+    _, search_rect := ui.Flow.split_vertical(menu_bar, right_width=300);
     ui.textbox(search_rect, ^search_buffer, theme=^menu_textbox_theme);
 }
 
diff --git a/src/mouse_handler.onyx b/src/mouse_handler.onyx
deleted file mode 100644 (file)
index 81b1af4..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-
-// #private_file events :: package js_events