diff --git a/src/app.zig b/src/app.zig index 286266b..7a378ed 100644 --- a/src/app.zig +++ b/src/app.zig @@ -929,9 +929,6 @@ pub const Project = struct { sample_rate: ?f64 = null, notes: std.ArrayListUnmanaged(u8) = .{}, - // TODO: How this to computer local settings, like appdata. Because this option shouldn't be project specific. - show_rulers: bool = true, - sample_lists: GenerationalArray(SampleList) = .{}, channels: GenerationalArray(Channel) = .{}, files: GenerationalArray(File) = .{}, @@ -1132,9 +1129,6 @@ pub const Project = struct { self.sample_rate = null; } - const show_rulers_u8 = try readInt(reader, u8); - self.show_rulers = show_rulers_u8 == 1; - { // Channels const channel_count = try readInt(reader, u32); for (0..channel_count) |_| { @@ -1246,7 +1240,6 @@ pub const Project = struct { try writeInt(writer, u8, file_format_version); try writeFloat(writer, f64, self.sample_rate orelse 0); - try writeInt(writer, u8, @intFromBool(self.show_rulers)); { // Channels try writeInt(writer, u32, @intCast(self.channels.count())); diff --git a/src/components/systems/view_controls.zig b/src/components/systems/view_controls.zig index b9a6eb6..0d42eef 100644 --- a/src/components/systems/view_controls.zig +++ b/src/components/systems/view_controls.zig @@ -169,7 +169,6 @@ cursor: ?ViewAxisPosition = null, view_settings: ?Id = null, // View id view_fullscreen: ?Id = null, // View id view_protocol_modal: ?Id = null, // View id -show_ruler: bool = false, selected_tool: enum { move, select, marker } = .move, show_marked_range: ?struct { view_id: Id, diff --git a/src/components/view.zig b/src/components/view.zig index 98da3b9..7a8e323 100644 --- a/src/components/view.zig +++ b/src/components/view.zig @@ -286,65 +286,59 @@ pub fn show(ctx: Context, view_id: Id, height: UI.Sizing) !Result { showToolbar(ctx, view_id); - if (!ctx.app.project.show_rulers) { - const graph_box = createGraphBox(ctx); - showGraph(ctx, graph_box, view_id); + const ruler_ctx = UIViewRuler.Context{ + .ui = ctx.ui, + .project = &ctx.app.project, + .view_controls = ctx.view_controls + }; - } else { - const ruler_ctx = UIViewRuler.Context{ - .ui = ctx.ui, - .project = &ctx.app.project, - .view_controls = ctx.view_controls - }; + var graph_box: *UI.Box = undefined; + var x_ruler: *UI.Box = undefined; + var y_ruler: *UI.Box = undefined; - var graph_box: *UI.Box = undefined; - var x_ruler: *UI.Box = undefined; - var y_ruler: *UI.Box = undefined; + { + const container = ui.createBox(.{ + .layout_direction = .left_to_right, + .size_x = UI.Sizing.initGrowFull(), + .size_y = UI.Sizing.initGrowFull(), + }); + container.beginChildren(); + defer container.endChildren(); - { - const container = ui.createBox(.{ - .layout_direction = .left_to_right, - .size_x = UI.Sizing.initGrowFull(), - .size_y = UI.Sizing.initGrowFull(), - }); - container.beginChildren(); - defer container.endChildren(); + y_ruler = UIViewRuler.createBox(ruler_ctx, ui.keyFromString("Y ruler"), .Y); - y_ruler = UIViewRuler.createBox(ruler_ctx, ui.keyFromString("Y ruler"), .Y); - - graph_box = createGraphBox(ctx); - } - - { - const container = ui.createBox(.{ - .layout_direction = .left_to_right, - .size_x = UI.Sizing.initGrowFull(), - .size_y = ruler_size, - }); - container.beginChildren(); - defer container.endChildren(); - - const fullscreen = ui.createBox(.{ - .key = ui.keyFromString("Fullscreen toggle"), - .size_x = ruler_size, - .size_y = ruler_size, - .background = srcery.hard_black, - .hot_cursor = .mouse_cursor_pointing_hand, - .flags = &.{ .draw_hot, .draw_active, .clickable }, - .texture = Assets.fullscreen, - .texture_size = .{ .x = 28, .y = 28 } - }); - if (ui.signal(fullscreen).clicked()) { - ctx.view_controls.toggleFullscreenView(view_id); - } - - x_ruler = UIViewRuler.createBox(ruler_ctx, ui.keyFromString("X ruler"), .X); - } - - try UIViewRuler.show(ruler_ctx, x_ruler, graph_box, view_id, .X); - try UIViewRuler.show(ruler_ctx, y_ruler, graph_box, view_id, .Y); - showGraph(ctx, graph_box, view_id); + graph_box = createGraphBox(ctx); } + { + const container = ui.createBox(.{ + .layout_direction = .left_to_right, + .size_x = UI.Sizing.initGrowFull(), + .size_y = ruler_size, + }); + container.beginChildren(); + defer container.endChildren(); + + const fullscreen = ui.createBox(.{ + .key = ui.keyFromString("Fullscreen toggle"), + .size_x = ruler_size, + .size_y = ruler_size, + .background = srcery.hard_black, + .hot_cursor = .mouse_cursor_pointing_hand, + .flags = &.{ .draw_hot, .draw_active, .clickable }, + .texture = Assets.fullscreen, + .texture_size = .{ .x = 28, .y = 28 } + }); + if (ui.signal(fullscreen).clicked()) { + ctx.view_controls.toggleFullscreenView(view_id); + } + + x_ruler = UIViewRuler.createBox(ruler_ctx, ui.keyFromString("X ruler"), .X); + } + + try UIViewRuler.show(ruler_ctx, x_ruler, graph_box, view_id, .X); + try UIViewRuler.show(ruler_ctx, y_ruler, graph_box, view_id, .Y); + showGraph(ctx, graph_box, view_id); + return result; } \ No newline at end of file diff --git a/src/main.zig b/src/main.zig index 471a268..8d989db 100644 --- a/src/main.zig +++ b/src/main.zig @@ -102,7 +102,7 @@ pub fn main() !void { try Application.init(&app, allocator); defer app.deinit(); - if (builtin.mode == .Debug) { + if (builtin.mode == .Debug and false) { var cwd_realpath_buff: [std.fs.MAX_PATH_BYTES]u8 = undefined; const cwd_realpath = try std.fs.cwd().realpath(".", &cwd_realpath_buff); diff --git a/src/screens/main_screen.zig b/src/screens/main_screen.zig index bf7d993..1242e48 100644 --- a/src/screens/main_screen.zig +++ b/src/screens/main_screen.zig @@ -342,11 +342,6 @@ fn showProjectSettings(self: *MainScreen) !void { } } - _ = ui.checkbox(.{ - .value = &project.show_rulers, - .label = "Ruler" - }); - if (ui.signal(ui.textButton("Open notes")).clicked()) { self.modal = .notes; } diff --git a/src/ui.zig b/src/ui.zig index b6967ac..7d59c50 100644 --- a/src/ui.zig +++ b/src/ui.zig @@ -1761,12 +1761,15 @@ pub fn draw(self: *UI) void { fn drawBox(self: *UI, box: *Box, on_top_pass: ?bool) void { var child_on_top_pass = on_top_pass; + var do_scissor = false; + defer if (do_scissor) self.endScissor(); + if (on_top_pass == null or box.draw_on_top == on_top_pass) { const box_rect = box.rect(); - const do_scissor = box.flags.contains(.clip_view); + do_scissor = box.flags.contains(.clip_view); if (do_scissor) self.beginScissor(box_rect); - defer if (do_scissor) self.endScissor(); + // defer if (do_scissor) rl.drawRectangleLinesEx(box_rect, 1, rl.Color.magenta); var value_shift: f32 = 0; if (box.flags.contains(.draw_active) and box.persistent.active > 0.01) { @@ -1951,6 +1954,7 @@ fn beginScissor(self: *UI, rect: Rect) void { } self.scissor_stack.appendAssumeCapacity(intersected_rect); + // rl.drawRectangleLinesEx(intersected_rect, 1, rl.Color.magenta); rl.beginScissorMode( @intFromFloat(intersected_rect.x), @@ -1962,11 +1966,13 @@ fn beginScissor(self: *UI, rect: Rect) void { fn endScissor(self: *UI) void { rl.endScissorMode(); + _ = self.scissor_stack.pop(); if (self.scissor_stack.len > 0) { const top_scissor_rect = self.scissor_stack.buffer[self.scissor_stack.len - 1]; + // rl.drawRectangleLinesEx(top_scissor_rect, 1, rl.Color.magenta); rl.endScissorMode(); rl.beginScissorMode( @intFromFloat(top_scissor_rect.x), @@ -1974,6 +1980,7 @@ fn endScissor(self: *UI) void { @intFromFloat(top_scissor_rect.width), @intFromFloat(top_scissor_rect.height) ); + } }