diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-03-16 17:36:04 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-03-17 11:30:58 +0100 |
| commit | e8435df5ec718e8ecc8a2ad48e4eb3ddd1f92a72 (patch) | |
| tree | 58d8356ec1c615f898e342a479b5f967a8177468 /library | |
| parent | ecb5543985cc0788d9c01e8c2e28d8ca6d8e19b6 (diff) | |
More jump targets
Diffstat (limited to 'library')
| -rw-r--r-- | library/src/layout/container.rs | 4 | ||||
| -rw-r--r-- | library/src/layout/table.rs | 12 | ||||
| -rw-r--r-- | library/src/math/frac.rs | 1 | ||||
| -rw-r--r-- | library/src/math/root.rs | 1 | ||||
| -rw-r--r-- | library/src/meta/bibliography.rs | 10 | ||||
| -rw-r--r-- | library/src/text/deco.rs | 2 | ||||
| -rw-r--r-- | library/src/visualize/image.rs | 2 | ||||
| -rw-r--r-- | library/src/visualize/line.rs | 2 | ||||
| -rw-r--r-- | library/src/visualize/shape.rs | 9 |
9 files changed, 29 insertions, 14 deletions
diff --git a/library/src/layout/container.rs b/library/src/layout/container.rs index 009063f0..a48933a7 100644 --- a/library/src/layout/container.rs +++ b/library/src/layout/container.rs @@ -141,7 +141,7 @@ impl Layout for BoxNode { if fill.is_some() || stroke.iter().any(Option::is_some) { let outset = self.outset(styles); let radius = self.radius(styles); - frame.fill_and_stroke(fill, stroke, outset, radius); + frame.fill_and_stroke(fill, stroke, outset, radius, self.span()); } // Apply metadata. @@ -383,7 +383,7 @@ impl Layout for BlockNode { let outset = self.outset(styles); let radius = self.radius(styles); for frame in frames.iter_mut().skip(skip as usize) { - frame.fill_and_stroke(fill, stroke, outset, radius); + frame.fill_and_stroke(fill, stroke, outset, radius, self.span()); } } diff --git a/library/src/layout/table.rs b/library/src/layout/table.rs index 012e63ac..6daafdbb 100644 --- a/library/src/layout/table.rs +++ b/library/src/layout/table.rs @@ -166,14 +166,20 @@ impl Layout for TableNode { for offset in points(rows.iter().map(|piece| piece.height)) { let target = Point::with_x(frame.width() + thickness); let hline = Geometry::Line(target).stroked(stroke); - frame.prepend(Point::new(-half, offset), Element::Shape(hline)); + frame.prepend( + Point::new(-half, offset), + Element::Shape(hline, self.span()), + ); } // Render vertical lines. for offset in points(layout.cols.iter().copied()) { let target = Point::with_y(frame.height() + thickness); let vline = Geometry::Line(target).stroked(stroke); - frame.prepend(Point::new(offset, -half), Element::Shape(vline)); + frame.prepend( + Point::new(offset, -half), + Element::Shape(vline, self.span()), + ); } } @@ -186,7 +192,7 @@ impl Layout for TableNode { let pos = Point::new(dx, dy); let size = Size::new(col, row.height); let rect = Geometry::Rect(size).filled(fill); - frame.prepend(pos, Element::Shape(rect)); + frame.prepend(pos, Element::Shape(rect, self.span())); } dy += row.height; } diff --git a/library/src/math/frac.rs b/library/src/math/frac.rs index f670159d..90bc69b3 100644 --- a/library/src/math/frac.rs +++ b/library/src/math/frac.rs @@ -137,6 +137,7 @@ fn layout( paint: TextNode::fill_in(ctx.styles()), thickness, }), + span, ), ); ctx.push(FrameFragment::new(ctx, frame)); diff --git a/library/src/math/root.rs b/library/src/math/root.rs index 1ab99b2b..b4756b9d 100644 --- a/library/src/math/root.rs +++ b/library/src/math/root.rs @@ -127,6 +127,7 @@ fn layout( Element::Shape( Geometry::Line(Point::with_x(radicand.width())) .stroked(Stroke { paint: TextNode::fill_in(ctx.styles()), thickness }), + span, ), ); diff --git a/library/src/meta/bibliography.rs b/library/src/meta/bibliography.rs index 8549624a..e9990524 100644 --- a/library/src/meta/bibliography.rs +++ b/library/src/meta/bibliography.rs @@ -285,6 +285,7 @@ fn create( bibliography: &BibliographyNode, citations: Vec<&CiteNode>, ) -> Arc<Works> { + let span = bibliography.span(); let entries = load(world, &bibliography.path()).unwrap(); let style = bibliography.style(StyleChain::default()); let bib_id = bibliography.0.stable_id().unwrap(); @@ -369,7 +370,7 @@ fn create( } // Format and link to the reference entry. - content += format_display_string(&display, supplement) + content += format_display_string(&display, supplement, citation.span()) .linked(Link::Node(ref_id(entry))); } @@ -410,12 +411,12 @@ fn create( let prefix = reference.prefix.map(|prefix| { // Format and link to first citation. let bracketed = prefix.with_default_brackets(&*citation_style); - format_display_string(&bracketed, None) + format_display_string(&bracketed, None, span) .linked(Link::Node(ids[reference.entry.key()])) .styled(backlink.clone()) }); - let mut reference = format_display_string(&reference.display, None); + let mut reference = format_display_string(&reference.display, None, span); if prefix.is_none() { reference = reference.styled(backlink); } @@ -471,6 +472,7 @@ const SUPPLEMENT: &str = "cdc579c45cf3d648905c142c7082683f"; fn format_display_string( string: &DisplayString, mut supplement: Option<Content>, + span: Span, ) -> Content { let mut stops: Vec<_> = string .formatting @@ -498,7 +500,7 @@ fn format_display_string( let mut content = if segment == SUPPLEMENT && supplement.is_some() { supplement.take().unwrap_or_default() } else { - TextNode::packed(segment) + TextNode::packed(segment).spanned(span) }; for (range, fmt) in &string.formatting { diff --git a/library/src/text/deco.rs b/library/src/text/deco.rs index 27d30286..a29564f3 100644 --- a/library/src/text/deco.rs +++ b/library/src/text/deco.rs @@ -285,7 +285,7 @@ pub(super) fn decorate( if target.x >= min_width || !deco.evade { let shape = Geometry::Line(target).stroked(stroke); - frame.push(origin, Element::Shape(shape)); + frame.push(origin, Element::Shape(shape, Span::detached())); } }; diff --git a/library/src/visualize/image.rs b/library/src/visualize/image.rs index 4509cf5a..129e07c5 100644 --- a/library/src/visualize/image.rs +++ b/library/src/visualize/image.rs @@ -97,7 +97,7 @@ impl Layout for ImageNode { // the frame to the target size, center aligning the image in the // process. let mut frame = Frame::new(fitted); - frame.push(Point::zero(), Element::Image(image, fitted)); + frame.push(Point::zero(), Element::Image(image, fitted, self.span())); frame.resize(target, Align::CENTER_HORIZON); // Create a clipping group if only part of the image should be visible. diff --git a/library/src/visualize/line.rs b/library/src/visualize/line.rs index b39170f0..6614e3ee 100644 --- a/library/src/visualize/line.rs +++ b/library/src/visualize/line.rs @@ -76,7 +76,7 @@ impl Layout for LineNode { let mut frame = Frame::new(target); let shape = Geometry::Line(delta.to_point()).stroked(stroke); - frame.push(start.to_point(), Element::Shape(shape)); + frame.push(start.to_point(), Element::Shape(shape, self.span())); Ok(Fragment::frame(frame)) } } diff --git a/library/src/visualize/shape.rs b/library/src/visualize/shape.rs index 02b45ed5..de459949 100644 --- a/library/src/visualize/shape.rs +++ b/library/src/visualize/shape.rs @@ -158,6 +158,7 @@ impl Layout for RectNode { self.inset(styles), self.outset(styles), self.radius(styles), + self.span(), ) } } @@ -267,6 +268,7 @@ impl Layout for SquareNode { self.inset(styles), self.outset(styles), self.radius(styles), + self.span(), ) } } @@ -348,6 +350,7 @@ impl Layout for EllipseNode { self.inset(styles), self.outset(styles), Corners::splat(Rel::zero()), + self.span(), ) } } @@ -454,6 +457,7 @@ impl Layout for CircleNode { self.inset(styles), self.outset(styles), Corners::splat(Rel::zero()), + self.span(), ) } } @@ -471,6 +475,7 @@ fn layout( mut inset: Sides<Rel<Abs>>, outset: Sides<Rel<Abs>>, radius: Corners<Rel<Abs>>, + span: Span, ) -> SourceResult<Fragment> { let resolved = sizing .zip(regions.base()) @@ -524,9 +529,9 @@ fn layout( let size = frame.size() + outset.sum_by_axis(); let pos = Point::new(-outset.left, -outset.top); let shape = ellipse(size, fill, stroke.left); - frame.prepend(pos, Element::Shape(shape)); + frame.prepend(pos, Element::Shape(shape, span)); } else { - frame.fill_and_stroke(fill, stroke, outset, radius); + frame.fill_and_stroke(fill, stroke, outset, radius, span); } } |
