src/video/sdlgenblit.pl
author Edgar Simo <bobbens@gmail.com>
Mon, 04 Aug 2008 11:30:16 +0000
branchgsoc2008_force_feedback
changeset 2582 9f0f0a532343
parent 2267 c785543d1843
child 2800 8969da2ef606
permissions -rwxr-xr-x
Fixed warning.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     1
#!/usr/bin/perl -w
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     2
#
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     3
# A script to generate optimized C blitters for Simple DirectMedia Layer
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     4
# http://www.libsdl.org/
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     5
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     6
use warnings;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     7
use strict;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     8
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
     9
my %file;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    10
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    11
# The formats potentially supported by this script:
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    12
# SDL_PIXELFORMAT_INDEX8
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    13
# SDL_PIXELFORMAT_RGB332
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    14
# SDL_PIXELFORMAT_RGB444
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    15
# SDL_PIXELFORMAT_RGB555
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    16
# SDL_PIXELFORMAT_ARGB4444
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    17
# SDL_PIXELFORMAT_ARGB1555
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    18
# SDL_PIXELFORMAT_RGB565
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    19
# SDL_PIXELFORMAT_RGB24
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    20
# SDL_PIXELFORMAT_BGR24
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    21
# SDL_PIXELFORMAT_RGB888
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    22
# SDL_PIXELFORMAT_BGR888
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    23
# SDL_PIXELFORMAT_ARGB8888
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    24
# SDL_PIXELFORMAT_RGBA8888
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    25
# SDL_PIXELFORMAT_ABGR8888
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    26
# SDL_PIXELFORMAT_BGRA8888
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    27
# SDL_PIXELFORMAT_ARGB2101010
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    28
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    29
# The formats we're actually creating blitters for:
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    30
my @src_formats = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    31
    "RGB888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    32
    "BGR888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    33
    "ARGB8888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    34
    "RGBA8888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    35
    "ABGR8888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    36
    "BGRA8888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    37
);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    38
my @dst_formats = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    39
    "RGB888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    40
    "BGR888",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    41
);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    42
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    43
my %format_size = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    44
    "RGB888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    45
    "BGR888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    46
    "ARGB8888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    47
    "RGBA8888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    48
    "ABGR8888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    49
    "BGRA8888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    50
);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    51
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    52
my %format_type = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    53
    "RGB888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    54
    "BGR888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    55
    "ARGB8888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    56
    "RGBA8888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    57
    "ABGR8888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    58
    "BGRA8888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    59
);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    60
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    61
my %get_rgba_string = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    62
    "RGB888" => "_R = (Uint8)(_pixel >> 16); _G = (Uint8)(_pixel >> 8); _B = (Uint8)_pixel; _A = 0xFF;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    63
    "BGR888" => "_B = (Uint8)(_pixel >> 16); _G = (Uint8)(_pixel >> 8); _R = (Uint8)_pixel; _A = 0xFF;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    64
    "ARGB8888" => "_A = (Uint8)(_pixel >> 24); _R = (Uint8)(_pixel >> 16); _G = (Uint8)(_pixel >> 8); _B = (Uint8)_pixel;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    65
    "RGBA8888" => "_R = (Uint8)(_pixel >> 24); _G = (Uint8)(_pixel >> 16); _B = (Uint8)(_pixel >> 8); _A = (Uint8)_pixel;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    66
    "ABGR8888" => "_A = (Uint8)(_pixel >> 24); _B = (Uint8)(_pixel >> 16); _G = (Uint8)(_pixel >> 8); _R = (Uint8)_pixel;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    67
    "BGRA8888" => "_B = (Uint8)(_pixel >> 24); _G = (Uint8)(_pixel >> 16); _R = (Uint8)(_pixel >> 8); _A = (Uint8)_pixel;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    68
);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    69
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    70
my %set_rgba_string = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    71
    "RGB888" => "_pixel = ((Uint32)_R << 16) | ((Uint32)_G << 8) | _B;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    72
    "BGR888" => "_pixel = ((Uint32)_B << 16) | ((Uint32)_G << 8) | _R;",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    73
);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    74
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    75
sub open_file {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    76
    my $name = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    77
    open(FILE, ">$name.new") || die "Cant' open $name.new: $!";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    78
    print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    79
/* DO NOT EDIT!  This file is generated by sdlgenblit.pl */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    80
/*
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    81
    SDL - Simple DirectMedia Layer
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    82
    Copyright (C) 1997-2006 Sam Lantinga
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    83
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    84
    This library is free software; you can redistribute it and/or
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    85
    modify it under the terms of the GNU Lesser General Public
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    86
    License as published by the Free Software Foundation; either
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    87
    version 2.1 of the License, or (at your option) any later version.
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    88
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    89
    This library is distributed in the hope that it will be useful,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    90
    but WITHOUT ANY WARRANTY; without even the implied warranty of
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    91
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    92
    Lesser General Public License for more details.
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    93
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    94
    You should have received a copy of the GNU Lesser General Public
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    95
    License along with this library; if not, write to the Free Software
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    96
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    97
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    98
    Sam Lantinga
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
    99
    slouken\@libsdl.org
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   100
*/
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   101
#include "SDL_config.h"
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   102
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   103
/* *INDENT-OFF* */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   104
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   105
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   106
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   107
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   108
sub close_file {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   109
    my $name = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   110
    print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   111
/* *INDENT-ON* */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   112
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   113
/* vi: set ts=4 sw=4 expandtab: */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   114
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   115
    close FILE;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   116
    if ( ! -f $name || system("cmp -s $name $name.new") != 0 ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   117
        rename("$name.new", "$name");
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   118
    } else {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   119
        unlink("$name.new");
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   120
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   121
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   122
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   123
sub output_copydefs
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   124
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   125
    print FILE <<__EOF__;
2263
900c35d8e8fd More work in progress, still doesn't compile...
Sam Lantinga <slouken@libsdl.org>
parents: 2262
diff changeset
   126
extern SDL_BlitFuncEntry SDL_GeneratedBlitFuncTable[];
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   127
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   128
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   129
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   130
sub output_copyfuncname
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   131
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   132
    my $prefix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   133
    my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   134
    my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   135
    my $modulate = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   136
    my $blend = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   137
    my $scale = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   138
    my $args = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   139
    my $suffix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   140
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   141
    print FILE "$prefix SDL_Blit_${src}_${dst}";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   142
    if ( $modulate ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   143
        print FILE "_Modulate";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   144
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   145
    if ( $blend ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   146
        print FILE "_Blend";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   147
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   148
    if ( $scale ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   149
        print FILE "_Scale";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   150
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   151
    if ( $args ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   152
        print FILE "(SDL_BlitInfo *info)";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   153
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   154
    print FILE "$suffix";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   155
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   156
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   157
sub get_rgba
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   158
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   159
    my $prefix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   160
    my $format = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   161
    my $string = $get_rgba_string{$format};
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   162
    $string =~ s/_/$prefix/g;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   163
    if ( $prefix ne "" ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   164
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   165
            ${prefix}pixel = *$prefix;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   166
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   167
    } else {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   168
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   169
            pixel = *src;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   170
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   171
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   172
    print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   173
            $string
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   174
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   175
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   176
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   177
sub set_rgba
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   178
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   179
    my $prefix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   180
    my $format = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   181
    my $string = $set_rgba_string{$format};
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   182
    $string =~ s/_/$prefix/g;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   183
    print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   184
            $string
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   185
            *dst = ${prefix}pixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   186
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   187
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   188
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   189
sub output_copycore
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   190
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   191
    my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   192
    my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   193
    my $modulate = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   194
    my $blend = shift;
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   195
    my $s = "";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   196
    my $d = "";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   197
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   198
    # Nice and easy...
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   199
    if ( $src eq $dst && !$modulate && !$blend ) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   200
        print FILE <<__EOF__;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   201
            *dst = *src;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   202
__EOF__
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   203
        return;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   204
    }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   205
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   206
    if ( $blend ) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   207
        get_rgba("src", $src);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   208
        get_rgba("dst", $dst);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   209
        $s = "src";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   210
        $d = "dst";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   211
    } else {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   212
        get_rgba("", $src);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   213
    }
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   214
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   215
    if ( $modulate ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   216
        print FILE <<__EOF__;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   217
            if (flags & SDL_COPY_MODULATE_COLOR) {
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   218
                ${s}R = (${s}R * modulateR) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   219
                ${s}G = (${s}G * modulateG) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   220
                ${s}B = (${s}B * modulateB) / 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   221
            }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   222
            if (flags & SDL_COPY_MODULATE_ALPHA) {
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   223
                ${s}A = (${s}A * modulateA) / 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   224
            }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   225
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   226
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   227
    if ( $blend ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   228
        print FILE <<__EOF__;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   229
            if (flags & (SDL_COPY_BLEND|SDL_COPY_ADD)) {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   230
                /* This goes away if we ever use premultiplied alpha */
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   231
                if (${s}A < 255) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   232
                    ${s}R = (${s}R * ${s}A) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   233
                    ${s}G = (${s}G * ${s}A) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   234
                    ${s}B = (${s}B * ${s}A) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   235
                }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   236
            }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   237
            switch (flags & (SDL_COPY_MASK|SDL_COPY_BLEND|SDL_COPY_ADD|SDL_COPY_MOD)) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   238
            case SDL_COPY_MASK:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   239
                if (${s}A) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   240
                    ${d}R = ${s}R;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   241
                    ${d}G = ${s}G;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   242
                    ${d}B = ${s}B;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   243
                }
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   244
                break;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   245
            case SDL_COPY_BLEND:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   246
                ${d}R = ${s}R + ((255 - ${s}A) * ${d}R) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   247
                ${d}G = ${s}G + ((255 - ${s}A) * ${d}G) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   248
                ${d}B = ${s}B + ((255 - ${s}A) * ${d}B) / 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   249
                break;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   250
            case SDL_COPY_ADD:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   251
                ${d}R = ${s}R + ${d}R; if (${d}R > 255) ${d}R = 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   252
                ${d}G = ${s}G + ${d}G; if (${d}G > 255) ${d}G = 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   253
                ${d}B = ${s}B + ${d}B; if (${d}B > 255) ${d}B = 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   254
                break;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   255
            case SDL_COPY_MOD:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   256
                ${d}R = (${s}R * ${d}R) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   257
                ${d}G = (${s}G * ${d}G) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   258
                ${d}B = (${s}B * ${d}B) / 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   259
                break;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   260
            }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   261
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   262
    }
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   263
    if ( $blend ) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   264
        set_rgba("dst", $dst);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   265
    } else {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   266
        set_rgba("", $dst);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   267
    }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   268
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   269
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   270
sub output_copyfunc
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   271
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   272
    my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   273
    my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   274
    my $modulate = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   275
    my $blend = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   276
    my $scale = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   277
2263
900c35d8e8fd More work in progress, still doesn't compile...
Sam Lantinga <slouken@libsdl.org>
parents: 2262
diff changeset
   278
    output_copyfuncname("static void", $src, $dst, $modulate, $blend, $scale, 1, "\n");
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   279
    print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   280
{
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   281
    const int flags = info->flags;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   282
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   283
    if ( $modulate ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   284
        print FILE <<__EOF__;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   285
    const Uint32 modulateR = info->r;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   286
    const Uint32 modulateG = info->g;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   287
    const Uint32 modulateB = info->b;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   288
    const Uint32 modulateA = info->a;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   289
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   290
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   291
    if ( $blend ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   292
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   293
    Uint32 srcpixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   294
    Uint32 srcR, srcG, srcB, srcA;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   295
    Uint32 dstpixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   296
    Uint32 dstR, dstG, dstB, dstA;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   297
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   298
    } elsif ( $modulate || $src ne $dst ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   299
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   300
    Uint32 pixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   301
    Uint32 R, G, B, A;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   302
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   303
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   304
    if ( $scale ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   305
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   306
    int srcy, srcx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   307
    int posy, posx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   308
    int incy, incx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   309
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   310
    srcy = 0;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   311
    posy = 0;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   312
    incy = (info->src_h << 16) / info->dst_h;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   313
    incx = (info->src_w << 16) / info->dst_w;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   314
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   315
    while (info->dst_h--) {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   316
        $format_type{$src} *src;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   317
        $format_type{$dst} *dst = ($format_type{$dst} *)info->dst;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   318
        int n = info->dst_w;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   319
        srcx = -1;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   320
        posx = 0x10000L;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   321
        while (posy >= 0x10000L) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   322
            ++srcy;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   323
            posy -= 0x10000L;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   324
        }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   325
        while (n--) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   326
            if (posx >= 0x10000L) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   327
                while (posx >= 0x10000L) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   328
                    ++srcx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   329
                    posx -= 0x10000L;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   330
                }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   331
                src = ($format_type{$src} *)(info->src + (srcy * info->src_pitch) + (srcx * $format_size{$src}));
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   332
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   333
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   334
            }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   335
__EOF__
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   336
        output_copycore($src, $dst, $modulate, $blend);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   337
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   338
            posx += incx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   339
            ++dst;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   340
        }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   341
        posy += incy;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   342
        info->dst += info->dst_pitch;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   343
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   344
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   345
    } else {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   346
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   347
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   348
    while (info->dst_h--) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   349
        $format_type{$src} *src = ($format_type{$src} *)info->src;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   350
        $format_type{$dst} *dst = ($format_type{$dst} *)info->dst;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   351
        int n = info->dst_w;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   352
        while (n--) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   353
__EOF__
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
   354
        output_copycore($src, $dst, $modulate, $blend);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   355
        print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   356
            ++src;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   357
            ++dst;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   358
        }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   359
        info->src += info->src_pitch;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   360
        info->dst += info->dst_pitch;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   361
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   362
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   363
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   364
    print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   365
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   366
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   367
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   368
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   369
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   370
sub output_copyfunc_h
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   371
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   372
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   373
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   374
sub output_copyinc
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   375
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   376
    print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   377
#include "SDL_video.h"
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   378
#include "SDL_blit.h"
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   379
#include "SDL_blit_auto.h"
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   380
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   381
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   382
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   383
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   384
sub output_copyfunctable
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   385
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   386
    print FILE <<__EOF__;
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2263
diff changeset
   387
SDL_BlitFuncEntry SDL_GeneratedBlitFuncTable[] = {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   388
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   389
    for (my $i = 0; $i <= $#src_formats; ++$i) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   390
        my $src = $src_formats[$i];
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   391
        for (my $j = 0; $j <= $#dst_formats; ++$j) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   392
            my $dst = $dst_formats[$j];
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   393
            for (my $modulate = 0; $modulate <= 1; ++$modulate) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   394
                for (my $blend = 0; $blend <= 1; ++$blend) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   395
                    for (my $scale = 0; $scale <= 1; ++$scale) {
1992
7387e0514595 Take advantage of the existing SDL blitters for normal copy blits.
Sam Lantinga <slouken@libsdl.org>
parents: 1989
diff changeset
   396
                        if ( $modulate || $blend || $scale ) {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   397
                            print FILE "    { SDL_PIXELFORMAT_$src, SDL_PIXELFORMAT_$dst, ";
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   398
                            my $flags = "";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   399
                            my $flag = "";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   400
                            if ( $modulate ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   401
                                $flag = "SDL_COPY_MODULATE_COLOR | SDL_COPY_MODULATE_ALPHA";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   402
                                if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   403
                                    $flags = $flag;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   404
                                } else {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   405
                                    $flags = "$flags | $flag";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   406
                                }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   407
                            }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   408
                            if ( $blend ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   409
                                $flag = "SDL_COPY_MASK | SDL_COPY_BLEND | SDL_COPY_ADD | SDL_COPY_MOD";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   410
                                if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   411
                                    $flags = $flag;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   412
                                } else {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   413
                                    $flags = "$flags | $flag";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   414
                                }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   415
                            }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   416
                            if ( $scale ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   417
                                $flag = "SDL_COPY_NEAREST";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   418
                                if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   419
                                    $flags = $flag;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   420
                                } else {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   421
                                    $flags = "$flags | $flag";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   422
                                }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   423
                            }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   424
                            if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   425
                                $flags = "0";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   426
                            }
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   427
                            print FILE "($flags), SDL_CPU_ANY,";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   428
                            output_copyfuncname("", $src_formats[$i], $dst_formats[$j], $modulate, $blend, $scale, 0, " },\n");
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   429
                        }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   430
                    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   431
                }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   432
            }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   433
        }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   434
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   435
    print FILE <<__EOF__;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   436
    { 0, 0, 0, 0, NULL }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   437
};
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   438
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   439
__EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   440
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   441
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   442
sub output_copyfunc_c
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   443
{
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   444
    my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   445
    my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   446
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   447
    for (my $modulate = 0; $modulate <= 1; ++$modulate) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   448
        for (my $blend = 0; $blend <= 1; ++$blend) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   449
            for (my $scale = 0; $scale <= 1; ++$scale) {
1992
7387e0514595 Take advantage of the existing SDL blitters for normal copy blits.
Sam Lantinga <slouken@libsdl.org>
parents: 1989
diff changeset
   450
                if ( $modulate || $blend || $scale ) {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   451
                    output_copyfunc($src, $dst, $modulate, $blend, $scale);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   452
                }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   453
            }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   454
        }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   455
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   456
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   457
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   458
open_file("SDL_blit_auto.h");
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   459
output_copydefs();
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   460
for (my $i = 0; $i <= $#src_formats; ++$i) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   461
    for (my $j = 0; $j <= $#dst_formats; ++$j) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   462
        output_copyfunc_h($src_formats[$i], $dst_formats[$j]);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   463
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   464
}
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   465
print FILE "\n";
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   466
close_file("SDL_blit_auto.h");
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   467
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   468
open_file("SDL_blit_auto.c");
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   469
output_copyinc();
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   470
for (my $i = 0; $i <= $#src_formats; ++$i) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   471
    for (my $j = 0; $j <= $#dst_formats; ++$j) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   472
        output_copyfunc_c($src_formats[$i], $dst_formats[$j]);
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   473
    }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
   474
}
2263
900c35d8e8fd More work in progress, still doesn't compile...
Sam Lantinga <slouken@libsdl.org>
parents: 2262
diff changeset
   475
output_copyfunctable();
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
   476
close_file("SDL_blit_auto.c");