changeset 1577:632f1dbc83eb

Get rid of some code duplication by merging functionality of certain pixel decoding functions into the generic one.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 13 May 2018 09:50:13 +0300
parents e5be5235e7e1
children fb60abb09a65
files tools/lib64fmts.c tools/lib64gfx.h
diffstat 2 files changed, 22 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- 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);
 }
 
 
--- 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);
 }