72 lines
1.7 KiB
Odin
72 lines
1.7 KiB
Odin
package main
|
|
|
|
import rl "libraries/raylib"
|
|
import "base:runtime"
|
|
|
|
WINDOW_WIDTH :: 1280
|
|
WINDOW_HEIGHT :: 720
|
|
WINDOW_FRAMERATE :: 30
|
|
WINDOW_CAPTION :: "Transformation Visualizer"
|
|
|
|
init :: proc() {
|
|
rl.SetTraceLogLevel(.WARNING)
|
|
rl.SetConfigFlags({.WINDOW_RESIZABLE, .VSYNC_HINT})
|
|
rl.InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_CAPTION)
|
|
rl.SetTargetFPS(WINDOW_FRAMERATE)
|
|
}
|
|
|
|
update :: proc() {
|
|
rl.BeginDrawing()
|
|
defer rl.EndDrawing()
|
|
rl.ClearBackground(rl.BLACK)
|
|
|
|
ui_style := UiStyle{margin = 4.0, padding = 4.0}
|
|
ui_state: UiState
|
|
ui_init(&ui_state, ui_style, {0, 0}, context.temp_allocator)
|
|
ui_start(&ui_state)
|
|
ui_container_begin(&ui_state, {label = ""})
|
|
ui_button_size := v2{192.0, 32.0}
|
|
ui_button(&ui_state, ui_button_size, {label = "Hi"})
|
|
ui_same_line(&ui_state)
|
|
ui_button(&ui_state, ui_button_size, {label = "Hi"})
|
|
ui_same_line(&ui_state)
|
|
ui_button(&ui_state, ui_button_size, {label = "Hi"})
|
|
ui_container_end(&ui_state)
|
|
ui_elements := ui_end(ui_state)
|
|
|
|
for element in ui_elements {
|
|
switch element.type {
|
|
case .Button:
|
|
data := element.data.(UiElementData_Button)
|
|
rl.GuiButton(element.area, data.label)
|
|
case .Input:
|
|
case .Container:
|
|
data := element.data.(UiElementData_Container)
|
|
if len(data.label) == 0 {
|
|
rl.DrawRectangleRoundedLinesEx(element.area, 0.1, 2, 1.0, rl.WHITE)
|
|
} else {
|
|
rl.GuiGroupBox(element.area, data.label)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
free_all(context.temp_allocator)
|
|
}
|
|
|
|
parent_window_size_changed :: proc(w, h: int) {
|
|
rl.SetWindowSize(i32(w), i32(h))
|
|
}
|
|
|
|
shutdown :: proc() {
|
|
rl.CloseWindow()
|
|
}
|
|
|
|
should_run :: proc() -> bool {
|
|
when ODIN_OS != .JS {
|
|
if rl.WindowShouldClose() {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|