From: Brendan Hansen Date: Thu, 8 Jul 2021 15:42:57 +0000 (-0500) Subject: using scrolling_area instead X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=bdf5f59cbdd46f377c5bd6b3e3005d92740eee40;p=onyx-wasm-analyzer.git using scrolling_area instead --- diff --git a/src/build.onyx b/src/build.onyx index 98c6cc3..50c527a 100644 --- a/src/build.onyx +++ b/src/build.onyx @@ -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 index 0442386..0000000 --- a/src/key_handler.onyx +++ /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; -} diff --git a/src/main.onyx b/src/main.onyx index 90e221f..e4f4329 100644 --- a/src/main.onyx +++ b/src/main.onyx @@ -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 index 81b1af4..0000000 --- a/src/mouse_handler.onyx +++ /dev/null @@ -1,2 +0,0 @@ - -// #private_file events :: package js_events