Update dependencies and lock files (#1841)

* Bump lock files

* Fix glam mismatch version

* Add tokio feature

* Update all deps

* Fix gpu-compiler not able to reference the root workspace

* Bump a few more deps

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
James Lindsay
2024-07-22 10:56:29 +01:00
committed by GitHub
parent ab71d26d84
commit fa1535d0bb
31 changed files with 7466 additions and 8962 deletions

382
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -55,8 +55,8 @@ axum = "0.7"
chrono = "0.4"
ron = "0.8"
fastnoise-lite = "1.1"
spirv-std = { git = "https://github.com/EmbarkStudios/rust-gpu.git" }
wgpu-types = "0.17"
spirv-std = { git = "https://github.com/GraphiteEditor/rust-gpu.git" }
wgpu-types = "0.20"
wgpu = { version = "0.20", features = ["strict_asserts", "api_log_info"] }
once_cell = "1.13" # Remove when `core::cell::LazyCell` (<https://doc.rust-lang.org/core/cell/struct.LazyCell.html>) is stabilized in Rust 1.80 and we bump our MSRV
wasm-bindgen = "=0.2.92" # NOTICE: ensure this stays in sync with the `wasm-bindgen-cli` version in `website/content/volunteer/guide/getting-started/_index.md`. We pin this version because wasm-bindgen upgrades may break various things.
@@ -67,11 +67,11 @@ winit = "0.29"
url = "2.5"
tokio = { version = "1.29", features = ["fs", "io-std"] }
vello = "0.2"
resvg = "0.41"
usvg = "0.41"
resvg = "0.42"
usvg = "0.42"
rand = { version = "0.8", default-features = false }
rand_chacha = "0.3"
glam = { version = "0.25", default-features = false, features = ["serde"] }
glam = { version = "0.28", default-features = false, features = ["serde"] }
base64 = "0.22"
image = { version = "0.25", default-features = false, features = ["png"] }
rustybuzz = "0.17"
@@ -83,15 +83,14 @@ num-derive = "0.4"
num-traits = { version = "0.2", default-features = false, features = ["i128"] }
specta = { git = "https://github.com/oscartbeaumont/specta.git", features = [
"glam",
"derive",
# "typescript",
] }
syn = { version = "2.0", default-features = false, features = [
"full",
"derive",
] }
kurbo = { version = "0.11.0", features = [
"serde",
] }
kurbo = { version = "0.11.0", features = ["serde"] }
[profile.dev]
opt-level = 1

View File

@@ -569,8 +569,7 @@ impl MessageHandler<GraphOperationMessage, GraphOperationMessageData<'_>> for Gr
parent,
insert_index,
} => {
let database = usvg::fontdb::Database::new();
let tree = match usvg::Tree::from_str(&svg, &usvg::Options::default(), &database) {
let tree = match usvg::Tree::from_str(&svg, &usvg::Options::default()) {
Ok(t) => t,
Err(e) => {
responses.add(DocumentMessage::DocumentHistoryBackward);

View File

@@ -304,7 +304,7 @@ impl MessageHandler<NavigationMessage, NavigationMessageData<'_>> for Navigation
let half_viewport = ipp.viewport_bounds.size() / 2.;
let start_offset = self.mouse_position - half_viewport;
let end_offset = ipp.mouse.position - half_viewport;
let angle = start_offset.angle_between(end_offset);
let angle = start_offset.angle_to(end_offset);
tilt_raw_not_snapped + angle
};

View File

@@ -435,7 +435,7 @@ pub fn are_manipulator_handles_colinear(group: &bezier_rs::ManipulatorGroup<Poin
let anchor_is_endpoint = !subpath.closed() && (index == 0 || index == subpath.len() - 1);
// Unless this is an endpoint, check if both handles are colinear (within an angular epsilon)
!anchor_is_endpoint && handle_in.is_some_and(|handle_in| handle_out.is_some_and(|handle_out| handle_in.angle_between(handle_out) < 1e-5))
!anchor_is_endpoint && handle_in.is_some_and(|handle_in| handle_out.is_some_and(|handle_out| handle_in.angle_to(handle_out) < 1e-5))
}
pub fn get_layer_snap_points(layer: LayerNodeIdentifier, snap_data: &SnapData, points: &mut Vec<SnapCandidatePoint>) {

View File

@@ -204,7 +204,7 @@ pub fn axis_align_drag(axis_align: bool, position: DVec2, start: DVec2) -> DVec2
if axis_align {
let mouse_position = position - start;
let snap_resolution = SELECTION_DRAG_ANGLE.to_radians();
let angle = -mouse_position.angle_between(DVec2::X);
let angle = -mouse_position.angle_to(DVec2::X);
let snapped_angle = (angle / snap_resolution).round() * snap_resolution;
if snapped_angle.is_finite() {
start + DVec2::new(snapped_angle.cos(), snapped_angle.sin()) * mouse_position.length()

View File

@@ -163,7 +163,7 @@ impl SelectedGradient {
let delta = point - mouse;
let length = delta.length();
let mut angle = -delta.angle_between(DVec2::X);
let mut angle = -delta.angle_to(DVec2::X);
let snap_resolution = LINE_ROTATE_SNAP_ANGLE.to_radians();
angle = (angle / snap_resolution).round() * snap_resolution;
@@ -181,7 +181,7 @@ impl SelectedGradient {
let (start, end) = (self.transform.transform_point2(self.gradient.start), self.transform.transform_point2(self.gradient.end));
// Calculate the new position by finding the closest point on the line
let new_pos = ((end - start).angle_between(mouse - start)).cos() * start.distance(mouse) / start.distance(end);
let new_pos = ((end - start).angle_to(mouse - start)).cos() * start.distance(mouse) / start.distance(end);
// Should not go off end but can swap
let clamped = new_pos.clamp(0., 1.);
@@ -332,7 +332,7 @@ impl Fsm for GradientToolFsmState {
let (start, end) = (transform.transform_point2(gradient.start), transform.transform_point2(gradient.end));
// Compute the distance from the mouse to the gradient line in viewport space
let distance = (end - start).angle_between(mouse - start).sin() * (mouse - start).length();
let distance = (end - start).angle_to(mouse - start).sin() * (mouse - start).length();
// If click is on the line then insert point
if distance < (SELECTION_THRESHOLD * 2.) {

View File

@@ -299,7 +299,7 @@ fn generate_transform(tool_data: &mut LineToolData, snap_data: SnapData, lock_an
let document_to_viewport = snap_data.document.metadata.document_to_viewport;
let mut document_points = [tool_data.drag_start, document_to_viewport.inverse().transform_point2(tool_data.drag_current)];
let mut angle = -(document_points[1] - document_points[0]).angle_between(DVec2::X);
let mut angle = -(document_points[1] - document_points[0]).angle_to(DVec2::X);
let mut line_length = (document_points[1] - document_points[0]).length();
if lock_angle {
angle = tool_data.angle;
@@ -352,11 +352,11 @@ fn generate_transform(tool_data: &mut LineToolData, snap_data: SnapData, lock_an
}
// Used for keeping the same angle next frame
tool_data.angle = -(document_points[1] - document_points[0]).angle_between(DVec2::X);
tool_data.angle = -(document_points[1] - document_points[0]).angle_to(DVec2::X);
let viewport_points = [document_to_viewport.transform_point2(document_points[0]), document_to_viewport.transform_point2(document_points[1])];
let line_length = (viewport_points[1] - viewport_points[0]).length();
let angle = -(viewport_points[1] - viewport_points[0]).angle_between(DVec2::X);
let angle = -(viewport_points[1] - viewport_points[0]).angle_to(DVec2::X);
GraphOperationMessage::TransformSet {
layer: tool_data.layer.unwrap(),
transform: glam::DAffine2::from_scale_angle_translation(DVec2::new(line_length, 1.), angle, viewport_points[0]),

View File

@@ -362,7 +362,7 @@ impl PenToolData {
let angle = if lock_angle {
self.angle
} else if (relative - document_pos) != DVec2::ZERO && !lock_angle {
(-(relative - document_pos).angle_between(DVec2::X) / resolution).round() * resolution
(-(relative - document_pos).angle_to(DVec2::X) / resolution).round() * resolution
} else {
self.angle
};
@@ -405,7 +405,7 @@ impl PenToolData {
if let Some(relative) = relative.map(|layer| transform.transform_point2(layer)) {
if (relative - document_pos) != DVec2::ZERO {
self.angle = -(relative - document_pos).angle_between(DVec2::X)
self.angle = -(relative - document_pos).angle_to(DVec2::X)
}
}

View File

@@ -757,7 +757,7 @@ impl Fsm for SelectToolFsmState {
let start_offset = tool_data.drag_start - bounds.center_of_transformation;
let end_offset = input.mouse.position - bounds.center_of_transformation;
start_offset.angle_between(end_offset)
start_offset.angle_to(end_offset)
};
let snapped_angle = if input.keyboard.key(modifier_keys.snap_angle) {

View File

@@ -186,7 +186,7 @@ impl<'a> MessageHandler<TransformLayerMessage, TransformData<'a>> for TransformL
TransformOperation::Rotating(rotation) => {
let start_offset = *selected.pivot - self.mouse_position;
let end_offset = *selected.pivot - input.mouse.position;
let angle = start_offset.angle_between(end_offset);
let angle = start_offset.angle_to(end_offset);
let change = if self.slow { angle / SLOWING_DIVISOR } else { angle };

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@ documentation = "https://graphite.rs/libraries/bezier-rs/"
[dependencies]
# Required dependencies
glam = { version = "0.25", features = ["serde"] }
glam = { version = "0.28", features = ["serde"] }
# Optional local dependencies
dyn-any = { version = "0.3.0", path = "../dyn-any", optional = true }

View File

@@ -273,7 +273,7 @@ impl Bezier {
BezierHandles::Cubic { .. } => {
// Axis align the curve.
let translated_bezier = self.translate(-self.start);
let angle = translated_bezier.end.angle_between(DVec2::new(1., 0.));
let angle = translated_bezier.end.angle_to(DVec2::new(1., 0.));
let rotated_bezier = translated_bezier.rotate(angle);
if let BezierHandles::Cubic { handle_start, handle_end } = rotated_bezier.handles {
// These formulas and naming conventions follows https://pomax.github.io/bezierinfo/#inflections
@@ -413,7 +413,7 @@ impl Bezier {
if other.is_linear() {
// Rotate the bezier and the line by the angle that the line makes with the x axis
let line_directional_vector = other.end - other.start;
let angle = line_directional_vector.angle_between(DVec2::new(0., 1.));
let angle = line_directional_vector.angle_to(DVec2::new(0., 1.));
let rotation_matrix = DMat2::from_angle(angle);
let rotated_bezier = self.apply_transformation(|point| rotation_matrix * point);
@@ -452,7 +452,7 @@ impl Bezier {
/// If this needs to be called frequently with a line of the same rotation angle, consider instead using [`line_test_crossings_prerotated`] and moving this function's setup code into your own logic before the repeated call.
pub fn line_test_crossings(&self, point_on_line: DVec2, direction_vector: DVec2) -> impl Iterator<Item = f64> + '_ {
// Rotate the bezier and the line by the angle that the line makes with the x axis
let angle = direction_vector.angle_between(DVec2::new(0., 1.));
let angle = direction_vector.angle_to(DVec2::new(0., 1.));
let rotation_matrix = DMat2::from_angle(angle);
let rotated_bezier = self.apply_transformation(|point| rotation_matrix * point);
@@ -476,7 +476,7 @@ impl Bezier {
/// If this needs to be called frequently with a ray of the same rotation angle, consider instead using [`ray_test_crossings_prerotated`] and moving this function's setup code into your own logic before the repeated call.
pub fn ray_test_crossings(&self, ray_start: DVec2, ray_direction: DVec2) -> impl Iterator<Item = f64> + '_ {
// Rotate the bezier and the line by the angle that the line makes with the x axis
let angle = ray_direction.angle_between(DVec2::new(0., 1.));
let angle = ray_direction.angle_to(DVec2::new(0., 1.));
let rotation_matrix = DMat2::from_angle(angle);
let rotated_bezier = self.apply_transformation(|point| rotation_matrix * point);

View File

@@ -140,8 +140,8 @@ impl Bezier {
}
// Verify all the handles are located on a single side of the curve.
if let BezierHandles::Cubic { handle_start, handle_end } = self.handles {
let angle_1 = (self.end - self.start).angle_between(handle_start - self.start);
let angle_2 = (self.end - self.start).angle_between(handle_end - self.start);
let angle_1 = (self.end - self.start).angle_to(handle_start - self.start);
let angle_2 = (self.end - self.start).angle_to(handle_end - self.start);
if (angle_1 > 0. && angle_2 < 0.) || (angle_1 < 0. && angle_2 > 0.) {
return false;
}
@@ -533,9 +533,9 @@ impl Bezier {
let center = wrapped_center.unwrap();
let radius = center.distance(p1);
let angle_p1 = DVec2::new(1., 0.).angle_between(p1 - center);
let angle_p2 = DVec2::new(1., 0.).angle_between(p2 - center);
let angle_p3 = DVec2::new(1., 0.).angle_between(p3 - center);
let angle_p1 = DVec2::new(1., 0.).angle_to(p1 - center);
let angle_p2 = DVec2::new(1., 0.).angle_to(p2 - center);
let angle_p3 = DVec2::new(1., 0.).angle_to(p3 - center);
let mut start_angle = angle_p1;
let mut end_angle = angle_p3;

View File

@@ -377,7 +377,7 @@ impl<PointId: crate::Identifier> Subpath<PointId> {
// Draw the miter join if the intersection occurs in the correct direction with respect to the path
if start_to_intersection.normalize().abs_diff_eq(in_tangent, MAX_ABSOLUTE_DIFFERENCE)
&& intersection_to_end.normalize().abs_diff_eq(out_tangent, MAX_ABSOLUTE_DIFFERENCE)
&& miter_limit >= 1. / (start_to_intersection.angle_between(-intersection_to_end).abs() / 2.).sin()
&& miter_limit >= 1. / (start_to_intersection.angle_to(-intersection_to_end).abs() / 2.).sin()
{
return Some(ManipulatorGroup {
anchor: intersection,
@@ -406,10 +406,10 @@ impl<PointId: crate::Identifier> Subpath<PointId> {
let in_segment = self.get_segment(self.len_segments() - 1).unwrap();
let in_tangent = in_segment.tangent(TValue::Parametric(1.));
let mut angle = center_to_right.angle_between(center_to_left) / 2.;
let mut angle = center_to_right.angle_to(center_to_left) / 2.;
let mut arc_point = center + DMat2::from_angle(angle).mul_vec2(center_to_right);
if (arc_point - left).angle_between(in_tangent).abs() > PI / 2. {
if (arc_point - left).angle_to(in_tangent).abs() > PI / 2. {
angle = angle - PI * (if angle < 0. { -1. } else { 1. });
arc_point = center + DMat2::from_angle(angle).mul_vec2(center_to_right);
}
@@ -874,8 +874,8 @@ mod tests {
let middle = (round_start + round_end) / 2.;
assert!((round_point - middle).angle_between(round_start - middle) > 0.);
assert!((round_end - middle).angle_between(round_point - middle) > 0.);
assert!((round_point - middle).angle_to(round_start - middle) > 0.);
assert!((round_end - middle).angle_to(round_point - middle) > 0.);
}
#[test]
@@ -915,7 +915,7 @@ mod tests {
let middle = (round_start + round_end) / 2.;
assert!((round_point - middle).angle_between(round_start - middle) < 0.);
assert!((round_end - middle).angle_between(round_point - middle) < 0.);
assert!((round_point - middle).angle_to(round_start - middle) < 0.);
assert!((round_end - middle).angle_to(round_point - middle) < 0.);
}
}

View File

@@ -388,7 +388,7 @@ impl<PointId: crate::Identifier> Subpath<PointId> {
// Calculate the angle formed between two consecutive Subpaths
let out_tangent = self.get_segment(i).unwrap().tangent(TValue::Parametric(1.));
let in_tangent = self.get_segment(j).unwrap().tangent(TValue::Parametric(0.));
let angle = out_tangent.angle_between(in_tangent);
let angle = out_tangent.angle_to(in_tangent);
// The angle is concave. The Subpath overlap and must be clipped
let mut apply_join = true;
@@ -428,7 +428,7 @@ impl<PointId: crate::Identifier> Subpath<PointId> {
if self.closed {
let out_tangent = self.get_segment(self.len_segments() - 1).unwrap().tangent(TValue::Parametric(1.));
let in_tangent = self.get_segment(0).unwrap().tangent(TValue::Parametric(0.));
let angle = out_tangent.angle_between(in_tangent);
let angle = out_tangent.angle_to(in_tangent);
let mut apply_join = true;
if (angle > 0. && distance > 0.) || (angle < 0. && distance < 0.) {

View File

@@ -29,7 +29,7 @@ dyn-any-derive = { path = "derive", optional = true }
# Optional dependencies
log = { version = "0.4", optional = true }
glam = { version = "0.25", optional = true, default-features = false }
glam = { version = "0.28", optional = true, default-features = false }
[package.metadata.docs.rs]
all-features = true

View File

@@ -51,7 +51,7 @@ impl Quad {
let offset = |index_before, index, index_after| {
let [point_before, point, point_after]: [DVec2; 3] = [self.0[index_before], self.0[index], self.0[index_after]];
let [line_in, line_out] = [point - point_before, point_after - point];
let angle = line_in.angle_between(-line_out);
let angle = line_in.angle_to(-line_out);
let offset_length = offset / (std::f64::consts::FRAC_PI_2 - angle / 2.).cos();
point + (line_in.perp().normalize_or_zero() + line_out.perp().normalize_or_zero()).normalize_or_zero() * offset_length
};

View File

@@ -203,7 +203,7 @@ fn construct_vector2(_primary: (), x: f64, y: f64) -> glam::DVec2 {
// Size Of
#[cfg(feature = "std")]
struct SizeOfNode;
pub struct SizeOfNode;
#[cfg(feature = "std")]
#[node_macro::node_fn(SizeOfNode)]
fn flat_map(ty: crate::Type) -> Option<usize> {

View File

@@ -81,7 +81,7 @@ impl<T: Linear + Debug + Copy> LinearChannel for T {}
use num_derive::*;
#[derive(Copy, Clone, Debug, PartialEq, PartialOrd, Num, NumCast, NumOps, One, Zero, ToPrimitive, FromPrimitive)]
struct SRGBGammaFloat(f32);
pub struct SRGBGammaFloat(f32);
impl Channel for SRGBGammaFloat {
#[inline(always)]

View File

@@ -178,7 +178,7 @@ impl Gradient {
let (start, end) = (transform.transform_point2(self.start), transform.transform_point2(self.end));
// Calculate the new position by finding the closest point on the line
let new_position = ((end - start).angle_between(mouse - start)).cos() * start.distance(mouse) / start.distance(end);
let new_position = ((end - start).angle_to(mouse - start)).cos() * start.distance(mouse) / start.distance(end);
// Don't insert point past end of line
if !(0. ..=1.).contains(&new_position) {

View File

@@ -638,7 +638,7 @@ mod test {
for (index, (_, subpath)) in repeated.region_bezier_paths().enumerate() {
let expected_angle = (index as f64 + 1.) * 45.;
let center = (subpath.manipulator_groups()[0].anchor + subpath.manipulator_groups()[2].anchor) / 2.;
let actual_angle = DVec2::Y.angle_between(center).to_degrees();
let actual_angle = DVec2::Y.angle_to(center).to_degrees();
assert!((actual_angle - expected_angle).abs() % 360. < 1e-5);
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -9,25 +9,28 @@ default = []
profiling = ["nvtx"]
serde = ["graphene-core/serde", "glam/serde"]
# NOTE: We can't use workspace dependencies in this crate because it uses a different toolchain
[dependencies]
# Local dependencies
graph-craft = { path = "../graph-craft", features = ["serde"] }
gpu-executor = { path = "../gpu-executor" }
# Workspace dependencies
graphene-core = { workspace = true, features = ["async", "std", "alloc"] }
dyn-any = { workspace = true, features = ["log-bad-types", "rc", "glam"] }
num-traits = { workspace = true }
log = { workspace = true }
serde = { workspace = true }
glam = { workspace = true }
base64 = { workspace = true }
bytemuck = { workspace = true }
tempfile = { workspace = true }
anyhow = { workspace = true }
serde_json = { workspace = true }
graphene-core = { path = "../gcore", features = ["std", "alloc"] }
dyn-any = { path = "../../libraries/dyn-any", features = [
"log-bad-types",
"rc",
"glam",
] }
# Required dependencies
num-traits = { version = "0.2", default-features = false, features = ["i128"] }
log = "0.4"
serde = { version = "1.0", features = ["derive", "rc"] }
glam = { version = "0.28", default-features = false, features = ["serde"] }
base64 = "0.22"
bytemuck = { version = "1.13", features = ["derive"] }
tempfile = "3.6"
anyhow = "1.0"
serde_json = "1.0"
tera = { version = "1.17.1" }
spirv-builder = { version = "0.9", default-features = false, features = [
"use-installed-tools",

View File

@@ -9,6 +9,7 @@ default = ["dealloc_nodes"]
serde = ["dep:serde", "graphene-core/serde", "glam/serde", "bezier-rs/serde"]
dealloc_nodes = []
wgpu = []
tokio = ["dep:tokio"]
[dependencies]
# Local dependencies
@@ -35,6 +36,7 @@ wgpu-executor = { workspace = true }
# Optional workspace dependencies
serde = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
# Workspace dependencies

View File

@@ -225,8 +225,7 @@ fn to_svg_string(vector: &VectorData, transform: DAffine2) -> String {
fn from_svg_string(svg_string: &str) -> VectorData {
let svg = format!(r#"<svg xmlns="http://www.w3.org/2000/svg"><path d="{}"></path></svg>"#, svg_string);
let fontdb = usvg::fontdb::Database::new();
let Some(tree) = usvg::Tree::from_str(&svg, &Default::default(), &fontdb).ok() else {
let Some(tree) = usvg::Tree::from_str(&svg, &Default::default()).ok() else {
return VectorData::empty();
};
let Some(usvg::Node::Path(path)) = tree.root().children().first() else {

File diff suppressed because it is too large Load Diff

View File

@@ -33,8 +33,5 @@
"ts-node": "^10.9.2",
"typescript": "^5.4.2",
"vite": "^5.1.5"
},
"optionalDependencies": {
"wasm-pack": "0.12.1"
}
}

View File

@@ -6,16 +6,6 @@ use bezier_rs::{ArcStrategy, ArcsOptions, Bezier, Identifier, TValue, TValueType
use glam::DVec2;
use wasm_bindgen::prelude::*;
#[derive(serde::Serialize, serde::Deserialize)]
struct CircleSector {
center: DVec2,
radius: f64,
#[serde(rename = "startAngle")]
start_angle: f64,
#[serde(rename = "endAngle")]
end_angle: f64,
}
#[wasm_bindgen]
pub enum WasmMaximizeArcs {
Automatic, // 0

4052
website/package-lock.json generated

File diff suppressed because it is too large Load Diff