hget http://plan9.escet.urjc.es/iwp9/banner.png | page
hget http://plan9.escet.urjc.es/iwp9/banner.png | png
(note you wont see the bug if you're not using a 32bpp display)
this doesn't happen in abaco because it doesn't draw the image that png(1)
outputs directly on the screen, it first draws it on a RGB24 image
and then draws that image on the screen
// fd is png(1)'s stdout
i = readimage(display, fd, 1);
i2 = allocimage(display, i->r, RGB24, 0, DNofill);
draw(i2, i2->r, display->black, nil, ZP);
draw(i2, i2->r, i, nil, i->r.min);
freeimage(i);
// now i2 can be draw correctly on the screen
this is not a patch, because I don't know wether png(1) should output
an image that can be draw directly on the screen or page and png (without -d)
should use 2 images.
Russ
it's not about minding or not, it's about having the ability
to do it.
well, I'll try anyway, the bug presents itself differently
with the problematic images, in the one I posted
IWP9's logo the background is white while the rest
appears violet, some other images look screwed
and nothing like what they should look like.
Federico G. Benavento
i posted a little bit on this. the problem is these two lines in png.c:
165 if(defaultcolor && screen->depth>8 && outchan==CMAP8)
166 outchan = RGB24;
if they are commented out (and i think if you replace RGB24 with RGBA32),
the image appears correctly. using the v flag also works (for the wrong reasons).
the problem is in the conversion from the ABGR rawimage to RGB24. i hadn't
narrowed down where the problem occurs.
- erik