Arm-2D  
2D Image Processing Library for Cortex-M Processors
 
Loading...
Searching...
No Matches
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: 11. March 2025
25 * $Revision: V.1.5.0
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
962extern
963ARM_NONNULL(1)
964/*!
965 * \brief check whether a given target tile contains the boolean value of
966 * bIsNewFrame, if it is, return the bIsNewFrame value
967 *
968 * \param[in] ptTarget the target tile
969 * \retval ARM_2D_ERR_INVALID_PARAM the target tile is invalid
970 * \retval ARM_2D_RT_TRUE The bIsNewFrame is true, or there is no virtual
971 * screen.
972 * \retval ARM_2D_RT_FALSE The bIsNewFrame is false
973 */
975
976/*!
977 * \brief generate a child tile from the target tile with a given region
978 * \param[in] ptTargetTile the target tile
979 * \param[in] ptRegion the target region
980 * \param[out] ptOutput the child tile
981 * \param[in] bClipRegion whether clip the region for the child tile
982 * \note We highly recommend that please DO NOT clip the child tile if
983 * you don't know what you are doing.
984 * \retval non-NULL the child tile
985 * \retval NULL the given region is outside the target tile
986 *
987 * \note If you want to use the child tile generated by
988 * arm_2d_tile_generate_child() as a source tile / mask, please set the
989 * bDerivedResource to true manually, otherwise all mirror related
990 * operation will NOT work correctly.
991 *
992 * \code
993 HOW IT WORKS:
994
995 Parent Tile (NOT necessarily a ROOT tile )
996 +------------------------------------------------------+
997 | |
998 | |
999 | Target Region |
1000 | +------------------------------+---------+
1001 | | |/////////|
1002 | | New Child Tile (Output) |/////////|
1003 | | |/////////|
1004 +-----------------------+------------------------------+/////////|
1005 |////////////////////////////////////////|
1006 |////////////////////////////////////////|
1007 +----------------------------------------+
1008 \endcode
1009 */
1010extern
1011ARM_NONNULL(1,2,3)
1013 const arm_2d_tile_t *ptTargetTile,
1014 const arm_2d_region_t *ptRegion,
1015 arm_2d_tile_t *ptOutput,
1016 bool bClipRegion);
1017
1018/*!
1019 * \brief get the absolute location on a specified target tile
1020 *
1021 * \param[in] ptTile the target tile
1022 * \param[in] tLocation the relative location
1023 * \param[in] bOnVirtualScreen whether taking the virtual screen into
1024 * consideration.
1025 *
1026 * \return arm_2d_location_t the absolute location
1027 */
1028extern
1029ARM_NONNULL(1)
1031 arm_2d_location_t tLocation,
1032 bool bOnVirtualScreen);
1033
1034/*!
1035 * \brief compare the widths of two tiles
1036 * \param[in] ptTarget the target tile
1037 * \param[in] ptReference the reference tile
1038 * \return arm_2d_cmp_t the comparision result
1039 */
1040extern
1041ARM_NONNULL(1,2)
1043 const arm_2d_tile_t *ptReference);
1044/*!
1045 * \brief compare the heights of two tiles
1046 * \param[in] ptTarget the target tile
1047 * \param[in] ptReference the reference tile
1048 * \return arm_2d_cmp_t the comparision result
1049 */
1050extern
1051ARM_NONNULL(1,2)
1053 const arm_2d_tile_t *ptReference);
1054
1055/*!
1056 * \brief compare the shape (both widths and heights) of two tiles
1057 * \param[in] ptTarget the target tile
1058 * \param[in] ptReference the reference tile
1059 * \return arm_2d_cmp_t the comparision result
1060 */
1061extern
1062ARM_NONNULL(1,2)
1064 const arm_2d_tile_t *ptReference);
1065
1066/*!
1067 * \brief get the absolute location of a given tile
1068 * \param[in] ptTile the target tile
1069 * \param[out] ptLocation the absolute location in the root tile
1070 * \return const arm_2d_tile_t * the root tile
1071 */
1072extern
1073ARM_NONNULL(1,2)
1075 const arm_2d_tile_t *ptTile,
1076 arm_2d_location_t *ptLocation);
1077
1078/*!
1079 * \brief calculate the region differences between two tiles
1080 * \param[in] ptTarget the target tile
1081 * \param[in] ptReference the reference tile
1082 * \param[out] ptBuffer the difference stored in a region
1083 * \return arm_2d_region_t * the ptBuffer passed to this function
1084 */
1085extern
1086ARM_NONNULL(1,2,3)
1088 const arm_2d_tile_t *ptReference,
1089 arm_2d_region_t *ptBuffer);
1090
1091extern
1092ARM_NONNULL(1,2)
1093/*!
1094 * \brief generic software tile copy for root tiles.
1095 * \note This API only supports normal tiles but not virtual resources.
1096 *
1097 * \param[in] ptSource the source tile
1098 * \param[in] ptTarget the target tile
1099 * \param[in] ptRegion the target region, NULL means using the region of the
1100 * target tile.
1101 * \param chBytesPerPixel number of bytes in a pixel
1102 */
1104 arm_2d_tile_t *ptTarget,
1105 const arm_2d_region_t *ptRegion,
1106 uint_fast8_t chBytesPerPixel);
1107
1108/*----------------------------------------------------------------------------*
1109 * Copy/Fill tile to destination with Mirroring *
1110 *----------------------------------------------------------------------------*/
1111
1112/*!
1113 * \brief tile copy modes
1114 */
1116 ARM_2D_CP_MODE_COPY = 0,
1117 ARM_2D_CP_MODE_FILL = _BV(0),
1118 ARM_2D_CP_MODE_Y_MIRROR = _BV(2),
1119 ARM_2D_CP_MODE_X_MIRROR = _BV(3),
1120 ARM_2D_CP_MODE_XY_MIRROR = ARM_2D_CP_MODE_X_MIRROR |
1121 ARM_2D_CP_MODE_Y_MIRROR,
1122};
1123
1124/*!
1125 * \brief tile copy with specified mode
1126 * \param[in] ptOP the control block, NULL means using the default control block
1127 * \param[in] ptSource the source tile
1128 * \param[in] ptTarget the target tile
1129 * \param[in] ptRegion the target region, NULL means using the region of the
1130 * target tile.
1131 * \param[in] wMode the copy mode
1132 * \return arm_fsm_rt_t the operation result
1133 */
1134extern
1135ARM_NONNULL(2,3)
1137 const arm_2d_tile_t *ptSource,
1138 const arm_2d_tile_t *ptTarget,
1139 const arm_2d_region_t *ptRegion,
1140 uint32_t wMode);
1141
1142/*!
1143 * \brief tile copy with specified mode
1144 * \param[in] ptOP the control block, NULL means using the default control block
1145 * \param[in] ptSource the source tile
1146 * \param[in] ptTarget the target tile
1147 * \param[in] ptRegion the target region, NULL means using the region of the
1148 * target tile.
1149 * \param[in] wMode the copy mode
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 uint32_t wMode);
1159
1160/*!
1161 * \brief tile copy with specified mode
1162 * \param[in] ptOP the control block, NULL means using the default control block
1163 * \param[in] ptSource the source tile
1164 * \param[in] ptTarget the target tile
1165 * \param[in] ptRegion the target region, NULL means using the region of the
1166 * target tile.
1167 * \param[in] wMode the copy mode
1168 * \return arm_fsm_rt_t the operation result
1169 */
1170extern
1171ARM_NONNULL(2,3)
1173 const arm_2d_tile_t *ptSource,
1174 const arm_2d_tile_t *ptTarget,
1175 const arm_2d_region_t *ptRegion,
1176 uint32_t wMode);
1177
1178/*----------------------------------------------------------------------------*
1179 * Copy Only *
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 * \brief tile copy only
1199 * \param[in] ptOP the control block, NULL means using the default control block
1200 * \param[in] ptSource the source tile
1201 * \param[in] ptTarget the target tile
1202 * \param[in] ptRegion the target region, NULL means using the region of the
1203 * target tile.
1204 * \return arm_fsm_rt_t the operation result
1205 */
1206extern
1207ARM_NONNULL(2,3)
1209 const arm_2d_tile_t *ptSource,
1210 const arm_2d_tile_t *ptTarget,
1211 const arm_2d_region_t *ptRegion);
1212
1213/*!
1214 * \brief tile copy only
1215 * \param[in] ptOP the control block, NULL means using the default control block
1216 * \param[in] ptSource the source tile
1217 * \param[in] ptTarget the target tile
1218 * \param[in] ptRegion the target region, NULL means using the region of the
1219 * target tile.
1220 * \return arm_fsm_rt_t the operation result
1221 */
1222extern
1223ARM_NONNULL(2,3)
1225 const arm_2d_tile_t *ptSource,
1226 const arm_2d_tile_t *ptTarget,
1227 const arm_2d_region_t *ptRegion);
1228
1229/*----------------------------------------------------------------------------*
1230 * Copy with X mirroring *
1231 *----------------------------------------------------------------------------*/
1232/*!
1233 * \brief tile copy with x-mirroring
1234 * \param[in] ptOP the control block, NULL means using the default control block
1235 * \param[in] ptSource the source tile
1236 * \param[in] ptTarget the target tile
1237 * \param[in] ptRegion the target region, NULL means using the region of the
1238 * target tile.
1239 * \return arm_fsm_rt_t the operation result
1240 */
1241extern
1242ARM_NONNULL(2,3)
1244 arm_2d_op_cp_t *ptOP,
1245 const arm_2d_tile_t *ptSource,
1246 const arm_2d_tile_t *ptTarget,
1247 const arm_2d_region_t *ptRegion);
1248
1249/*!
1250 * \brief tile copy with x-mirroring
1251 * \param[in] ptOP the control block, NULL means using the default control block
1252 * \param[in] ptSource the source tile
1253 * \param[in] ptTarget the target tile
1254 * \param[in] ptRegion the target region, NULL means using the region of the
1255 * target tile.
1256 * \return arm_fsm_rt_t the operation result
1257 */
1258extern
1259ARM_NONNULL(2,3)
1261 arm_2d_op_cp_t *ptOP,
1262 const arm_2d_tile_t *ptSource,
1263 const arm_2d_tile_t *ptTarget,
1264 const arm_2d_region_t *ptRegion);
1265
1266/*!
1267 * \brief tile copy with x-mirroring
1268 * \param[in] ptOP the control block, NULL means using the default control block
1269 * \param[in] ptSource the source tile
1270 * \param[in] ptTarget the target tile
1271 * \param[in] ptRegion the target region, NULL means using the region of the
1272 * target tile.
1273 * \return arm_fsm_rt_t the operation result
1274 */
1275extern
1276ARM_NONNULL(2,3)
1278 arm_2d_op_cp_t *ptOP,
1279 const arm_2d_tile_t *ptSource,
1280 const arm_2d_tile_t *ptTarget,
1281 const arm_2d_region_t *ptRegion);
1282
1283/*----------------------------------------------------------------------------*
1284 * Copy with Y mirroring *
1285 *----------------------------------------------------------------------------*/
1286
1287/*!
1288 * \brief tile copy with y-mirroring
1289 * \param[in] ptOP the control block, NULL means using the default control block
1290 * \param[in] ptSource the source tile
1291 * \param[in] ptTarget the target tile
1292 * \param[in] ptRegion the target region, NULL means using the region of the
1293 * target tile.
1294 * \return arm_fsm_rt_t the operation result
1295 */
1296extern
1297ARM_NONNULL(2,3)
1299 arm_2d_op_cp_t *ptOP,
1300 const arm_2d_tile_t *ptSource,
1301 const arm_2d_tile_t *ptTarget,
1302 const arm_2d_region_t *ptRegion);
1303
1304/*!
1305 * \brief tile copy with y-mirroring
1306 * \param[in] ptOP the control block, NULL means using the default control block
1307 * \param[in] ptSource the source tile
1308 * \param[in] ptTarget the target tile
1309 * \param[in] ptRegion the target region, NULL means using the region of the
1310 * target tile.
1311 * \return arm_fsm_rt_t the operation result
1312 */
1313extern
1314ARM_NONNULL(2,3)
1316 arm_2d_op_cp_t *ptOP,
1317 const arm_2d_tile_t *ptSource,
1318 const arm_2d_tile_t *ptTarget,
1319 const arm_2d_region_t *ptRegion);
1320
1321/*!
1322 * \brief tile copy with y-mirroring
1323 * \param[in] ptOP the control block, NULL means using the default control block
1324 * \param[in] ptSource the source tile
1325 * \param[in] ptTarget the target tile
1326 * \param[in] ptRegion the target region, NULL means using the region of the
1327 * target tile.
1328 * \return arm_fsm_rt_t the operation result
1329 */
1330extern
1331ARM_NONNULL(2,3)
1333 arm_2d_op_cp_t *ptOP,
1334 const arm_2d_tile_t *ptSource,
1335 const arm_2d_tile_t *ptTarget,
1336 const arm_2d_region_t *ptRegion);
1337
1338/*----------------------------------------------------------------------------*
1339 * Copy with XY mirroring *
1340 *----------------------------------------------------------------------------*/
1341
1342/*!
1343 * \brief tile copy with xy-mirroring
1344 * \param[in] ptOP the control block, NULL means using the default control block
1345 * \param[in] ptSource the source tile
1346 * \param[in] ptTarget the target tile
1347 * \param[in] ptRegion the target region, NULL means using the region of the
1348 * target tile.
1349 * \return arm_fsm_rt_t the operation result
1350 */
1351extern
1352ARM_NONNULL(2,3)
1354 arm_2d_op_cp_t *ptOP,
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 tile copy with xy-mirroring
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 arm_2d_op_cp_t *ptOP,
1372 const arm_2d_tile_t *ptSource,
1373 const arm_2d_tile_t *ptTarget,
1374 const arm_2d_region_t *ptRegion);
1375
1376/*!
1377 * \brief tile copy with xy-mirroring
1378 * \param[in] ptOP the control block, NULL means using the default control block
1379 * \param[in] ptSource the source tile
1380 * \param[in] ptTarget the target tile
1381 * \param[in] ptRegion the target region, NULL means using the region of the
1382 * target tile.
1383 * \return arm_fsm_rt_t the operation result
1384 */
1385extern
1386ARM_NONNULL(2,3)
1388 arm_2d_op_cp_t *ptOP,
1389 const arm_2d_tile_t *ptSource,
1390 const arm_2d_tile_t *ptTarget,
1391 const arm_2d_region_t *ptRegion);
1392
1393/*----------------------------------------------------------------------------*
1394 * Fill Only *
1395 *----------------------------------------------------------------------------*/
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 * \brief Tiling only
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 const arm_2d_tile_t *ptSource,
1426 const arm_2d_tile_t *ptTarget,
1427 const arm_2d_region_t *ptRegion);
1428
1429/*!
1430 * \brief Tiling only
1431 * \param[in] ptOP the control block, NULL means using the default control block
1432 * \param[in] ptSource the source tile
1433 * \param[in] ptTarget the target tile
1434 * \param[in] ptRegion the target region, NULL means using the region of the
1435 * target tile.
1436 * \return arm_fsm_rt_t the operation result
1437 */
1438extern
1439ARM_NONNULL(2,3)
1441 const arm_2d_tile_t *ptSource,
1442 const arm_2d_tile_t *ptTarget,
1443 const arm_2d_region_t *ptRegion);
1444
1445/*----------------------------------------------------------------------------*
1446 * Fill with X mirroring *
1447 *----------------------------------------------------------------------------*/
1448
1449/*!
1450 * \brief Tiling with x-mirroring
1451 * \param[in] ptOP the control block, NULL means using the default control block
1452 * \param[in] ptSource the source tile
1453 * \param[in] ptTarget the target tile
1454 * \param[in] ptRegion the target region, NULL means using the region of the
1455 * target tile.
1456 * \return arm_fsm_rt_t the operation result
1457 */
1458extern
1459ARM_NONNULL(2,3)
1461 arm_2d_op_cp_t *ptOP,
1462 const arm_2d_tile_t *ptSource,
1463 const arm_2d_tile_t *ptTarget,
1464 const arm_2d_region_t *ptRegion);
1465
1466/*!
1467 * \brief Tiling with x-mirroring
1468 * \param[in] ptOP the control block, NULL means using the default control block
1469 * \param[in] ptSource the source tile
1470 * \param[in] ptTarget the target tile
1471 * \param[in] ptRegion the target region, NULL means using the region of the
1472 * target tile.
1473 * \return arm_fsm_rt_t the operation result
1474 */
1475extern
1476ARM_NONNULL(2,3)
1478 arm_2d_op_cp_t *ptOP,
1479 const arm_2d_tile_t *ptSource,
1480 const arm_2d_tile_t *ptTarget,
1481 const arm_2d_region_t *ptRegion);
1482
1483/*!
1484 * \brief Tiling with x-mirroring
1485 * \param[in] ptOP the control block, NULL means using the default control block
1486 * \param[in] ptSource the source tile
1487 * \param[in] ptTarget the target tile
1488 * \param[in] ptRegion the target region, NULL means using the region of the
1489 * target tile.
1490 * \return arm_fsm_rt_t the operation result
1491 */
1492extern
1493ARM_NONNULL(2,3)
1495 arm_2d_op_cp_t *ptOP,
1496 const arm_2d_tile_t *ptSource,
1497 const arm_2d_tile_t *ptTarget,
1498 const arm_2d_region_t *ptRegion);
1499
1500/*----------------------------------------------------------------------------*
1501 * Fill with Y mirroring *
1502 *----------------------------------------------------------------------------*/
1503
1504/*!
1505 * \brief Tiling with y-mirroring
1506 * \param[in] ptOP the control block, NULL means using the default control block
1507 * \param[in] ptSource the source tile
1508 * \param[in] ptTarget the target tile
1509 * \param[in] ptRegion the target region, NULL means using the region of the
1510 * target tile.
1511 * \return arm_fsm_rt_t the operation result
1512 */
1513extern
1514ARM_NONNULL(2,3)
1516 arm_2d_op_cp_t *ptOP,
1517 const arm_2d_tile_t *ptSource,
1518 const arm_2d_tile_t *ptTarget,
1519 const arm_2d_region_t *ptRegion);
1520
1521/*!
1522 * \brief Tiling with y-mirroring
1523 * \param[in] ptOP the control block, NULL means using the default control block
1524 * \param[in] ptSource the source tile
1525 * \param[in] ptTarget the target tile
1526 * \param[in] ptRegion the target region, NULL means using the region of the
1527 * target tile.
1528 * \return arm_fsm_rt_t the operation result
1529 */
1530extern
1531ARM_NONNULL(2,3)
1533 arm_2d_op_cp_t *ptOP,
1534 const arm_2d_tile_t *ptSource,
1535 const arm_2d_tile_t *ptTarget,
1536 const arm_2d_region_t *ptRegion);
1537
1538/*!
1539 * \brief Tiling with y-mirroring
1540 * \param[in] ptOP the control block, NULL means using the default control block
1541 * \param[in] ptSource the source tile
1542 * \param[in] ptTarget the target tile
1543 * \param[in] ptRegion the target region, NULL means using the region of the
1544 * target tile.
1545 * \return arm_fsm_rt_t the operation result
1546 */
1547extern
1548ARM_NONNULL(2,3)
1550 arm_2d_op_cp_t *ptOP,
1551 const arm_2d_tile_t *ptSource,
1552 const arm_2d_tile_t *ptTarget,
1553 const arm_2d_region_t *ptRegion);
1554
1555/*----------------------------------------------------------------------------*
1556 * Fill with XY mirroring *
1557 *----------------------------------------------------------------------------*/
1558
1559/*!
1560 * \brief Tiling with xy-mirroring
1561 * \param[in] ptOP the control block, NULL means using the default control block
1562 * \param[in] ptSource the source tile
1563 * \param[in] ptTarget the target tile
1564 * \param[in] ptRegion the target region, NULL means using the region of the
1565 * target tile.
1566 * \return arm_fsm_rt_t the operation result
1567 */
1568extern
1569ARM_NONNULL(2,3)
1571 arm_2d_op_cp_t *ptOP,
1572 const arm_2d_tile_t *ptSource,
1573 const arm_2d_tile_t *ptTarget,
1574 const arm_2d_region_t *ptRegion);
1575
1576/*!
1577 * \brief Tiling with xy-mirroring
1578 * \param[in] ptOP the control block, NULL means using the default control block
1579 * \param[in] ptSource the source tile
1580 * \param[in] ptTarget the target tile
1581 * \param[in] ptRegion the target region, NULL means using the region of the
1582 * target tile.
1583 * \return arm_fsm_rt_t the operation result
1584 */
1585extern
1586ARM_NONNULL(2,3)
1588 arm_2d_op_cp_t *ptOP,
1589 const arm_2d_tile_t *ptSource,
1590 const arm_2d_tile_t *ptTarget,
1591 const arm_2d_region_t *ptRegion);
1592
1593/*!
1594 * \brief Tiling with xy-mirroring
1595 * \param[in] ptOP the control block, NULL means using the default control block
1596 * \param[in] ptSource the source tile
1597 * \param[in] ptTarget the target tile
1598 * \param[in] ptRegion the target region, NULL means using the region of the
1599 * target tile.
1600 * \return arm_fsm_rt_t the operation result
1601 */
1602extern
1603ARM_NONNULL(2,3)
1605 arm_2d_op_cp_t *ptOP,
1606 const arm_2d_tile_t *ptSource,
1607 const arm_2d_tile_t *ptTarget,
1608 const arm_2d_region_t *ptRegion);
1609
1610/*----------------------------------------------------------------------------*
1611 * Copy/Fill tile to destination with colour-keying and mirroring *
1612 *----------------------------------------------------------------------------*/
1613
1614/*!
1615 * \brief tile copy with colour-keying and specified mode
1616 * \param[in] ptOP the control block, NULL means using the default control block
1617 * \param[in] ptSource the source tile
1618 * \param[in] ptTarget the target tile
1619 * \param[in] ptRegion the target region, NULL means using the region of the
1620 * target tile.
1621 * \param[in] chMaskColour the key colour in any 8bit colour format
1622 * \param[in] wMode the copy mode
1623 * \return arm_fsm_rt_t the operation result
1624 */
1625extern
1626ARM_NONNULL(2,3)
1629 const arm_2d_tile_t *ptSource,
1630 const arm_2d_tile_t *ptTarget,
1631 const arm_2d_region_t *ptRegion,
1632 uint8_t chMaskColour,
1633 uint32_t wMode);
1634
1635/*!
1636 * \brief tile copy with colour-keying and specified mode
1637 * \param[in] ptOP the control block, NULL means using the default control block
1638 * \param[in] ptSource the source tile
1639 * \param[in] ptTarget the target tile
1640 * \param[in] ptRegion the target region, NULL means using the region of the
1641 * target tile.
1642 * \param[in] hwMaskColour the key colour in any 16bit colour format
1643 * \param[in] wMode the copy mode
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 uint32_t wMode);
1657
1658
1659/*!
1660 * \brief tile copy with colour-keying and specified mode
1661 * \param[in] ptOP the control block, NULL means using the default control block
1662 * \param[in] ptSource the source tile
1663 * \param[in] ptTarget the target tile
1664 * \param[in] ptRegion the target region, NULL means using the region of the
1665 * target tile.
1666 * \param[in] wMaskColour the key colour in any 32bit colour format
1667 * \param[in] wMode the copy mode
1668 * \return arm_fsm_rt_t the operation result
1669 *
1670 * \note alpha channel is not handled
1671 */
1672extern
1673ARM_NONNULL(2,3)
1676 const arm_2d_tile_t *ptSource,
1677 const arm_2d_tile_t *ptTarget,
1678 const arm_2d_region_t *ptRegion,
1679 uint32_t wMaskColour,
1680 uint32_t wMode);
1681
1682
1683/*----------------------------------------------------------------------------*
1684 * Copy tile to destination with colour-keying *
1685 *----------------------------------------------------------------------------*/
1686
1687/*!
1688 * \brief tile copy with colour-keying
1689 * \param[in] ptOP the control block, NULL means using the default control block
1690 * \param[in] ptSource the source tile
1691 * \param[in] ptTarget the target tile
1692 * \param[in] ptRegion the target region, NULL means using the region of the
1693 * target tile.
1694 * \param[in] chMaskColour the key colour in any 8bit colour format
1695 * \return arm_fsm_rt_t the operation result
1696 */
1697extern
1698ARM_NONNULL(2,3)
1701 const arm_2d_tile_t *ptSource,
1702 const arm_2d_tile_t *ptTarget,
1703 const arm_2d_region_t *ptRegion,
1704 uint8_t chMaskColour);
1705
1706/*!
1707 * \brief tile copy with colour-keying
1708 * \param[in] ptOP the control block, NULL means using the default control block
1709 * \param[in] ptSource the source tile
1710 * \param[in] ptTarget the target tile
1711 * \param[in] ptRegion the target region, NULL means using the region of the
1712 * target tile.
1713 * \param[in] hwMaskColour the key colour in any 16bit colour format
1714 * \return arm_fsm_rt_t the operation result
1715 *
1716 * \note alpha channel is not handled, i.e. rgba5551
1717 */
1718extern
1719ARM_NONNULL(2,3)
1722 const arm_2d_tile_t *ptSource,
1723 const arm_2d_tile_t *ptTarget,
1724 const arm_2d_region_t *ptRegion,
1725 uint16_t hwMaskColour);
1726
1727
1728/*!
1729 * \brief tile copy with colour-keying
1730 * \param[in] ptOP the control block, NULL means using the default control block
1731 * \param[in] ptSource the source tile
1732 * \param[in] ptTarget the target tile
1733 * \param[in] ptRegion the target region, NULL means using the region of the
1734 * target tile.
1735 * \param[in] wMaskColour the key colour in any 32bit colour format
1736 * \return arm_fsm_rt_t the operation result
1737 *
1738 * \note alpha channel is not handled
1739 */
1740extern
1741ARM_NONNULL(2,3)
1744 const arm_2d_tile_t *ptSource,
1745 const arm_2d_tile_t *ptTarget,
1746 const arm_2d_region_t *ptRegion,
1747 uint32_t wMaskColour);
1748
1749
1750/*----------------------------------------------------------------------------*
1751 * Copy tile to destination with colour-keying and x-mirroring *
1752 *----------------------------------------------------------------------------*/
1753
1754/*!
1755 * \brief tile copy with colour-keying and x-mirroring
1756 * \param[in] ptOP the control block, NULL means using the default control block
1757 * \param[in] ptSource the source tile
1758 * \param[in] ptTarget the target tile
1759 * \param[in] ptRegion the target region, NULL means using the region of the
1760 * target tile.
1761 * \param[in] chMaskColour the key colour in any 8bit colour format
1762 * \return arm_fsm_rt_t the operation result
1763 */
1764extern
1765ARM_NONNULL(2,3)
1768 const arm_2d_tile_t *ptSource,
1769 const arm_2d_tile_t *ptTarget,
1770 const arm_2d_region_t *ptRegion,
1771 uint8_t chMaskColour);
1772
1773/*!
1774 * \brief tile copy with colour-keying and x-mirroring
1775 * \param[in] ptOP the control block, NULL means using the default control block
1776 * \param[in] ptSource the source tile
1777 * \param[in] ptTarget the target tile
1778 * \param[in] ptRegion the target region, NULL means using the region of the
1779 * target tile.
1780 * \param[in] hwMaskColour the key colour in any 16bit colour format
1781 * \return arm_fsm_rt_t the operation result
1782 *
1783 * \note alpha channel is not handled, i.e. rgba5551
1784 */
1785extern
1786ARM_NONNULL(2,3)
1789 const arm_2d_tile_t *ptSource,
1790 const arm_2d_tile_t *ptTarget,
1791 const arm_2d_region_t *ptRegion,
1792 uint16_t hwMaskColour);
1793
1794
1795/*!
1796 * \brief tile copy with colour-keying and x-mirroring
1797 * \param[in] ptOP the control block, NULL means using the default control block
1798 * \param[in] ptSource the source tile
1799 * \param[in] ptTarget the target tile
1800 * \param[in] ptRegion the target region, NULL means using the region of the
1801 * target tile.
1802 * \param[in] wMaskColour the key colour in any 32bit colour format
1803 * \return arm_fsm_rt_t the operation result
1804 *
1805 * \note alpha channel is not handled
1806 */
1807extern
1808ARM_NONNULL(2,3)
1811 const arm_2d_tile_t *ptSource,
1812 const arm_2d_tile_t *ptTarget,
1813 const arm_2d_region_t *ptRegion,
1814 uint32_t wMaskColour);
1815
1816
1817/*----------------------------------------------------------------------------*
1818 * Copy tile to destination with colour-keying and y-mirroring *
1819 *----------------------------------------------------------------------------*/
1820
1821/*!
1822 * \brief tile copy with colour-keying and y-mirroring
1823 * \param[in] ptOP the control block, NULL means using the default control block
1824 * \param[in] ptSource the source tile
1825 * \param[in] ptTarget the target tile
1826 * \param[in] ptRegion the target region, NULL means using the region of the
1827 * target tile.
1828 * \param[in] chMaskColour the key colour in any 8bit colour format
1829 * \return arm_fsm_rt_t the operation result
1830 */
1831extern
1832ARM_NONNULL(2,3)
1835 const arm_2d_tile_t *ptSource,
1836 const arm_2d_tile_t *ptTarget,
1837 const arm_2d_region_t *ptRegion,
1838 uint8_t chMaskColour);
1839
1840/*!
1841 * \brief tile copy with colour-keying and y-mirroring
1842 * \param[in] ptOP the control block, NULL means using the default control block
1843 * \param[in] ptSource the source tile
1844 * \param[in] ptTarget the target tile
1845 * \param[in] ptRegion the target region, NULL means using the region of the
1846 * target tile.
1847 * \param[in] hwMaskColour the key colour in any 16bit colour format
1848 * \return arm_fsm_rt_t the operation result
1849 *
1850 * \note alpha channel is not handled, i.e. rgba5551
1851 */
1852extern
1853ARM_NONNULL(2,3)
1856 const arm_2d_tile_t *ptSource,
1857 const arm_2d_tile_t *ptTarget,
1858 const arm_2d_region_t *ptRegion,
1859 uint16_t hwMaskColour);
1860
1861
1862/*!
1863 * \brief tile copy with colour-keying and y-mirroring
1864 * \param[in] ptOP the control block, NULL means using the default control block
1865 * \param[in] ptSource the source tile
1866 * \param[in] ptTarget the target tile
1867 * \param[in] ptRegion the target region, NULL means using the region of the
1868 * target tile.
1869 * \param[in] wMaskColour the key colour in any 32bit colour format
1870 * \return arm_fsm_rt_t the operation result
1871 *
1872 * \note alpha channel is not handled
1873 */
1874extern
1875ARM_NONNULL(2,3)
1878 const arm_2d_tile_t *ptSource,
1879 const arm_2d_tile_t *ptTarget,
1880 const arm_2d_region_t *ptRegion,
1881 uint32_t wMaskColour);
1882
1883/*----------------------------------------------------------------------------*
1884 * Copy tile to destination with colour-keying and xy-mirroring *
1885 *----------------------------------------------------------------------------*/
1886
1887/*!
1888 * \brief tile copy with colour-keying and xy-mirroring
1889 * \param[in] ptOP the control block, NULL means using the default control block
1890 * \param[in] ptSource the source tile
1891 * \param[in] ptTarget the target tile
1892 * \param[in] ptRegion the target region, NULL means using the region of the
1893 * target tile.
1894 * \param[in] chMaskColour the key colour in any 8bit colour format
1895 * \return arm_fsm_rt_t the operation result
1896 */
1897extern
1898ARM_NONNULL(2,3)
1901 const arm_2d_tile_t *ptSource,
1902 const arm_2d_tile_t *ptTarget,
1903 const arm_2d_region_t *ptRegion,
1904 uint8_t chMaskColour);
1905
1906/*!
1907 * \brief tile copy with colour-keying and xy-mirroring
1908 * \param[in] ptOP the control block, NULL means using the default control block
1909 * \param[in] ptSource the source tile
1910 * \param[in] ptTarget the target tile
1911 * \param[in] ptRegion the target region, NULL means using the region of the
1912 * target tile.
1913 * \param[in] hwMaskColour the key colour in any 16bit colour format
1914 * \return arm_fsm_rt_t the operation result
1915 *
1916 * \note alpha channel is not handled, i.e. rgba5551
1917 */
1918extern
1919ARM_NONNULL(2,3)
1922 const arm_2d_tile_t *ptSource,
1923 const arm_2d_tile_t *ptTarget,
1924 const arm_2d_region_t *ptRegion,
1925 uint16_t hwMaskColour);
1926
1927
1928/*!
1929 * \brief tile copy with colour-keying and xy-mirroring
1930 * \param[in] ptOP the control block, NULL means using the default control block
1931 * \param[in] ptSource the source tile
1932 * \param[in] ptTarget the target tile
1933 * \param[in] ptRegion the target region, NULL means using the region of the
1934 * target tile.
1935 * \param[in] wMaskColour the key colour in any 32bit colour format
1936 * \return arm_fsm_rt_t the operation result
1937 *
1938 * \note alpha channel is not handled
1939 */
1940extern
1941ARM_NONNULL(2,3)
1944 const arm_2d_tile_t *ptSource,
1945 const arm_2d_tile_t *ptTarget,
1946 const arm_2d_region_t *ptRegion,
1947 uint32_t wMaskColour);
1948
1949
1950/*----------------------------------------------------------------------------*
1951 * Tile filling (tiling) to destination with colour-keying *
1952 *----------------------------------------------------------------------------*/
1953
1954/*!
1955 * \brief tile filling (tiling) with colour-keying
1956 * \param[in] ptOP the control block, NULL means using the default control block
1957 * \param[in] ptSource the source tile
1958 * \param[in] ptTarget the target tile
1959 * \param[in] ptRegion the target region, NULL means using the region of the
1960 * target tile.
1961 * \param[in] chMaskColour the key colour in any 8bit colour format
1962 * \return arm_fsm_rt_t the operation result
1963 */
1964extern
1965ARM_NONNULL(2,3)
1968 const arm_2d_tile_t *ptSource,
1969 const arm_2d_tile_t *ptTarget,
1970 const arm_2d_region_t *ptRegion,
1971 uint8_t chMaskColour);
1972
1973/*!
1974 * \brief tile filling (tiling) with colour-keying
1975 * \param[in] ptOP the control block, NULL means using the default control block
1976 * \param[in] ptSource the source tile
1977 * \param[in] ptTarget the target tile
1978 * \param[in] ptRegion the target region, NULL means using the region of the
1979 * target tile.
1980 * \param[in] hwMaskColour the key colour in any 16bit colour format
1981 * \return arm_fsm_rt_t the operation result
1982 *
1983 * \note alpha channel is not handled, i.e. rgba5551
1984 */
1985extern
1986ARM_NONNULL(2,3)
1989 const arm_2d_tile_t *ptSource,
1990 const arm_2d_tile_t *ptTarget,
1991 const arm_2d_region_t *ptRegion,
1992 uint16_t hwMaskColour);
1993
1994
1995/*!
1996 * \brief tile filling (tiling) with colour-keying
1997 * \param[in] ptOP the control block, NULL means using the default control block
1998 * \param[in] ptSource the source tile
1999 * \param[in] ptTarget the target tile
2000 * \param[in] ptRegion the target region, NULL means using the region of the
2001 * target tile.
2002 * \param[in] wMaskColour the key colour in any 32bit colour format
2003 * \return arm_fsm_rt_t the operation result
2004 *
2005 * \note alpha channel is not handled
2006 */
2007extern
2008ARM_NONNULL(2,3)
2011 const arm_2d_tile_t *ptSource,
2012 const arm_2d_tile_t *ptTarget,
2013 const arm_2d_region_t *ptRegion,
2014 uint32_t wMaskColour);
2015
2016
2017/*----------------------------------------------------------------------------*
2018 * Tile filling (tiling) to destination with colour-keying and x-mirroring *
2019 *----------------------------------------------------------------------------*/
2020
2021/*!
2022 * \brief tile filling (tiling) with colour-keying and x-mirroring
2023 * \param[in] ptOP the control block, NULL means using the default control block
2024 * \param[in] ptSource the source tile
2025 * \param[in] ptTarget the target tile
2026 * \param[in] ptRegion the target region, NULL means using the region of the
2027 * target tile.
2028 * \param[in] chMaskColour the key colour in any 8bit colour format
2029 * \return arm_fsm_rt_t the operation result
2030 */
2031extern
2032ARM_NONNULL(2,3)
2035 const arm_2d_tile_t *ptSource,
2036 const arm_2d_tile_t *ptTarget,
2037 const arm_2d_region_t *ptRegion,
2038 uint8_t chMaskColour);
2039
2040/*!
2041 * \brief tile filling (tiling) with colour-keying and x-mirroring
2042 * \param[in] ptOP the control block, NULL means using the default control block
2043 * \param[in] ptSource the source tile
2044 * \param[in] ptTarget the target tile
2045 * \param[in] ptRegion the target region, NULL means using the region of the
2046 * target tile.
2047 * \param[in] hwMaskColour the key colour in any 16bit colour format
2048 * \return arm_fsm_rt_t the operation result
2049 *
2050 * \note alpha channel is not handled, i.e. rgba5551
2051 */
2052extern
2053ARM_NONNULL(2,3)
2056 const arm_2d_tile_t *ptSource,
2057 const arm_2d_tile_t *ptTarget,
2058 const arm_2d_region_t *ptRegion,
2059 uint16_t hwMaskColour);
2060
2061
2062/*!
2063 * \brief tile filling (tiling) with colour-keying and x-mirroring
2064 * \param[in] ptOP the control block, NULL means using the default control block
2065 * \param[in] ptSource the source tile
2066 * \param[in] ptTarget the target tile
2067 * \param[in] ptRegion the target region, NULL means using the region of the
2068 * target tile.
2069 * \param[in] wMaskColour the key colour in any 32bit colour format
2070 * \return arm_fsm_rt_t the operation result
2071 *
2072 * \note alpha channel is not handled
2073 */
2074extern
2075ARM_NONNULL(2,3)
2078 const arm_2d_tile_t *ptSource,
2079 const arm_2d_tile_t *ptTarget,
2080 const arm_2d_region_t *ptRegion,
2081 uint32_t wMaskColour);
2082
2083
2084/*----------------------------------------------------------------------------*
2085 * Tile filling (tiling) to destination with colour-keying and y-mirroring *
2086 *----------------------------------------------------------------------------*/
2087
2088/*!
2089 * \brief tile filling (tiling) with colour-keying and y-mirroring
2090 * \param[in] ptOP the control block, NULL means using the default control block
2091 * \param[in] ptSource the source tile
2092 * \param[in] ptTarget the target tile
2093 * \param[in] ptRegion the target region, NULL means using the region of the
2094 * target tile.
2095 * \param[in] chMaskColour the key colour in any 8bit colour format
2096 * \return arm_fsm_rt_t the operation result
2097 */
2098extern
2099ARM_NONNULL(2,3)
2102 const arm_2d_tile_t *ptSource,
2103 const arm_2d_tile_t *ptTarget,
2104 const arm_2d_region_t *ptRegion,
2105 uint8_t chMaskColour);
2106
2107/*!
2108 * \brief tile filling (tiling) with colour-keying and y-mirroring
2109 * \param[in] ptOP the control block, NULL means using the default control block
2110 * \param[in] ptSource the source tile
2111 * \param[in] ptTarget the target tile
2112 * \param[in] ptRegion the target region, NULL means using the region of the
2113 * target tile.
2114 * \param[in] hwMaskColour the key colour in any 16bit colour format
2115 * \return arm_fsm_rt_t the operation result
2116 *
2117 * \note alpha channel is not handled, i.e. rgba5551
2118 */
2119extern
2120ARM_NONNULL(2,3)
2123 const arm_2d_tile_t *ptSource,
2124 const arm_2d_tile_t *ptTarget,
2125 const arm_2d_region_t *ptRegion,
2126 uint16_t hwMaskColour);
2127
2128
2129/*!
2130 * \brief tile filling (tiling) with colour-keying and y-mirroring
2131 * \param[in] ptOP the control block, NULL means using the default control block
2132 * \param[in] ptSource the source tile
2133 * \param[in] ptTarget the target tile
2134 * \param[in] ptRegion the target region, NULL means using the region of the
2135 * target tile.
2136 * \param[in] wMaskColour the key colour in any 32bit colour format
2137 * \return arm_fsm_rt_t the operation result
2138 *
2139 * \note alpha channel is not handled
2140 */
2141extern
2142ARM_NONNULL(2,3)
2145 const arm_2d_tile_t *ptSource,
2146 const arm_2d_tile_t *ptTarget,
2147 const arm_2d_region_t *ptRegion,
2148 uint32_t wMaskColour);
2149
2150/*----------------------------------------------------------------------------*
2151 * Tile filling (tiling) to destination with colour-keying and xy-mirroring *
2152 *----------------------------------------------------------------------------*/
2153
2154/*!
2155 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2156 * \param[in] ptOP the control block, NULL means using the default control block
2157 * \param[in] ptSource the source tile
2158 * \param[in] ptTarget the target tile
2159 * \param[in] ptRegion the target region, NULL means using the region of the
2160 * target tile.
2161 * \param[in] chMaskColour the key colour in any 8bit colour format
2162 * \return arm_fsm_rt_t the operation result
2163 */
2164extern
2165ARM_NONNULL(2,3)
2168 const arm_2d_tile_t *ptSource,
2169 const arm_2d_tile_t *ptTarget,
2170 const arm_2d_region_t *ptRegion,
2171 uint8_t chMaskColour);
2172
2173/*!
2174 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2175 * \param[in] ptOP the control block, NULL means using the default control block
2176 * \param[in] ptSource the source tile
2177 * \param[in] ptTarget the target tile
2178 * \param[in] ptRegion the target region, NULL means using the region of the
2179 * target tile.
2180 * \param[in] hwMaskColour the key colour in any 16bit colour format
2181 * \return arm_fsm_rt_t the operation result
2182 *
2183 * \note alpha channel is not handled, i.e. rgba5551
2184 */
2185extern
2186ARM_NONNULL(2,3)
2189 const arm_2d_tile_t *ptSource,
2190 const arm_2d_tile_t *ptTarget,
2191 const arm_2d_region_t *ptRegion,
2192 uint16_t hwMaskColour);
2193
2194
2195/*!
2196 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2197 * \param[in] ptOP the control block, NULL means using the default control block
2198 * \param[in] ptSource the source tile
2199 * \param[in] ptTarget the target tile
2200 * \param[in] ptRegion the target region, NULL means using the region of the
2201 * target tile.
2202 * \param[in] wMaskColour the key colour in any 32bit colour format
2203 * \return arm_fsm_rt_t the operation result
2204 *
2205 * \note alpha channel is not handled
2206 */
2207extern
2208ARM_NONNULL(2,3)
2211 const arm_2d_tile_t *ptSource,
2212 const arm_2d_tile_t *ptTarget,
2213 const arm_2d_region_t *ptRegion,
2214 uint32_t wMaskColour);
2215
2216
2217
2218
2219
2220/*! @} */
2221
2222#ifdef __cplusplus
2223}
2224#endif
2225
2226#endif