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: 15. Nov 2023
25 * $Revision: V.1.4.3
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,2)
937 arm_2d_region_t *ptValidRegion,
938 arm_2d_location_t *ptOffset);
939
940/*!
941 * \brief generate a child tile from the target tile with a given region
942 * \param[in] ptTargetTile the target tile
943 * \param[in] ptRegion the target region
944 * \param[out] ptOutput the child tile
945 * \param[in] bClipRegion whether clip the region for the child tile
946 * \note We highly recommend that please DO NOT clip the child tile if
947 * you don't know what you are doing.
948 * \retval non-NULL the child tile
949 * \retval NULL the given region is outside the target tile
950 *
951 * \note If you want to use the child tile generated by
952 * arm_2d_tile_generate_child() as a source tile / mask, please set the
953 * bDerivedResource to true manually, otherwise all mirror related
954 * operation will NOT work correctly.
955 *
956 * \code
957 HOW IT WORKS:
958
959 Parent Tile (NOT necessarily a ROOT tile )
960 +------------------------------------------------------+
961 | |
962 | |
963 | Target Region |
964 | +------------------------------+---------+
965 | | |/////////|
966 | | New Child Tile (Output) |/////////|
967 | | |/////////|
968 +-----------------------+------------------------------+/////////|
969 |////////////////////////////////////////|
970 |////////////////////////////////////////|
971 +----------------------------------------+
972 \endcode
973 */
974extern
975ARM_NONNULL(1,2,3)
977 const arm_2d_tile_t *ptTargetTile,
978 const arm_2d_region_t *ptRegion,
979 arm_2d_tile_t *ptOutput,
980 bool bClipRegion);
981
982/*!
983 * \brief compare the widths of two tiles
984 * \param[in] ptTarget the target tile
985 * \param[in] ptReference the reference tile
986 * \return arm_2d_cmp_t the comparision result
987 */
988extern
989ARM_NONNULL(1,2)
991 const arm_2d_tile_t *ptReference);
992/*!
993 * \brief compare the heights of two tiles
994 * \param[in] ptTarget the target tile
995 * \param[in] ptReference the reference tile
996 * \return arm_2d_cmp_t the comparision result
997 */
998extern
999ARM_NONNULL(1,2)
1001 const arm_2d_tile_t *ptReference);
1002
1003/*!
1004 * \brief compare the shape (both widths and heights) of two tiles
1005 * \param[in] ptTarget the target tile
1006 * \param[in] ptReference the reference tile
1007 * \return arm_2d_cmp_t the comparision result
1008 */
1009extern
1010ARM_NONNULL(1,2)
1012 const arm_2d_tile_t *ptReference);
1013
1014/*!
1015 * \brief get the absolute location of a given tile
1016 * \param[in] ptTile the target tile
1017 * \param[out] ptLocation the absolute location in the root tile
1018 * \return const arm_2d_tile_t * the root tile
1019 */
1020extern
1021ARM_NONNULL(1,2)
1023 const arm_2d_tile_t *ptTile,
1024 arm_2d_location_t *ptLocation);
1025
1026/*!
1027 * \brief calculate the region differences between two tiles
1028 * \param[in] ptTarget the target tile
1029 * \param[in] ptReference the reference tile
1030 * \param[out] ptBuffer the difference stored in a region
1031 * \return arm_2d_region_t * the ptBuffer passed to this function
1032 */
1033extern
1034ARM_NONNULL(1,2,3)
1036 const arm_2d_tile_t *ptReference,
1037 arm_2d_region_t *ptBuffer);
1038/*----------------------------------------------------------------------------*
1039 * Copy/Fill tile to destination with Mirroring *
1040 *----------------------------------------------------------------------------*/
1041
1042/*!
1043 * \brief tile copy modes
1044 */
1046 ARM_2D_CP_MODE_COPY = 0,
1047 ARM_2D_CP_MODE_FILL = _BV(0),
1048 ARM_2D_CP_MODE_Y_MIRROR = _BV(2),
1049 ARM_2D_CP_MODE_X_MIRROR = _BV(3),
1050 ARM_2D_CP_MODE_XY_MIRROR = ARM_2D_CP_MODE_X_MIRROR |
1051 ARM_2D_CP_MODE_Y_MIRROR,
1052};
1053
1054/*!
1055 * \brief tile copy with specified mode
1056 * \param[in] ptOP the control block, NULL means using the default control block
1057 * \param[in] ptSource the source tile
1058 * \param[in] ptTarget the target tile
1059 * \param[in] ptRegion the target region, NULL means using the region of the
1060 * target tile.
1061 * \param[in] wMode the copy mode
1062 * \return arm_fsm_rt_t the operation result
1063 */
1064extern
1065ARM_NONNULL(2,3)
1067 const arm_2d_tile_t *ptSource,
1068 const arm_2d_tile_t *ptTarget,
1069 const arm_2d_region_t *ptRegion,
1070 uint32_t wMode);
1071
1072/*!
1073 * \brief tile copy with specified mode
1074 * \param[in] ptOP the control block, NULL means using the default control block
1075 * \param[in] ptSource the source tile
1076 * \param[in] ptTarget the target tile
1077 * \param[in] ptRegion the target region, NULL means using the region of the
1078 * target tile.
1079 * \param[in] wMode the copy mode
1080 * \return arm_fsm_rt_t the operation result
1081 */
1082extern
1083ARM_NONNULL(2,3)
1085 const arm_2d_tile_t *ptSource,
1086 const arm_2d_tile_t *ptTarget,
1087 const arm_2d_region_t *ptRegion,
1088 uint32_t wMode);
1089
1090/*!
1091 * \brief tile copy with specified mode
1092 * \param[in] ptOP the control block, NULL means using the default control block
1093 * \param[in] ptSource the source tile
1094 * \param[in] ptTarget the target tile
1095 * \param[in] ptRegion the target region, NULL means using the region of the
1096 * target tile.
1097 * \param[in] wMode the copy mode
1098 * \return arm_fsm_rt_t the operation result
1099 */
1100extern
1101ARM_NONNULL(2,3)
1103 const arm_2d_tile_t *ptSource,
1104 const arm_2d_tile_t *ptTarget,
1105 const arm_2d_region_t *ptRegion,
1106 uint32_t wMode);
1107
1108/*----------------------------------------------------------------------------*
1109 * Copy Only *
1110 *----------------------------------------------------------------------------*/
1111/*!
1112 * \brief tile copy only
1113 * \param[in] ptOP the control block, NULL means using the default control block
1114 * \param[in] ptSource the source tile
1115 * \param[in] ptTarget the target tile
1116 * \param[in] ptRegion the target region, NULL means using the region of the
1117 * target tile.
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
1127/*!
1128 * \brief tile copy only
1129 * \param[in] ptOP the control block, NULL means using the default control block
1130 * \param[in] ptSource the source tile
1131 * \param[in] ptTarget the target tile
1132 * \param[in] ptRegion the target region, NULL means using the region of the
1133 * target tile.
1134 * \return arm_fsm_rt_t the operation result
1135 */
1136extern
1137ARM_NONNULL(2,3)
1139 const arm_2d_tile_t *ptSource,
1140 const arm_2d_tile_t *ptTarget,
1141 const arm_2d_region_t *ptRegion);
1142
1143/*!
1144 * \brief tile copy only
1145 * \param[in] ptOP the control block, NULL means using the default control block
1146 * \param[in] ptSource the source tile
1147 * \param[in] ptTarget the target tile
1148 * \param[in] ptRegion the target region, NULL means using the region of the
1149 * target tile.
1150 * \return arm_fsm_rt_t the operation result
1151 */
1152extern
1153ARM_NONNULL(2,3)
1155 const arm_2d_tile_t *ptSource,
1156 const arm_2d_tile_t *ptTarget,
1157 const arm_2d_region_t *ptRegion);
1158
1159/*----------------------------------------------------------------------------*
1160 * Copy with X mirroring *
1161 *----------------------------------------------------------------------------*/
1162/*!
1163 * \brief tile copy with x-mirroring
1164 * \param[in] ptOP the control block, NULL means using the default control block
1165 * \param[in] ptSource the source tile
1166 * \param[in] ptTarget the target tile
1167 * \param[in] ptRegion the target region, NULL means using the region of the
1168 * target tile.
1169 * \return arm_fsm_rt_t the operation result
1170 */
1171extern
1172ARM_NONNULL(2,3)
1174 arm_2d_op_cp_t *ptOP,
1175 const arm_2d_tile_t *ptSource,
1176 const arm_2d_tile_t *ptTarget,
1177 const arm_2d_region_t *ptRegion);
1178
1179/*!
1180 * \brief tile copy with x-mirroring
1181 * \param[in] ptOP the control block, NULL means using the default control block
1182 * \param[in] ptSource the source tile
1183 * \param[in] ptTarget the target tile
1184 * \param[in] ptRegion the target region, NULL means using the region of the
1185 * target tile.
1186 * \return arm_fsm_rt_t the operation result
1187 */
1188extern
1189ARM_NONNULL(2,3)
1191 arm_2d_op_cp_t *ptOP,
1192 const arm_2d_tile_t *ptSource,
1193 const arm_2d_tile_t *ptTarget,
1194 const arm_2d_region_t *ptRegion);
1195
1196/*!
1197 * \brief tile copy with x-mirroring
1198 * \param[in] ptOP the control block, NULL means using the default control block
1199 * \param[in] ptSource the source tile
1200 * \param[in] ptTarget the target tile
1201 * \param[in] ptRegion the target region, NULL means using the region of the
1202 * target tile.
1203 * \return arm_fsm_rt_t the operation result
1204 */
1205extern
1206ARM_NONNULL(2,3)
1208 arm_2d_op_cp_t *ptOP,
1209 const arm_2d_tile_t *ptSource,
1210 const arm_2d_tile_t *ptTarget,
1211 const arm_2d_region_t *ptRegion);
1212
1213/*----------------------------------------------------------------------------*
1214 * Copy with Y mirroring *
1215 *----------------------------------------------------------------------------*/
1216
1217/*!
1218 * \brief tile copy with y-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 y-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 * \brief tile copy with y-mirroring
1253 * \param[in] ptOP the control block, NULL means using the default control block
1254 * \param[in] ptSource the source tile
1255 * \param[in] ptTarget the target tile
1256 * \param[in] ptRegion the target region, NULL means using the region of the
1257 * target tile.
1258 * \return arm_fsm_rt_t the operation result
1259 */
1260extern
1261ARM_NONNULL(2,3)
1263 arm_2d_op_cp_t *ptOP,
1264 const arm_2d_tile_t *ptSource,
1265 const arm_2d_tile_t *ptTarget,
1266 const arm_2d_region_t *ptRegion);
1267
1268/*----------------------------------------------------------------------------*
1269 * Copy with XY mirroring *
1270 *----------------------------------------------------------------------------*/
1271
1272/*!
1273 * \brief tile copy with xy-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 xy-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 * \brief tile copy with xy-mirroring
1308 * \param[in] ptOP the control block, NULL means using the default control block
1309 * \param[in] ptSource the source tile
1310 * \param[in] ptTarget the target tile
1311 * \param[in] ptRegion the target region, NULL means using the region of the
1312 * target tile.
1313 * \return arm_fsm_rt_t the operation result
1314 */
1315extern
1316ARM_NONNULL(2,3)
1318 arm_2d_op_cp_t *ptOP,
1319 const arm_2d_tile_t *ptSource,
1320 const arm_2d_tile_t *ptTarget,
1321 const arm_2d_region_t *ptRegion);
1322
1323/*----------------------------------------------------------------------------*
1324 * Fill Only *
1325 *----------------------------------------------------------------------------*/
1326
1327/*!
1328 * \brief Tiling only
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 const arm_2d_tile_t *ptSource,
1340 const arm_2d_tile_t *ptTarget,
1341 const arm_2d_region_t *ptRegion);
1342
1343/*!
1344 * \brief Tiling only
1345 * \param[in] ptOP the control block, NULL means using the default control block
1346 * \param[in] ptSource the source tile
1347 * \param[in] ptTarget the target tile
1348 * \param[in] ptRegion the target region, NULL means using the region of the
1349 * target tile.
1350 * \return arm_fsm_rt_t the operation result
1351 */
1352extern
1353ARM_NONNULL(2,3)
1355 const arm_2d_tile_t *ptSource,
1356 const arm_2d_tile_t *ptTarget,
1357 const arm_2d_region_t *ptRegion);
1358
1359/*!
1360 * \brief Tiling only
1361 * \param[in] ptOP the control block, NULL means using the default control block
1362 * \param[in] ptSource the source tile
1363 * \param[in] ptTarget the target tile
1364 * \param[in] ptRegion the target region, NULL means using the region of the
1365 * target tile.
1366 * \return arm_fsm_rt_t the operation result
1367 */
1368extern
1369ARM_NONNULL(2,3)
1371 const arm_2d_tile_t *ptSource,
1372 const arm_2d_tile_t *ptTarget,
1373 const arm_2d_region_t *ptRegion);
1374
1375/*----------------------------------------------------------------------------*
1376 * Fill with X mirroring *
1377 *----------------------------------------------------------------------------*/
1378
1379/*!
1380 * \brief Tiling with x-mirroring
1381 * \param[in] ptOP the control block, NULL means using the default control block
1382 * \param[in] ptSource the source tile
1383 * \param[in] ptTarget the target tile
1384 * \param[in] ptRegion the target region, NULL means using the region of the
1385 * target tile.
1386 * \return arm_fsm_rt_t the operation result
1387 */
1388extern
1389ARM_NONNULL(2,3)
1391 arm_2d_op_cp_t *ptOP,
1392 const arm_2d_tile_t *ptSource,
1393 const arm_2d_tile_t *ptTarget,
1394 const arm_2d_region_t *ptRegion);
1395
1396/*!
1397 * \brief Tiling with x-mirroring
1398 * \param[in] ptOP the control block, NULL means using the default control block
1399 * \param[in] ptSource the source tile
1400 * \param[in] ptTarget the target tile
1401 * \param[in] ptRegion the target region, NULL means using the region of the
1402 * target tile.
1403 * \return arm_fsm_rt_t the operation result
1404 */
1405extern
1406ARM_NONNULL(2,3)
1408 arm_2d_op_cp_t *ptOP,
1409 const arm_2d_tile_t *ptSource,
1410 const arm_2d_tile_t *ptTarget,
1411 const arm_2d_region_t *ptRegion);
1412
1413/*!
1414 * \brief Tiling with x-mirroring
1415 * \param[in] ptOP the control block, NULL means using the default control block
1416 * \param[in] ptSource the source tile
1417 * \param[in] ptTarget the target tile
1418 * \param[in] ptRegion the target region, NULL means using the region of the
1419 * target tile.
1420 * \return arm_fsm_rt_t the operation result
1421 */
1422extern
1423ARM_NONNULL(2,3)
1425 arm_2d_op_cp_t *ptOP,
1426 const arm_2d_tile_t *ptSource,
1427 const arm_2d_tile_t *ptTarget,
1428 const arm_2d_region_t *ptRegion);
1429
1430/*----------------------------------------------------------------------------*
1431 * Fill with Y mirroring *
1432 *----------------------------------------------------------------------------*/
1433
1434/*!
1435 * \brief Tiling with y-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 y-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 * \brief Tiling with y-mirroring
1470 * \param[in] ptOP the control block, NULL means using the default control block
1471 * \param[in] ptSource the source tile
1472 * \param[in] ptTarget the target tile
1473 * \param[in] ptRegion the target region, NULL means using the region of the
1474 * target tile.
1475 * \return arm_fsm_rt_t the operation result
1476 */
1477extern
1478ARM_NONNULL(2,3)
1480 arm_2d_op_cp_t *ptOP,
1481 const arm_2d_tile_t *ptSource,
1482 const arm_2d_tile_t *ptTarget,
1483 const arm_2d_region_t *ptRegion);
1484
1485/*----------------------------------------------------------------------------*
1486 * Fill with XY mirroring *
1487 *----------------------------------------------------------------------------*/
1488
1489/*!
1490 * \brief Tiling with xy-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 xy-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 * \brief Tiling with xy-mirroring
1525 * \param[in] ptOP the control block, NULL means using the default control block
1526 * \param[in] ptSource the source tile
1527 * \param[in] ptTarget the target tile
1528 * \param[in] ptRegion the target region, NULL means using the region of the
1529 * target tile.
1530 * \return arm_fsm_rt_t the operation result
1531 */
1532extern
1533ARM_NONNULL(2,3)
1535 arm_2d_op_cp_t *ptOP,
1536 const arm_2d_tile_t *ptSource,
1537 const arm_2d_tile_t *ptTarget,
1538 const arm_2d_region_t *ptRegion);
1539
1540/*----------------------------------------------------------------------------*
1541 * Copy/Fill tile to destination with colour-keying and mirroring *
1542 *----------------------------------------------------------------------------*/
1543
1544/*!
1545 * \brief tile copy with colour-keying and specified mode
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 * \param[in] chMaskColour the key colour in any 8bit colour format
1552 * \param[in] wMode the copy mode
1553 * \return arm_fsm_rt_t the operation result
1554 */
1555extern
1556ARM_NONNULL(2,3)
1559 const arm_2d_tile_t *ptSource,
1560 const arm_2d_tile_t *ptTarget,
1561 const arm_2d_region_t *ptRegion,
1562 uint8_t chMaskColour,
1563 uint32_t wMode);
1564
1565/*!
1566 * \brief tile copy with colour-keying and specified mode
1567 * \param[in] ptOP the control block, NULL means using the default control block
1568 * \param[in] ptSource the source tile
1569 * \param[in] ptTarget the target tile
1570 * \param[in] ptRegion the target region, NULL means using the region of the
1571 * target tile.
1572 * \param[in] hwMaskColour the key colour in any 16bit colour format
1573 * \param[in] wMode the copy mode
1574 * \return arm_fsm_rt_t the operation result
1575 *
1576 * \note alpha channel is not handled, i.e. rgba5551
1577 */
1578extern
1579ARM_NONNULL(2,3)
1582 const arm_2d_tile_t *ptSource,
1583 const arm_2d_tile_t *ptTarget,
1584 const arm_2d_region_t *ptRegion,
1585 uint16_t hwMaskColour,
1586 uint32_t wMode);
1587
1588
1589/*!
1590 * \brief tile copy with colour-keying and specified mode
1591 * \param[in] ptOP the control block, NULL means using the default control block
1592 * \param[in] ptSource the source tile
1593 * \param[in] ptTarget the target tile
1594 * \param[in] ptRegion the target region, NULL means using the region of the
1595 * target tile.
1596 * \param[in] wMaskColour the key colour in any 32bit colour format
1597 * \param[in] wMode the copy mode
1598 * \return arm_fsm_rt_t the operation result
1599 *
1600 * \note alpha channel is not handled
1601 */
1602extern
1603ARM_NONNULL(2,3)
1606 const arm_2d_tile_t *ptSource,
1607 const arm_2d_tile_t *ptTarget,
1608 const arm_2d_region_t *ptRegion,
1609 uint32_t wMaskColour,
1610 uint32_t wMode);
1611
1612
1613/*----------------------------------------------------------------------------*
1614 * Copy tile to destination with colour-keying *
1615 *----------------------------------------------------------------------------*/
1616
1617/*!
1618 * \brief tile copy with colour-keying
1619 * \param[in] ptOP the control block, NULL means using the default control block
1620 * \param[in] ptSource the source tile
1621 * \param[in] ptTarget the target tile
1622 * \param[in] ptRegion the target region, NULL means using the region of the
1623 * target tile.
1624 * \param[in] chMaskColour the key colour in any 8bit colour format
1625 * \return arm_fsm_rt_t the operation result
1626 */
1627extern
1628ARM_NONNULL(2,3)
1631 const arm_2d_tile_t *ptSource,
1632 const arm_2d_tile_t *ptTarget,
1633 const arm_2d_region_t *ptRegion,
1634 uint8_t chMaskColour);
1635
1636/*!
1637 * \brief tile copy with colour-keying
1638 * \param[in] ptOP the control block, NULL means using the default control block
1639 * \param[in] ptSource the source tile
1640 * \param[in] ptTarget the target tile
1641 * \param[in] ptRegion the target region, NULL means using the region of the
1642 * target tile.
1643 * \param[in] hwMaskColour the key colour in any 16bit colour format
1644 * \return arm_fsm_rt_t the operation result
1645 *
1646 * \note alpha channel is not handled, i.e. rgba5551
1647 */
1648extern
1649ARM_NONNULL(2,3)
1652 const arm_2d_tile_t *ptSource,
1653 const arm_2d_tile_t *ptTarget,
1654 const arm_2d_region_t *ptRegion,
1655 uint16_t hwMaskColour);
1656
1657
1658/*!
1659 * \brief tile copy with colour-keying
1660 * \param[in] ptOP the control block, NULL means using the default control block
1661 * \param[in] ptSource the source tile
1662 * \param[in] ptTarget the target tile
1663 * \param[in] ptRegion the target region, NULL means using the region of the
1664 * target tile.
1665 * \param[in] wMaskColour the key colour in any 32bit colour format
1666 * \return arm_fsm_rt_t the operation result
1667 *
1668 * \note alpha channel is not handled
1669 */
1670extern
1671ARM_NONNULL(2,3)
1674 const arm_2d_tile_t *ptSource,
1675 const arm_2d_tile_t *ptTarget,
1676 const arm_2d_region_t *ptRegion,
1677 uint32_t wMaskColour);
1678
1679
1680/*----------------------------------------------------------------------------*
1681 * Copy tile to destination with colour-keying and x-mirroring *
1682 *----------------------------------------------------------------------------*/
1683
1684/*!
1685 * \brief tile copy with colour-keying and x-mirroring
1686 * \param[in] ptOP the control block, NULL means using the default control block
1687 * \param[in] ptSource the source tile
1688 * \param[in] ptTarget the target tile
1689 * \param[in] ptRegion the target region, NULL means using the region of the
1690 * target tile.
1691 * \param[in] chMaskColour the key colour in any 8bit colour format
1692 * \return arm_fsm_rt_t the operation result
1693 */
1694extern
1695ARM_NONNULL(2,3)
1698 const arm_2d_tile_t *ptSource,
1699 const arm_2d_tile_t *ptTarget,
1700 const arm_2d_region_t *ptRegion,
1701 uint8_t chMaskColour);
1702
1703/*!
1704 * \brief tile copy with colour-keying and x-mirroring
1705 * \param[in] ptOP the control block, NULL means using the default control block
1706 * \param[in] ptSource the source tile
1707 * \param[in] ptTarget the target tile
1708 * \param[in] ptRegion the target region, NULL means using the region of the
1709 * target tile.
1710 * \param[in] hwMaskColour the key colour in any 16bit colour format
1711 * \return arm_fsm_rt_t the operation result
1712 *
1713 * \note alpha channel is not handled, i.e. rgba5551
1714 */
1715extern
1716ARM_NONNULL(2,3)
1719 const arm_2d_tile_t *ptSource,
1720 const arm_2d_tile_t *ptTarget,
1721 const arm_2d_region_t *ptRegion,
1722 uint16_t hwMaskColour);
1723
1724
1725/*!
1726 * \brief tile copy with colour-keying and x-mirroring
1727 * \param[in] ptOP the control block, NULL means using the default control block
1728 * \param[in] ptSource the source tile
1729 * \param[in] ptTarget the target tile
1730 * \param[in] ptRegion the target region, NULL means using the region of the
1731 * target tile.
1732 * \param[in] wMaskColour the key colour in any 32bit colour format
1733 * \return arm_fsm_rt_t the operation result
1734 *
1735 * \note alpha channel is not handled
1736 */
1737extern
1738ARM_NONNULL(2,3)
1741 const arm_2d_tile_t *ptSource,
1742 const arm_2d_tile_t *ptTarget,
1743 const arm_2d_region_t *ptRegion,
1744 uint32_t wMaskColour);
1745
1746
1747/*----------------------------------------------------------------------------*
1748 * Copy tile to destination with colour-keying and y-mirroring *
1749 *----------------------------------------------------------------------------*/
1750
1751/*!
1752 * \brief tile copy with colour-keying and y-mirroring
1753 * \param[in] ptOP the control block, NULL means using the default control block
1754 * \param[in] ptSource the source tile
1755 * \param[in] ptTarget the target tile
1756 * \param[in] ptRegion the target region, NULL means using the region of the
1757 * target tile.
1758 * \param[in] chMaskColour the key colour in any 8bit colour format
1759 * \return arm_fsm_rt_t the operation result
1760 */
1761extern
1762ARM_NONNULL(2,3)
1765 const arm_2d_tile_t *ptSource,
1766 const arm_2d_tile_t *ptTarget,
1767 const arm_2d_region_t *ptRegion,
1768 uint8_t chMaskColour);
1769
1770/*!
1771 * \brief tile copy with colour-keying and y-mirroring
1772 * \param[in] ptOP the control block, NULL means using the default control block
1773 * \param[in] ptSource the source tile
1774 * \param[in] ptTarget the target tile
1775 * \param[in] ptRegion the target region, NULL means using the region of the
1776 * target tile.
1777 * \param[in] hwMaskColour the key colour in any 16bit colour format
1778 * \return arm_fsm_rt_t the operation result
1779 *
1780 * \note alpha channel is not handled, i.e. rgba5551
1781 */
1782extern
1783ARM_NONNULL(2,3)
1786 const arm_2d_tile_t *ptSource,
1787 const arm_2d_tile_t *ptTarget,
1788 const arm_2d_region_t *ptRegion,
1789 uint16_t hwMaskColour);
1790
1791
1792/*!
1793 * \brief tile copy with colour-keying and y-mirroring
1794 * \param[in] ptOP the control block, NULL means using the default control block
1795 * \param[in] ptSource the source tile
1796 * \param[in] ptTarget the target tile
1797 * \param[in] ptRegion the target region, NULL means using the region of the
1798 * target tile.
1799 * \param[in] wMaskColour the key colour in any 32bit colour format
1800 * \return arm_fsm_rt_t the operation result
1801 *
1802 * \note alpha channel is not handled
1803 */
1804extern
1805ARM_NONNULL(2,3)
1808 const arm_2d_tile_t *ptSource,
1809 const arm_2d_tile_t *ptTarget,
1810 const arm_2d_region_t *ptRegion,
1811 uint32_t wMaskColour);
1812
1813/*----------------------------------------------------------------------------*
1814 * Copy tile to destination with colour-keying and xy-mirroring *
1815 *----------------------------------------------------------------------------*/
1816
1817/*!
1818 * \brief tile copy with colour-keying and xy-mirroring
1819 * \param[in] ptOP the control block, NULL means using the default control block
1820 * \param[in] ptSource the source tile
1821 * \param[in] ptTarget the target tile
1822 * \param[in] ptRegion the target region, NULL means using the region of the
1823 * target tile.
1824 * \param[in] chMaskColour the key colour in any 8bit colour format
1825 * \return arm_fsm_rt_t the operation result
1826 */
1827extern
1828ARM_NONNULL(2,3)
1831 const arm_2d_tile_t *ptSource,
1832 const arm_2d_tile_t *ptTarget,
1833 const arm_2d_region_t *ptRegion,
1834 uint8_t chMaskColour);
1835
1836/*!
1837 * \brief tile copy with colour-keying and xy-mirroring
1838 * \param[in] ptOP the control block, NULL means using the default control block
1839 * \param[in] ptSource the source tile
1840 * \param[in] ptTarget the target tile
1841 * \param[in] ptRegion the target region, NULL means using the region of the
1842 * target tile.
1843 * \param[in] hwMaskColour the key colour in any 16bit colour format
1844 * \return arm_fsm_rt_t the operation result
1845 *
1846 * \note alpha channel is not handled, i.e. rgba5551
1847 */
1848extern
1849ARM_NONNULL(2,3)
1852 const arm_2d_tile_t *ptSource,
1853 const arm_2d_tile_t *ptTarget,
1854 const arm_2d_region_t *ptRegion,
1855 uint16_t hwMaskColour);
1856
1857
1858/*!
1859 * \brief tile copy with colour-keying and xy-mirroring
1860 * \param[in] ptOP the control block, NULL means using the default control block
1861 * \param[in] ptSource the source tile
1862 * \param[in] ptTarget the target tile
1863 * \param[in] ptRegion the target region, NULL means using the region of the
1864 * target tile.
1865 * \param[in] wMaskColour the key colour in any 32bit colour format
1866 * \return arm_fsm_rt_t the operation result
1867 *
1868 * \note alpha channel is not handled
1869 */
1870extern
1871ARM_NONNULL(2,3)
1874 const arm_2d_tile_t *ptSource,
1875 const arm_2d_tile_t *ptTarget,
1876 const arm_2d_region_t *ptRegion,
1877 uint32_t wMaskColour);
1878
1879
1880/*----------------------------------------------------------------------------*
1881 * Tile filling (tiling) to destination with colour-keying *
1882 *----------------------------------------------------------------------------*/
1883
1884/*!
1885 * \brief tile filling (tiling) with colour-keying
1886 * \param[in] ptOP the control block, NULL means using the default control block
1887 * \param[in] ptSource the source tile
1888 * \param[in] ptTarget the target tile
1889 * \param[in] ptRegion the target region, NULL means using the region of the
1890 * target tile.
1891 * \param[in] chMaskColour the key colour in any 8bit colour format
1892 * \return arm_fsm_rt_t the operation result
1893 */
1894extern
1895ARM_NONNULL(2,3)
1898 const arm_2d_tile_t *ptSource,
1899 const arm_2d_tile_t *ptTarget,
1900 const arm_2d_region_t *ptRegion,
1901 uint8_t chMaskColour);
1902
1903/*!
1904 * \brief tile filling (tiling) with colour-keying
1905 * \param[in] ptOP the control block, NULL means using the default control block
1906 * \param[in] ptSource the source tile
1907 * \param[in] ptTarget the target tile
1908 * \param[in] ptRegion the target region, NULL means using the region of the
1909 * target tile.
1910 * \param[in] hwMaskColour the key colour in any 16bit colour format
1911 * \return arm_fsm_rt_t the operation result
1912 *
1913 * \note alpha channel is not handled, i.e. rgba5551
1914 */
1915extern
1916ARM_NONNULL(2,3)
1919 const arm_2d_tile_t *ptSource,
1920 const arm_2d_tile_t *ptTarget,
1921 const arm_2d_region_t *ptRegion,
1922 uint16_t hwMaskColour);
1923
1924
1925/*!
1926 * \brief tile filling (tiling) with colour-keying
1927 * \param[in] ptOP the control block, NULL means using the default control block
1928 * \param[in] ptSource the source tile
1929 * \param[in] ptTarget the target tile
1930 * \param[in] ptRegion the target region, NULL means using the region of the
1931 * target tile.
1932 * \param[in] wMaskColour the key colour in any 32bit colour format
1933 * \return arm_fsm_rt_t the operation result
1934 *
1935 * \note alpha channel is not handled
1936 */
1937extern
1938ARM_NONNULL(2,3)
1941 const arm_2d_tile_t *ptSource,
1942 const arm_2d_tile_t *ptTarget,
1943 const arm_2d_region_t *ptRegion,
1944 uint32_t wMaskColour);
1945
1946
1947/*----------------------------------------------------------------------------*
1948 * Tile filling (tiling) to destination with colour-keying and x-mirroring *
1949 *----------------------------------------------------------------------------*/
1950
1951/*!
1952 * \brief tile filling (tiling) with colour-keying and x-mirroring
1953 * \param[in] ptOP the control block, NULL means using the default control block
1954 * \param[in] ptSource the source tile
1955 * \param[in] ptTarget the target tile
1956 * \param[in] ptRegion the target region, NULL means using the region of the
1957 * target tile.
1958 * \param[in] chMaskColour the key colour in any 8bit colour format
1959 * \return arm_fsm_rt_t the operation result
1960 */
1961extern
1962ARM_NONNULL(2,3)
1965 const arm_2d_tile_t *ptSource,
1966 const arm_2d_tile_t *ptTarget,
1967 const arm_2d_region_t *ptRegion,
1968 uint8_t chMaskColour);
1969
1970/*!
1971 * \brief tile filling (tiling) with colour-keying and x-mirroring
1972 * \param[in] ptOP the control block, NULL means using the default control block
1973 * \param[in] ptSource the source tile
1974 * \param[in] ptTarget the target tile
1975 * \param[in] ptRegion the target region, NULL means using the region of the
1976 * target tile.
1977 * \param[in] hwMaskColour the key colour in any 16bit colour format
1978 * \return arm_fsm_rt_t the operation result
1979 *
1980 * \note alpha channel is not handled, i.e. rgba5551
1981 */
1982extern
1983ARM_NONNULL(2,3)
1986 const arm_2d_tile_t *ptSource,
1987 const arm_2d_tile_t *ptTarget,
1988 const arm_2d_region_t *ptRegion,
1989 uint16_t hwMaskColour);
1990
1991
1992/*!
1993 * \brief tile filling (tiling) with colour-keying and x-mirroring
1994 * \param[in] ptOP the control block, NULL means using the default control block
1995 * \param[in] ptSource the source tile
1996 * \param[in] ptTarget the target tile
1997 * \param[in] ptRegion the target region, NULL means using the region of the
1998 * target tile.
1999 * \param[in] wMaskColour the key colour in any 32bit colour format
2000 * \return arm_fsm_rt_t the operation result
2001 *
2002 * \note alpha channel is not handled
2003 */
2004extern
2005ARM_NONNULL(2,3)
2008 const arm_2d_tile_t *ptSource,
2009 const arm_2d_tile_t *ptTarget,
2010 const arm_2d_region_t *ptRegion,
2011 uint32_t wMaskColour);
2012
2013
2014/*----------------------------------------------------------------------------*
2015 * Tile filling (tiling) to destination with colour-keying and y-mirroring *
2016 *----------------------------------------------------------------------------*/
2017
2018/*!
2019 * \brief tile filling (tiling) with colour-keying and y-mirroring
2020 * \param[in] ptOP the control block, NULL means using the default control block
2021 * \param[in] ptSource the source tile
2022 * \param[in] ptTarget the target tile
2023 * \param[in] ptRegion the target region, NULL means using the region of the
2024 * target tile.
2025 * \param[in] chMaskColour the key colour in any 8bit colour format
2026 * \return arm_fsm_rt_t the operation result
2027 */
2028extern
2029ARM_NONNULL(2,3)
2032 const arm_2d_tile_t *ptSource,
2033 const arm_2d_tile_t *ptTarget,
2034 const arm_2d_region_t *ptRegion,
2035 uint8_t chMaskColour);
2036
2037/*!
2038 * \brief tile filling (tiling) with colour-keying and y-mirroring
2039 * \param[in] ptOP the control block, NULL means using the default control block
2040 * \param[in] ptSource the source tile
2041 * \param[in] ptTarget the target tile
2042 * \param[in] ptRegion the target region, NULL means using the region of the
2043 * target tile.
2044 * \param[in] hwMaskColour the key colour in any 16bit colour format
2045 * \return arm_fsm_rt_t the operation result
2046 *
2047 * \note alpha channel is not handled, i.e. rgba5551
2048 */
2049extern
2050ARM_NONNULL(2,3)
2053 const arm_2d_tile_t *ptSource,
2054 const arm_2d_tile_t *ptTarget,
2055 const arm_2d_region_t *ptRegion,
2056 uint16_t hwMaskColour);
2057
2058
2059/*!
2060 * \brief tile filling (tiling) with colour-keying and y-mirroring
2061 * \param[in] ptOP the control block, NULL means using the default control block
2062 * \param[in] ptSource the source tile
2063 * \param[in] ptTarget the target tile
2064 * \param[in] ptRegion the target region, NULL means using the region of the
2065 * target tile.
2066 * \param[in] wMaskColour the key colour in any 32bit colour format
2067 * \return arm_fsm_rt_t the operation result
2068 *
2069 * \note alpha channel is not handled
2070 */
2071extern
2072ARM_NONNULL(2,3)
2075 const arm_2d_tile_t *ptSource,
2076 const arm_2d_tile_t *ptTarget,
2077 const arm_2d_region_t *ptRegion,
2078 uint32_t wMaskColour);
2079
2080/*----------------------------------------------------------------------------*
2081 * Tile filling (tiling) to destination with colour-keying and xy-mirroring *
2082 *----------------------------------------------------------------------------*/
2083
2084/*!
2085 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2086 * \param[in] ptOP the control block, NULL means using the default control block
2087 * \param[in] ptSource the source tile
2088 * \param[in] ptTarget the target tile
2089 * \param[in] ptRegion the target region, NULL means using the region of the
2090 * target tile.
2091 * \param[in] chMaskColour the key colour in any 8bit colour format
2092 * \return arm_fsm_rt_t the operation result
2093 */
2094extern
2095ARM_NONNULL(2,3)
2098 const arm_2d_tile_t *ptSource,
2099 const arm_2d_tile_t *ptTarget,
2100 const arm_2d_region_t *ptRegion,
2101 uint8_t chMaskColour);
2102
2103/*!
2104 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2105 * \param[in] ptOP the control block, NULL means using the default control block
2106 * \param[in] ptSource the source tile
2107 * \param[in] ptTarget the target tile
2108 * \param[in] ptRegion the target region, NULL means using the region of the
2109 * target tile.
2110 * \param[in] hwMaskColour the key colour in any 16bit colour format
2111 * \return arm_fsm_rt_t the operation result
2112 *
2113 * \note alpha channel is not handled, i.e. rgba5551
2114 */
2115extern
2116ARM_NONNULL(2,3)
2119 const arm_2d_tile_t *ptSource,
2120 const arm_2d_tile_t *ptTarget,
2121 const arm_2d_region_t *ptRegion,
2122 uint16_t hwMaskColour);
2123
2124
2125/*!
2126 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2127 * \param[in] ptOP the control block, NULL means using the default control block
2128 * \param[in] ptSource the source tile
2129 * \param[in] ptTarget the target tile
2130 * \param[in] ptRegion the target region, NULL means using the region of the
2131 * target tile.
2132 * \param[in] wMaskColour the key colour in any 32bit colour format
2133 * \return arm_fsm_rt_t the operation result
2134 *
2135 * \note alpha channel is not handled
2136 */
2137extern
2138ARM_NONNULL(2,3)
2141 const arm_2d_tile_t *ptSource,
2142 const arm_2d_tile_t *ptTarget,
2143 const arm_2d_region_t *ptRegion,
2144 uint32_t wMaskColour);
2145
2146
2147
2148
2149
2150/*! @} */
2151
2152#ifdef __cplusplus
2153}
2154#endif
2155
2156#endif