mirror of
https://github.com/storytold/effectcraft.git
synced 2026-11-12 21:32:52 +00:00
* fix(svg): support static SVG patterns * fix(svg): cache patterns per viewport * fix(svg): share cached pattern content * fix(svg): harden pattern cache keys * fix(svg): harden pattern inheritance and caching * Preserve SVG pattern fallback paint * Format SVG pattern fallback conversion * Harden SVG pattern resource bounds * Fix SVG pattern test formatting * fix(svg): bound hostile path and raster work * Bound SVG ellipse expansion * fix(ui-egui): suppress clippy warnings on wasm target Rename unused `frame` parameter to `_frame` in draw_inner since pointer_wrap::finish_native is cfg'd out on wasm32. Guard State::disabled field with #[cfg(any(not(target_arch = "wasm32"), test))] so it only exists where it's read (finish_frame on native + tests). * fix: resolve clippy warnings blocking CI - Rename unused `frame` parameter to `_frame` in draw_inner (wasm target) - Guard State::disabled field with cfg(native + test) (wasm target) - Replace chunks_exact(2) with as_chunks::<2>() in SVG polyline/polygon parsing * fix(svg): budget raster work by affected region and report refusals Address review on #2732: the finite-work guards charged the whole canvas, dropping valid sparse art (8x8 image scaled to 1px on 2049x2049, 2x2 rect under a 1,028-element clip on 512x512, one of six 2x2 rects sharing a 1x1 pattern on 3840x2160). - Build fill/stroke/image/clip coverage over the device region only and charge that region; remaining whole-canvas passes are charged to a render-wide pixel budget (caps are not raised). - Add try_rasterize/try_rasterize_with returning RasterError; rasterize keeps its signature. media layered decode now surfaces refusals. - Pattern content reached through href inherits styles from the owning pattern; device_region falls back to the full canvas on non-finite input. - Document new items and the limits in the svg README; regression tests. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>