summaryrefslogtreecommitdiff
path: root/src/layout/pad.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-05-17 22:55:31 +0200
committerLaurenz <laurmaedje@gmail.com>2021-05-17 22:55:31 +0200
commitc975d0d5e989cca6eff8e80ca8174f85eb4a3460 (patch)
tree7aaf68ee71d81a1d71d7dcb1f928659bc6fa975d /src/layout/pad.rs
parent24c4a746bc68874f2d1b0d1b726596930acaadcf (diff)
Tidy up layouting code
Diffstat (limited to 'src/layout/pad.rs')
-rw-r--r--src/layout/pad.rs44
1 files changed, 18 insertions, 26 deletions
diff --git a/src/layout/pad.rs b/src/layout/pad.rs
index d24ca654..7ceb3d1b 100644
--- a/src/layout/pad.rs
+++ b/src/layout/pad.rs
@@ -11,37 +11,23 @@ pub struct PadNode {
impl Layout for PadNode {
fn layout(&self, ctx: &mut LayoutContext, areas: &Areas) -> Vec<Frame> {
- let areas = shrink(areas, self.padding);
+ let areas = areas.map(|size| size - self.padding.resolve(size).size());
+
let mut frames = self.child.layout(ctx, &areas);
for frame in &mut frames {
- pad(frame, self.padding);
- }
- frames
- }
-}
+ let padded = solve(self.padding, frame.size);
+ let padding = self.padding.resolve(padded);
+ let origin = Point::new(padding.left, padding.top);
-impl From<PadNode> for AnyNode {
- fn from(pad: PadNode) -> Self {
- Self::new(pad)
- }
-}
+ frame.size = padded;
+ frame.baseline += origin.y;
-/// Shrink all areas by the padding.
-fn shrink(areas: &Areas, padding: Sides<Linear>) -> Areas {
- areas.map(|size| size - padding.resolve(size).size())
-}
-
-/// Pad the frame and move all elements inwards.
-fn pad(frame: &mut Frame, padding: Sides<Linear>) {
- let padded = solve(padding, frame.size);
- let padding = padding.resolve(padded);
- let origin = Point::new(padding.left, padding.top);
-
- frame.size = padded;
- frame.baseline += origin.y;
+ for (point, _) in &mut frame.elements {
+ *point += origin;
+ }
+ }
- for (point, _) in &mut frame.elements {
- *point += origin;
+ frames
}
}
@@ -57,3 +43,9 @@ fn solve(padding: Sides<Linear>, size: Size) -> Size {
solve_axis(size.height, padding.top + padding.bottom),
)
}
+
+impl From<PadNode> for AnyNode {
+ fn from(pad: PadNode) -> Self {
+ Self::new(pad)
+ }
+}