summaryrefslogtreecommitdiff
path: root/tests/typeset.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/typeset.rs')
-rw-r--r--tests/typeset.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/tests/typeset.rs b/tests/typeset.rs
index 807d55d9..d431abfe 100644
--- a/tests/typeset.rs
+++ b/tests/typeset.rs
@@ -20,7 +20,7 @@ use typst::eval::{Args, EvalContext, Scope, State, Value, ValueFunc};
use typst::export::pdf;
use typst::font::FsIndexExt;
use typst::geom::{Length, Point, Sides, Size, Spec};
-use typst::layout::{Element, Expansion, Frame, Image};
+use typst::layout::{Element, Expansion, Fill, Frame, Geometry, Image, Shape};
use typst::library;
use typst::parse::{LineMap, Scanner};
use typst::pretty::{Pretty, Printer};
@@ -409,6 +409,9 @@ fn draw(frames: &[Frame], env: &Env, pixel_per_pt: f32) -> Canvas {
Element::Image(image) => {
draw_image(&mut canvas, pos, env, image);
}
+ Element::Geometry(geom) => {
+ draw_geometry(&mut canvas, pos, env, geom);
+ }
}
}
@@ -444,6 +447,27 @@ fn draw_text(canvas: &mut Canvas, pos: Point, env: &Env, shaped: &Shaped) {
}
}
+fn draw_geometry(canvas: &mut Canvas, pos: Point, _: &Env, element: &Geometry) {
+ let x = pos.x.to_pt() as f32;
+ let y = pos.y.to_pt() as f32;
+
+ let mut paint = Paint::default();
+
+ match &element.fill {
+ Fill::Color(c) => match c {
+ typst::color::Color::Rgba(c) => paint.set_color_rgba8(c.r, c.g, c.b, c.a),
+ },
+ Fill::Image(_) => todo!(),
+ };
+
+ match &element.shape {
+ Shape::Rect(s) => {
+ let (w, h) = (s.width.to_pt() as f32, s.height.to_pt() as f32);
+ canvas.fill_rect(Rect::from_xywh(x, y, w, h).unwrap(), &paint);
+ }
+ };
+}
+
fn draw_image(canvas: &mut Canvas, pos: Point, env: &Env, element: &Image) {
let img = &env.resources.loaded::<ImageResource>(element.res);