Skip to content

Commit 56103aa

Browse files
committed
Code review
1 parent ff837cb commit 56103aa

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

editor/src/messages/tool/common_functionality/snapping/layer_snapper.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ impl LayerSnapper {
8989

9090
pub fn free_snap_paths(&mut self, snap_data: &mut SnapData, point: &SnapCandidatePoint, snap_results: &mut SnapResults, config: SnapTypeConfiguration) {
9191
self.collect_paths(snap_data, !config.use_existing_candidates);
92+
9293
let document = snap_data.document;
9394
let normals = document.snapping_state.target_enabled(SnapTarget::Path(PathSnapTarget::NormalToPath));
9495
let tangents = document.snapping_state.target_enabled(SnapTarget::Path(PathSnapTarget::TangentToPath));
@@ -286,21 +287,25 @@ fn snap_normals(path: &SnapCandidatePath, normals: bool, point: &SnapCandidatePo
286287
}
287288
}
288289

289-
// TODO: Snap rectangles and ellipses to ellipses tangents, find out why point.neighbors is empty while drawing rectangles and ellipses
290+
// TODO: Snap rectangles and ellipses to ellipses tangents.
291+
// TODO: Find out why `point.neighbors` is empty while drawing rectangles and ellipses.
290292
fn snap_tangents(path: &SnapCandidatePath, tangents: bool, point: &SnapCandidatePoint, tolerance: f64, snap_results: &mut SnapResults) {
291293
if !tangents || point.neighbors.len() != 1 {
292294
return;
293295
}
296+
294297
let neighbor = point.neighbors[0];
298+
295299
for t in path.document_curve.tangents_to_point(neighbor) {
296300
let tangent_point = path.document_curve.evaluate(TValue::Parametric(t));
297301

298-
if let Some(closest_point) = closest_point_along_line(neighbor, point.document_point, &path.document_curve, tolerance, 20) {
302+
if closest_point_along_line(neighbor, point.document_point, &path.document_curve, tolerance, 20).is_some() {
299303
let tangent = (tangent_point - neighbor).normalize();
300304
let offset = (point.document_point - tangent_point).dot(tangent);
301305
let snap_to = tangent_point + tangent * offset;
302306

303307
let distance = snap_to.distance(point.document_point);
308+
304309
snap_results.points.push(SnappedPoint {
305310
snapped_point_document: snap_to,
306311
source: point.source,
@@ -316,21 +321,22 @@ fn snap_tangents(path: &SnapCandidatePath, tangents: bool, point: &SnapCandidate
316321
}
317322
}
318323
}
324+
319325
fn closest_point_along_line(start: DVec2, end: DVec2, curve: &Bezier, tolerance: f64, max_iterations: usize) -> Option<DVec2> {
320326
let mut closest_point = None;
321327
let mut closest_distance = f64::INFINITY;
322328

323329
for i in 0..=max_iterations {
324330
let t = i as f64 / max_iterations as f64;
325331

326-
let curve_point = curve.evaluate(TValue::Parametric(t));
327-
let tangent = curve.tangent(TValue::Parametric(t));
328-
if tangent.length_squared() == 0.0 {
332+
if curve.tangent(TValue::Parametric(t)).length_squared() == 0. {
329333
continue;
330334
}
331335

336+
let curve_point = curve.evaluate(TValue::Parametric(t));
337+
332338
let line_direction = end - start;
333-
if line_direction.length_squared() == 0.0 {
339+
if line_direction.length_squared() == 0. {
334340
break;
335341
}
336342

@@ -345,6 +351,7 @@ fn closest_point_along_line(start: DVec2, end: DVec2, curve: &Bezier, tolerance:
345351
closest_point = Some(projected_point);
346352
}
347353
}
354+
348355
if closest_distance < tolerance { closest_point } else { None }
349356
}
350357

0 commit comments

Comments
 (0)