diff options
| author | Gabriel Schneider <[email protected]> | 2026-07-04 00:57:06 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-08-01 15:02:07 -0300 |
| commit | e36e946f9a56c4ab1d10cef3aace20fe7d274dfa (patch) | |
| tree | baccd0be04b9b901bb74b4f3647bdb531c8dd450 /replay.zig | |
| parent | f3f0e27372d8cf111269dde674d4581cf4cb0c41 (diff) | |
| download | pardes-e36e946f9a56c4ab1d10cef3aace20fe7d274dfa.tar.gz pardes-e36e946f9a56c4ab1d10cef3aace20fe7d274dfa.zip | |
touch debug overlay: multi-touch circles with trails, finger event handling, 4x larger, fade trails, SDL GPU + WebGL overlay shaders, touch-action:none in HTML, --debug-overlay flag, pinch event dispatch for all SDL backends
Diffstat (limited to 'replay.zig')
| -rw-r--r-- | replay.zig | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -82,6 +82,7 @@ pub const Command = struct { winsize: ui.Winsize, mouse: ui.Mouse, paste: []const u8, + pinch: f32, } = .nop; }; @@ -293,6 +294,7 @@ fn render( drag: Drag, hover_col: u16, hover_row: u16, + ov_pinch_scale: f32, ) !void { var arena: std.heap.ArenaAllocator = .init(gpa); defer arena.deinit(); @@ -317,6 +319,20 @@ fn render( pane_ui.drawInteractionPreview(win, layout, rects, col_x, col_w, screen_h, drag, hover_col, hover_row, T().scroll_thumb); + // debug overlay with pinch scale + if (ov_pinch_scale != 1.0) { + var ov_buf: [64]u8 = undefined; + const s = std.fmt.bufPrint(&ov_buf, "pinch {d:6.4}", .{ov_pinch_scale}) catch ""; + if (s.len > 0) { + const ow: u16 = 16; + const oh: u16 = 2; + const ox: u16 = if (screen_w > ow) screen_w - ow else 0; + const ov = win.child(.{ .x_off = ox, .y_off = TOPBAR_H, .width = ow, .height = oh, .border = .{ .where = .all } }); + ov.fill(.{ .char = .{ .grapheme = " " }, .style = .{ .bg = rgbColor(T().scroll_track) } }); + _ = ov.printSegment(.{ .text = s, .style = .{ .fg = rgbColor(accent) } }, .{}); + } + } + try vx.render(writer); } @@ -424,6 +440,7 @@ const App = struct { drag: Drag = .none, hover_col: u16 = 0, hover_row: u16 = 0, + ov_pinch_scale: f32 = 1.0, fn init( self: *App, @@ -643,6 +660,7 @@ const App = struct { if (key.matches('q', .{}) or key.matches(ui.Key.escape, .{}) or key.matches('c', .{ .ctrl = true })) return false; }, .paste => |text| self.gpa.free(text), + .pinch => |scale| self.ov_pinch_scale = scale, .quit, .close => return false, else => {}, } @@ -659,7 +677,7 @@ const App = struct { p.rows = rows; clampScroll(p); } - try render(&self.vx, self.gpa, self.tty.writer(), self.state, self.panes, &self.rects, &self.layout, &self.col_x, &self.col_w, self.screen_w, self.screen_h, self.active, self.drag, self.hover_col, self.hover_row); + try render(&self.vx, self.gpa, self.tty.writer(), self.state, self.panes, &self.rects, &self.layout, &self.col_x, &self.col_w, self.screen_w, self.screen_h, self.active, self.drag, self.hover_col, self.hover_row, self.ov_pinch_scale); return true; } }; |
