vectorcraft/crates
mateususa ae9cd2a03c #819: more noise removal never gives more paths
Remove Noise merged each small component into its most common neighbour
in one pass. When a speck was merged into a small region that was itself
merged away later, the region's flood fill skipped the speck's pixels
(already seen), so they stayed behind as a new island of the region's old
label. Higher Noise values merge more regions, so they left more such
islands: on noisy images the path count rose with Noise (70 -> 126 -> 206
paths from Noise 50 to 200 on one test image). denoise now repeats its pass
until one changes nothing; each merge joins two components, so it ends
(with a cap of 64 passes as a backstop). Labels shorter than w x h are left
alone instead of indexed past their end.

Tests: the minimal one-row case, a property test on random blocky noise
(no mergeable region under the minimum is left, and a larger minimum never
leaves more regions), and two noisy images whose path count must not rise
with Noise (both fail without the fix).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 16:00:31 +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 Review: palette writing keeps the swatches PaletteFormat::holds names; ROADMAP (#1110) 2026-10-11 11:33:07 +07:00
doc Type: Proportional Metrics in vertical type — upright glyphs on the font's proportional heights, `vpal` (#966) 2026-10-11 12:24:45 +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 #788: file.place frames an SVG by its viewBox when crop is given 2026-10-11 14:58:33 +07:00
eps #1102: an EPS keeps its page and stacked text strokes through its layers 2026-10-11 11:03:11 +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 Align, Reflect and Shear: object.align needs a direction; unknown choices are errors 2026-10-11 11:33:03 +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 #893: merge Shape Builder faces in the planar map 2026-10-11 12:24:44 +07:00
pdf PDF/.ai import: glyphs spaced each their own way keep their place 2026-10-11 12:24:46 +07:00
plugins Review: a whole number past i64::MAX is past any maximum; ROADMAP (#1091) 2026-10-11 12:24:46 +07:00
render UI.6: reconcile shared docking with native panel sets 2026-10-10 19:28:31 -06: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 Type: Proportional Metrics in vertical type — upright glyphs on the font's proportional heights, `vpal` (#966) 2026-10-11 12:24:45 +07:00
three-d M9: add live Revolve with artboard rotation and lighting controls 2026-10-10 23:44:46 +07:00
tools Part of #812: Ctrl/Cmd and Alt shape a star while it's dragged 2026-10-11 14:59:05 +07:00
trace #819: more noise removal never gives more paths 2026-10-11 16:00:31 +07:00
ui-egui Review: a headless test of the font menu's highlight across a list rebuild (#1116) 2026-10-11 16:00:28 +07:00