update: render widthratio
This commit is contained in:
parent
b93d6f5c81
commit
bb76e6cd44
1 changed files with 53 additions and 0 deletions
|
|
@ -252,6 +252,59 @@ pub const Renderer = struct {
|
|||
try self.renderNode(alloc, nodes, child, writer, null, parent_content);
|
||||
}
|
||||
},
|
||||
.widthratio => {
|
||||
var divisor: Value = Value{ .float = 1.0 };
|
||||
var float_divisor: f64 = 1.0;
|
||||
|
||||
var value: Value = Value{ .float = 1.0 };
|
||||
var float_value: f64 = 1.0;
|
||||
|
||||
var max_value: Value = Value{ .float = 1.0 };
|
||||
var float_max_value: f64 = 1.0;
|
||||
|
||||
if (!std.mem.eql(u8, node.widthratio.?.value, "")) {
|
||||
value = Value{ .string = node.widthratio.?.value };
|
||||
if (self.context.get(node.widthratio.?.value)) |v| {
|
||||
value = v;
|
||||
}
|
||||
float_value = switch (value) {
|
||||
.int => @as(f64, @floatFromInt(value.int)),
|
||||
.float => value.float,
|
||||
.string => std.fmt.parseFloat(f64, value.string) catch 1.0,
|
||||
else => 1.0,
|
||||
};
|
||||
}
|
||||
|
||||
if (!std.mem.eql(u8, node.widthratio.?.max_value, "")) {
|
||||
max_value = Value{ .string = node.widthratio.?.max_value };
|
||||
if (self.context.get(node.widthratio.?.max_value)) |v| {
|
||||
max_value = v;
|
||||
}
|
||||
float_max_value = switch (max_value) {
|
||||
.int => @as(f64, @floatFromInt(max_value.int)),
|
||||
.float => max_value.float,
|
||||
.string => std.fmt.parseFloat(f64, max_value.string) catch 1.0,
|
||||
else => 1.0,
|
||||
};
|
||||
}
|
||||
|
||||
if (node.widthratio.?.divisor) |div| {
|
||||
divisor = Value{ .string = div };
|
||||
if (self.context.get(div)) |d| {
|
||||
divisor = d;
|
||||
}
|
||||
float_divisor = switch (divisor) {
|
||||
.int => @as(f64, @floatFromInt(divisor.int)),
|
||||
.float => divisor.float,
|
||||
.string => std.fmt.parseFloat(f64, divisor.string) catch 0.0,
|
||||
else => 1.0,
|
||||
};
|
||||
}
|
||||
|
||||
const ratio = (float_value / float_max_value) * float_divisor;
|
||||
|
||||
try writer.writeAll(std.fmt.allocPrint(alloc, "{d}", .{ratio}) catch "0");
|
||||
},
|
||||
else => {},
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue