You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Offset segments with compound styles render in the wrong arclength frame -- no one's supposed to be styling offset segments, but we can at least throw a hard error for offset seg + compound sty and write a comment
src/curvilinear.jl:257 warns and calls the removed 3-arg to_polygons(f, pathlength(f), s; ...); replace with a clear "no render method for (segment, style)" error.
Arc over-refinement -- use constant-curvature fast path to avoid leaving dt at the 0.01 floor whenever sqrt(8·tol/κ)/t_scale > 0.1, and/or rethink that guard
GeneralOffset{BSpline} discretization integrates t_to_arclength from 0 with each step. Re-evaluate after Add B-spline arclength cache #245 (arclength cache, ~15× per call); if still hot, accumulate arclength incrementally across the grid.
O(n²) membership scans in round_to_curvilinearpolygon: (src/curvilinear.jl:1031, :1063): i in corner_indices / i in la_indices on plain Vectors per vertex plus findfirst over curve_start_idx per line-arc corner. Pre-Unify SolidModel & GDS path rendering through a shared CurvilinearPolygon pipeline #236 GDS rounding used Set + Dict; restore that at function entry.
Small duplications: _bspline_signed_curvature vs _bspline_curvature (src/render/discretization.jl:75/137 — one should call the other); pathtopolys(..., ::PeriodicStyle) pair (src/curvilinear.jl:314/325 — share a helper like the offset pair); the "Ignoring attachments" warn-and-strip body (src/curvilinear.jl:289/412/749 — one shared helper behind thin dispatch methods).
Dimensionless relative→absolute rounding flip for CurvilinearPolygon + Rounded(::Real) is intended but untested — add a pinning test and a CHANGELOG line stating all dimensionless relative rounding is now absolute-by-default as intended.
Incidentally discovered autofill bug described in this comment
Consolidated follow-ups from the #236 review, most should land before the next version tag.
src/curvilinear.jl:257warns and calls the removed 3-argto_polygons(f, pathlength(f), s; ...); replace with a clear "no render method for (segment, style)" error.dtat the 0.01 floor wheneversqrt(8·tol/κ)/t_scale > 0.1, and/or rethink that guardGeneralOffset{BSpline}discretization integratest_to_arclengthfrom 0 with each step. Re-evaluate after Add B-spline arclength cache #245 (arclength cache, ~15× per call); if still hot, accumulate arclength incrementally across the grid.round_to_curvilinearpolygon: (src/curvilinear.jl:1031,:1063):i in corner_indices/i in la_indiceson plainVectors per vertex plusfindfirstovercurve_start_idxper line-arc corner. Pre-Unify SolidModel & GDS path rendering through a shared CurvilinearPolygon pipeline #236 GDS rounding usedSet+Dict; restore that at function entry._bspline_signed_curvaturevs_bspline_curvature(src/render/discretization.jl:75/137— one should call the other);pathtopolys(..., ::PeriodicStyle)pair (src/curvilinear.jl:314/325— share a helper like the offset pair); the "Ignoring attachments" warn-and-strip body (src/curvilinear.jl:289/412/749— one shared helper behind thin dispatch methods).CurvilinearPolygon+Rounded(::Real)is intended but untested — add a pinning test and a CHANGELOG line stating all dimensionless relative rounding is now absolute-by-default as intended.