vectorcraft/crates
dotCooCoo 2d95ac1694 EPS: arc and arcn with huge angles no longer hang the import
arc raised its second angle by 2π in a loop until it was no longer
below the first, and arcn lowered it the same way. For an angle of
1e18 degrees that loop takes about 3e15 steps: vectorcraft-cli info
was still reading an EPS file with "newpath 100 100 50 1e18 0 arc
stroke" when "timeout 20" stopped it. For 1e308 the loop never ends:
from 2^56 radians (about 4.1e18 degrees) up, adding 2π leaves a double
unchanged. The import fuzz test eps_hostile_programs_never_panic builds
programs from tokens that include arc, arcn, 1e308 and 1e15.

arc now raises the second angle by multiples of 360 until it is at
least the first, and arcn lowers it until it is at most the first, as
the PostScript Language Reference defines them. The code works out both
sweeps from the remainders of the two angles after whole turns, and it
places the first endpoint at the remainder of the first angle. Ordinary
angles give the same arcs as before, apart from rounding in the last
digits. One case changes: when raising (arc) or lowering (arcn) the
second angle by whole turns makes it equal to the first, as in
60 -300 arc or -60 300 arcn, rounding sometimes made the old loop add
another turn and draw a full circle. Those arcs are now empty, as the
PostScript Language Reference defines them.

Tests: 1e18 0 arc, 1e308 0 arc, 0 1e18 arcn and 0 1e308 arcn draw the
arc between the angles' remainders and leave the current point at the
second angle. The test reads each program on a thread of its own and
fails when no result arrives within 20 seconds.
2026-10-11 07:13:38 +07:00
..
affinity Clippy 1.99: as_chunks in the Affinity raster tests 2026-10-09 23:15:36 +07:00
brush Part of gap 5: Scatter, Art and Pattern Brush Options 2026-10-10 17:48:05 +07:00
cad #1011: DXF US survey inches, yards and miles import at their size 2026-10-11 03:51:47 +07:00
color #1007: Reverse Gradient mirrors off-centre midpoints 2026-10-11 03:51:31 +07:00
doc Type: Proportional Metrics — full-width glyphs on the font's proportional widths, `palt` (#966) 2026-10-11 07:00:35 +07:00
effects Part of gap 2: Effect › Brush Strokes (Accented Edges, Angled Strokes, Crosshatch, Dark Strokes, Ink Outlines, Spatter, Sprayed Strokes, Sumi-e) 2026-10-11 01:19:26 +07:00
engine Tests: the command sweeps no longer skip junk scale, spacing and artboard values 2026-10-11 07:13:37 +07:00
eps EPS: arc and arcn with huge angles no longer hang the import 2026-10-11 07:13:38 +07:00
format Fonts: missing fonts are listed when a document opens, with Find Fonts and a folder search 2026-10-10 08:42:32 +07:00
geom #1026: open filled paths are hit by their fill on every side 2026-10-11 05:30:24 +07:00
mcp #1003: MCP add_text colours type made on or in a path 2026-10-11 03:51:15 +07:00
metafile Part of #637: the editing data's structure read whole, colours, gradients, transparency, names, images and artboards included 2026-10-09 16:02:36 +07:00
pathops Review: rustfmt; ROADMAP progress log (#1028) 2026-10-11 05:30:41 +07:00
pdf #1032: spot colours defined in Lab keep their Lab values 2026-10-11 07:06:05 +07:00
plugins Fix #832: --automation-read-root and --automation-write-root confine the MCP server's files 2026-10-10 14:27:24 +07:00
render #983: supersample Art Optimized edges in exports 2026-10-11 03:48:03 +07:00
svg Type: Proportional Metrics — full-width glyphs on the font's proportional widths, `palt` (#966) 2026-10-11 07:00:35 +07:00
testkit variables: fix binding lifetime, dataset editing and the missing UI to define 2026-10-10 23:34:21 +07:00
text Build: generated sources are rewritten only when they change 2026-10-11 07:13:32 +07:00
three-d M9: add live Revolve with artboard rotation and lighting controls 2026-10-10 23:44:46 +07:00
tools Gradient mesh: a fill colour recolours the point last clicked (#1050) 2026-10-11 07:13:33 +07:00
trace Image Trace: Flat Logo mode (sub-pixel edges, restored corners, true lines and circles) 2026-10-09 17:57:04 +11:00
ui-egui Review: Corners reuses its messages; i18n; ROADMAP (#1057) 2026-10-11 07:13:37 +07:00