Grid/width depends on height tests (#300)
* grid/width-depends-on-height-tests
* Make axis module public
* Add vertical writing mode support to gentest leaf nodes
* Add test using vertical writing mode
* Enable relayout
* Remove flex-column child test
4f43428b5e387dafa19cbcc0c5217fc8e61d0ce6 · ruwaq Nico Burns · 2022-12-27T22:40:12Z (3 wata ñawpaq) · tayta e2cee9d6f · kay commitpi sach'ata qhaway
Semántico sayk'uy · 81
benches/generated/grid_fit_content_points_argument.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_fit_content_points_max_content.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_fit_content_points_min_content.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_margins_auto_margins_override_stretch.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_max_content_maximum_single_item.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_max_content_single_item.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_max_content_single_item_margin_auto.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_max_content_single_item_margin_fixed.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_max_content_single_item_margin_percent.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_flex_column.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_flex_row.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_flex_single_item.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_flex_single_item_margin_auto.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_flex_single_item_margin_fixed.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_flex_single_item_margin_percent.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_maximum_single_item.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_min_content_single_item.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/grid_relayout_vertical_text.rs
benches/generated/grid_size_child_fixed_tracks.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_child.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_child_absolute.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_child_constraint.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_child_constraint_padding_parent.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_child_with_flex_grow.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_child_with_flex_shrink.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_flex_basis_overrides_measure.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_height_overrides_measure.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_remeasure_child_after_growing.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_remeasure_child_after_shrinking.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_remeasure_child_after_stretching.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_root.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_stretch_overrides_measure.rs
ukhunpi t'ikrakurqan fn compute pub
benches/generated/measure_width_overrides_measure.rs
ukhunpi t'ikrakurqan fn compute pub
scripts/gentest/src/main.rs
scripts/gentest/test_helper.js
tests/generated/grid_fit_content_points_argument.rs
tests/generated/grid_fit_content_points_max_content.rs
tests/generated/grid_fit_content_points_min_content.rs
tests/generated/grid_margins_auto_margins_override_stretch.rs
tests/generated/grid_max_content_maximum_single_item.rs
tests/generated/grid_max_content_single_item.rs
tests/generated/grid_max_content_single_item_margin_auto.rs
tests/generated/grid_max_content_single_item_margin_fixed.rs
tests/generated/grid_max_content_single_item_margin_percent.rs
tests/generated/grid_min_content_flex_column.rs
tests/generated/grid_min_content_flex_row.rs
tests/generated/grid_min_content_flex_single_item.rs
tests/generated/grid_min_content_flex_single_item_margin_auto.rs
tests/generated/grid_min_content_flex_single_item_margin_fixed.rs
tests/generated/grid_min_content_flex_single_item_margin_percent.rs
tests/generated/grid_min_content_maximum_single_item.rs
tests/generated/grid_min_content_single_item.rs
tests/generated/grid_relayout_vertical_text.rs
tests/generated/grid_size_child_fixed_tracks.rs
tests/generated/measure_child.rs
tests/generated/measure_child_absolute.rs
tests/generated/measure_child_constraint.rs
tests/generated/measure_child_constraint_padding_parent.rs
tests/generated/measure_child_with_flex_grow.rs
tests/generated/measure_child_with_flex_shrink.rs
tests/generated/measure_flex_basis_overrides_measure.rs
tests/generated/measure_height_overrides_measure.rs
tests/generated/measure_remeasure_child_after_growing.rs
tests/generated/measure_remeasure_child_after_shrinking.rs
tests/generated/measure_remeasure_child_after_stretching.rs
tests/generated/measure_root.rs
tests/generated/measure_stretch_overrides_measure.rs
tests/generated/measure_width_overrides_measure.rs
72 qillqakuna · +294 −118
diff --git a/benches/generated/grid_fit_content_points_argument.rs b/benches/generated/grid_fit_content_points_argument.rs
index 82f60f1cd..1a08d5bdb 100644
--- a/benches/generated/grid_fit_content_points_argument.rs
+++ b/benches/generated/grid_fit_content_points_argument.rs
@@ -8,7 +8,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_fit_content_points_max_content.rs b/benches/generated/grid_fit_content_points_max_content.rs
index 157bc5db1..c2c3829bb 100644
--- a/benches/generated/grid_fit_content_points_max_content.rs
+++ b/benches/generated/grid_fit_content_points_max_content.rs
@@ -8,7 +8,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_fit_content_points_min_content.rs b/benches/generated/grid_fit_content_points_min_content.rs
index 0be082768..611fda99c 100644
--- a/benches/generated/grid_fit_content_points_min_content.rs
+++ b/benches/generated/grid_fit_content_points_min_content.rs
@@ -8,7 +8,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_margins_auto_margins_override_stretch.rs b/benches/generated/grid_margins_auto_margins_override_stretch.rs
index 27d86be67..8b51cc6a8 100644
--- a/benches/generated/grid_margins_auto_margins_override_stretch.rs
+++ b/benches/generated/grid_margins_auto_margins_override_stretch.rs
@@ -23,7 +23,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_max_content_maximum_single_item.rs b/benches/generated/grid_max_content_maximum_single_item.rs
index e2c157228..88fc970e8 100644
--- a/benches/generated/grid_max_content_maximum_single_item.rs
+++ b/benches/generated/grid_max_content_maximum_single_item.rs
@@ -8,7 +8,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_max_content_single_item.rs b/benches/generated/grid_max_content_single_item.rs
index 66a376a4e..956d5ff70 100644
--- a/benches/generated/grid_max_content_single_item.rs
+++ b/benches/generated/grid_max_content_single_item.rs
@@ -8,7 +8,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_max_content_single_item_margin_auto.rs b/benches/generated/grid_max_content_single_item_margin_auto.rs
index 2cfb28972..70799c6da 100644
--- a/benches/generated/grid_max_content_single_item_margin_auto.rs
+++ b/benches/generated/grid_max_content_single_item_margin_auto.rs
@@ -16,7 +16,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_max_content_single_item_margin_fixed.rs b/benches/generated/grid_max_content_single_item_margin_fixed.rs
index 4ee074d4b..2a53d1ad8 100644
--- a/benches/generated/grid_max_content_single_item_margin_fixed.rs
+++ b/benches/generated/grid_max_content_single_item_margin_fixed.rs
@@ -16,7 +16,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_max_content_single_item_margin_percent.rs b/benches/generated/grid_max_content_single_item_margin_percent.rs
index 7267cb88f..3cd508ee7 100644
--- a/benches/generated/grid_max_content_single_item_margin_percent.rs
+++ b/benches/generated/grid_max_content_single_item_margin_percent.rs
@@ -16,7 +16,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_flex_column.rs b/benches/generated/grid_min_content_flex_column.rs
index 1714e6234..1ec016dd8 100644
--- a/benches/generated/grid_min_content_flex_column.rs
+++ b/benches/generated/grid_min_content_flex_column.rs
@@ -7,7 +7,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -16,7 +16,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -25,7 +25,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_flex_row.rs b/benches/generated/grid_min_content_flex_row.rs
index 0d715bda0..fce7e8674 100644
--- a/benches/generated/grid_min_content_flex_row.rs
+++ b/benches/generated/grid_min_content_flex_row.rs
@@ -7,7 +7,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -16,7 +16,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -25,7 +25,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_flex_single_item.rs b/benches/generated/grid_min_content_flex_single_item.rs
index 39d1a6339..c4c05db81 100644
--- a/benches/generated/grid_min_content_flex_single_item.rs
+++ b/benches/generated/grid_min_content_flex_single_item.rs
@@ -22,7 +22,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_flex_single_item_margin_auto.rs b/benches/generated/grid_min_content_flex_single_item_margin_auto.rs
index 0245c6745..ce42e39d4 100644
--- a/benches/generated/grid_min_content_flex_single_item_margin_auto.rs
+++ b/benches/generated/grid_min_content_flex_single_item_margin_auto.rs
@@ -34,7 +34,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_flex_single_item_margin_fixed.rs b/benches/generated/grid_min_content_flex_single_item_margin_fixed.rs
index 7f0b542ac..e30c932d5 100644
--- a/benches/generated/grid_min_content_flex_single_item_margin_fixed.rs
+++ b/benches/generated/grid_min_content_flex_single_item_margin_fixed.rs
@@ -34,7 +34,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_flex_single_item_margin_percent.rs b/benches/generated/grid_min_content_flex_single_item_margin_percent.rs
index cc9b038f7..ea3af0248 100644
--- a/benches/generated/grid_min_content_flex_single_item_margin_percent.rs
+++ b/benches/generated/grid_min_content_flex_single_item_margin_percent.rs
@@ -34,7 +34,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_maximum_single_item.rs b/benches/generated/grid_min_content_maximum_single_item.rs
index 7aaf5742d..15e6fff5c 100644
--- a/benches/generated/grid_min_content_maximum_single_item.rs
+++ b/benches/generated/grid_min_content_maximum_single_item.rs
@@ -8,7 +8,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_min_content_single_item.rs b/benches/generated/grid_min_content_single_item.rs
index fd3734a0c..d1e871849 100644
--- a/benches/generated/grid_min_content_single_item.rs
+++ b/benches/generated/grid_min_content_single_item.rs
@@ -8,7 +8,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/grid_relayout_vertical_text.rs b/benches/generated/grid_relayout_vertical_text.rs
new file mode 100644
index 000000000..93134c5cc
--- /dev/null
+++ b/benches/generated/grid_relayout_vertical_text.rs
@@ -0,0 +1,35 @@
+pub fn compute() {
+ #[allow(unused_imports)]
+ use taffy::prelude::*;
+ let mut taffy = taffy::Taffy::new();
+ let node0 = taffy
+ .new_leaf_with_measure(
+ taffy::style::Style { ..Default::default() },
+ taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
+ const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH\u{200b}HH\u{200b}HH\u{200b}HH";
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Vertical)
+ }),
+ )
+ .unwrap();
+ let node1 = taffy
+ .new_leaf_with_measure(
+ taffy::style::Style { ..Default::default() },
+ taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
+ const TEXT: &str = "HH\u{200b}HH\u{200b}HH";
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
+ }),
+ )
+ .unwrap();
+ let node = taffy
+ .new_with_children(
+ taffy::style::Style {
+ display: taffy::style::Display::Grid,
+ grid_template_rows: vec![points(40f32)],
+ grid_template_columns: vec![min_content()],
+ ..Default::default()
+ },
+ &[node0, node1],
+ )
+ .unwrap();
+ taffy.compute_layout(node, taffy::geometry::Size::MAX_CONTENT).unwrap();
+}
diff --git a/benches/generated/grid_size_child_fixed_tracks.rs b/benches/generated/grid_size_child_fixed_tracks.rs
index f6d265efb..a50d5e058 100644
--- a/benches/generated/grid_size_child_fixed_tracks.rs
+++ b/benches/generated/grid_size_child_fixed_tracks.rs
@@ -11,7 +11,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -24,7 +24,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHH\u{200b}HHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -37,7 +37,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -51,7 +51,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -65,7 +65,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_child.rs b/benches/generated/measure_child.rs
index f133b37c8..bc84bd19f 100644
--- a/benches/generated/measure_child.rs
+++ b/benches/generated/measure_child.rs
@@ -7,7 +7,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_child_absolute.rs b/benches/generated/measure_child_absolute.rs
index 58602b44d..679593802 100644
--- a/benches/generated/measure_child_absolute.rs
+++ b/benches/generated/measure_child_absolute.rs
@@ -7,7 +7,7 @@ pub fn compute() {
taffy::style::Style { position: taffy::style::Position::Absolute, ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_child_constraint.rs b/benches/generated/measure_child_constraint.rs
index 5f007d4e9..e2fd457ad 100644
--- a/benches/generated/measure_child_constraint.rs
+++ b/benches/generated/measure_child_constraint.rs
@@ -2,7 +2,7 @@ pub fn compute() {
#[allow(unused_imports)]
use taffy::prelude::*;
let mut taffy = taffy::Taffy::new();
- let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT) }) ,) . unwrap () ;
+ let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT , super :: WritingMode :: Horizontal) }) ,) . unwrap () ;
let node = taffy
.new_with_children(
taffy::style::Style {
diff --git a/benches/generated/measure_child_constraint_padding_parent.rs b/benches/generated/measure_child_constraint_padding_parent.rs
index aa4825c91..fe5b0749d 100644
--- a/benches/generated/measure_child_constraint_padding_parent.rs
+++ b/benches/generated/measure_child_constraint_padding_parent.rs
@@ -2,7 +2,7 @@ pub fn compute() {
#[allow(unused_imports)]
use taffy::prelude::*;
let mut taffy = taffy::Taffy::new();
- let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT) }) ,) . unwrap () ;
+ let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT , super :: WritingMode :: Horizontal) }) ,) . unwrap () ;
let node = taffy
.new_with_children(
taffy::style::Style {
diff --git a/benches/generated/measure_child_with_flex_grow.rs b/benches/generated/measure_child_with_flex_grow.rs
index f669f8622..09371b72b 100644
--- a/benches/generated/measure_child_with_flex_grow.rs
+++ b/benches/generated/measure_child_with_flex_grow.rs
@@ -16,7 +16,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H\u{200b}H\u{200b}H\u{200b}H\u{200b}H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_child_with_flex_shrink.rs b/benches/generated/measure_child_with_flex_shrink.rs
index 36227254d..927888a5a 100644
--- a/benches/generated/measure_child_with_flex_shrink.rs
+++ b/benches/generated/measure_child_with_flex_shrink.rs
@@ -16,7 +16,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_flex_basis_overrides_measure.rs b/benches/generated/measure_flex_basis_overrides_measure.rs
index d3c20d1c1..d994ed75a 100644
--- a/benches/generated/measure_flex_basis_overrides_measure.rs
+++ b/benches/generated/measure_flex_basis_overrides_measure.rs
@@ -7,7 +7,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_height_overrides_measure.rs b/benches/generated/measure_height_overrides_measure.rs
index c1da5b17c..7902a8cf2 100644
--- a/benches/generated/measure_height_overrides_measure.rs
+++ b/benches/generated/measure_height_overrides_measure.rs
@@ -10,7 +10,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_remeasure_child_after_growing.rs b/benches/generated/measure_remeasure_child_after_growing.rs
index 319b4ceb6..587f7778f 100644
--- a/benches/generated/measure_remeasure_child_after_growing.rs
+++ b/benches/generated/measure_remeasure_child_after_growing.rs
@@ -16,7 +16,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_remeasure_child_after_shrinking.rs b/benches/generated/measure_remeasure_child_after_shrinking.rs
index 5d5fb4f75..c7190de2e 100644
--- a/benches/generated/measure_remeasure_child_after_shrinking.rs
+++ b/benches/generated/measure_remeasure_child_after_shrinking.rs
@@ -17,7 +17,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_remeasure_child_after_stretching.rs b/benches/generated/measure_remeasure_child_after_stretching.rs
index 9634de418..938e14bb2 100644
--- a/benches/generated/measure_remeasure_child_after_stretching.rs
+++ b/benches/generated/measure_remeasure_child_after_stretching.rs
@@ -7,7 +7,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_root.rs b/benches/generated/measure_root.rs
index 10556c0f4..eb3859e81 100644
--- a/benches/generated/measure_root.rs
+++ b/benches/generated/measure_root.rs
@@ -7,7 +7,7 @@ pub fn compute() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_stretch_overrides_measure.rs b/benches/generated/measure_stretch_overrides_measure.rs
index 5df9e18ed..04d4832b4 100644
--- a/benches/generated/measure_stretch_overrides_measure.rs
+++ b/benches/generated/measure_stretch_overrides_measure.rs
@@ -18,7 +18,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/measure_width_overrides_measure.rs b/benches/generated/measure_width_overrides_measure.rs
index 2fdf02994..302751bd3 100644
--- a/benches/generated/measure_width_overrides_measure.rs
+++ b/benches/generated/measure_width_overrides_measure.rs
@@ -10,7 +10,7 @@ pub fn compute() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/benches/generated/mod.rs b/benches/generated/mod.rs
index 5be142834..8989a50d6 100644
--- a/benches/generated/mod.rs
+++ b/benches/generated/mod.rs
@@ -1,10 +1,18 @@
use criterion::{criterion_group, criterion_main, Criterion};
#[allow(dead_code)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+enum WritingMode {
+ Horizontal,
+ Vertical,
+}
+#[allow(dead_code)]
fn measure_standard_text(
known_dimensions: taffy::geometry::Size<Option<f32>>,
available_space: taffy::geometry::Size<taffy::style::AvailableSpace>,
text_content: &str,
+ writing_mode: WritingMode,
) -> taffy::geometry::Size<f32> {
+ use taffy::axis::AbsoluteAxis;
use taffy::prelude::*;
const ZWS: char = '\u{200B}';
const H_WIDTH: f32 = 10.0;
@@ -12,25 +20,31 @@ fn measure_standard_text(
if let Size { width: Some(width), height: Some(height) } = known_dimensions {
return Size { width, height };
}
+ let inline_axis = match writing_mode {
+ WritingMode::Horizontal => AbsoluteAxis::Horizontal,
+ WritingMode::Vertical => AbsoluteAxis::Vertical,
+ };
+ let block_axis = inline_axis.other_axis();
let lines: Vec<&str> = text_content.split(ZWS).collect();
if lines.is_empty() {
return Size::ZERO;
}
let min_line_length: usize = lines.iter().map(|line| line.len()).max().unwrap_or(0);
let max_line_length: usize = lines.iter().map(|line| line.len()).sum();
- let width = known_dimensions.width.unwrap_or_else(|| match available_space.width {
- AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
- AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
- AvailableSpace::Definite(width) => {
- width.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
- }
- });
- let height = known_dimensions.height.unwrap_or_else(|| {
- let width_line_length = (width / H_WIDTH).floor() as usize;
+ let inline_size =
+ known_dimensions.get_abs(inline_axis).unwrap_or_else(|| match available_space.get_abs(inline_axis) {
+ AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
+ AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
+ AvailableSpace::Definite(inline_size) => {
+ inline_size.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
+ }
+ });
+ let block_size = known_dimensions.get_abs(block_axis).unwrap_or_else(|| {
+ let inline_line_length = (inline_size / H_WIDTH).floor() as usize;
let mut line_count = 1;
let mut current_line_length = 0;
for line in &lines {
- if current_line_length + line.len() > width_line_length {
+ if current_line_length + line.len() > inline_line_length {
if current_line_length > 0 {
line_count += 1
};
@@ -41,7 +55,10 @@ fn measure_standard_text(
}
(line_count as f32) * H_HEIGHT
});
- Size { width, height }
+ match writing_mode {
+ WritingMode::Horizontal => Size { width: inline_size, height: block_size },
+ WritingMode::Vertical => Size { width: block_size, height: inline_size },
+ }
}
mod absolute_layout_align_items_and_justify_content_center;
mod absolute_layout_align_items_and_justify_content_center_and_bottom_position;
@@ -387,6 +404,8 @@ mod grid_min_max_column_fixed_width_within_range;
#[cfg(feature = "grid")]
mod grid_out_of_order_items;
#[cfg(feature = "grid")]
+mod grid_relayout_vertical_text;
+#[cfg(feature = "grid")]
mod grid_size_child_fixed_tracks;
mod justify_content_column_center;
mod justify_content_column_flex_end;
@@ -885,6 +904,8 @@ fn benchmark(c: &mut Criterion) {
#[cfg(feature = "grid")]
grid_out_of_order_items::compute();
#[cfg(feature = "grid")]
+ grid_relayout_vertical_text::compute();
+ #[cfg(feature = "grid")]
grid_size_child_fixed_tracks::compute();
justify_content_column_center::compute();
justify_content_column_flex_end::compute();
diff --git a/scripts/gentest/src/main.rs b/scripts/gentest/src/main.rs
index 0ce589075..83c847f1f 100644
--- a/scripts/gentest/src/main.rs
+++ b/scripts/gentest/src/main.rs
@@ -523,7 +523,9 @@ fn generate_node(ident: &str, node: &Value) -> TokenStream {
quote!()
};
- let measure_func: Option<_> = get_string_value("text_content", node).map(generate_measure_function);
+ let text_content = get_string_value("text_content", node);
+ let writing_mode = get_string_value("writingMode", style);
+ let measure_func: Option<_> = text_content.map(|text| generate_measure_function(text, writing_mode));
edges_quoted!(style, margin, generate_length_percentage_auto, quote!(zero()));
edges_quoted!(style, padding, generate_length_percentage, quote!(zero()));
@@ -817,13 +819,23 @@ fn generate_scalar_definition(track_definition: &serde_json::Map<String, Value>)
fn generate_generic_measure_function() -> TokenStream {
quote!(
+ // WARNING: This enum is generated by the gentest script. Do not edit directly
+ #[allow(dead_code)]
+ #[derive(Debug, Clone, Copy, PartialEq, Eq)]
+ enum WritingMode {
+ Horizontal,
+ Vertical,
+ }
+
// WARNING: This function is generated by the gentest script. Do not edit directly
#[allow(dead_code)]
fn measure_standard_text(
known_dimensions: taffy::geometry::Size<Option<f32>>,
available_space: taffy::geometry::Size<taffy::style::AvailableSpace>,
text_content: &str,
+ writing_mode: WritingMode,
) -> taffy::geometry::Size<f32> {
+ use taffy::axis::AbsoluteAxis;
use taffy::prelude::*;
const ZWS: char = '\u{200B}';
const H_WIDTH: f32 = 10.0;
@@ -833,6 +845,12 @@ fn generate_generic_measure_function() -> TokenStream {
return Size { width, height };
}
+ let inline_axis = match writing_mode {
+ WritingMode::Horizontal => AbsoluteAxis::Horizontal,
+ WritingMode::Vertical => AbsoluteAxis::Vertical,
+ };
+ let block_axis = inline_axis.other_axis();
+
let lines: Vec<&str> = text_content.split(ZWS).collect();
if lines.is_empty() {
return Size::ZERO;
@@ -840,19 +858,20 @@ fn generate_generic_measure_function() -> TokenStream {
let min_line_length: usize = lines.iter().map(|line| line.len()).max().unwrap_or(0);
let max_line_length: usize = lines.iter().map(|line| line.len()).sum();
- let width = known_dimensions.width.unwrap_or_else(|| match available_space.width {
- AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
- AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
- AvailableSpace::Definite(width) => {
- width.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
- }
- });
- let height = known_dimensions.height.unwrap_or_else(|| {
- let width_line_length = (width / H_WIDTH).floor() as usize;
+ let inline_size =
+ known_dimensions.get_abs(inline_axis).unwrap_or_else(|| match available_space.get_abs(inline_axis) {
+ AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
+ AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
+ AvailableSpace::Definite(inline_size) => {
+ inline_size.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
+ }
+ });
+ let block_size = known_dimensions.get_abs(block_axis).unwrap_or_else(|| {
+ let inline_line_length = (inline_size / H_WIDTH).floor() as usize;
let mut line_count = 1;
let mut current_line_length = 0;
for line in &lines {
- if current_line_length + line.len() > width_line_length {
+ if current_line_length + line.len() > inline_line_length {
if current_line_length > 0 {
line_count += 1
};
@@ -864,16 +883,24 @@ fn generate_generic_measure_function() -> TokenStream {
(line_count as f32) * H_HEIGHT
});
- Size { width, height }
+ match writing_mode {
+ WritingMode::Horizontal => Size { width: inline_size, height: block_size },
+ WritingMode::Vertical => Size { width: block_size, height: inline_size },
+ }
}
)
}
-fn generate_measure_function(text_content: &str) -> TokenStream {
+fn generate_measure_function(text_content: &str, writing_mode: Option<&str>) -> TokenStream {
+ let writing_mode_token = match writing_mode {
+ Some("vertical-rl" | "vertical-lr") => quote!(super::WritingMode::Vertical),
+ _ => quote!(super::WritingMode::Horizontal),
+ };
+
quote!(
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT : &str = #text_content;
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, #writing_mode_token)
})
)
}
diff --git a/scripts/gentest/test_helper.js b/scripts/gentest/test_helper.js
index 88b176671..8a75ea4f6 100644
--- a/scripts/gentest/test_helper.js
+++ b/scripts/gentest/test_helper.js
@@ -167,6 +167,8 @@ function describeElement(e) {
direction: parseEnum(e.style.direction),
flexDirection: parseEnum(e.style.flexDirection),
+ writingMode: parseEnum(e.style.writingMode),
+
flexWrap: parseEnum(e.style.flexWrap),
overflow: parseEnum(e.style.overflow),
diff --git a/src/lib.rs b/src/lib.rs
index fe22952c8..eec4cb80c 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -18,6 +18,7 @@ extern crate alloc;
#[cfg(feature = "serde")]
extern crate serde;
+pub mod axis;
#[doc(hidden)]
pub mod debug;
pub mod error;
@@ -30,8 +31,6 @@ pub mod style;
pub mod style_helpers;
pub mod tree;
-#[cfg(feature = "grid")]
-mod axis;
#[cfg(feature = "random")]
pub mod randomizable;
diff --git a/test_fixtures/grid_relayout_vertical_text.html b/test_fixtures/grid_relayout_vertical_text.html
new file mode 100644
index 000000000..0e3384160
--- /dev/null
+++ b/test_fixtures/grid_relayout_vertical_text.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <script src="../scripts/gentest/test_helper.js"></script>
+ <link rel="stylesheet" type="text/css" href="../scripts/gentest/test_base_style.css">
+ <title>
+ Test description
+ </title>
+<head/>
+<body>
+
+ <div id="test-root" style="display: grid;grid-template-columns: min-content;grid-template-rows: 40px;">
+ <div style="writing-mode: vertical-lr;">HH​HH​HH​HH​HH​HH​HH</div>
+ <div>HH​HH​HH</div>
+ </div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/tests/generated/grid_fit_content_points_argument.rs b/tests/generated/grid_fit_content_points_argument.rs
index 71b6923d9..70fb4e8a3 100644
--- a/tests/generated/grid_fit_content_points_argument.rs
+++ b/tests/generated/grid_fit_content_points_argument.rs
@@ -10,7 +10,7 @@ fn grid_fit_content_points_argument() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_fit_content_points_max_content.rs b/tests/generated/grid_fit_content_points_max_content.rs
index 15a23bc6f..45e84d4d0 100644
--- a/tests/generated/grid_fit_content_points_max_content.rs
+++ b/tests/generated/grid_fit_content_points_max_content.rs
@@ -10,7 +10,7 @@ fn grid_fit_content_points_max_content() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_fit_content_points_min_content.rs b/tests/generated/grid_fit_content_points_min_content.rs
index 73b72960c..5e9fceee4 100644
--- a/tests/generated/grid_fit_content_points_min_content.rs
+++ b/tests/generated/grid_fit_content_points_min_content.rs
@@ -10,7 +10,7 @@ fn grid_fit_content_points_min_content() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_margins_auto_margins_override_stretch.rs b/tests/generated/grid_margins_auto_margins_override_stretch.rs
index 0ea9ef2f1..e9c129f1b 100644
--- a/tests/generated/grid_margins_auto_margins_override_stretch.rs
+++ b/tests/generated/grid_margins_auto_margins_override_stretch.rs
@@ -25,7 +25,7 @@ fn grid_margins_auto_margins_override_stretch() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_max_content_maximum_single_item.rs b/tests/generated/grid_max_content_maximum_single_item.rs
index c64b0ac16..016f92eb2 100644
--- a/tests/generated/grid_max_content_maximum_single_item.rs
+++ b/tests/generated/grid_max_content_maximum_single_item.rs
@@ -10,7 +10,7 @@ fn grid_max_content_maximum_single_item() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_max_content_single_item.rs b/tests/generated/grid_max_content_single_item.rs
index ed1dcf234..b7926c016 100644
--- a/tests/generated/grid_max_content_single_item.rs
+++ b/tests/generated/grid_max_content_single_item.rs
@@ -10,7 +10,7 @@ fn grid_max_content_single_item() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_max_content_single_item_margin_auto.rs b/tests/generated/grid_max_content_single_item_margin_auto.rs
index abf27ac97..854b507c2 100644
--- a/tests/generated/grid_max_content_single_item_margin_auto.rs
+++ b/tests/generated/grid_max_content_single_item_margin_auto.rs
@@ -18,7 +18,7 @@ fn grid_max_content_single_item_margin_auto() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_max_content_single_item_margin_fixed.rs b/tests/generated/grid_max_content_single_item_margin_fixed.rs
index ff52eb841..51fe1346a 100644
--- a/tests/generated/grid_max_content_single_item_margin_fixed.rs
+++ b/tests/generated/grid_max_content_single_item_margin_fixed.rs
@@ -18,7 +18,7 @@ fn grid_max_content_single_item_margin_fixed() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_max_content_single_item_margin_percent.rs b/tests/generated/grid_max_content_single_item_margin_percent.rs
index 4301b9ae2..7a42b8df3 100644
--- a/tests/generated/grid_max_content_single_item_margin_percent.rs
+++ b/tests/generated/grid_max_content_single_item_margin_percent.rs
@@ -18,7 +18,7 @@ fn grid_max_content_single_item_margin_percent() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_flex_column.rs b/tests/generated/grid_min_content_flex_column.rs
index 412744369..9cd01654d 100644
--- a/tests/generated/grid_min_content_flex_column.rs
+++ b/tests/generated/grid_min_content_flex_column.rs
@@ -9,7 +9,7 @@ fn grid_min_content_flex_column() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -18,7 +18,7 @@ fn grid_min_content_flex_column() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -27,7 +27,7 @@ fn grid_min_content_flex_column() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_flex_row.rs b/tests/generated/grid_min_content_flex_row.rs
index 084d485a7..66a005699 100644
--- a/tests/generated/grid_min_content_flex_row.rs
+++ b/tests/generated/grid_min_content_flex_row.rs
@@ -9,7 +9,7 @@ fn grid_min_content_flex_row() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -18,7 +18,7 @@ fn grid_min_content_flex_row() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -27,7 +27,7 @@ fn grid_min_content_flex_row() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_flex_single_item.rs b/tests/generated/grid_min_content_flex_single_item.rs
index 4bc72bdce..c942f782b 100644
--- a/tests/generated/grid_min_content_flex_single_item.rs
+++ b/tests/generated/grid_min_content_flex_single_item.rs
@@ -24,7 +24,7 @@ fn grid_min_content_flex_single_item() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_flex_single_item_margin_auto.rs b/tests/generated/grid_min_content_flex_single_item_margin_auto.rs
index 8a4ffb0ae..f77d88d4c 100644
--- a/tests/generated/grid_min_content_flex_single_item_margin_auto.rs
+++ b/tests/generated/grid_min_content_flex_single_item_margin_auto.rs
@@ -36,7 +36,7 @@ fn grid_min_content_flex_single_item_margin_auto() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_flex_single_item_margin_fixed.rs b/tests/generated/grid_min_content_flex_single_item_margin_fixed.rs
index 92c9a257d..47d7cd1b3 100644
--- a/tests/generated/grid_min_content_flex_single_item_margin_fixed.rs
+++ b/tests/generated/grid_min_content_flex_single_item_margin_fixed.rs
@@ -36,7 +36,7 @@ fn grid_min_content_flex_single_item_margin_fixed() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_flex_single_item_margin_percent.rs b/tests/generated/grid_min_content_flex_single_item_margin_percent.rs
index 90a6658b6..e353b5932 100644
--- a/tests/generated/grid_min_content_flex_single_item_margin_percent.rs
+++ b/tests/generated/grid_min_content_flex_single_item_margin_percent.rs
@@ -36,7 +36,7 @@ fn grid_min_content_flex_single_item_margin_percent() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_maximum_single_item.rs b/tests/generated/grid_min_content_maximum_single_item.rs
index dd93e8826..9b4eb821f 100644
--- a/tests/generated/grid_min_content_maximum_single_item.rs
+++ b/tests/generated/grid_min_content_maximum_single_item.rs
@@ -10,7 +10,7 @@ fn grid_min_content_maximum_single_item() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_min_content_single_item.rs b/tests/generated/grid_min_content_single_item.rs
index 954c9a839..628462049 100644
--- a/tests/generated/grid_min_content_single_item.rs
+++ b/tests/generated/grid_min_content_single_item.rs
@@ -10,7 +10,7 @@ fn grid_min_content_single_item() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/grid_relayout_vertical_text.rs b/tests/generated/grid_relayout_vertical_text.rs
new file mode 100644
index 000000000..5e56b42ad
--- /dev/null
+++ b/tests/generated/grid_relayout_vertical_text.rs
@@ -0,0 +1,55 @@
+#[test]
+fn grid_relayout_vertical_text() {
+ use slotmap::Key;
+ #[allow(unused_imports)]
+ use taffy::{layout::Layout, prelude::*};
+ let mut taffy = taffy::Taffy::new();
+ let node0 = taffy
+ .new_leaf_with_measure(
+ taffy::style::Style { ..Default::default() },
+ taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
+ const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH\u{200b}HH\u{200b}HH\u{200b}HH";
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Vertical)
+ }),
+ )
+ .unwrap();
+ let node1 = taffy
+ .new_leaf_with_measure(
+ taffy::style::Style { ..Default::default() },
+ taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
+ const TEXT: &str = "HH\u{200b}HH\u{200b}HH";
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
+ }),
+ )
+ .unwrap();
+ let node = taffy
+ .new_with_children(
+ taffy::style::Style {
+ display: taffy::style::Display::Grid,
+ grid_template_rows: vec![points(40f32)],
+ grid_template_columns: vec![min_content()],
+ ..Default::default()
+ },
+ &[node0, node1],
+ )
+ .unwrap();
+ taffy.compute_layout(node, taffy::geometry::Size::MAX_CONTENT).unwrap();
+ println!("\nComputed tree:");
+ taffy::debug::print_tree(&taffy, node);
+ println!();
+ let Layout { size, location, .. } = taffy.layout(node).unwrap();
+ assert_eq!(size.width, 40f32, "width of node {:?}. Expected {}. Actual {}", node.data(), 40f32, size.width);
+ assert_eq!(size.height, 60f32, "height of node {:?}. Expected {}. Actual {}", node.data(), 60f32, size.height);
+ assert_eq!(location.x, 0f32, "x of node {:?}. Expected {}. Actual {}", node.data(), 0f32, location.x);
+ assert_eq!(location.y, 0f32, "y of node {:?}. Expected {}. Actual {}", node.data(), 0f32, location.y);
+ let Layout { size, location, .. } = taffy.layout(node0).unwrap();
+ assert_eq!(size.width, 40f32, "width of node {:?}. Expected {}. Actual {}", node0.data(), 40f32, size.width);
+ assert_eq!(size.height, 40f32, "height of node {:?}. Expected {}. Actual {}", node0.data(), 40f32, size.height);
+ assert_eq!(location.x, 0f32, "x of node {:?}. Expected {}. Actual {}", node0.data(), 0f32, location.x);
+ assert_eq!(location.y, 0f32, "y of node {:?}. Expected {}. Actual {}", node0.data(), 0f32, location.y);
+ let Layout { size, location, .. } = taffy.layout(node1).unwrap();
+ assert_eq!(size.width, 40f32, "width of node {:?}. Expected {}. Actual {}", node1.data(), 40f32, size.width);
+ assert_eq!(size.height, 20f32, "height of node {:?}. Expected {}. Actual {}", node1.data(), 20f32, size.height);
+ assert_eq!(location.x, 0f32, "x of node {:?}. Expected {}. Actual {}", node1.data(), 0f32, location.x);
+ assert_eq!(location.y, 40f32, "y of node {:?}. Expected {}. Actual {}", node1.data(), 40f32, location.y);
+}
diff --git a/tests/generated/grid_size_child_fixed_tracks.rs b/tests/generated/grid_size_child_fixed_tracks.rs
index 167b708ab..4b9604d84 100644
--- a/tests/generated/grid_size_child_fixed_tracks.rs
+++ b/tests/generated/grid_size_child_fixed_tracks.rs
@@ -13,7 +13,7 @@ fn grid_size_child_fixed_tracks() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -26,7 +26,7 @@ fn grid_size_child_fixed_tracks() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHH\u{200b}HHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -39,7 +39,7 @@ fn grid_size_child_fixed_tracks() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -53,7 +53,7 @@ fn grid_size_child_fixed_tracks() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
@@ -67,7 +67,7 @@ fn grid_size_child_fixed_tracks() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH\u{200b}HH\u{200b}HH\u{200b}HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_child.rs b/tests/generated/measure_child.rs
index 24a63f39d..0e6214615 100644
--- a/tests/generated/measure_child.rs
+++ b/tests/generated/measure_child.rs
@@ -9,7 +9,7 @@ fn measure_child() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_child_absolute.rs b/tests/generated/measure_child_absolute.rs
index cdc4e2479..9f15cc4fc 100644
--- a/tests/generated/measure_child_absolute.rs
+++ b/tests/generated/measure_child_absolute.rs
@@ -9,7 +9,7 @@ fn measure_child_absolute() {
taffy::style::Style { position: taffy::style::Position::Absolute, ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_child_constraint.rs b/tests/generated/measure_child_constraint.rs
index 7f7b1e9e9..6b445402a 100644
--- a/tests/generated/measure_child_constraint.rs
+++ b/tests/generated/measure_child_constraint.rs
@@ -4,7 +4,7 @@ fn measure_child_constraint() {
#[allow(unused_imports)]
use taffy::{layout::Layout, prelude::*};
let mut taffy = taffy::Taffy::new();
- let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT) }) ,) . unwrap () ;
+ let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT , super :: WritingMode :: Horizontal) }) ,) . unwrap () ;
let node = taffy
.new_with_children(
taffy::style::Style {
diff --git a/tests/generated/measure_child_constraint_padding_parent.rs b/tests/generated/measure_child_constraint_padding_parent.rs
index 843a025c0..5dc3c0d42 100644
--- a/tests/generated/measure_child_constraint_padding_parent.rs
+++ b/tests/generated/measure_child_constraint_padding_parent.rs
@@ -4,7 +4,7 @@ fn measure_child_constraint_padding_parent() {
#[allow(unused_imports)]
use taffy::{layout::Layout, prelude::*};
let mut taffy = taffy::Taffy::new();
- let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT) }) ,) . unwrap () ;
+ let node0 = taffy . new_leaf_with_measure (taffy :: style :: Style { .. Default :: default () } , taffy :: node :: MeasureFunc :: Raw (| known_dimensions , available_space | { const TEXT : & str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH" ; super :: measure_standard_text (known_dimensions , available_space , TEXT , super :: WritingMode :: Horizontal) }) ,) . unwrap () ;
let node = taffy
.new_with_children(
taffy::style::Style {
diff --git a/tests/generated/measure_child_with_flex_grow.rs b/tests/generated/measure_child_with_flex_grow.rs
index 4b53d7cea..90e186806 100644
--- a/tests/generated/measure_child_with_flex_grow.rs
+++ b/tests/generated/measure_child_with_flex_grow.rs
@@ -18,7 +18,7 @@ fn measure_child_with_flex_grow() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H\u{200b}H\u{200b}H\u{200b}H\u{200b}H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_child_with_flex_shrink.rs b/tests/generated/measure_child_with_flex_shrink.rs
index b4df00bcb..a3787c73f 100644
--- a/tests/generated/measure_child_with_flex_shrink.rs
+++ b/tests/generated/measure_child_with_flex_shrink.rs
@@ -18,7 +18,7 @@ fn measure_child_with_flex_shrink() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH\u{200b}HHHHHHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_flex_basis_overrides_measure.rs b/tests/generated/measure_flex_basis_overrides_measure.rs
index 8e905fc27..8b9f9461e 100644
--- a/tests/generated/measure_flex_basis_overrides_measure.rs
+++ b/tests/generated/measure_flex_basis_overrides_measure.rs
@@ -9,7 +9,7 @@ fn measure_flex_basis_overrides_measure() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_height_overrides_measure.rs b/tests/generated/measure_height_overrides_measure.rs
index 035171dad..fba584fab 100644
--- a/tests/generated/measure_height_overrides_measure.rs
+++ b/tests/generated/measure_height_overrides_measure.rs
@@ -12,7 +12,7 @@ fn measure_height_overrides_measure() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_remeasure_child_after_growing.rs b/tests/generated/measure_remeasure_child_after_growing.rs
index 7593f3041..75713f3b9 100644
--- a/tests/generated/measure_remeasure_child_after_growing.rs
+++ b/tests/generated/measure_remeasure_child_after_growing.rs
@@ -18,7 +18,7 @@ fn measure_remeasure_child_after_growing() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_remeasure_child_after_shrinking.rs b/tests/generated/measure_remeasure_child_after_shrinking.rs
index 07afd1ef4..24265d2c6 100644
--- a/tests/generated/measure_remeasure_child_after_shrinking.rs
+++ b/tests/generated/measure_remeasure_child_after_shrinking.rs
@@ -19,7 +19,7 @@ fn measure_remeasure_child_after_shrinking() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_remeasure_child_after_stretching.rs b/tests/generated/measure_remeasure_child_after_stretching.rs
index b17c7b733..f381f437a 100644
--- a/tests/generated/measure_remeasure_child_after_stretching.rs
+++ b/tests/generated/measure_remeasure_child_after_stretching.rs
@@ -9,7 +9,7 @@ fn measure_remeasure_child_after_stretching() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_root.rs b/tests/generated/measure_root.rs
index d5cb1c133..a7c72dd8d 100644
--- a/tests/generated/measure_root.rs
+++ b/tests/generated/measure_root.rs
@@ -9,7 +9,7 @@ fn measure_root() {
taffy::style::Style { ..Default::default() },
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_stretch_overrides_measure.rs b/tests/generated/measure_stretch_overrides_measure.rs
index 52406af23..b4a0ce571 100644
--- a/tests/generated/measure_stretch_overrides_measure.rs
+++ b/tests/generated/measure_stretch_overrides_measure.rs
@@ -20,7 +20,7 @@ fn measure_stretch_overrides_measure() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "H";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/measure_width_overrides_measure.rs b/tests/generated/measure_width_overrides_measure.rs
index 39350b4db..ce224ec80 100644
--- a/tests/generated/measure_width_overrides_measure.rs
+++ b/tests/generated/measure_width_overrides_measure.rs
@@ -12,7 +12,7 @@ fn measure_width_overrides_measure() {
},
taffy::node::MeasureFunc::Raw(|known_dimensions, available_space| {
const TEXT: &str = "HHHHHHHHHH";
- super::measure_standard_text(known_dimensions, available_space, TEXT)
+ super::measure_standard_text(known_dimensions, available_space, TEXT, super::WritingMode::Horizontal)
}),
)
.unwrap();
diff --git a/tests/generated/mod.rs b/tests/generated/mod.rs
index 46fd683b0..b735d5697 100644
--- a/tests/generated/mod.rs
+++ b/tests/generated/mod.rs
@@ -1,9 +1,17 @@
#[allow(dead_code)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+enum WritingMode {
+ Horizontal,
+ Vertical,
+}
+#[allow(dead_code)]
fn measure_standard_text(
known_dimensions: taffy::geometry::Size<Option<f32>>,
available_space: taffy::geometry::Size<taffy::style::AvailableSpace>,
text_content: &str,
+ writing_mode: WritingMode,
) -> taffy::geometry::Size<f32> {
+ use taffy::axis::AbsoluteAxis;
use taffy::prelude::*;
const ZWS: char = '\u{200B}';
const H_WIDTH: f32 = 10.0;
@@ -11,25 +19,31 @@ fn measure_standard_text(
if let Size { width: Some(width), height: Some(height) } = known_dimensions {
return Size { width, height };
}
+ let inline_axis = match writing_mode {
+ WritingMode::Horizontal => AbsoluteAxis::Horizontal,
+ WritingMode::Vertical => AbsoluteAxis::Vertical,
+ };
+ let block_axis = inline_axis.other_axis();
let lines: Vec<&str> = text_content.split(ZWS).collect();
if lines.is_empty() {
return Size::ZERO;
}
let min_line_length: usize = lines.iter().map(|line| line.len()).max().unwrap_or(0);
let max_line_length: usize = lines.iter().map(|line| line.len()).sum();
- let width = known_dimensions.width.unwrap_or_else(|| match available_space.width {
- AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
- AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
- AvailableSpace::Definite(width) => {
- width.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
- }
- });
- let height = known_dimensions.height.unwrap_or_else(|| {
- let width_line_length = (width / H_WIDTH).floor() as usize;
+ let inline_size =
+ known_dimensions.get_abs(inline_axis).unwrap_or_else(|| match available_space.get_abs(inline_axis) {
+ AvailableSpace::MinContent => min_line_length as f32 * H_WIDTH,
+ AvailableSpace::MaxContent => max_line_length as f32 * H_WIDTH,
+ AvailableSpace::Definite(inline_size) => {
+ inline_size.min(max_line_length as f32 * H_WIDTH).max(min_line_length as f32 * H_WIDTH)
+ }
+ });
+ let block_size = known_dimensions.get_abs(block_axis).unwrap_or_else(|| {
+ let inline_line_length = (inline_size / H_WIDTH).floor() as usize;
let mut line_count = 1;
let mut current_line_length = 0;
for line in &lines {
- if current_line_length + line.len() > width_line_length {
+ if current_line_length + line.len() > inline_line_length {
if current_line_length > 0 {
line_count += 1
};
@@ -40,7 +54,10 @@ fn measure_standard_text(
}
(line_count as f32) * H_HEIGHT
});
- Size { width, height }
+ match writing_mode {
+ WritingMode::Horizontal => Size { width: inline_size, height: block_size },
+ WritingMode::Vertical => Size { width: block_size, height: inline_size },
+ }
}
mod absolute_layout_align_items_and_justify_content_center;
mod absolute_layout_align_items_and_justify_content_center_and_bottom_position;
@@ -386,6 +403,8 @@ mod grid_min_max_column_fixed_width_within_range;
#[cfg(feature = "grid")]
mod grid_out_of_order_items;
#[cfg(feature = "grid")]
+mod grid_relayout_vertical_text;
+#[cfg(feature = "grid")]
mod grid_size_child_fixed_tracks;
mod justify_content_column_center;
mod justify_content_column_flex_end;