Skip to content

Commit 78d3adf

Browse files
committed
Fix compiler errors and formatting for elliptical gradients
1 parent 902c3ed commit 78d3adf

3 files changed

Lines changed: 9 additions & 5 deletions

File tree

editor/src/messages/tool/tool_messages/gradient_tool.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,8 @@ fn calculate_insertion(start: DVec2, end: DVec2, stops: &GradientStops, mouse: D
344344

345345
return Some(projection);
346346
}
347+
None
348+
}
347349

348350
/// Compute minor-axis handle positions in document space for a radial gradient.
349351
fn radial_minor_handles(gradient: &Gradient) -> Option<(DVec2, DVec2)> {

node-graph/libraries/rendering/src/render_ext.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::renderer::{RenderParams, format_transform_matrix};
22
use core_types::uuid::generate_uuid;
3-
use glam::DAffine2;
3+
use glam::{DAffine2, DVec2};
44
use graphic_types::vector_types::gradient::{Gradient, GradientType};
55
use graphic_types::vector_types::vector::style::{Fill, PaintOrder, PathStyle, Stroke, StrokeAlign, StrokeCap, StrokeJoin};
66
use std::fmt::Write;
@@ -68,13 +68,14 @@ impl RenderExt for Gradient {
6868
let radius = start.distance(end);
6969

7070
let ellipse_transform = if (self.aspect - 1.).abs() > f64::EPSILON {
71-
let angle = (end - start).to_angle();
71+
let major_vec = end - start;
72+
let angle = major_vec.y.atan2(major_vec.x);
7273
let squash = DAffine2::from_translation(start)
7374
* DAffine2::from_angle(angle)
7475
* DAffine2::from_scale(DVec2::new(1., self.aspect))
7576
* DAffine2::from_angle(-angle)
7677
* DAffine2::from_translation(-start);
77-
78+
7879
squash * gradient_transform_raw
7980
} else {
8081
gradient_transform_raw

node-graph/libraries/rendering/src/renderer.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,15 +1177,16 @@ impl Render for Table<Vector> {
11771177
let mut brush_transform = kurbo::Affine::new((inverse_element_transform * parent_transform).to_cols_array());
11781178

11791179
if gradient.gradient_type == GradientType::Radial && (gradient.aspect - 1.).abs() > f64::EPSILON {
1180-
let angle = (end - start).to_angle();
1180+
let major_vec = end - start;
1181+
let angle = major_vec.y.atan2(major_vec.x);
11811182
let center = kurbo::Vec2::new(start.x, start.y);
11821183

11831184
let ellipse_affine = kurbo::Affine::translate(center)
11841185
* kurbo::Affine::rotate(angle)
11851186
* kurbo::Affine::scale_non_uniform(1., gradient.aspect)
11861187
* kurbo::Affine::rotate(-angle)
11871188
* kurbo::Affine::translate(-center);
1188-
1189+
11891190
brush_transform = ellipse_affine * brush_transform;
11901191
}
11911192

0 commit comments

Comments
 (0)