well... I have tested it using the folowing code inside the renderer method:
for (x=x0; x < x1; x++){
for (y=y0; y < y1; y++){
alpha = (unsigned int) map_data[4*((x-x0) + width*(y-y0)) + 3];
if ((unsigned int) map_data[4*((x-x0) + width*(y-y0))] > alpha ||
(unsigned int) map_data[4*((x-x0) + width*(y-y0)) + 1] > alpha ||
(unsigned int) map_data[4*((x-x0) + width*(y-y0)) + 2] > alpha)
printf("I found a pixel with R,G or B greater than alpha!\n");
}
}
when I select the .svg file on the file-section dialog I see this:
** (inkscape:28789): WARNING **: FIX-ME: FilterDisplacementMap::render method is still a bit buggy. Needs Love.
I found a pixel with R,G or B greater than alpha!
** (inkscape:28789): WARNING **: FIX-ME: FilterDisplacementMap::render method is still a bit buggy. Needs Love.
I found a pixel with R,G or B greater than alpha!
(the g_warning is at the beginning of the renderer method)
and after opening the file:
** (inkscape:28789): WARNING **: FIX-ME: FilterDisplacementMap::render method is still a bit buggy. Needs Love.
** (inkscape:28789): WARNING **: FIX-ME: FilterDisplacementMap::render method is still a bit buggy. Needs Love.
** (inkscape:28789): WARNING **: FIX-ME: FilterDisplacementMap::render method is still a bit buggy. Needs Love.
This is nice! Apparently the input buffer is indeed premultiplied.
I got puzzled by the single pixel that seems to have triggered the message during preview
On Wed, 2007-07-25 at 23:30 -0300, Felipe Sanches wrote:
> well...
>
> map->mode == NR_PIXBLOCK_MODE_R8G8B8A8P returns true
But are you sure the data is premultiplied? :) The problem is that I
suspect sometimes we are populating such pixblocks with
non-premultiplied data...
(it should be easy to check, in principle -- premultiplied data should
never have any color components greater than the alpha component)
-mental