Mercurial > sdl-ios-xcode
annotate src/video/sdlgenblit.pl @ 2661:d38309be5178 gsoc2008_audio_resampling
The windowed sinc filter generation code seems to be working fine. The FIR filtering code is also now working reasonably well. Occasionally the FIR filter will pop, but setting the normalization factor lower seems to help this. I suspect the problem is in the fixed point multiply/add. I also have a hunch the zero stuffing/sample discarding code is not correct, and I'll look at that soon to get it sorted out.
author | Aaron Wishnick <schnarf@gmail.com> |
---|---|
date | Wed, 02 Jul 2008 08:04:50 +0000 |
parents | c785543d1843 |
children | 8969da2ef606 |
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", |
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"); |