diff --git a/bindings/java/src/enums.rs b/bindings/java/src/enums.rs index 22c136ea3..c6c9d67c6 100644 --- a/bindings/java/src/enums.rs +++ b/bindings/java/src/enums.rs @@ -1,39 +1,27 @@ use taffy::AbsoluteAxis; -use taffy::AlignItems; use taffy::AlignContent; +use taffy::AlignItems; +use taffy::BoxGenerationMode; +use taffy::BoxSizing; +use taffy::Display; use taffy::FlexDirection; use taffy::FlexWrap; use taffy::GridAutoFlow; -use taffy::TextAlign; use taffy::Overflow; -use taffy::BoxSizing; use taffy::Position; -use taffy::BoxGenerationMode; -use taffy::Display; +use taffy::TextAlign; use crate::traits::FromJavaEnum; -impl FromJavaEnum for Display { - const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/Display;"; - - fn from_ordinal(internal: i32) -> Option { - Some(match internal { - 0 => Display::Block, - 1 => Display::Flex, - 2 => Display::Grid, - 3 => Display::None, - _ => Display::default(), - }) - } -} - -impl FromJavaEnum for BoxGenerationMode { - const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/BoxGenerationMode;"; +impl FromJavaEnum for TextAlign { + const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/TextAlign;"; - fn from_ordinal(internal: i32) -> Option { + fn from_ordinal(internal: i32) -> Option { Some(match internal { - 0 => BoxGenerationMode::Normal, - 1 => BoxGenerationMode::None, - _ => BoxGenerationMode::default(), + 0 => TextAlign::Auto, + 1 => TextAlign::LegacyLeft, + 2 => TextAlign::LegacyRight, + 3 => TextAlign::LegacyCenter, + _ => TextAlign::default(), }) } } @@ -50,18 +38,6 @@ impl FromJavaEnum for Position { } } -impl FromJavaEnum for BoxSizing { - const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/BoxSizing;"; - - fn from_ordinal(internal: i32) -> Option { - Some(match internal { - 0 => BoxSizing::BorderBox, - 1 => BoxSizing::ContentBox, - _ => BoxSizing::default(), - }) - } -} - impl FromJavaEnum for Overflow { const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/Overflow;"; @@ -76,20 +52,6 @@ impl FromJavaEnum for Overflow { } } -impl FromJavaEnum for TextAlign { - const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/TextAlign;"; - - fn from_ordinal(internal: i32) -> Option { - Some(match internal { - 0 => TextAlign::Auto, - 1 => TextAlign::LegacyLeft, - 2 => TextAlign::LegacyRight, - 3 => TextAlign::LegacyCenter, - _ => TextAlign::default(), - }) - } -} - impl FromJavaEnum for GridAutoFlow { const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/GridAutoFlow;"; @@ -131,21 +93,40 @@ impl FromJavaEnum for FlexDirection { } } -impl FromJavaEnum for AlignContent { - const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/AlignContent;"; +impl FromJavaEnum for Display { + const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/Display;"; - fn from_ordinal(internal: i32) -> Option { + fn from_ordinal(internal: i32) -> Option { Some(match internal { - 0 => AlignContent::Start, - 1 => AlignContent::End, - 2 => AlignContent::FlexStart, - 3 => AlignContent::FlexEnd, - 4 => AlignContent::Center, - 5 => AlignContent::Stretch, - 6 => AlignContent::SpaceBetween, - 7 => AlignContent::SpaceEvenly, - 8 => AlignContent::SpaceAround, - _ => panic!("Invalid value: {internal}"), + 0 => Display::Block, + 1 => Display::Flex, + 2 => Display::Grid, + 3 => Display::None, + _ => Display::default(), + }) + } +} + +impl FromJavaEnum for BoxSizing { + const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/BoxSizing;"; + + fn from_ordinal(internal: i32) -> Option { + Some(match internal { + 0 => BoxSizing::BorderBox, + 1 => BoxSizing::ContentBox, + _ => BoxSizing::default(), + }) + } +} + +impl FromJavaEnum for BoxGenerationMode { + const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/BoxGenerationMode;"; + + fn from_ordinal(internal: i32) -> Option { + Some(match internal { + 0 => BoxGenerationMode::Normal, + 1 => BoxGenerationMode::None, + _ => BoxGenerationMode::default(), }) } } @@ -167,6 +148,25 @@ impl FromJavaEnum for AlignItems { } } +impl FromJavaEnum for AlignContent { + const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/AlignContent;"; + + fn from_ordinal(internal: i32) -> Option { + Some(match internal { + 0 => AlignContent::Start, + 1 => AlignContent::End, + 2 => AlignContent::FlexStart, + 3 => AlignContent::FlexEnd, + 4 => AlignContent::Center, + 5 => AlignContent::Stretch, + 6 => AlignContent::SpaceBetween, + 7 => AlignContent::SpaceEvenly, + 8 => AlignContent::SpaceAround, + _ => panic!("Invalid value: {internal}"), + }) + } +} + impl FromJavaEnum for AbsoluteAxis { const JAVA_CLASS: &'static str = "Lcom/dioxuslabs/taffy/enums/AbsoluteAxis;"; diff --git a/scripts/genenums/src/main.rs b/scripts/genenums/src/main.rs index 4e3cd0c55..3d30c23a7 100644 --- a/scripts/genenums/src/main.rs +++ b/scripts/genenums/src/main.rs @@ -14,49 +14,46 @@ struct RustEnum<'local> { fn main() { fs::remove_file("./bindings/java/src/enums.rs").expect("Error: Unable to remove java/src/enums.rs file"); - let mut enums: Vec = Vec::new(); - enums.push(RustEnum { name: "Display", values: vec!["Block", "Flex", "Grid", "None"], default: true }); - enums.push(RustEnum { name: "BoxGenerationMode", values: vec!["Normal", "None"], default: true }); - enums.push(RustEnum { name: "Position", values: vec!["Relative", "Absolute"], default: true }); - enums.push(RustEnum { name: "BoxSizing", values: vec!["BorderBox", "ContentBox"], default: true }); - enums.push(RustEnum { name: "Overflow", values: vec!["Visible", "Clip", "Hidden", "Scroll"], default: true }); - enums.push(RustEnum { - name: "TextAlign", - values: vec!["Auto", "LegacyLeft", "LegacyRight", "LegacyCenter"], - default: true, - }); - enums.push(RustEnum { - name: "GridAutoFlow", - values: vec!["Row", "Column", "RowDense", "ColumnDense"], - default: true, - }); - enums.push(RustEnum { name: "FlexWrap", values: vec!["NoWrap", "Wrap", "WrapReverse"], default: true }); - enums.push(RustEnum { - name: "FlexDirection", - values: vec!["Row", "Column", "RowReverse", "ColumnReverse"], - default: true, - }); - enums.push(RustEnum { - name: "AlignContent", - values: vec![ - "Start", - "End", - "FlexStart", - "FlexEnd", - "Center", - "Stretch", - "SpaceBetween", - "SpaceEvenly", - "SpaceAround", - ], - default: false, - }); - enums.push(RustEnum { - name: "AlignItems", - values: vec!["Start", "End", "FlexStart", "FlexEnd", "Center", "Baseline", "Stretch"], - default: false, - }); - enums.push(RustEnum { name: "AbsoluteAxis", values: vec!["Horizontal", "Vertical"], default: false }); + let mut enums: Vec = vec![ + RustEnum { name: "Display", values: vec!["Block", "Flex", "Grid", "None"], default: true }, + RustEnum { name: "BoxGenerationMode", values: vec!["Normal", "None"], default: true }, + RustEnum { name: "Position", values: vec!["Relative", "Absolute"], default: true }, + RustEnum { name: "BoxSizing", values: vec!["BorderBox", "ContentBox"], default: true }, + RustEnum { name: "Overflow", values: vec!["Visible", "Clip", "Hidden", "Scroll"], default: true }, + RustEnum { + name: "TextAlign", + values: vec!["Auto", "LegacyLeft", "LegacyRight", "LegacyCenter"], + default: true, + }, + RustEnum { name: "GridAutoFlow", values: vec!["Row", "Column", "RowDense", "ColumnDense"], default: true }, + RustEnum { name: "FlexWrap", values: vec!["NoWrap", "Wrap", "WrapReverse"], default: true }, + RustEnum { name: "FlexDirection", values: vec!["Row", "Column", "RowReverse", "ColumnReverse"], default: true }, + RustEnum { + name: "AlignContent", + values: vec![ + "Start", + "End", + "FlexStart", + "FlexEnd", + "Center", + "Stretch", + "SpaceBetween", + "SpaceEvenly", + "SpaceAround", + ], + default: false, + }, + RustEnum { + name: "AlignItems", + values: vec!["Start", "End", "FlexStart", "FlexEnd", "Center", "Baseline", "Stretch"], + default: false, + }, + RustEnum { name: "AbsoluteAxis", values: vec!["Horizontal", "Vertical"], default: false }, + ]; + + // Might look inverted at first, but it is needed for rustfmt to not throw formatting errors + // (also known as ensuring alphabetical order in imports) + enums.sort_by(|a, b| b.name.cmp(a.name)); for value in enums.into_iter() { create_enum(value.name, &value.values);