gioser

tawasuyu/taffy

A high performance rust-powered UI layout library

HTML 5544Rust 88Markdown 11TOML 91926 Definitions

Move cosmic-text example to it's own crate (#754)

1ad9fc1134ff7eb5d35a0d497fab74ce3e1616cb · by Nico Burns · (1 year ago) · parent cf4f76625 · browse the tree at this commit

Semantic delta · 23

examples/cosmic_text.rs

examples/cosmic_text/src/image.rs

examples/cosmic_text/src/main.rs

6 files · +145 −121

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 47ab6ce99..a63399e39 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -44,6 +44,7 @@ jobs:
       - uses: actions/checkout@v4
       - uses: dtolnay/rust-toolchain@stable
       - run: cargo build --examples
+      - run: cargo build -p cosmic-text-example
 
   # No features
   test-features-none:
diff --git a/Cargo.toml b/Cargo.toml
index 2f517357b..4cb5bbc95 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -75,7 +75,6 @@ debug = ["std"]
 profile = ["std"]
 
 [dev-dependencies]
-cosmic-text = "0.12"
 serde_json = "1.0.93"
 
 # Enable default features for tests and examples
@@ -100,5 +99,5 @@ members = [
     "scripts/gentest",
     "scripts/format-fixtures",
     "scripts/import-yoga-tests",
-    "benches",
+    "benches", "examples/cosmic_text",
 ]
diff --git a/examples/cosmic_text/Cargo.toml b/examples/cosmic_text/Cargo.toml
new file mode 100644
index 000000000..b0096a940
--- /dev/null
+++ b/examples/cosmic_text/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "cosmic-text-example"
+version = "0.1.0"
+edition = "2021"
+
+[dependencies]
+taffy = { path = "../.." }
+cosmic-text = "0.12"
diff --git a/examples/cosmic_text/src/image.rs b/examples/cosmic_text/src/image.rs
new file mode 100644
index 000000000..889e6b38d
--- /dev/null
+++ b/examples/cosmic_text/src/image.rs
@@ -0,0 +1,18 @@
+use taffy::geometry::Size;
+
+pub struct ImageContext {
+    pub width: f32,
+    pub height: f32,
+}
+
+pub fn image_measure_function(
+    known_dimensions: taffy::geometry::Size<Option<f32>>,
+    image_context: &ImageContext,
+) -> taffy::geometry::Size<f32> {
+    match (known_dimensions.width, known_dimensions.height) {
+        (Some(width), Some(height)) => Size { width, height },
+        (Some(width), None) => Size { width, height: (width / image_context.width) * image_context.height },
+        (None, Some(height)) => Size { width: (height / image_context.height) * image_context.width, height },
+        (None, None) => Size { width: image_context.width, height: image_context.height },
+    }
+}
diff --git a/examples/cosmic_text.rs b/examples/cosmic_text/src/main.rs
similarity index 97%
rename from examples/cosmic_text.rs
rename to examples/cosmic_text/src/main.rs
index 85e0ef0c4..efb40506a 100644
--- a/examples/cosmic_text.rs
+++ b/examples/cosmic_text/src/main.rs
@@ -1,8 +1,6 @@
-mod common {
-    pub mod image;
-}
-use common::image::{image_measure_function, ImageContext};
+mod image;
 use cosmic_text::{Attrs, Buffer, FontSystem, Metrics, Shaping};
+use image::{image_measure_function, ImageContext};
 use taffy::prelude::*;
 
 pub const LOREM_IPSUM : &str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";