From 431dcf3d2e884e5a241e65f68d1685963deb2d6f Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 21 Jun 2019 10:06:19 -0700 Subject: [PATCH] Rename `pathfinder_geometry::basic` to simply `pathfinder_geometry`, and move the remaining code in that crate to a new crate, `pathfinder_content` The old hierarchy was confusing. --- Cargo.lock | 32 ++++- Cargo.toml | 1 + c/Cargo.toml | 3 + c/src/lib.rs | 46 ++++--- canvas/Cargo.toml | 3 + canvas/src/lib.rs | 20 +-- content/Cargo.toml | 17 +++ {geometry => content}/src/clip.rs | 10 +- {geometry => content}/src/color.rs | 0 {geometry => content}/src/dash.rs | 0 {geometry => content}/src/dilation.rs | 4 +- .../src/basic/mod.rs => content/src/lib.rs | 26 +++- {geometry => content}/src/orientation.rs | 0 {geometry => content}/src/outline.rs | 14 +- {geometry => content}/src/segment.rs | 10 +- {geometry => content}/src/stroke.rs | 10 +- content/src/transform.rs | 124 ++++++++++++++++++ demo/android/rust/src/lib.rs | 4 +- demo/common/Cargo.toml | 3 + demo/common/src/camera.rs | 8 +- demo/common/src/lib.rs | 10 +- demo/common/src/renderer.rs | 8 +- demo/common/src/ui.rs | 4 +- demo/common/src/window.rs | 6 +- demo/magicleap/Cargo.toml | 3 + demo/magicleap/src/display.rs | 8 +- demo/magicleap/src/glwindow.rs | 8 +- demo/magicleap/src/immersive.rs | 14 +- demo/magicleap/src/lib.rs | 10 +- demo/magicleap/src/magicleap.rs | 12 +- demo/native/src/main.rs | 4 +- examples/canvas_glutin_minimal/Cargo.toml | 3 + examples/canvas_glutin_minimal/src/main.rs | 6 +- examples/canvas_metal_minimal/Cargo.toml | 3 + examples/canvas_metal_minimal/src/main.rs | 6 +- examples/canvas_minimal/Cargo.toml | 3 + examples/canvas_minimal/src/main.rs | 6 +- examples/canvas_moire/Cargo.toml | 3 + examples/canvas_moire/src/main.rs | 4 +- examples/canvas_text/Cargo.toml | 3 + examples/canvas_text/src/main.rs | 4 +- examples/swf_basic/src/main.rs | 6 +- geometry/Cargo.toml | 5 - geometry/src/lib.rs | 26 +--- geometry/src/{basic => }/line_segment.rs | 4 +- geometry/src/{basic => }/rect.rs | 2 +- geometry/src/{basic => }/transform2d.rs | 63 +-------- geometry/src/{basic => }/transform3d.rs | 66 +--------- geometry/src/unit_vector.rs | 2 +- geometry/src/{basic => }/vector.rs | 0 gl/src/lib.rs | 4 +- gpu/Cargo.toml | 3 + gpu/src/lib.rs | 8 +- metal/src/lib.rs | 4 +- renderer/Cargo.toml | 3 + renderer/src/builder.rs | 6 +- renderer/src/concurrent/scene_proxy.rs | 2 +- renderer/src/gpu/debug.rs | 4 +- renderer/src/gpu/options.rs | 6 +- renderer/src/gpu/renderer.rs | 8 +- renderer/src/gpu_data.rs | 6 +- renderer/src/options.rs | 10 +- renderer/src/paint.rs | 4 +- renderer/src/scene.rs | 10 +- renderer/src/tile_map.rs | 4 +- renderer/src/tiles.rs | 10 +- renderer/src/z_buffer.rs | 4 +- svg/Cargo.toml | 3 + svg/src/lib.rs | 17 +-- swf/Cargo.toml | 3 + swf/src/lib.rs | 8 +- swf/src/shapes.rs | 4 +- text/Cargo.toml | 3 + text/src/lib.rs | 8 +- ui/Cargo.toml | 3 + ui/src/lib.rs | 6 +- 76 files changed, 443 insertions(+), 345 deletions(-) create mode 100644 content/Cargo.toml rename {geometry => content}/src/clip.rs (98%) rename {geometry => content}/src/color.rs (100%) rename {geometry => content}/src/dash.rs (100%) rename {geometry => content}/src/dilation.rs (98%) rename geometry/src/basic/mod.rs => content/src/lib.rs (50%) rename {geometry => content}/src/orientation.rs (100%) rename {geometry => content}/src/outline.rs (98%) rename {geometry => content}/src/segment.rs (98%) rename {geometry => content}/src/stroke.rs (98%) create mode 100644 content/src/transform.rs rename geometry/src/{basic => }/line_segment.rs (98%) rename geometry/src/{basic => }/rect.rs (99%) rename geometry/src/{basic => }/transform2d.rs (82%) rename geometry/src/{basic => }/transform3d.rs (89%) rename geometry/src/{basic => }/vector.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 186eb4ef..1a5dc613 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -159,6 +159,7 @@ dependencies = [ "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)", "pathfinder_canvas 0.1.0", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -174,6 +175,7 @@ dependencies = [ "metal 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "pathfinder_canvas 0.1.0", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -189,6 +191,7 @@ version = "0.1.0" dependencies = [ "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "pathfinder_canvas 0.1.0", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -203,6 +206,7 @@ version = "0.1.0" dependencies = [ "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "pathfinder_canvas 0.1.0", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -218,6 +222,7 @@ dependencies = [ "font-kit 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "pathfinder_canvas 0.1.0", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -1377,6 +1382,7 @@ dependencies = [ "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)", "pathfinder_canvas 0.1.0", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -1389,12 +1395,25 @@ name = "pathfinder_canvas" version = "0.1.0" dependencies = [ "font-kit 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_renderer 0.1.0", "pathfinder_text 0.1.0", "skribo 0.0.1 (git+https://github.com/linebender/skribo.git?rev=a2d683856ba1f2d0095b12dd7823d1602a87614e)", ] +[[package]] +name = "pathfinder_content" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_geometry 0.3.0", + "pathfinder_simd 0.3.0", + "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "pathfinder_demo" version = "0.1.0" @@ -1404,6 +1423,7 @@ dependencies = [ "image 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "metal 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -1420,13 +1440,8 @@ dependencies = [ name = "pathfinder_geometry" version = "0.3.0" dependencies = [ - "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "pathfinder_simd 0.3.0", - "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1447,6 +1462,7 @@ name = "pathfinder_gpu" version = "0.1.0" dependencies = [ "image 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_simd 0.3.0", ] @@ -1468,6 +1484,7 @@ dependencies = [ "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "glutin 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_demo 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", @@ -1507,6 +1524,7 @@ dependencies = [ "fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gpu 0.1.0", "pathfinder_simd 0.3.0", @@ -1530,6 +1548,7 @@ name = "pathfinder_svg" version = "0.1.0" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_renderer 0.1.0", "usvg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1539,6 +1558,7 @@ dependencies = [ name = "pathfinder_swf" version = "0.1.0" dependencies = [ + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gl 0.1.0", "pathfinder_gpu 0.1.0", @@ -1554,6 +1574,7 @@ dependencies = [ "euclid 0.19.8 (registry+https://github.com/rust-lang/crates.io-index)", "font-kit 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "lyon_path 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_renderer 0.1.0", "skribo 0.0.1 (git+https://github.com/linebender/skribo.git?rev=a2d683856ba1f2d0095b12dd7823d1602a87614e)", @@ -1564,6 +1585,7 @@ name = "pathfinder_ui" version = "0.1.0" dependencies = [ "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", + "pathfinder_content 0.1.0", "pathfinder_geometry 0.3.0", "pathfinder_gpu 0.1.0", "pathfinder_simd 0.3.0", diff --git a/Cargo.toml b/Cargo.toml index d11db85e..5d8e378e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ members = [ "c", "canvas", + "content", "demo/android/rust", "demo/common", "demo/magicleap", diff --git a/c/Cargo.toml b/c/Cargo.toml index ea2c8146..caad0fec 100644 --- a/c/Cargo.toml +++ b/c/Cargo.toml @@ -14,6 +14,9 @@ libc = "0.2" [dependencies.pathfinder_canvas] path = "../canvas" +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/c/src/lib.rs b/c/src/lib.rs index 219e43bd..9823f7d1 100644 --- a/c/src/lib.rs +++ b/c/src/lib.rs @@ -13,11 +13,11 @@ use gl; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, LineJoin}; use pathfinder_canvas::{Path2D, TextMetrics}; -use pathfinder_geometry::basic::rect::{RectF, RectI}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::color::{ColorF, ColorU}; -use pathfinder_geometry::outline::ArcDirection; -use pathfinder_geometry::stroke::LineCap; +use pathfinder_content::color::{ColorF, ColorU}; +use pathfinder_content::outline::ArcDirection; +use pathfinder_content::stroke::LineCap; +use pathfinder_geometry::rect::{RectF, RectI}; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use pathfinder_renderer::concurrent::rayon::RayonExecutor; @@ -44,7 +44,7 @@ pub const PF_LINE_JOIN_MITER: u8 = 0; pub const PF_LINE_JOIN_BEVEL: u8 = 1; pub const PF_LINE_JOIN_ROUND: u8 = 2; -// `geometry` +// `content` pub const PF_ARC_DIRECTION_CW: u8 = 0; pub const PF_ARC_DIRECTION_CCW: u8 = 1; @@ -68,6 +68,22 @@ pub struct PFTextMetrics { pub width: f32, } +// `content` +#[repr(C)] +pub struct PFColorF { + pub r: f32, + pub g: f32, + pub b: f32, + pub a: f32, +} +#[repr(C)] +pub struct PFColorU { + pub r: u8, + pub g: u8, + pub b: u8, + pub a: u8, +} + // `geometry` #[repr(C)] pub struct PFVector2F { @@ -89,20 +105,6 @@ pub struct PFRectI { pub origin: PFVector2I, pub lower_right: PFVector2I, } -#[repr(C)] -pub struct PFColorF { - pub r: f32, - pub g: f32, - pub b: f32, - pub a: f32, -} -#[repr(C)] -pub struct PFColorU { - pub r: u8, - pub g: u8, - pub b: u8, - pub a: u8, -} // `gl` pub type PFGLDeviceRef = *mut GLDevice; @@ -472,7 +474,7 @@ impl TextMetricsExt for TextMetrics { } } -// Helpers for `geometry` +// Helpers for `content` impl PFColorF { #[inline] @@ -488,6 +490,8 @@ impl PFColorU { } } +// Helpers for `geometry` + impl PFRectF { #[inline] pub fn to_rust(&self) -> RectF { diff --git a/canvas/Cargo.toml b/canvas/Cargo.toml index 1c620859..fb4f8037 100644 --- a/canvas/Cargo.toml +++ b/canvas/Cargo.toml @@ -10,6 +10,9 @@ crate-type = ["rlib", "staticlib"] [dependencies] font-kit = "0.2" +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/canvas/src/lib.rs b/canvas/src/lib.rs index 9f710dd0..581ca48a 100644 --- a/canvas/src/lib.rs +++ b/canvas/src/lib.rs @@ -17,15 +17,15 @@ use font_kit::loaders::default::Font; use font_kit::properties::Properties; use font_kit::source::{Source, SystemSource}; use font_kit::sources::mem::MemSource; -use pathfinder_geometry::basic::line_segment::LineSegment2F; -use pathfinder_geometry::basic::vector::Vector2F; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::basic::transform2d::Transform2DF; -use pathfinder_geometry::color::ColorU; -use pathfinder_geometry::dash::OutlineDash; -use pathfinder_geometry::outline::{ArcDirection, Contour, Outline}; -use pathfinder_geometry::stroke::{LineCap, LineJoin as StrokeLineJoin}; -use pathfinder_geometry::stroke::{OutlineStrokeToFill, StrokeStyle}; +use pathfinder_content::color::ColorU; +use pathfinder_content::dash::OutlineDash; +use pathfinder_content::outline::{ArcDirection, Contour, Outline}; +use pathfinder_content::stroke::{LineCap, LineJoin as StrokeLineJoin}; +use pathfinder_content::stroke::{OutlineStrokeToFill, StrokeStyle}; +use pathfinder_geometry::line_segment::LineSegment2F; +use pathfinder_geometry::vector::Vector2F; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; use pathfinder_renderer::paint::{Paint, PaintId}; use pathfinder_renderer::scene::{PathObject, Scene}; use pathfinder_text::{SceneExt, TextRenderMode}; @@ -526,7 +526,7 @@ pub enum TextAlign { Center, } -// We duplicate `pathfinder_geometry::stroke::LineJoin` here because the HTML canvas API treats the +// We duplicate `pathfinder_content::stroke::LineJoin` here because the HTML canvas API treats the // miter limit as part of the canvas state, while the native Pathfinder API treats the miter limit // as part of the line join. Pathfinder's choice is more logical, because the miter limit is // specific to miter joins. In this API, however, for compatibility we go with the HTML canvas diff --git a/content/Cargo.toml b/content/Cargo.toml new file mode 100644 index 00000000..cdd7b473 --- /dev/null +++ b/content/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "pathfinder_content" +version = "0.1.0" +authors = ["Patrick Walton "] +edition = "2018" + +[dependencies] +arrayvec = "0.4" +bitflags = "1.0" +log = "0.4" +smallvec = "0.6" + +[dependencies.pathfinder_geometry] +path = "../geometry" + +[dependencies.pathfinder_simd] +path = "../simd" diff --git a/geometry/src/clip.rs b/content/src/clip.rs similarity index 98% rename from geometry/src/clip.rs rename to content/src/clip.rs index 4569a68d..b4620ba5 100644 --- a/geometry/src/clip.rs +++ b/content/src/clip.rs @@ -1,4 +1,4 @@ -// pathfinder/geometry/src/clip.rs +// pathfinder/content/src/clip.rs // // Copyright © 2019 The Pathfinder Project Developers. // @@ -8,13 +8,13 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use crate::basic::line_segment::LineSegment2F; -use crate::basic::vector::{Vector2F, Vector4F}; -use crate::basic::rect::RectF; use crate::outline::{Contour, PointFlags, PushSegmentFlags}; use crate::segment::{CubicSegment, Segment}; -use crate::util::lerp; use arrayvec::ArrayVec; +use pathfinder_geometry::line_segment::LineSegment2F; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::util::lerp; +use pathfinder_geometry::vector::{Vector2F, Vector4F}; use smallvec::SmallVec; use std::fmt::Debug; use std::mem; diff --git a/geometry/src/color.rs b/content/src/color.rs similarity index 100% rename from geometry/src/color.rs rename to content/src/color.rs diff --git a/geometry/src/dash.rs b/content/src/dash.rs similarity index 100% rename from geometry/src/dash.rs rename to content/src/dash.rs diff --git a/geometry/src/dilation.rs b/content/src/dilation.rs similarity index 98% rename from geometry/src/dilation.rs rename to content/src/dilation.rs index 4441c90b..40a1c729 100644 --- a/geometry/src/dilation.rs +++ b/content/src/dilation.rs @@ -1,4 +1,4 @@ -// pathfinder/geometry/src/dilation.rs +// pathfinder/content/src/dilation.rs // // Copyright © 2019 The Pathfinder Project Developers. // @@ -8,9 +8,9 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use crate::basic::vector::Vector2F; use crate::orientation::Orientation; use crate::outline::Contour; +use pathfinder_geometry::vector::Vector2F; pub struct ContourDilator<'a> { contour: &'a mut Contour, diff --git a/geometry/src/basic/mod.rs b/content/src/lib.rs similarity index 50% rename from geometry/src/basic/mod.rs rename to content/src/lib.rs index d77c1fc0..00abb4d1 100644 --- a/geometry/src/basic/mod.rs +++ b/content/src/lib.rs @@ -1,4 +1,4 @@ -// pathfinder/geometry/src/basic/mod.rs +// pathfinder/content/src/lib.rs // // Copyright © 2019 The Pathfinder Project Developers. // @@ -8,10 +8,22 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//! Basic geometry and linear algebra primitives, optimized with SIMD. +//! Pathfinder's representation of a vector scene. +//! +//! This module also contains various path utilities. -pub mod line_segment; -pub mod rect; -pub mod transform2d; -pub mod transform3d; -pub mod vector; +#[macro_use] +extern crate bitflags; +#[macro_use] +extern crate log; + +pub mod clip; +pub mod color; +pub mod dash; +pub mod orientation; +pub mod outline; +pub mod segment; +pub mod stroke; +pub mod transform; + +mod dilation; diff --git a/geometry/src/orientation.rs b/content/src/orientation.rs similarity index 100% rename from geometry/src/orientation.rs rename to content/src/orientation.rs diff --git a/geometry/src/outline.rs b/content/src/outline.rs similarity index 98% rename from geometry/src/outline.rs rename to content/src/outline.rs index 5858941c..b09cc668 100644 --- a/geometry/src/outline.rs +++ b/content/src/outline.rs @@ -1,4 +1,4 @@ -// pathfinder/geometry/src/outline.rs +// pathfinder/content/src/outline.rs // // Copyright © 2019 The Pathfinder Project Developers. // @@ -10,16 +10,16 @@ //! A compressed in-memory representation of paths. -use crate::basic::line_segment::LineSegment2F; -use crate::basic::vector::Vector2F; -use crate::basic::rect::RectF; -use crate::basic::transform2d::Transform2DF; -use crate::basic::transform3d::Perspective; use crate::clip::{self, ContourPolygonClipper, ContourRectClipper}; use crate::dilation::ContourDilator; use crate::orientation::Orientation; use crate::segment::{Segment, SegmentFlags, SegmentKind}; -use crate::unit_vector::UnitVector; +use pathfinder_geometry::line_segment::LineSegment2F; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::transform3d::Perspective; +use pathfinder_geometry::unit_vector::UnitVector; +use pathfinder_geometry::vector::Vector2F; use std::f32::consts::PI; use std::fmt::{self, Debug, Formatter}; use std::mem; diff --git a/geometry/src/segment.rs b/content/src/segment.rs similarity index 98% rename from geometry/src/segment.rs rename to content/src/segment.rs index 2cd8adf4..4a9d6a76 100644 --- a/geometry/src/segment.rs +++ b/content/src/segment.rs @@ -1,4 +1,4 @@ -// pathfinder/geometry/src/segment.rs +// pathfinder/content/src/segment.rs // // Copyright © 2019 The Pathfinder Project Developers. // @@ -10,10 +10,10 @@ //! Line or curve segments, optimized with SIMD. -use crate::basic::line_segment::LineSegment2F; -use crate::basic::vector::Vector2F; -use crate::basic::transform2d::Transform2DF; -use crate::util::{self, EPSILON}; +use pathfinder_geometry::line_segment::LineSegment2F; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::util::{self, EPSILON}; +use pathfinder_geometry::vector::Vector2F; use pathfinder_simd::default::F32x4; use std::f32::consts::SQRT_2; diff --git a/geometry/src/stroke.rs b/content/src/stroke.rs similarity index 98% rename from geometry/src/stroke.rs rename to content/src/stroke.rs index 4e9a195a..48f68276 100644 --- a/geometry/src/stroke.rs +++ b/content/src/stroke.rs @@ -1,4 +1,4 @@ -// pathfinder/geometry/src/stroke.rs +// pathfinder/content/src/stroke.rs // // Copyright © 2019 The Pathfinder Project Developers. // @@ -10,12 +10,12 @@ //! Utilities for converting path strokes to fills. -use crate::basic::line_segment::LineSegment2F; -use crate::basic::vector::Vector2F; -use crate::basic::rect::RectF; -use crate::basic::transform2d::Transform2DF; use crate::outline::{ArcDirection, Contour, Outline, PushSegmentFlags}; use crate::segment::Segment; +use pathfinder_geometry::line_segment::LineSegment2F; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::vector::Vector2F; use std::f32; const TOLERANCE: f32 = 0.01; diff --git a/content/src/transform.rs b/content/src/transform.rs new file mode 100644 index 00000000..283b4386 --- /dev/null +++ b/content/src/transform.rs @@ -0,0 +1,124 @@ +// pathfinder/content/src/transform.rs +// +// Copyright © 2019 The Pathfinder Project Developers. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +//! Utilities for transforming paths. + +use crate::segment::Segment; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::transform3d::Perspective; + +/// Transforms a path with a SIMD 2D transform. +pub struct Transform2DFPathIter +where + I: Iterator, +{ + iter: I, + transform: Transform2DF, +} + +impl Iterator for Transform2DFPathIter +where + I: Iterator, +{ + type Item = Segment; + + #[inline] + fn next(&mut self) -> Option { + // TODO(pcwalton): Can we go faster by transforming an entire line segment with SIMD? + let mut segment = self.iter.next()?; + if !segment.is_none() { + segment + .baseline + .set_from(&self.transform.transform_point(segment.baseline.from())); + segment + .baseline + .set_to(&self.transform.transform_point(segment.baseline.to())); + if !segment.is_line() { + segment + .ctrl + .set_from(&self.transform.transform_point(segment.ctrl.from())); + if !segment.is_quadratic() { + segment + .ctrl + .set_to(&self.transform.transform_point(segment.ctrl.to())); + } + } + } + Some(segment) + } +} + +impl Transform2DFPathIter +where + I: Iterator, +{ + #[inline] + pub fn new(iter: I, transform: &Transform2DF) -> Transform2DFPathIter { + Transform2DFPathIter { + iter, + transform: *transform, + } + } +} + +/// Transforms a path with a perspective projection. +pub struct PerspectivePathIter +where + I: Iterator, +{ + iter: I, + perspective: Perspective, +} + +impl Iterator for PerspectivePathIter +where + I: Iterator, +{ + type Item = Segment; + + #[inline] + fn next(&mut self) -> Option { + let mut segment = self.iter.next()?; + if !segment.is_none() { + segment.baseline.set_from( + &self + .perspective + .transform_point_2d(&segment.baseline.from()), + ); + segment + .baseline + .set_to(&self.perspective.transform_point_2d(&segment.baseline.to())); + if !segment.is_line() { + segment + .ctrl + .set_from(&self.perspective.transform_point_2d(&segment.ctrl.from())); + if !segment.is_quadratic() { + segment + .ctrl + .set_to(&self.perspective.transform_point_2d(&segment.ctrl.to())); + } + } + } + Some(segment) + } +} + +impl PerspectivePathIter +where + I: Iterator, +{ + #[inline] + pub fn new(iter: I, perspective: &Perspective) -> PerspectivePathIter { + PerspectivePathIter { + iter, + perspective: *perspective, + } + } +} diff --git a/demo/android/rust/src/lib.rs b/demo/android/rust/src/lib.rs index 6e322418..4fdf1fa7 100644 --- a/demo/android/rust/src/lib.rs +++ b/demo/android/rust/src/lib.rs @@ -16,8 +16,8 @@ use jni::{JNIEnv, JavaVM}; use pathfinder_demo::window::{Event, SVGPath, View, Window, WindowSize}; use pathfinder_demo::DemoApp; use pathfinder_demo::Options; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectI; use pathfinder_gl::GLVersion; use pathfinder_gpu::resources::ResourceLoader; use std::cell::RefCell; diff --git a/demo/common/Cargo.toml b/demo/common/Cargo.toml index 45ea0798..b6aa30e5 100644 --- a/demo/common/Cargo.toml +++ b/demo/common/Cargo.toml @@ -22,6 +22,9 @@ features = ["png_codec"] version = "0.4" features = ["release_max_level_warn"] +[dependencies.pathfinder_content] +path = "../../content" + [dependencies.pathfinder_geometry] path = "../../geometry" diff --git a/demo/common/src/camera.rs b/demo/common/src/camera.rs index f8dc6445..eea0649e 100644 --- a/demo/common/src/camera.rs +++ b/demo/common/src/camera.rs @@ -14,10 +14,10 @@ // proper. use crate::window::{OcularTransform, View}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I, Vector4F}; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::basic::transform2d::Transform2DF; -use pathfinder_geometry::basic::transform3d::{Perspective, Transform3DF}; +use pathfinder_geometry::vector::{Vector2F, Vector2I, Vector4F}; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::transform3d::{Perspective, Transform3DF}; use std::f32::consts::FRAC_PI_4; const NEAR_CLIP_PLANE: f32 = 0.01; diff --git a/demo/common/src/lib.rs b/demo/common/src/lib.rs index 76c5a964..e97231b2 100644 --- a/demo/common/src/lib.rs +++ b/demo/common/src/lib.rs @@ -22,11 +22,11 @@ use crate::device::{GroundProgram, GroundVertexArray}; use crate::ui::{DemoUIModel, DemoUIPresenter, ScreenshotInfo, ScreenshotType, UIAction}; use crate::window::{Event, Keycode, SVGPath, Window, WindowSize}; use clap::{App, Arg}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::basic::transform2d::Transform2DF; -use pathfinder_geometry::basic::transform3d::Transform3DF; -use pathfinder_geometry::color::ColorU; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::transform3d::Transform3DF; +use pathfinder_content::color::ColorU; use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::Device; use pathfinder_renderer::concurrent::scene_proxy::{RenderCommandStream, SceneProxy}; diff --git a/demo/common/src/renderer.rs b/demo/common/src/renderer.rs index fb42869d..c4bc0cc3 100644 --- a/demo/common/src/renderer.rs +++ b/demo/common/src/renderer.rs @@ -14,12 +14,12 @@ use crate::camera::{Camera, Mode}; use crate::window::{View, Window}; use crate::{BackgroundColor, DemoApp, UIVisibility}; use image::ColorType; -use pathfinder_geometry::color::{ColorF, ColorU}; +use pathfinder_content::color::{ColorF, ColorU}; use pathfinder_gpu::{ClearOps, DepthFunc, DepthState, Device, Primitive, RenderOptions}; use pathfinder_gpu::{RenderState, RenderTarget, TextureData, TextureFormat, UniformData}; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::transform3d::Transform3DF; -use pathfinder_geometry::basic::vector::Vector2I; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::transform3d::Transform3DF; +use pathfinder_geometry::vector::Vector2I; use pathfinder_renderer::gpu::options::{DestFramebuffer, RendererOptions}; use pathfinder_renderer::gpu::renderer::RenderMode; use pathfinder_renderer::gpu_data::RenderCommand; diff --git a/demo/common/src/ui.rs b/demo/common/src/ui.rs index 270893c5..2c7c8c5e 100644 --- a/demo/common/src/ui.rs +++ b/demo/common/src/ui.rs @@ -11,8 +11,8 @@ use crate::camera::Mode; use crate::window::Window; use crate::{BackgroundColor, Options}; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectI; use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::Device; use pathfinder_renderer::gpu::debug::DebugUIPresenter; diff --git a/demo/common/src/window.rs b/demo/common/src/window.rs index d8fc0019..edacf767 100644 --- a/demo/common/src/window.rs +++ b/demo/common/src/window.rs @@ -10,9 +10,9 @@ //! A minimal cross-platform windowing layer. -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::transform3d::{Perspective, Transform3DF}; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::transform3d::{Perspective, Transform3DF}; use pathfinder_gpu::resources::ResourceLoader; use rayon::ThreadPoolBuilder; use std::path::PathBuf; diff --git a/demo/magicleap/Cargo.toml b/demo/magicleap/Cargo.toml index efba31a8..6e7e8ff0 100644 --- a/demo/magicleap/Cargo.toml +++ b/demo/magicleap/Cargo.toml @@ -20,6 +20,9 @@ crate-type = ["cdylib"] [features] mocked = ["glutin"] +[dependencies.pathfinder_content] +path = "../../content" + [dependencies.pathfinder_demo] path = "../common" diff --git a/demo/magicleap/src/display.rs b/demo/magicleap/src/display.rs index 6a0f94ba..2176e43d 100644 --- a/demo/magicleap/src/display.rs +++ b/demo/magicleap/src/display.rs @@ -10,10 +10,10 @@ use std::error::Error; use std::io; -use pathfinder_geometry::basic::point::Point2DI32; -use pathfinder_geometry::basic::rect::RectI32; -use pathfinder_geometry::basic::transform3d::Perspective; -use pathfinder_geometry::basic::transform3d::Transform3DF32; +use pathfinder_geometry::point::Point2DI32; +use pathfinder_geometry::rect::RectI32; +use pathfinder_geometry::transform3d::Perspective; +use pathfinder_geometry::transform3d::Transform3DF32; use pathfinder_gl::GLVersion; use pathfinder_gpu::resources::ResourceLoader; diff --git a/demo/magicleap/src/glwindow.rs b/demo/magicleap/src/glwindow.rs index bd90d08e..50005428 100644 --- a/demo/magicleap/src/glwindow.rs +++ b/demo/magicleap/src/glwindow.rs @@ -25,10 +25,10 @@ use crate::display::Display; use crate::display::DisplayCamera; use crate::display::DisplayError; -use pathfinder_geometry::basic::point::Point2DI32; -use pathfinder_geometry::basic::rect::RectI32; -use pathfinder_geometry::basic::transform3d::Transform3DF32; -use pathfinder_geometry::basic::transform3d::Perspective; +use pathfinder_geometry::point::Point2DI32; +use pathfinder_geometry::rect::RectI32; +use pathfinder_geometry::transform3d::Transform3DF32; +use pathfinder_geometry::transform3d::Perspective; use pathfinder_gl::GLVersion; use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_gpu::resources::ResourceLoader; diff --git a/demo/magicleap/src/immersive.rs b/demo/magicleap/src/immersive.rs index 775a0b37..b01741ce 100644 --- a/demo/magicleap/src/immersive.rs +++ b/demo/magicleap/src/immersive.rs @@ -15,13 +15,13 @@ use pathfinder_demo::Camera; use pathfinder_demo::CameraTransform3D; use pathfinder_gl::GLDevice; use pathfinder_renderer::gpu::renderer::Renderer; -use pathfinder_geometry::basic::point::Point2DI32; -use pathfinder_geometry::basic::point::Point2DF32; -use pathfinder_geometry::basic::point::Point3DF32; -use pathfinder_geometry::basic::rect::RectI32; -use pathfinder_geometry::basic::transform2d::Transform2DF32; -use pathfinder_geometry::basic::transform3d::Transform3DF32; -use pathfinder_geometry::basic::transform3d::Perspective; +use pathfinder_geometry::point::Point2DI32; +use pathfinder_geometry::point::Point2DF32; +use pathfinder_geometry::point::Point3DF32; +use pathfinder_geometry::rect::RectI32; +use pathfinder_geometry::transform2d::Transform2DF32; +use pathfinder_geometry::transform3d::Transform3DF32; +use pathfinder_geometry::transform3d::Perspective; use pathfinder_gpu::Device; use pathfinder_simd::default::F32x4; use pathfinder_svg::BuiltSVG; diff --git a/demo/magicleap/src/lib.rs b/demo/magicleap/src/lib.rs index 632023c0..5530e4ab 100644 --- a/demo/magicleap/src/lib.rs +++ b/demo/magicleap/src/lib.rs @@ -29,11 +29,11 @@ use pathfinder_demo::BackgroundColor; use pathfinder_demo::Mode; use pathfinder_demo::window::Event; use pathfinder_demo::window::SVGPath; -use pathfinder_geometry::basic::vector::Vector2F; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::transform2d::Transform2DF; -use pathfinder_geometry::color::ColorF; +use pathfinder_geometry::vector::Vector2F; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_content::color::ColorF; use pathfinder_gl::GLDevice; use pathfinder_gl::GLVersion; use pathfinder_gpu::ClearParams; diff --git a/demo/magicleap/src/magicleap.rs b/demo/magicleap/src/magicleap.rs index 1790c4a3..29c74df9 100644 --- a/demo/magicleap/src/magicleap.rs +++ b/demo/magicleap/src/magicleap.rs @@ -48,12 +48,12 @@ use pathfinder_demo::window::OcularTransform; use pathfinder_demo::window::View; use pathfinder_demo::window::Window; use pathfinder_demo::window::WindowSize; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::vector::Vector2F; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::transform3d::Perspective; -use pathfinder_geometry::basic::transform3d::Transform3DF; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::vector::Vector2F; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::transform3d::Perspective; +use pathfinder_geometry::transform3d::Transform3DF; use pathfinder_geometry::util; use pathfinder_gl::GLVersion; use pathfinder_gpu::resources::FilesystemResourceLoader; diff --git a/demo/native/src/main.rs b/demo/native/src/main.rs index 78636e4c..29069ae1 100644 --- a/demo/native/src/main.rs +++ b/demo/native/src/main.rs @@ -13,8 +13,8 @@ use nfd::Response; use pathfinder_demo::window::{Event, Keycode, SVGPath, View, Window, WindowSize}; use pathfinder_demo::{DemoApp, Options}; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectI; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use sdl2::event::{Event as SDLEvent, WindowEvent}; use sdl2::keyboard::Keycode as SDLKeycode; diff --git a/examples/canvas_glutin_minimal/Cargo.toml b/examples/canvas_glutin_minimal/Cargo.toml index 37b25e22..2b1a6bb3 100644 --- a/examples/canvas_glutin_minimal/Cargo.toml +++ b/examples/canvas_glutin_minimal/Cargo.toml @@ -11,6 +11,9 @@ glutin = "0.21" [dependencies.pathfinder_canvas] path = "../../canvas" +[dependencies.pathfinder_content] +path = "../../content" + [dependencies.pathfinder_geometry] path = "../../geometry" diff --git a/examples/canvas_glutin_minimal/src/main.rs b/examples/canvas_glutin_minimal/src/main.rs index 9b8662c0..597f7e27 100644 --- a/examples/canvas_glutin_minimal/src/main.rs +++ b/examples/canvas_glutin_minimal/src/main.rs @@ -14,9 +14,9 @@ use glutin::dpi::PhysicalSize; use glutin::{ContextBuilder, ControlFlow, Event, EventsLoop, GlProfile, GlRequest, KeyboardInput}; use glutin::{VirtualKeyCode, WindowBuilder, WindowEvent}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::color::ColorF; +use pathfinder_content::color::ColorF; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_geometry::rect::RectF; use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_renderer::concurrent::rayon::RayonExecutor; diff --git a/examples/canvas_metal_minimal/Cargo.toml b/examples/canvas_metal_minimal/Cargo.toml index 41673409..74cfde80 100644 --- a/examples/canvas_metal_minimal/Cargo.toml +++ b/examples/canvas_metal_minimal/Cargo.toml @@ -15,6 +15,9 @@ sdl2-sys = "0.32" [dependencies.pathfinder_canvas] path = "../../canvas" +[dependencies.pathfinder_content] +path = "../../content" + [dependencies.pathfinder_geometry] path = "../../geometry" diff --git a/examples/canvas_metal_minimal/src/main.rs b/examples/canvas_metal_minimal/src/main.rs index 8d8417ad..2b0b6b06 100644 --- a/examples/canvas_metal_minimal/src/main.rs +++ b/examples/canvas_metal_minimal/src/main.rs @@ -11,9 +11,9 @@ use foreign_types::ForeignTypeRef; use metal::{CAMetalLayer, CoreAnimationLayerRef}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::color::ColorF; +use pathfinder_content::color::ColorF; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_geometry::rect::RectF; use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_metal::MetalDevice; use pathfinder_renderer::concurrent::rayon::RayonExecutor; diff --git a/examples/canvas_minimal/Cargo.toml b/examples/canvas_minimal/Cargo.toml index ccd2fe25..0becc032 100644 --- a/examples/canvas_minimal/Cargo.toml +++ b/examples/canvas_minimal/Cargo.toml @@ -12,6 +12,9 @@ sdl2-sys = "0.32" [dependencies.pathfinder_canvas] path = "../../canvas" +[dependencies.pathfinder_content] +path = "../../content" + [dependencies.pathfinder_geometry] path = "../../geometry" diff --git a/examples/canvas_minimal/src/main.rs b/examples/canvas_minimal/src/main.rs index 230640c3..dce34e5d 100644 --- a/examples/canvas_minimal/src/main.rs +++ b/examples/canvas_minimal/src/main.rs @@ -9,9 +9,9 @@ // except according to those terms. use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::color::ColorF; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_geometry::rect::RectF; +use pathfinder_content::color::ColorF; use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_renderer::concurrent::rayon::RayonExecutor; diff --git a/examples/canvas_moire/Cargo.toml b/examples/canvas_moire/Cargo.toml index 0bab187d..cb8f98ea 100644 --- a/examples/canvas_moire/Cargo.toml +++ b/examples/canvas_moire/Cargo.toml @@ -12,6 +12,9 @@ sdl2-sys = "0.32" [dependencies.pathfinder_canvas] path = "../../canvas" +[dependencies.pathfinder_content] +path = "../../content" + [dependencies.pathfinder_geometry] path = "../../geometry" diff --git a/examples/canvas_moire/src/main.rs b/examples/canvas_moire/src/main.rs index 1f579b1e..36312a09 100644 --- a/examples/canvas_moire/src/main.rs +++ b/examples/canvas_moire/src/main.rs @@ -9,8 +9,8 @@ // except according to those terms. use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, Path2D}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::color::{ColorF, ColorU}; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_content::color::{ColorF, ColorU}; use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_renderer::concurrent::rayon::RayonExecutor; diff --git a/examples/canvas_text/Cargo.toml b/examples/canvas_text/Cargo.toml index 720a0863..6250e71a 100644 --- a/examples/canvas_text/Cargo.toml +++ b/examples/canvas_text/Cargo.toml @@ -13,6 +13,9 @@ sdl2-sys = "0.32" [dependencies.pathfinder_canvas] path = "../../canvas" +[dependencies.pathfinder_content] +path = "../../content" + [dependencies.pathfinder_geometry] path = "../../geometry" diff --git a/examples/canvas_text/src/main.rs b/examples/canvas_text/src/main.rs index 7d4b8385..2942e3ae 100644 --- a/examples/canvas_text/src/main.rs +++ b/examples/canvas_text/src/main.rs @@ -10,8 +10,8 @@ use font_kit::handle::Handle; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, TextAlign}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::color::ColorF; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_content::color::ColorF; use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use pathfinder_renderer::concurrent::rayon::RayonExecutor; diff --git a/examples/swf_basic/src/main.rs b/examples/swf_basic/src/main.rs index a06d7f79..cd790074 100644 --- a/examples/swf_basic/src/main.rs +++ b/examples/swf_basic/src/main.rs @@ -8,8 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::RectF; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_geometry::rect::RectF; use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use pathfinder_renderer::concurrent::rayon::RayonExecutor; @@ -24,7 +24,7 @@ use pathfinder_renderer::scene::Scene; use pathfinder_swf::{draw_paths_into_scene, process_swf_tags}; use std::env; use std::fs::read; -use pathfinder_geometry::basic::transform2d::Transform2DF; +use pathfinder_geometry::transform2d::Transform2DF; fn main() { let resource_loader = FilesystemResourceLoader::locate(); diff --git a/geometry/Cargo.toml b/geometry/Cargo.toml index 580a84da..8136c255 100644 --- a/geometry/Cargo.toml +++ b/geometry/Cargo.toml @@ -5,11 +5,6 @@ edition = "2018" authors = ["Patrick Walton "] [dependencies] -arrayvec = "0.4" -bitflags = "1.0" -serde = "1.0" -serde_derive = "1.0" -smallvec = "0.6" [dependencies.log] version = "0.4" diff --git a/geometry/src/lib.rs b/geometry/src/lib.rs index 8445b7ae..3ff52601 100644 --- a/geometry/src/lib.rs +++ b/geometry/src/lib.rs @@ -8,24 +8,12 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -//! Utilities for Bézier curves. -//! -//! These may be merged into upstream Lyon eventually. +//! Basic geometry and linear algebra primitives, optimized with SIMD. -#[macro_use] -extern crate bitflags; -#[macro_use] -extern crate log; - -pub mod basic; -pub mod clip; -pub mod color; -pub mod dash; -pub mod orientation; -pub mod outline; -pub mod segment; -pub mod stroke; +pub mod line_segment; +pub mod rect; +pub mod transform2d; +pub mod transform3d; +pub mod unit_vector; pub mod util; - -mod dilation; -mod unit_vector; +pub mod vector; diff --git a/geometry/src/basic/line_segment.rs b/geometry/src/line_segment.rs similarity index 98% rename from geometry/src/basic/line_segment.rs rename to geometry/src/line_segment.rs index 3d68f655..7842c893 100644 --- a/geometry/src/basic/line_segment.rs +++ b/geometry/src/line_segment.rs @@ -10,8 +10,8 @@ //! Line segment types, optimized with SIMD. -use crate::basic::vector::Vector2F; -use crate::basic::transform2d::Matrix2x2F; +use crate::vector::Vector2F; +use crate::transform2d::Matrix2x2F; use crate::util; use pathfinder_simd::default::F32x4; use std::ops::{Add, Sub}; diff --git a/geometry/src/basic/rect.rs b/geometry/src/rect.rs similarity index 99% rename from geometry/src/basic/rect.rs rename to geometry/src/rect.rs index 95e60ee3..ec7e103a 100644 --- a/geometry/src/basic/rect.rs +++ b/geometry/src/rect.rs @@ -10,7 +10,7 @@ //! 2D axis-aligned rectangles, optimized with SIMD. -use crate::basic::vector::{Vector2F, Vector2I}; +use crate::vector::{Vector2F, Vector2I}; use pathfinder_simd::default::{F32x4, I32x4}; #[derive(Clone, Copy, Debug, PartialEq, Default)] diff --git a/geometry/src/basic/transform2d.rs b/geometry/src/transform2d.rs similarity index 82% rename from geometry/src/basic/transform2d.rs rename to geometry/src/transform2d.rs index db0df148..b48c8882 100644 --- a/geometry/src/basic/transform2d.rs +++ b/geometry/src/transform2d.rs @@ -10,11 +10,10 @@ //! 2D affine transforms. -use crate::basic::line_segment::LineSegment2F; -use crate::basic::vector::Vector2F; -use crate::basic::rect::RectF; -use crate::basic::transform3d::Transform3DF; -use crate::segment::Segment; +use crate::line_segment::LineSegment2F; +use crate::vector::Vector2F; +use crate::rect::RectF; +use crate::transform3d::Transform3DF; use crate::unit_vector::UnitVector; use pathfinder_simd::default::F32x4; use std::ops::Sub; @@ -295,57 +294,3 @@ impl Transform2DF { Vector2F(self.matrix.0.zwxy()).length() } } - -/// Transforms a path with a SIMD 2D transform. -pub struct Transform2DFPathIter -where - I: Iterator, -{ - iter: I, - transform: Transform2DF, -} - -impl Iterator for Transform2DFPathIter -where - I: Iterator, -{ - type Item = Segment; - - #[inline] - fn next(&mut self) -> Option { - // TODO(pcwalton): Can we go faster by transforming an entire line segment with SIMD? - let mut segment = self.iter.next()?; - if !segment.is_none() { - segment - .baseline - .set_from(&self.transform.transform_point(segment.baseline.from())); - segment - .baseline - .set_to(&self.transform.transform_point(segment.baseline.to())); - if !segment.is_line() { - segment - .ctrl - .set_from(&self.transform.transform_point(segment.ctrl.from())); - if !segment.is_quadratic() { - segment - .ctrl - .set_to(&self.transform.transform_point(segment.ctrl.to())); - } - } - } - Some(segment) - } -} - -impl Transform2DFPathIter -where - I: Iterator, -{ - #[inline] - pub fn new(iter: I, transform: &Transform2DF) -> Transform2DFPathIter { - Transform2DFPathIter { - iter, - transform: *transform, - } - } -} diff --git a/geometry/src/basic/transform3d.rs b/geometry/src/transform3d.rs similarity index 89% rename from geometry/src/basic/transform3d.rs rename to geometry/src/transform3d.rs index bdd71c0c..7425b34c 100644 --- a/geometry/src/basic/transform3d.rs +++ b/geometry/src/transform3d.rs @@ -10,10 +10,9 @@ //! 3D transforms that can be applied to paths. -use crate::basic::vector::{Vector2F, Vector2I, Vector4F}; -use crate::basic::rect::RectF; -use crate::basic::transform2d::Matrix2x2F; -use crate::segment::Segment; +use crate::vector::{Vector2F, Vector2I, Vector4F}; +use crate::rect::RectF; +use crate::transform2d::Matrix2x2F; use pathfinder_simd::default::F32x4; use std::ops::{Add, Neg}; @@ -372,65 +371,10 @@ impl Perspective { } } -/// Transforms a path with a perspective projection. -pub struct PerspectivePathIter -where - I: Iterator, -{ - iter: I, - perspective: Perspective, -} - -impl Iterator for PerspectivePathIter -where - I: Iterator, -{ - type Item = Segment; - - #[inline] - fn next(&mut self) -> Option { - let mut segment = self.iter.next()?; - if !segment.is_none() { - segment.baseline.set_from( - &self - .perspective - .transform_point_2d(&segment.baseline.from()), - ); - segment - .baseline - .set_to(&self.perspective.transform_point_2d(&segment.baseline.to())); - if !segment.is_line() { - segment - .ctrl - .set_from(&self.perspective.transform_point_2d(&segment.ctrl.from())); - if !segment.is_quadratic() { - segment - .ctrl - .set_to(&self.perspective.transform_point_2d(&segment.ctrl.to())); - } - } - } - Some(segment) - } -} - -impl PerspectivePathIter -where - I: Iterator, -{ - #[inline] - pub fn new(iter: I, perspective: &Perspective) -> PerspectivePathIter { - PerspectivePathIter { - iter, - perspective: *perspective, - } - } -} - #[cfg(test)] mod test { - use crate::basic::vector::Vector4F; - use crate::basic::transform3d::Transform3DF; + use crate::vector::Vector4F; + use crate::transform3d::Transform3DF; #[test] fn test_post_mul() { diff --git a/geometry/src/unit_vector.rs b/geometry/src/unit_vector.rs index 35533e7a..b46431b0 100644 --- a/geometry/src/unit_vector.rs +++ b/geometry/src/unit_vector.rs @@ -10,7 +10,7 @@ //! A utility module that allows unit vectors to be treated like angles. -use crate::basic::vector::Vector2F; +use crate::vector::Vector2F; use pathfinder_simd::default::F32x4; #[derive(Clone, Copy, Debug)] diff --git a/geometry/src/basic/vector.rs b/geometry/src/vector.rs similarity index 100% rename from geometry/src/basic/vector.rs rename to geometry/src/vector.rs diff --git a/gl/src/lib.rs b/gl/src/lib.rs index f53faeaf..1c832544 100644 --- a/gl/src/lib.rs +++ b/gl/src/lib.rs @@ -14,8 +14,8 @@ extern crate log; use gl::types::{GLboolean, GLchar, GLenum, GLfloat, GLint, GLsizei, GLsizeiptr, GLuint, GLvoid}; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::vector::Vector2I; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::vector::Vector2I; use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::{RenderTarget, BlendState, BufferData, BufferTarget, BufferUploadMode}; use pathfinder_gpu::{ClearOps, DepthFunc, Device, Primitive, RenderOptions, RenderState}; diff --git a/gpu/Cargo.toml b/gpu/Cargo.toml index c493efa2..cc9ca12f 100644 --- a/gpu/Cargo.toml +++ b/gpu/Cargo.toml @@ -11,6 +11,9 @@ version = "0.21" default-features = false features = ["png_codec"] +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/gpu/src/lib.rs b/gpu/src/lib.rs index 227b0993..70dcd132 100644 --- a/gpu/src/lib.rs +++ b/gpu/src/lib.rs @@ -12,10 +12,10 @@ use crate::resources::ResourceLoader; use image::ImageFormat; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::transform3d::Transform3DF; -use pathfinder_geometry::color::ColorF; +use pathfinder_content::color::ColorF; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::transform3d::Transform3DF; +use pathfinder_geometry::vector::Vector2I; use pathfinder_simd::default::F32x4; use std::time::Duration; diff --git a/metal/src/lib.rs b/metal/src/lib.rs index 63856a09..3c1c4f89 100644 --- a/metal/src/lib.rs +++ b/metal/src/lib.rs @@ -40,8 +40,8 @@ use metal::{SamplerDescriptor, SamplerState, StencilDescriptor, StructMemberRef, use metal::{StructTypeRef, TextureDescriptor, Texture, TextureRef, VertexAttribute}; use metal::{VertexAttributeRef, VertexDescriptor, VertexDescriptorRef}; use objc::runtime::{Class, Object}; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::vector::Vector2I; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::vector::Vector2I; use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, DepthFunc, Device}; use pathfinder_gpu::{Primitive, RenderState, RenderTarget, ShaderKind, StencilFunc, TextureData}; diff --git a/renderer/Cargo.toml b/renderer/Cargo.toml index 106c0bab..e8e789a0 100644 --- a/renderer/Cargo.toml +++ b/renderer/Cargo.toml @@ -18,6 +18,9 @@ smallvec = "0.6" version = "0.4" features = ["release_max_level_warn"] +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/renderer/src/builder.rs b/renderer/src/builder.rs index ff054432..b3d4ca1c 100644 --- a/renderer/src/builder.rs +++ b/renderer/src/builder.rs @@ -17,9 +17,9 @@ use crate::scene::Scene; use crate::tile_map::DenseTileMap; use crate::tiles::{self, TILE_HEIGHT, TILE_WIDTH, Tiler}; use crate::z_buffer::ZBuffer; -use pathfinder_geometry::basic::line_segment::{LineSegment2F, LineSegmentU4, LineSegmentU8}; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::{RectF, RectI}; +use pathfinder_geometry::line_segment::{LineSegment2F, LineSegmentU4, LineSegmentU8}; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_geometry::rect::{RectF, RectI}; use pathfinder_geometry::util; use pathfinder_simd::default::{F32x4, I32x4}; use std::sync::atomic::{AtomicUsize, Ordering}; diff --git a/renderer/src/concurrent/scene_proxy.rs b/renderer/src/concurrent/scene_proxy.rs index a85d3e89..22e29155 100644 --- a/renderer/src/concurrent/scene_proxy.rs +++ b/renderer/src/concurrent/scene_proxy.rs @@ -24,7 +24,7 @@ use crate::gpu::renderer::Renderer; use crate::gpu_data::RenderCommand; use crate::options::{BuildOptions, RenderCommandListener}; use crate::scene::Scene; -use pathfinder_geometry::basic::rect::RectF; +use pathfinder_geometry::rect::RectF; use pathfinder_gpu::Device; use std::sync::mpsc::{self, Receiver, Sender}; use std::thread; diff --git a/renderer/src/gpu/debug.rs b/renderer/src/gpu/debug.rs index 5e982d79..7d28b952 100644 --- a/renderer/src/gpu/debug.rs +++ b/renderer/src/gpu/debug.rs @@ -16,8 +16,8 @@ //! The debug font atlas was generated using: https://evanw.github.io/font-texture-generator/ use crate::gpu::renderer::{RenderStats, RenderTime}; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectI; use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::Device; use pathfinder_ui::{FONT_ASCENT, LINE_HEIGHT, PADDING, UIPresenter, WINDOW_COLOR}; diff --git a/renderer/src/gpu/options.rs b/renderer/src/gpu/options.rs index 04c9af59..8ffe9d88 100644 --- a/renderer/src/gpu/options.rs +++ b/renderer/src/gpu/options.rs @@ -8,9 +8,9 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::color::ColorF; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_content::color::ColorF; use pathfinder_gpu::Device; /// Options that influence rendering. diff --git a/renderer/src/gpu/renderer.rs b/renderer/src/gpu/renderer.rs index e616615e..87565d36 100644 --- a/renderer/src/gpu/renderer.rs +++ b/renderer/src/gpu/renderer.rs @@ -14,10 +14,10 @@ use crate::gpu_data::{AlphaTileBatchPrimitive, FillBatchPrimitive, PaintData}; use crate::gpu_data::{RenderCommand, SolidTileBatchPrimitive}; use crate::post::DefringingKernel; use crate::tiles::{TILE_HEIGHT, TILE_WIDTH}; -use pathfinder_geometry::basic::vector::{Vector2I, Vector4F}; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::basic::transform3d::Transform3DF; -use pathfinder_geometry::color::ColorF; +use pathfinder_geometry::vector::{Vector2I, Vector4F}; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::transform3d::Transform3DF; +use pathfinder_content::color::ColorF; use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, ClearOps}; use pathfinder_gpu::{DepthFunc, DepthState, Device, Primitive, RenderOptions, RenderState}; diff --git a/renderer/src/gpu_data.rs b/renderer/src/gpu_data.rs index 6c5045f7..6e65cb46 100644 --- a/renderer/src/gpu_data.rs +++ b/renderer/src/gpu_data.rs @@ -12,9 +12,9 @@ use crate::options::BoundingQuad; use crate::tile_map::DenseTileMap; -use pathfinder_geometry::basic::line_segment::{LineSegmentU4, LineSegmentU8}; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectF; +use pathfinder_geometry::line_segment::{LineSegmentU4, LineSegmentU8}; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectF; use std::fmt::{Debug, Formatter, Result as DebugResult}; use std::time::Duration; diff --git a/renderer/src/options.rs b/renderer/src/options.rs index 32357c08..0266ec78 100644 --- a/renderer/src/options.rs +++ b/renderer/src/options.rs @@ -11,11 +11,11 @@ //! Options that control how rendering is to be performed. use crate::gpu_data::RenderCommand; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::basic::transform2d::Transform2DF; -use pathfinder_geometry::basic::transform3d::Perspective; -use pathfinder_geometry::basic::vector::{Vector2F, Vector4F}; -use pathfinder_geometry::clip::PolygonClipper3D; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::transform3d::Perspective; +use pathfinder_geometry::vector::{Vector2F, Vector4F}; +use pathfinder_content::clip::PolygonClipper3D; pub trait RenderCommandListener: Send + Sync { fn send(&self, command: RenderCommand); diff --git a/renderer/src/paint.rs b/renderer/src/paint.rs index d0140004..2426092c 100644 --- a/renderer/src/paint.rs +++ b/renderer/src/paint.rs @@ -10,8 +10,8 @@ use crate::gpu_data::PaintData; use crate::scene::Scene; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::color::ColorU; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_content::color::ColorU; const PAINT_TEXTURE_WIDTH: i32 = 256; const PAINT_TEXTURE_HEIGHT: i32 = 256; diff --git a/renderer/src/scene.rs b/renderer/src/scene.rs index db5319c6..328c3f82 100644 --- a/renderer/src/scene.rs +++ b/renderer/src/scene.rs @@ -16,11 +16,11 @@ use crate::options::{BuildOptions, PreparedBuildOptions}; use crate::options::{PreparedRenderTransform, RenderCommandListener}; use crate::paint::{Paint, PaintId}; use hashbrown::HashMap; -use pathfinder_geometry::basic::vector::Vector2F; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::basic::transform2d::Transform2DF; -use pathfinder_geometry::color::ColorU; -use pathfinder_geometry::outline::Outline; +use pathfinder_geometry::vector::Vector2F; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_content::color::ColorU; +use pathfinder_content::outline::Outline; use std::io::{self, Write}; #[derive(Clone)] diff --git a/renderer/src/tile_map.rs b/renderer/src/tile_map.rs index a280df3b..f0d5ac40 100644 --- a/renderer/src/tile_map.rs +++ b/renderer/src/tile_map.rs @@ -8,8 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectI; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectI; #[derive(Debug)] pub struct DenseTileMap { diff --git a/renderer/src/tiles.rs b/renderer/src/tiles.rs index 3f5eb89a..0c98f0a5 100644 --- a/renderer/src/tiles.rs +++ b/renderer/src/tiles.rs @@ -12,11 +12,11 @@ use crate::builder::SceneBuilder; use crate::gpu_data::{AlphaTileBatchPrimitive, BuiltObject, TileObjectPrimitive}; use crate::paint::{self, PaintId}; use crate::sorted_vector::SortedVector; -use pathfinder_geometry::basic::line_segment::LineSegment2F; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::{RectF, RectI}; -use pathfinder_geometry::outline::{Contour, Outline, PointIndex}; -use pathfinder_geometry::segment::Segment; +use pathfinder_geometry::line_segment::LineSegment2F; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; +use pathfinder_geometry::rect::{RectF, RectI}; +use pathfinder_content::outline::{Contour, Outline, PointIndex}; +use pathfinder_content::segment::Segment; use std::cmp::Ordering; use std::mem; diff --git a/renderer/src/z_buffer.rs b/renderer/src/z_buffer.rs index 858a9e90..ae4bdf9e 100644 --- a/renderer/src/z_buffer.rs +++ b/renderer/src/z_buffer.rs @@ -15,8 +15,8 @@ use crate::paint; use crate::scene::PathObject; use crate::tile_map::DenseTileMap; use crate::tiles; -use pathfinder_geometry::basic::vector::Vector2I; -use pathfinder_geometry::basic::rect::RectF; +use pathfinder_geometry::vector::Vector2I; +use pathfinder_geometry::rect::RectF; use std::ops::Range; use std::sync::atomic::{AtomicUsize, Ordering as AtomicOrdering}; diff --git a/svg/Cargo.toml b/svg/Cargo.toml index d735fdaf..13c630dc 100644 --- a/svg/Cargo.toml +++ b/svg/Cargo.toml @@ -8,6 +8,9 @@ authors = ["Patrick Walton "] bitflags = "1.0" usvg = "0.7" +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/svg/src/lib.rs b/svg/src/lib.rs index e9f14486..2d9b6454 100644 --- a/svg/src/lib.rs +++ b/svg/src/lib.rs @@ -13,14 +13,15 @@ #[macro_use] extern crate bitflags; -use pathfinder_geometry::basic::line_segment::LineSegment2F; -use pathfinder_geometry::basic::vector::Vector2F; -use pathfinder_geometry::basic::rect::RectF; -use pathfinder_geometry::basic::transform2d::{Transform2DF, Transform2DFPathIter}; -use pathfinder_geometry::color::ColorU; -use pathfinder_geometry::outline::Outline; -use pathfinder_geometry::segment::{Segment, SegmentFlags}; -use pathfinder_geometry::stroke::{LineCap, LineJoin, OutlineStrokeToFill, StrokeStyle}; +use pathfinder_content::color::ColorU; +use pathfinder_content::outline::Outline; +use pathfinder_content::segment::{Segment, SegmentFlags}; +use pathfinder_content::stroke::{LineCap, LineJoin, OutlineStrokeToFill, StrokeStyle}; +use pathfinder_content::transform::Transform2DFPathIter; +use pathfinder_geometry::line_segment::LineSegment2F; +use pathfinder_geometry::rect::RectF; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::vector::Vector2F; use pathfinder_renderer::paint::Paint; use pathfinder_renderer::scene::{PathObject, Scene}; use std::fmt::{Display, Formatter, Result as FormatResult}; diff --git a/swf/Cargo.toml b/swf/Cargo.toml index b063d864..389a0fd7 100644 --- a/swf/Cargo.toml +++ b/swf/Cargo.toml @@ -8,6 +8,9 @@ edition = "2018" swf-parser = "0.7.0" swf-tree = "0.7.0" +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/swf/src/lib.rs b/swf/src/lib.rs index 94bf0e35..c8a683e8 100644 --- a/swf/src/lib.rs +++ b/swf/src/lib.rs @@ -9,10 +9,10 @@ // except according to those terms. use std::ops::Add; -use pathfinder_geometry::color::{ColorU, ColorF}; -use pathfinder_geometry::outline::{Outline, Contour}; -use pathfinder_geometry::basic::vector::Vector2F; -use pathfinder_geometry::stroke::{OutlineStrokeToFill, StrokeStyle}; +use pathfinder_content::color::{ColorU, ColorF}; +use pathfinder_content::outline::{Outline, Contour}; +use pathfinder_geometry::vector::Vector2F; +use pathfinder_content::stroke::{OutlineStrokeToFill, StrokeStyle}; use pathfinder_renderer::scene::{PathObject, Scene}; use swf_tree; diff --git a/swf/src/shapes.rs b/swf/src/shapes.rs index b2c94936..ff0a7b02 100644 --- a/swf/src/shapes.rs +++ b/swf/src/shapes.rs @@ -9,7 +9,7 @@ // except according to those terms. use pathfinder_renderer::paint::Paint; -use pathfinder_geometry::stroke::{LineJoin, LineCap}; +use pathfinder_content::stroke::{LineJoin, LineCap}; use crate::{Twips, Point2}; use std::mem; use std::cmp::Ordering; @@ -25,7 +25,7 @@ use swf_tree::{ shape_records, Vector2D }; -use pathfinder_geometry::color::ColorU; +use pathfinder_content::color::ColorU; use swf_tree::tags::DefineShape; #[derive(Clone, Copy, Debug)] diff --git a/text/Cargo.toml b/text/Cargo.toml index 76985371..493f98e3 100644 --- a/text/Cargo.toml +++ b/text/Cargo.toml @@ -9,6 +9,9 @@ euclid = "0.19" font-kit = "0.2" lyon_path = "0.12" +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/text/src/lib.rs b/text/src/lib.rs index cbf56765..49dcd1ce 100644 --- a/text/src/lib.rs +++ b/text/src/lib.rs @@ -13,10 +13,10 @@ use font_kit::error::GlyphLoadingError; use font_kit::hinting::HintingOptions; use font_kit::loader::Loader; use lyon_path::builder::{FlatPathBuilder, PathBuilder}; -use pathfinder_geometry::basic::vector::Vector2F; -use pathfinder_geometry::basic::transform2d::Transform2DF; -use pathfinder_geometry::outline::{Contour, Outline}; -use pathfinder_geometry::stroke::{OutlineStrokeToFill, StrokeStyle}; +use pathfinder_content::outline::{Contour, Outline}; +use pathfinder_content::stroke::{OutlineStrokeToFill, StrokeStyle}; +use pathfinder_geometry::transform2d::Transform2DF; +use pathfinder_geometry::vector::Vector2F; use pathfinder_renderer::paint::PaintId; use pathfinder_renderer::scene::{PathObject, Scene}; use skribo::{FontCollection, Layout, TextStyle}; diff --git a/ui/Cargo.toml b/ui/Cargo.toml index 259f8c26..2cad25a6 100644 --- a/ui/Cargo.toml +++ b/ui/Cargo.toml @@ -13,6 +13,9 @@ serde_json = "1.0" version = "0.1" features = ["serde"] +[dependencies.pathfinder_content] +path = "../content" + [dependencies.pathfinder_geometry] path = "../geometry" diff --git a/ui/src/lib.rs b/ui/src/lib.rs index 18817224..7ae36ab3 100644 --- a/ui/src/lib.rs +++ b/ui/src/lib.rs @@ -17,9 +17,9 @@ extern crate serde_derive; use hashbrown::HashMap; -use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; -use pathfinder_geometry::basic::rect::RectI; -use pathfinder_geometry::color::ColorU; +use pathfinder_content::color::ColorU; +use pathfinder_geometry::rect::RectI; +use pathfinder_geometry::vector::{Vector2F, Vector2I}; use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, Device, Primitive}; use pathfinder_gpu::{RenderOptions, RenderState, RenderTarget, UniformData, VertexAttrClass};