summaryrefslogtreecommitdiff
path: root/src/colors.zig
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 12:57:47 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:14 -0300
commit30c2c8a154e770b3920bcfd7d553825fe9182bf4 (patch)
treeecdce274f1cb25095c72f4da62b7c35e23aee04c /src/colors.zig
parent8f31fc6bfaae2d29b2bb5cc2149fcd7033cd9724 (diff)
downloadpardes-30c2c8a154e770b3920bcfd7d553825fe9182bf4.tar.gz
pardes-30c2c8a154e770b3920bcfd7d553825fe9182bf4.zip
Move the frame into draw.zig and the transitions out of layout.zig
Pure moves, no behaviour change. draw.zig holds the whole core frame in order: render, the pane, tag, header and notice painters it calls, and the character-effect composition (Pardes.render stays a declaration alias). Presentation.zig is the panel presentation state as a file struct, and animation.zig the easing curves, transition kinds, tracks and boxes, the character effects' sources and the generic displayed-value transition, all of which lived in layout.zig. layout.zig keeps only layout.
Diffstat (limited to 'src/colors.zig')
-rw-r--r--src/colors.zig9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/colors.zig b/src/colors.zig
index bb366fc0..f814d55d 100644
--- a/src/colors.zig
+++ b/src/colors.zig
@@ -5,6 +5,7 @@ const tagline = @import("tagline.zig");
const panes = @import("panes.zig");
const std = @import("std");
const layout = @import("layout.zig");
+const animation = @import("animation.zig");
const Color = @import("surface.zig").Color;
const FontRole = @import("surface.zig").FontRole;
const config = @import("config.zig");
@@ -185,15 +186,15 @@ pub const ChromeTheme = struct {
pub fn interpolate(from: ChromeTheme, to: ChromeTheme, step: u16, steps: u16) ChromeTheme {
var out: ChromeTheme = undefined;
inline for (@typeInfo(ChromeTheme).@"struct".fields) |field|
- @field(out, field.name) = layout.Animation.interpolateRgb(@field(from, field.name), @field(to, field.name), step, steps);
+ @field(out, field.name) = animation.Animation.interpolateRgb(@field(from, field.name), @field(to, field.name), step, steps);
return out;
}
};
pub const ChromeAnimation = if (theme_animation)
- layout.Animation.Transition(ChromeTheme)
+ animation.Animation.Transition(ChromeTheme)
else
- layout.Animation.Immediate(ChromeTheme);
+ animation.Animation.Immediate(ChromeTheme);
pub const initial_chrome = ChromeTheme.fromTheme(&themes[0]);
@@ -413,7 +414,7 @@ test "runtime theme changes animate chrome and retarget without a jump" {
try std.testing.expectEqualStrings("acme", p.theme().name);
try std.testing.expectEqual(midflight, p.chromeTheme().*);
try std.testing.expect(p.animationActive());
- for (0..layout.Animation.transition_steps) |_| p.update(.tick);
+ for (0..animation.Animation.transition_steps) |_| p.update(.tick);
try std.testing.expect(!p.animationActive());
try std.testing.expectEqual(ChromeTheme.fromTheme(p.theme()), p.chromeTheme().*);
// Extra ticks are inert at the exact endpoint.