68 lines
1.5 KiB
Odin
68 lines
1.5 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}, {WINDOW_WIDTH, WINDOW_HEIGHT})
|
|
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 = {
|
|
color = cast([4]u8)rl.GREEN,
|
|
label = "",
|
|
},
|
|
)
|
|
ui.container_end()
|
|
ui.container_begin(
|
|
dimensions = {ui.Size_Percentage(1.0), ui.Size_Percentage(0.1)},
|
|
config = {
|
|
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:
|
|
}
|
|
}
|
|
}
|
|
}
|