tawasuyu

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5544Rust 89Markdown 11TOML 91930 Definitions

Refactor position on style node

627a308cac1fc98a80778c77b3061c7eec4cf102 · by Emil Sjölander · (7 years ago) · parent 32973e7ca · browse the tree at this commit

Semantic delta · 6

src/algo.rs

src/style.rs

2 files · +19 −26

diff --git a/src/algo.rs b/src/algo.rs
index 42859261b..a1c63965e 100644
--- a/src/algo.rs
+++ b/src/algo.rs
@@ -173,7 +173,7 @@ fn compute_internal(
     let mut flex_items: Vec<FlexItem> = node
         .children
         .iter()
-        .filter(|child| child.position != style::Position::Absolute)
+        .filter(|child| child.position_type != style::PositionType::Absolute)
         .map(|child| FlexItem {
             node: child,
 
@@ -193,10 +193,10 @@ fn compute_internal(
             },
 
             position: Rect {
-                start: child.start.resolve(percent_calc_base_child),
-                end: child.end.resolve(percent_calc_base_child),
-                top: child.top.resolve(percent_calc_base_child),
-                bottom: child.bottom.resolve(percent_calc_base_child),
+                start: child.position.start.resolve(percent_calc_base_child),
+                end: child.position.end.resolve(percent_calc_base_child),
+                top: child.position.top.resolve(percent_calc_base_child),
+                bottom: child.position.bottom.resolve(percent_calc_base_child),
             },
 
             margin: Rect {
@@ -1137,15 +1137,16 @@ fn compute_internal(
     let mut absolute_children: Vec<layout::Node> = node
         .children
         .iter()
-        .filter(|child| child.position == style::Position::Absolute)
+        .filter(|child| child.position_type == style::PositionType::Absolute)
         .map(|child| {
             let container_width = container_width.to_number();
             let container_height = container_height.to_number();
 
-            let start = child.start.resolve(container_width) + child.margin.start.resolve(container_width);
-            let end = child.end.resolve(container_width) + child.margin.end.resolve(container_width);
-            let top = child.top.resolve(container_height) + child.margin.top.resolve(container_height);
-            let bottom = child.bottom.resolve(container_height) + child.margin.bottom.resolve(container_height);
+            let start = child.position.start.resolve(container_width) + child.margin.start.resolve(container_width);
+            let end = child.position.end.resolve(container_width) + child.margin.end.resolve(container_width);
+            let top = child.position.top.resolve(container_height) + child.margin.top.resolve(container_height);
+            let bottom =
+                child.position.bottom.resolve(container_height) + child.margin.bottom.resolve(container_height);
 
             let (start_main, end_main) = if is_row { (start, end) } else { (top, bottom) };
             let (start_cross, end_cross) = if is_row { (top, bottom) } else { (start, end) };
diff --git a/src/style.rs b/src/style.rs
index 554c758ba..12c10d21c 100644
--- a/src/style.rs
+++ b/src/style.rs
@@ -131,14 +131,14 @@ impl Default for Overflow {
 }
 
 #[derive(Copy, Clone, PartialEq, Debug)]
-pub enum Position {
+pub enum PositionType {
     Relative,
     Absolute,
 }
 
-impl Default for Position {
-    fn default() -> Position {
-        Position::Relative
+impl Default for PositionType {
+    fn default() -> PositionType {
+        PositionType::Relative
     }
 }
 
@@ -191,7 +191,7 @@ impl Default for Rect<Dimension> {
 
 #[derive(Debug)]
 pub struct Node {
-    pub position: Position,
+    pub position_type: PositionType,
     pub direction: Direction,
     pub flex_direction: FlexDirection,
 
@@ -204,6 +204,7 @@ pub struct Node {
 
     pub justify_content: JustifyContent,
 
+    pub position: Rect<Dimension>,
     pub margin: Rect<Dimension>,
     pub padding: Rect<Dimension>,
     pub border: Rect<Dimension>,
@@ -212,11 +213,6 @@ pub struct Node {
     pub flex_shrink: f32,
     pub flex_basis: Dimension,
 
-    pub start: Dimension,
-    pub end: Dimension,
-    pub top: Dimension,
-    pub bottom: Dimension,
-
     pub width: Dimension,
     pub min_width: Dimension,
     pub max_width: Dimension,
@@ -233,7 +229,7 @@ pub struct Node {
 impl Default for Node {
     fn default() -> Node {
         Node {
-            position: Default::default(),
+            position_type: Default::default(),
             direction: Default::default(),
             flex_direction: Default::default(),
 
@@ -246,6 +242,7 @@ impl Default for Node {
 
             justify_content: Default::default(),
 
+            position: Default::default(),
             margin: Default::default(),
             padding: Default::default(),
             border: Default::default(),
@@ -254,11 +251,6 @@ impl Default for Node {
             flex_shrink: 1.0,
             flex_basis: Default::default(),
 
-            start: Default::default(),
-            end: Default::default(),
-            top: Default::default(),
-            bottom: Default::default(),
-
             width: Default::default(),
             min_width: Default::default(),
             max_width: Default::default(),