summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-06-12 17:16:14 +0200
committerLaurenz <laurmaedje@gmail.com>2022-06-12 17:26:18 +0200
commit6e3b1a2c80428d581d00b9d65e1c45401df2e210 (patch)
tree34d4b1c200851aa77af66b737bfe445e2da11f44 /src/library
parented6550fdb08eae92bffab6b6b137b1e0eebf62c6 (diff)
Make all fields of `Frame` private
Diffstat (limited to 'src/library')
-rw-r--r--src/library/graphics/hide.rs6
-rw-r--r--src/library/graphics/shape.rs6
-rw-r--r--src/library/graphics/transform.rs4
-rw-r--r--src/library/layout/align.rs2
-rw-r--r--src/library/layout/columns.rs4
-rw-r--r--src/library/layout/flow.rs6
-rw-r--r--src/library/layout/grid.rs12
-rw-r--r--src/library/layout/pad.rs4
-rw-r--r--src/library/layout/page.rs2
-rw-r--r--src/library/layout/stack.rs4
-rw-r--r--src/library/math/rex.rs2
-rw-r--r--src/library/text/par.rs29
-rw-r--r--src/library/text/shaping.rs5
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, &regions, 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();