mirror of
https://github.com/storytold/photocraft.git
synced 2026-11-12 13:15:10 +00:00
With painting symmetry on, every pointer event cloned and finished the stroke and each mirrored pass, merged them again, composited the whole stroke and restored each pass's full bounds, so an event cost grew with the area painted so far. StrokeRenderer::composite_union_live merges and composites only the coverage tiles that changed (new dabs, the smoothing tails now and before), leaving exactly the pixels the full merge gave; a mirror joining redraws every tile once.