Fullscreen support

This commit is contained in:
Synthasmagoria 2026-08-27 13:20:07 +02:00
commit f297962e76
2 changed files with 15 additions and 8 deletions

View file

@ -299,7 +299,7 @@ program_init :: proc(allocator := context.allocator) {
cell_size = 32.0, cell_size = 32.0,
zoom = 1.0, zoom = 1.0,
world_position = 0.0, world_position = 0.0,
world_size = {WINDOW_WIDTH, WINDOW_HEIGHT} world_size = program_screen_size()
} }
program.mouse_draggable_radius = 6.0 program.mouse_draggable_radius = 6.0
@ -339,6 +339,10 @@ program_set_animation_state :: proc(state: ProgramAnimationState) {
} }
program_update :: proc() { program_update :: proc() {
if rl.IsKeyPressed(.F4) {
rl.ToggleFullscreen()
}
ui_elements, top_bar_container, matrix_container := program_build_workspace_ui(&program.ui_context) ui_elements, top_bar_container, matrix_container := program_build_workspace_ui(&program.ui_context)
ui_overlay_elements: []ui.Element ui_overlay_elements: []ui.Element
@ -425,7 +429,9 @@ program_update :: proc() {
top_bar_container_br := rect_get_br(rect2(top_bar_container.area)) top_bar_container_br := rect_get_br(rect2(top_bar_container.area))
matrix_container_br := rect_get_br(rect2(matrix_container.area)) matrix_container_br := rect_get_br(rect2(matrix_container.area))
grid_text_clip := rect_from_area(v2{matrix_container_br.x, top_bar_container_br.y}, v2{WINDOW_WIDTH, WINDOW_HEIGHT})
program.grid.world_size = program_screen_size()
grid_text_clip := rect_from_area(v2{matrix_container_br.x, top_bar_container_br.y}, program_screen_size())
draw_grid(program.grid, rect_grow(grid_text_clip, -4.0), rect_grow(grid_text_clip, -32.0)) draw_grid(program.grid, rect_grow(grid_text_clip, -4.0), rect_grow(grid_text_clip, -32.0))
{ {
@ -525,12 +531,12 @@ program_add_rotation_matrix :: proc(angle: f32) {
} }
program_build_dialog_ui :: proc(ctx: ^ui.Context, dialog_type: ProgramDialogType) -> []ui.Element { program_build_dialog_ui :: proc(ctx: ^ui.Context, dialog_type: ProgramDialogType) -> []ui.Element {
size := v2{WINDOW_WIDTH, WINDOW_HEIGHT} size := program_screen_size()
container_margin := size * 0.33 container_margin := size * 0.33
element_margin: f32 = 4.0 element_margin: f32 = 4.0
dialog_data := &program.dialog_data dialog_data := &program.dialog_data
ui.start(ctx, V2_ZERO, {WINDOW_WIDTH, WINDOW_HEIGHT}) ui.start(ctx, V2_ZERO, program_screen_size())
ui.container_begin(ui.dimensions_auto(), {margin = container_margin, padding = 8.0}) ui.container_begin(ui.dimensions_auto(), {margin = container_margin, padding = 8.0})
ui.element(.Label, {}, {label = program_dialog_messages[program.dialog_type], color = ui.col(rl.WHITE), margin = element_margin}) ui.element(.Label, {}, {label = program_dialog_messages[program.dialog_type], color = ui.col(rl.WHITE), margin = element_margin})
switch dialog_type { switch dialog_type {
@ -557,10 +563,13 @@ program_build_dialog_ui :: proc(ctx: ^ui.Context, dialog_type: ProgramDialogType
return ui.end() return ui.end()
} }
program_screen_size :: proc() -> v2 {
return {f32(rl.GetScreenWidth()), f32(rl.GetScreenHeight())}
}
program_build_workspace_ui :: proc(ctx: ^ui.Context) -> program_build_workspace_ui :: proc(ctx: ^ui.Context) ->
(elements: []ui.Element, top_bar_container, matrix_container: ^ui.Element) { (elements: []ui.Element, top_bar_container, matrix_container: ^ui.Element) {
ui.start(ctx, {0, 0}, {WINDOW_WIDTH, WINDOW_HEIGHT}) ui.start(ctx, {0, 0}, program_screen_size())
top_bar_container_config := ui.ElementConfiguration {margin = 4.0} top_bar_container_config := ui.ElementConfiguration {margin = 4.0}
top_bar_element_margin: f32 = 4.0 top_bar_element_margin: f32 = 4.0
top_bar_container = ui.container_begin({ui.Size_Percentage(1.0), ui.Size_Pixels(48.0)}, top_bar_container_config) top_bar_container = ui.container_begin({ui.Size_Percentage(1.0), ui.Size_Pixels(48.0)}, top_bar_container_config)

View file

@ -2,6 +2,4 @@
package main package main
_register_illegal_instruction_handler :: proc() { _register_illegal_instruction_handler :: proc() {}
}