From 0a974d86ba921af781a6c9d75961b92351a5f28e Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 22 Nov 2021 15:26:56 +0100 Subject: [PATCH] Welcome to Tigerland --- src/export/pdf.rs | 34 +++++++++++---------- src/frame.rs | 38 ++++++++++++------------ src/library/image.rs | 12 +++++++- tests/ref/layout/background.png | Bin 0 -> 80160 bytes tests/typ/layout/background.typ | 18 +++++++++++ tests/typeset.rs | 51 ++++++++++++++++++-------------- 6 files changed, 96 insertions(+), 57 deletions(-) create mode 100644 tests/ref/layout/background.png create mode 100644 tests/typ/layout/background.typ diff --git a/src/export/pdf.rs b/src/export/pdf.rs index b807d0598..b12ee7716 100644 --- a/src/export/pdf.rs +++ b/src/export/pdf.rs @@ -14,7 +14,7 @@ use ttf_parser::{name_id, GlyphId, Tag}; use super::subset; use crate::font::{find_name, FaceId, FontStore}; -use crate::frame::{Element, Frame, Geometry, Shape, Stroke, Text}; +use crate::frame::{Element, Frame, Geometry, Group, Shape, Stroke, Text}; use crate::geom::{self, Color, Em, Length, Paint, Size}; use crate::image::{Image, ImageId, ImageStore}; use crate::Context; @@ -369,18 +369,6 @@ impl<'a> PageExporter<'a> { /// Write a frame into the content stream. fn write_frame(&mut self, x: f32, y: f32, frame: &Frame) { - if frame.clips { - let w = frame.size.w.to_f32(); - let h = frame.size.h.to_f32(); - self.content.save_state(); - self.content.move_to(x, y); - self.content.line_to(x + w, y); - self.content.line_to(x + w, y - h); - self.content.line_to(x, y - h); - self.content.clip_nonzero(); - self.content.end_path(); - } - for (offset, element) in &frame.elements { // Make sure the content stream is in the correct state. match element { @@ -401,10 +389,10 @@ impl<'a> PageExporter<'a> { let y = y - offset.y.to_f32(); match *element { + Element::Group(ref group) => self.write_group(x, y, group), Element::Text(ref text) => self.write_text(x, y, text), Element::Shape(ref shape) => self.write_shape(x, y, shape), Element::Image(id, size) => self.write_image(x, y, id, size), - Element::Frame(ref frame) => self.write_frame(x, y, frame), Element::Link(_, _) => {} } } @@ -412,8 +400,24 @@ impl<'a> PageExporter<'a> { if self.in_text_state { self.content.end_text(); } + } - if frame.clips { + fn write_group(&mut self, x: f32, y: f32, group: &Group) { + if group.clips { + let w = group.frame.size.w.to_f32(); + let h = group.frame.size.h.to_f32(); + self.content.save_state(); + self.content.move_to(x, y); + self.content.line_to(x + w, y); + self.content.line_to(x + w, y - h); + self.content.line_to(x, y - h); + self.content.clip_nonzero(); + self.content.end_path(); + } + + self.write_frame(x, y, &group.frame); + + if group.clips { self.content.restore_state(); } } diff --git a/src/frame.rs b/src/frame.rs index 9f1b1c284..7862e0054 100644 --- a/src/frame.rs +++ b/src/frame.rs @@ -16,8 +16,6 @@ pub struct Frame { pub size: Size, /// The baseline of the frame measured from the top. pub baseline: Length, - /// Whether this frame should be a clipping boundary. - pub clips: bool, /// The elements composing this layout. pub elements: Vec<(Point, Element)>, } @@ -27,12 +25,7 @@ impl Frame { #[track_caller] pub fn new(size: Size, baseline: Length) -> Self { assert!(size.is_finite()); - Self { - size, - baseline, - elements: vec![], - clips: false, - } + Self { size, baseline, elements: vec![] } } /// Add an element at a position in the background. @@ -45,17 +38,16 @@ impl Frame { self.elements.push((pos, element)); } - /// Add a frame element. - pub fn push_frame(&mut self, pos: Point, subframe: Rc) { - self.elements.push((pos, Element::Frame(subframe))) + /// Add a group element. + pub fn push_frame(&mut self, pos: Point, frame: Rc) { + self.elements + .push((pos, Element::Group(Group { frame, clips: false }))) } /// Add all elements of another frame, placing them relative to the given /// position. pub fn merge_frame(&mut self, pos: Point, subframe: Self) { - if subframe.clips { - self.push_frame(pos, Rc::new(subframe)); - } else if pos == Point::zero() && self.elements.is_empty() { + if pos == Point::zero() && self.elements.is_empty() { self.elements = subframe.elements; } else { for (subpos, child) in subframe.elements { @@ -90,7 +82,6 @@ impl Debug for Frame { f.debug_struct("Frame") .field("size", &self.size) .field("baseline", &self.baseline) - .field("clips", &self.clips) .field("children", &Children(&self.elements)) .finish() } @@ -107,9 +98,9 @@ impl<'a> Iterator for Elements<'a> { fn next(&mut self) -> Option { let (cursor, offset, frame) = self.stack.last_mut()?; if let Some((pos, e)) = frame.elements.get(*cursor) { - if let Element::Frame(f) = e { + if let Element::Group(g) = e { let new_offset = *offset + *pos; - self.stack.push((0, new_offset, f.as_ref())); + self.stack.push((0, new_offset, g.frame.as_ref())); self.next() } else { *cursor += 1; @@ -128,6 +119,8 @@ impl<'a> Iterator for Elements<'a> { /// The building block frames are composed of. #[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] pub enum Element { + /// A group of elements. + Group(Group), /// A run of shaped text. Text(Text), /// A geometric shape with optional fill and stroke. @@ -136,8 +129,15 @@ pub enum Element { Image(ImageId, Size), /// A link to an external resource and its trigger region. Link(String, Size), - /// A subframe, which can be a clipping boundary. - Frame(Rc), +} + +/// A group of elements with optional clipping. +#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)] +pub struct Group { + /// The group's frame. + pub frame: Rc, + /// Whether the frame should be a clipping boundary. + pub clips: bool, } /// A run of shaped text. diff --git a/src/library/image.rs b/src/library/image.rs index 8b85a53fd..b0d66a636 100644 --- a/src/library/image.rs +++ b/src/library/image.rs @@ -75,12 +75,22 @@ impl Layout for ImageNode { // The position of the image so that it is centered in the canvas. let mut frame = Frame::new(canvas, canvas.h); - frame.clips = self.fit == ImageFit::Cover; frame.push( (canvas - size).to_point() / 2.0, Element::Image(self.id, size), ); + // Create a clipping group if the image mode is `cover`. + if self.fit == ImageFit::Cover { + let group = Group { + frame: Rc::new(frame), + clips: self.fit == ImageFit::Cover, + }; + + frame = Frame::new(canvas, canvas.h); + frame.push(Point::zero(), Element::Group(group)); + } + let mut cts = Constraints::new(regions.expand); cts.exact = regions.current.to_spec().map(Some); vec![frame.constrain(cts)] diff --git a/tests/ref/layout/background.png b/tests/ref/layout/background.png new file mode 100644 index 0000000000000000000000000000000000000000..805139f54655c145926e74b898cb9a9ffa62bab3 GIT binary patch literal 80160 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⁢?pKCGIPCnuY-Y^4Any;FTgz5dKEy-fg5k`E07 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

m=1Lf8Z*zZwo2j1 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 literal 0 HcmV?d00001 diff --git a/tests/typ/layout/background.typ b/tests/typ/layout/background.typ new file mode 100644 index 000000000..81c8c99dc --- /dev/null +++ b/tests/typ/layout/background.typ @@ -0,0 +1,18 @@ +// Test placing a background image on a page. + +--- +#page(paper: "a10", flip: true) +#font(fill: white) +#place( + dx: -10pt, + dy: -10pt, + image( + "../../res/tiger.jpg", + fit: "cover", + width: 100% + 20pt, + height: 100% + 20pt, + ) +) +#align(bottom, right)[ + _Welcome to_ #underline[*Tigerland*] +] diff --git a/tests/typeset.rs b/tests/typeset.rs index 6a21cf7b4..6f85125ef 100644 --- a/tests/typeset.rs +++ b/tests/typeset.rs @@ -12,7 +12,7 @@ use walkdir::WalkDir; use typst::diag::Error; use typst::eval::{Smart, Value}; use typst::font::Face; -use typst::frame::{Element, Frame, Geometry, Shape, Stroke, Text}; +use typst::frame::{Element, Frame, Geometry, Group, Shape, Stroke, Text}; use typst::geom::{self, Color, Length, Paint, PathElement, RgbaColor, Sides, Size}; use typst::image::Image; use typst::layout::layout; @@ -431,30 +431,15 @@ fn draw_frame( ctx: &Context, frame: &Frame, ) { - let mut storage; - let mask = if frame.clips { - let w = frame.size.w.to_f32(); - let h = frame.size.h.to_f32(); - let rect = sk::Rect::from_xywh(0.0, 0.0, w, h).unwrap(); - let path = sk::PathBuilder::from_rect(rect).transform(ts).unwrap(); - let rule = sk::FillRule::default(); - storage = mask.clone(); - if storage.intersect_path(&path, rule, false).is_none() { - // Fails if clipping rect is empty. In that case we just clip everything - // by returning. - return; - } - &storage - } else { - mask - }; - for (pos, element) in &frame.elements { let x = pos.x.to_f32(); let y = pos.y.to_f32(); let ts = ts.pre_translate(x, y); match *element { + Element::Group(ref group) => { + draw_group(canvas, ts, mask, ctx, group); + } Element::Text(ref text) => { draw_text(canvas, ts, mask, ctx.fonts.get(text.face_id), text); } @@ -469,13 +454,35 @@ fn draw_frame( let shape = Shape::filled(Geometry::Rect(s), fill); draw_shape(canvas, ts, mask, &shape); } - Element::Frame(ref frame) => { - draw_frame(canvas, ts, mask, ctx, frame); - } } } } +fn draw_group( + canvas: &mut sk::Pixmap, + ts: sk::Transform, + mask: &sk::ClipMask, + ctx: &Context, + group: &Group, +) { + if group.clips { + let w = group.frame.size.w.to_f32(); + let h = group.frame.size.h.to_f32(); + let rect = sk::Rect::from_xywh(0.0, 0.0, w, h).unwrap(); + let path = sk::PathBuilder::from_rect(rect).transform(ts).unwrap(); + let rule = sk::FillRule::default(); + let mut mask = mask.clone(); + if mask.intersect_path(&path, rule, false).is_none() { + // Fails if clipping rect is empty. In that case we just clip everything + // by returning. + return; + } + draw_frame(canvas, ts, &mask, ctx, &group.frame); + } else { + draw_frame(canvas, ts, mask, ctx, &group.frame); + }; +} + fn draw_text( canvas: &mut sk::Pixmap, ts: sk::Transform,