Arm-2D  
2D Image Processing Library for Cortex-M Processors
arm_2d_tile.h
1/*
2 * Copyright (C) 2010-2022 Arm Limited or its affiliates. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Licensed under the Apache License, Version 2.0 (the License); you may
7 * not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19/* ----------------------------------------------------------------------
20 * Project: Arm-2D Library
21 * Title: arm_2d_tile.h
22 * Description: Public header file to contain the basic tile operations
23 *
24 * $Date: 12. April 2024
25 * $Revision: V.1.4.5
26 *
27 * Target Processor: Cortex-M cores
28 * -------------------------------------------------------------------- */
29
30#ifndef __ARM_2D_TILE_H__
31#define __ARM_2D_TILE_H__
32
33/*============================ INCLUDES ======================================*/
34#include "arm_2d_types.h"
35
36#ifdef __cplusplus
37extern "C" {
38#endif
39
40
41
42/*============================ MACROS ========================================*/
43
44/*!
45 * \addtogroup Deprecated
46 * @{
47 */
48#define arm_2d_c8bit_tile_copy_with_colour_masking \
49 arm_2d_c8bit_tile_copy_with_colour_keying
50
51#define arm_2d_rgb16_tile_copy_with_colour_masking \
52 arm_2d_rgb16_tile_copy_with_colour_keying
53
54#define arm_2d_rgb32_tile_copy_with_colour_masking \
55 arm_2d_rgb32_tile_copy_with_colour_keying
56/*! @} */
57
58/*!
59 * \addtogroup Tile 2 Tile Operations
60 * @{
61 */
62/*============================ MACROFIED FUNCTIONS ===========================*/
63
64#define arm_2d_c8bit_tile_copy( __SRC_ADDR, /* source tile address */ \
65 __DES_ADDR, /* target tile address */ \
66 __DES_REGION_ADDR, /* target region address*/\
67 __MODE) /* mode */ \
68 arm_2dp_c8bit_tile_copy(NULL, \
69 (__SRC_ADDR), \
70 (__DES_ADDR), \
71 (__DES_REGION_ADDR), \
72 (__MODE))
73
74#define arm_2d_rgb16_tile_copy( __SRC_ADDR, /* source tile address */ \
75 __DES_ADDR, /* target tile address */ \
76 __DES_REGION_ADDR, /* target region address*/\
77 __MODE) /* mode */ \
78 arm_2dp_rgb16_tile_copy(NULL, \
79 (__SRC_ADDR), \
80 (__DES_ADDR), \
81 (__DES_REGION_ADDR), \
82 (__MODE))
83
84#define arm_2d_rgb32_tile_copy( __SRC_ADDR, /* source tile address */ \
85 __DES_ADDR, /* target tile address */ \
86 __DES_REGION_ADDR, /* target region address*/\
87 __MODE) /* mode */ \
88 arm_2dp_rgb32_tile_copy(NULL, \
89 (__SRC_ADDR), \
90 (__DES_ADDR), \
91 (__DES_REGION_ADDR), \
92 (__MODE))
93
94#define arm_2d_c8bit_tile_copy_only( \
95 __SRC_ADDR, /* source tile address */ \
96 __DES_ADDR, /* target tile address */ \
97 __DES_REGION_ADDR) /* target region address*/\
98 arm_2dp_c8bit_tile_copy_only(NULL, \
99 (__SRC_ADDR), \
100 (__DES_ADDR), \
101 (__DES_REGION_ADDR))
102
103#define arm_2d_rgb16_tile_copy_only( \
104 __SRC_ADDR, /* source tile address */ \
105 __DES_ADDR, /* target tile address */ \
106 __DES_REGION_ADDR) /* target region address*/\
107 arm_2dp_rgb16_tile_copy_only(NULL, \
108 (__SRC_ADDR), \
109 (__DES_ADDR), \
110 (__DES_REGION_ADDR))
111
112#define arm_2d_rgb32_tile_copy_only( \
113 __SRC_ADDR, /* source tile address */ \
114 __DES_ADDR, /* target tile address */ \
115 __DES_REGION_ADDR) /* target region address*/\
116 arm_2dp_rgb32_tile_copy_only(NULL, \
117 (__SRC_ADDR), \
118 (__DES_ADDR), \
119 (__DES_REGION_ADDR))
120
121#define arm_2d_c8bit_tile_copy_with_x_mirror( \
122 __SRC_ADDR, /* source tile address */ \
123 __DES_ADDR, /* target tile address */ \
124 __DES_REGION_ADDR) /* target region address*/\
125 arm_2dp_c8bit_tile_copy_with_x_mirror( \
126 NULL, \
127 (__SRC_ADDR), \
128 (__DES_ADDR), \
129 (__DES_REGION_ADDR))
130
131#define arm_2d_rgb16_tile_copy_with_x_mirror( \
132 __SRC_ADDR, /* source tile address */ \
133 __DES_ADDR, /* target tile address */ \
134 __DES_REGION_ADDR) /* target region address*/\
135 arm_2dp_rgb16_tile_copy_with_x_mirror( \
136 NULL, \
137 (__SRC_ADDR), \
138 (__DES_ADDR), \
139 (__DES_REGION_ADDR))
140
141#define arm_2d_rgb32_tile_copy_with_x_mirror( \
142 __SRC_ADDR, /* source tile address */ \
143 __DES_ADDR, /* target tile address */ \
144 __DES_REGION_ADDR) /* target region address*/\
145 arm_2dp_rgb32_tile_copy_with_x_mirror( \
146 NULL, \
147 (__SRC_ADDR), \
148 (__DES_ADDR), \
149 (__DES_REGION_ADDR))
150
151#define arm_2d_c8bit_tile_copy_with_y_mirror( \
152 __SRC_ADDR, /* source tile address */ \
153 __DES_ADDR, /* target tile address */ \
154 __DES_REGION_ADDR) /* target region address*/\
155 arm_2dp_c8bit_tile_copy_with_y_mirror( \
156 NULL, \
157 (__SRC_ADDR), \
158 (__DES_ADDR), \
159 (__DES_REGION_ADDR))
160
161#define arm_2d_rgb16_tile_copy_with_y_mirror( \
162 __SRC_ADDR, /* source tile address */ \
163 __DES_ADDR, /* target tile address */ \
164 __DES_REGION_ADDR) /* target region address*/\
165 arm_2dp_rgb16_tile_copy_with_y_mirror( \
166 NULL, \
167 (__SRC_ADDR), \
168 (__DES_ADDR), \
169 (__DES_REGION_ADDR))
170
171#define arm_2d_rgb32_tile_copy_with_y_mirror( \
172 __SRC_ADDR, /* source tile address */ \
173 __DES_ADDR, /* target tile address */ \
174 __DES_REGION_ADDR) /* target region address*/\
175 arm_2dp_rgb32_tile_copy_with_y_mirror( \
176 NULL, \
177 (__SRC_ADDR), \
178 (__DES_ADDR), \
179 (__DES_REGION_ADDR))
180
181#define arm_2d_c8bit_tile_copy_with_xy_mirror( \
182 __SRC_ADDR, /* source tile address */ \
183 __DES_ADDR, /* target tile address */ \
184 __DES_REGION_ADDR) /* target region address*/\
185 arm_2dp_c8bit_tile_copy_with_xy_mirror( \
186 NULL, \
187 (__SRC_ADDR), \
188 (__DES_ADDR), \
189 (__DES_REGION_ADDR))
190
191#define arm_2d_rgb16_tile_copy_with_xy_mirror( \
192 __SRC_ADDR, /* source tile address */ \
193 __DES_ADDR, /* target tile address */ \
194 __DES_REGION_ADDR) /* target region address*/\
195 arm_2dp_rgb16_tile_copy_with_xy_mirror( \
196 NULL, \
197 (__SRC_ADDR), \
198 (__DES_ADDR), \
199 (__DES_REGION_ADDR))
200
201#define arm_2d_rgb32_tile_copy_with_xy_mirror( \
202 __SRC_ADDR, /* source tile address */ \
203 __DES_ADDR, /* target tile address */ \
204 __DES_REGION_ADDR) /* target region address*/\
205 arm_2dp_rgb32_tile_copy_with_xy_mirror( \
206 NULL, \
207 (__SRC_ADDR), \
208 (__DES_ADDR), \
209 (__DES_REGION_ADDR))
210
211#define arm_2d_c8bit_tile_fill_only( \
212 __SRC_ADDR, /* source tile address */ \
213 __DES_ADDR, /* target tile address */ \
214 __DES_REGION_ADDR) /* target region address*/\
215 arm_2dp_c8bit_tile_fill_only(NULL, \
216 (__SRC_ADDR), \
217 (__DES_ADDR), \
218 (__DES_REGION_ADDR))
219
220#define arm_2d_rgb16_tile_fill_only( \
221 __SRC_ADDR, /* source tile address */ \
222 __DES_ADDR, /* target tile address */ \
223 __DES_REGION_ADDR) /* target region address*/\
224 arm_2dp_rgb16_tile_fill_only(NULL, \
225 (__SRC_ADDR), \
226 (__DES_ADDR), \
227 (__DES_REGION_ADDR))
228
229#define arm_2d_rgb32_tile_fill_only( \
230 __SRC_ADDR, /* source tile address */ \
231 __DES_ADDR, /* target tile address */ \
232 __DES_REGION_ADDR) /* target region address*/\
233 arm_2dp_rgb32_tile_fill_only(NULL, \
234 (__SRC_ADDR), \
235 (__DES_ADDR), \
236 (__DES_REGION_ADDR))
237
238#define arm_2d_c8bit_tile_fill_with_x_mirror( \
239 __SRC_ADDR, /* source tile address */ \
240 __DES_ADDR, /* target tile address */ \
241 __DES_REGION_ADDR) /* target region address*/\
242 arm_2dp_c8bit_tile_fill_with_x_mirror( \
243 NULL, \
244 (__SRC_ADDR), \
245 (__DES_ADDR), \
246 (__DES_REGION_ADDR))
247
248#define arm_2d_rgb16_tile_fill_with_x_mirror( \
249 __SRC_ADDR, /* source tile address */ \
250 __DES_ADDR, /* target tile address */ \
251 __DES_REGION_ADDR) /* target region address*/\
252 arm_2dp_rgb16_tile_fill_with_x_mirror( \
253 NULL, \
254 (__SRC_ADDR), \
255 (__DES_ADDR), \
256 (__DES_REGION_ADDR))
257
258#define arm_2d_rgb32_tile_fill_with_x_mirror( \
259 __SRC_ADDR, /* source tile address */ \
260 __DES_ADDR, /* target tile address */ \
261 __DES_REGION_ADDR) /* target region address*/\
262 arm_2dp_rgb32_tile_fill_with_x_mirror( \
263 NULL, \
264 (__SRC_ADDR), \
265 (__DES_ADDR), \
266 (__DES_REGION_ADDR))
267
268#define arm_2d_c8bit_tile_fill_with_y_mirror( \
269 __SRC_ADDR, /* source tile address */ \
270 __DES_ADDR, /* target tile address */ \
271 __DES_REGION_ADDR) /* target region address*/\
272 arm_2dp_c8bit_tile_fill_with_y_mirror( \
273 NULL, \
274 (__SRC_ADDR), \
275 (__DES_ADDR), \
276 (__DES_REGION_ADDR))
277
278#define arm_2d_rgb16_tile_fill_with_y_mirror( \
279 __SRC_ADDR, /* source tile address */ \
280 __DES_ADDR, /* target tile address */ \
281 __DES_REGION_ADDR) /* target region address*/\
282 arm_2dp_rgb16_tile_fill_with_y_mirror( \
283 NULL, \
284 (__SRC_ADDR), \
285 (__DES_ADDR), \
286 (__DES_REGION_ADDR))
287
288#define arm_2d_rgb32_tile_fill_with_y_mirror( \
289 __SRC_ADDR, /* source tile address */ \
290 __DES_ADDR, /* target tile address */ \
291 __DES_REGION_ADDR) /* target region address*/\
292 arm_2dp_rgb32_tile_fill_with_y_mirror( \
293 NULL, \
294 (__SRC_ADDR), \
295 (__DES_ADDR), \
296 (__DES_REGION_ADDR))
297
298#define arm_2d_c8bit_tile_fill_with_xy_mirror( \
299 __SRC_ADDR, /* source tile address */ \
300 __DES_ADDR, /* target tile address */ \
301 __DES_REGION_ADDR) /* target region address*/\
302 arm_2dp_c8bit_tile_fill_with_xy_mirror( \
303 NULL, \
304 (__SRC_ADDR), \
305 (__DES_ADDR), \
306 (__DES_REGION_ADDR))
307
308#define arm_2d_rgb16_tile_fill_with_xy_mirror( \
309 __SRC_ADDR, /* source tile address */ \
310 __DES_ADDR, /* target tile address */ \
311 __DES_REGION_ADDR) /* target region address*/\
312 arm_2dp_rgb16_tile_fill_with_xy_mirror( \
313 NULL, \
314 (__SRC_ADDR), \
315 (__DES_ADDR), \
316 (__DES_REGION_ADDR))
317
318#define arm_2d_rgb32_tile_fill_with_xy_mirror( \
319 __SRC_ADDR, /* source tile address */ \
320 __DES_ADDR, /* target tile address */ \
321 __DES_REGION_ADDR) /* target region address*/\
322 arm_2dp_rgb32_tile_fill_with_xy_mirror( \
323 NULL, \
324 (__SRC_ADDR), \
325 (__DES_ADDR), \
326 (__DES_REGION_ADDR))
327
328#define arm_2d_c8bit_tile_copy_with_colour_keying( \
329 __SRC_ADDR, /* source tile address */ \
330 __DES_ADDR, /* target tile address */ \
331 __DES_REGION_ADDR, /* target region address*/\
332 __MSK_COLOUR, /* mask(key) colour */ \
333 __MODE) /* mode */ \
334 arm_2dp_c8bit_tile_copy_with_colour_keying( \
335 NULL, \
336 (__SRC_ADDR), \
337 (__DES_ADDR), \
338 (__DES_REGION_ADDR), \
339 (__MSK_COLOUR), \
340 (__MODE))
341
342
343#define arm_2d_rgb16_tile_copy_with_colour_keying( \
344 __SRC_ADDR, /* source tile address */ \
345 __DES_ADDR, /* target tile address */ \
346 __DES_REGION_ADDR, /* target region address*/\
347 __MSK_COLOUR, /* mask(key) colour */ \
348 __MODE) /* mode */ \
349 arm_2dp_rgb16_tile_copy_with_colour_keying( \
350 NULL, \
351 (__SRC_ADDR), \
352 (__DES_ADDR), \
353 (__DES_REGION_ADDR), \
354 (__MSK_COLOUR), \
355 (__MODE))
356
357#define arm_2d_rgb32_tile_copy_with_colour_keying( \
358 __SRC_ADDR, /* source tile address */ \
359 __DES_ADDR, /* target tile address */ \
360 __DES_REGION_ADDR, /* target region address*/\
361 __MSK_COLOUR, /* mask(key) colour */ \
362 __MODE) /* mode */ \
363 arm_2dp_rgb32_tile_copy_with_colour_keying( \
364 NULL, \
365 (__SRC_ADDR), \
366 (__DES_ADDR), \
367 (__DES_REGION_ADDR), \
368 (__MSK_COLOUR), \
369 (__MODE))
370
371#define arm_2d_c8bit_tile_copy_with_colour_keying_only( \
372 __SRC_ADDR, /* source tile address */ \
373 __DES_ADDR, /* target tile address */ \
374 __DES_REGION_ADDR, /* target region address*/\
375 __MSK_COLOUR) /* mask(key) colour */ \
376 arm_2dp_c8bit_tile_copy_with_colour_keying_only( \
377 NULL, \
378 (__SRC_ADDR), \
379 (__DES_ADDR), \
380 (__DES_REGION_ADDR), \
381 (__MSK_COLOUR))
382
383
384#define arm_2d_rgb16_tile_copy_with_colour_keying_only( \
385 __SRC_ADDR, /* source tile address */ \
386 __DES_ADDR, /* target tile address */ \
387 __DES_REGION_ADDR, /* target region address*/\
388 __MSK_COLOUR) /* mask(key) colour */ \
389 arm_2dp_rgb16_tile_copy_with_colour_keying_only( \
390 NULL, \
391 (__SRC_ADDR), \
392 (__DES_ADDR), \
393 (__DES_REGION_ADDR), \
394 (__MSK_COLOUR))
395
396#define arm_2d_rgb32_tile_copy_with_colour_keying_only( \
397 __SRC_ADDR, /* source tile address */ \
398 __DES_ADDR, /* target tile address */ \
399 __DES_REGION_ADDR, /* target region address*/\
400 __MSK_COLOUR) /* mask(key) colour */ \
401 arm_2dp_rgb32_tile_copy_with_colour_keying_only( \
402 NULL, \
403 (__SRC_ADDR), \
404 (__DES_ADDR), \
405 (__DES_REGION_ADDR), \
406 (__MSK_COLOUR))
407
408
409#define arm_2d_c8bit_tile_copy_with_colour_keying_and_x_mirror( \
410 __SRC_ADDR, /* source tile address */ \
411 __DES_ADDR, /* target tile address */ \
412 __DES_REGION_ADDR, /* target region address*/\
413 __MSK_COLOUR) /* mask(key) colour */ \
414 arm_2dp_c8bit_tile_copy_with_colour_keying_and_x_mirror( \
415 NULL, \
416 (__SRC_ADDR), \
417 (__DES_ADDR), \
418 (__DES_REGION_ADDR), \
419 (__MSK_COLOUR))
420
421#define arm_2d_rgb16_tile_copy_with_colour_keying_and_x_mirror( \
422 __SRC_ADDR, /* source tile address */ \
423 __DES_ADDR, /* target tile address */ \
424 __DES_REGION_ADDR, /* target region address*/\
425 __MSK_COLOUR) /* mask(key) colour */ \
426 arm_2dp_rgb16_tile_copy_with_colour_keying_and_x_mirror( \
427 NULL, \
428 (__SRC_ADDR), \
429 (__DES_ADDR), \
430 (__DES_REGION_ADDR), \
431 (__MSK_COLOUR))
432
433#define arm_2d_rgb32_tile_copy_with_colour_keying_and_x_mirror( \
434 __SRC_ADDR, /* source tile address */ \
435 __DES_ADDR, /* target tile address */ \
436 __DES_REGION_ADDR, /* target region address*/\
437 __MSK_COLOUR) /* mask(key) colour */ \
438 arm_2dp_rgb32_tile_copy_with_colour_keying_and_x_mirror( \
439 NULL, \
440 (__SRC_ADDR), \
441 (__DES_ADDR), \
442 (__DES_REGION_ADDR), \
443 (__MSK_COLOUR))
444
445#define arm_2d_c8bit_tile_copy_with_colour_keying_and_y_mirror( \
446 __SRC_ADDR, /* source tile address */ \
447 __DES_ADDR, /* target tile address */ \
448 __DES_REGION_ADDR, /* target region address*/\
449 __MSK_COLOUR) /* mask(key) colour */ \
450 arm_2dp_c8bit_tile_copy_with_colour_keying_and_y_mirror( \
451 NULL, \
452 (__SRC_ADDR), \
453 (__DES_ADDR), \
454 (__DES_REGION_ADDR), \
455 (__MSK_COLOUR))
456
457#define arm_2d_rgb16_tile_copy_with_colour_keying_and_y_mirror( \
458 __SRC_ADDR, /* source tile address */ \
459 __DES_ADDR, /* target tile address */ \
460 __DES_REGION_ADDR, /* target region address*/\
461 __MSK_COLOUR) /* mask(key) colour */ \
462 arm_2dp_rgb16_tile_copy_with_colour_keying_and_y_mirror( \
463 NULL, \
464 (__SRC_ADDR), \
465 (__DES_ADDR), \
466 (__DES_REGION_ADDR), \
467 (__MSK_COLOUR))
468
469#define arm_2d_rgb32_tile_copy_with_colour_keying_and_y_mirror( \
470 __SRC_ADDR, /* source tile address */ \
471 __DES_ADDR, /* target tile address */ \
472 __DES_REGION_ADDR, /* target region address*/\
473 __MSK_COLOUR) /* mask(key) colour */ \
474 arm_2dp_rgb32_tile_copy_with_colour_keying_and_y_mirror( \
475 NULL, \
476 (__SRC_ADDR), \
477 (__DES_ADDR), \
478 (__DES_REGION_ADDR), \
479 (__MSK_COLOUR))
480
481#define arm_2d_c8bit_tile_copy_with_colour_keying_and_xy_mirror( \
482 __SRC_ADDR, /* source tile address */ \
483 __DES_ADDR, /* target tile address */ \
484 __DES_REGION_ADDR, /* target region address*/\
485 __MSK_COLOUR) /* mask(key) colour */ \
486 arm_2dp_c8bit_tile_copy_with_colour_keying_and_xy_mirror( \
487 NULL, \
488 (__SRC_ADDR), \
489 (__DES_ADDR), \
490 (__DES_REGION_ADDR), \
491 (__MSK_COLOUR))
492
493#define arm_2d_rgb16_tile_copy_with_colour_keying_and_xy_mirror( \
494 __SRC_ADDR, /* source tile address */ \
495 __DES_ADDR, /* target tile address */ \
496 __DES_REGION_ADDR, /* target region address*/\
497 __MSK_COLOUR) /* mask(key) colour */ \
498 arm_2dp_rgb16_tile_copy_with_colour_keying_and_xy_mirror( \
499 NULL, \
500 (__SRC_ADDR), \
501 (__DES_ADDR), \
502 (__DES_REGION_ADDR), \
503 (__MSK_COLOUR))
504
505#define arm_2d_rgb32_tile_copy_with_colour_keying_and_xy_mirror( \
506 __SRC_ADDR, /* source tile address */ \
507 __DES_ADDR, /* target tile address */ \
508 __DES_REGION_ADDR, /* target region address*/\
509 __MSK_COLOUR) /* mask(key) colour */ \
510 arm_2dp_rgb32_tile_copy_with_colour_keying_and_xy_mirror( \
511 NULL, \
512 (__SRC_ADDR), \
513 (__DES_ADDR), \
514 (__DES_REGION_ADDR), \
515 (__MSK_COLOUR))
516
517#define arm_2d_c8bit_tile_fill_with_colour_keying_only( \
518 __SRC_ADDR, /* source tile address */ \
519 __DES_ADDR, /* target tile address */ \
520 __DES_REGION_ADDR, /* target region address*/\
521 __MSK_COLOUR) /* mask(key) colour */ \
522 arm_2dp_c8bit_tile_fill_with_colour_keying_only( \
523 NULL, \
524 (__SRC_ADDR), \
525 (__DES_ADDR), \
526 (__DES_REGION_ADDR), \
527 (__MSK_COLOUR))
528
529
530#define arm_2d_rgb16_tile_fill_with_colour_keying_only( \
531 __SRC_ADDR, /* source tile address */ \
532 __DES_ADDR, /* target tile address */ \
533 __DES_REGION_ADDR, /* target region address*/\
534 __MSK_COLOUR) /* mask(key) colour */ \
535 arm_2dp_rgb16_tile_fill_with_colour_keying_only( \
536 NULL, \
537 (__SRC_ADDR), \
538 (__DES_ADDR), \
539 (__DES_REGION_ADDR), \
540 (__MSK_COLOUR))
541
542#define arm_2d_rgb32_tile_fill_with_colour_keying_only( \
543 __SRC_ADDR, /* source tile address */ \
544 __DES_ADDR, /* target tile address */ \
545 __DES_REGION_ADDR, /* target region address*/\
546 __MSK_COLOUR) /* mask(key) colour */ \
547 arm_2dp_rgb32_tile_fill_with_colour_keying_only( \
548 NULL, \
549 (__SRC_ADDR), \
550 (__DES_ADDR), \
551 (__DES_REGION_ADDR), \
552 (__MSK_COLOUR))
553
554
555#define arm_2d_c8bit_tile_fill_with_colour_keying_and_x_mirror( \
556 __SRC_ADDR, /* source tile address */ \
557 __DES_ADDR, /* target tile address */ \
558 __DES_REGION_ADDR, /* target region address*/\
559 __MSK_COLOUR) /* mask(key) colour */ \
560 arm_2dp_c8bit_tile_fill_with_colour_keying_and_x_mirror( \
561 NULL, \
562 (__SRC_ADDR), \
563 (__DES_ADDR), \
564 (__DES_REGION_ADDR), \
565 (__MSK_COLOUR))
566
567#define arm_2d_rgb16_tile_fill_with_colour_keying_and_x_mirror( \
568 __SRC_ADDR, /* source tile address */ \
569 __DES_ADDR, /* target tile address */ \
570 __DES_REGION_ADDR, /* target region address*/\
571 __MSK_COLOUR) /* mask(key) colour */ \
572 arm_2dp_rgb16_tile_fill_with_colour_keying_and_x_mirror( \
573 NULL, \
574 (__SRC_ADDR), \
575 (__DES_ADDR), \
576 (__DES_REGION_ADDR), \
577 (__MSK_COLOUR))
578
579#define arm_2d_rgb32_tile_fill_with_colour_keying_and_x_mirror( \
580 __SRC_ADDR, /* source tile address */ \
581 __DES_ADDR, /* target tile address */ \
582 __DES_REGION_ADDR, /* target region address*/\
583 __MSK_COLOUR) /* mask(key) colour */ \
584 arm_2dp_rgb32_tile_fill_with_colour_keying_and_x_mirror( \
585 NULL, \
586 (__SRC_ADDR), \
587 (__DES_ADDR), \
588 (__DES_REGION_ADDR), \
589 (__MSK_COLOUR))
590
591#define arm_2d_c8bit_tile_fill_with_colour_keying_and_y_mirror( \
592 __SRC_ADDR, /* source tile address */ \
593 __DES_ADDR, /* target tile address */ \
594 __DES_REGION_ADDR, /* target region address*/\
595 __MSK_COLOUR) /* mask(key) colour */ \
596 arm_2dp_c8bit_tile_fill_with_colour_keying_and_y_mirror( \
597 NULL, \
598 (__SRC_ADDR), \
599 (__DES_ADDR), \
600 (__DES_REGION_ADDR), \
601 (__MSK_COLOUR))
602
603#define arm_2d_rgb16_tile_fill_with_colour_keying_and_y_mirror( \
604 __SRC_ADDR, /* source tile address */ \
605 __DES_ADDR, /* target tile address */ \
606 __DES_REGION_ADDR, /* target region address*/\
607 __MSK_COLOUR) /* mask(key) colour */ \
608 arm_2dp_rgb16_tile_fill_with_colour_keying_and_y_mirror( \
609 NULL, \
610 (__SRC_ADDR), \
611 (__DES_ADDR), \
612 (__DES_REGION_ADDR), \
613 (__MSK_COLOUR))
614
615#define arm_2d_rgb32_tile_fill_with_colour_keying_and_y_mirror( \
616 __SRC_ADDR, /* source tile address */ \
617 __DES_ADDR, /* target tile address */ \
618 __DES_REGION_ADDR, /* target region address*/\
619 __MSK_COLOUR) /* mask(key) colour */ \
620 arm_2dp_rgb32_tile_fill_with_colour_keying_and_y_mirror( \
621 NULL, \
622 (__SRC_ADDR), \
623 (__DES_ADDR), \
624 (__DES_REGION_ADDR), \
625 (__MSK_COLOUR))
626
627#define arm_2d_c8bit_tile_fill_with_colour_keying_and_xy_mirror( \
628 __SRC_ADDR, /* source tile address */ \
629 __DES_ADDR, /* target tile address */ \
630 __DES_REGION_ADDR, /* target region address*/\
631 __MSK_COLOUR) /* mask(key) colour */ \
632 arm_2dp_c8bit_tile_fill_with_colour_keying_and_xy_mirror( \
633 NULL, \
634 (__SRC_ADDR), \
635 (__DES_ADDR), \
636 (__DES_REGION_ADDR), \
637 (__MSK_COLOUR))
638
639#define arm_2d_rgb16_tile_fill_with_colour_keying_and_xy_mirror( \
640 __SRC_ADDR, /* source tile address */ \
641 __DES_ADDR, /* target tile address */ \
642 __DES_REGION_ADDR, /* target region address*/\
643 __MSK_COLOUR) /* mask(key) colour */ \
644 arm_2dp_rgb16_tile_fill_with_colour_keying_and_xy_mirror( \
645 NULL, \
646 (__SRC_ADDR), \
647 (__DES_ADDR), \
648 (__DES_REGION_ADDR), \
649 (__MSK_COLOUR))
650
651#define arm_2d_rgb32_tile_fill_with_colour_keying_and_xy_mirror( \
652 __SRC_ADDR, /* source tile address */ \
653 __DES_ADDR, /* target tile address */ \
654 __DES_REGION_ADDR, /* target region address*/\
655 __MSK_COLOUR) /* mask(key) colour */ \
656 arm_2dp_rgb32_tile_fill_with_colour_keying_and_xy_mirror( \
657 NULL, \
658 (__SRC_ADDR), \
659 (__DES_ADDR), \
660 (__DES_REGION_ADDR), \
661 (__MSK_COLOUR))
662
663
664
665
666
667/*
668 calculate the start address
669 HOW IT WORKS:
670
671 Base Address
672 +------------------------------------------------------------------------+
673 | |
674 |<------------------------------- iWidth ------------------------------->|
675 | |
676 | |
677 | Start Address = Base Address + iX + iY * iWidth |
678 | (iX,iY) |
679 |<-------- iX --------->+------------------------------+ |
680 | | | |
681 | | Valid Region | |
682 | | | |
683 | +------------------------------+ |
684 ... ...
685 | |
686 +------------------------------------------------------------------------+
687 */
688
689#define __arm_2d_get_address_and_region_from_tile( __TILE_PTR, \
690 __VALID_REGION_NAME, \
691 __LOCATION_OFFSET_PTR, \
692 __TYPE, \
693 __BUF_PTR_NAME) \
694 arm_2d_region_t __VALID_REGION_NAME; \
695 assert(NULL != (__TILE_PTR)); \
696 __TYPE *(__BUF_PTR_NAME) = NULL; \
697 \
698 (__TILE_PTR) = arm_2d_tile_get_root((__TILE_PTR), \
699 &__VALID_REGION_NAME, \
700 __LOCATION_OFFSET_PTR); \
701 \
702 if (NULL != (__TILE_PTR)) { \
703 (__BUF_PTR_NAME) = ((__TYPE *)((__TILE_PTR)->pchBuffer)) \
704 + (__TILE_PTR)->tRegion.tSize.iWidth * \
705 __VALID_REGION_NAME.tLocation.iY \
706 + __VALID_REGION_NAME.tLocation.iX; \
707 }
708
709
710#define arm_2d_get_address_and_region_from_tile(__TILE_PTR, \
711 __VALID_REGION_NAME, \
712 __LOCATION_OFFSET_PTR, \
713 __TYPE, \
714 __BUF_PTR_NAME) \
715 __arm_2d_get_address_and_region_from_tile( __TILE_PTR, \
716 __VALID_REGION_NAME, \
717 __LOCATION_OFFSET_PTR, \
718 __TYPE, \
719 __BUF_PTR_NAME)
720
721
722#define __arm_2d_get_address_and_region_from_tile_with_mirroring( \
723 __TILE_PTR, \
724 __VALID_REGION_NAME, \
725 __LOCATION_OFFSET_PTR, \
726 __TYPE, \
727 __BUF_PTR_NAME, \
728 __MODE) \
729 arm_2d_region_t __VALID_REGION_NAME; \
730 assert(NULL != (__TILE_PTR)); \
731 __TYPE *(__BUF_PTR_NAME) = NULL; \
732 \
733 (__TILE_PTR) = arm_2d_tile_get_root((__TILE_PTR), \
734 &__VALID_REGION_NAME, \
735 __LOCATION_OFFSET_PTR); \
736 \
737 if (NULL != (__TILE_PTR)) { \
738 arm_2d_location_t tOffset = __VALID_REGION_NAME.tLocation; \
739 if ((__MODE) & ARM_2D_CP_MODE_X_MIRROR) { \
740 tOffset.iX = 0; \
741 } \
742 if ((__MODE) & ARM_2D_CP_MODE_Y_MIRROR) { \
743 tOffset.iY = 0; \
744 } \
745 (__BUF_PTR_NAME) = ((__TYPE *)((__TILE_PTR)->pchBuffer)) \
746 + (__TILE_PTR)->tRegion.tSize.iWidth * tOffset.iY \
747 + tOffset.iX; \
748 }
749
750
751#define arm_2d_get_address_and_region_from_tile_with_mirroring( \
752 __TILE_PTR, \
753 __VALID_REGION_NAME, \
754 __LOCATION_OFFSET_PTR, \
755 __TYPE, \
756 __BUF_PTR_NAME, \
757 __MODE) \
758 __arm_2d_get_address_and_region_from_tile_with_mirroring( \
759 __TILE_PTR, \
760 __VALID_REGION_NAME, \
761 __LOCATION_OFFSET_PTR, \
762 __TYPE, \
763 __BUF_PTR_NAME, \
764 (__MODE))
765
766/*============================ TYPES =========================================*/
767
769
770/*! \note arm_2d_op_cp_cl_key_t inherits from arm_2d_op_src_t explicitly
771 */
772typedef struct arm_2d_op_cp_cl_key_t {
774 struct {
775 const arm_2d_tile_t *ptTile; //!< target tile
776 const arm_2d_region_t *ptRegion; //!< target region
777 } Target;
778 struct {
779 const arm_2d_tile_t *ptTile; //!< source tile
780 }Source;
781 uint32_t wMode; //!< copy mode
782 union {
783 uint8_t chColour; //!< 8bit colour
784 uint16_t hwColour; //!< 16bit colour
785 uint32_t wColour; //!< 32bit colour
786 };
788
789/*============================ GLOBAL VARIABLES ==============================*/
790/*============================ PROTOTYPES ====================================*/
791
792
793/*----------------------------------------------------------------------------*
794 * Tile Operations *
795 *----------------------------------------------------------------------------*/
796
797/*!
798 * \brief check whether a given tile is root or not
799 * \param[in] ptTile the target tile
800 * \retval true the target tile is a root tile
801 * \retval false the target tile is a child tile
802 */
803ARM_NONNULL(1)
804__STATIC_INLINE bool arm_2d_is_root_tile(const arm_2d_tile_t *ptTile)
805{
806 return ptTile->tInfo.bIsRoot;
807}
808
809
810/*!
811 * \brief intersect two regions and find the overlapped region
812 * \param[in] ptRegionIn0 the input region 0
813 * \param[in] ptRegionIn1 the input region 1
814 * \param[out] ptRegionOut the overlapped region
815 * \retval false the two regions do not overlap
816 * \retval true the two regions overlap
817 *
818 * \code
819
820 HOW IT WORKS:
821
822 Input Region 0
823 +------------------------------------------------------+
824 | |
825 | |
826 | |
827 | +------------------------------+---------+
828 | | |/////////|
829 | | Output Region |/////////|
830 | | |/////////|
831 +-----------------------+------------------------------+/////////|
832 |////////////////////////////////////////|
833 |////////////////////////////////////////|
834 +----------------------------------------+
835 Input Region 1
836 * \endcode
837 */
838extern
839ARM_NONNULL(1,2)
841 const arm_2d_region_t *ptRegionIn1,
842 arm_2d_region_t *ptRegionOut);
843
844
845/*!
846 * \brief get the minimal enclosure region for the given two regions
847 * \param[in] ptRegionIn0 the input region 0
848 * \param[in] ptRegionIn1 the input region 1
849 * \param[out] ptRegionOut the enclosure region
850 * \return arm_2d_region_t * the enclosure region
851 *
852 * \code
853
854 HOW IT WORKS:
855
856 Output Region
857 +------------------------------------------------------+---------+
858 | Input Region 0 |/////////|
859 | |/////////|
860 | |/////////|
861 | +------------------------------+---------+
862 | | | |
863 | | | |
864 | | | |
865 +-----------------------+------------------------------+ |
866 |///////////////////////| |
867 |///////////////////////| |
868 +-----------------------+----------------------------------------+
869 Input Region 1
870 * \endcode
871 */
872extern
873ARM_NONNULL(1,2,3)
875 const arm_2d_region_t *ptInput0,
876 const arm_2d_region_t *ptInput1,
877 arm_2d_region_t *ptOutput);
878
879/*!
880 * \brief check whether a point is inside a given region
881 * \param[in] ptRegion the target region
882 * \param[in] ptPoint the target point
883 * \retval true the point is inside the target region
884 * \retval false the point is outside the target region
885 */
886extern
887ARM_NONNULL(1,2)
889 const arm_2d_location_t *ptPoint);
890
891/*!
892 * \brief check whether a given region is inside the target region
893 * \param[in] ptRegion a given region
894 * \param[in] ptTarget the target region used as the reference
895 * \retval 1 the given region is inside the target region
896 * \retval -1 the target region is inside the given region
897 * \return 0 the given region is outside of the target region or
898 * it only partially overlaps with the target region
899 */
900extern
901ARM_NONNULL(1,2)
903 const arm_2d_region_t *ptTarget);
904
905/*!
906 * \brief get the root tile and the valid region for a given tile
907 * \param[in] ptTile the target tile
908 * \param[out] ptValidRegion the valid region inside the root tile
909 * \param[out] ptOffset the offsite of the root tile as if the root tile is inside the target tile
910 * \return const arm_2d_tile_t* the root tile
911 *
912 * \code
913 HOW IT WORKS:
914
915 Root Tile (Output Tile)
916 +------------------------------------------------------------------------+
917 | ... ... |
918 | |
919 | Child Tile of Parent Tile |
920 | +------------------------------------+ |
921 | | Child Tile of Parent Tile | |
922 | | +------------------------------+---------+ |
923 | | | |/////////| |
924 | | | Valid Region |/////////| |
925 | | | |/////////| |
926 | +-----+------------------------------+/////////| |
927 | |////////////////////////////////////////| |
928 | |////////////////////////////////////////| |
929 | +----------------------------------------+ |
930 | |
931 +------------------------------------------------------------------------+
932 \endcode
933 */
934extern
935ARM_NONNULL(1)
937 arm_2d_region_t *ptValidRegion,
938 arm_2d_location_t *ptOffset);
939
940extern
941ARM_NONNULL(1)
942/*!
943 * \brief get the root tile (and/or the virtual screen tile)
944 *
945 * \param[in] ptTile the target tile
946 * \param[out] ptValidRegion the valid region inside the root tile
947 * \param[out] ptOffset the offsite of the root tile as if the root tile
948 * is inside the target tile
949 * \param[out] ppVirtualScreen the virtual screen tile
950 * \param[in] bQuitWhenFindVirtualScreen whether stop searching when
951 * encounter the virtual screen tile.
952 * \return const arm_2d_tile_t* the root tile or the virtual screen tile
953 * when bQuitWhenFindVirtualScreen is true
954 */
956 const arm_2d_tile_t *ptTile,
957 arm_2d_region_t *ptValidRegion,
958 arm_2d_location_t *ptOffset,
959 const arm_2d_tile_t **ppVirtualScreen,
960 bool bQuitWhenFindVirtualScreen);
961
962/*!
963 * \brief generate a child tile from the target tile with a given region
964 * \param[in] ptTargetTile the target tile
965 * \param[in] ptRegion the target region
966 * \param[out] ptOutput the child tile
967 * \param[in] bClipRegion whether clip the region for the child tile
968 * \note We highly recommend that please DO NOT clip the child tile if
969 * you don't know what you are doing.
970 * \retval non-NULL the child tile
971 * \retval NULL the given region is outside the target tile
972 *
973 * \note If you want to use the child tile generated by
974 * arm_2d_tile_generate_child() as a source tile / mask, please set the
975 * bDerivedResource to true manually, otherwise all mirror related
976 * operation will NOT work correctly.
977 *
978 * \code
979 HOW IT WORKS:
980
981 Parent Tile (NOT necessarily a ROOT tile )
982 +------------------------------------------------------+
983 | |
984 | |
985 | Target Region |
986 | +------------------------------+---------+
987 | | |/////////|
988 | | New Child Tile (Output) |/////////|
989 | | |/////////|
990 +-----------------------+------------------------------+/////////|
991 |////////////////////////////////////////|
992 |////////////////////////////////////////|
993 +----------------------------------------+
994 \endcode
995 */
996extern
997ARM_NONNULL(1,2,3)
999 const arm_2d_tile_t *ptTargetTile,
1000 const arm_2d_region_t *ptRegion,
1001 arm_2d_tile_t *ptOutput,
1002 bool bClipRegion);
1003
1004/*!
1005 * \brief get the absolute location on a specified target tile
1006 *
1007 * \param[in] ptTile the target tile
1008 * \param[in] tLocation the relative location
1009 * \param[in] bOnVirtualScreen whether taking the virtual screen into
1010 * consideration.
1011 *
1012 * \return arm_2d_location_t the absolute location
1013 */
1014extern
1015ARM_NONNULL(1)
1017 arm_2d_location_t tLocation,
1018 bool bOnVirtualScreen);
1019
1020/*!
1021 * \brief compare the widths of two tiles
1022 * \param[in] ptTarget the target tile
1023 * \param[in] ptReference the reference tile
1024 * \return arm_2d_cmp_t the comparision result
1025 */
1026extern
1027ARM_NONNULL(1,2)
1029 const arm_2d_tile_t *ptReference);
1030/*!
1031 * \brief compare the heights of two tiles
1032 * \param[in] ptTarget the target tile
1033 * \param[in] ptReference the reference tile
1034 * \return arm_2d_cmp_t the comparision result
1035 */
1036extern
1037ARM_NONNULL(1,2)
1039 const arm_2d_tile_t *ptReference);
1040
1041/*!
1042 * \brief compare the shape (both widths and heights) of two tiles
1043 * \param[in] ptTarget the target tile
1044 * \param[in] ptReference the reference tile
1045 * \return arm_2d_cmp_t the comparision result
1046 */
1047extern
1048ARM_NONNULL(1,2)
1050 const arm_2d_tile_t *ptReference);
1051
1052/*!
1053 * \brief get the absolute location of a given tile
1054 * \param[in] ptTile the target tile
1055 * \param[out] ptLocation the absolute location in the root tile
1056 * \return const arm_2d_tile_t * the root tile
1057 */
1058extern
1059ARM_NONNULL(1,2)
1061 const arm_2d_tile_t *ptTile,
1062 arm_2d_location_t *ptLocation);
1063
1064/*!
1065 * \brief calculate the region differences between two tiles
1066 * \param[in] ptTarget the target tile
1067 * \param[in] ptReference the reference tile
1068 * \param[out] ptBuffer the difference stored in a region
1069 * \return arm_2d_region_t * the ptBuffer passed to this function
1070 */
1071extern
1072ARM_NONNULL(1,2,3)
1074 const arm_2d_tile_t *ptReference,
1075 arm_2d_region_t *ptBuffer);
1076/*----------------------------------------------------------------------------*
1077 * Copy/Fill tile to destination with Mirroring *
1078 *----------------------------------------------------------------------------*/
1079
1080/*!
1081 * \brief tile copy modes
1082 */
1084 ARM_2D_CP_MODE_COPY = 0,
1085 ARM_2D_CP_MODE_FILL = _BV(0),
1086 ARM_2D_CP_MODE_Y_MIRROR = _BV(2),
1087 ARM_2D_CP_MODE_X_MIRROR = _BV(3),
1088 ARM_2D_CP_MODE_XY_MIRROR = ARM_2D_CP_MODE_X_MIRROR |
1089 ARM_2D_CP_MODE_Y_MIRROR,
1090};
1091
1092/*!
1093 * \brief tile copy with specified mode
1094 * \param[in] ptOP the control block, NULL means using the default control block
1095 * \param[in] ptSource the source tile
1096 * \param[in] ptTarget the target tile
1097 * \param[in] ptRegion the target region, NULL means using the region of the
1098 * target tile.
1099 * \param[in] wMode the copy mode
1100 * \return arm_fsm_rt_t the operation result
1101 */
1102extern
1103ARM_NONNULL(2,3)
1105 const arm_2d_tile_t *ptSource,
1106 const arm_2d_tile_t *ptTarget,
1107 const arm_2d_region_t *ptRegion,
1108 uint32_t wMode);
1109
1110/*!
1111 * \brief tile copy with specified mode
1112 * \param[in] ptOP the control block, NULL means using the default control block
1113 * \param[in] ptSource the source tile
1114 * \param[in] ptTarget the target tile
1115 * \param[in] ptRegion the target region, NULL means using the region of the
1116 * target tile.
1117 * \param[in] wMode the copy mode
1118 * \return arm_fsm_rt_t the operation result
1119 */
1120extern
1121ARM_NONNULL(2,3)
1123 const arm_2d_tile_t *ptSource,
1124 const arm_2d_tile_t *ptTarget,
1125 const arm_2d_region_t *ptRegion,
1126 uint32_t wMode);
1127
1128/*!
1129 * \brief tile copy with specified mode
1130 * \param[in] ptOP the control block, NULL means using the default control block
1131 * \param[in] ptSource the source tile
1132 * \param[in] ptTarget the target tile
1133 * \param[in] ptRegion the target region, NULL means using the region of the
1134 * target tile.
1135 * \param[in] wMode the copy mode
1136 * \return arm_fsm_rt_t the operation result
1137 */
1138extern
1139ARM_NONNULL(2,3)
1141 const arm_2d_tile_t *ptSource,
1142 const arm_2d_tile_t *ptTarget,
1143 const arm_2d_region_t *ptRegion,
1144 uint32_t wMode);
1145
1146/*----------------------------------------------------------------------------*
1147 * Copy Only *
1148 *----------------------------------------------------------------------------*/
1149/*!
1150 * \brief tile copy only
1151 * \param[in] ptOP the control block, NULL means using the default control block
1152 * \param[in] ptSource the source tile
1153 * \param[in] ptTarget the target tile
1154 * \param[in] ptRegion the target region, NULL means using the region of the
1155 * target tile.
1156 * \return arm_fsm_rt_t the operation result
1157 */
1158extern
1159ARM_NONNULL(2,3)
1161 const arm_2d_tile_t *ptSource,
1162 const arm_2d_tile_t *ptTarget,
1163 const arm_2d_region_t *ptRegion);
1164
1165/*!
1166 * \brief tile copy only
1167 * \param[in] ptOP the control block, NULL means using the default control block
1168 * \param[in] ptSource the source tile
1169 * \param[in] ptTarget the target tile
1170 * \param[in] ptRegion the target region, NULL means using the region of the
1171 * target tile.
1172 * \return arm_fsm_rt_t the operation result
1173 */
1174extern
1175ARM_NONNULL(2,3)
1177 const arm_2d_tile_t *ptSource,
1178 const arm_2d_tile_t *ptTarget,
1179 const arm_2d_region_t *ptRegion);
1180
1181/*!
1182 * \brief tile copy only
1183 * \param[in] ptOP the control block, NULL means using the default control block
1184 * \param[in] ptSource the source tile
1185 * \param[in] ptTarget the target tile
1186 * \param[in] ptRegion the target region, NULL means using the region of the
1187 * target tile.
1188 * \return arm_fsm_rt_t the operation result
1189 */
1190extern
1191ARM_NONNULL(2,3)
1193 const arm_2d_tile_t *ptSource,
1194 const arm_2d_tile_t *ptTarget,
1195 const arm_2d_region_t *ptRegion);
1196
1197/*----------------------------------------------------------------------------*
1198 * Copy with X mirroring *
1199 *----------------------------------------------------------------------------*/
1200/*!
1201 * \brief tile copy with x-mirroring
1202 * \param[in] ptOP the control block, NULL means using the default control block
1203 * \param[in] ptSource the source tile
1204 * \param[in] ptTarget the target tile
1205 * \param[in] ptRegion the target region, NULL means using the region of the
1206 * target tile.
1207 * \return arm_fsm_rt_t the operation result
1208 */
1209extern
1210ARM_NONNULL(2,3)
1212 arm_2d_op_cp_t *ptOP,
1213 const arm_2d_tile_t *ptSource,
1214 const arm_2d_tile_t *ptTarget,
1215 const arm_2d_region_t *ptRegion);
1216
1217/*!
1218 * \brief tile copy with x-mirroring
1219 * \param[in] ptOP the control block, NULL means using the default control block
1220 * \param[in] ptSource the source tile
1221 * \param[in] ptTarget the target tile
1222 * \param[in] ptRegion the target region, NULL means using the region of the
1223 * target tile.
1224 * \return arm_fsm_rt_t the operation result
1225 */
1226extern
1227ARM_NONNULL(2,3)
1229 arm_2d_op_cp_t *ptOP,
1230 const arm_2d_tile_t *ptSource,
1231 const arm_2d_tile_t *ptTarget,
1232 const arm_2d_region_t *ptRegion);
1233
1234/*!
1235 * \brief tile copy with x-mirroring
1236 * \param[in] ptOP the control block, NULL means using the default control block
1237 * \param[in] ptSource the source tile
1238 * \param[in] ptTarget the target tile
1239 * \param[in] ptRegion the target region, NULL means using the region of the
1240 * target tile.
1241 * \return arm_fsm_rt_t the operation result
1242 */
1243extern
1244ARM_NONNULL(2,3)
1246 arm_2d_op_cp_t *ptOP,
1247 const arm_2d_tile_t *ptSource,
1248 const arm_2d_tile_t *ptTarget,
1249 const arm_2d_region_t *ptRegion);
1250
1251/*----------------------------------------------------------------------------*
1252 * Copy with Y mirroring *
1253 *----------------------------------------------------------------------------*/
1254
1255/*!
1256 * \brief tile copy with y-mirroring
1257 * \param[in] ptOP the control block, NULL means using the default control block
1258 * \param[in] ptSource the source tile
1259 * \param[in] ptTarget the target tile
1260 * \param[in] ptRegion the target region, NULL means using the region of the
1261 * target tile.
1262 * \return arm_fsm_rt_t the operation result
1263 */
1264extern
1265ARM_NONNULL(2,3)
1267 arm_2d_op_cp_t *ptOP,
1268 const arm_2d_tile_t *ptSource,
1269 const arm_2d_tile_t *ptTarget,
1270 const arm_2d_region_t *ptRegion);
1271
1272/*!
1273 * \brief tile copy with y-mirroring
1274 * \param[in] ptOP the control block, NULL means using the default control block
1275 * \param[in] ptSource the source tile
1276 * \param[in] ptTarget the target tile
1277 * \param[in] ptRegion the target region, NULL means using the region of the
1278 * target tile.
1279 * \return arm_fsm_rt_t the operation result
1280 */
1281extern
1282ARM_NONNULL(2,3)
1284 arm_2d_op_cp_t *ptOP,
1285 const arm_2d_tile_t *ptSource,
1286 const arm_2d_tile_t *ptTarget,
1287 const arm_2d_region_t *ptRegion);
1288
1289/*!
1290 * \brief tile copy with y-mirroring
1291 * \param[in] ptOP the control block, NULL means using the default control block
1292 * \param[in] ptSource the source tile
1293 * \param[in] ptTarget the target tile
1294 * \param[in] ptRegion the target region, NULL means using the region of the
1295 * target tile.
1296 * \return arm_fsm_rt_t the operation result
1297 */
1298extern
1299ARM_NONNULL(2,3)
1301 arm_2d_op_cp_t *ptOP,
1302 const arm_2d_tile_t *ptSource,
1303 const arm_2d_tile_t *ptTarget,
1304 const arm_2d_region_t *ptRegion);
1305
1306/*----------------------------------------------------------------------------*
1307 * Copy with XY mirroring *
1308 *----------------------------------------------------------------------------*/
1309
1310/*!
1311 * \brief tile copy with xy-mirroring
1312 * \param[in] ptOP the control block, NULL means using the default control block
1313 * \param[in] ptSource the source tile
1314 * \param[in] ptTarget the target tile
1315 * \param[in] ptRegion the target region, NULL means using the region of the
1316 * target tile.
1317 * \return arm_fsm_rt_t the operation result
1318 */
1319extern
1320ARM_NONNULL(2,3)
1322 arm_2d_op_cp_t *ptOP,
1323 const arm_2d_tile_t *ptSource,
1324 const arm_2d_tile_t *ptTarget,
1325 const arm_2d_region_t *ptRegion);
1326
1327/*!
1328 * \brief tile copy with xy-mirroring
1329 * \param[in] ptOP the control block, NULL means using the default control block
1330 * \param[in] ptSource the source tile
1331 * \param[in] ptTarget the target tile
1332 * \param[in] ptRegion the target region, NULL means using the region of the
1333 * target tile.
1334 * \return arm_fsm_rt_t the operation result
1335 */
1336extern
1337ARM_NONNULL(2,3)
1339 arm_2d_op_cp_t *ptOP,
1340 const arm_2d_tile_t *ptSource,
1341 const arm_2d_tile_t *ptTarget,
1342 const arm_2d_region_t *ptRegion);
1343
1344/*!
1345 * \brief tile copy with xy-mirroring
1346 * \param[in] ptOP the control block, NULL means using the default control block
1347 * \param[in] ptSource the source tile
1348 * \param[in] ptTarget the target tile
1349 * \param[in] ptRegion the target region, NULL means using the region of the
1350 * target tile.
1351 * \return arm_fsm_rt_t the operation result
1352 */
1353extern
1354ARM_NONNULL(2,3)
1356 arm_2d_op_cp_t *ptOP,
1357 const arm_2d_tile_t *ptSource,
1358 const arm_2d_tile_t *ptTarget,
1359 const arm_2d_region_t *ptRegion);
1360
1361/*----------------------------------------------------------------------------*
1362 * Fill Only *
1363 *----------------------------------------------------------------------------*/
1364
1365/*!
1366 * \brief Tiling only
1367 * \param[in] ptOP the control block, NULL means using the default control block
1368 * \param[in] ptSource the source tile
1369 * \param[in] ptTarget the target tile
1370 * \param[in] ptRegion the target region, NULL means using the region of the
1371 * target tile.
1372 * \return arm_fsm_rt_t the operation result
1373 */
1374extern
1375ARM_NONNULL(2,3)
1377 const arm_2d_tile_t *ptSource,
1378 const arm_2d_tile_t *ptTarget,
1379 const arm_2d_region_t *ptRegion);
1380
1381/*!
1382 * \brief Tiling only
1383 * \param[in] ptOP the control block, NULL means using the default control block
1384 * \param[in] ptSource the source tile
1385 * \param[in] ptTarget the target tile
1386 * \param[in] ptRegion the target region, NULL means using the region of the
1387 * target tile.
1388 * \return arm_fsm_rt_t the operation result
1389 */
1390extern
1391ARM_NONNULL(2,3)
1393 const arm_2d_tile_t *ptSource,
1394 const arm_2d_tile_t *ptTarget,
1395 const arm_2d_region_t *ptRegion);
1396
1397/*!
1398 * \brief Tiling only
1399 * \param[in] ptOP the control block, NULL means using the default control block
1400 * \param[in] ptSource the source tile
1401 * \param[in] ptTarget the target tile
1402 * \param[in] ptRegion the target region, NULL means using the region of the
1403 * target tile.
1404 * \return arm_fsm_rt_t the operation result
1405 */
1406extern
1407ARM_NONNULL(2,3)
1409 const arm_2d_tile_t *ptSource,
1410 const arm_2d_tile_t *ptTarget,
1411 const arm_2d_region_t *ptRegion);
1412
1413/*----------------------------------------------------------------------------*
1414 * Fill with X mirroring *
1415 *----------------------------------------------------------------------------*/
1416
1417/*!
1418 * \brief Tiling with x-mirroring
1419 * \param[in] ptOP the control block, NULL means using the default control block
1420 * \param[in] ptSource the source tile
1421 * \param[in] ptTarget the target tile
1422 * \param[in] ptRegion the target region, NULL means using the region of the
1423 * target tile.
1424 * \return arm_fsm_rt_t the operation result
1425 */
1426extern
1427ARM_NONNULL(2,3)
1429 arm_2d_op_cp_t *ptOP,
1430 const arm_2d_tile_t *ptSource,
1431 const arm_2d_tile_t *ptTarget,
1432 const arm_2d_region_t *ptRegion);
1433
1434/*!
1435 * \brief Tiling with x-mirroring
1436 * \param[in] ptOP the control block, NULL means using the default control block
1437 * \param[in] ptSource the source tile
1438 * \param[in] ptTarget the target tile
1439 * \param[in] ptRegion the target region, NULL means using the region of the
1440 * target tile.
1441 * \return arm_fsm_rt_t the operation result
1442 */
1443extern
1444ARM_NONNULL(2,3)
1446 arm_2d_op_cp_t *ptOP,
1447 const arm_2d_tile_t *ptSource,
1448 const arm_2d_tile_t *ptTarget,
1449 const arm_2d_region_t *ptRegion);
1450
1451/*!
1452 * \brief Tiling with x-mirroring
1453 * \param[in] ptOP the control block, NULL means using the default control block
1454 * \param[in] ptSource the source tile
1455 * \param[in] ptTarget the target tile
1456 * \param[in] ptRegion the target region, NULL means using the region of the
1457 * target tile.
1458 * \return arm_fsm_rt_t the operation result
1459 */
1460extern
1461ARM_NONNULL(2,3)
1463 arm_2d_op_cp_t *ptOP,
1464 const arm_2d_tile_t *ptSource,
1465 const arm_2d_tile_t *ptTarget,
1466 const arm_2d_region_t *ptRegion);
1467
1468/*----------------------------------------------------------------------------*
1469 * Fill with Y mirroring *
1470 *----------------------------------------------------------------------------*/
1471
1472/*!
1473 * \brief Tiling with y-mirroring
1474 * \param[in] ptOP the control block, NULL means using the default control block
1475 * \param[in] ptSource the source tile
1476 * \param[in] ptTarget the target tile
1477 * \param[in] ptRegion the target region, NULL means using the region of the
1478 * target tile.
1479 * \return arm_fsm_rt_t the operation result
1480 */
1481extern
1482ARM_NONNULL(2,3)
1484 arm_2d_op_cp_t *ptOP,
1485 const arm_2d_tile_t *ptSource,
1486 const arm_2d_tile_t *ptTarget,
1487 const arm_2d_region_t *ptRegion);
1488
1489/*!
1490 * \brief Tiling with y-mirroring
1491 * \param[in] ptOP the control block, NULL means using the default control block
1492 * \param[in] ptSource the source tile
1493 * \param[in] ptTarget the target tile
1494 * \param[in] ptRegion the target region, NULL means using the region of the
1495 * target tile.
1496 * \return arm_fsm_rt_t the operation result
1497 */
1498extern
1499ARM_NONNULL(2,3)
1501 arm_2d_op_cp_t *ptOP,
1502 const arm_2d_tile_t *ptSource,
1503 const arm_2d_tile_t *ptTarget,
1504 const arm_2d_region_t *ptRegion);
1505
1506/*!
1507 * \brief Tiling with y-mirroring
1508 * \param[in] ptOP the control block, NULL means using the default control block
1509 * \param[in] ptSource the source tile
1510 * \param[in] ptTarget the target tile
1511 * \param[in] ptRegion the target region, NULL means using the region of the
1512 * target tile.
1513 * \return arm_fsm_rt_t the operation result
1514 */
1515extern
1516ARM_NONNULL(2,3)
1518 arm_2d_op_cp_t *ptOP,
1519 const arm_2d_tile_t *ptSource,
1520 const arm_2d_tile_t *ptTarget,
1521 const arm_2d_region_t *ptRegion);
1522
1523/*----------------------------------------------------------------------------*
1524 * Fill with XY mirroring *
1525 *----------------------------------------------------------------------------*/
1526
1527/*!
1528 * \brief Tiling with xy-mirroring
1529 * \param[in] ptOP the control block, NULL means using the default control block
1530 * \param[in] ptSource the source tile
1531 * \param[in] ptTarget the target tile
1532 * \param[in] ptRegion the target region, NULL means using the region of the
1533 * target tile.
1534 * \return arm_fsm_rt_t the operation result
1535 */
1536extern
1537ARM_NONNULL(2,3)
1539 arm_2d_op_cp_t *ptOP,
1540 const arm_2d_tile_t *ptSource,
1541 const arm_2d_tile_t *ptTarget,
1542 const arm_2d_region_t *ptRegion);
1543
1544/*!
1545 * \brief Tiling with xy-mirroring
1546 * \param[in] ptOP the control block, NULL means using the default control block
1547 * \param[in] ptSource the source tile
1548 * \param[in] ptTarget the target tile
1549 * \param[in] ptRegion the target region, NULL means using the region of the
1550 * target tile.
1551 * \return arm_fsm_rt_t the operation result
1552 */
1553extern
1554ARM_NONNULL(2,3)
1556 arm_2d_op_cp_t *ptOP,
1557 const arm_2d_tile_t *ptSource,
1558 const arm_2d_tile_t *ptTarget,
1559 const arm_2d_region_t *ptRegion);
1560
1561/*!
1562 * \brief Tiling with xy-mirroring
1563 * \param[in] ptOP the control block, NULL means using the default control block
1564 * \param[in] ptSource the source tile
1565 * \param[in] ptTarget the target tile
1566 * \param[in] ptRegion the target region, NULL means using the region of the
1567 * target tile.
1568 * \return arm_fsm_rt_t the operation result
1569 */
1570extern
1571ARM_NONNULL(2,3)
1573 arm_2d_op_cp_t *ptOP,
1574 const arm_2d_tile_t *ptSource,
1575 const arm_2d_tile_t *ptTarget,
1576 const arm_2d_region_t *ptRegion);
1577
1578/*----------------------------------------------------------------------------*
1579 * Copy/Fill tile to destination with colour-keying and mirroring *
1580 *----------------------------------------------------------------------------*/
1581
1582/*!
1583 * \brief tile copy with colour-keying and specified mode
1584 * \param[in] ptOP the control block, NULL means using the default control block
1585 * \param[in] ptSource the source tile
1586 * \param[in] ptTarget the target tile
1587 * \param[in] ptRegion the target region, NULL means using the region of the
1588 * target tile.
1589 * \param[in] chMaskColour the key colour in any 8bit colour format
1590 * \param[in] wMode the copy mode
1591 * \return arm_fsm_rt_t the operation result
1592 */
1593extern
1594ARM_NONNULL(2,3)
1597 const arm_2d_tile_t *ptSource,
1598 const arm_2d_tile_t *ptTarget,
1599 const arm_2d_region_t *ptRegion,
1600 uint8_t chMaskColour,
1601 uint32_t wMode);
1602
1603/*!
1604 * \brief tile copy with colour-keying and specified mode
1605 * \param[in] ptOP the control block, NULL means using the default control block
1606 * \param[in] ptSource the source tile
1607 * \param[in] ptTarget the target tile
1608 * \param[in] ptRegion the target region, NULL means using the region of the
1609 * target tile.
1610 * \param[in] hwMaskColour the key colour in any 16bit colour format
1611 * \param[in] wMode the copy mode
1612 * \return arm_fsm_rt_t the operation result
1613 *
1614 * \note alpha channel is not handled, i.e. rgba5551
1615 */
1616extern
1617ARM_NONNULL(2,3)
1620 const arm_2d_tile_t *ptSource,
1621 const arm_2d_tile_t *ptTarget,
1622 const arm_2d_region_t *ptRegion,
1623 uint16_t hwMaskColour,
1624 uint32_t wMode);
1625
1626
1627/*!
1628 * \brief tile copy with colour-keying and specified mode
1629 * \param[in] ptOP the control block, NULL means using the default control block
1630 * \param[in] ptSource the source tile
1631 * \param[in] ptTarget the target tile
1632 * \param[in] ptRegion the target region, NULL means using the region of the
1633 * target tile.
1634 * \param[in] wMaskColour the key colour in any 32bit colour format
1635 * \param[in] wMode the copy mode
1636 * \return arm_fsm_rt_t the operation result
1637 *
1638 * \note alpha channel is not handled
1639 */
1640extern
1641ARM_NONNULL(2,3)
1644 const arm_2d_tile_t *ptSource,
1645 const arm_2d_tile_t *ptTarget,
1646 const arm_2d_region_t *ptRegion,
1647 uint32_t wMaskColour,
1648 uint32_t wMode);
1649
1650
1651/*----------------------------------------------------------------------------*
1652 * Copy tile to destination with colour-keying *
1653 *----------------------------------------------------------------------------*/
1654
1655/*!
1656 * \brief tile copy with colour-keying
1657 * \param[in] ptOP the control block, NULL means using the default control block
1658 * \param[in] ptSource the source tile
1659 * \param[in] ptTarget the target tile
1660 * \param[in] ptRegion the target region, NULL means using the region of the
1661 * target tile.
1662 * \param[in] chMaskColour the key colour in any 8bit colour format
1663 * \return arm_fsm_rt_t the operation result
1664 */
1665extern
1666ARM_NONNULL(2,3)
1669 const arm_2d_tile_t *ptSource,
1670 const arm_2d_tile_t *ptTarget,
1671 const arm_2d_region_t *ptRegion,
1672 uint8_t chMaskColour);
1673
1674/*!
1675 * \brief tile copy with colour-keying
1676 * \param[in] ptOP the control block, NULL means using the default control block
1677 * \param[in] ptSource the source tile
1678 * \param[in] ptTarget the target tile
1679 * \param[in] ptRegion the target region, NULL means using the region of the
1680 * target tile.
1681 * \param[in] hwMaskColour the key colour in any 16bit colour format
1682 * \return arm_fsm_rt_t the operation result
1683 *
1684 * \note alpha channel is not handled, i.e. rgba5551
1685 */
1686extern
1687ARM_NONNULL(2,3)
1690 const arm_2d_tile_t *ptSource,
1691 const arm_2d_tile_t *ptTarget,
1692 const arm_2d_region_t *ptRegion,
1693 uint16_t hwMaskColour);
1694
1695
1696/*!
1697 * \brief tile copy with colour-keying
1698 * \param[in] ptOP the control block, NULL means using the default control block
1699 * \param[in] ptSource the source tile
1700 * \param[in] ptTarget the target tile
1701 * \param[in] ptRegion the target region, NULL means using the region of the
1702 * target tile.
1703 * \param[in] wMaskColour the key colour in any 32bit colour format
1704 * \return arm_fsm_rt_t the operation result
1705 *
1706 * \note alpha channel is not handled
1707 */
1708extern
1709ARM_NONNULL(2,3)
1712 const arm_2d_tile_t *ptSource,
1713 const arm_2d_tile_t *ptTarget,
1714 const arm_2d_region_t *ptRegion,
1715 uint32_t wMaskColour);
1716
1717
1718/*----------------------------------------------------------------------------*
1719 * Copy tile to destination with colour-keying and x-mirroring *
1720 *----------------------------------------------------------------------------*/
1721
1722/*!
1723 * \brief tile copy with colour-keying and x-mirroring
1724 * \param[in] ptOP the control block, NULL means using the default control block
1725 * \param[in] ptSource the source tile
1726 * \param[in] ptTarget the target tile
1727 * \param[in] ptRegion the target region, NULL means using the region of the
1728 * target tile.
1729 * \param[in] chMaskColour the key colour in any 8bit colour format
1730 * \return arm_fsm_rt_t the operation result
1731 */
1732extern
1733ARM_NONNULL(2,3)
1736 const arm_2d_tile_t *ptSource,
1737 const arm_2d_tile_t *ptTarget,
1738 const arm_2d_region_t *ptRegion,
1739 uint8_t chMaskColour);
1740
1741/*!
1742 * \brief tile copy with colour-keying and x-mirroring
1743 * \param[in] ptOP the control block, NULL means using the default control block
1744 * \param[in] ptSource the source tile
1745 * \param[in] ptTarget the target tile
1746 * \param[in] ptRegion the target region, NULL means using the region of the
1747 * target tile.
1748 * \param[in] hwMaskColour the key colour in any 16bit colour format
1749 * \return arm_fsm_rt_t the operation result
1750 *
1751 * \note alpha channel is not handled, i.e. rgba5551
1752 */
1753extern
1754ARM_NONNULL(2,3)
1757 const arm_2d_tile_t *ptSource,
1758 const arm_2d_tile_t *ptTarget,
1759 const arm_2d_region_t *ptRegion,
1760 uint16_t hwMaskColour);
1761
1762
1763/*!
1764 * \brief tile copy with colour-keying and x-mirroring
1765 * \param[in] ptOP the control block, NULL means using the default control block
1766 * \param[in] ptSource the source tile
1767 * \param[in] ptTarget the target tile
1768 * \param[in] ptRegion the target region, NULL means using the region of the
1769 * target tile.
1770 * \param[in] wMaskColour the key colour in any 32bit colour format
1771 * \return arm_fsm_rt_t the operation result
1772 *
1773 * \note alpha channel is not handled
1774 */
1775extern
1776ARM_NONNULL(2,3)
1779 const arm_2d_tile_t *ptSource,
1780 const arm_2d_tile_t *ptTarget,
1781 const arm_2d_region_t *ptRegion,
1782 uint32_t wMaskColour);
1783
1784
1785/*----------------------------------------------------------------------------*
1786 * Copy tile to destination with colour-keying and y-mirroring *
1787 *----------------------------------------------------------------------------*/
1788
1789/*!
1790 * \brief tile copy with colour-keying and y-mirroring
1791 * \param[in] ptOP the control block, NULL means using the default control block
1792 * \param[in] ptSource the source tile
1793 * \param[in] ptTarget the target tile
1794 * \param[in] ptRegion the target region, NULL means using the region of the
1795 * target tile.
1796 * \param[in] chMaskColour the key colour in any 8bit colour format
1797 * \return arm_fsm_rt_t the operation result
1798 */
1799extern
1800ARM_NONNULL(2,3)
1803 const arm_2d_tile_t *ptSource,
1804 const arm_2d_tile_t *ptTarget,
1805 const arm_2d_region_t *ptRegion,
1806 uint8_t chMaskColour);
1807
1808/*!
1809 * \brief tile copy with colour-keying and y-mirroring
1810 * \param[in] ptOP the control block, NULL means using the default control block
1811 * \param[in] ptSource the source tile
1812 * \param[in] ptTarget the target tile
1813 * \param[in] ptRegion the target region, NULL means using the region of the
1814 * target tile.
1815 * \param[in] hwMaskColour the key colour in any 16bit colour format
1816 * \return arm_fsm_rt_t the operation result
1817 *
1818 * \note alpha channel is not handled, i.e. rgba5551
1819 */
1820extern
1821ARM_NONNULL(2,3)
1824 const arm_2d_tile_t *ptSource,
1825 const arm_2d_tile_t *ptTarget,
1826 const arm_2d_region_t *ptRegion,
1827 uint16_t hwMaskColour);
1828
1829
1830/*!
1831 * \brief tile copy with colour-keying and y-mirroring
1832 * \param[in] ptOP the control block, NULL means using the default control block
1833 * \param[in] ptSource the source tile
1834 * \param[in] ptTarget the target tile
1835 * \param[in] ptRegion the target region, NULL means using the region of the
1836 * target tile.
1837 * \param[in] wMaskColour the key colour in any 32bit colour format
1838 * \return arm_fsm_rt_t the operation result
1839 *
1840 * \note alpha channel is not handled
1841 */
1842extern
1843ARM_NONNULL(2,3)
1846 const arm_2d_tile_t *ptSource,
1847 const arm_2d_tile_t *ptTarget,
1848 const arm_2d_region_t *ptRegion,
1849 uint32_t wMaskColour);
1850
1851/*----------------------------------------------------------------------------*
1852 * Copy tile to destination with colour-keying and xy-mirroring *
1853 *----------------------------------------------------------------------------*/
1854
1855/*!
1856 * \brief tile copy with colour-keying and xy-mirroring
1857 * \param[in] ptOP the control block, NULL means using the default control block
1858 * \param[in] ptSource the source tile
1859 * \param[in] ptTarget the target tile
1860 * \param[in] ptRegion the target region, NULL means using the region of the
1861 * target tile.
1862 * \param[in] chMaskColour the key colour in any 8bit colour format
1863 * \return arm_fsm_rt_t the operation result
1864 */
1865extern
1866ARM_NONNULL(2,3)
1869 const arm_2d_tile_t *ptSource,
1870 const arm_2d_tile_t *ptTarget,
1871 const arm_2d_region_t *ptRegion,
1872 uint8_t chMaskColour);
1873
1874/*!
1875 * \brief tile copy with colour-keying and xy-mirroring
1876 * \param[in] ptOP the control block, NULL means using the default control block
1877 * \param[in] ptSource the source tile
1878 * \param[in] ptTarget the target tile
1879 * \param[in] ptRegion the target region, NULL means using the region of the
1880 * target tile.
1881 * \param[in] hwMaskColour the key colour in any 16bit colour format
1882 * \return arm_fsm_rt_t the operation result
1883 *
1884 * \note alpha channel is not handled, i.e. rgba5551
1885 */
1886extern
1887ARM_NONNULL(2,3)
1890 const arm_2d_tile_t *ptSource,
1891 const arm_2d_tile_t *ptTarget,
1892 const arm_2d_region_t *ptRegion,
1893 uint16_t hwMaskColour);
1894
1895
1896/*!
1897 * \brief tile copy with colour-keying and xy-mirroring
1898 * \param[in] ptOP the control block, NULL means using the default control block
1899 * \param[in] ptSource the source tile
1900 * \param[in] ptTarget the target tile
1901 * \param[in] ptRegion the target region, NULL means using the region of the
1902 * target tile.
1903 * \param[in] wMaskColour the key colour in any 32bit colour format
1904 * \return arm_fsm_rt_t the operation result
1905 *
1906 * \note alpha channel is not handled
1907 */
1908extern
1909ARM_NONNULL(2,3)
1912 const arm_2d_tile_t *ptSource,
1913 const arm_2d_tile_t *ptTarget,
1914 const arm_2d_region_t *ptRegion,
1915 uint32_t wMaskColour);
1916
1917
1918/*----------------------------------------------------------------------------*
1919 * Tile filling (tiling) to destination with colour-keying *
1920 *----------------------------------------------------------------------------*/
1921
1922/*!
1923 * \brief tile filling (tiling) with colour-keying
1924 * \param[in] ptOP the control block, NULL means using the default control block
1925 * \param[in] ptSource the source tile
1926 * \param[in] ptTarget the target tile
1927 * \param[in] ptRegion the target region, NULL means using the region of the
1928 * target tile.
1929 * \param[in] chMaskColour the key colour in any 8bit colour format
1930 * \return arm_fsm_rt_t the operation result
1931 */
1932extern
1933ARM_NONNULL(2,3)
1936 const arm_2d_tile_t *ptSource,
1937 const arm_2d_tile_t *ptTarget,
1938 const arm_2d_region_t *ptRegion,
1939 uint8_t chMaskColour);
1940
1941/*!
1942 * \brief tile filling (tiling) with colour-keying
1943 * \param[in] ptOP the control block, NULL means using the default control block
1944 * \param[in] ptSource the source tile
1945 * \param[in] ptTarget the target tile
1946 * \param[in] ptRegion the target region, NULL means using the region of the
1947 * target tile.
1948 * \param[in] hwMaskColour the key colour in any 16bit colour format
1949 * \return arm_fsm_rt_t the operation result
1950 *
1951 * \note alpha channel is not handled, i.e. rgba5551
1952 */
1953extern
1954ARM_NONNULL(2,3)
1957 const arm_2d_tile_t *ptSource,
1958 const arm_2d_tile_t *ptTarget,
1959 const arm_2d_region_t *ptRegion,
1960 uint16_t hwMaskColour);
1961
1962
1963/*!
1964 * \brief tile filling (tiling) with colour-keying
1965 * \param[in] ptOP the control block, NULL means using the default control block
1966 * \param[in] ptSource the source tile
1967 * \param[in] ptTarget the target tile
1968 * \param[in] ptRegion the target region, NULL means using the region of the
1969 * target tile.
1970 * \param[in] wMaskColour the key colour in any 32bit colour format
1971 * \return arm_fsm_rt_t the operation result
1972 *
1973 * \note alpha channel is not handled
1974 */
1975extern
1976ARM_NONNULL(2,3)
1979 const arm_2d_tile_t *ptSource,
1980 const arm_2d_tile_t *ptTarget,
1981 const arm_2d_region_t *ptRegion,
1982 uint32_t wMaskColour);
1983
1984
1985/*----------------------------------------------------------------------------*
1986 * Tile filling (tiling) to destination with colour-keying and x-mirroring *
1987 *----------------------------------------------------------------------------*/
1988
1989/*!
1990 * \brief tile filling (tiling) with colour-keying and x-mirroring
1991 * \param[in] ptOP the control block, NULL means using the default control block
1992 * \param[in] ptSource the source tile
1993 * \param[in] ptTarget the target tile
1994 * \param[in] ptRegion the target region, NULL means using the region of the
1995 * target tile.
1996 * \param[in] chMaskColour the key colour in any 8bit colour format
1997 * \return arm_fsm_rt_t the operation result
1998 */
1999extern
2000ARM_NONNULL(2,3)
2003 const arm_2d_tile_t *ptSource,
2004 const arm_2d_tile_t *ptTarget,
2005 const arm_2d_region_t *ptRegion,
2006 uint8_t chMaskColour);
2007
2008/*!
2009 * \brief tile filling (tiling) with colour-keying and x-mirroring
2010 * \param[in] ptOP the control block, NULL means using the default control block
2011 * \param[in] ptSource the source tile
2012 * \param[in] ptTarget the target tile
2013 * \param[in] ptRegion the target region, NULL means using the region of the
2014 * target tile.
2015 * \param[in] hwMaskColour the key colour in any 16bit colour format
2016 * \return arm_fsm_rt_t the operation result
2017 *
2018 * \note alpha channel is not handled, i.e. rgba5551
2019 */
2020extern
2021ARM_NONNULL(2,3)
2024 const arm_2d_tile_t *ptSource,
2025 const arm_2d_tile_t *ptTarget,
2026 const arm_2d_region_t *ptRegion,
2027 uint16_t hwMaskColour);
2028
2029
2030/*!
2031 * \brief tile filling (tiling) with colour-keying and x-mirroring
2032 * \param[in] ptOP the control block, NULL means using the default control block
2033 * \param[in] ptSource the source tile
2034 * \param[in] ptTarget the target tile
2035 * \param[in] ptRegion the target region, NULL means using the region of the
2036 * target tile.
2037 * \param[in] wMaskColour the key colour in any 32bit colour format
2038 * \return arm_fsm_rt_t the operation result
2039 *
2040 * \note alpha channel is not handled
2041 */
2042extern
2043ARM_NONNULL(2,3)
2046 const arm_2d_tile_t *ptSource,
2047 const arm_2d_tile_t *ptTarget,
2048 const arm_2d_region_t *ptRegion,
2049 uint32_t wMaskColour);
2050
2051
2052/*----------------------------------------------------------------------------*
2053 * Tile filling (tiling) to destination with colour-keying and y-mirroring *
2054 *----------------------------------------------------------------------------*/
2055
2056/*!
2057 * \brief tile filling (tiling) with colour-keying and y-mirroring
2058 * \param[in] ptOP the control block, NULL means using the default control block
2059 * \param[in] ptSource the source tile
2060 * \param[in] ptTarget the target tile
2061 * \param[in] ptRegion the target region, NULL means using the region of the
2062 * target tile.
2063 * \param[in] chMaskColour the key colour in any 8bit colour format
2064 * \return arm_fsm_rt_t the operation result
2065 */
2066extern
2067ARM_NONNULL(2,3)
2070 const arm_2d_tile_t *ptSource,
2071 const arm_2d_tile_t *ptTarget,
2072 const arm_2d_region_t *ptRegion,
2073 uint8_t chMaskColour);
2074
2075/*!
2076 * \brief tile filling (tiling) with colour-keying and y-mirroring
2077 * \param[in] ptOP the control block, NULL means using the default control block
2078 * \param[in] ptSource the source tile
2079 * \param[in] ptTarget the target tile
2080 * \param[in] ptRegion the target region, NULL means using the region of the
2081 * target tile.
2082 * \param[in] hwMaskColour the key colour in any 16bit colour format
2083 * \return arm_fsm_rt_t the operation result
2084 *
2085 * \note alpha channel is not handled, i.e. rgba5551
2086 */
2087extern
2088ARM_NONNULL(2,3)
2091 const arm_2d_tile_t *ptSource,
2092 const arm_2d_tile_t *ptTarget,
2093 const arm_2d_region_t *ptRegion,
2094 uint16_t hwMaskColour);
2095
2096
2097/*!
2098 * \brief tile filling (tiling) with colour-keying and y-mirroring
2099 * \param[in] ptOP the control block, NULL means using the default control block
2100 * \param[in] ptSource the source tile
2101 * \param[in] ptTarget the target tile
2102 * \param[in] ptRegion the target region, NULL means using the region of the
2103 * target tile.
2104 * \param[in] wMaskColour the key colour in any 32bit colour format
2105 * \return arm_fsm_rt_t the operation result
2106 *
2107 * \note alpha channel is not handled
2108 */
2109extern
2110ARM_NONNULL(2,3)
2113 const arm_2d_tile_t *ptSource,
2114 const arm_2d_tile_t *ptTarget,
2115 const arm_2d_region_t *ptRegion,
2116 uint32_t wMaskColour);
2117
2118/*----------------------------------------------------------------------------*
2119 * Tile filling (tiling) to destination with colour-keying and xy-mirroring *
2120 *----------------------------------------------------------------------------*/
2121
2122/*!
2123 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2124 * \param[in] ptOP the control block, NULL means using the default control block
2125 * \param[in] ptSource the source tile
2126 * \param[in] ptTarget the target tile
2127 * \param[in] ptRegion the target region, NULL means using the region of the
2128 * target tile.
2129 * \param[in] chMaskColour the key colour in any 8bit colour format
2130 * \return arm_fsm_rt_t the operation result
2131 */
2132extern
2133ARM_NONNULL(2,3)
2136 const arm_2d_tile_t *ptSource,
2137 const arm_2d_tile_t *ptTarget,
2138 const arm_2d_region_t *ptRegion,
2139 uint8_t chMaskColour);
2140
2141/*!
2142 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2143 * \param[in] ptOP the control block, NULL means using the default control block
2144 * \param[in] ptSource the source tile
2145 * \param[in] ptTarget the target tile
2146 * \param[in] ptRegion the target region, NULL means using the region of the
2147 * target tile.
2148 * \param[in] hwMaskColour the key colour in any 16bit colour format
2149 * \return arm_fsm_rt_t the operation result
2150 *
2151 * \note alpha channel is not handled, i.e. rgba5551
2152 */
2153extern
2154ARM_NONNULL(2,3)
2157 const arm_2d_tile_t *ptSource,
2158 const arm_2d_tile_t *ptTarget,
2159 const arm_2d_region_t *ptRegion,
2160 uint16_t hwMaskColour);
2161
2162
2163/*!
2164 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2165 * \param[in] ptOP the control block, NULL means using the default control block
2166 * \param[in] ptSource the source tile
2167 * \param[in] ptTarget the target tile
2168 * \param[in] ptRegion the target region, NULL means using the region of the
2169 * target tile.
2170 * \param[in] wMaskColour the key colour in any 32bit colour format
2171 * \return arm_fsm_rt_t the operation result
2172 *
2173 * \note alpha channel is not handled
2174 */
2175extern
2176ARM_NONNULL(2,3)
2179 const arm_2d_tile_t *ptSource,
2180 const arm_2d_tile_t *ptTarget,
2181 const arm_2d_region_t *ptRegion,
2182 uint32_t wMaskColour);
2183
2184
2185
2186
2187
2188/*! @} */
2189
2190#ifdef __cplusplus
2191}
2192#endif
2193
2194#endif