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: } } } }