diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-06-12 17:16:14 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-06-12 17:26:18 +0200 |
| commit | 6e3b1a2c80428d581d00b9d65e1c45401df2e210 (patch) | |
| tree | 34d4b1c200851aa77af66b737bfe445e2da11f44 /src/library | |
| parent | ed6550fdb08eae92bffab6b6b137b1e0eebf62c6 (diff) | |
Make all fields of `Frame` private
Diffstat (limited to 'src/library')
| -rw-r--r-- | src/library/graphics/hide.rs | 6 | ||||
| -rw-r--r-- | src/library/graphics/shape.rs | 6 | ||||
| -rw-r--r-- | src/library/graphics/transform.rs | 4 | ||||
| -rw-r--r-- | src/library/layout/align.rs | 2 | ||||
| -rw-r--r-- | src/library/layout/columns.rs | 4 | ||||
| -rw-r--r-- | src/library/layout/flow.rs | 6 | ||||
| -rw-r--r-- | src/library/layout/grid.rs | 12 | ||||
| -rw-r--r-- | src/library/layout/pad.rs | 4 | ||||
| -rw-r--r-- | src/library/layout/page.rs | 2 | ||||
| -rw-r--r-- | src/library/layout/stack.rs | 4 | ||||
| -rw-r--r-- | src/library/math/rex.rs | 2 | ||||
| -rw-r--r-- | src/library/text/par.rs | 29 | ||||
| -rw-r--r-- | src/library/text/shaping.rs | 5 |
13 files changed, 42 insertions, 44 deletions
diff --git a/src/library/graphics/hide.rs b/src/library/graphics/hide.rs index 4ba5e023..c969ef76 100644 --- a/src/library/graphics/hide.rs +++ b/src/library/graphics/hide.rs @@ -22,11 +22,7 @@ impl Layout for HideNode { // Clear the frames. for frame in &mut frames { - *frame = Arc::new({ - let mut empty = Frame::new(frame.size); - empty.baseline = frame.baseline; - empty - }); + Arc::make_mut(frame).clear(); } Ok(frames) diff --git a/src/library/graphics/shape.rs b/src/library/graphics/shape.rs index 82eb2d9d..6c315c24 100644 --- a/src/library/graphics/shape.rs +++ b/src/library/graphics/shape.rs @@ -104,7 +104,7 @@ impl<const S: ShapeKind> Layout for ShapeNode<S> { let target = regions.expand.select(regions.first, Size::zero()); target.x.max(target.y) } else { - let size = frames[0].size; + let size = frames[0].size(); let desired = size.x.max(size.y); desired.min(regions.first.x).min(regions.first.y) }; @@ -146,8 +146,8 @@ impl<const S: ShapeKind> Layout for ShapeNode<S> { } }; - let outset = styles.get(Self::OUTSET).relative_to(frame.size); - let size = frame.size + outset.sum_by_axis(); + let outset = styles.get(Self::OUTSET).relative_to(frame.size()); + let size = frame.size() + outset.sum_by_axis(); let radius = styles .get(Self::RADIUS) diff --git a/src/library/graphics/transform.rs b/src/library/graphics/transform.rs index 9fcf7ebb..7176a683 100644 --- a/src/library/graphics/transform.rs +++ b/src/library/graphics/transform.rs @@ -33,7 +33,7 @@ impl Layout for MoveNode { let delta = self.delta.resolve(styles); for frame in &mut frames { - let delta = delta.zip(frame.size).map(|(d, s)| d.relative_to(s)); + let delta = delta.zip(frame.size()).map(|(d, s)| d.relative_to(s)); Arc::make_mut(frame).translate(delta.to_point()); } @@ -94,7 +94,7 @@ impl<const T: TransformKind> Layout for TransformNode<T> { let mut frames = self.child.layout(ctx, regions, styles)?; for frame in &mut frames { - let Spec { x, y } = origin.zip(frame.size).map(|(o, s)| o.position(s)); + let Spec { x, y } = origin.zip(frame.size()).map(|(o, s)| o.position(s)); let transform = Transform::translate(x, y) .pre_concat(self.transform) .pre_concat(Transform::translate(-x, -y)); diff --git a/src/library/layout/align.rs b/src/library/layout/align.rs index c0a7d16c..c5adcf9f 100644 --- a/src/library/layout/align.rs +++ b/src/library/layout/align.rs @@ -47,7 +47,7 @@ impl Layout for AlignNode { for (region, frame) in regions.iter().zip(&mut frames) { // Align in the target size. The target size depends on whether we // should expand. - let target = regions.expand.select(region, frame.size); + let target = regions.expand.select(region, frame.size()); let aligns = self .aligns .map(|align| align.resolve(styles)) diff --git a/src/library/layout/columns.rs b/src/library/layout/columns.rs index 4c842261..b9e308f2 100644 --- a/src/library/layout/columns.rs +++ b/src/library/layout/columns.rs @@ -80,10 +80,10 @@ impl Layout for ColumnsNode { }; if !regions.expand.y { - output.size.y.set_max(frame.size.y); + output.size_mut().y.set_max(frame.height()); } - let width = frame.size.x; + let width = frame.width(); let x = if dir.is_positive() { cursor } else { diff --git a/src/library/layout/flow.rs b/src/library/layout/flow.rs index f779c8b1..b6844f55 100644 --- a/src/library/layout/flow.rs +++ b/src/library/layout/flow.rs @@ -189,7 +189,7 @@ impl FlowLayouter { } // Grow our size, shrink the region and save the frame for later. - let size = frame.size; + let size = frame.size(); self.used.y += size.y; self.used.x.set_max(size.x); self.regions.first.y -= size.y; @@ -231,10 +231,10 @@ impl FlowLayouter { } FlowItem::Frame(frame, aligns) => { ruler = ruler.max(aligns.y); - let x = aligns.x.position(size.x - frame.size.x); + let x = aligns.x.position(size.x - frame.width()); let y = offset + ruler.position(size.y - self.used.y); let pos = Point::new(x, y); - offset += frame.size.y; + offset += frame.height(); output.push_frame(pos, frame); } FlowItem::Placed(frame) => { diff --git a/src/library/layout/grid.rs b/src/library/layout/grid.rs index 2d6eb259..c04913a1 100644 --- a/src/library/layout/grid.rs +++ b/src/library/layout/grid.rs @@ -304,7 +304,7 @@ impl<'a> GridLayouter<'a> { } let frame = node.layout(self.ctx, &pod, self.styles)?.remove(0); - resolved.set_max(frame.size.x); + resolved.set_max(frame.width()); } } @@ -376,7 +376,7 @@ impl<'a> GridLayouter<'a> { let mut sizes = node .layout(self.ctx, &pod, self.styles)? .into_iter() - .map(|frame| frame.size.y); + .map(|frame| frame.height()); self.ctx.pins.unfreeze(); // For each region, we want to know the maximum height any @@ -432,7 +432,7 @@ impl<'a> GridLayouter<'a> { let frame = self.layout_single_row(resolved, y)?; // Skip to fitting region. - let height = frame.size.y; + let height = frame.height(); while !self.regions.first.y.fits(height) && !self.regions.in_last() { self.finish_region()?; @@ -533,8 +533,8 @@ impl<'a> GridLayouter<'a> { /// Push a row frame into the current region. fn push_row(&mut self, frame: Frame) { - self.regions.first.y -= frame.size.y; - self.used.y += frame.size.y; + self.regions.first.y -= frame.height(); + self.used.y += frame.height(); self.lrows.push(Row::Frame(frame)); } @@ -562,7 +562,7 @@ impl<'a> GridLayouter<'a> { } }; - let height = frame.size.y; + let height = frame.height(); output.push_frame(pos, frame); pos.y += height; } diff --git a/src/library/layout/pad.rs b/src/library/layout/pad.rs index 97b760e1..29a72588 100644 --- a/src/library/layout/pad.rs +++ b/src/library/layout/pad.rs @@ -40,13 +40,13 @@ impl Layout for PadNode { for frame in &mut frames { // Apply the padding inversely such that the grown size padded // yields the frame's size. - let padded = grow(frame.size, padding); + let padded = grow(frame.size(), padding); let padding = padding.relative_to(padded); let offset = Point::new(padding.left, padding.top); // Grow the frame and translate everything in the frame inwards. let frame = Arc::make_mut(frame); - frame.size = padded; + frame.set_size(padded); frame.translate(offset); } diff --git a/src/library/layout/page.rs b/src/library/layout/page.rs index c2fbaba0..e22bb4f7 100644 --- a/src/library/layout/page.rs +++ b/src/library/layout/page.rs @@ -106,7 +106,7 @@ impl PageNode { // Realize overlays. for frame in &mut frames { - let size = frame.size; + let size = frame.size(); let pad = padding.resolve(styles).relative_to(size); let pw = size.x - pad.left - pad.right; let py = size.y - pad.bottom; diff --git a/src/library/layout/stack.rs b/src/library/layout/stack.rs index 9c2cbccd..5d3e1786 100644 --- a/src/library/layout/stack.rs +++ b/src/library/layout/stack.rs @@ -201,7 +201,7 @@ impl<'a> StackLayouter<'a> { } // Grow our size, shrink the region and save the frame for later. - let size = frame.size.to_gen(self.axis); + let size = frame.size().to_gen(self.axis); self.used.main += size.main; self.used.cross.set_max(size.cross); *self.regions.first.get_mut(self.axis) -= size.main; @@ -248,7 +248,7 @@ impl<'a> StackLayouter<'a> { // Align along the block axis. let parent = size.get(self.axis); - let child = frame.size.get(self.axis); + let child = frame.size().get(self.axis); let block = ruler.position(parent - self.used.main) + if self.dir.is_positive() { cursor diff --git a/src/library/math/rex.rs b/src/library/math/rex.rs index 47de4b3a..930829de 100644 --- a/src/library/math/rex.rs +++ b/src/library/math/rex.rs @@ -66,8 +66,8 @@ impl Layout for RexNode { let mut backend = FrameBackend { frame: { let mut frame = Frame::new(size); + frame.set_baseline(baseline); frame.apply_role(Role::Formula); - frame.baseline = Some(baseline); frame }, baseline, diff --git a/src/library/text/par.rs b/src/library/text/par.rs index 41246b00..7a656a30 100644 --- a/src/library/text/par.rs +++ b/src/library/text/par.rs @@ -336,7 +336,7 @@ impl<'a> Item<'a> { match self { Self::Text(shaped) => shaped.width, Self::Absolute(v) => *v, - Self::Frame(frame) => frame.size.x, + Self::Frame(frame) => frame.width(), Self::Fractional(_) | Self::Repeat(_, _) | Self::Pin(_) => Length::zero(), } } @@ -1071,7 +1071,7 @@ fn stack( // Stack the lines into one frame per region. for line in lines { let frame = commit(p, ctx, line, ®ions, width)?; - let height = frame.size.y; + let height = frame.size().y; while !regions.first.y.fits(height) && !regions.in_last() { finished.push(Arc::new(output)); @@ -1082,11 +1082,11 @@ fn stack( } if !first { - output.size.y += p.leading; + output.size_mut().y += p.leading; } - let pos = Point::with_y(output.size.y); - output.size.y += height; + let pos = Point::with_y(output.height()); + output.size_mut().y += height; output.push_frame(pos, frame); regions.first.y -= height + p.leading; @@ -1156,9 +1156,9 @@ fn commit( let mut frames = vec![]; for item in reordered { let mut push = |offset: &mut Length, frame: MaybeShared<Frame>| { - let width = frame.size.x; + let width = frame.width(); top.set_max(frame.baseline()); - bottom.set_max(frame.size.y - frame.baseline()); + bottom.set_max(frame.size().y - frame.baseline()); frames.push((*offset, frame)); *offset += width; }; @@ -1179,23 +1179,24 @@ fn commit( } Item::Repeat(node, styles) => { let before = offset; - let width = Fraction::one().share(fr, remaining); - let size = Size::new(width, regions.base.y); + let fill = Fraction::one().share(fr, remaining); + let size = Size::new(fill, regions.base.y); let pod = Regions::one(size, regions.base, Spec::new(false, false)); let frame = node.layout(ctx, &pod, *styles)?.remove(0); - let count = (width / frame.size.x).floor(); - let remaining = width % frame.size.x; + let width = frame.width(); + let count = (fill / width).floor(); + let remaining = fill % width; let apart = remaining / (count - 1.0); if count == 1.0 { offset += p.align.position(remaining); } - if frame.size.x > Length::zero() { + if width > Length::zero() { for _ in 0 .. (count as usize).min(1000) { push(&mut offset, MaybeShared::Shared(frame.clone())); offset += apart; } } - offset = before + width; + offset = before + fill; } Item::Pin(idx) => { let mut frame = Frame::new(Size::zero()); @@ -1212,7 +1213,7 @@ fn commit( let size = Size::new(width, top + bottom); let mut output = Frame::new(size); - output.baseline = Some(top); + output.set_baseline(top); // Construct the line's frame. for (offset, frame) in frames { diff --git a/src/library/text/shaping.rs b/src/library/text/shaping.rs index 591abb5e..bb88836c 100644 --- a/src/library/text/shaping.rs +++ b/src/library/text/shaping.rs @@ -84,7 +84,7 @@ impl<'a> ShapedText<'a> { let mut offset = Length::zero(); let mut frame = Frame::new(size); - frame.baseline = Some(top); + frame.set_baseline(top); let shift = self.styles.get(TextNode::BASELINE); let lang = self.styles.get(TextNode::LANG); @@ -103,7 +103,7 @@ impl<'a> ShapedText<'a> { id: glyph.glyph_id, x_advance: glyph.x_advance + if glyph.is_justifiable() { - frame.size.x += justification; + frame.size_mut().x += justification; Em::from_length(justification, self.size) } else { Em::zero() @@ -120,6 +120,7 @@ impl<'a> ShapedText<'a> { fill, glyphs, }; + let text_layer = frame.layer(); let width = text.width(); |
