renderCommands
Parameters
- self:*Self
- *Self
- queue:[]const dvui.RenderCommand
- []const dvui.RenderCommand
Source
Implementation
pub fn renderCommands(self: *Self, queue: []const dvui.RenderCommand) !void {
const old_snap = self.snap_to_pixels;
defer self.snap_to_pixels = old_snap;
const old_kern = self.kerning;
defer self.kerning = old_kern;
const old_alpha = self.alpha;
defer self.alpha = old_alpha;
const old_clip = self.clipRect;
defer self.clipRect = old_clip;
const old_rendering = self.render_target.rendering;
self.render_target.rendering = true;
defer self.render_target.rendering = old_rendering;
for (queue) |*drc| {
self.snap_to_pixels = drc.snap;
self.kerning = drc.kerning;
self.clipRect = drc.clip;
self.alpha = drc.alpha;
switch (drc.cmd) {
.text => |t| {
try dvui.renderText(t);
},
.texture => |t| {
try dvui.renderTexture(t.tex, t.rs, t.opts);
},
.pathFillConvex => |pf| {
var options = pf.opts;
options.color = options.color.opacity(self.alpha);
var triangles = try pf.path.fillConvexTriangles(self.lifo(), options);
defer triangles.deinit(self.lifo());
try dvui.renderTriangles(triangles, null);
},
.pathStroke => |ps| {
var options = ps.opts;
options.color = options.color.opacity(self.alpha);
var triangles = try ps.path.strokeTriangles(self.lifo(), options);
defer triangles.deinit(self.lifo());
try dvui.renderTriangles(triangles, null);
},
.triangles => |t| {
try dvui.renderTriangles(t.tri, t.tex);
},
}
}
}