Some cleanup
need todo string interning next....
This commit is contained in:
57
code/ui_tests.odin
Normal file
57
code/ui_tests.odin
Normal file
@ -0,0 +1,57 @@
|
||||
package sectr
|
||||
|
||||
import "core:math/linalg"
|
||||
|
||||
test_hover_n_click :: proc()
|
||||
{
|
||||
state := get_state(); using state
|
||||
|
||||
first_btn := ui_button( "FIRST BOX!" )
|
||||
if first_btn.left_clicked || debug.frame_2_created {
|
||||
debug.frame_2_created = true
|
||||
|
||||
second_layout := first_btn.style.layout
|
||||
second_layout.pos = { 250, 0 }
|
||||
ui_set_layout( second_layout )
|
||||
|
||||
second_box := ui_button( "SECOND BOX!")
|
||||
}
|
||||
}
|
||||
|
||||
test_draggable :: proc()
|
||||
{
|
||||
state := get_state(); using state
|
||||
ui := ui_context
|
||||
|
||||
draggable := ui_widget( "Draggable Box!", UI_BoxFlags { .Mouse_Clickable, .Focusable, .Click_To_Focus } )
|
||||
|
||||
if draggable.first_frame {
|
||||
debug.draggable_box_pos = draggable.style.layout.pos
|
||||
debug.draggable_box_size = draggable.style.layout.size
|
||||
}
|
||||
|
||||
// Dragging
|
||||
if draggable.dragging {
|
||||
debug.draggable_box_pos += mouse_world_delta()
|
||||
}
|
||||
|
||||
// Resize
|
||||
if draggable.resizing
|
||||
{
|
||||
og_layout := ui_context.active_start_style.layout
|
||||
|
||||
center := debug.draggable_box_pos
|
||||
original_distance := linalg.distance(ui.cursor_active_start, center)
|
||||
cursor_distance := linalg.distance(draggable.cursor_pos, center)
|
||||
scale_factor := cursor_distance * (1 / original_distance)
|
||||
|
||||
debug.draggable_box_size = og_layout.size * scale_factor
|
||||
}
|
||||
|
||||
if ui.hot_resizable || ui.active_resizing {
|
||||
draggable.style.bg_color = Color_Blue
|
||||
}
|
||||
|
||||
draggable.style.layout.pos = debug.draggable_box_pos
|
||||
draggable.style.layout.size = debug.draggable_box_size
|
||||
}
|
Reference in New Issue
Block a user