effectcraft/crates
dotCooCoo 767120f6ca EPS: arc and arcn with huge angles no longer hang the import
arc added 2π to its sweep in a loop until the sweep was no longer
negative, and arcn subtracted 2π the same way. For an angle of 10^18
degrees the loop took about 3e15 passes, and from 2^56 radians (about
4.1e18 degrees) up, adding 2π left the sweep unchanged and the loop
never ended. A sweep that needed no loop, as in 0 10^18 arc, was passed
unchanged to kurbo, which divides it into more than 1e16 curves (about
four per turn at a radius of 10), and arc appended each curve to the
path. Importing an EPS file probes it with effectcraft_pdf::parse,
which has no time limit, so importing such a file did not finish.

As in storytold/vectorcraft#1062, every arc now starts at the first
angle's remainder after whole turns, and when the second angle is below
the first (arc) or above it (arcn), the sweep is worked out from the
two angles' remainders. A sweep of up to 1,024 turns is drawn whole.
For a longer one, the import records a skip note
("arc (too many turns)") and leaves out whole pairs of turns, so that
between 1,022 and 1,024 turns remain. The arc still ends at the second
angle, and an even-odd fill covers the same area as the full sweep.

Arcs of up to 1,024 turns whose angles are within about 10^6 degrees
are unchanged apart from rounding, except some whose angles are a whole
number of turns apart or within rounding of that. For larger angles,
the old conversion to radians lost precision: at 10^15 degrees, a
quarter-turn arc swept 1.5723 radians instead of 1.5708.

When raising (arc) or lowering (arcn) the second angle by whole turns
makes it equal to the first, as in 7 -353 arc or 2 362 arcn, rounding
sometimes made the old loop add a turn and draw a full circle. Those
arcs are now empty, as the PostScript Language Reference defines them.
When the raised or lowered angle falls just short of the first
instead, the reference defines a full circle, and each version leaves
some of these arcs empty: the old code drew nothing for
125.00000000000001 125 arc, which the new code draws as a full circle,
and the new code draws nothing for 1.0000000000000002 -719 arc, which
the old code drew as a full circle.

arcs_with_huge_angles_end_at_their_second_angle parses each program on
a thread of its own and fails when no result arrives within 20 seconds.
2026-10-12 08:35:18 -07:00
..
automation #741: font menu filters to variable fonts 2026-10-11 12:14:50 +02:00
av1enc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
color Blend modes: classic modes fade with opacity and HDR modes keep over-range values, as in After Effects (#494) 2026-10-10 20:51:24 +00:00
effects Merge pull request #686 from vbasky/fix/659-text-effect-bounds 2026-10-12 04:21:15 -04:00
engine Merge pull request #987 from Losminek/cs-ui 2026-10-12 05:22:10 -04:00
export #372: uncompressed QuickTime (raw RGB / ARGB) output module format 2026-10-11 12:43:33 +02:00
expr #786: make the expression budget tests independent of machine load 2026-10-11 20:52:39 +02:00
geom Never crash: deny panic lints in the already-clean crates and apps 2026-10-04 14:52:39 -04:00
gpu Merge pull request #686 from vbasky/fix/659-text-effect-bounds 2026-10-12 04:21:15 -04:00
hevcenc Untrack crates/hevcenc/target (36 MB of build output) and ignore nested target/ 2026-10-06 15:02:20 -04:00
host Merge pull request #677 from vbasky/test/651-gif-preview 2026-10-12 03:02:39 -04:00
interchange Never crash: reject timeline documents nested too deeply 2026-10-04 14:05:57 -04:00
keyframe Merge pull request #883 from vangel76/fix-880-spatial-nan 2026-10-12 04:20:41 -04:00
lottie G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
media Integration fixes for the community batch 2026-10-12 04:27:59 -04:00
model Merge follow-up: model description and gaps row 17 after the import PRs 2026-10-12 03:20:48 -04:00
opusenc G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
path G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
pdf EPS: arc and arcn with huge angles no longer hang the import 2026-10-12 08:35:18 -07:00
plugin G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
project Merge pull request #462 from storytold/fix/417-viewer-resolution 2026-10-12 04:21:14 -04:00
psd Lint: clippy's collapsible_match passes on Rust 1.95 2026-10-10 16:54:16 -04:00
raster Effects: EXtractoR picks layers and channels of multi-layer EXRs (#295) 2026-10-09 17:32:09 +07:00
render Merge pull request #983 from MarekSpodBiedry/issue-974 2026-10-12 05:21:55 -04:00
script Merge pull request #895 from MarekSpodBiedry/issue-837 2026-10-12 04:20:47 -04:00
segment Merge pull request #374 from storytold/fix/368-tflite-budgets 2026-10-09 09:25:24 -04:00
svg SVG: percentages inside a nested <svg> resolve against its own viewport 2026-10-11 22:36:43 -05:00
text Merge pull request #876 from vangel76/fix-874-linux-font-dirs 2026-10-12 04:20:39 -04:00
time G3: fix frame-rate boundaries and bounded timecode arithmetic 2026-10-10 06:40:02 +10:00
track G2: improve editing reliability and Windows rendering fidelity 2026-10-06 00:00:31 -05:00
ui-egui i18n: Czech entries for the extrusion Front/Bevel/Side/Back Color submenus 2026-10-12 05:30:10 -04:00
vp9enc VP9: frames never end in a byte that reads as a superframe marker (#161) 2026-10-07 14:15:33 +07:00