| [AD] Possible problem with dithering 24-bit bitmaps containing bright pink |
[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]
Hi,
Somebody on SourceForge has discovered what I believe to be a bug in the
dithering routines. For the discussion thus far, please visit (sorry,
should be all one line) :
http://sourceforge.net/tracker/?func=detail&atid=105665&aid=232260&gro
up_id=5665
Basically, when converting from a 24-bit bitmap containing bright pink
(RGB of 255,0,255) to an 8-bit bitmap (the example was in the grabber),
then a slightly off-pink color (in the bitmap I tested, this was
242,0,242) is added to the resulting palette and most of the pink in the
bitmap becomes this color.
If you want to test this for yourself, find a 24-bit bitmap with
255,0,255 pink (or simply fill some areas in an existing picture), and
read it into the grabber with `Read bitmap'. Create a palette object and
go to `Grab'. Then save the palette out and look at it in your favourite
paint program. You should see a slightly off-pink color. If you convert
the bitmap down to 8-bit, the pink areas in the bitmap are this off-pink
color.
The question is: what should we do? The options I see are:
* don't do anything
- bitmaps using bright pink for transparency (which is Allegro's
behaviour when using masked_blit() and the sprite routines) are
converted completely incorrectly.
+ bitmaps not using bright pink for transparency are converted
correctly.
+ we don't have to do any work :-)
* change the `dither_blit()' routine in src/blit.c (I think this is
the culprit)
- bitmaps using bright pink as a color to be displayed are now
converted incorrectly.
- dithering would be slowed due to additional tests.
+ transparency is restored.
This can be achieved by ensuring that color 0 in the resulting
optimised palette is always 255,0,255; and by ensuring that any
255,0,255 pixels in the original bitmap are always converted to
color 0; and that adjacent pixels are not affected by any pixels
of 255,0,255.
* add a new routine, which can be used at the user's discretion
- increased complexity in API, since we have to provide some
mechanism of choosing between them.
+ best of both worlds; behaviour is correct.
Anyway, please let me know what you think. Bye for now,
--
Laurence Withers, lwithers@xxxxxxxxxx
http://www.lwithers.demon.co.uk/
Attachment:
signature.asc
Description: PGP signature
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |