sRGB fixes, Rust filter refactorings, filter node Rust port
- Fixed two bugs in sRGB surface {un,}linearization: an invalid assert and operating on premultiplied colors.
- Ported the filter node to Rust getting rid of some C code.
- Added a read-only
Pixels
iterator for image surfaces. - Cleaned up the feOffset and feComposite code a little.
- Added some very basic benchmark infrastructure (uses
cargo +nightly bench
) and benchmarks for pixel iteration:
test tests::bench_pixels ... bench: 410,677 ns/iter (+/- 23,236)
test tests::bench_straightforward ... bench: 989,213 ns/iter (+/- 17,722)
test tests::bench_straightforward_getpixel ... bench: 335,038 ns/iter (+/- 9,050)
- Regenerated tests for composite and offset to be able to play with iterators confidently. This means that the reference images contain the half-pixel shift now and should be regenerated once that's fixed.