# HG changeset patch # User Matti Hamalainen # Date 1526194213 -10800 # Node ID 632f1dbc83eb2705a5ed4634193b09e66589728d # Parent e5be5235e7e1af8deda6e7e3c22af7da4e545ce4 Get rid of some code duplication by merging functionality of certain pixel decoding functions into the generic one. diff -r e5be5235e7e1 -r 632f1dbc83eb tools/lib64fmts.c --- a/tools/lib64fmts.c Sun May 13 09:49:03 2018 +0300 +++ b/tools/lib64fmts.c Sun May 13 09:50:13 2018 +0300 @@ -249,7 +249,7 @@ const int vshift, const int vbitmap, const int raster) { (void) raster; - return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0); + return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0, img->bgcolor); } @@ -404,13 +404,10 @@ vr = raster - 100; } - switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) - { - case 0: return img->extraData[vb][vr] & 15; break; - case 1: return img->screen[vbank][scroffs] >> 4; break; - case 2: return img->screen[vbank][scroffs] & 15; break; - default: return img->color[0][scroffs] & 15; break; - } + return dmC64GetGenericMCPixel( + img, bmoffs, scroffs, vshift, + vbank, vbitmap, 0, + img->extraData[vb][vr] & 15); } @@ -431,13 +428,10 @@ vr = raster - 177; } - switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) - { - case 0: return img->extraData[vb][vr] & 15; break; - case 1: return img->screen[vbank][scroffs] >> 4; break; - case 2: return img->screen[vbank][scroffs] & 15; break; - default: return img->color[0][scroffs] & 15; break; - } + return dmC64GetGenericMCPixel( + img, bmoffs, scroffs, vshift, + vbank, vbitmap, 0, + img->extraData[vb][vr] & 15); } @@ -446,13 +440,11 @@ const int vshift, const int vbitmap, const int raster) { const int vbank = raster & 7; - switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) - { - case 0: return img->extraData[0][raster]; break; - case 1: return img->screen[vbank][scroffs] >> 4; break; - case 2: return img->screen[vbank][scroffs] & 15; break; - default: return img->color[0][scroffs] & 15; break; - } + + return dmC64GetGenericMCPixel( + img, bmoffs, scroffs, vshift, + vbank, vbitmap, 0, + img->extraData[0][raster] & 15); } @@ -460,7 +452,7 @@ const DMC64Image *img, const int bmoffs, const int scroffs, const int vshift, const int vbitmap, const int raster) { - return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, raster & 7, vbitmap, 0); + return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, raster & 7, vbitmap, 0, img->bgcolor); } diff -r e5be5235e7e1 -r 632f1dbc83eb tools/lib64gfx.h --- a/tools/lib64gfx.h Sun May 13 09:49:03 2018 +0300 +++ b/tools/lib64gfx.h Sun May 13 09:50:13 2018 +0300 @@ -277,14 +277,15 @@ static inline Uint8 dmC64GetGenericMCPixel( const DMC64Image *img, const int bmoffs, const int scroffs, - const int vshift, const int vbank, const int vbitmap, const int cbank) + const int vshift, const int vbank, const int vbitmap, const int cbank, + const int bgcolor) { switch ((img->bitmap[vbitmap][bmoffs] >> vshift) & 3) { - case 0: return img->bgcolor; break; - case 1: return img->screen[vbank][scroffs] >> 4; break; - case 2: return img->screen[vbank][scroffs] & 15; break; - default: return img->color[cbank][scroffs] & 15; break; + case 0: return bgcolor; + case 1: return img->screen[vbank][scroffs] >> 4; + case 2: return img->screen[vbank][scroffs] & 15; + default: return img->color[cbank][scroffs] & 15; } } @@ -303,7 +304,7 @@ const int vshift, const int vbitmap, const int raster) { (void) raster; - return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0); + return dmC64GetGenericMCPixel(img, bmoffs, scroffs, vshift, 0, vbitmap, 0, img->bgcolor); }