Skip to content

WIP: Port the composite filter effect to Rust (and some other things)

Ivan Molodetskikh requested to merge YaLTeR/librsvg:composite-to-rust into master

This MR moves some filter-related things around and ports composite to Rust.

As part of porting composite I seem to have fixed a bug in the arithmetic operator where the output would be way too dark (especially visible on a black background). The original code operates integer coefficients and some divisions were probably not quite correct. The new code operates floats.

I'd like some feedback on the refactoring changes (FilterResult, FilterOutput and other things) — the names and the general structure. Also if I did the <number> parsing correctly (the parsers::number() method).

There's an issue with the master branch right now (not this MR): there's some strange bleeding half pixel upwards on the composite test, and it's small enough to not get caught by the test suite (see the current output). Can't regenerate a proper reference image due to that. WIP until that's resolved (#273 (closed)).

Previous (C code) output before the aforementioned issue on the master branch:

filters-composite-02-b-out

Current output:

filters-composite-02-b-out

Reference output:

filters-composite-02-b

Edited by Ivan Molodetskikh

Merge request reports