Skip to content

Show color output for feColorMatrix with in=SourceAlpha

Nathan Lee requested to merge nathanal/inkscape:ink1147 into master

Allows filter primitive to store color and alpha, even if input only stores alpha (since color matrix may add color)

Fix #1147 (closed)


The issue turns out to be quite simple, when in=Source alpha, the cairo_surface_t is of type CAIRO_CONTENT_ALPHA, i.e. it doesn't store the color value. The out cairo_surface_t is of the same type, so while we calculate the correct color, we only store the alpha value.

Other filter primitives explicitly set out to CAIRO_CONTENT_COLOR_ALPHA already (see for example https://gitlab.com/inkscape/inkscape/-/blob/608fe7bbae98356ef1878e00f7360e637b677b73/src/display/nr-filter-component-transfer.cpp#L152). I didn't check them all, just the first few filter primitives.

I found that I had to remove the claim that there is no path for bppin == 1, bppout == 4 because it is useless (found in ink_cairo_surface_filter) in order to get this to work

Merge request reports