mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-30 21:07:04 -06:00
* Drop f32 round-off coverage in the vector rasterizer (#2537) Each row's cell accumulator is prefix-summed in f32. A left boundary adds coverage and the right boundary subtracts it, but for curved or off-grid edges the two don't cancel exactly, leaving ~1e-7 coverage in the pixel just past the shape. Shape layers wrote the fill colour there (alpha rounding to 0 at 8/16-bit, ~1e-7 at 32-bit), so content bounds and shape.info reported curved shapes one pixel too wide. Snap coverage below 1e-6 to 0 when writing a row. That is under half a 16-bit step, so 8- and 16-bit coverage values are unchanged; only the residue pixels go away. Selections, vector masks and strokes share the rasterizer and get the same fix. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Rasterizer: NaN coverage becomes 0, not full (#2537) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Fabio Lussi <198260595+itrycodinganditsbad@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>