forked from 1b-agent/opencadstudio-upstream
fix(snap): correct snap symbols + drop bogus midpoints on circles (#34)
Two bugs from #34: 1. Hovering a circle showed the Center snap as a diamond instead of the conventional circle outline. 2. Hovering a circle also showed Midpoint hits (triangle marker) even though a closed curve has no midpoint. (2) came from a "tessellated curve" fallback in the Midpoint snap path that produced a midpoint for every chord of the polyline approximation. Drop that fallback — only entities with explicit `key_vertices` (Line, LwPolyline) contribute per-segment midpoints now. Curves that DO have a single well-defined midpoint (arcs, and later splines) declare it explicitly via a new `SnapHint::Midpoint`; `arc.rs` emits one at the arc-length centre. (1) — and the broader "everything past Endpoint / Midpoint / Grid was a diamond" inconsistency — fixed by giving every `SnapType` a distinct marker in `SelectionCanvas::draw`: - Center: hollow circle - Node: circle with inscribed X - Quadrant: diamond (unchanged) - Intersection: X - Apparent Intersection: X inside a square - Insertion: two overlapping rectangles (tag glyph) - Perpendicular: right-angle hook - Tangent: circle with a bar across the top - Nearest: hourglass / bowtie - Extension: three dots - Parallel: two parallel diagonal bars - Endpoint / Midpoint / Grid: unchanged Closes #34
This commit is contained in:
1 parent
89fcb21b46
commit
0ec6d77cb1
4 files changed
+162
-28
No files matched your search
@@ -10,6 +10,10 @@ pub enum SnapHint {
|
||||
Quadrant,
|
||||
/// Insertion point of text or block.
|
||||
Insertion,
|
||||
/// Midpoint of a curve that has one well-defined midpoint (an arc's
|
||||
/// arc-length centre, a spline's `t = 0.5`). Lines / polylines do
|
||||
/// not use this — their midpoints are derived from `key_vertices`.
|
||||
Midpoint,
|
||||
}
|
||||
|
||||
/// Geometric primitive used by the tangent-snap engine.
|
||||
|
||||
Reference in new issue
Block a user