summaryrefslogtreecommitdiff
path: root/tests/typeset.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-02-06 13:07:25 +0100
committerGitHub <noreply@github.com>2021-02-06 13:07:25 +0100
commitbfc2f5aefc6c407de0b699b31dafd835fc2c9be3 (patch)
tree67c23ec9df3b9f535faf5fbd443e85d9a7813d37 /tests/typeset.rs
parentdacd7dadc04d4538f1063a86afd676695c7471ab (diff)
parenta6cae89b47246a235ed7b1093747c6f3bcb64da4 (diff)
Merge pull request #17 from typst/rects
Add rectangle function 🎛
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);