snths_ui/example/main.odin

62 lines
1.3 KiB
Odin

package main
import rl "vendor:raylib"
import ui ".."
import "core:fmt"
WINDOW_WIDTH :: 1280
WINDOW_HEIGHT :: 720
WINDOW_CAPTION :: "Immediate mode GUI"
WINDOW_FRAMERATE :: 60
main :: proc() {
rl.SetTraceLogLevel(.WARNING)
rl.InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, WINDOW_CAPTION)
defer rl.CloseWindow()
rl.SetTargetFPS(WINDOW_FRAMERATE)
ctx: ui.Context
ui.init(&ctx, 4000)
for !rl.WindowShouldClose() {
ui.start(&ctx, {0, 0})
ui.container_begin(
dimensions = {ui.Size_Pixels(WINDOW_WIDTH), ui.Size_Pixels(WINDOW_HEIGHT)},
config = {
margin = {4.0, 8.0},
padding = {12.0, 24.0},
color = cast([4]u8)rl.RED,
label = "",
},
)
ui.container_begin(
dimensions = {ui.Size_Percentage(1.0), ui.Size_Percentage(0.1)},
config = {
margin = {0.0, 0.0},
padding = {0.0, 0.0},
color = cast([4]u8)rl.GREEN,
label = "",
},
)
ui.container_end()
ui.container_end()
elements := ui.end()
rl.BeginDrawing()
defer rl.EndDrawing()
rl.ClearBackground(rl.BLACK)
for element in elements {
switch element.type {
case .Container:
area := rl.Rectangle(element.area)
if len(element.label) == 0 {
rl.DrawRectangleRoundedLinesEx(area, 0.1, 4.0, 1.0, rl.Color(element.color))
} else {
rl.GuiLabel(area, element.label)
}
case .Button:
}
}
}
}