New features:
- Added support for drawing smooth round rectangles with unequal corner radii.
Bug fixes:
- Fixed thread stack overflow issues in the PNG decoder. (thanks Gamadril for the contribution).
- Multiple fixes for smooth round rectangles:
- Incorrect clipping,
- Rendering of rounded rectangles with very thin outlines,
- Rendering or thick rounded rectangles whose inner radius degrades to zero,
- Interpolation near boundary.
- Pulled the MemoryResouce fix in roo_io.
Performance improvements in dynamic composition:
- Added a streamable version of smooth round rect (which also covers circles, filled circles, and 'tracks'). Significant speedup, ~2.5x, when using StreamableStack compositions.
- Rasterizable stack: drop to streamable stack when a stream is requested, taking advantage of that former optimization.
- Blender: several optimizations, focused on detecting long runs, minimizing the calls to alpha-blending code.
- RectUnion: significantly reduced SPI calls and CPU overhead. Observed 2-3x speedup for medium-to-large writes.
- RasterizableStack: skip partially overlapping layers that happen to be purely transparent.
- Various small optimizations in the StreamableStack.
Tests:
- Added coverage for the PNG and JPEG decoders,
- Improved debuggability of background_fill_optimizer
Full Changelog: 3.1.1...3.1.2