From f7e8624b4cf31744d600167dd7f3a9d9d1626014 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Wed, 5 Jan 2022 14:49:14 +0100 Subject: [PATCH] Refactor --- src/eval/class.rs | 2 +- src/eval/styles.rs | 52 ++++++++++++++++++------------------ src/geom/spec.rs | 17 +++++++++--- src/library/align.rs | 56 +++++++++++++++++++-------------------- src/library/columns.rs | 2 +- src/library/heading.rs | 18 ++++++------- src/library/image.rs | 19 ++++++++----- src/library/link.rs | 21 +++++---------- src/library/list.rs | 35 +++++++++++------------- src/library/page.rs | 50 +++++++++++++++++----------------- src/library/placed.rs | 2 +- src/library/shape.rs | 9 +++++-- src/library/text.rs | 5 ++-- tests/ref/text/links.png | Bin 22561 -> 23388 bytes 14 files changed, 149 insertions(+), 139 deletions(-) diff --git a/src/eval/class.rs b/src/eval/class.rs index 15e1f2499..5682cb4d3 100644 --- a/src/eval/class.rs +++ b/src/eval/class.rs @@ -84,7 +84,7 @@ impl Class { impl Debug for Class { fn fmt(&self, f: &mut Formatter) -> fmt::Result { f.write_str("') } } diff --git a/src/eval/styles.rs b/src/eval/styles.rs index f8413feb1..d7c17b92f 100644 --- a/src/eval/styles.rs +++ b/src/eval/styles.rs @@ -70,8 +70,8 @@ impl StyleMap { /// `outer`. The ones from `self` take precedence over the ones from /// `outer`. For folded properties `self` contributes the inner value. pub fn chain<'a>(&'a self, outer: &'a StyleChain<'a>) -> StyleChain<'a> { + // No need to chain an empty map. if self.is_empty() { - // No need to chain an empty map. *outer } else { StyleChain { inner: self, outer: Some(outer) } @@ -86,12 +86,12 @@ impl StyleMap { /// style maps, whereas `chain` would be used during layouting to combine /// immutable style maps from different levels of the hierarchy. pub fn apply(&mut self, outer: &Self) { - 'outer: for outer in &outer.0 { - for inner in &mut self.0 { - if inner.style_id() == outer.style_id() { - inner.fold(outer); - continue 'outer; - } + for outer in &outer.0 { + if let Some(inner) = + self.0.iter_mut().find(|inner| inner.style_id() == outer.style_id()) + { + *inner = inner.fold(outer); + continue; } self.0.push(outer.clone()); @@ -158,16 +158,16 @@ impl<'a> StyleChain<'a> { /// Get the (folded) value of a copyable style property. /// + /// This is the method you should reach for first. If it doesn't work + /// because your property is not copyable, use `get_ref`. If that doesn't + /// work either because your property needs folding, use `get_cloned`. + /// /// Returns the property's default value if no map in the chain contains an /// entry for it. - pub fn get

(self, key: P) -> P::Value + pub fn get(self, key: P) -> P::Value where - P: Property, P::Value: Copy, { - // This exists separately to `get_cloned` for `Copy` types so that - // people don't just naively use `get` / `get_cloned` where they should - // use `get_ref`. self.get_cloned(key) } @@ -177,13 +177,13 @@ impl<'a> StyleChain<'a> { /// Prefer `get` if possible or resort to `get_cloned` for non-`Copy` /// properties that need folding. /// - /// Returns a reference to the property's default value if no map in the - /// chain contains an entry for it. - pub fn get_ref

(self, key: P) -> &'a P::Value + /// Returns a lazily-initialized reference to the property's default value + /// if no map in the chain contains an entry for it. + pub fn get_ref(self, key: P) -> &'a P::Value where - P: Property + Nonfolding, + P: Nonfolding, { - if let Some(value) = self.get_locally(key) { + if let Some(value) = self.find(key) { value } else if let Some(outer) = self.outer { outer.get_ref(key) @@ -197,11 +197,11 @@ impl<'a> StyleChain<'a> { /// While this works for all properties, you should prefer `get` or /// `get_ref` where possible. This is only needed for non-`Copy` properties /// that need folding. - pub fn get_cloned

(self, key: P) -> P::Value - where - P: Property, - { - if let Some(value) = self.get_locally(key).cloned() { + /// + /// Returns the property's default value if no map in the chain contains an + /// entry for it. + pub fn get_cloned(self, key: P) -> P::Value { + if let Some(value) = self.find(key).cloned() { if P::FOLDABLE { if let Some(outer) = self.outer { P::fold(value, outer.get_cloned(key)) @@ -218,8 +218,8 @@ impl<'a> StyleChain<'a> { } } - /// Find a property directly in the most local map. - fn get_locally(&self, _: P) -> Option<&'a P::Value> { + /// Find a property directly in the localmost map. + fn find(self, _: P) -> Option<&'a P::Value> { self.inner .0 .iter() @@ -309,8 +309,8 @@ impl Entry { self.0.as_any().downcast_ref() } - fn fold(&mut self, outer: &Self) { - *self = self.0.fold(outer); + fn fold(&self, outer: &Self) -> Self { + self.0.fold(outer) } } diff --git a/src/geom/spec.rs b/src/geom/spec.rs index 40d7386bb..cf75f42d9 100644 --- a/src/geom/spec.rs +++ b/src/geom/spec.rs @@ -85,10 +85,19 @@ impl Spec { } } -impl Spec -where - T: Ord, -{ +impl Spec { + /// Create a new instance with y set to its default value. + pub fn with_x(x: T) -> Self { + Self { x, y: T::default() } + } + + /// Create a new instance with x set to its default value. + pub fn with_y(y: T) -> Self { + Self { x: T::default(), y } + } +} + +impl Spec { /// The component-wise minimum of this and another instance. pub fn min(self, other: Self) -> Self { Self { diff --git a/src/library/align.rs b/src/library/align.rs index 327352445..e8dfabb1b 100644 --- a/src/library/align.rs +++ b/src/library/align.rs @@ -7,33 +7,7 @@ use super::ParNode; pub fn align(_: &mut EvalContext, args: &mut Args) -> TypResult { let aligns: Spec<_> = args.find().unwrap_or_default(); let body: PackedNode = args.expect("body")?; - - let mut styles = StyleMap::new(); - if let Some(align) = aligns.x { - styles.set(ParNode::ALIGN, align); - } - - Ok(Value::block(body.styled(styles).aligned(aligns))) -} - -dynamic! { - Align: "alignment", -} - -dynamic! { - Spec: "2d alignment", -} - -castable! { - Spec>, - Expected: "1d or 2d alignment", - @align: Align => { - let mut aligns = Spec::default(); - aligns.set(align.axis(), Some(*align)); - aligns - }, - @aligns: Spec => aligns.map(Some), - + Ok(Value::block(body.aligned(aligns))) } /// A node that aligns its child. @@ -56,8 +30,14 @@ impl Layout for AlignNode { let mut pod = regions.clone(); pod.expand &= self.aligns.map_is_none(); + // Align paragraphs inside the child. + let mut passed = StyleMap::new(); + if let Some(align) = self.aligns.x { + passed.set(ParNode::ALIGN, align); + } + // Layout the child. - let mut frames = self.child.layout(ctx, &pod, styles); + let mut frames = self.child.layout(ctx, &pod, passed.chain(&styles)); for ((current, base), Constrained { item: frame, cts }) in regions.iter().zip(&mut frames) @@ -78,3 +58,23 @@ impl Layout for AlignNode { frames } } + +dynamic! { + Align: "alignment", +} + +dynamic! { + Spec: "2d alignment", +} + +castable! { + Spec>, + Expected: "1d or 2d alignment", + @align: Align => { + let mut aligns = Spec::default(); + aligns.set(align.axis(), Some(*align)); + aligns + }, + @aligns: Spec => aligns.map(Some), + +} diff --git a/src/library/columns.rs b/src/library/columns.rs index 17ae6058f..ce02b5084 100644 --- a/src/library/columns.rs +++ b/src/library/columns.rs @@ -98,7 +98,7 @@ impl Layout for ColumnsNode { // case, the frame is first created with zero height and then // resized. let height = if regions.expand.y { current.y } else { Length::zero() }; - let mut output = Frame::new(Spec::new(regions.current.x, height)); + let mut output = Frame::new(Size::new(regions.current.x, height)); let mut cursor = Length::zero(); for _ in 0 .. columns { diff --git a/src/library/heading.rs b/src/library/heading.rs index 111472f44..3591ea0c0 100644 --- a/src/library/heading.rs +++ b/src/library/heading.rs @@ -6,18 +6,18 @@ use super::{FontFamily, TextNode}; /// A section heading. #[derive(Debug, Hash)] pub struct HeadingNode { - /// The node that produces the heading's contents. - pub child: PackedNode, /// The logical nesting depth of the section, starting from one. In the /// default style, this controls the text size of the heading. pub level: usize, + /// The node that produces the heading's contents. + pub child: PackedNode, } #[properties] impl HeadingNode { /// The heading's font family. pub const FAMILY: Smart = Smart::Auto; - /// The fill color of heading in the text. Just the surrounding text color + /// The fill color of text in the heading. Just the surrounding text color /// if `auto`. pub const FILL: Smart = Smart::Auto; } @@ -48,12 +48,12 @@ impl Layout for HeadingNode { ) -> Vec>> { let upscale = (1.6 - 0.1 * self.level as f64).max(0.75); - let mut local = StyleMap::new(); - local.set(TextNode::STRONG, true); - local.set(TextNode::SIZE, Relative::new(upscale).into()); + let mut passed = StyleMap::new(); + passed.set(TextNode::STRONG, true); + passed.set(TextNode::SIZE, Relative::new(upscale).into()); if let Smart::Custom(family) = styles.get_ref(Self::FAMILY) { - local.set( + passed.set( TextNode::FAMILY_LIST, std::iter::once(family) .chain(styles.get_ref(TextNode::FAMILY_LIST)) @@ -63,9 +63,9 @@ impl Layout for HeadingNode { } if let Smart::Custom(fill) = styles.get(Self::FILL) { - local.set(TextNode::FILL, fill); + passed.set(TextNode::FILL, fill); } - self.child.layout(ctx, regions, local.chain(&styles)) + self.child.layout(ctx, regions, passed.chain(&styles)) } } diff --git a/src/library/image.rs b/src/library/image.rs index 2b91b2fca..c5cb9aebf 100644 --- a/src/library/image.rs +++ b/src/library/image.rs @@ -3,18 +3,13 @@ use std::io; use super::prelude::*; -use super::LinkNode; use crate::diag::Error; use crate::image::ImageId; /// `image`: An image. pub fn image(ctx: &mut EvalContext, args: &mut Args) -> TypResult { - let path = args.expect::>("path to image file")?; - let width = args.named("width")?; - let height = args.named("height")?; - let fit = args.named("fit")?.unwrap_or_default(); - // Load the image. + let path = args.expect::>("path to image file")?; let full = ctx.make_path(&path.v); let id = ctx.images.load(&full).map_err(|err| { Error::boxed(path.span, match err.kind() { @@ -23,6 +18,10 @@ pub fn image(ctx: &mut EvalContext, args: &mut Args) -> TypResult { }) })?; + let width = args.named("width")?; + let height = args.named("height")?; + let fit = args.named("fit")?.unwrap_or_default(); + Ok(Value::inline( ImageNode { id, fit }.pack().sized(Spec::new(width, height)), )) @@ -37,6 +36,12 @@ pub struct ImageNode { pub fit: ImageFit, } +#[properties] +impl ImageNode { + /// An URL the image should link to. + pub const LINK: Option = None; +} + impl Layout for ImageNode { fn layout( &self, @@ -90,7 +95,7 @@ impl Layout for ImageNode { } // Apply link if it exists. - if let Some(url) = styles.get_ref(LinkNode::URL) { + if let Some(url) = styles.get_ref(Self::LINK) { frame.link(url); } diff --git a/src/library/link.rs b/src/library/link.rs index d1d7842df..1050963c6 100644 --- a/src/library/link.rs +++ b/src/library/link.rs @@ -1,9 +1,10 @@ //! Hyperlinking. use super::prelude::*; +use super::{ImageNode, ShapeNode, TextNode}; use crate::util::EcoString; -/// `link`: Link text or other elements. +/// `link`: Link text and other elements to an URL. pub fn link(_: &mut EvalContext, args: &mut Args) -> TypResult { let url: String = args.expect::("url")?.into(); let body = args.find().unwrap_or_else(|| { @@ -14,17 +15,9 @@ pub fn link(_: &mut EvalContext, args: &mut Args) -> TypResult { Node::Text(text.into()) }); - Ok(Value::Node( - body.styled(StyleMap::with(LinkNode::URL, Some(url))), - )) -} - -/// Host for link styles. -#[derive(Debug, Hash)] -pub struct LinkNode; - -#[properties] -impl LinkNode { - /// An URL to link to. - pub const URL: Option = None; + let mut passed = StyleMap::new(); + passed.set(TextNode::LINK, Some(url.clone())); + passed.set(ImageNode::LINK, Some(url.clone())); + passed.set(ShapeNode::LINK, Some(url)); + Ok(Value::Node(body.styled(passed))) } diff --git a/src/library/list.rs b/src/library/list.rs index a9dfbec50..bbdc400ae 100644 --- a/src/library/list.rs +++ b/src/library/list.rs @@ -50,26 +50,23 @@ impl Layout for ListNode { let label_indent = styles.get(Self::LABEL_INDENT).resolve(em); let body_indent = styles.get(Self::BODY_INDENT).resolve(em); - let columns = vec![ - TrackSizing::Linear(label_indent.into()), - TrackSizing::Auto, - TrackSizing::Linear(body_indent.into()), - TrackSizing::Auto, - ]; - - let children = vec![ - PackedNode::default(), - Node::Text(self.labelling.label()).into_block(), - PackedNode::default(), - self.child.clone(), - ]; - - GridNode { - tracks: Spec::new(columns, vec![]), + let grid = GridNode { + tracks: Spec::with_x(vec![ + TrackSizing::Linear(label_indent.into()), + TrackSizing::Auto, + TrackSizing::Linear(body_indent.into()), + TrackSizing::Auto, + ]), gutter: Spec::default(), - children, - } - .layout(ctx, regions, styles) + children: vec![ + PackedNode::default(), + Node::Text(self.labelling.label()).into_block(), + PackedNode::default(), + self.child.clone(), + ], + }; + + grid.layout(ctx, regions, styles) } } diff --git a/src/library/page.rs b/src/library/page.rs index 69be2bb7b..fa9345f52 100644 --- a/src/library/page.rs +++ b/src/library/page.rs @@ -166,31 +166,6 @@ pub fn pagebreak(_: &mut EvalContext, _: &mut Args) -> TypResult { Ok(Value::Node(Node::Pagebreak)) } -/// Defines default margins for a class of related papers. -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -pub enum PaperClass { - Custom, - Base, - US, - Newspaper, - Book, -} - -impl PaperClass { - /// The default margins for this page class. - fn default_margins(self) -> Sides { - let f = |r| Relative::new(r).into(); - let s = |l, t, r, b| Sides::new(f(l), f(t), f(r), f(b)); - match self { - Self::Custom => s(0.1190, 0.0842, 0.1190, 0.0842), - Self::Base => s(0.1190, 0.0842, 0.1190, 0.0842), - Self::US => s(0.1760, 0.1092, 0.1760, 0.0910), - Self::Newspaper => s(0.0455, 0.0587, 0.0455, 0.0294), - Self::Book => s(0.1200, 0.0852, 0.1500, 0.0965), - } - } -} - /// Specification of a paper. #[derive(Debug, Copy, Clone)] pub struct Paper { @@ -413,6 +388,31 @@ castable! { Value::Str(string) => Paper::from_str(&string).map_err(|e| e.to_string())?, } +/// Defines default margins for a class of related papers. +#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] +pub enum PaperClass { + Custom, + Base, + US, + Newspaper, + Book, +} + +impl PaperClass { + /// The default margins for this page class. + fn default_margins(self) -> Sides { + let f = |r| Relative::new(r).into(); + let s = |l, t, r, b| Sides::new(f(l), f(t), f(r), f(b)); + match self { + Self::Custom => s(0.1190, 0.0842, 0.1190, 0.0842), + Self::Base => s(0.1190, 0.0842, 0.1190, 0.0842), + Self::US => s(0.1760, 0.1092, 0.1760, 0.0910), + Self::Newspaper => s(0.0455, 0.0587, 0.0455, 0.0294), + Self::Book => s(0.1200, 0.0852, 0.1500, 0.0965), + } + } +} + /// The error when parsing a [`Paper`] from a string fails. #[derive(Debug, Copy, Clone, Eq, PartialEq)] pub struct PaperError; diff --git a/src/library/placed.rs b/src/library/placed.rs index 8a4f46af8..e7b173251 100644 --- a/src/library/placed.rs +++ b/src/library/placed.rs @@ -5,7 +5,7 @@ use super::AlignNode; /// `place`: Place content at an absolute position. pub fn place(_: &mut EvalContext, args: &mut Args) -> TypResult { - let aligns = args.find().unwrap_or(Spec::new(Some(Align::Left), None)); + let aligns = args.find().unwrap_or(Spec::with_x(Some(Align::Left))); let tx = args.named("dx")?.unwrap_or_default(); let ty = args.named("dy")?.unwrap_or_default(); let body: PackedNode = args.expect("body")?; diff --git a/src/library/shape.rs b/src/library/shape.rs index 76c03edbd..c47885d20 100644 --- a/src/library/shape.rs +++ b/src/library/shape.rs @@ -3,7 +3,6 @@ use std::f64::consts::SQRT_2; use super::prelude::*; -use super::LinkNode; /// `rect`: A rectangle with optional content. pub fn rect(_: &mut EvalContext, args: &mut Args) -> TypResult { @@ -101,6 +100,12 @@ pub struct ShapeNode { pub child: Option, } +#[properties] +impl ShapeNode { + /// An URL the shape should link to. + pub const LINK: Option = None; +} + impl Layout for ShapeNode { fn layout( &self, @@ -170,7 +175,7 @@ impl Layout for ShapeNode { } // Apply link if it exists. - if let Some(url) = styles.get_ref(LinkNode::URL) { + if let Some(url) = styles.get_ref(Self::LINK) { frame.link(url); } diff --git a/src/library/text.rs b/src/library/text.rs index 5fa19cb99..486cb77f7 100644 --- a/src/library/text.rs +++ b/src/library/text.rs @@ -9,7 +9,6 @@ use rustybuzz::{Feature, UnicodeBuffer}; use ttf_parser::Tag; use super::prelude::*; -use super::LinkNode; use crate::font::{ Face, FaceId, FontStore, FontStretch, FontStyle, FontVariant, FontWeight, VerticalFontMetric, @@ -59,6 +58,8 @@ impl TextNode { /// Decorative lines. #[fold(|a, b| a.into_iter().chain(b).collect())] pub const LINES: Vec = vec![]; + /// An URL the text should link to. + pub const LINK: Option = None; /// The size of the glyphs. #[fold(Linear::compose)] @@ -889,7 +890,7 @@ impl<'a> ShapedText<'a> { } // Apply link if it exists. - if let Some(url) = self.styles.get_ref(LinkNode::URL) { + if let Some(url) = self.styles.get_ref(TextNode::LINK) { frame.link(url); } diff --git a/tests/ref/text/links.png b/tests/ref/text/links.png index 20b04a8e4ddc17b68b76aebc33f3caabeca5baf1..510c7e98fd8fde6bf08c4cbc970f0ad8281a4a45 100644 GIT binary patch literal 23388 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%0As=<{-^AhOB!glcFCK8l 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