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:
parent
b16300bf02
commit
431dcf3d2e
|
@ -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",
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
members = [
|
||||
"c",
|
||||
"canvas",
|
||||
"content",
|
||||
"demo/android/rust",
|
||||
"demo/common",
|
||||
"demo/magicleap",
|
||||
|
|
|
@ -14,6 +14,9 @@ libc = "0.2"
|
|||
[dependencies.pathfinder_canvas]
|
||||
path = "../canvas"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../geometry"
|
||||
|
||||
|
|
46
c/src/lib.rs
46
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 {
|
||||
|
|
|
@ -10,6 +10,9 @@ crate-type = ["rlib", "staticlib"]
|
|||
[dependencies]
|
||||
font-kit = "0.2"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../geometry"
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
|
@ -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;
|
|
@ -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,
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
||||
|
|
@ -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;
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -20,6 +20,9 @@ crate-type = ["cdylib"]
|
|||
[features]
|
||||
mocked = ["glutin"]
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../../content"
|
||||
|
||||
[dependencies.pathfinder_demo]
|
||||
path = "../common"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -11,6 +11,9 @@ glutin = "0.21"
|
|||
[dependencies.pathfinder_canvas]
|
||||
path = "../../canvas"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../../geometry"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -15,6 +15,9 @@ sdl2-sys = "0.32"
|
|||
[dependencies.pathfinder_canvas]
|
||||
path = "../../canvas"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../../geometry"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -12,6 +12,9 @@ sdl2-sys = "0.32"
|
|||
[dependencies.pathfinder_canvas]
|
||||
path = "../../canvas"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../../geometry"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -12,6 +12,9 @@ sdl2-sys = "0.32"
|
|||
[dependencies.pathfinder_canvas]
|
||||
path = "../../canvas"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../../geometry"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -13,6 +13,9 @@ sdl2-sys = "0.32"
|
|||
[dependencies.pathfinder_canvas]
|
||||
path = "../../canvas"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../../geometry"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -5,11 +5,6 @@ edition = "2018"
|
|||
authors = ["Patrick Walton <pcwalton@mimiga.net>"]
|
||||
|
||||
[dependencies]
|
||||
arrayvec = "0.4"
|
||||
bitflags = "1.0"
|
||||
serde = "1.0"
|
||||
serde_derive = "1.0"
|
||||
smallvec = "0.6"
|
||||
|
||||
[dependencies.log]
|
||||
version = "0.4"
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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};
|
|
@ -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)]
|
|
@ -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<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,
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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<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)]
|
||||
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() {
|
|
@ -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)]
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -11,6 +11,9 @@ version = "0.21"
|
|||
default-features = false
|
||||
features = ["png_codec"]
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../geometry"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)]
|
||||
|
|
|
@ -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<T> {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@ authors = ["Patrick Walton <pcwalton@mimiga.net>"]
|
|||
bitflags = "1.0"
|
||||
usvg = "0.7"
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../geometry"
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)]
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -13,6 +13,9 @@ serde_json = "1.0"
|
|||
version = "0.1"
|
||||
features = ["serde"]
|
||||
|
||||
[dependencies.pathfinder_content]
|
||||
path = "../content"
|
||||
|
||||
[dependencies.pathfinder_geometry]
|
||||
path = "../geometry"
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
|
Loading…
Reference in New Issue