progress
Parameters
- src:std.builtin.SourceLocation
- std.builtin.SourceLocation
- init_opts:Progress_InitOptions
- Progress_InitOptions
- opts:Options
- Options
Source
Implementation
pub fn progress(src: std.builtin.SourceLocation, init_opts: Progress_InitOptions, opts: Options) void {
const options = progress_defaults.override(opts);
var b = box(src, .{ .dir = init_opts.dir }, options);
defer b.deinit();
const rs = b.data().contentRectScale();
const corner = options.cornersGet().finalize(opts.theme).scale(rs.s, CornerRect.Physical);
rs.r.fill(corner, .{ .color = options.color(.fill), .fade = 1.0 });
const perc = @max(0, @min(1, init_opts.percent));
if (perc == 0) return;
var part = rs.r;
switch (init_opts.dir) {
.horizontal => {
part.w *= perc;
},
.vertical => {
const h = part.h * (1 - perc);
part.y += h;
part.h = rs.r.h - h;
},
}
part.fill(corner, .{ .color = init_opts.color orelse dvui.themeGet().color(.highlight, .fill), .fade = 1.0 });
if (b.data().accesskit_node()) |ak_node| {
AccessKit.nodeSetMinNumericValue(ak_node, 0);
AccessKit.nodeSetMaxNumericValue(ak_node, 100);
AccessKit.nodeSetNumericValue(ak_node, perc * 100);
}
}