From 375d7d8d47c7cef1fed963bbea473ac5a1d0b34e Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Tue, 11 Apr 2023 13:56:43 +0100 Subject: [PATCH 1/3] Make low-level layout algorithm functions public --- src/compute/flexbox.rs | 2 +- src/compute/grid/mod.rs | 2 +- src/compute/mod.rs | 2 +- src/lib.rs | 3 +++ 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/compute/flexbox.rs b/src/compute/flexbox.rs index 68a90eee7..2c87a7b39 100644 --- a/src/compute/flexbox.rs +++ b/src/compute/flexbox.rs @@ -21,7 +21,7 @@ use crate::tree::{LayoutTree, NodeId}; use crate::debug::NODE_LOGGER; /// The public interface to Taffy's Flexbox algorithm implementation -pub(crate) struct FlexboxAlgorithm; +pub struct FlexboxAlgorithm; impl LayoutAlgorithm for FlexboxAlgorithm { const NAME: &'static str = "FLEXBOX"; diff --git a/src/compute/grid/mod.rs b/src/compute/grid/mod.rs index e758c3e54..a99b6057b 100644 --- a/src/compute/grid/mod.rs +++ b/src/compute/grid/mod.rs @@ -34,7 +34,7 @@ mod types; mod util; /// The public interface to Taffy's CSS Grid algorithm implementation -pub(crate) struct CssGridAlgorithm; +pub struct CssGridAlgorithm; impl LayoutAlgorithm for CssGridAlgorithm { const NAME: &'static str = "CSS GRID"; diff --git a/src/compute/mod.rs b/src/compute/mod.rs index ca85b4187..bde1b6a67 100644 --- a/src/compute/mod.rs +++ b/src/compute/mod.rs @@ -54,7 +54,7 @@ pub fn compute_layout( } /// A common interface that all Taffy layout algorithms conform to -pub(crate) trait LayoutAlgorithm { +pub trait LayoutAlgorithm { /// The name of the algorithm (mainly used for debug purposes) const NAME: &'static str; diff --git a/src/lib.rs b/src/lib.rs index 47b99498f..e70c4dde2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -42,4 +42,7 @@ mod resolve; mod sys; pub use crate::compute::compute_layout; +pub use crate::compute::flexbox::FlexboxAlgorithm; +pub use crate::compute::grid::CssGridAlgorithm; +pub use crate::compute::LayoutAlgorithm; pub use crate::node::Taffy; From f93f91fe7a38f30b304e402bb3a8aabca7ad5d88 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Tue, 11 Apr 2023 14:12:47 +0100 Subject: [PATCH 2/3] Add const constructor to NodeId --- src/tree.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tree.rs b/src/tree.rs index fa7b8f182..857481e85 100644 --- a/src/tree.rs +++ b/src/tree.rs @@ -11,6 +11,12 @@ use slotmap::{DefaultKey, Key, KeyData}; /// and u64 if needed. #[derive(Copy, Clone, Debug, PartialEq, Eq)] pub struct NodeId(u64); +impl NodeId { + /// Create a new NodeId from a u64 value + pub const fn new(val: u64) -> Self { + Self(val) + } +} impl From for NodeId { #[inline] From c1302ad51314c0271406d99621ff5e97a231ab25 Mon Sep 17 00:00:00 2001 From: Nico Burns Date: Tue, 11 Apr 2023 14:16:55 +0100 Subject: [PATCH 3/3] Feature flag algorithm exports --- src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index e70c4dde2..5072dc099 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -42,7 +42,9 @@ mod resolve; mod sys; pub use crate::compute::compute_layout; +#[cfg(feature = "flexbox")] pub use crate::compute::flexbox::FlexboxAlgorithm; +#[cfg(feature = "grid")] pub use crate::compute::grid::CssGridAlgorithm; pub use crate::compute::LayoutAlgorithm; pub use crate::node::Taffy;