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 7/26/07, MenTaLguY <mental@...3...> wrote:
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