summaryrefslogtreecommitdiff
path: root/src/layout/rect.rs
diff options
context:
space:
mode:
authorMartin Haug <mhaug@live.de>2021-02-06 12:30:44 +0100
committerMartin Haug <mhaug@live.de>2021-02-06 12:30:44 +0100
commit80e076814dde330fb2136172580f11e939bc6601 (patch)
tree6cd3474ffa5e2aced38e47a7ef563ab8940612be /src/layout/rect.rs
parent8469bad7487e111c8e5a0ec542f0232a0ebb4bdc (diff)
Merge `rect` and `box` 🦚
Diffstat (limited to 'src/layout/rect.rs')
-rw-r--r--src/layout/rect.rs71
1 files changed, 0 insertions, 71 deletions
diff --git a/src/layout/rect.rs b/src/layout/rect.rs
deleted file mode 100644
index ab8e3b07..00000000
--- a/src/layout/rect.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-use std::cmp::Ordering;
-
-use super::*;
-use crate::{color::RgbaColor, geom::Linear};
-
-/// A node that represents a rectangular box.
-#[derive(Debug, Clone, PartialEq)]
-pub struct NodeRect {
- /// The fixed width, if any.
- pub width: Option<Linear>,
- /// The fixed height, if any.
- pub height: Option<Linear>,
- /// The background color.
- pub color: Option<Color>,
- /// The child node whose sides to pad.
- pub child: Node,
-}
-
-impl Layout for NodeRect {
- fn layout(&self, ctx: &mut LayoutContext, areas: &Areas) -> Layouted {
- let Areas { current, full, .. } = areas;
-
- let height_opt = self.height.map(|h| h.resolve(full.height));
- let mut size = Size::new(
- self.width.map(|w| w.resolve(full.width)).unwrap_or(current.width),
- height_opt.unwrap_or(current.height),
- );
-
- let areas = Areas::once(size);
- let mut layouted = self.child.layout(ctx, &areas);
-
- // If the children have some height, apply that,
- // otherwise fall back to zero or the height property.
- if let Some(max) = layouted
- .frames()
- .iter()
- .map(|f| f.size.height)
- .max_by(|x, y| x.partial_cmp(y).unwrap_or(Ordering::Equal))
- {
- size.height = max;
- } else {
- size.height = height_opt.unwrap_or(Length::ZERO)
- }
-
- if let Some(first) = layouted.frames_mut().first_mut() {
- first.elements.insert(
- 0,
- (
- Point::ZERO,
- Element::Geometry(Geometry {
- shape: Shape::Rect(Rect { size }),
- fill: Fill::Color(self.color.unwrap_or(Color::Rgba(RgbaColor {
- r: 255,
- g: 255,
- b: 255,
- a: 0,
- }))),
- }),
- ),
- )
- }
-
- layouted
- }
-}
-
-impl From<NodeRect> for NodeAny {
- fn from(pad: NodeRect) -> Self {
- Self::new(pad)
- }
-}