Split colors out into their own crate.

A lot of downstream consumers of `pathfinder_gpu` want to use colors without
the path stuff.
This commit is contained in:
Patrick Walton 2020-01-31 09:16:34 +01:00
parent cd05eefac7
commit 2db43797c3
42 changed files with 136 additions and 54 deletions

2
.gitignore vendored
View File

@ -9,6 +9,8 @@ node_modules
/shaders/build
/c/build
/examples/macos_app/Pathfinder\ Example.xcodeproj/project.xcworkspace/xcuserdata/*
.project
.settings
# Editors
*.swp

25
Cargo.lock generated
View File

@ -166,6 +166,7 @@ dependencies = [
"gl 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"glutin 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_canvas 0.1.0",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -182,6 +183,7 @@ dependencies = [
"metal 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_canvas 0.1.0",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -198,6 +200,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_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -213,6 +216,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_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -229,6 +233,7 @@ dependencies = [
"font-kit 0.4.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_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -1481,6 +1486,7 @@ dependencies = [
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"metal 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_canvas 0.1.0",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -1495,6 +1501,7 @@ name = "pathfinder_canvas"
version = "0.1.0"
dependencies = [
"font-kit 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_renderer 0.1.0",
@ -1502,6 +1509,13 @@ dependencies = [
"skribo 0.0.1 (git+https://github.com/linebender/skribo.git?rev=03c63ac17bb93e29f82e959dac94027935a21159)",
]
[[package]]
name = "pathfinder_color"
version = "0.1.0"
dependencies = [
"pathfinder_simd 0.4.0",
]
[[package]]
name = "pathfinder_content"
version = "0.1.0"
@ -1523,7 +1537,7 @@ dependencies = [
"image 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"metal 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_color 0.1.0",
"pathfinder_export 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -1542,6 +1556,7 @@ name = "pathfinder_export"
version = "0.1.0"
dependencies = [
"deflate 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_renderer 0.1.0",
@ -1573,7 +1588,7 @@ version = "0.1.0"
dependencies = [
"half 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"image 0.21.3 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_content 0.1.0",
"pathfinder_color 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_simd 0.4.0",
]
@ -1595,6 +1610,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.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_demo 0.1.0",
"pathfinder_geometry 0.4.0",
@ -1635,6 +1651,7 @@ dependencies = [
"byteorder 1.3.2 (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.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gpu 0.1.0",
@ -1659,6 +1676,7 @@ name = "pathfinder_svg"
version = "0.1.0"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_renderer 0.1.0",
@ -1669,6 +1687,7 @@ dependencies = [
name = "pathfinder_swf"
version = "0.1.0"
dependencies = [
"pathfinder_color 0.1.0",
"pathfinder_content 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gl 0.1.0",
@ -1696,7 +1715,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_color 0.1.0",
"pathfinder_geometry 0.4.0",
"pathfinder_gpu 0.1.0",
"pathfinder_simd 0.4.0",

View File

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

View File

@ -18,6 +18,9 @@ libc = "0.2"
features = ["pf-text"]
path = "../canvas"
[dependencies.pathfinder_color]
path = "../color"
[dependencies.pathfinder_content]
path = "../content"

View File

@ -15,7 +15,7 @@ use foreign_types::ForeignTypeRef;
use gl;
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, LineJoin, Path2D};
use pathfinder_canvas::{TextAlign, TextMetrics};
use pathfinder_content::color::{ColorF, ColorU};
use pathfinder_color::{ColorF, ColorU};
use pathfinder_content::outline::ArcDirection;
use pathfinder_content::stroke::LineCap;
use pathfinder_geometry::rect::{RectF, RectI};

View File

@ -10,6 +10,9 @@ crate-type = ["rlib", "staticlib"]
[dependencies]
font-kit = { version = "0.4", optional = true }
[dependencies.pathfinder_color]
path = "../color"
[dependencies.pathfinder_content]
path = "../content"

View File

@ -10,7 +10,7 @@
//! A simple API for Pathfinder that mirrors a subset of HTML canvas.
use pathfinder_content::color::ColorU;
use pathfinder_color::ColorU;
use pathfinder_content::dash::OutlineDash;
use pathfinder_content::outline::{ArcDirection, Contour, Outline};
use pathfinder_content::stroke::{LineCap, LineJoin as StrokeLineJoin};

12
color/Cargo.toml Normal file
View File

@ -0,0 +1,12 @@
[package]
name = "pathfinder_color"
version = "0.1.0"
authors = ["Patrick Walton <pcwalton@mimiga.net>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
[dependencies.pathfinder_simd]
path = "../simd"

View File

@ -1,6 +1,6 @@
// pathfinder/geometry/src/color.rs
// pathfinder/color/src/lib.rs
//
// Copyright © 2019 The Pathfinder Project Developers.
// Copyright © 2020 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

View File

@ -18,7 +18,6 @@ extern crate bitflags;
extern crate log;
pub mod clip;
pub mod color;
pub mod dash;
pub mod orientation;
pub mod outline;

View File

@ -22,8 +22,8 @@ features = ["png_codec"]
version = "0.4"
features = ["release_max_level_warn"]
[dependencies.pathfinder_content]
path = "../../content"
[dependencies.pathfinder_color]
path = "../../color"
[dependencies.pathfinder_export]
path = "../../export"

View File

@ -22,7 +22,7 @@ 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_content::color::ColorU;
use pathfinder_color::ColorU;
use pathfinder_export::{Export, FileFormat};
use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::transform2d::Transform2F;

View File

@ -14,7 +14,7 @@ use crate::camera::{Camera, Mode};
use crate::window::{View, Window};
use crate::{BackgroundColor, DemoApp, UIVisibility};
use image::ColorType;
use pathfinder_content::color::{ColorF, ColorU};
use pathfinder_color::{ColorF, ColorU};
use pathfinder_gpu::{ClearOps, DepthFunc, DepthState, Device, Primitive, RenderOptions};
use pathfinder_gpu::{RenderState, RenderTarget, TextureData, TextureFormat, UniformData};
use pathfinder_geometry::rect::RectI;

View File

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

View File

@ -33,7 +33,7 @@ use pathfinder_geometry::vector::Vector2F;
use pathfinder_geometry::vector::Vector2I;
use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::transform2d::Transform2F;
use pathfinder_content::color::ColorF;
use pathfinder_color::ColorF;
use pathfinder_gl::GLDevice;
use pathfinder_gl::GLVersion;
use pathfinder_gpu::ClearParams;

View File

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

View File

@ -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_content::color::ColorF;
use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_color::ColorF;
use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_gl::{GLDevice, GLVersion};
use pathfinder_gpu::resources::FilesystemResourceLoader;
use pathfinder_renderer::concurrent::rayon::RayonExecutor;

View File

@ -16,6 +16,9 @@ sdl2-sys = "0.32"
features = ["pf-text"]
path = "../../canvas"
[dependencies.pathfinder_color]
path = "../../color"
[dependencies.pathfinder_content]
path = "../../content"

View File

@ -11,7 +11,7 @@
use foreign_types::ForeignTypeRef;
use metal::{CAMetalLayer, CoreAnimationLayerRef};
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D};
use pathfinder_content::color::ColorF;
use pathfinder_color::ColorF;
use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_geometry::rect::RectF;
use pathfinder_gpu::resources::FilesystemResourceLoader;

View File

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

View File

@ -9,7 +9,7 @@
// except according to those terms.
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, Path2D};
use pathfinder_content::color::ColorF;
use pathfinder_color::ColorF;
use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_gl::{GLDevice, GLVersion};

View File

@ -13,6 +13,9 @@ sdl2-sys = "0.32"
features = ["pf-text"]
path = "../../canvas"
[dependencies.pathfinder_color]
path = "../../color"
[dependencies.pathfinder_content]
path = "../../content"

View File

@ -9,8 +9,8 @@
// except according to those terms.
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, FillStyle, Path2D};
use pathfinder_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;

View File

@ -14,6 +14,9 @@ sdl2-sys = "0.32"
features = ["pf-text"]
path = "../../canvas"
[dependencies.pathfinder_color]
path = "../../color"
[dependencies.pathfinder_content]
path = "../../content"

View File

@ -10,8 +10,8 @@
use font_kit::handle::Handle;
use pathfinder_canvas::{CanvasFontContext, CanvasRenderingContext2D, TextAlign};
use pathfinder_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;

View File

@ -5,7 +5,8 @@ authors = ["Sebastian Köln <sebk@rynx.org>"]
edition = "2018"
[dependencies]
pathfinder_renderer = { path = "../renderer" }
pathfinder_geometry = { path = "../geometry" }
pathfinder_color = { path = "../color" }
pathfinder_content = { path = "../content" }
pathfinder_geometry = { path = "../geometry" }
pathfinder_renderer = { path = "../renderer" }
deflate = "*"

View File

@ -1,6 +1,16 @@
// pathfinder/export/src/lib.rs
//
// Copyright © 2020 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.
use pathfinder_content::segment::SegmentKind;
use pathfinder_renderer::scene::Scene;
use pathfinder_geometry::vector::Vector2F;
use pathfinder_content::segment::SegmentKind;
use std::io::{self, Write};
use std::fmt;

View File

@ -1,9 +1,20 @@
//! This is a heavily modified version of the pdfpdf crate by Benjamin Kimock <kimockb@gmail.com> (aka. saethlin)
// pathfinder/export/src/pdf.rs
//
// Copyright © 2020 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.
//! This is a heavily modified version of the pdfpdf crate by Benjamin Kimock <kimockb@gmail.com>
//! (aka. saethlin)
use pathfinder_geometry::vector::Vector2F;
use pathfinder_content::color::ColorU;
use std::io::{self, Write};
use deflate::Compression;
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::Vector2F;
use std::io::{self, Write};
struct Counter<T> {
inner: T,

View File

@ -12,8 +12,8 @@ version = "0.21"
default-features = false
features = ["png_codec"]
[dependencies.pathfinder_content]
path = "../content"
[dependencies.pathfinder_color]
path = "../color"
[dependencies.pathfinder_geometry]
path = "../geometry"

View File

@ -13,7 +13,7 @@
use crate::resources::ResourceLoader;
use half::f16;
use image::ImageFormat;
use pathfinder_content::color::ColorF;
use pathfinder_color::ColorF;
use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::transform3d::Transform4F;
use pathfinder_geometry::vector::Vector2I;

View File

@ -17,6 +17,9 @@ smallvec = "0.6"
version = "0.4"
features = ["release_max_level_warn"]
[dependencies.pathfinder_color]
path = "../color"
[dependencies.pathfinder_content]
path = "../content"

View File

@ -8,9 +8,9 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use pathfinder_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.

View File

@ -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_color::ColorF;
use pathfinder_geometry::vector::{Vector2I, Vector4F};
use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::transform3d::Transform4F;
use pathfinder_content::color::ColorF;
use pathfinder_gpu::resources::ResourceLoader;
use pathfinder_gpu::{BlendFunc, BlendState, BufferData, BufferTarget, BufferUploadMode, ClearOps};
use pathfinder_gpu::{DepthFunc, DepthState, Device, Primitive, RenderOptions, RenderState};

View File

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

View File

@ -16,10 +16,10 @@ use crate::options::{BuildOptions, PreparedBuildOptions};
use crate::options::{PreparedRenderTransform, RenderCommandListener};
use crate::paint::{Paint, PaintId};
use hashbrown::HashMap;
use pathfinder_color::ColorU;
use pathfinder_geometry::vector::Vector2F;
use pathfinder_geometry::rect::RectF;
use pathfinder_geometry::transform2d::Transform2F;
use pathfinder_content::color::ColorU;
use pathfinder_content::outline::Outline;
#[derive(Clone)]
@ -179,10 +179,12 @@ impl Scene {
}
}
}
pub struct PathIter<'a> {
scene: &'a Scene,
pos: usize
}
impl<'a> Iterator for PathIter<'a> {
type Item = (&'a Paint, &'a Outline, &'a str);
fn next(&mut self) -> Option<Self::Item> {
@ -197,6 +199,7 @@ impl<'a> Iterator for PathIter<'a> {
item
}
}
#[derive(Clone, Debug)]
pub struct PathObject {
outline: Outline,

View File

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

View File

@ -13,7 +13,7 @@
#[macro_use]
extern crate bitflags;
use pathfinder_content::color::ColorU;
use pathfinder_color::ColorU;
use pathfinder_content::outline::Outline;
use pathfinder_content::segment::{Segment, SegmentFlags};
use pathfinder_content::stroke::{LineCap, LineJoin, OutlineStrokeToFill, StrokeStyle};

View File

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

View File

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

View File

@ -8,25 +8,16 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use pathfinder_renderer::paint::Paint;
use pathfinder_content::stroke::{LineJoin, LineCap};
use crate::{Twips, Point2};
use pathfinder_color::ColorU;
use pathfinder_content::stroke::{LineJoin, LineCap};
use pathfinder_renderer::paint::Paint;
use std::mem;
use std::cmp::Ordering;
use swf_tree::{
FillStyle,
StraightSRgba8,
LineStyle,
fill_styles,
JoinStyle,
CapStyle,
join_styles,
ShapeRecord,
shape_records,
Vector2D
};
use pathfinder_content::color::ColorU;
use swf_tree::tags::DefineShape;
use swf_tree::{CapStyle, FillStyle, JoinStyle, LineStyle, ShapeRecord, StraightSRgba8, Vector2D};
use swf_tree::{fill_styles, join_styles, shape_records};
#[derive(Clone, Copy, Debug)]
pub(crate) struct LineSegment {

View File

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

View File

@ -17,7 +17,7 @@
extern crate serde_derive;
use hashbrown::HashMap;
use pathfinder_content::color::ColorU;
use pathfinder_color::ColorU;
use pathfinder_geometry::rect::RectI;
use pathfinder_geometry::vector::{Vector2F, Vector2I};
use pathfinder_gpu::resources::ResourceLoader;