From 176554fe4d1fb6b81412e2446599c22798bc6934 Mon Sep 17 00:00:00 2001 From: iddev5 Date: Wed, 1 Jun 2022 12:56:48 +0530 Subject: [PATCH] mach: Make size limits part of runtime options (mach.Options) Removed method Engine.setSizeLimits and added two new fields to mach.Options called ``size_min`` and ``size_max`` which does the same thing. --- src/Engine.zig | 4 ---- src/platform/native.zig | 11 ++++------- src/platform/wasm.zig | 3 +-- src/structs.zig | 6 ++++++ 4 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/Engine.zig b/src/Engine.zig index 1ef4c4b5..ca2ef42f 100644 --- a/src/Engine.zig +++ b/src/Engine.zig @@ -71,10 +71,6 @@ pub fn getWindowSize(engine: *Engine) structs.Size { return engine.internal.getWindowSize(); } -pub fn setSizeLimits(engine: *Engine, min: structs.SizeOptional, max: structs.SizeOptional) !void { - return engine.internal.setSizeLimits(min, max); -} - pub fn pollEvent(engine: *Engine) ?structs.Event { return engine.internal.pollEvent(); } diff --git a/src/platform/native.zig b/src/platform/native.zig index 3c2fccb8..ca478edc 100644 --- a/src/platform/native.zig +++ b/src/platform/native.zig @@ -238,6 +238,10 @@ pub const Platform = struct { pub fn setOptions(platform: *Platform, options: structs.Options) !void { try platform.window.setSize(.{ .width = options.width, .height = options.height }); try platform.window.setTitle(options.title); + try platform.window.setSizeLimits( + @bitCast(glfw.Window.SizeOptional, options.size_min), + @bitCast(glfw.Window.SizeOptional, options.size_max), + ); } pub fn setShouldClose(platform: *Platform, value: bool) void { @@ -252,13 +256,6 @@ pub const Platform = struct { return platform.last_window_size; } - pub fn setSizeLimits(platform: *Platform, min: structs.SizeOptional, max: structs.SizeOptional) !void { - try platform.window.setSizeLimits( - @bitCast(glfw.Window.SizeOptional, min), - @bitCast(glfw.Window.SizeOptional, max), - ); - } - pub fn pollEvent(platform: *Platform) ?structs.Event { if (platform.events.popFirst()) |n| { defer platform.allocator.destroy(n); diff --git a/src/platform/wasm.zig b/src/platform/wasm.zig index aeda74fc..90bfa556 100644 --- a/src/platform/wasm.zig +++ b/src/platform/wasm.zig @@ -43,6 +43,7 @@ pub const Platform = struct { } pub fn setOptions(platform: *Platform, options: structs.Options) !void { + // NOTE: size limits do not exists on wasm js.machCanvasSetSize(platform.id, options.width, options.height); const title = std.mem.span(options.title); @@ -65,8 +66,6 @@ pub const Platform = struct { }; } - pub fn setSizeLimits(_: *Platform, _: structs.SizeOptional, _: structs.SizeOptional) !void {} - pub fn pollEvent(_: *Platform) ?structs.Event { const event_type = js.machEventShift(); diff --git a/src/structs.zig b/src/structs.zig index 83b101c4..85593aae 100644 --- a/src/structs.zig +++ b/src/structs.zig @@ -25,6 +25,12 @@ pub const Options = struct { /// The height of the window. height: u32 = 480, + /// The minimum allowed size for the window. + size_min: SizeOptional = .{ .width = null, .height = null }, + + /// The maximum allowed size for the window. + size_max: SizeOptional = .{ .width = null, .height = null }, + /// Monitor synchronization modes. vsync: enums.VSyncMode = .double,