const std = @import("std"); const dvui = @import("dvui"); const builtin = @import("builtin"); const SDLBackend = @import("backend"); const SDLCustomInit = @import("./sdlCustomInit.zig"); var g_backend: ?SDLBackend = null; pub fn main(init: std.process.Init) !void { if (builtin.os.tag == .windows) { dvui.Backend.Common.windowsAttachConsole(); } SDLBackend.enableSDLLogging(); std.log.info("SDL version: {f}", .{ SDLBackend.getSDLVersion() }); const ctx = try SDLCustomInit.initWindow(.{ .io = init.io, .title = "[bpavuk/mustfloat] SDL Standalone example", .environ_map = init.environ_map, .vsync = true, .size = .{ .h = 600, .w = 800 }, .min_size = .{ .h = 600, .w = 800 }, }, init.gpa); var backend = ctx.backend; g_backend = backend; const wayland = ctx.waylandCtx; defer backend.deinit(); defer wayland.deinit(init.gpa); _ = SDLBackend.c.SDL_EnableScreenSaver(); var window_open = true; var win = try dvui.Window.init(@src(), init.gpa, backend.backend(), .{ .theme = switch (backend.preferredColorScheme() orelse .light) { .light => dvui.Theme.builtin.adwaita_light, .dark => dvui.Theme.builtin.adwaita_dark, }, .open_flag = &window_open, }); defer win.deinit(); var interrupted = false; main_loop: while (window_open) { const nstime = win.beginWait(interrupted); try win.begin(nstime); try backend.addAllEvents(&win); const keep_running = content(); if (!keep_running) break :main_loop; const end_micros = try win.end(.{}); const wait_event_micros = win.waitTime(end_micros); interrupted = try backend.waitEventTimeout(wait_event_micros); } } fn content() bool { const backend = g_backend orelse { std.log.debug("g_backend is null", .{}); return false; }; _ = backend; var box = dvui.box(@src(), .{}, .{ .gravity_y = 0.5, .gravity_x = 0.5 }); defer box.deinit(); const hello_world = "Hello World"; dvui.label(@src(), hello_world, .{}, .{ .font = .theme(.title) }); const button = dvui.button(@src(), "Click me!", .{ .touch_drag = true, }, .{}); if (button) { std.debug.print("Pressed\n", .{}); } return true; }