summaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorMartin Haug <mhaug@live.de>2022-04-30 21:59:34 +0200
committerMartin Haug <mhaug@live.de>2022-05-01 11:50:34 +0200
commit5f1499d380e223e7e1b2a8a96eb99e3ec95a56ac (patch)
tree44945bc35618c9ce10380016200309e42c2b5ed4 /src/model
parentf9e115daf54c29358f890b137f50a33a781af680 (diff)
Add round corners and change arguments
Diffstat (limited to 'src/model')
-rw-r--r--src/model/layout.rs6
-rw-r--r--src/model/styles.rs16
2 files changed, 20 insertions, 2 deletions
diff --git a/src/model/layout.rs b/src/model/layout.rs
index 51154286..63e8f088 100644
--- a/src/model/layout.rs
+++ b/src/model/layout.rs
@@ -353,7 +353,8 @@ impl Layout for FillNode {
) -> TypResult<Vec<Arc<Frame>>> {
let mut frames = self.child.layout(ctx, regions, styles)?;
for frame in &mut frames {
- let shape = Geometry::Rect(frame.size).filled(self.fill);
+ let shape = Geometry::Rect(frame.size, Sides::splat(Length::zero()))
+ .filled(self.fill);
Arc::make_mut(frame).prepend(Point::zero(), Element::Shape(shape));
}
Ok(frames)
@@ -378,7 +379,8 @@ impl Layout for StrokeNode {
) -> TypResult<Vec<Arc<Frame>>> {
let mut frames = self.child.layout(ctx, regions, styles)?;
for frame in &mut frames {
- let shape = Geometry::Rect(frame.size).stroked(self.stroke);
+ let shape = Geometry::Rect(frame.size, Sides::splat(Length::zero()))
+ .stroked(self.stroke);
Arc::make_mut(frame).prepend(Point::zero(), Element::Shape(shape));
}
Ok(frames)
diff --git a/src/model/styles.rs b/src/model/styles.rs
index eb7a7053..2e752625 100644
--- a/src/model/styles.rs
+++ b/src/model/styles.rs
@@ -459,6 +459,22 @@ where
}
}
+impl<T> Fold for Sides<Option<T>>
+where
+ T: Default,
+{
+ type Output = Sides<T>;
+
+ fn fold(self, outer: Self::Output) -> Self::Output {
+ Sides {
+ left: self.left.unwrap_or(outer.left),
+ right: self.right.unwrap_or(outer.right),
+ top: self.top.unwrap_or(outer.top),
+ bottom: self.bottom.unwrap_or(outer.bottom),
+ }
+ }
+}
+
/// A scoped property barrier.
///
/// Barriers interact with [scoped](StyleMap::scoped) styles: A scoped style