Revert "change SDL 1.2 to SDL 2.0"
[platform/upstream/SDL.git] / src / video / SDL_blit_1.c
index 69c15d0..7f95f5b 100644 (file)
@@ -1,24 +1,25 @@
 /*
-  Simple DirectMedia Layer
-  Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org>
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
+    SDL - Simple DirectMedia Layer
+    Copyright (C) 1997-2012 Sam Lantinga
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+    Sam Lantinga
+    slouken@libsdl.org
 */
-#include "../SDL_internal.h"
+#include "SDL_config.h"
 
 #include "SDL_video.h"
 #include "SDL_blit.h"
 
 /* Functions to blit from 8-bit surfaces to other surfaces */
 
-static void
-Blit1to1(SDL_BlitInfo * info)
+static void Blit1to1(SDL_BlitInfo *info)
 {
 #ifndef USE_DUFFS_LOOP
-    int c;
+       int c;
 #endif
-    int width, height;
-    Uint8 *src, *map, *dst;
-    int srcskip, dstskip;
-
-    /* Set up some basic variables */
-    width = info->dst_w;
-    height = info->dst_h;
-    src = info->src;
-    srcskip = info->src_skip;
-    dst = info->dst;
-    dstskip = info->dst_skip;
-    map = info->table;
-
-    while (height--) {
+       int width, height;
+       Uint8 *src, *map, *dst;
+       int srcskip, dstskip;
+
+       /* Set up some basic variables */
+       width = info->d_width;
+       height = info->d_height;
+       src = info->s_pixels;
+       srcskip = info->s_skip;
+       dst = info->d_pixels;
+       dstskip = info->d_skip;
+       map = info->table;
+
+       while ( height-- ) {
 #ifdef USE_DUFFS_LOOP
-        /* *INDENT-OFF* */
                DUFFS_LOOP(
                        {
                          *dst = map[*src];
@@ -56,19 +55,17 @@ Blit1to1(SDL_BlitInfo * info)
                        dst++;
                        src++;
                , width);
-        /* *INDENT-ON* */
 #else
-        for (c = width; c; --c) {
-            *dst = map[*src];
-            dst++;
-            src++;
-        }
+               for ( c=width; c; --c ) {
+                       *dst = map[*src];
+                       dst++;
+                       src++;
+               }
 #endif
-        src += srcskip;
-        dst += dstskip;
-    }
+               src += srcskip;
+               dst += dstskip;
+       }
 }
-
 /* This is now endian dependent */
 #if ( SDL_BYTEORDER == SDL_LIL_ENDIAN )
 #define HI     1
@@ -77,136 +74,136 @@ Blit1to1(SDL_BlitInfo * info)
 #define HI     0
 #define LO     1
 #endif
-static void
-Blit1to2(SDL_BlitInfo * info)
+static void Blit1to2(SDL_BlitInfo *info)
 {
 #ifndef USE_DUFFS_LOOP
-    int c;
+       int c;
 #endif
-    int width, height;
-    Uint8 *src, *dst;
-    Uint16 *map;
-    int srcskip, dstskip;
-
-    /* Set up some basic variables */
-    width = info->dst_w;
-    height = info->dst_h;
-    src = info->src;
-    srcskip = info->src_skip;
-    dst = info->dst;
-    dstskip = info->dst_skip;
-    map = (Uint16 *) info->table;
+       int width, height;
+       Uint8 *src, *dst;
+       Uint16 *map;
+       int srcskip, dstskip;
+
+       /* Set up some basic variables */
+       width = info->d_width;
+       height = info->d_height;
+       src = info->s_pixels;
+       srcskip = info->s_skip;
+       dst = info->d_pixels;
+       dstskip = info->d_skip;
+       map = (Uint16 *)info->table;
 
 #ifdef USE_DUFFS_LOOP
-    while (height--) {
-               /* *INDENT-OFF* */
+       while ( height-- ) {
                DUFFS_LOOP(
                {
                        *(Uint16 *)dst = map[*src++];
                        dst += 2;
                },
                width);
-               /* *INDENT-ON* */
-        src += srcskip;
-        dst += dstskip;
-    }
+               src += srcskip;
+               dst += dstskip;
+       }
 #else
-    /* Memory align at 4-byte boundary, if necessary */
-    if ((long) dst & 0x03) {
-        /* Don't do anything if width is 0 */
-        if (width == 0) {
-            return;
-        }
-        --width;
-
-        while (height--) {
-            /* Perform copy alignment */
-            *(Uint16 *) dst = map[*src++];
-            dst += 2;
-
-            /* Copy in 4 pixel chunks */
-            for (c = width / 4; c; --c) {
-                *(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
-                src += 2;
-                dst += 4;
-                *(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
-                src += 2;
-                dst += 4;
-            }
-            /* Get any leftovers */
-            switch (width & 3) {
-            case 3:
-                *(Uint16 *) dst = map[*src++];
-                dst += 2;
-            case 2:
-                *(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
-                src += 2;
-                dst += 4;
-                break;
-            case 1:
-                *(Uint16 *) dst = map[*src++];
-                dst += 2;
-                break;
-            }
-            src += srcskip;
-            dst += dstskip;
-        }
-    } else {
-        while (height--) {
-            /* Copy in 4 pixel chunks */
-            for (c = width / 4; c; --c) {
-                *(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
-                src += 2;
-                dst += 4;
-                *(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
-                src += 2;
-                dst += 4;
-            }
-            /* Get any leftovers */
-            switch (width & 3) {
-            case 3:
-                *(Uint16 *) dst = map[*src++];
-                dst += 2;
-            case 2:
-                *(Uint32 *) dst = (map[src[HI]] << 16) | (map[src[LO]]);
-                src += 2;
-                dst += 4;
-                break;
-            case 1:
-                *(Uint16 *) dst = map[*src++];
-                dst += 2;
-                break;
-            }
-            src += srcskip;
-            dst += dstskip;
-        }
-    }
+       /* Memory align at 4-byte boundary, if necessary */
+       if ( (long)dst & 0x03 ) {
+               /* Don't do anything if width is 0 */
+               if ( width == 0 ) {
+                       return;
+               }
+               --width;
+
+               while ( height-- ) {
+                       /* Perform copy alignment */
+                       *(Uint16 *)dst = map[*src++];
+                       dst += 2;
+
+                       /* Copy in 4 pixel chunks */
+                       for ( c=width/4; c; --c ) {
+                               *(Uint32 *)dst =
+                                       (map[src[HI]]<<16)|(map[src[LO]]);
+                               src += 2;
+                               dst += 4;
+                               *(Uint32 *)dst =
+                                       (map[src[HI]]<<16)|(map[src[LO]]);
+                               src += 2;
+                               dst += 4;
+                       }
+                       /* Get any leftovers */
+                       switch (width & 3) {
+                               case 3:
+                                       *(Uint16 *)dst = map[*src++];
+                                       dst += 2;
+                               case 2:
+                                       *(Uint32 *)dst =
+                                         (map[src[HI]]<<16)|(map[src[LO]]);
+                                       src += 2;
+                                       dst += 4;
+                                       break;
+                               case 1:
+                                       *(Uint16 *)dst = map[*src++];
+                                       dst += 2;
+                                       break;
+                       }
+                       src += srcskip;
+                       dst += dstskip;
+               }
+       } else { 
+               while ( height-- ) {
+                       /* Copy in 4 pixel chunks */
+                       for ( c=width/4; c; --c ) {
+                               *(Uint32 *)dst =
+                                       (map[src[HI]]<<16)|(map[src[LO]]);
+                               src += 2;
+                               dst += 4;
+                               *(Uint32 *)dst =
+                                       (map[src[HI]]<<16)|(map[src[LO]]);
+                               src += 2;
+                               dst += 4;
+                       }
+                       /* Get any leftovers */
+                       switch (width & 3) {
+                               case 3:
+                                       *(Uint16 *)dst = map[*src++];
+                                       dst += 2;
+                               case 2:
+                                       *(Uint32 *)dst =
+                                         (map[src[HI]]<<16)|(map[src[LO]]);
+                                       src += 2;
+                                       dst += 4;
+                                       break;
+                               case 1:
+                                       *(Uint16 *)dst = map[*src++];
+                                       dst += 2;
+                                       break;
+                       }
+                       src += srcskip;
+                       dst += dstskip;
+               }
+       }
 #endif /* USE_DUFFS_LOOP */
 }
-
-static void
-Blit1to3(SDL_BlitInfo * info)
+static void Blit1to3(SDL_BlitInfo *info)
 {
 #ifndef USE_DUFFS_LOOP
-    int c;
+       int c;
 #endif
-    int o;
-    int width, height;
-    Uint8 *src, *map, *dst;
-    int srcskip, dstskip;
-
-    /* Set up some basic variables */
-    width = info->dst_w;
-    height = info->dst_h;
-    src = info->src;
-    srcskip = info->src_skip;
-    dst = info->dst;
-    dstskip = info->dst_skip;
-    map = info->table;
-
-    while (height--) {
+       int o;
+       int width, height;
+       Uint8 *src, *map, *dst;
+       int srcskip, dstskip;
+
+       /* Set up some basic variables */
+       width = info->d_width;
+       height = info->d_height;
+       src = info->s_pixels;
+       srcskip = info->s_skip;
+       dst = info->d_pixels;
+       dstskip = info->d_skip;
+       map = info->table;
+
+       while ( height-- ) {
 #ifdef USE_DUFFS_LOOP
-               /* *INDENT-OFF* */
                DUFFS_LOOP(
                        {
                                o = *src * 4;
@@ -217,85 +214,78 @@ Blit1to3(SDL_BlitInfo * info)
                        src++;
                        dst += 3;
                , width);
-               /* *INDENT-ON* */
 #else
-        for (c = width; c; --c) {
-            o = *src * 4;
-            dst[0] = map[o++];
-            dst[1] = map[o++];
-            dst[2] = map[o++];
-            src++;
-            dst += 3;
-        }
+               for ( c=width; c; --c ) {
+                       o = *src * 4;
+                       dst[0] = map[o++];
+                       dst[1] = map[o++];
+                       dst[2] = map[o++];
+                       src++;
+                       dst += 3;
+               }
 #endif /* USE_DUFFS_LOOP */
-        src += srcskip;
-        dst += dstskip;
-    }
+               src += srcskip;
+               dst += dstskip;
+       }
 }
-
-static void
-Blit1to4(SDL_BlitInfo * info)
+static void Blit1to4(SDL_BlitInfo *info)
 {
 #ifndef USE_DUFFS_LOOP
-    int c;
+       int c;
 #endif
-    int width, height;
-    Uint8 *src;
-    Uint32 *map, *dst;
-    int srcskip, dstskip;
-
-    /* Set up some basic variables */
-    width = info->dst_w;
-    height = info->dst_h;
-    src = info->src;
-    srcskip = info->src_skip;
-    dst = (Uint32 *) info->dst;
-    dstskip = info->dst_skip / 4;
-    map = (Uint32 *) info->table;
-
-    while (height--) {
+       int width, height;
+       Uint8 *src;
+       Uint32 *map, *dst;
+       int srcskip, dstskip;
+
+       /* Set up some basic variables */
+       width = info->d_width;
+       height = info->d_height;
+       src = info->s_pixels;
+       srcskip = info->s_skip;
+       dst = (Uint32 *)info->d_pixels;
+       dstskip = info->d_skip/4;
+       map = (Uint32 *)info->table;
+
+       while ( height-- ) {
 #ifdef USE_DUFFS_LOOP
-               /* *INDENT-OFF* */
                DUFFS_LOOP(
                        *dst++ = map[*src++];
                , width);
-               /* *INDENT-ON* */
 #else
-        for (c = width / 4; c; --c) {
-            *dst++ = map[*src++];
-            *dst++ = map[*src++];
-            *dst++ = map[*src++];
-            *dst++ = map[*src++];
-        }
-        switch (width & 3) {
-        case 3:
-            *dst++ = map[*src++];
-        case 2:
-            *dst++ = map[*src++];
-        case 1:
-            *dst++ = map[*src++];
-        }
+               for ( c=width/4; c; --c ) {
+                       *dst++ = map[*src++];
+                       *dst++ = map[*src++];
+                       *dst++ = map[*src++];
+                       *dst++ = map[*src++];
+               }
+               switch ( width & 3 ) {
+                       case 3:
+                               *dst++ = map[*src++];
+                       case 2:
+                               *dst++ = map[*src++];
+                       case 1:
+                               *dst++ = map[*src++];
+               }
 #endif /* USE_DUFFS_LOOP */
-        src += srcskip;
-        dst += dstskip;
-    }
+               src += srcskip;
+               dst += dstskip;
+       }
 }
 
-static void
-Blit1to1Key(SDL_BlitInfo * info)
+static void Blit1to1Key(SDL_BlitInfo *info)
 {
-    int width = info->dst_w;
-    int height = info->dst_h;
-    Uint8 *src = info->src;
-    int srcskip = info->src_skip;
-    Uint8 *dst = info->dst;
-    int dstskip = info->dst_skip;
-    Uint8 *palmap = info->table;
-    Uint32 ckey = info->colorkey;
-
-    if (palmap) {
-        while (height--) {
-                       /* *INDENT-OFF* */
+       int width = info->d_width;
+       int height = info->d_height;
+       Uint8 *src = info->s_pixels;
+       int srcskip = info->s_skip;
+       Uint8 *dst = info->d_pixels;
+       int dstskip = info->d_skip;
+       Uint8 *palmap = info->table;
+       Uint32 ckey = info->src->colorkey;
+        
+       if ( palmap ) {
+               while ( height-- ) {
                        DUFFS_LOOP(
                        {
                                if ( *src != ckey ) {
@@ -305,13 +295,11 @@ Blit1to1Key(SDL_BlitInfo * info)
                                src++;
                        },
                        width);
-                       /* *INDENT-ON* */
-            src += srcskip;
-            dst += dstskip;
-        }
-    } else {
-        while (height--) {
-                       /* *INDENT-OFF* */
+                       src += srcskip;
+                       dst += dstskip;
+               }
+       } else {
+               while ( height-- ) {
                        DUFFS_LOOP(
                        {
                                if ( *src != ckey ) {
@@ -321,30 +309,27 @@ Blit1to1Key(SDL_BlitInfo * info)
                                src++;
                        },
                        width);
-                       /* *INDENT-ON* */
-            src += srcskip;
-            dst += dstskip;
-        }
-    }
+                       src += srcskip;
+                       dst += dstskip;
+               }
+       }
 }
 
-static void
-Blit1to2Key(SDL_BlitInfo * info)
+static void Blit1to2Key(SDL_BlitInfo *info)
 {
-    int width = info->dst_w;
-    int height = info->dst_h;
-    Uint8 *src = info->src;
-    int srcskip = info->src_skip;
-    Uint16 *dstp = (Uint16 *) info->dst;
-    int dstskip = info->dst_skip;
-    Uint16 *palmap = (Uint16 *) info->table;
-    Uint32 ckey = info->colorkey;
-
-    /* Set up some basic variables */
-    dstskip /= 2;
-
-    while (height--) {
-               /* *INDENT-OFF* */
+       int width = info->d_width;
+       int height = info->d_height;
+       Uint8 *src = info->s_pixels;
+       int srcskip = info->s_skip;
+       Uint16 *dstp = (Uint16 *)info->d_pixels;
+       int dstskip = info->d_skip;
+       Uint16 *palmap = (Uint16 *)info->table;
+       Uint32 ckey = info->src->colorkey;
+
+       /* Set up some basic variables */
+       dstskip /= 2;
+
+       while ( height-- ) {
                DUFFS_LOOP(
                {
                        if ( *src != ckey ) {
@@ -354,27 +339,24 @@ Blit1to2Key(SDL_BlitInfo * info)
                        dstp++;
                },
                width);
-               /* *INDENT-ON* */
-        src += srcskip;
-        dstp += dstskip;
-    }
+               src += srcskip;
+               dstp += dstskip;
+       }
 }
 
-static void
-Blit1to3Key(SDL_BlitInfo * info)
+static void Blit1to3Key(SDL_BlitInfo *info)
 {
-    int width = info->dst_w;
-    int height = info->dst_h;
-    Uint8 *src = info->src;
-    int srcskip = info->src_skip;
-    Uint8 *dst = info->dst;
-    int dstskip = info->dst_skip;
-    Uint8 *palmap = info->table;
-    Uint32 ckey = info->colorkey;
-    int o;
-
-    while (height--) {
-               /* *INDENT-OFF* */
+       int width = info->d_width;
+       int height = info->d_height;
+       Uint8 *src = info->s_pixels;
+       int srcskip = info->s_skip;
+       Uint8 *dst = info->d_pixels;
+       int dstskip = info->d_skip;
+       Uint8 *palmap = info->table;
+       Uint32 ckey = info->src->colorkey;
+       int o;
+
+       while ( height-- ) {
                DUFFS_LOOP(
                {
                        if ( *src != ckey ) {
@@ -387,29 +369,26 @@ Blit1to3Key(SDL_BlitInfo * info)
                        dst += 3;
                },
                width);
-               /* *INDENT-ON* */
-        src += srcskip;
-        dst += dstskip;
-    }
+               src += srcskip;
+               dst += dstskip;
+       }
 }
 
-static void
-Blit1to4Key(SDL_BlitInfo * info)
+static void Blit1to4Key(SDL_BlitInfo *info)
 {
-    int width = info->dst_w;
-    int height = info->dst_h;
-    Uint8 *src = info->src;
-    int srcskip = info->src_skip;
-    Uint32 *dstp = (Uint32 *) info->dst;
-    int dstskip = info->dst_skip;
-    Uint32 *palmap = (Uint32 *) info->table;
-    Uint32 ckey = info->colorkey;
-
-    /* Set up some basic variables */
-    dstskip /= 4;
-
-    while (height--) {
-               /* *INDENT-OFF* */
+       int width = info->d_width;
+       int height = info->d_height;
+       Uint8 *src = info->s_pixels;
+       int srcskip = info->s_skip;
+       Uint32 *dstp = (Uint32 *)info->d_pixels;
+       int dstskip = info->d_skip;
+       Uint32 *palmap = (Uint32 *)info->table;
+       Uint32 ckey = info->src->colorkey;
+
+       /* Set up some basic variables */
+       dstskip /= 4;
+
+       while ( height-- ) {
                DUFFS_LOOP(
                {
                        if ( *src != ckey ) {
@@ -419,132 +398,126 @@ Blit1to4Key(SDL_BlitInfo * info)
                        dstp++;
                },
                width);
-               /* *INDENT-ON* */
-        src += srcskip;
-        dstp += dstskip;
-    }
+               src += srcskip;
+               dstp += dstskip;
+       }
 }
 
-static void
-Blit1toNAlpha(SDL_BlitInfo * info)
+static void Blit1toNAlpha(SDL_BlitInfo *info)
 {
-    int width = info->dst_w;
-    int height = info->dst_h;
-    Uint8 *src = info->src;
-    int srcskip = info->src_skip;
-    Uint8 *dst = info->dst;
-    int dstskip = info->dst_skip;
-    SDL_PixelFormat *dstfmt = info->dst_fmt;
-    const SDL_Color *srcpal = info->src_fmt->palette->colors;
-    int dstbpp;
-    Uint32 pixel;
-    unsigned sR, sG, sB;
-    unsigned dR, dG, dB, dA;
-    const unsigned A = info->a;
-
-    /* Set up some basic variables */
-    dstbpp = dstfmt->BytesPerPixel;
-
-    while (height--) {
-        /* *INDENT-OFF* */
-        DUFFS_LOOP4(
-        {
-            sR = srcpal[*src].r;
-            sG = srcpal[*src].g;
-            sB = srcpal[*src].b;
-            DISEMBLE_RGBA(dst, dstbpp, dstfmt, pixel, dR, dG, dB, dA);
-            ALPHA_BLEND_RGBA(sR, sG, sB, A, dR, dG, dB, dA);
-            ASSEMBLE_RGBA(dst, dstbpp, dstfmt, dR, dG, dB, dA);
-            src++;
-            dst += dstbpp;
-        },
-        width);
-        /* *INDENT-ON* */
-        src += srcskip;
-        dst += dstskip;
-    }
+       int width = info->d_width;
+       int height = info->d_height;
+       Uint8 *src = info->s_pixels;
+       int srcskip = info->s_skip;
+       Uint8 *dst = info->d_pixels;
+       int dstskip = info->d_skip;
+       SDL_PixelFormat *dstfmt = info->dst;
+       const SDL_Color *srcpal = info->src->palette->colors;
+       int dstbpp;
+       const int A = info->src->alpha;
+
+       /* Set up some basic variables */
+       dstbpp = dstfmt->BytesPerPixel;
+
+       while ( height-- ) {
+               int sR, sG, sB;
+               int dR, dG, dB;
+               DUFFS_LOOP4(
+                       {
+                               Uint32 pixel;
+                               sR = srcpal[*src].r;
+                               sG = srcpal[*src].g;
+                               sB = srcpal[*src].b;
+                               DISEMBLE_RGB(dst, dstbpp, dstfmt,
+                                            pixel, dR, dG, dB);
+                               ALPHA_BLEND(sR, sG, sB, A, dR, dG, dB);
+                               ASSEMBLE_RGB(dst, dstbpp, dstfmt, dR, dG, dB);
+                               src++;
+                               dst += dstbpp;
+                       },
+                       width);
+               src += srcskip;
+               dst += dstskip;
+       }
 }
 
-static void
-Blit1toNAlphaKey(SDL_BlitInfo * info)
+static void Blit1toNAlphaKey(SDL_BlitInfo *info)
 {
-    int width = info->dst_w;
-    int height = info->dst_h;
-    Uint8 *src = info->src;
-    int srcskip = info->src_skip;
-    Uint8 *dst = info->dst;
-    int dstskip = info->dst_skip;
-    SDL_PixelFormat *dstfmt = info->dst_fmt;
-    const SDL_Color *srcpal = info->src_fmt->palette->colors;
-    Uint32 ckey = info->colorkey;
-    int dstbpp;
-    Uint32 pixel;
-    unsigned sR, sG, sB;
-    unsigned dR, dG, dB, dA;
-    const unsigned A = info->a;
-
-    /* Set up some basic variables */
-    dstbpp = dstfmt->BytesPerPixel;
-
-    while (height--) {
-               /* *INDENT-OFF* */
+       int width = info->d_width;
+       int height = info->d_height;
+       Uint8 *src = info->s_pixels;
+       int srcskip = info->s_skip;
+       Uint8 *dst = info->d_pixels;
+       int dstskip = info->d_skip;
+       SDL_PixelFormat *srcfmt = info->src;
+       SDL_PixelFormat *dstfmt = info->dst;
+       const SDL_Color *srcpal = info->src->palette->colors;
+       Uint32 ckey = srcfmt->colorkey;
+       int dstbpp;
+       const int A = srcfmt->alpha;
+
+       /* Set up some basic variables */
+       dstbpp = dstfmt->BytesPerPixel;
+
+       while ( height-- ) {
+               int sR, sG, sB;
+               int dR, dG, dB;
                DUFFS_LOOP(
                {
                        if ( *src != ckey ) {
+                               Uint32 pixel;
                                sR = srcpal[*src].r;
                                sG = srcpal[*src].g;
                                sB = srcpal[*src].b;
-                               DISEMBLE_RGBA(dst, dstbpp, dstfmt, pixel, dR, dG, dB, dA);
-                               ALPHA_BLEND_RGBA(sR, sG, sB, A, dR, dG, dB, dA);
-                               ASSEMBLE_RGBA(dst, dstbpp, dstfmt, dR, dG, dB, dA);
+                               DISEMBLE_RGB(dst, dstbpp, dstfmt,
+                                                       pixel, dR, dG, dB);
+                               ALPHA_BLEND(sR, sG, sB, A, dR, dG, dB);
+                               ASSEMBLE_RGB(dst, dstbpp, dstfmt, dR, dG, dB);
                        }
                        src++;
                        dst += dstbpp;
                },
                width);
-               /* *INDENT-ON* */
-        src += srcskip;
-        dst += dstskip;
-    }
+               src += srcskip;
+               dst += dstskip;
+       }
 }
 
-static const SDL_BlitFunc one_blit[] = {
-    (SDL_BlitFunc) NULL, Blit1to1, Blit1to2, Blit1to3, Blit1to4
+static SDL_loblit one_blit[] = {
+       NULL, Blit1to1, Blit1to2, Blit1to3, Blit1to4
 };
 
-static const SDL_BlitFunc one_blitkey[] = {
-    (SDL_BlitFunc) NULL, Blit1to1Key, Blit1to2Key, Blit1to3Key, Blit1to4Key
+static SDL_loblit one_blitkey[] = {
+        NULL, Blit1to1Key, Blit1to2Key, Blit1to3Key, Blit1to4Key
 };
 
-SDL_BlitFunc
-SDL_CalculateBlit1(SDL_Surface * surface)
+SDL_loblit SDL_CalculateBlit1(SDL_Surface *surface, int blit_index)
 {
-    int which;
-    SDL_PixelFormat *dstfmt;
-
-    dstfmt = surface->map->dst->format;
-    if (dstfmt->BitsPerPixel < 8) {
-        which = 0;
-    } else {
-        which = dstfmt->BytesPerPixel;
-    }
-    switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
-    case 0:
-        return one_blit[which];
-
-    case SDL_COPY_COLORKEY:
-        return one_blitkey[which];
-
-    case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
-        /* Supporting 8bpp->8bpp alpha is doable but requires lots of
-           tables which consume space and takes time to precompute,
-           so is better left to the user */
-        return which >= 2 ? Blit1toNAlpha : (SDL_BlitFunc) NULL;
-
-    case SDL_COPY_COLORKEY | SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
-        return which >= 2 ? Blit1toNAlphaKey : (SDL_BlitFunc) NULL;
-    }
-    return (SDL_BlitFunc) NULL;
+       int which;
+       SDL_PixelFormat *dstfmt;
+
+       dstfmt = surface->map->dst->format;
+       if ( dstfmt->BitsPerPixel < 8 ) {
+               which = 0;
+       } else {
+               which = dstfmt->BytesPerPixel;
+       }
+       switch(blit_index) {
+       case 0:                 /* copy */
+           return one_blit[which];
+
+       case 1:                 /* colorkey */
+           return one_blitkey[which];
+
+       case 2:                 /* alpha */
+           /* Supporting 8bpp->8bpp alpha is doable but requires lots of
+              tables which consume space and takes time to precompute,
+              so is better left to the user */
+           return which >= 2 ? Blit1toNAlpha : NULL;
+
+       case 3:                 /* alpha + colorkey */
+           return which >= 2 ? Blit1toNAlphaKey : NULL;
+
+       }
+       return NULL;
 }
-
-/* vi: set ts=4 sw=4 expandtab: */