Mercurial > hg > dmlib
diff tools/lib64gfx.h @ 2345:fe025c461760
Move pixel helper functions from being inline in lib64gfx.h to lib64gfx.c
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 08 Oct 2019 14:49:00 +0300 |
parents | 94a653883a32 |
children | 82cb32297ed2 |
line wrap: on
line diff
--- a/tools/lib64gfx.h Wed Sep 25 12:13:28 2019 +0300 +++ b/tools/lib64gfx.h Tue Oct 08 14:49:00 2019 +0300 @@ -484,125 +484,33 @@ // -// Inline helper functions for pixel format decoding +// Pixel format helpers // -static inline int dmC64GetGenericSCPixel(Uint8 *col, +int dmC64GetGenericSCPixel(Uint8 *col, const DMC64Image *img, const int bmoffs, const int scroffs, - const int vshift, const int vbank, const int bitmap) -{ - if ((img->bitmap[bitmap].data[bmoffs] >> vshift) & 1) - *col = img->screen[vbank].data[scroffs] >> 4; - else - *col = img->screen[vbank].data[scroffs] & 15; + const int vshift, const int vbank, const int bitmap); - return DMERR_OK; -} - - -static inline int dmC64GetGenericMCPixel(Uint8 *col, +int dmC64GetGenericMCPixel(Uint8 *col, const DMC64Image *img, const int bmoffs, const int scroffs, const int vshift, const int vbank, const int bitmap, - const int cbank, const int bgcolor) -{ - switch ((img->bitmap[bitmap].data[bmoffs] >> vshift) & 3) - { - case 0: *col = bgcolor & 15; break; - case 1: *col = img->screen[vbank].data[scroffs] >> 4; break; - case 2: *col = img->screen[vbank].data[scroffs] & 15; break; - default: *col = img->color[cbank].data[scroffs] & 15; break; - } + const int cbank, const int bgcolor); - return DMERR_OK; -} - - -static inline int dmC64GetGenericCharSCPixel(Uint8 *col, +int dmC64GetGenericCharSCPixel(Uint8 *col, const DMC64Image *img, const int scroffs, const int rasterX, const int chrbank, const size_t chroffs, const int chr, - const int cbank, const int bgcolor) -{ - if (chroffs >= img->charData[chrbank].size) - { - return dmError(DMERR_INVALID_DATA, - "Character map index #%d out of bounds for char ROM data.\n", - chr); - } + const int cbank, const int bgcolor); - const int vshift = 7 - (rasterX & 7); - if ((img->charData[chrbank].data[chroffs] >> vshift) & 1) - *col = img->color[cbank].data[scroffs] & 15; - else - *col = bgcolor & 15; - - return DMERR_OK; -} - - -static inline int dmC64GetGenericCharMCPixel(Uint8 *col, +int dmC64GetGenericCharMCPixel(Uint8 *col, const DMC64Image *img, const int scroffs, const int rasterX, const int chrbank, const size_t chroffs, const int chr, const int cbank, const int bgcolor, - const int bgd022, const int bgd023) -{ - if (chroffs >= img->charData[chrbank].size) - { - return dmError(DMERR_INVALID_DATA, - "Character map index #%d out of bounds for char ROM data.\n", - chr); - } + const int bgd022, const int bgd023); - const int ccol = img->color[cbank].data[scroffs]; - if (ccol & 8) - { - const int vshift = 6 - (rasterX & 6); - switch ((img->charData[chrbank].data[chroffs] >> vshift) & 3) - { - case 0: *col = bgcolor & 15; break; - case 1: *col = bgd022 & 15; break; - case 2: *col = bgd023 & 15; break; - case 3: *col = ccol & 7; - } - } - else - { - const int vshift = 7 - (rasterX & 7); - if ((img->charData[chrbank].data[chroffs] >> vshift) & 1) - *col = ccol & 7; - else - *col = bgcolor & 15; - } - - return DMERR_OK; -} - - -static inline int dmC64GetGenericCharECMPixel(Uint8 *col, +int dmC64GetGenericCharECMPixel(Uint8 *col, const DMC64Image *img, const int scroffs, const int rasterX, const int chrbank, const size_t chroffs, const int chr, const int cbank, const int bgcolor, - const int bgd022, const int bgd023, const int bgd024) -{ - if (chroffs >= img->charData[0].size) - { - return dmError(DMERR_INVALID_DATA, - "Character map index #%d out of bounds for char ROM data.\n", - chr); - } - - const int vshift = 7 - (rasterX & 7); - if ((img->charData[chrbank].data[chroffs] >> vshift) & 1) - *col = img->color[cbank].data[scroffs] & 15; - else - switch ((chr >> 6) & 3) - { - case 0: *col = bgcolor & 15; break; - case 1: *col = bgd022 & 15; break; - case 2: *col = bgd023 & 15; break; - case 3: *col = bgd024 & 15; break; - } - - return DMERR_OK; -} + const int bgd022, const int bgd023, const int bgd024); static inline const DMC64EncDecOp * fmtGetEncDecOp(const DMC64ImageFormat *fmt, const int index)