2 * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
35 static gint boxes_1b[][7] =
38 { BOX_VERTICAL, 0, 0, 0, 1, 1, 1 },
40 { BOX_HORIZONTAL, 0, 0, 0, 1, 1, 1 }
43 static gint boxes_2b[][7*2] =
46 { BOX_VERTICAL, 0, 0, 1, 1, 2, 0,
47 BOX_VERTICAL, 1, 0, 0, 2, 2, 1 },
49 { BOX_HORIZONTAL, 0, 0, 1, 2, 1, 0,
50 BOX_HORIZONTAL, 0, 1, 0, 2, 2, 1 },
53 static gint box_clock_1b[][1*10] =
56 { BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 1, 1 },
58 { BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1 },
60 { BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
62 { BOX_CLOCK, 1, 0, 0, 0, 0, 0, 1, 1, 1 },
66 static gint box_clock_2b[][2*10] =
69 { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
70 BOX_CLOCK, 1, 0, 0, 1, 2, 1, 0, 0, 2 },
72 { BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1,
73 BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 0, 2 },
75 { BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
76 BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2 },
78 { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
79 BOX_CLOCK, 0, 1, 0, 2, 1, 1, 0, 2, 2 },
81 { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 2, 1,
82 BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1 },
84 { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 2, 1, 1,
85 BOX_CLOCK, 2, 1, 0, 2, 2, 0, 0, 1, 1 },
87 { BOX_CLOCK, 1, 0, 0, 1, 2, 0, 2, 0, 1,
88 BOX_CLOCK, 1, 0, 0, 1, 2, 0, 0, 0, 1 },
90 { BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 0, 1,
91 BOX_CLOCK, 2, 1, 0, 0, 1, 0, 2, 2, 1 },
93 { BOX_CLOCK, 1, 2, 0, 1, 0, 0, 2, 2, 1,
94 BOX_CLOCK, 1, 2, 0, 1, 0, 0, 0, 2, 1 },
96 { BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 0, 1,
97 BOX_CLOCK, 0, 1, 0, 2, 1, 0, 0, 2, 1 },
98 #define WIPE_B2_251 10
99 { BOX_CLOCK, 0, 0, 0, 1, 0, 0, 0, 2, 1,
100 BOX_CLOCK, 2, 0, 0, 1, 0, 0, 2, 2, 1 },
101 #define WIPE_B2_252 11
102 { BOX_CLOCK, 0, 0, 0, 0, 1, 0, 2, 0, 1,
103 BOX_CLOCK, 0, 2, 0, 0, 1, 0, 2, 2, 1 },
104 #define WIPE_B2_253 12
105 { BOX_CLOCK, 0, 2, 0, 1, 2, 0, 0, 0, 1,
106 BOX_CLOCK, 2, 2, 0, 1, 2, 0, 2, 0, 1 },
107 #define WIPE_B2_254 13
108 { BOX_CLOCK, 2, 0, 0, 2, 1, 0, 0, 0, 1,
109 BOX_CLOCK, 2, 2, 0, 2, 1, 0, 0, 2, 1 },
112 static gint box_clock_4b[][4*10] =
114 #define WIPE_B4_201 0
115 { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
116 BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
117 BOX_CLOCK, 1, 1, 0, 1, 2, 2, 0, 1, 3,
118 BOX_CLOCK, 1, 1, 0, 0, 1, 3, 1, 0, 4 },
119 #define WIPE_B4_202 1
120 { BOX_CLOCK, 1, 1, 0, 1, 0, 3, 2, 1, 4,
121 BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
122 BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
123 BOX_CLOCK, 1, 1, 0, 0, 1, 2, 1, 0, 3 },
124 #define WIPE_B4_203 2
125 { BOX_CLOCK, 1, 1, 0, 1, 0, 2, 2, 1, 3,
126 BOX_CLOCK, 1, 1, 0, 2, 1, 3, 1, 2, 4,
127 BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
128 BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2 },
129 #define WIPE_B4_204 3
130 { BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
131 BOX_CLOCK, 1, 1, 0, 2, 1, 2, 1, 2, 3,
132 BOX_CLOCK, 1, 1, 0, 1, 2, 3, 0, 1, 4,
133 BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
134 #define WIPE_B4_205 4
135 { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
136 BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
137 BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
138 BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 0, 2 },
139 #define WIPE_B4_206 5
140 { BOX_CLOCK, 1, 1, 0, 1, 0, 1, 2, 1, 2,
141 BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
142 BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2,
143 BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
144 #define WIPE_B4_207 6
145 { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
146 BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
147 BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1,
148 BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1 },
149 #define WIPE_B4_211 7
150 { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
151 BOX_CLOCK, 1, 1, 0, 2, 1, 1, 1, 2, 2,
152 BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
153 BOX_CLOCK, 1, 1, 0, 0, 1, 1, 1, 2, 2 },
154 #define WIPE_B4_212 8
155 { BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
156 BOX_CLOCK, 1, 1, 0, 1, 0, 1, 0, 1, 2,
157 BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
158 BOX_CLOCK, 1, 1, 0, 1, 2, 1, 0, 1, 2 },
159 #define WIPE_B4_213 9
160 { BOX_CLOCK, 1, 1, 0, 1, 0, 0, 2, 1, 1,
161 BOX_CLOCK, 1, 1, 0, 1, 0, 0, 0, 1, 1,
162 BOX_CLOCK, 1, 1, 0, 1, 2, 0, 2, 1, 1,
163 BOX_CLOCK, 1, 1, 0, 1, 2, 0, 0, 1, 1 },
164 #define WIPE_B4_214 10
165 { BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 0, 1,
166 BOX_CLOCK, 1, 1, 0, 2, 1, 0, 1, 2, 1,
167 BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 0, 1,
168 BOX_CLOCK, 1, 1, 0, 0, 1, 0, 1, 2, 1 },
169 #define WIPE_B4_227 11
170 { BOX_CLOCK, 1, 0, 0, 2, 0, 0, 1, 1, 1,
171 BOX_CLOCK, 1, 0, 0, 1, 1, 1, 0, 0, 2,
172 BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 1, 1,
173 BOX_CLOCK, 1, 2, 0, 1, 1, 1, 0, 2, 2 },
174 #define WIPE_B4_228 12
175 { BOX_CLOCK, 0, 1, 0, 0, 0, 0, 1, 1, 1,
176 BOX_CLOCK, 0, 1, 0, 1, 1, 1, 0, 2, 2,
177 BOX_CLOCK, 2, 1, 0, 2, 0, 0, 1, 1, 1,
178 BOX_CLOCK, 2, 1, 0, 1, 1, 1, 2, 2, 2 },
179 #define WIPE_B4_235 13
180 { BOX_CLOCK, 1, 0, 0, 1, 1, 0, 0, 0, 1,
181 BOX_CLOCK, 1, 0, 0, 1, 1, 0, 2, 0, 1,
182 BOX_CLOCK, 1, 2, 0, 1, 1, 0, 2, 2, 1,
183 BOX_CLOCK, 1, 2, 0, 1, 1, 0, 0, 2, 1 },
184 #define WIPE_B4_236 14
185 { BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 0, 1,
186 BOX_CLOCK, 0, 1, 0, 1, 1, 0, 0, 2, 1,
187 BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 0, 1,
188 BOX_CLOCK, 2, 1, 0, 1, 1, 0, 2, 2, 1 },
191 static gint box_clock_8b[][8*10] =
193 #define WIPE_B8_261 0
194 { BOX_CLOCK, 2, 1, 0, 2, 2, 0, 4, 1, 1,
195 BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 0, 2,
196 BOX_CLOCK, 2, 1, 0, 2, 0, 2, 0, 1, 3,
197 BOX_CLOCK, 2, 1, 0, 0, 1, 3, 2, 2, 4,
198 BOX_CLOCK, 2, 3, 0, 2, 2, 0, 4, 3, 1,
199 BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 4, 2,
200 BOX_CLOCK, 2, 3, 0, 2, 4, 2, 0, 3, 3,
201 BOX_CLOCK, 2, 3, 0, 0, 3, 3, 2, 2, 4 },
202 #define WIPE_B8_262 1
203 { BOX_CLOCK, 1, 2, 0, 2, 2, 0, 1, 0, 1,
204 BOX_CLOCK, 1, 2, 0, 1, 0, 1, 0, 2, 2,
205 BOX_CLOCK, 1, 2, 0, 0, 2, 2, 1, 4, 3,
206 BOX_CLOCK, 1, 2, 0, 1, 4, 3, 2, 2, 4,
207 BOX_CLOCK, 3, 2, 0, 2, 2, 0, 3, 0, 1,
208 BOX_CLOCK, 3, 2, 0, 3, 0, 1, 4, 2, 2,
209 BOX_CLOCK, 3, 2, 0, 4, 2, 2, 3, 4, 3,
210 BOX_CLOCK, 3, 2, 0, 3, 4, 3, 2, 2, 4 },
211 #define WIPE_B8_263 2
212 { BOX_CLOCK, 2, 1, 0, 2, 0, 0, 4, 1, 1,
213 BOX_CLOCK, 2, 1, 0, 4, 1, 1, 2, 2, 2,
214 BOX_CLOCK, 2, 1, 0, 2, 0, 0, 0, 1, 1,
215 BOX_CLOCK, 2, 1, 0, 0, 1, 1, 2, 2, 2,
216 BOX_CLOCK, 2, 3, 0, 2, 4, 0, 4, 3, 1,
217 BOX_CLOCK, 2, 3, 0, 4, 3, 1, 2, 2, 2,
218 BOX_CLOCK, 2, 3, 0, 2, 4, 0, 0, 3, 1,
219 BOX_CLOCK, 2, 3, 0, 0, 3, 1, 2, 2, 2 },
220 #define WIPE_B8_264 3
221 { BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 0, 1,
222 BOX_CLOCK, 1, 2, 0, 1, 0, 1, 2, 2, 2,
223 BOX_CLOCK, 1, 2, 0, 0, 2, 0, 1, 4, 1,
224 BOX_CLOCK, 1, 2, 0, 1, 4, 1, 2, 2, 2,
225 BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 0, 1,
226 BOX_CLOCK, 3, 2, 0, 3, 0, 1, 2, 2, 2,
227 BOX_CLOCK, 3, 2, 0, 4, 2, 0, 3, 4, 1,
228 BOX_CLOCK, 3, 2, 0, 3, 4, 1, 2, 2, 2 },
231 static gint triangles_2t[][2*9] =
235 { 0, 0, 0, 0, 1, 1, 1, 1, 1,
236 1, 0, 1, 0, 0, 0, 1, 1, 1 },
237 #define WIPE_T2_4 WIPE_T2_3+1
238 { 0, 0, 1, 1, 0, 0, 0, 1, 1,
239 1, 0, 0, 0, 1, 1, 1, 1, 1 },
240 #define WIPE_T2_5 WIPE_T2_4+1
241 { 0, 0, 1, 0, 1, 1, 1, 1, 0,
242 1, 0, 1, 0, 0, 1, 1, 1, 0 },
243 #define WIPE_T2_6 WIPE_T2_5+1
244 { 0, 0, 1, 1, 0, 1, 0, 1, 0,
245 1, 0, 1, 0, 1, 0, 1, 1, 1 },
246 #define WIPE_T2_41 WIPE_T2_6+1
247 { 0, 0, 0, 1, 0, 1, 0, 1, 1,
248 1, 0, 1, 0, 1, 1, 1, 1, 2 },
249 #define WIPE_T2_42 WIPE_T2_41+1
250 { 0, 0, 1, 1, 0, 0, 1, 1, 1,
251 0, 0, 1, 0, 1, 2, 1, 1, 1 },
252 #define WIPE_T2_45 WIPE_T2_42+1
253 { 0, 0, 1, 1, 0, 0, 0, 1, 0,
254 1, 0, 0, 0, 1, 0, 1, 1, 1 },
255 #define WIPE_T2_46 WIPE_T2_45+1
256 { 0, 0, 0, 1, 0, 1, 1, 1, 0,
257 0, 0, 0, 0, 1, 1, 1, 1, 0 },
258 #define WIPE_T2_245 WIPE_T2_46+1
259 { 0, 0, 0, 2, 0, 0, 2, 2, 1,
260 2, 2, 0, 0, 2, 0, 0, 0, 1 },
261 #define WIPE_T2_246 WIPE_T2_245+1
262 { 0, 2, 0, 0, 0, 0, 2, 0, 1,
263 2, 0, 0, 2, 2, 0, 0, 2, 1 },
266 static gint triangles_3t[][3*9] =
270 { 0, 0, 1, 1, 0, 0, 0, 2, 1,
271 1, 0, 0, 0, 2, 1, 2, 2, 1,
272 1, 0, 0, 2, 0, 1, 2, 2, 1 },
274 { 0, 0, 1, 2, 0, 1, 2, 1, 0,
275 0, 0, 1, 2, 1, 0, 0, 2, 1,
276 2, 1, 0, 0, 2, 1, 2, 2, 1 },
278 { 0, 0, 1, 0, 2, 1, 1, 2, 0,
279 0, 0, 1, 2, 0, 1, 1, 2, 0,
280 2, 0, 1, 1, 2, 0, 2, 2, 1 },
282 { 0, 0, 1, 2, 0, 1, 0, 1, 0,
283 2, 0, 1, 0, 1, 0, 2, 2, 1,
284 0, 1, 0, 0, 2, 1, 2, 2, 1 },
287 static gint triangles_4t[][4*9] =
290 { 0, 0, 1, 1, 0, 0, 1, 2, 1,
291 0, 0, 1, 0, 2, 2, 1, 2, 1,
292 1, 0, 0, 2, 0, 1, 1, 2, 1,
293 2, 0, 1, 1, 2, 1, 2, 2, 2 },
295 { 0, 0, 2, 2, 0, 1, 0, 1, 1,
296 2, 0, 1, 0, 1, 1, 2, 1, 0,
297 0, 1, 1, 2, 1, 0, 2, 2, 1,
298 0, 1, 1, 0, 2, 2, 2, 2, 1 },
300 { 0, 0, 2, 1, 0, 1, 0, 2, 1,
301 1, 0, 1, 0, 2, 1, 1, 2, 0,
302 1, 0, 1, 1, 2, 0, 2, 2, 1,
303 1, 0, 1, 2, 0, 2, 2, 2, 1 },
305 { 0, 0, 1, 2, 0, 2, 2, 1, 1,
306 0, 0, 1, 0, 1, 0, 2, 1, 1,
307 0, 1, 0, 2, 1, 1, 0, 2, 1,
308 2, 1, 1, 0, 2, 1, 2, 2, 2 },
310 { 0, 0, 0, 1, 0, 1, 1, 2, 0,
311 0, 0, 0, 0, 2, 1, 1, 2, 0,
312 1, 0, 1, 2, 0, 0, 1, 2, 0,
313 2, 0, 0, 1, 2, 0, 2, 2, 1 },
315 { 0, 0, 1, 2, 0, 0, 0, 1, 0,
316 2, 0, 0, 0, 1, 0, 2, 1, 1,
317 0, 1, 0, 2, 1, 1, 2, 2, 0,
318 0, 1, 0, 0, 2, 1, 2, 2, 0 },
320 { 0, 0, 1, 1, 0, 0, 0, 2, 0,
321 1, 0, 0, 0, 2, 0, 1, 2, 1,
322 1, 0, 0, 1, 2, 1, 2, 2, 0,
323 1, 0, 0, 2, 0, 1, 2, 2, 0 },
325 { 0, 0, 0, 2, 0, 1, 2, 1, 0,
326 0, 0, 0, 0, 1, 1, 2, 1, 0,
327 0, 1, 1, 2, 1, 0, 0, 2, 0,
328 2, 1, 0, 0, 2, 0, 2, 2, 1 },
329 #define WIPE_T4_101 8
330 { 0, 0, 1, 2, 0, 1, 1, 1, 0,
331 0, 0, 1, 1, 1, 0, 0, 2, 1,
332 1, 1, 0, 0, 2, 1, 2, 2, 1,
333 2, 0, 1, 1, 1, 0, 2, 2, 1 },
336 static gint triangles_8t[][8*9] =
340 { 0, 0, 0, 1, 0, 1, 1, 1, 1,
341 1, 0, 1, 2, 0, 0, 1, 1, 1,
342 2, 0, 0, 1, 1, 1, 2, 1, 1,
343 1, 1, 1, 2, 1, 1, 2, 2, 0,
344 1, 1, 1, 1, 2, 1, 2, 2, 0,
345 1, 1, 1, 0, 2, 0, 1, 2, 1,
346 0, 1, 1, 1, 1, 1, 0, 2, 0,
347 0, 0, 0, 0, 1, 1, 1, 1, 1 },
349 { 0, 0, 1, 1, 0, 0, 1, 1, 1,
350 1, 0, 0, 2, 0, 1, 1, 1, 1,
351 2, 0, 1, 1, 1, 1, 2, 1, 2,
352 1, 1, 1, 2, 1, 2, 2, 2, 1,
353 1, 1, 1, 1, 2, 0, 2, 2, 1,
354 1, 1, 1, 0, 2, 1, 1, 2, 0,
355 0, 1, 2, 1, 1, 1, 0, 2, 1,
356 0, 0, 1, 0, 1, 2, 1, 1, 1 },
358 { 0, 0, 1, 1, 0, 2, 1, 1, 1,
359 1, 0, 2, 2, 0, 1, 1, 1, 1,
360 2, 0, 1, 1, 1, 1, 2, 1, 0,
361 1, 1, 1, 2, 1, 0, 2, 2, 1,
362 1, 1, 1, 1, 2, 2, 2, 2, 1,
363 1, 1, 1, 0, 2, 1, 1, 2, 2,
364 0, 1, 0, 1, 1, 1, 0, 2, 1,
365 0, 0, 1, 0, 1, 0, 1, 1, 1 },
367 { 0, 0, 0, 1, 0, 1, 1, 1, 0,
368 1, 0, 1, 2, 0, 0, 1, 1, 0,
369 2, 0, 0, 1, 1, 0, 2, 1, 1,
370 1, 1, 0, 2, 1, 1, 2, 2, 0,
371 1, 1, 0, 1, 2, 1, 2, 2, 0,
372 1, 1, 0, 0, 2, 0, 1, 2, 1,
373 0, 1, 1, 1, 1, 0, 0, 2, 0,
374 0, 0, 0, 0, 1, 1, 1, 1, 0 },
376 { 0, 0, 1, 1, 0, 0, 0, 1, 0,
377 1, 0, 0, 0, 1, 0, 1, 1, 1,
378 1, 0, 0, 2, 0, 1, 2, 1, 0,
379 1, 0, 0, 1, 1, 1, 2, 1, 0,
380 0, 1, 0, 1, 1, 1, 1, 2, 0,
381 0, 1, 0, 0, 2, 1, 1, 2, 0,
382 1, 1, 1, 2, 1, 0, 1, 2, 0,
383 2, 1, 0, 1, 2, 0, 2, 2, 1 },
386 static gint triangles_16t[][16*9] =
390 { 0, 0, 1, 2, 0, 1, 1, 1, 0,
391 2, 0, 1, 1, 1, 0, 2, 2, 1,
392 1, 1, 0, 0, 2, 1, 2, 2, 1,
393 0, 0, 1, 1, 1, 0, 0, 2, 1,
394 2, 0, 1, 4, 0, 1, 3, 1, 0,
395 4, 0, 1, 3, 1, 0, 4, 2, 1,
396 3, 1, 0, 2, 2, 1, 4, 2, 1,
397 2, 0, 1, 3, 1, 0, 2, 2, 1,
398 0, 2, 1, 2, 2, 1, 1, 3, 0,
399 2, 2, 1, 1, 3, 0, 2, 4, 1,
400 1, 3, 0, 0, 4, 1, 2, 4, 1,
401 0, 2, 1, 1, 3, 0, 0, 4, 1,
402 2, 2, 1, 4, 2, 1, 3, 3, 0,
403 4, 2, 1, 3, 3, 0, 4, 4, 1,
404 3, 3, 0, 2, 4, 1, 4, 4, 1,
405 2, 2, 1, 3, 3, 0, 2, 4, 1 }
408 typedef struct _GstWipeConfig GstWipeConfig;
410 struct _GstWipeConfig {
418 static GstWipeConfig wipe_config[] =
420 #define WIPE_CONFIG_1 0
421 { boxes_1b[WIPE_B1_1], 1, 0, 0, 0 }, /* 1 */
422 #define WIPE_CONFIG_2 WIPE_CONFIG_1+1
423 { boxes_1b[WIPE_B1_2], 1, 0, 0, 0 }, /* 2 */
424 #define WIPE_CONFIG_3 WIPE_CONFIG_2+1
425 { triangles_2t[WIPE_T2_3], 2, 0, 0, 0 }, /* 3 */
426 #define WIPE_CONFIG_4 WIPE_CONFIG_3+1
427 { triangles_2t[WIPE_T2_4], 2, 0, 0, 0 }, /* 4 */
428 #define WIPE_CONFIG_5 WIPE_CONFIG_4+1
429 { triangles_2t[WIPE_T2_5], 2, 0, 0, 0 }, /* 5 */
430 #define WIPE_CONFIG_6 WIPE_CONFIG_5+1
431 { triangles_2t[WIPE_T2_6], 2, 0, 0, 0 }, /* 6 */
432 #define WIPE_CONFIG_7 WIPE_CONFIG_6+1
433 { triangles_8t[WIPE_T8_7], 8, 1, 1, 0 }, /* 7 */
434 #define WIPE_CONFIG_8 WIPE_CONFIG_7+1
435 { triangles_16t[WIPE_T16_8], 16, 2, 2, 0 }, /* 8 */
437 #define WIPE_CONFIG_21 WIPE_CONFIG_8+1
438 { boxes_2b[WIPE_B2_21], 2, 1, 1, 0 }, /* 21 */
439 #define WIPE_CONFIG_22 WIPE_CONFIG_21+1
440 { boxes_2b[WIPE_B2_22], 2, 1, 1, 0 }, /* 22 */
442 #define WIPE_CONFIG_23 WIPE_CONFIG_22+1
443 { triangles_3t[WIPE_T3_23], 3, 1, 1, 0 }, /* 23 */
444 #define WIPE_CONFIG_24 WIPE_CONFIG_23+1
445 { triangles_3t[WIPE_T3_24], 3, 1, 1, 0 }, /* 24 */
446 #define WIPE_CONFIG_25 WIPE_CONFIG_24+1
447 { triangles_3t[WIPE_T3_23], 3, 1, 1, 0 }, /* 25 */
448 #define WIPE_CONFIG_26 WIPE_CONFIG_25+1
449 { triangles_3t[WIPE_T3_26], 3, 1, 1, 0 }, /* 26 */
450 #define WIPE_CONFIG_41 WIPE_CONFIG_26+1
451 { triangles_2t[WIPE_T2_41], 2, 0, 0, 1 }, /* 41 */
452 #define WIPE_CONFIG_42 WIPE_CONFIG_41+1
453 { triangles_2t[WIPE_T2_42], 2, 0, 0, 1 }, /* 42 */
454 #define WIPE_CONFIG_43 WIPE_CONFIG_42+1
455 { triangles_8t[WIPE_T8_43], 8, 1, 1, 1 }, /* 43 */
456 #define WIPE_CONFIG_44 WIPE_CONFIG_43+1
457 { triangles_8t[WIPE_T8_44], 8, 1, 1, 1 }, /* 44 */
458 #define WIPE_CONFIG_45 WIPE_CONFIG_44+1
459 { triangles_2t[WIPE_T2_45], 2, 0, 0, 0 }, /* 45 */
460 #define WIPE_CONFIG_46 WIPE_CONFIG_45+1
461 { triangles_2t[WIPE_T2_46], 2, 0, 0, 0 }, /* 46 */
462 #define WIPE_CONFIG_47 WIPE_CONFIG_46+1
463 { triangles_8t[WIPE_T8_47], 8, 1, 1, 0 }, /* 47 */
464 #define WIPE_CONFIG_48 WIPE_CONFIG_47+1
465 { triangles_8t[WIPE_T8_48], 8, 1, 1, 0 }, /* 48 */
466 #define WIPE_CONFIG_61 WIPE_CONFIG_48+1
467 { triangles_4t[WIPE_T4_61], 4, 1, 1, 1 }, /* 61 */
468 #define WIPE_CONFIG_62 WIPE_CONFIG_61+1
469 { triangles_4t[WIPE_T4_62], 4, 1, 1, 1 }, /* 62 */
470 #define WIPE_CONFIG_63 WIPE_CONFIG_62+1
471 { triangles_4t[WIPE_T4_63], 4, 1, 1, 1 }, /* 63 */
472 #define WIPE_CONFIG_64 WIPE_CONFIG_63+1
473 { triangles_4t[WIPE_T4_64], 4, 1, 1, 1 }, /* 64 */
474 #define WIPE_CONFIG_65 WIPE_CONFIG_64+1
475 { triangles_4t[WIPE_T4_65], 4, 1, 1, 0 }, /* 65 */
476 #define WIPE_CONFIG_66 WIPE_CONFIG_65+1
477 { triangles_4t[WIPE_T4_66], 4, 1, 1, 0 }, /* 66 */
478 #define WIPE_CONFIG_67 WIPE_CONFIG_66+1
479 { triangles_4t[WIPE_T4_67], 4, 1, 1, 0 }, /* 67 */
480 #define WIPE_CONFIG_68 WIPE_CONFIG_67+1
481 { triangles_4t[WIPE_T4_68], 4, 1, 1, 0 }, /* 68 */
482 #define WIPE_CONFIG_101 WIPE_CONFIG_68+1
483 { triangles_4t[WIPE_T4_101], 4, 1, 1, 0 }, /* 101 */
484 #define WIPE_CONFIG_201 WIPE_CONFIG_101+1
485 { box_clock_4b[WIPE_B4_201], 4, 1, 1, 2 }, /* 201 */
486 #define WIPE_CONFIG_202 WIPE_CONFIG_201+1
487 { box_clock_4b[WIPE_B4_202], 4, 1, 1, 2 }, /* 202 */
488 #define WIPE_CONFIG_203 WIPE_CONFIG_202+1
489 { box_clock_4b[WIPE_B4_203], 4, 1, 1, 2 }, /* 203 */
490 #define WIPE_CONFIG_204 WIPE_CONFIG_203+1
491 { box_clock_4b[WIPE_B4_204], 4, 1, 1, 2 }, /* 204 */
492 #define WIPE_CONFIG_205 WIPE_CONFIG_204+1
493 { box_clock_4b[WIPE_B4_205], 4, 1, 1, 1 }, /* 205 */
494 #define WIPE_CONFIG_206 WIPE_CONFIG_205+1
495 { box_clock_4b[WIPE_B4_206], 4, 1, 1, 1 }, /* 206 */
496 #define WIPE_CONFIG_207 WIPE_CONFIG_206+1
497 { box_clock_4b[WIPE_B4_207], 4, 1, 1, 0 }, /* 207 */
498 #define WIPE_CONFIG_211 WIPE_CONFIG_207+1
499 { box_clock_4b[WIPE_B4_211], 4, 1, 1, 1 }, /* 211 */
500 #define WIPE_CONFIG_212 WIPE_CONFIG_211+1
501 { box_clock_4b[WIPE_B4_212], 4, 1, 1, 1 }, /* 212 */
502 #define WIPE_CONFIG_213 WIPE_CONFIG_212+1
503 { box_clock_4b[WIPE_B4_213], 4, 1, 1, 0 }, /* 213 */
504 #define WIPE_CONFIG_214 WIPE_CONFIG_213+1
505 { box_clock_4b[WIPE_B4_214], 4, 1, 1, 0 }, /* 214 */
506 #define WIPE_CONFIG_221 WIPE_CONFIG_214+1
507 { box_clock_2b[WIPE_B2_221], 2, 1, 1, 1 }, /* 221 */
508 #define WIPE_CONFIG_222 WIPE_CONFIG_221+1
509 { box_clock_2b[WIPE_B2_222], 2, 1, 1, 1 }, /* 222 */
510 #define WIPE_CONFIG_223 WIPE_CONFIG_222+1
511 { box_clock_2b[WIPE_B2_223], 2, 1, 1, 1 }, /* 223 */
512 #define WIPE_CONFIG_224 WIPE_CONFIG_223+1
513 { box_clock_2b[WIPE_B2_224], 2, 1, 1, 1 }, /* 224 */
514 #define WIPE_CONFIG_225 WIPE_CONFIG_224+1
515 { box_clock_2b[WIPE_B2_225], 2, 1, 1, 0 }, /* 225 */
516 #define WIPE_CONFIG_226 WIPE_CONFIG_225+1
517 { box_clock_2b[WIPE_B2_226], 2, 1, 1, 0 }, /* 226 */
518 #define WIPE_CONFIG_227 WIPE_CONFIG_226+1
519 { box_clock_4b[WIPE_B4_227], 4, 1, 1, 1 }, /* 227 */
520 #define WIPE_CONFIG_228 WIPE_CONFIG_227+1
521 { box_clock_4b[WIPE_B4_228], 4, 1, 1, 1 }, /* 228 */
522 #define WIPE_CONFIG_231 WIPE_CONFIG_228+1
523 { box_clock_2b[WIPE_B2_231], 2, 1, 1, 0 }, /* 231 */
524 #define WIPE_CONFIG_232 WIPE_CONFIG_231+1
525 { box_clock_2b[WIPE_B2_232], 2, 1, 1, 0 }, /* 232 */
526 #define WIPE_CONFIG_233 WIPE_CONFIG_232+1
527 { box_clock_2b[WIPE_B2_233], 2, 1, 1, 0 }, /* 233 */
528 #define WIPE_CONFIG_234 WIPE_CONFIG_233+1
529 { box_clock_2b[WIPE_B2_234], 2, 1, 1, 0 }, /* 234 */
530 #define WIPE_CONFIG_235 WIPE_CONFIG_234+1
531 { box_clock_4b[WIPE_B4_235], 4, 1, 1, 0 }, /* 235 */
532 #define WIPE_CONFIG_236 WIPE_CONFIG_235+1
533 { box_clock_4b[WIPE_B4_236], 4, 1, 1, 0 }, /* 236 */
534 #define WIPE_CONFIG_241 WIPE_CONFIG_236+1
535 { box_clock_1b[WIPE_B1_241], 1, 0, 0, 0 }, /* 241 */
536 #define WIPE_CONFIG_242 WIPE_CONFIG_241+1
537 { box_clock_1b[WIPE_B1_242], 1, 0, 0, 0 }, /* 242 */
538 #define WIPE_CONFIG_243 WIPE_CONFIG_242+1
539 { box_clock_1b[WIPE_B1_243], 1, 0, 0, 0 }, /* 243 */
540 #define WIPE_CONFIG_244 WIPE_CONFIG_243+1
541 { box_clock_1b[WIPE_B1_244], 1, 0, 0, 0 }, /* 244 */
542 #define WIPE_CONFIG_245 WIPE_CONFIG_244+1
543 { triangles_2t[WIPE_T2_245], 2, 1, 1, 0 }, /* 245 */
544 #define WIPE_CONFIG_246 WIPE_CONFIG_245+1
545 { triangles_2t[WIPE_T2_246], 2, 1, 1, 0 }, /* 246 */
546 #define WIPE_CONFIG_251 WIPE_CONFIG_246+1
547 { box_clock_2b[WIPE_B2_251], 2, 1, 1, 0 }, /* 251 */
548 #define WIPE_CONFIG_252 WIPE_CONFIG_251+1
549 { box_clock_2b[WIPE_B2_252], 2, 1, 1, 0 }, /* 252 */
550 #define WIPE_CONFIG_253 WIPE_CONFIG_252+1
551 { box_clock_2b[WIPE_B2_253], 2, 1, 1, 0 }, /* 253 */
552 #define WIPE_CONFIG_254 WIPE_CONFIG_253+1
553 { box_clock_2b[WIPE_B2_254], 2, 1, 1, 0 }, /* 254 */
555 #define WIPE_CONFIG_261 WIPE_CONFIG_254+1
556 { box_clock_8b[WIPE_B8_261], 8, 2, 2, 2 }, /* 261 */
557 #define WIPE_CONFIG_262 WIPE_CONFIG_261+1
558 { box_clock_8b[WIPE_B8_262], 8, 2, 2, 2 }, /* 262 */
559 #define WIPE_CONFIG_263 WIPE_CONFIG_262+1
560 { box_clock_8b[WIPE_B8_263], 8, 2, 2, 1 }, /* 263 */
561 #define WIPE_CONFIG_264 WIPE_CONFIG_263+1
562 { box_clock_8b[WIPE_B8_264], 8, 2, 2, 1 }, /* 264 */
566 gst_wipe_boxes_draw (GstMask *mask)
568 GstWipeConfig *config = mask->user_data;
569 gint *impacts = config->objects;
570 gint width = (mask->width >> config->xscale);
571 gint height = (mask->height >> config->yscale);
572 gint depth = (1 << mask->bpp) >> config->cscale;
576 for (i = 0; i < config->nobjects; i++) {
577 switch (impacts[0]) {
579 gst_smpte_paint_vbox (mask->data, mask->width,
580 impacts[1] * width, impacts[2] * height, impacts[3] * depth,
581 impacts[4] * width, impacts[5] * height, impacts[6] * depth);
585 gst_smpte_paint_hbox (mask->data, mask->width,
586 impacts[1] * width, impacts[2] * height, impacts[3] * depth,
587 impacts[4] * width, impacts[5] * height, impacts[6] * depth);
590 gst_smpte_paint_box_clock (mask->data, mask->width,
591 impacts[1] * width, impacts[2] * height, impacts[3] * depth,
592 impacts[4] * width, impacts[5] * height, impacts[6] * depth,
593 impacts[7] * width, impacts[8] * height, impacts[9] * depth);
602 gst_wipe_triangles_clock_draw (GstMask *mask)
604 GstWipeConfig *config = mask->user_data;
605 gint *impacts = config->objects;
606 gint width = (mask->width >> config->xscale);
607 gint height = (mask->height >> config->yscale);
608 gint depth = (1 << mask->bpp) >> config->cscale;
611 for (i = 0; i < config->nobjects; i++) {
612 gst_smpte_paint_triangle_clock (mask->data, mask->width,
613 impacts[0] * width, impacts[1] * height, impacts[2] * depth,
614 impacts[3] * width, impacts[4] * height, impacts[5] * depth,
615 impacts[6] * width, impacts[7] * height, impacts[8] * depth);
621 gst_wipe_triangles_draw (GstMask *mask)
623 GstWipeConfig *config = mask->user_data;
624 gint *impacts = config->objects;
625 gint width = (mask->width >> config->xscale);
626 gint height = (mask->height >> config->yscale);
627 gint depth = (1 << mask->bpp) >> config->cscale;
631 for (i = 0; i < config->nobjects; i++) {
632 gst_smpte_paint_triangle_linear (mask->data, mask->width,
633 impacts[0] * width, impacts[1] * height, impacts[2] * depth,
634 impacts[3] * width, impacts[4] * height, impacts[5] * depth,
635 impacts[6] * width, impacts[7] * height, impacts[8] * depth);
640 static GstMaskDefinition definitions[] = {
642 "A bar moves from left to right",
643 gst_wipe_boxes_draw, _gst_mask_default_destroy,
644 &wipe_config[WIPE_CONFIG_1] },
646 "A bar moves from top to bottom",
647 gst_wipe_boxes_draw, _gst_mask_default_destroy,
648 &wipe_config[WIPE_CONFIG_2] },
650 "A box expands from the upper-left corner to the lower-right corner",
651 gst_wipe_triangles_draw, _gst_mask_default_destroy,
652 &wipe_config[WIPE_CONFIG_3] },
654 "A box expands from the upper-right corner to the lower-left corner",
655 gst_wipe_triangles_draw, _gst_mask_default_destroy,
656 &wipe_config[WIPE_CONFIG_4] },
658 "A box expands from the lower-right corner to the upper-left corner",
659 gst_wipe_triangles_draw, _gst_mask_default_destroy,
660 &wipe_config[WIPE_CONFIG_5] },
662 "A box expands from the lower-left corner to the upper-right corner",
663 gst_wipe_triangles_draw, _gst_mask_default_destroy,
664 &wipe_config[WIPE_CONFIG_6] },
665 { 7 , "four_box_wipe_ci",
666 "A box shape expands from each of the four corners toward the center",
667 gst_wipe_triangles_draw, _gst_mask_default_destroy,
668 &wipe_config[WIPE_CONFIG_7] },
669 { 8 , "four_box_wipe_co",
670 "A box shape expands from the center of each quadrant toward the corners of each quadrant",
671 gst_wipe_triangles_draw, _gst_mask_default_destroy,
672 &wipe_config[WIPE_CONFIG_8] },
674 "A central, vertical line splits and expands toward the left and right edges",
675 gst_wipe_boxes_draw, _gst_mask_default_destroy,
676 &wipe_config[WIPE_CONFIG_21] },
678 "A central, horizontal line splits and expands toward the top and bottom edges",
679 gst_wipe_boxes_draw, _gst_mask_default_destroy,
680 &wipe_config[WIPE_CONFIG_22] },
682 "A box expands from the top edge's midpoint to the bottom corners",
683 gst_wipe_triangles_draw, _gst_mask_default_destroy,
684 &wipe_config[WIPE_CONFIG_23] },
686 "A box expands from the right edge's midpoint to the left corners",
687 gst_wipe_triangles_draw, _gst_mask_default_destroy,
688 &wipe_config[WIPE_CONFIG_24] },
690 "A box expands from the bottom edge's midpoint to the top corners",
691 gst_wipe_triangles_draw, _gst_mask_default_destroy,
692 &wipe_config[WIPE_CONFIG_25] },
694 "A box expands from the left edge's midpoint to the right corners",
695 gst_wipe_triangles_draw, _gst_mask_default_destroy,
696 &wipe_config[WIPE_CONFIG_26] },
698 "A diagonal line moves from the upper-left corner to the lower-right corner",
699 gst_wipe_triangles_draw, _gst_mask_default_destroy,
700 &wipe_config[WIPE_CONFIG_41] },
702 "A diagonal line moves from the upper right corner to the lower-left corner",
703 gst_wipe_triangles_draw, _gst_mask_default_destroy,
704 &wipe_config[WIPE_CONFIG_42] },
706 "Two wedge shapes slide in from the top and bottom edges toward the center",
707 gst_wipe_triangles_draw, _gst_mask_default_destroy,
708 &wipe_config[WIPE_CONFIG_43] },
710 "Two wedge shapes slide in from the left and right edges toward the center",
711 gst_wipe_triangles_draw, _gst_mask_default_destroy,
712 &wipe_config[WIPE_CONFIG_44] },
713 { 45, "barndoor_dbl",
714 "A diagonal line from the lower-left to upper-right corners splits and expands toward the opposite corners",
715 gst_wipe_triangles_draw, _gst_mask_default_destroy,
716 &wipe_config[WIPE_CONFIG_45] },
717 { 46, "barndoor_dtl",
718 "A diagonal line from upper-left to lower-right corners splits and expands toward the opposite corners",
719 gst_wipe_triangles_draw, _gst_mask_default_destroy,
720 &wipe_config[WIPE_CONFIG_46] },
721 { 47, "misc_diagonal_dbd",
722 "Four wedge shapes split from the center and retract toward the four edges",
723 gst_wipe_triangles_draw, _gst_mask_default_destroy,
724 &wipe_config[WIPE_CONFIG_47] },
725 { 48, "misc_diagonal_dd",
726 "A diamond connecting the four edge midpoints simultaneously contracts toward the center and expands toward the edges",
727 gst_wipe_triangles_draw, _gst_mask_default_destroy,
728 &wipe_config[WIPE_CONFIG_48] },
730 "A wedge shape moves from top to bottom",
731 gst_wipe_triangles_draw, _gst_mask_default_destroy,
732 &wipe_config[WIPE_CONFIG_61] },
734 "A wedge shape moves from right to left",
735 gst_wipe_triangles_draw, _gst_mask_default_destroy,
736 &wipe_config[WIPE_CONFIG_62] },
738 "A wedge shape moves from bottom to top",
739 gst_wipe_triangles_draw, _gst_mask_default_destroy,
740 &wipe_config[WIPE_CONFIG_63] },
742 "A wedge shape moves from left to right",
743 gst_wipe_triangles_draw, _gst_mask_default_destroy,
744 &wipe_config[WIPE_CONFIG_64] },
746 "A 'V' shape extending from the bottom edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
747 gst_wipe_triangles_draw, _gst_mask_default_destroy,
748 &wipe_config[WIPE_CONFIG_65] },
750 "A 'V' shape extending from the left edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
751 gst_wipe_triangles_draw, _gst_mask_default_destroy,
752 &wipe_config[WIPE_CONFIG_66] },
754 "A 'V' shape extending from the top edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
755 gst_wipe_triangles_draw, _gst_mask_default_destroy,
756 &wipe_config[WIPE_CONFIG_67] },
758 "A 'V' shape extending from the right edge's midpoint to the opposite corners contracts toward the center and expands toward the edges",
759 gst_wipe_triangles_draw, _gst_mask_default_destroy,
760 &wipe_config[WIPE_CONFIG_68] },
762 "A rectangle expands from the center.",
763 gst_wipe_triangles_draw, _gst_mask_default_destroy,
764 &wipe_config[WIPE_CONFIG_101] },
766 "A radial hand sweeps clockwise from the twelve o'clock position",
767 gst_wipe_boxes_draw, _gst_mask_default_destroy,
768 &wipe_config[WIPE_CONFIG_201] },
770 "A radial hand sweeps clockwise from the three o'clock position",
771 gst_wipe_boxes_draw, _gst_mask_default_destroy,
772 &wipe_config[WIPE_CONFIG_202] },
774 "A radial hand sweeps clockwise from the six o'clock position",
775 gst_wipe_boxes_draw, _gst_mask_default_destroy,
776 &wipe_config[WIPE_CONFIG_203] },
778 "A radial hand sweeps clockwise from the nine o'clock position",
779 gst_wipe_boxes_draw, _gst_mask_default_destroy,
780 &wipe_config[WIPE_CONFIG_204] },
781 { 205, "pinwheel_tbv",
782 "Two radial hands sweep clockwise from the twelve and six o'clock positions",
783 gst_wipe_boxes_draw, _gst_mask_default_destroy,
784 &wipe_config[WIPE_CONFIG_205] },
785 { 206, "pinwheel_tbh",
786 "Two radial hands sweep clockwise from the nine and three o'clock positions",
787 gst_wipe_boxes_draw, _gst_mask_default_destroy,
788 &wipe_config[WIPE_CONFIG_206] },
789 { 207, "pinwheel_fb",
790 "Four radial hands sweep clockwise",
791 gst_wipe_boxes_draw, _gst_mask_default_destroy,
792 &wipe_config[WIPE_CONFIG_207] },
794 "A fan unfolds from the top edge, the fan axis at the center",
795 gst_wipe_boxes_draw, _gst_mask_default_destroy,
796 &wipe_config[WIPE_CONFIG_211] },
798 "A fan unfolds from the right edge, the fan axis at the center",
799 gst_wipe_boxes_draw, _gst_mask_default_destroy,
800 &wipe_config[WIPE_CONFIG_212] },
801 { 213, "doublefan_fov",
802 "Two fans, their axes at the center, unfold from the top and bottom",
803 gst_wipe_boxes_draw, _gst_mask_default_destroy,
804 &wipe_config[WIPE_CONFIG_213] },
805 { 214, "doublefan_foh",
806 "Two fans, their axes at the center, unfold from the left and right",
807 gst_wipe_boxes_draw, _gst_mask_default_destroy,
808 &wipe_config[WIPE_CONFIG_214] },
809 { 221, "singlesweep_cwt",
810 "A radial hand sweeps clockwise from the top edge's midpoint",
811 gst_wipe_boxes_draw, _gst_mask_default_destroy,
812 &wipe_config[WIPE_CONFIG_221] },
813 { 222, "singlesweep_cwr",
814 "A radial hand sweeps clockwise from the right edge's midpoint",
815 gst_wipe_boxes_draw, _gst_mask_default_destroy,
816 &wipe_config[WIPE_CONFIG_222] },
817 { 223, "singlesweep_cwb",
818 "A radial hand sweeps clockwise from the bottom edge's midpoint",
819 gst_wipe_boxes_draw, _gst_mask_default_destroy,
820 &wipe_config[WIPE_CONFIG_223] },
821 { 224, "singlesweep_cwl",
822 "A radial hand sweeps clockwise from the left edge's midpoint",
823 gst_wipe_boxes_draw, _gst_mask_default_destroy,
824 &wipe_config[WIPE_CONFIG_224] },
825 { 225, "doublesweep_pv",
826 "Two radial hands sweep clockwise and counter-clockwise from the top and bottom edges' midpoints",
827 gst_wipe_boxes_draw, _gst_mask_default_destroy,
828 &wipe_config[WIPE_CONFIG_225] },
829 { 226, "doublesweep_pd",
830 "Two radial hands sweep clockwise and counter-clockwise from the left and right edges' midpoints",
831 gst_wipe_boxes_draw, _gst_mask_default_destroy,
832 &wipe_config[WIPE_CONFIG_226] },
833 { 227, "doublesweep_ov",
834 "Two radial hands attached at the top and bottom edges' midpoints sweep from right to left",
835 gst_wipe_boxes_draw, _gst_mask_default_destroy,
836 &wipe_config[WIPE_CONFIG_227] },
837 { 228, "doublesweep_oh",
838 "Two radial hands attached at the left and right edges' midpoints sweep from top to bottom",
839 gst_wipe_boxes_draw, _gst_mask_default_destroy,
840 &wipe_config[WIPE_CONFIG_228] },
842 "A fan unfolds from the bottom, the fan axis at the top edge's midpoint",
843 gst_wipe_boxes_draw, _gst_mask_default_destroy,
844 &wipe_config[WIPE_CONFIG_231] },
846 "A fan unfolds from the left, the fan axis at the right edge's midpoint",
847 gst_wipe_boxes_draw, _gst_mask_default_destroy,
848 &wipe_config[WIPE_CONFIG_232] },
850 "A fan unfolds from the top, the fan axis at the bottom edge's midpoint",
851 gst_wipe_boxes_draw, _gst_mask_default_destroy,
852 &wipe_config[WIPE_CONFIG_233] },
854 "A fan unfolds from the right, the fan axis at the left edge's midpoint",
855 gst_wipe_boxes_draw, _gst_mask_default_destroy,
856 &wipe_config[WIPE_CONFIG_234] },
857 { 235, "doublefan_fiv",
858 "Two fans, their axes at the top and bottom, unfold from the center",
859 gst_wipe_boxes_draw, _gst_mask_default_destroy,
860 &wipe_config[WIPE_CONFIG_235] },
861 { 236, "doublefan_fih",
862 "Two fans, their axes at the left and right, unfold from the center",
863 gst_wipe_boxes_draw, _gst_mask_default_destroy,
864 &wipe_config[WIPE_CONFIG_236] },
865 { 241, "singlesweep_cwtl",
866 "A radial hand sweeps clockwise from the upper-left corner",
867 gst_wipe_boxes_draw, _gst_mask_default_destroy,
868 &wipe_config[WIPE_CONFIG_241] },
869 { 242, "singlesweep_cwbl",
870 "A radial hand sweeps counter-clockwise from the lower-left corner.",
871 gst_wipe_boxes_draw, _gst_mask_default_destroy,
872 &wipe_config[WIPE_CONFIG_242] },
873 { 243, "singlesweep_cwbr",
874 "A radial hand sweeps clockwise from the lower-right corner",
875 gst_wipe_boxes_draw, _gst_mask_default_destroy,
876 &wipe_config[WIPE_CONFIG_243] },
877 { 244, "singlesweep_cwtr",
878 "A radial hand sweeps counter-clockwise from the upper-right corner",
879 gst_wipe_boxes_draw, _gst_mask_default_destroy,
880 &wipe_config[WIPE_CONFIG_244] },
881 { 245, "doublesweep_pdtl",
882 "Two radial hands attached at the upper-left and lower-right corners sweep down and up",
883 gst_wipe_triangles_clock_draw, _gst_mask_default_destroy,
884 &wipe_config[WIPE_CONFIG_245] },
885 { 246, "doublesweep_pdbl",
886 "Two radial hands attached at the lower-left and upper-right corners sweep down and up",
887 gst_wipe_triangles_clock_draw, _gst_mask_default_destroy,
888 &wipe_config[WIPE_CONFIG_246] },
889 { 251, "saloondoor_t",
890 "Two radial hands attached at the upper-left and upper-right corners sweep down",
891 gst_wipe_boxes_draw, _gst_mask_default_destroy,
892 &wipe_config[WIPE_CONFIG_251] },
893 { 252, "saloondoor_l",
894 "Two radial hands attached at the upper-left and lower-left corners sweep to the right",
895 gst_wipe_boxes_draw, _gst_mask_default_destroy,
896 &wipe_config[WIPE_CONFIG_252] },
897 { 253, "saloondoor_b",
898 "Two radial hands attached at the lower-left and lower-right corners sweep up",
899 gst_wipe_boxes_draw, _gst_mask_default_destroy,
900 &wipe_config[WIPE_CONFIG_253] },
901 { 254, "saloondoor_r",
902 "Two radial hands attached at the upper-right and lower-right corners sweep to the left",
903 gst_wipe_boxes_draw, _gst_mask_default_destroy,
904 &wipe_config[WIPE_CONFIG_254] },
905 { 261, "windshield_r",
906 "Two radial hands attached at the midpoints of the top and bottom halves sweep from right to left",
907 gst_wipe_boxes_draw, _gst_mask_default_destroy,
908 &wipe_config[WIPE_CONFIG_261] },
909 { 262, "windshield_u",
910 "Two radial hands attached at the midpoints of the left and right halves sweep from top to bottom",
911 gst_wipe_boxes_draw, _gst_mask_default_destroy,
912 &wipe_config[WIPE_CONFIG_262] },
913 { 263, "windshield_v",
914 "Two sets of radial hands attached at the midpoints of the top and bottom halves sweep from top to bottom and bottom to top",
915 gst_wipe_boxes_draw, _gst_mask_default_destroy,
916 &wipe_config[WIPE_CONFIG_263] },
917 { 264, "windshield_h",
918 "Two sets of radial hands attached at the midpoints of the left and right halves sweep from left to right and right to left",
919 gst_wipe_boxes_draw, _gst_mask_default_destroy,
920 &wipe_config[WIPE_CONFIG_264] },
921 { 0, NULL, NULL, NULL }
925 _gst_barboxwipes_register (void)
929 while (definitions[i].short_name) {
930 _gst_mask_register (&definitions[i]);