lib/zen/src/diagram/stack.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2
3 const root = @import("root.zig");
4
5 const spec = root.spec;
6
7 pub fn base(marks: []const spec.Mark, x: []const u8, y: f64) f64 {
8 var result: f64 = 0;
9 for (marks) |mark| {
10 switch (mark) {
11 .bar => |bar| {
12 if (std.mem.eql(u8, bar.x, x) and (bar.y >= 0) == (y >= 0)) result += bar.y;
13 },
14 else => {},
15 }
16 }
17 return result;
18 }
19
20 pub fn has(document: *const spec.Document) bool {
21 for (document.transforms.items) |transform| {
22 switch (transform) {
23 .stack => |stack| if (stack.mark.len == 0 or std.mem.eql(u8, stack.mark, "bar")) return true,
24 }
25 }
26 return false;
27 }