Fixes truecolor images in compiled datafiles.
If you are using compiled datafiles (produced by the dat2s and dat2c
utilities) on a platform that doesn't support constructors (currently any
non GCC-based platform), or if the datafiles contain truecolor images, you
must call this function once after your set the video mode that you will
be using. This will ensure the datafiles are properly initialised in the
first case and convert the color values into the appropriate format in
the second case. It handles flipping between RGB and BGR formats, and
converting between different color depths whenever that can be done
without changing the size of the image (ie. changing 15<->16-bit
hicolor for both bitmaps and RLE sprites, and 24<->32-bit truecolor
for RLE sprites).
Note that you can only call this once and expect it to work correctly,
because after the call the DATAFILE you fixed up is permanently converted
to whatever is the current component ordering for your screen mode. If you
call fixup_datafile again, the function assumes you have a freshly loaded
datafile. It cannot "undo" the previous conversion.
If your program supports changing resolution and/or color depth during
runtime, you have two choices: either call fixup_datafile() just once and
hope that the component ordering and bit depth doesn't change when the
screen mode changes (unlikely). Or, you can reload your datafiles when the
screen mode changes.
The following projects include source code containing this keyword: