diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-11-17 21:57:15 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-11-17 23:04:02 +0100 |
| commit | ddb617390cf7150042726742749806eab6b3dd54 (patch) | |
| tree | f102a8ad40e2127215c00c879c80e6432a3e26df /library/src/layout/transform.rs | |
| parent | cabd0908e230e451bd9f1394390f8c5deb17182e (diff) | |
Simplify layout_inline's signature
Diffstat (limited to 'library/src/layout/transform.rs')
| -rw-r--r-- | library/src/layout/transform.rs | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/library/src/layout/transform.rs b/library/src/layout/transform.rs index 4e0b8ac2..c45aa165 100644 --- a/library/src/layout/transform.rs +++ b/library/src/layout/transform.rs @@ -30,16 +30,12 @@ impl LayoutInline for MoveNode { world: Tracked<dyn World>, regions: &Regions, styles: StyleChain, - ) -> SourceResult<Vec<Frame>> { - let mut frames = self.child.layout_inline(world, regions, styles)?; - + ) -> SourceResult<Frame> { + let mut frame = self.child.layout_inline(world, regions, styles)?; let delta = self.delta.resolve(styles); - for frame in &mut frames { - let delta = delta.zip(frame.size()).map(|(d, s)| d.relative_to(s)); - frame.translate(delta.to_point()); - } - - Ok(frames) + let delta = delta.zip(frame.size()).map(|(d, s)| d.relative_to(s)); + frame.translate(delta.to_point()); + Ok(frame) } } @@ -88,20 +84,17 @@ impl<const T: TransformKind> LayoutInline for TransformNode<T> { world: Tracked<dyn World>, regions: &Regions, styles: StyleChain, - ) -> SourceResult<Vec<Frame>> { - let origin = styles.get(Self::ORIGIN).unwrap_or(Align::CENTER_HORIZON); - let mut frames = self.child.layout_inline(world, regions, styles)?; + ) -> SourceResult<Frame> { + let mut frame = self.child.layout_inline(world, regions, styles)?; - for frame in &mut frames { - let Axes { 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)); - - frame.transform(transform); - } + let origin = styles.get(Self::ORIGIN).unwrap_or(Align::CENTER_HORIZON); + let Axes { 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)); + frame.transform(transform); - Ok(frames) + Ok(frame) } } |
