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}) outer_container := 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 = "", }, ) inner_container_config := ui.ElementConfiguration {color = cast([4]u8)rl.GREEN, label = "", margin = {16.0, 8.0}} inner_container_dimensions := ui.Dimensions {ui.Size_Percentage(1.0), ui.Size_Percentage(0.1)} for i in 0..<10 { ui.container_begin(dimensions = inner_container_dimensions, config = inner_container_config) ui.container_end() } // inner_container_dimensions := ui.Dimensions {ui.Size_Percentage(1.0), ui.Size_Percentage(1.0)} // ui.container_begin(dimensions = inner_container_dimensions, config = inner_container_config) // ui.container_end() ui.container_end() elements := ui.end() rl.BeginDrawing() defer rl.EndDrawing() rl.ClearBackground(rl.BLACK) rl.DrawRectangleRec(rl.Rectangle(ui.get_element_inner_area(outer_container^)), rl.GRAY) 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: } } } }