I've been using the -LE32 switch to generate Clie NX
skin 8-bit bitmaps. Unfortunately, with that switch the
bitmaps generated have rcbmpv3->pixelFormat =
pixelFormatIndexedLE. That doesn't seem to work with
Sony Graffiti/Statusbar skins. I don't know if it's
because of some bug in pilrc that makes it generate
pixelFormatIndexed bitmaps even if the
pixelFormatIndexedLE marker is set (I don't know what
the difference is in the 8 bit case is anyway). To work
Sony NX skins, I added for myself a -SonySkin option
and then changed BMP_FillBitmapV3Header() to read:
if (vfLE32 && !vfSonySkin)
{
if (rcbmp->pixelsize <= 8)
rcbmpv3->pixelFormat = pixelFormatIndexedLE;
else
rcbmpv3->pixelFormat = pixelFormat565LE;
}
else
{
if (rcbmp->pixelsize <= 8)
rcbmpv3->pixelFormat = pixelFormatIndexed;
else
rcbmpv3->pixelFormat = pixelFormat565;
}
Logged In: YES
user_id=756930
Further investigation shows that big-endian bitmaps are
generated even in -LE32 mode, and even though
pixelFormat*LE is the flag set. The result is that the bitmaps
crash on drawing.
A simple workaround is to generate big-endian bitmaps in -
LE32 mode and just always set pixelFormatIndexed or
pixelFormat565, regardless of whether LE32 mode is set or
not.
This is a straightforward fix that would make the bitmaps
immediately functional. It would mean that I wouldn't have
to distribute my own custom-patched pilrc to people who are
making Sony or Palm DIA skins. :-)