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:
parent
ab71d26d84
commit
fa1535d0bb
File diff suppressed because it is too large
Load Diff
15
Cargo.toml
15
Cargo.toml
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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>) {
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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.) {
|
||||
|
|
|
|||
|
|
@ -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]),
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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 }
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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.) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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> {
|
||||
|
|
|
|||
|
|
@ -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)]
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -33,8 +33,5 @@
|
|||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.4.2",
|
||||
"vite": "^5.1.5"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"wasm-pack": "0.12.1"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue