annotate src/video/sdlgenblit.pl @ 4525:3abf0b9cafad

pelya 2010-07-12 03:53:48 PDT In function GLES_RenderCopy() in SDL_renderer_gles.c:819 there is one memcpy() that can be avoided if we're updating whole texture. Because of that the SDL 1.3 in compatibility mode is working even slower than software rendering in SDL 1.2.
author Sam Lantinga <slouken@libsdl.org>
date Wed, 14 Jul 2010 07:31:35 -0700
parents 99210400e8b9
children e743b9c3f6d6
rev   line source
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",
2800
8969da2ef606 Added ARGB8888 destination format (used on Mac OS X)
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
41 "ARGB8888",
1985
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
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
44 my %format_size = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
45 "RGB888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
46 "BGR888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
47 "ARGB8888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
48 "RGBA8888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
49 "ABGR8888" => 4,
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
50 "BGRA8888" => 4,
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
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
53 my %format_type = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
54 "RGB888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
55 "BGR888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
56 "ARGB8888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
57 "RGBA8888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
58 "ABGR8888" => "Uint32",
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
59 "BGRA8888" => "Uint32",
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
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
62 my %get_rgba_string = (
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
63 "RGB888" => "_R = (Uint8)(_pixel >> 16); _G = (Uint8)(_pixel >> 8); _B = (Uint8)_pixel; _A = 0xFF;",
2800
8969da2ef606 Added ARGB8888 destination format (used on Mac OS X)
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
64 "BGR888" => "_B = (Uint8)(_pixel >> 16); _G = (Uint8)(_pixel >> 8); _R = (Uint8)_pixel; _A = 0xFF;", "ARGB8888" => "_A = (Uint8)(_pixel >> 24); _R = (Uint8)(_pixel >> 16); _G = (Uint8)(_pixel >> 8); _B = (Uint8)_pixel;",
1985
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;",
2800
8969da2ef606 Added ARGB8888 destination format (used on Mac OS X)
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
73 "ARGB8888" => "_pixel = ((Uint32)_A << 24) | ((Uint32)_R << 16) | ((Uint32)_G << 8) | _B;",
8969da2ef606 Added ARGB8888 destination format (used on Mac OS X)
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
74 "RGBA8888" => "_pixel = ((Uint32)_R << 24) | ((Uint32)_G << 16) | ((Uint32)_B << 8) | _A;",
8969da2ef606 Added ARGB8888 destination format (used on Mac OS X)
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
75 "ABGR8888" => "_pixel = ((Uint32)_A << 24) | ((Uint32)_B << 16) | ((Uint32)_G << 8) | _R;",
8969da2ef606 Added ARGB8888 destination format (used on Mac OS X)
Sam Lantinga <slouken@libsdl.org>
parents: 2267
diff changeset
76 "BGRA8888" => "_pixel = ((Uint32)_B << 24) | ((Uint32)_G << 16) | ((Uint32)_R << 8) | _A;",
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
77 );
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
78
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
79 sub open_file {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
80 my $name = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
81 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
82 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
83 /* 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
84 /*
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
85 SDL - Simple DirectMedia Layer
2859
99210400e8b9 Updated copyright date
Sam Lantinga <slouken@libsdl.org>
parents: 2800
diff changeset
86 Copyright (C) 1997-2009 Sam Lantinga
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
87
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
88 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
89 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
90 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
91 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
92
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
93 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
94 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
95 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
96 Lesser General Public License for more details.
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 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
99 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
100 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
101
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
102 Sam Lantinga
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
103 slouken\@libsdl.org
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 #include "SDL_config.h"
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 /* *INDENT-OFF* */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
108
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
109 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
110 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
111
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
112 sub close_file {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
113 my $name = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
114 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
115 /* *INDENT-ON* */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
116
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
117 /* vi: set ts=4 sw=4 expandtab: */
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
118 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
119 close FILE;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
120 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
121 rename("$name.new", "$name");
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
122 } else {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
123 unlink("$name.new");
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 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
126
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
127 sub output_copydefs
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 print FILE <<__EOF__;
2263
900c35d8e8fd More work in progress, still doesn't compile...
Sam Lantinga <slouken@libsdl.org>
parents: 2262
diff changeset
130 extern SDL_BlitFuncEntry SDL_GeneratedBlitFuncTable[];
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
131 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
132 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
133
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
134 sub output_copyfuncname
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
135 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
136 my $prefix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
137 my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
138 my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
139 my $modulate = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
140 my $blend = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
141 my $scale = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
142 my $args = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
143 my $suffix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
144
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
145 print FILE "$prefix SDL_Blit_${src}_${dst}";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
146 if ( $modulate ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
147 print FILE "_Modulate";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
148 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
149 if ( $blend ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
150 print FILE "_Blend";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
151 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
152 if ( $scale ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
153 print FILE "_Scale";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
154 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
155 if ( $args ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
156 print FILE "(SDL_BlitInfo *info)";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
157 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
158 print FILE "$suffix";
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
159 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
160
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
161 sub get_rgba
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
162 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
163 my $prefix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
164 my $format = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
165 my $string = $get_rgba_string{$format};
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
166 $string =~ s/_/$prefix/g;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
167 if ( $prefix ne "" ) {
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 ${prefix}pixel = *$prefix;
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 } else {
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 pixel = *src;
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 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
177 $string
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
178 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
179 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
180
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
181 sub set_rgba
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
182 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
183 my $prefix = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
184 my $format = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
185 my $string = $set_rgba_string{$format};
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
186 $string =~ s/_/$prefix/g;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
187 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
188 $string
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
189 *dst = ${prefix}pixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
190 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
191 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
192
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
193 sub output_copycore
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
194 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
195 my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
196 my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
197 my $modulate = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
198 my $blend = shift;
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
199 my $s = "";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
200 my $d = "";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
201
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
202 # Nice and easy...
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
203 if ( $src eq $dst && !$modulate && !$blend ) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
204 print FILE <<__EOF__;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
205 *dst = *src;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
206 __EOF__
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
207 return;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
208 }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
209
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
210 if ( $blend ) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
211 get_rgba("src", $src);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
212 get_rgba("dst", $dst);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
213 $s = "src";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
214 $d = "dst";
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
215 } else {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
216 get_rgba("", $src);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
217 }
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
218
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
219 if ( $modulate ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
220 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
221 if (flags & SDL_COPY_MODULATE_COLOR) {
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
222 ${s}R = (${s}R * modulateR) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
223 ${s}G = (${s}G * modulateG) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
224 ${s}B = (${s}B * modulateB) / 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
225 }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
226 if (flags & SDL_COPY_MODULATE_ALPHA) {
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
227 ${s}A = (${s}A * modulateA) / 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
228 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
229 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
230 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
231 if ( $blend ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
232 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
233 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
234 /* 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
235 if (${s}A < 255) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
236 ${s}R = (${s}R * ${s}A) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
237 ${s}G = (${s}G * ${s}A) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
238 ${s}B = (${s}B * ${s}A) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
239 }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
240 }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
241 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
242 case SDL_COPY_MASK:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
243 if (${s}A) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
244 ${d}R = ${s}R;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
245 ${d}G = ${s}G;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
246 ${d}B = ${s}B;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
247 }
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
248 break;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
249 case SDL_COPY_BLEND:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
250 ${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
251 ${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
252 ${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
253 break;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
254 case SDL_COPY_ADD:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
255 ${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
256 ${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
257 ${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
258 break;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
259 case SDL_COPY_MOD:
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
260 ${d}R = (${s}R * ${d}R) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
261 ${d}G = (${s}G * ${d}G) / 255;
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
262 ${d}B = (${s}B * ${d}B) / 255;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
263 break;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
264 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
265 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
266 }
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
267 if ( $blend ) {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
268 set_rgba("dst", $dst);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
269 } else {
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
270 set_rgba("", $dst);
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
271 }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
272 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
273
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
274 sub output_copyfunc
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
275 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
276 my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
277 my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
278 my $modulate = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
279 my $blend = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
280 my $scale = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
281
2263
900c35d8e8fd More work in progress, still doesn't compile...
Sam Lantinga <slouken@libsdl.org>
parents: 2262
diff changeset
282 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
283 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
284 {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
285 const int flags = info->flags;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
286 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
287 if ( $modulate ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
288 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
289 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
290 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
291 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
292 const Uint32 modulateA = info->a;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
293 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
294 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
295 if ( $blend ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
296 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
297 Uint32 srcpixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
298 Uint32 srcR, srcG, srcB, srcA;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
299 Uint32 dstpixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
300 Uint32 dstR, dstG, dstB, dstA;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
301 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
302 } elsif ( $modulate || $src ne $dst ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
303 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
304 Uint32 pixel;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
305 Uint32 R, G, B, A;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
306 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
307 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
308 if ( $scale ) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
309 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
310 int srcy, srcx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
311 int posy, posx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
312 int incy, incx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
313
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
314 srcy = 0;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
315 posy = 0;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
316 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
317 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
318
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
319 while (info->dst_h--) {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
320 $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
321 $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
322 int n = info->dst_w;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
323 srcx = -1;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
324 posx = 0x10000L;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
325 while (posy >= 0x10000L) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
326 ++srcy;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
327 posy -= 0x10000L;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
328 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
329 while (n--) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
330 if (posx >= 0x10000L) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
331 while (posx >= 0x10000L) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
332 ++srcx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
333 posx -= 0x10000L;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
334 }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
335 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
336 __EOF__
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 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
339 __EOF__
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
340 output_copycore($src, $dst, $modulate, $blend);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
341 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
342 posx += incx;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
343 ++dst;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
344 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
345 posy += incy;
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
346 info->dst += info->dst_pitch;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
347 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
348 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
349 } else {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
350 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
351
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
352 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
353 $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
354 $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
355 int n = info->dst_w;
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
356 while (n--) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
357 __EOF__
1989
5b5f5de5433f Optimized the copy blitters a little bit
Sam Lantinga <slouken@libsdl.org>
parents: 1985
diff changeset
358 output_copycore($src, $dst, $modulate, $blend);
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
359 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
360 ++src;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
361 ++dst;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
362 }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
363 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
364 info->dst += info->dst_pitch;
1985
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 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
367 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
368 print FILE <<__EOF__;
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
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
371 __EOF__
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_copyfunc_h
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 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
377
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
378 sub output_copyinc
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
379 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
380 print FILE <<__EOF__;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
381 #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
382 #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
383 #include "SDL_blit_auto.h"
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
384
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
385 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
386 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
387
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
388 sub output_copyfunctable
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
389 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
390 print FILE <<__EOF__;
2267
c785543d1843 Okay, still some bugs, but everything builds again...
Sam Lantinga <slouken@libsdl.org>
parents: 2263
diff changeset
391 SDL_BlitFuncEntry SDL_GeneratedBlitFuncTable[] = {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
392 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
393 for (my $i = 0; $i <= $#src_formats; ++$i) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
394 my $src = $src_formats[$i];
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
395 for (my $j = 0; $j <= $#dst_formats; ++$j) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
396 my $dst = $dst_formats[$j];
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
397 for (my $modulate = 0; $modulate <= 1; ++$modulate) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
398 for (my $blend = 0; $blend <= 1; ++$blend) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
399 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
400 if ( $modulate || $blend || $scale ) {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
401 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
402 my $flags = "";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
403 my $flag = "";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
404 if ( $modulate ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
405 $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
406 if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
407 $flags = $flag;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
408 } else {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
409 $flags = "$flags | $flag";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
410 }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
411 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
412 if ( $blend ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
413 $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
414 if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
415 $flags = $flag;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
416 } else {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
417 $flags = "$flags | $flag";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
418 }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
419 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
420 if ( $scale ) {
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
421 $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
422 if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
423 $flags = $flag;
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
424 } else {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
425 $flags = "$flags | $flag";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
426 }
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
427 }
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
428 if ( $flags eq "" ) {
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
429 $flags = "0";
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
430 }
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
431 print FILE "($flags), SDL_CPU_ANY,";
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
432 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
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 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
436 }
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 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
440 { 0, 0, 0, 0, NULL }
1985
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
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
443 __EOF__
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
444 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
445
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
446 sub output_copyfunc_c
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
447 {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
448 my $src = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
449 my $dst = shift;
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
450
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
451 for (my $modulate = 0; $modulate <= 1; ++$modulate) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
452 for (my $blend = 0; $blend <= 1; ++$blend) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
453 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
454 if ( $modulate || $blend || $scale ) {
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
455 output_copyfunc($src, $dst, $modulate, $blend, $scale);
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 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
458 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
459 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
460 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
461
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
462 open_file("SDL_blit_auto.h");
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
463 output_copydefs();
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
464 for (my $i = 0; $i <= $#src_formats; ++$i) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
465 for (my $j = 0; $j <= $#dst_formats; ++$j) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
466 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
467 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
468 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
469 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
470 close_file("SDL_blit_auto.h");
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
471
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
472 open_file("SDL_blit_auto.c");
1985
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
473 output_copyinc();
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
474 for (my $i = 0; $i <= $#src_formats; ++$i) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
475 for (my $j = 0; $j <= $#dst_formats; ++$j) {
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
476 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
477 }
8055185ae4ed Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
diff changeset
478 }
2263
900c35d8e8fd More work in progress, still doesn't compile...
Sam Lantinga <slouken@libsdl.org>
parents: 2262
diff changeset
479 output_copyfunctable();
2262
bee005ace1bf Work in progress: merging new texture features into SDL blit system
Sam Lantinga <slouken@libsdl.org>
parents: 1992
diff changeset
480 close_file("SDL_blit_auto.c");