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.
This commit is contained in:
Patrick Walton 2019-06-21 10:06:19 -07:00
parent b16300bf02
commit 431dcf3d2e
76 changed files with 443 additions and 345 deletions

32
Cargo.lock generated
View File

@ -159,6 +159,7 @@ dependencies = [
"gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "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)", "glutin 0.21.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_canvas 0.1.0", "pathfinder_canvas 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 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)", "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)", "objc 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_canvas 0.1.0", "pathfinder_canvas 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 0.1.0", "pathfinder_gpu 0.1.0",
@ -189,6 +191,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"gl 0.6.5 (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_canvas 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 0.1.0", "pathfinder_gpu 0.1.0",
@ -203,6 +206,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"gl 0.6.5 (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_canvas 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 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)", "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)", "gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_canvas 0.1.0", "pathfinder_canvas 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 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)", "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)", "libc 0.2.54 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_canvas 0.1.0", "pathfinder_canvas 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 0.1.0", "pathfinder_gpu 0.1.0",
@ -1389,12 +1395,25 @@ name = "pathfinder_canvas"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"font-kit 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "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_geometry 0.3.0",
"pathfinder_renderer 0.1.0", "pathfinder_renderer 0.1.0",
"pathfinder_text 0.1.0", "pathfinder_text 0.1.0",
"skribo 0.0.1 (git+https://github.com/linebender/skribo.git?rev=a2d683856ba1f2d0095b12dd7823d1602a87614e)", "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]] [[package]]
name = "pathfinder_demo" name = "pathfinder_demo"
version = "0.1.0" version = "0.1.0"
@ -1404,6 +1423,7 @@ dependencies = [
"image 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)", "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)", "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)", "metal 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 0.1.0", "pathfinder_gpu 0.1.0",
@ -1420,13 +1440,8 @@ dependencies = [
name = "pathfinder_geometry" name = "pathfinder_geometry"
version = "0.3.0" version = "0.3.0"
dependencies = [ 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)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_simd 0.3.0", "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]] [[package]]
@ -1447,6 +1462,7 @@ name = "pathfinder_gpu"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"image 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)", "image 0.21.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_simd 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)", "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)", "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)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_demo 0.1.0", "pathfinder_demo 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
@ -1507,6 +1524,7 @@ dependencies = [
"fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "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)", "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)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gpu 0.1.0", "pathfinder_gpu 0.1.0",
"pathfinder_simd 0.3.0", "pathfinder_simd 0.3.0",
@ -1530,6 +1548,7 @@ name = "pathfinder_svg"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_renderer 0.1.0", "pathfinder_renderer 0.1.0",
"usvg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "usvg 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1539,6 +1558,7 @@ dependencies = [
name = "pathfinder_swf" name = "pathfinder_swf"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gl 0.1.0", "pathfinder_gl 0.1.0",
"pathfinder_gpu 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)", "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)", "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)", "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_geometry 0.3.0",
"pathfinder_renderer 0.1.0", "pathfinder_renderer 0.1.0",
"skribo 0.0.1 (git+https://github.com/linebender/skribo.git?rev=a2d683856ba1f2d0095b12dd7823d1602a87614e)", "skribo 0.0.1 (git+https://github.com/linebender/skribo.git?rev=a2d683856ba1f2d0095b12dd7823d1602a87614e)",
@ -1564,6 +1585,7 @@ name = "pathfinder_ui"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.3.0", "pathfinder_geometry 0.3.0",
"pathfinder_gpu 0.1.0", "pathfinder_gpu 0.1.0",
"pathfinder_simd 0.3.0", "pathfinder_simd 0.3.0",

View File

@ -2,6 +2,7 @@
members = [ members = [
"c", "c",
"canvas", "canvas",
"content",
"demo/android/rust", "demo/android/rust",
"demo/common", "demo/common",
"demo/magicleap", "demo/magicleap",

View File

@ -14,6 +14,9 @@ libc = "0.2"
[dependencies.pathfinder_canvas] [dependencies.pathfinder_canvas]
path = "../canvas" path = "../canvas"
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -13,11 +13,11 @@
use gl; use gl;
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, LineJoin}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, LineJoin};
use pathfinder_canvas::{Path2D, TextMetrics}; use pathfinder_canvas::{Path2D, TextMetrics};
use pathfinder_geometry::basic::rect::{RectF, RectI}; use pathfinder_content::color::{ColorF, ColorU};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_content::outline::ArcDirection;
use pathfinder_geometry::color::{ColorF, ColorU}; use pathfinder_content::stroke::LineCap;
use pathfinder_geometry::outline::ArcDirection; use pathfinder_geometry::rect::{RectF, RectI};
use pathfinder_geometry::stroke::LineCap; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gl::{GLDevice, GLVersion};
use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader};
use pathfinder_renderer::concurrent::rayon::RayonExecutor; 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_BEVEL: u8 = 1;
pub const PF_LINE_JOIN_ROUND: u8 = 2; pub const PF_LINE_JOIN_ROUND: u8 = 2;
// `geometry` // `content`
pub const PF_ARC_DIRECTION_CW: u8 = 0; pub const PF_ARC_DIRECTION_CW: u8 = 0;
pub const PF_ARC_DIRECTION_CCW: u8 = 1; pub const PF_ARC_DIRECTION_CCW: u8 = 1;
@ -68,6 +68,22 @@ pub struct PFTextMetrics {
pub width: f32, 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` // `geometry`
#[repr(C)] #[repr(C)]
pub struct PFVector2F { pub struct PFVector2F {
@ -89,20 +105,6 @@ pub struct PFRectI {
pub origin: PFVector2I, pub origin: PFVector2I,
pub lower_right: 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` // `gl`
pub type PFGLDeviceRef = *mut GLDevice; pub type PFGLDeviceRef = *mut GLDevice;
@ -472,7 +474,7 @@ impl TextMetricsExt for TextMetrics {
} }
} }
// Helpers for `geometry` // Helpers for `content`
impl PFColorF { impl PFColorF {
#[inline] #[inline]
@ -488,6 +490,8 @@ impl PFColorU {
} }
} }
// Helpers for `geometry`
impl PFRectF { impl PFRectF {
#[inline] #[inline]
pub fn to_rust(&self) -> RectF { pub fn to_rust(&self) -> RectF {

View File

@ -10,6 +10,9 @@ crate-type = ["rlib", "staticlib"]
[dependencies] [dependencies]
font-kit = "0.2" font-kit = "0.2"
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -17,15 +17,15 @@ use font_kit::loaders::default::Font;
use font_kit::properties::Properties; use font_kit::properties::Properties;
use font_kit::source::{Source, SystemSource}; use font_kit::source::{Source, SystemSource};
use font_kit::sources::mem::MemSource; use font_kit::sources::mem::MemSource;
use pathfinder_geometry::basic::line_segment::LineSegment2F; use pathfinder_content::color::ColorU;
use pathfinder_geometry::basic::vector::Vector2F; use pathfinder_content::dash::OutlineDash;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_content::outline::{ArcDirection, Contour, Outline};
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_content::stroke::{LineCap, LineJoin as StrokeLineJoin};
use pathfinder_geometry::color::ColorU; use pathfinder_content::stroke::{OutlineStrokeToFill, StrokeStyle};
use pathfinder_geometry::dash::OutlineDash; use pathfinder_geometry::line_segment::LineSegment2F;
use pathfinder_geometry::outline::{ArcDirection, Contour, Outline}; use pathfinder_geometry::vector::Vector2F;
use pathfinder_geometry::stroke::{LineCap, LineJoin as StrokeLineJoin}; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::stroke::{OutlineStrokeToFill, StrokeStyle}; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_renderer::paint::{Paint, PaintId}; use pathfinder_renderer::paint::{Paint, PaintId};
use pathfinder_renderer::scene::{PathObject, Scene}; use pathfinder_renderer::scene::{PathObject, Scene};
use pathfinder_text::{SceneExt, TextRenderMode}; use pathfinder_text::{SceneExt, TextRenderMode};
@ -526,7 +526,7 @@ pub enum TextAlign {
Center, 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 // 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 // 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 // specific to miter joins. In this API, however, for compatibility we go with the HTML canvas

17
content/Cargo.toml Normal file
View File

@ -0,0 +1,17 @@
[package]
name = "pathfinder_content"
version = "0.1.0"
authors = ["Patrick Walton <pcwalton@mimiga.net>"]
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"

View File

@ -1,4 +1,4 @@
// pathfinder/geometry/src/clip.rs // pathfinder/content/src/clip.rs
// //
// Copyright © 2019 The Pathfinder Project Developers. // Copyright © 2019 The Pathfinder Project Developers.
// //
@ -8,13 +8,13 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // 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::outline::{Contour, PointFlags, PushSegmentFlags};
use crate::segment::{CubicSegment, Segment}; use crate::segment::{CubicSegment, Segment};
use crate::util::lerp;
use arrayvec::ArrayVec; 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 smallvec::SmallVec;
use std::fmt::Debug; use std::fmt::Debug;
use std::mem; use std::mem;

View File

@ -1,4 +1,4 @@
// pathfinder/geometry/src/dilation.rs // pathfinder/content/src/dilation.rs
// //
// Copyright © 2019 The Pathfinder Project Developers. // Copyright © 2019 The Pathfinder Project Developers.
// //
@ -8,9 +8,9 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
use crate::basic::vector::Vector2F;
use crate::orientation::Orientation; use crate::orientation::Orientation;
use crate::outline::Contour; use crate::outline::Contour;
use pathfinder_geometry::vector::Vector2F;
pub struct ContourDilator<'a> { pub struct ContourDilator<'a> {
contour: &'a mut Contour, contour: &'a mut Contour,

View File

@ -1,4 +1,4 @@
// pathfinder/geometry/src/basic/mod.rs // pathfinder/content/src/lib.rs
// //
// Copyright © 2019 The Pathfinder Project Developers. // Copyright © 2019 The Pathfinder Project Developers.
// //
@ -8,10 +8,22 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // 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; #[macro_use]
pub mod rect; extern crate bitflags;
pub mod transform2d; #[macro_use]
pub mod transform3d; extern crate log;
pub mod vector;
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;

View File

@ -1,4 +1,4 @@
// pathfinder/geometry/src/outline.rs // pathfinder/content/src/outline.rs
// //
// Copyright © 2019 The Pathfinder Project Developers. // Copyright © 2019 The Pathfinder Project Developers.
// //
@ -10,16 +10,16 @@
//! A compressed in-memory representation of paths. //! 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::clip::{self, ContourPolygonClipper, ContourRectClipper};
use crate::dilation::ContourDilator; use crate::dilation::ContourDilator;
use crate::orientation::Orientation; use crate::orientation::Orientation;
use crate::segment::{Segment, SegmentFlags, SegmentKind}; 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::f32::consts::PI;
use std::fmt::{self, Debug, Formatter}; use std::fmt::{self, Debug, Formatter};
use std::mem; use std::mem;

View File

@ -1,4 +1,4 @@
// pathfinder/geometry/src/segment.rs // pathfinder/content/src/segment.rs
// //
// Copyright © 2019 The Pathfinder Project Developers. // Copyright © 2019 The Pathfinder Project Developers.
// //
@ -10,10 +10,10 @@
//! Line or curve segments, optimized with SIMD. //! Line or curve segments, optimized with SIMD.
use crate::basic::line_segment::LineSegment2F; use pathfinder_geometry::line_segment::LineSegment2F;
use crate::basic::vector::Vector2F; use pathfinder_geometry::transform2d::Transform2DF;
use crate::basic::transform2d::Transform2DF; use pathfinder_geometry::util::{self, EPSILON};
use crate::util::{self, EPSILON}; use pathfinder_geometry::vector::Vector2F;
use pathfinder_simd::default::F32x4; use pathfinder_simd::default::F32x4;
use std::f32::consts::SQRT_2; use std::f32::consts::SQRT_2;

View File

@ -1,4 +1,4 @@
// pathfinder/geometry/src/stroke.rs // pathfinder/content/src/stroke.rs
// //
// Copyright © 2019 The Pathfinder Project Developers. // Copyright © 2019 The Pathfinder Project Developers.
// //
@ -10,12 +10,12 @@
//! Utilities for converting path strokes to fills. //! 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::outline::{ArcDirection, Contour, Outline, PushSegmentFlags};
use crate::segment::Segment; 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; use std::f32;
const TOLERANCE: f32 = 0.01; const TOLERANCE: f32 = 0.01;

124
content/src/transform.rs Normal file
View File

@ -0,0 +1,124 @@
// pathfinder/content/src/transform.rs
//
// Copyright © 2019 The Pathfinder Project Developers.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, 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<I>
where
I: Iterator<Item = Segment>,
{
iter: I,
transform: Transform2DF,
}
impl<I> Iterator for Transform2DFPathIter<I>
where
I: Iterator<Item = Segment>,
{
type Item = Segment;
#[inline]
fn next(&mut self) -> Option<Segment> {
// 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<I> Transform2DFPathIter<I>
where
I: Iterator<Item = Segment>,
{
#[inline]
pub fn new(iter: I, transform: &Transform2DF) -> Transform2DFPathIter<I> {
Transform2DFPathIter {
iter,
transform: *transform,
}
}
}
/// Transforms a path with a perspective projection.
pub struct PerspectivePathIter<I>
where
I: Iterator<Item = Segment>,
{
iter: I,
perspective: Perspective,
}
impl<I> Iterator for PerspectivePathIter<I>
where
I: Iterator<Item = Segment>,
{
type Item = Segment;
#[inline]
fn next(&mut self) -> Option<Segment> {
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<I> PerspectivePathIter<I>
where
I: Iterator<Item = Segment>,
{
#[inline]
pub fn new(iter: I, perspective: &Perspective) -> PerspectivePathIter<I> {
PerspectivePathIter {
iter,
perspective: *perspective,
}
}
}

View File

@ -16,8 +16,8 @@ use jni::{JNIEnv, JavaVM};
use pathfinder_demo::window::{Event, SVGPath, View, Window, WindowSize}; use pathfinder_demo::window::{Event, SVGPath, View, Window, WindowSize};
use pathfinder_demo::DemoApp; use pathfinder_demo::DemoApp;
use pathfinder_demo::Options; use pathfinder_demo::Options;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_gl::GLVersion; use pathfinder_gl::GLVersion;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use std::cell::RefCell; use std::cell::RefCell;

View File

@ -22,6 +22,9 @@ features = ["png_codec"]
version = "0.4" version = "0.4"
features = ["release_max_level_warn"] features = ["release_max_level_warn"]
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../../geometry" path = "../../geometry"

View File

@ -14,10 +14,10 @@
// proper. // proper.
use crate::window::{OcularTransform, View}; use crate::window::{OcularTransform, View};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I, Vector4F}; use pathfinder_geometry::vector::{Vector2F, Vector2I, Vector4F};
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_geometry::basic::transform3d::{Perspective, Transform3DF}; use pathfinder_geometry::transform3d::{Perspective, Transform3DF};
use std::f32::consts::FRAC_PI_4; use std::f32::consts::FRAC_PI_4;
const NEAR_CLIP_PLANE: f32 = 0.01; const NEAR_CLIP_PLANE: f32 = 0.01;

View File

@ -22,11 +22,11 @@ use crate::device::{GroundProgram, GroundVertexArray};
use crate::ui::{DemoUIModel, DemoUIPresenter, ScreenshotInfo, ScreenshotType, UIAction}; use crate::ui::{DemoUIModel, DemoUIPresenter, ScreenshotInfo, ScreenshotType, UIAction};
use crate::window::{Event, Keycode, SVGPath, Window, WindowSize}; use crate::window::{Event, Keycode, SVGPath, Window, WindowSize};
use clap::{App, Arg}; use clap::{App, Arg};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_geometry::basic::transform3d::Transform3DF; use pathfinder_geometry::transform3d::Transform3DF;
use pathfinder_geometry::color::ColorU; use pathfinder_content::color::ColorU;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::Device; use pathfinder_gpu::Device;
use pathfinder_renderer::concurrent::scene_proxy::{RenderCommandStream, SceneProxy}; use pathfinder_renderer::concurrent::scene_proxy::{RenderCommandStream, SceneProxy};

View File

@ -14,12 +14,12 @@ use crate::camera::{Camera, Mode};
use crate::window::{View, Window}; use crate::window::{View, Window};
use crate::{BackgroundColor, DemoApp, UIVisibility}; use crate::{BackgroundColor, DemoApp, UIVisibility};
use image::ColorType; 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::{ClearOps, DepthFunc, DepthState, Device, Primitive, RenderOptions};
use pathfinder_gpu::{RenderState, RenderTarget, TextureData, TextureFormat, UniformData}; use pathfinder_gpu::{RenderState, RenderTarget, TextureData, TextureFormat, UniformData};
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::transform3d::Transform3DF; use pathfinder_geometry::transform3d::Transform3DF;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_renderer::gpu::options::{DestFramebuffer, RendererOptions}; use pathfinder_renderer::gpu::options::{DestFramebuffer, RendererOptions};
use pathfinder_renderer::gpu::renderer::RenderMode; use pathfinder_renderer::gpu::renderer::RenderMode;
use pathfinder_renderer::gpu_data::RenderCommand; use pathfinder_renderer::gpu_data::RenderCommand;

View File

@ -11,8 +11,8 @@
use crate::camera::Mode; use crate::camera::Mode;
use crate::window::Window; use crate::window::Window;
use crate::{BackgroundColor, Options}; use crate::{BackgroundColor, Options};
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::Device; use pathfinder_gpu::Device;
use pathfinder_renderer::gpu::debug::DebugUIPresenter; use pathfinder_renderer::gpu::debug::DebugUIPresenter;

View File

@ -10,9 +10,9 @@
//! A minimal cross-platform windowing layer. //! A minimal cross-platform windowing layer.
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::transform3d::{Perspective, Transform3DF}; use pathfinder_geometry::transform3d::{Perspective, Transform3DF};
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use rayon::ThreadPoolBuilder; use rayon::ThreadPoolBuilder;
use std::path::PathBuf; use std::path::PathBuf;

View File

@ -20,6 +20,9 @@ crate-type = ["cdylib"]
[features] [features]
mocked = ["glutin"] mocked = ["glutin"]
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_demo] [dependencies.pathfinder_demo]
path = "../common" path = "../common"

View File

@ -10,10 +10,10 @@
use std::error::Error; use std::error::Error;
use std::io; use std::io;
use pathfinder_geometry::basic::point::Point2DI32; use pathfinder_geometry::point::Point2DI32;
use pathfinder_geometry::basic::rect::RectI32; use pathfinder_geometry::rect::RectI32;
use pathfinder_geometry::basic::transform3d::Perspective; use pathfinder_geometry::transform3d::Perspective;
use pathfinder_geometry::basic::transform3d::Transform3DF32; use pathfinder_geometry::transform3d::Transform3DF32;
use pathfinder_gl::GLVersion; use pathfinder_gl::GLVersion;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;

View File

@ -25,10 +25,10 @@ use crate::display::Display;
use crate::display::DisplayCamera; use crate::display::DisplayCamera;
use crate::display::DisplayError; use crate::display::DisplayError;
use pathfinder_geometry::basic::point::Point2DI32; use pathfinder_geometry::point::Point2DI32;
use pathfinder_geometry::basic::rect::RectI32; use pathfinder_geometry::rect::RectI32;
use pathfinder_geometry::basic::transform3d::Transform3DF32; use pathfinder_geometry::transform3d::Transform3DF32;
use pathfinder_geometry::basic::transform3d::Perspective; use pathfinder_geometry::transform3d::Perspective;
use pathfinder_gl::GLVersion; use pathfinder_gl::GLVersion;
use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_gpu::resources::FilesystemResourceLoader;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;

View File

@ -15,13 +15,13 @@ use pathfinder_demo::Camera;
use pathfinder_demo::CameraTransform3D; use pathfinder_demo::CameraTransform3D;
use pathfinder_gl::GLDevice; use pathfinder_gl::GLDevice;
use pathfinder_renderer::gpu::renderer::Renderer; use pathfinder_renderer::gpu::renderer::Renderer;
use pathfinder_geometry::basic::point::Point2DI32; use pathfinder_geometry::point::Point2DI32;
use pathfinder_geometry::basic::point::Point2DF32; use pathfinder_geometry::point::Point2DF32;
use pathfinder_geometry::basic::point::Point3DF32; use pathfinder_geometry::point::Point3DF32;
use pathfinder_geometry::basic::rect::RectI32; use pathfinder_geometry::rect::RectI32;
use pathfinder_geometry::basic::transform2d::Transform2DF32; use pathfinder_geometry::transform2d::Transform2DF32;
use pathfinder_geometry::basic::transform3d::Transform3DF32; use pathfinder_geometry::transform3d::Transform3DF32;
use pathfinder_geometry::basic::transform3d::Perspective; use pathfinder_geometry::transform3d::Perspective;
use pathfinder_gpu::Device; use pathfinder_gpu::Device;
use pathfinder_simd::default::F32x4; use pathfinder_simd::default::F32x4;
use pathfinder_svg::BuiltSVG; use pathfinder_svg::BuiltSVG;

View File

@ -29,11 +29,11 @@ use pathfinder_demo::BackgroundColor;
use pathfinder_demo::Mode; use pathfinder_demo::Mode;
use pathfinder_demo::window::Event; use pathfinder_demo::window::Event;
use pathfinder_demo::window::SVGPath; use pathfinder_demo::window::SVGPath;
use pathfinder_geometry::basic::vector::Vector2F; use pathfinder_geometry::vector::Vector2F;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_geometry::color::ColorF; use pathfinder_content::color::ColorF;
use pathfinder_gl::GLDevice; use pathfinder_gl::GLDevice;
use pathfinder_gl::GLVersion; use pathfinder_gl::GLVersion;
use pathfinder_gpu::ClearParams; use pathfinder_gpu::ClearParams;

View File

@ -48,12 +48,12 @@ use pathfinder_demo::window::OcularTransform;
use pathfinder_demo::window::View; use pathfinder_demo::window::View;
use pathfinder_demo::window::Window; use pathfinder_demo::window::Window;
use pathfinder_demo::window::WindowSize; use pathfinder_demo::window::WindowSize;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::vector::Vector2F; use pathfinder_geometry::vector::Vector2F;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::transform3d::Perspective; use pathfinder_geometry::transform3d::Perspective;
use pathfinder_geometry::basic::transform3d::Transform3DF; use pathfinder_geometry::transform3d::Transform3DF;
use pathfinder_geometry::util; use pathfinder_geometry::util;
use pathfinder_gl::GLVersion; use pathfinder_gl::GLVersion;
use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_gpu::resources::FilesystemResourceLoader;

View File

@ -13,8 +13,8 @@
use nfd::Response; use nfd::Response;
use pathfinder_demo::window::{Event, Keycode, SVGPath, View, Window, WindowSize}; use pathfinder_demo::window::{Event, Keycode, SVGPath, View, Window, WindowSize};
use pathfinder_demo::{DemoApp, Options}; use pathfinder_demo::{DemoApp, Options};
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader};
use sdl2::event::{Event as SDLEvent, WindowEvent}; use sdl2::event::{Event as SDLEvent, WindowEvent};
use sdl2::keyboard::Keycode as SDLKeycode; use sdl2::keyboard::Keycode as SDLKeycode;

View File

@ -11,6 +11,9 @@ glutin = "0.21"
[dependencies.pathfinder_canvas] [dependencies.pathfinder_canvas]
path = "../../canvas" path = "../../canvas"
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../../geometry" path = "../../geometry"

View File

@ -14,9 +14,9 @@ use glutin::dpi::PhysicalSize;
use glutin::{ContextBuilder, ControlFlow, Event, EventsLoop, GlProfile, GlRequest, KeyboardInput}; use glutin::{ContextBuilder, ControlFlow, Event, EventsLoop, GlProfile, GlRequest, KeyboardInput};
use glutin::{VirtualKeyCode, WindowBuilder, WindowEvent}; use glutin::{VirtualKeyCode, WindowBuilder, WindowEvent};
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_content::color::ColorF;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::color::ColorF; use pathfinder_geometry::rect::RectF;
use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gl::{GLDevice, GLVersion};
use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_gpu::resources::FilesystemResourceLoader;
use pathfinder_renderer::concurrent::rayon::RayonExecutor; use pathfinder_renderer::concurrent::rayon::RayonExecutor;

View File

@ -15,6 +15,9 @@ sdl2-sys = "0.32"
[dependencies.pathfinder_canvas] [dependencies.pathfinder_canvas]
path = "../../canvas" path = "../../canvas"
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../../geometry" path = "../../geometry"

View File

@ -11,9 +11,9 @@
use foreign_types::ForeignTypeRef; use foreign_types::ForeignTypeRef;
use metal::{CAMetalLayer, CoreAnimationLayerRef}; use metal::{CAMetalLayer, CoreAnimationLayerRef};
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_content::color::ColorF;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::color::ColorF; use pathfinder_geometry::rect::RectF;
use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_gpu::resources::FilesystemResourceLoader;
use pathfinder_metal::MetalDevice; use pathfinder_metal::MetalDevice;
use pathfinder_renderer::concurrent::rayon::RayonExecutor; use pathfinder_renderer::concurrent::rayon::RayonExecutor;

View File

@ -12,6 +12,9 @@ sdl2-sys = "0.32"
[dependencies.pathfinder_canvas] [dependencies.pathfinder_canvas]
path = "../../canvas" path = "../../canvas"
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../../geometry" path = "../../geometry"

View File

@ -9,9 +9,9 @@
// except according to those terms. // except according to those terms.
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::color::ColorF; use pathfinder_content::color::ColorF;
use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gl::{GLDevice, GLVersion};
use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_gpu::resources::FilesystemResourceLoader;
use pathfinder_renderer::concurrent::rayon::RayonExecutor; use pathfinder_renderer::concurrent::rayon::RayonExecutor;

View File

@ -12,6 +12,9 @@ sdl2-sys = "0.32"
[dependencies.pathfinder_canvas] [dependencies.pathfinder_canvas]
path = "../../canvas" path = "../../canvas"
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../../geometry" path = "../../geometry"

View File

@ -9,8 +9,8 @@
// except according to those terms. // except according to those terms.
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, Path2D}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, Path2D};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::color::{ColorF, ColorU}; use pathfinder_content::color::{ColorF, ColorU};
use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gl::{GLDevice, GLVersion};
use pathfinder_gpu::resources::FilesystemResourceLoader; use pathfinder_gpu::resources::FilesystemResourceLoader;
use pathfinder_renderer::concurrent::rayon::RayonExecutor; use pathfinder_renderer::concurrent::rayon::RayonExecutor;

View File

@ -13,6 +13,9 @@ sdl2-sys = "0.32"
[dependencies.pathfinder_canvas] [dependencies.pathfinder_canvas]
path = "../../canvas" path = "../../canvas"
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../../geometry" path = "../../geometry"

View File

@ -10,8 +10,8 @@
use font_kit::handle::Handle; use font_kit::handle::Handle;
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, TextAlign}; use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, TextAlign};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::color::ColorF; use pathfinder_content::color::ColorF;
use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gl::{GLDevice, GLVersion};
use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader};
use pathfinder_renderer::concurrent::rayon::RayonExecutor; use pathfinder_renderer::concurrent::rayon::RayonExecutor;

View File

@ -8,8 +8,8 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_gl::{GLDevice, GLVersion}; use pathfinder_gl::{GLDevice, GLVersion};
use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader}; use pathfinder_gpu::resources::{FilesystemResourceLoader, ResourceLoader};
use pathfinder_renderer::concurrent::rayon::RayonExecutor; 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 pathfinder_swf::{draw_paths_into_scene, process_swf_tags};
use std::env; use std::env;
use std::fs::read; use std::fs::read;
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_geometry::transform2d::Transform2DF;
fn main() { fn main() {
let resource_loader = FilesystemResourceLoader::locate(); let resource_loader = FilesystemResourceLoader::locate();

View File

@ -5,11 +5,6 @@ edition = "2018"
authors = ["Patrick Walton <pcwalton@mimiga.net>"] authors = ["Patrick Walton <pcwalton@mimiga.net>"]
[dependencies] [dependencies]
arrayvec = "0.4"
bitflags = "1.0"
serde = "1.0"
serde_derive = "1.0"
smallvec = "0.6"
[dependencies.log] [dependencies.log]
version = "0.4" version = "0.4"

View File

@ -8,24 +8,12 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
//! Utilities for Bézier curves. //! Basic geometry and linear algebra primitives, optimized with SIMD.
//!
//! These may be merged into upstream Lyon eventually.
#[macro_use] pub mod line_segment;
extern crate bitflags; pub mod rect;
#[macro_use] pub mod transform2d;
extern crate log; pub mod transform3d;
pub mod unit_vector;
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 util; pub mod util;
pub mod vector;
mod dilation;
mod unit_vector;

View File

@ -10,8 +10,8 @@
//! Line segment types, optimized with SIMD. //! Line segment types, optimized with SIMD.
use crate::basic::vector::Vector2F; use crate::vector::Vector2F;
use crate::basic::transform2d::Matrix2x2F; use crate::transform2d::Matrix2x2F;
use crate::util; use crate::util;
use pathfinder_simd::default::F32x4; use pathfinder_simd::default::F32x4;
use std::ops::{Add, Sub}; use std::ops::{Add, Sub};

View File

@ -10,7 +10,7 @@
//! 2D axis-aligned rectangles, optimized with SIMD. //! 2D axis-aligned rectangles, optimized with SIMD.
use crate::basic::vector::{Vector2F, Vector2I}; use crate::vector::{Vector2F, Vector2I};
use pathfinder_simd::default::{F32x4, I32x4}; use pathfinder_simd::default::{F32x4, I32x4};
#[derive(Clone, Copy, Debug, PartialEq, Default)] #[derive(Clone, Copy, Debug, PartialEq, Default)]

View File

@ -10,11 +10,10 @@
//! 2D affine transforms. //! 2D affine transforms.
use crate::basic::line_segment::LineSegment2F; use crate::line_segment::LineSegment2F;
use crate::basic::vector::Vector2F; use crate::vector::Vector2F;
use crate::basic::rect::RectF; use crate::rect::RectF;
use crate::basic::transform3d::Transform3DF; use crate::transform3d::Transform3DF;
use crate::segment::Segment;
use crate::unit_vector::UnitVector; use crate::unit_vector::UnitVector;
use pathfinder_simd::default::F32x4; use pathfinder_simd::default::F32x4;
use std::ops::Sub; use std::ops::Sub;
@ -295,57 +294,3 @@ impl Transform2DF {
Vector2F(self.matrix.0.zwxy()).length() Vector2F(self.matrix.0.zwxy()).length()
} }
} }
/// Transforms a path with a SIMD 2D transform.
pub struct Transform2DFPathIter<I>
where
I: Iterator<Item = Segment>,
{
iter: I,
transform: Transform2DF,
}
impl<I> Iterator for Transform2DFPathIter<I>
where
I: Iterator<Item = Segment>,
{
type Item = Segment;
#[inline]
fn next(&mut self) -> Option<Segment> {
// 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<I> Transform2DFPathIter<I>
where
I: Iterator<Item = Segment>,
{
#[inline]
pub fn new(iter: I, transform: &Transform2DF) -> Transform2DFPathIter<I> {
Transform2DFPathIter {
iter,
transform: *transform,
}
}
}

View File

@ -10,10 +10,9 @@
//! 3D transforms that can be applied to paths. //! 3D transforms that can be applied to paths.
use crate::basic::vector::{Vector2F, Vector2I, Vector4F}; use crate::vector::{Vector2F, Vector2I, Vector4F};
use crate::basic::rect::RectF; use crate::rect::RectF;
use crate::basic::transform2d::Matrix2x2F; use crate::transform2d::Matrix2x2F;
use crate::segment::Segment;
use pathfinder_simd::default::F32x4; use pathfinder_simd::default::F32x4;
use std::ops::{Add, Neg}; use std::ops::{Add, Neg};
@ -372,65 +371,10 @@ impl Perspective {
} }
} }
/// Transforms a path with a perspective projection.
pub struct PerspectivePathIter<I>
where
I: Iterator<Item = Segment>,
{
iter: I,
perspective: Perspective,
}
impl<I> Iterator for PerspectivePathIter<I>
where
I: Iterator<Item = Segment>,
{
type Item = Segment;
#[inline]
fn next(&mut self) -> Option<Segment> {
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<I> PerspectivePathIter<I>
where
I: Iterator<Item = Segment>,
{
#[inline]
pub fn new(iter: I, perspective: &Perspective) -> PerspectivePathIter<I> {
PerspectivePathIter {
iter,
perspective: *perspective,
}
}
}
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::basic::vector::Vector4F; use crate::vector::Vector4F;
use crate::basic::transform3d::Transform3DF; use crate::transform3d::Transform3DF;
#[test] #[test]
fn test_post_mul() { fn test_post_mul() {

View File

@ -10,7 +10,7 @@
//! A utility module that allows unit vectors to be treated like angles. //! 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; use pathfinder_simd::default::F32x4;
#[derive(Clone, Copy, Debug)] #[derive(Clone, Copy, Debug)]

View File

@ -14,8 +14,8 @@
extern crate log; extern crate log;
use gl::types::{GLboolean, GLchar, GLenum, GLfloat, GLint, GLsizei, GLsizeiptr, GLuint, GLvoid}; use gl::types::{GLboolean, GLchar, GLenum, GLfloat, GLint, GLsizei, GLsizeiptr, GLuint, GLvoid};
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::{RenderTarget, BlendState, BufferData, BufferTarget, BufferUploadMode}; use pathfinder_gpu::{RenderTarget, BlendState, BufferData, BufferTarget, BufferUploadMode};
use pathfinder_gpu::{ClearOps, DepthFunc, Device, Primitive, RenderOptions, RenderState}; use pathfinder_gpu::{ClearOps, DepthFunc, Device, Primitive, RenderOptions, RenderState};

View File

@ -11,6 +11,9 @@ version = "0.21"
default-features = false default-features = false
features = ["png_codec"] features = ["png_codec"]
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -12,10 +12,10 @@
use crate::resources::ResourceLoader; use crate::resources::ResourceLoader;
use image::ImageFormat; use image::ImageFormat;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_content::color::ColorF;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::transform3d::Transform3DF; use pathfinder_geometry::transform3d::Transform3DF;
use pathfinder_geometry::color::ColorF; use pathfinder_geometry::vector::Vector2I;
use pathfinder_simd::default::F32x4; use pathfinder_simd::default::F32x4;
use std::time::Duration; use std::time::Duration;

View File

@ -40,8 +40,8 @@ use metal::{SamplerDescriptor, SamplerState, StencilDescriptor, StructMemberRef,
use metal::{StructTypeRef, TextureDescriptor, Texture, TextureRef, VertexAttribute}; use metal::{StructTypeRef, TextureDescriptor, Texture, TextureRef, VertexAttribute};
use metal::{VertexAttributeRef, VertexDescriptor, VertexDescriptorRef}; use metal::{VertexAttributeRef, VertexDescriptor, VertexDescriptorRef};
use objc::runtime::{Class, Object}; use objc::runtime::{Class, Object};
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, DepthFunc, Device}; use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, DepthFunc, Device};
use pathfinder_gpu::{Primitive, RenderState, RenderTarget, ShaderKind, StencilFunc, TextureData}; use pathfinder_gpu::{Primitive, RenderState, RenderTarget, ShaderKind, StencilFunc, TextureData};

View File

@ -18,6 +18,9 @@ smallvec = "0.6"
version = "0.4" version = "0.4"
features = ["release_max_level_warn"] features = ["release_max_level_warn"]
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -17,9 +17,9 @@ use crate::scene::Scene;
use crate::tile_map::DenseTileMap; use crate::tile_map::DenseTileMap;
use crate::tiles::{self, TILE_HEIGHT, TILE_WIDTH, Tiler}; use crate::tiles::{self, TILE_HEIGHT, TILE_WIDTH, Tiler};
use crate::z_buffer::ZBuffer; use crate::z_buffer::ZBuffer;
use pathfinder_geometry::basic::line_segment::{LineSegment2F, LineSegmentU4, LineSegmentU8}; use pathfinder_geometry::line_segment::{LineSegment2F, LineSegmentU4, LineSegmentU8};
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::basic::rect::{RectF, RectI}; use pathfinder_geometry::rect::{RectF, RectI};
use pathfinder_geometry::util; use pathfinder_geometry::util;
use pathfinder_simd::default::{F32x4, I32x4}; use pathfinder_simd::default::{F32x4, I32x4};
use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::atomic::{AtomicUsize, Ordering};

View File

@ -24,7 +24,7 @@ use crate::gpu::renderer::Renderer;
use crate::gpu_data::RenderCommand; use crate::gpu_data::RenderCommand;
use crate::options::{BuildOptions, RenderCommandListener}; use crate::options::{BuildOptions, RenderCommandListener};
use crate::scene::Scene; use crate::scene::Scene;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_gpu::Device; use pathfinder_gpu::Device;
use std::sync::mpsc::{self, Receiver, Sender}; use std::sync::mpsc::{self, Receiver, Sender};
use std::thread; use std::thread;

View File

@ -16,8 +16,8 @@
//! The debug font atlas was generated using: https://evanw.github.io/font-texture-generator/ //! The debug font atlas was generated using: https://evanw.github.io/font-texture-generator/
use crate::gpu::renderer::{RenderStats, RenderTime}; use crate::gpu::renderer::{RenderStats, RenderTime};
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::Device; use pathfinder_gpu::Device;
use pathfinder_ui::{FONT_ASCENT, LINE_HEIGHT, PADDING, UIPresenter, WINDOW_COLOR}; use pathfinder_ui::{FONT_ASCENT, LINE_HEIGHT, PADDING, UIPresenter, WINDOW_COLOR};

View File

@ -8,9 +8,9 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::color::ColorF; use pathfinder_content::color::ColorF;
use pathfinder_gpu::Device; use pathfinder_gpu::Device;
/// Options that influence rendering. /// Options that influence rendering.

View File

@ -14,10 +14,10 @@ use crate::gpu_data::{AlphaTileBatchPrimitive, FillBatchPrimitive, PaintData};
use crate::gpu_data::{RenderCommand, SolidTileBatchPrimitive}; use crate::gpu_data::{RenderCommand, SolidTileBatchPrimitive};
use crate::post::DefringingKernel; use crate::post::DefringingKernel;
use crate::tiles::{TILE_HEIGHT, TILE_WIDTH}; use crate::tiles::{TILE_HEIGHT, TILE_WIDTH};
use pathfinder_geometry::basic::vector::{Vector2I, Vector4F}; use pathfinder_geometry::vector::{Vector2I, Vector4F};
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::basic::transform3d::Transform3DF; use pathfinder_geometry::transform3d::Transform3DF;
use pathfinder_geometry::color::ColorF; use pathfinder_content::color::ColorF;
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, ClearOps}; use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, ClearOps};
use pathfinder_gpu::{DepthFunc, DepthState, Device, Primitive, RenderOptions, RenderState}; use pathfinder_gpu::{DepthFunc, DepthState, Device, Primitive, RenderOptions, RenderState};

View File

@ -12,9 +12,9 @@
use crate::options::BoundingQuad; use crate::options::BoundingQuad;
use crate::tile_map::DenseTileMap; use crate::tile_map::DenseTileMap;
use pathfinder_geometry::basic::line_segment::{LineSegmentU4, LineSegmentU8}; use pathfinder_geometry::line_segment::{LineSegmentU4, LineSegmentU8};
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use std::fmt::{Debug, Formatter, Result as DebugResult}; use std::fmt::{Debug, Formatter, Result as DebugResult};
use std::time::Duration; use std::time::Duration;

View File

@ -11,11 +11,11 @@
//! Options that control how rendering is to be performed. //! Options that control how rendering is to be performed.
use crate::gpu_data::RenderCommand; use crate::gpu_data::RenderCommand;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_geometry::basic::transform3d::Perspective; use pathfinder_geometry::transform3d::Perspective;
use pathfinder_geometry::basic::vector::{Vector2F, Vector4F}; use pathfinder_geometry::vector::{Vector2F, Vector4F};
use pathfinder_geometry::clip::PolygonClipper3D; use pathfinder_content::clip::PolygonClipper3D;
pub trait RenderCommandListener: Send + Sync { pub trait RenderCommandListener: Send + Sync {
fn send(&self, command: RenderCommand); fn send(&self, command: RenderCommand);

View File

@ -10,8 +10,8 @@
use crate::gpu_data::PaintData; use crate::gpu_data::PaintData;
use crate::scene::Scene; use crate::scene::Scene;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::color::ColorU; use pathfinder_content::color::ColorU;
const PAINT_TEXTURE_WIDTH: i32 = 256; const PAINT_TEXTURE_WIDTH: i32 = 256;
const PAINT_TEXTURE_HEIGHT: i32 = 256; const PAINT_TEXTURE_HEIGHT: i32 = 256;

View File

@ -16,11 +16,11 @@ use crate::options::{BuildOptions, PreparedBuildOptions};
use crate::options::{PreparedRenderTransform, RenderCommandListener}; use crate::options::{PreparedRenderTransform, RenderCommandListener};
use crate::paint::{Paint, PaintId}; use crate::paint::{Paint, PaintId};
use hashbrown::HashMap; use hashbrown::HashMap;
use pathfinder_geometry::basic::vector::Vector2F; use pathfinder_geometry::vector::Vector2F;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_geometry::color::ColorU; use pathfinder_content::color::ColorU;
use pathfinder_geometry::outline::Outline; use pathfinder_content::outline::Outline;
use std::io::{self, Write}; use std::io::{self, Write};
#[derive(Clone)] #[derive(Clone)]

View File

@ -8,8 +8,8 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
#[derive(Debug)] #[derive(Debug)]
pub struct DenseTileMap<T> { pub struct DenseTileMap<T> {

View File

@ -12,11 +12,11 @@ use crate::builder::SceneBuilder;
use crate::gpu_data::{AlphaTileBatchPrimitive, BuiltObject, TileObjectPrimitive}; use crate::gpu_data::{AlphaTileBatchPrimitive, BuiltObject, TileObjectPrimitive};
use crate::paint::{self, PaintId}; use crate::paint::{self, PaintId};
use crate::sorted_vector::SortedVector; use crate::sorted_vector::SortedVector;
use pathfinder_geometry::basic::line_segment::LineSegment2F; use pathfinder_geometry::line_segment::LineSegment2F;
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::basic::rect::{RectF, RectI}; use pathfinder_geometry::rect::{RectF, RectI};
use pathfinder_geometry::outline::{Contour, Outline, PointIndex}; use pathfinder_content::outline::{Contour, Outline, PointIndex};
use pathfinder_geometry::segment::Segment; use pathfinder_content::segment::Segment;
use std::cmp::Ordering; use std::cmp::Ordering;
use std::mem; use std::mem;

View File

@ -15,8 +15,8 @@ use crate::paint;
use crate::scene::PathObject; use crate::scene::PathObject;
use crate::tile_map::DenseTileMap; use crate::tile_map::DenseTileMap;
use crate::tiles; use crate::tiles;
use pathfinder_geometry::basic::vector::Vector2I; use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_geometry::rect::RectF;
use std::ops::Range; use std::ops::Range;
use std::sync::atomic::{AtomicUsize, Ordering as AtomicOrdering}; use std::sync::atomic::{AtomicUsize, Ordering as AtomicOrdering};

View File

@ -8,6 +8,9 @@ authors = ["Patrick Walton <pcwalton@mimiga.net>"]
bitflags = "1.0" bitflags = "1.0"
usvg = "0.7" usvg = "0.7"
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -13,14 +13,15 @@
#[macro_use] #[macro_use]
extern crate bitflags; extern crate bitflags;
use pathfinder_geometry::basic::line_segment::LineSegment2F; use pathfinder_content::color::ColorU;
use pathfinder_geometry::basic::vector::Vector2F; use pathfinder_content::outline::Outline;
use pathfinder_geometry::basic::rect::RectF; use pathfinder_content::segment::{Segment, SegmentFlags};
use pathfinder_geometry::basic::transform2d::{Transform2DF, Transform2DFPathIter}; use pathfinder_content::stroke::{LineCap, LineJoin, OutlineStrokeToFill, StrokeStyle};
use pathfinder_geometry::color::ColorU; use pathfinder_content::transform::Transform2DFPathIter;
use pathfinder_geometry::outline::Outline; use pathfinder_geometry::line_segment::LineSegment2F;
use pathfinder_geometry::segment::{Segment, SegmentFlags}; use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::stroke::{LineCap, LineJoin, OutlineStrokeToFill, StrokeStyle}; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_geometry::vector::Vector2F;
use pathfinder_renderer::paint::Paint; use pathfinder_renderer::paint::Paint;
use pathfinder_renderer::scene::{PathObject, Scene}; use pathfinder_renderer::scene::{PathObject, Scene};
use std::fmt::{Display, Formatter, Result as FormatResult}; use std::fmt::{Display, Formatter, Result as FormatResult};

View File

@ -8,6 +8,9 @@ edition = "2018"
swf-parser = "0.7.0" swf-parser = "0.7.0"
swf-tree = "0.7.0" swf-tree = "0.7.0"
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -9,10 +9,10 @@
// except according to those terms. // except according to those terms.
use std::ops::Add; use std::ops::Add;
use pathfinder_geometry::color::{ColorU, ColorF}; use pathfinder_content::color::{ColorU, ColorF};
use pathfinder_geometry::outline::{Outline, Contour}; use pathfinder_content::outline::{Outline, Contour};
use pathfinder_geometry::basic::vector::Vector2F; use pathfinder_geometry::vector::Vector2F;
use pathfinder_geometry::stroke::{OutlineStrokeToFill, StrokeStyle}; use pathfinder_content::stroke::{OutlineStrokeToFill, StrokeStyle};
use pathfinder_renderer::scene::{PathObject, Scene}; use pathfinder_renderer::scene::{PathObject, Scene};
use swf_tree; use swf_tree;

View File

@ -9,7 +9,7 @@
// except according to those terms. // except according to those terms.
use pathfinder_renderer::paint::Paint; use pathfinder_renderer::paint::Paint;
use pathfinder_geometry::stroke::{LineJoin, LineCap}; use pathfinder_content::stroke::{LineJoin, LineCap};
use crate::{Twips, Point2}; use crate::{Twips, Point2};
use std::mem; use std::mem;
use std::cmp::Ordering; use std::cmp::Ordering;
@ -25,7 +25,7 @@ use swf_tree::{
shape_records, shape_records,
Vector2D Vector2D
}; };
use pathfinder_geometry::color::ColorU; use pathfinder_content::color::ColorU;
use swf_tree::tags::DefineShape; use swf_tree::tags::DefineShape;
#[derive(Clone, Copy, Debug)] #[derive(Clone, Copy, Debug)]

View File

@ -9,6 +9,9 @@ euclid = "0.19"
font-kit = "0.2" font-kit = "0.2"
lyon_path = "0.12" lyon_path = "0.12"
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -13,10 +13,10 @@ use font_kit::error::GlyphLoadingError;
use font_kit::hinting::HintingOptions; use font_kit::hinting::HintingOptions;
use font_kit::loader::Loader; use font_kit::loader::Loader;
use lyon_path::builder::{FlatPathBuilder, PathBuilder}; use lyon_path::builder::{FlatPathBuilder, PathBuilder};
use pathfinder_geometry::basic::vector::Vector2F; use pathfinder_content::outline::{Contour, Outline};
use pathfinder_geometry::basic::transform2d::Transform2DF; use pathfinder_content::stroke::{OutlineStrokeToFill, StrokeStyle};
use pathfinder_geometry::outline::{Contour, Outline}; use pathfinder_geometry::transform2d::Transform2DF;
use pathfinder_geometry::stroke::{OutlineStrokeToFill, StrokeStyle}; use pathfinder_geometry::vector::Vector2F;
use pathfinder_renderer::paint::PaintId; use pathfinder_renderer::paint::PaintId;
use pathfinder_renderer::scene::{PathObject, Scene}; use pathfinder_renderer::scene::{PathObject, Scene};
use skribo::{FontCollection, Layout, TextStyle}; use skribo::{FontCollection, Layout, TextStyle};

View File

@ -13,6 +13,9 @@ serde_json = "1.0"
version = "0.1" version = "0.1"
features = ["serde"] features = ["serde"]
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_geometry] [dependencies.pathfinder_geometry]
path = "../geometry" path = "../geometry"

View File

@ -17,9 +17,9 @@
extern crate serde_derive; extern crate serde_derive;
use hashbrown::HashMap; use hashbrown::HashMap;
use pathfinder_geometry::basic::vector::{Vector2F, Vector2I}; use pathfinder_content::color::ColorU;
use pathfinder_geometry::basic::rect::RectI; use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::color::ColorU; use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_gpu::resources::ResourceLoader; use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, Device, Primitive}; use pathfinder_gpu::{BlendState, BufferData, BufferTarget, BufferUploadMode, Device, Primitive};
use pathfinder_gpu::{RenderOptions, RenderState, RenderTarget, UniformData, VertexAttrClass}; use pathfinder_gpu::{RenderOptions, RenderState, RenderTarget, UniformData, VertexAttrClass};