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: 13. June 2024
25 * $Revision: V.1.4.6
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/*----------------------------------------------------------------------------*
1091 * Copy/Fill tile to destination with Mirroring *
1092 *----------------------------------------------------------------------------*/
1093
1094/*!
1095 * \brief tile copy modes
1096 */
1098 ARM_2D_CP_MODE_COPY = 0,
1099 ARM_2D_CP_MODE_FILL = _BV(0),
1100 ARM_2D_CP_MODE_Y_MIRROR = _BV(2),
1101 ARM_2D_CP_MODE_X_MIRROR = _BV(3),
1102 ARM_2D_CP_MODE_XY_MIRROR = ARM_2D_CP_MODE_X_MIRROR |
1103 ARM_2D_CP_MODE_Y_MIRROR,
1104};
1105
1106/*!
1107 * \brief tile copy with specified mode
1108 * \param[in] ptOP the control block, NULL means using the default control block
1109 * \param[in] ptSource the source tile
1110 * \param[in] ptTarget the target tile
1111 * \param[in] ptRegion the target region, NULL means using the region of the
1112 * target tile.
1113 * \param[in] wMode the copy mode
1114 * \return arm_fsm_rt_t the operation result
1115 */
1116extern
1117ARM_NONNULL(2,3)
1119 const arm_2d_tile_t *ptSource,
1120 const arm_2d_tile_t *ptTarget,
1121 const arm_2d_region_t *ptRegion,
1122 uint32_t wMode);
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 * Copy Only *
1162 *----------------------------------------------------------------------------*/
1163/*!
1164 * \brief tile copy only
1165 * \param[in] ptOP the control block, NULL means using the default control block
1166 * \param[in] ptSource the source tile
1167 * \param[in] ptTarget the target tile
1168 * \param[in] ptRegion the target region, NULL means using the region of the
1169 * target tile.
1170 * \return arm_fsm_rt_t the operation result
1171 */
1172extern
1173ARM_NONNULL(2,3)
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 only
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 const arm_2d_tile_t *ptSource,
1192 const arm_2d_tile_t *ptTarget,
1193 const arm_2d_region_t *ptRegion);
1194
1195/*!
1196 * \brief tile copy only
1197 * \param[in] ptOP the control block, NULL means using the default control block
1198 * \param[in] ptSource the source tile
1199 * \param[in] ptTarget the target tile
1200 * \param[in] ptRegion the target region, NULL means using the region of the
1201 * target tile.
1202 * \return arm_fsm_rt_t the operation result
1203 */
1204extern
1205ARM_NONNULL(2,3)
1207 const arm_2d_tile_t *ptSource,
1208 const arm_2d_tile_t *ptTarget,
1209 const arm_2d_region_t *ptRegion);
1210
1211/*----------------------------------------------------------------------------*
1212 * Copy with X mirroring *
1213 *----------------------------------------------------------------------------*/
1214/*!
1215 * \brief tile copy with x-mirroring
1216 * \param[in] ptOP the control block, NULL means using the default control block
1217 * \param[in] ptSource the source tile
1218 * \param[in] ptTarget the target tile
1219 * \param[in] ptRegion the target region, NULL means using the region of the
1220 * target tile.
1221 * \return arm_fsm_rt_t the operation result
1222 */
1223extern
1224ARM_NONNULL(2,3)
1226 arm_2d_op_cp_t *ptOP,
1227 const arm_2d_tile_t *ptSource,
1228 const arm_2d_tile_t *ptTarget,
1229 const arm_2d_region_t *ptRegion);
1230
1231/*!
1232 * \brief tile copy with x-mirroring
1233 * \param[in] ptOP the control block, NULL means using the default control block
1234 * \param[in] ptSource the source tile
1235 * \param[in] ptTarget the target tile
1236 * \param[in] ptRegion the target region, NULL means using the region of the
1237 * target tile.
1238 * \return arm_fsm_rt_t the operation result
1239 */
1240extern
1241ARM_NONNULL(2,3)
1243 arm_2d_op_cp_t *ptOP,
1244 const arm_2d_tile_t *ptSource,
1245 const arm_2d_tile_t *ptTarget,
1246 const arm_2d_region_t *ptRegion);
1247
1248/*!
1249 * \brief tile copy with x-mirroring
1250 * \param[in] ptOP the control block, NULL means using the default control block
1251 * \param[in] ptSource the source tile
1252 * \param[in] ptTarget the target tile
1253 * \param[in] ptRegion the target region, NULL means using the region of the
1254 * target tile.
1255 * \return arm_fsm_rt_t the operation result
1256 */
1257extern
1258ARM_NONNULL(2,3)
1260 arm_2d_op_cp_t *ptOP,
1261 const arm_2d_tile_t *ptSource,
1262 const arm_2d_tile_t *ptTarget,
1263 const arm_2d_region_t *ptRegion);
1264
1265/*----------------------------------------------------------------------------*
1266 * Copy with Y mirroring *
1267 *----------------------------------------------------------------------------*/
1268
1269/*!
1270 * \brief tile copy with y-mirroring
1271 * \param[in] ptOP the control block, NULL means using the default control block
1272 * \param[in] ptSource the source tile
1273 * \param[in] ptTarget the target tile
1274 * \param[in] ptRegion the target region, NULL means using the region of the
1275 * target tile.
1276 * \return arm_fsm_rt_t the operation result
1277 */
1278extern
1279ARM_NONNULL(2,3)
1281 arm_2d_op_cp_t *ptOP,
1282 const arm_2d_tile_t *ptSource,
1283 const arm_2d_tile_t *ptTarget,
1284 const arm_2d_region_t *ptRegion);
1285
1286/*!
1287 * \brief tile copy with y-mirroring
1288 * \param[in] ptOP the control block, NULL means using the default control block
1289 * \param[in] ptSource the source tile
1290 * \param[in] ptTarget the target tile
1291 * \param[in] ptRegion the target region, NULL means using the region of the
1292 * target tile.
1293 * \return arm_fsm_rt_t the operation result
1294 */
1295extern
1296ARM_NONNULL(2,3)
1298 arm_2d_op_cp_t *ptOP,
1299 const arm_2d_tile_t *ptSource,
1300 const arm_2d_tile_t *ptTarget,
1301 const arm_2d_region_t *ptRegion);
1302
1303/*!
1304 * \brief tile copy with y-mirroring
1305 * \param[in] ptOP the control block, NULL means using the default control block
1306 * \param[in] ptSource the source tile
1307 * \param[in] ptTarget the target tile
1308 * \param[in] ptRegion the target region, NULL means using the region of the
1309 * target tile.
1310 * \return arm_fsm_rt_t the operation result
1311 */
1312extern
1313ARM_NONNULL(2,3)
1315 arm_2d_op_cp_t *ptOP,
1316 const arm_2d_tile_t *ptSource,
1317 const arm_2d_tile_t *ptTarget,
1318 const arm_2d_region_t *ptRegion);
1319
1320/*----------------------------------------------------------------------------*
1321 * Copy with XY mirroring *
1322 *----------------------------------------------------------------------------*/
1323
1324/*!
1325 * \brief tile copy with xy-mirroring
1326 * \param[in] ptOP the control block, NULL means using the default control block
1327 * \param[in] ptSource the source tile
1328 * \param[in] ptTarget the target tile
1329 * \param[in] ptRegion the target region, NULL means using the region of the
1330 * target tile.
1331 * \return arm_fsm_rt_t the operation result
1332 */
1333extern
1334ARM_NONNULL(2,3)
1336 arm_2d_op_cp_t *ptOP,
1337 const arm_2d_tile_t *ptSource,
1338 const arm_2d_tile_t *ptTarget,
1339 const arm_2d_region_t *ptRegion);
1340
1341/*!
1342 * \brief tile copy with xy-mirroring
1343 * \param[in] ptOP the control block, NULL means using the default control block
1344 * \param[in] ptSource the source tile
1345 * \param[in] ptTarget the target tile
1346 * \param[in] ptRegion the target region, NULL means using the region of the
1347 * target tile.
1348 * \return arm_fsm_rt_t the operation result
1349 */
1350extern
1351ARM_NONNULL(2,3)
1353 arm_2d_op_cp_t *ptOP,
1354 const arm_2d_tile_t *ptSource,
1355 const arm_2d_tile_t *ptTarget,
1356 const arm_2d_region_t *ptRegion);
1357
1358/*!
1359 * \brief tile copy with xy-mirroring
1360 * \param[in] ptOP the control block, NULL means using the default control block
1361 * \param[in] ptSource the source tile
1362 * \param[in] ptTarget the target tile
1363 * \param[in] ptRegion the target region, NULL means using the region of the
1364 * target tile.
1365 * \return arm_fsm_rt_t the operation result
1366 */
1367extern
1368ARM_NONNULL(2,3)
1370 arm_2d_op_cp_t *ptOP,
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 Only *
1377 *----------------------------------------------------------------------------*/
1378
1379/*!
1380 * \brief Tiling only
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 const arm_2d_tile_t *ptSource,
1392 const arm_2d_tile_t *ptTarget,
1393 const arm_2d_region_t *ptRegion);
1394
1395/*!
1396 * \brief Tiling only
1397 * \param[in] ptOP the control block, NULL means using the default control block
1398 * \param[in] ptSource the source tile
1399 * \param[in] ptTarget the target tile
1400 * \param[in] ptRegion the target region, NULL means using the region of the
1401 * target tile.
1402 * \return arm_fsm_rt_t the operation result
1403 */
1404extern
1405ARM_NONNULL(2,3)
1407 const arm_2d_tile_t *ptSource,
1408 const arm_2d_tile_t *ptTarget,
1409 const arm_2d_region_t *ptRegion);
1410
1411/*!
1412 * \brief Tiling only
1413 * \param[in] ptOP the control block, NULL means using the default control block
1414 * \param[in] ptSource the source tile
1415 * \param[in] ptTarget the target tile
1416 * \param[in] ptRegion the target region, NULL means using the region of the
1417 * target tile.
1418 * \return arm_fsm_rt_t the operation result
1419 */
1420extern
1421ARM_NONNULL(2,3)
1423 const arm_2d_tile_t *ptSource,
1424 const arm_2d_tile_t *ptTarget,
1425 const arm_2d_region_t *ptRegion);
1426
1427/*----------------------------------------------------------------------------*
1428 * Fill with X mirroring *
1429 *----------------------------------------------------------------------------*/
1430
1431/*!
1432 * \brief Tiling with x-mirroring
1433 * \param[in] ptOP the control block, NULL means using the default control block
1434 * \param[in] ptSource the source tile
1435 * \param[in] ptTarget the target tile
1436 * \param[in] ptRegion the target region, NULL means using the region of the
1437 * target tile.
1438 * \return arm_fsm_rt_t the operation result
1439 */
1440extern
1441ARM_NONNULL(2,3)
1443 arm_2d_op_cp_t *ptOP,
1444 const arm_2d_tile_t *ptSource,
1445 const arm_2d_tile_t *ptTarget,
1446 const arm_2d_region_t *ptRegion);
1447
1448/*!
1449 * \brief Tiling with x-mirroring
1450 * \param[in] ptOP the control block, NULL means using the default control block
1451 * \param[in] ptSource the source tile
1452 * \param[in] ptTarget the target tile
1453 * \param[in] ptRegion the target region, NULL means using the region of the
1454 * target tile.
1455 * \return arm_fsm_rt_t the operation result
1456 */
1457extern
1458ARM_NONNULL(2,3)
1460 arm_2d_op_cp_t *ptOP,
1461 const arm_2d_tile_t *ptSource,
1462 const arm_2d_tile_t *ptTarget,
1463 const arm_2d_region_t *ptRegion);
1464
1465/*!
1466 * \brief Tiling with x-mirroring
1467 * \param[in] ptOP the control block, NULL means using the default control block
1468 * \param[in] ptSource the source tile
1469 * \param[in] ptTarget the target tile
1470 * \param[in] ptRegion the target region, NULL means using the region of the
1471 * target tile.
1472 * \return arm_fsm_rt_t the operation result
1473 */
1474extern
1475ARM_NONNULL(2,3)
1477 arm_2d_op_cp_t *ptOP,
1478 const arm_2d_tile_t *ptSource,
1479 const arm_2d_tile_t *ptTarget,
1480 const arm_2d_region_t *ptRegion);
1481
1482/*----------------------------------------------------------------------------*
1483 * Fill with Y mirroring *
1484 *----------------------------------------------------------------------------*/
1485
1486/*!
1487 * \brief Tiling with y-mirroring
1488 * \param[in] ptOP the control block, NULL means using the default control block
1489 * \param[in] ptSource the source tile
1490 * \param[in] ptTarget the target tile
1491 * \param[in] ptRegion the target region, NULL means using the region of the
1492 * target tile.
1493 * \return arm_fsm_rt_t the operation result
1494 */
1495extern
1496ARM_NONNULL(2,3)
1498 arm_2d_op_cp_t *ptOP,
1499 const arm_2d_tile_t *ptSource,
1500 const arm_2d_tile_t *ptTarget,
1501 const arm_2d_region_t *ptRegion);
1502
1503/*!
1504 * \brief Tiling with y-mirroring
1505 * \param[in] ptOP the control block, NULL means using the default control block
1506 * \param[in] ptSource the source tile
1507 * \param[in] ptTarget the target tile
1508 * \param[in] ptRegion the target region, NULL means using the region of the
1509 * target tile.
1510 * \return arm_fsm_rt_t the operation result
1511 */
1512extern
1513ARM_NONNULL(2,3)
1515 arm_2d_op_cp_t *ptOP,
1516 const arm_2d_tile_t *ptSource,
1517 const arm_2d_tile_t *ptTarget,
1518 const arm_2d_region_t *ptRegion);
1519
1520/*!
1521 * \brief Tiling with y-mirroring
1522 * \param[in] ptOP the control block, NULL means using the default control block
1523 * \param[in] ptSource the source tile
1524 * \param[in] ptTarget the target tile
1525 * \param[in] ptRegion the target region, NULL means using the region of the
1526 * target tile.
1527 * \return arm_fsm_rt_t the operation result
1528 */
1529extern
1530ARM_NONNULL(2,3)
1532 arm_2d_op_cp_t *ptOP,
1533 const arm_2d_tile_t *ptSource,
1534 const arm_2d_tile_t *ptTarget,
1535 const arm_2d_region_t *ptRegion);
1536
1537/*----------------------------------------------------------------------------*
1538 * Fill with XY mirroring *
1539 *----------------------------------------------------------------------------*/
1540
1541/*!
1542 * \brief Tiling with xy-mirroring
1543 * \param[in] ptOP the control block, NULL means using the default control block
1544 * \param[in] ptSource the source tile
1545 * \param[in] ptTarget the target tile
1546 * \param[in] ptRegion the target region, NULL means using the region of the
1547 * target tile.
1548 * \return arm_fsm_rt_t the operation result
1549 */
1550extern
1551ARM_NONNULL(2,3)
1553 arm_2d_op_cp_t *ptOP,
1554 const arm_2d_tile_t *ptSource,
1555 const arm_2d_tile_t *ptTarget,
1556 const arm_2d_region_t *ptRegion);
1557
1558/*!
1559 * \brief Tiling with xy-mirroring
1560 * \param[in] ptOP the control block, NULL means using the default control block
1561 * \param[in] ptSource the source tile
1562 * \param[in] ptTarget the target tile
1563 * \param[in] ptRegion the target region, NULL means using the region of the
1564 * target tile.
1565 * \return arm_fsm_rt_t the operation result
1566 */
1567extern
1568ARM_NONNULL(2,3)
1570 arm_2d_op_cp_t *ptOP,
1571 const arm_2d_tile_t *ptSource,
1572 const arm_2d_tile_t *ptTarget,
1573 const arm_2d_region_t *ptRegion);
1574
1575/*!
1576 * \brief Tiling with xy-mirroring
1577 * \param[in] ptOP the control block, NULL means using the default control block
1578 * \param[in] ptSource the source tile
1579 * \param[in] ptTarget the target tile
1580 * \param[in] ptRegion the target region, NULL means using the region of the
1581 * target tile.
1582 * \return arm_fsm_rt_t the operation result
1583 */
1584extern
1585ARM_NONNULL(2,3)
1587 arm_2d_op_cp_t *ptOP,
1588 const arm_2d_tile_t *ptSource,
1589 const arm_2d_tile_t *ptTarget,
1590 const arm_2d_region_t *ptRegion);
1591
1592/*----------------------------------------------------------------------------*
1593 * Copy/Fill tile to destination with colour-keying and mirroring *
1594 *----------------------------------------------------------------------------*/
1595
1596/*!
1597 * \brief tile copy with colour-keying and specified mode
1598 * \param[in] ptOP the control block, NULL means using the default control block
1599 * \param[in] ptSource the source tile
1600 * \param[in] ptTarget the target tile
1601 * \param[in] ptRegion the target region, NULL means using the region of the
1602 * target tile.
1603 * \param[in] chMaskColour the key colour in any 8bit colour format
1604 * \param[in] wMode the copy mode
1605 * \return arm_fsm_rt_t the operation result
1606 */
1607extern
1608ARM_NONNULL(2,3)
1611 const arm_2d_tile_t *ptSource,
1612 const arm_2d_tile_t *ptTarget,
1613 const arm_2d_region_t *ptRegion,
1614 uint8_t chMaskColour,
1615 uint32_t wMode);
1616
1617/*!
1618 * \brief tile copy with colour-keying and specified mode
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] hwMaskColour the key colour in any 16bit colour format
1625 * \param[in] wMode the copy mode
1626 * \return arm_fsm_rt_t the operation result
1627 *
1628 * \note alpha channel is not handled, i.e. rgba5551
1629 */
1630extern
1631ARM_NONNULL(2,3)
1634 const arm_2d_tile_t *ptSource,
1635 const arm_2d_tile_t *ptTarget,
1636 const arm_2d_region_t *ptRegion,
1637 uint16_t hwMaskColour,
1638 uint32_t wMode);
1639
1640
1641/*!
1642 * \brief tile copy with colour-keying and specified mode
1643 * \param[in] ptOP the control block, NULL means using the default control block
1644 * \param[in] ptSource the source tile
1645 * \param[in] ptTarget the target tile
1646 * \param[in] ptRegion the target region, NULL means using the region of the
1647 * target tile.
1648 * \param[in] wMaskColour the key colour in any 32bit colour format
1649 * \param[in] wMode the copy mode
1650 * \return arm_fsm_rt_t the operation result
1651 *
1652 * \note alpha channel is not handled
1653 */
1654extern
1655ARM_NONNULL(2,3)
1658 const arm_2d_tile_t *ptSource,
1659 const arm_2d_tile_t *ptTarget,
1660 const arm_2d_region_t *ptRegion,
1661 uint32_t wMaskColour,
1662 uint32_t wMode);
1663
1664
1665/*----------------------------------------------------------------------------*
1666 * Copy tile to destination with colour-keying *
1667 *----------------------------------------------------------------------------*/
1668
1669/*!
1670 * \brief tile copy with colour-keying
1671 * \param[in] ptOP the control block, NULL means using the default control block
1672 * \param[in] ptSource the source tile
1673 * \param[in] ptTarget the target tile
1674 * \param[in] ptRegion the target region, NULL means using the region of the
1675 * target tile.
1676 * \param[in] chMaskColour the key colour in any 8bit colour format
1677 * \return arm_fsm_rt_t the operation result
1678 */
1679extern
1680ARM_NONNULL(2,3)
1683 const arm_2d_tile_t *ptSource,
1684 const arm_2d_tile_t *ptTarget,
1685 const arm_2d_region_t *ptRegion,
1686 uint8_t chMaskColour);
1687
1688/*!
1689 * \brief tile copy with colour-keying
1690 * \param[in] ptOP the control block, NULL means using the default control block
1691 * \param[in] ptSource the source tile
1692 * \param[in] ptTarget the target tile
1693 * \param[in] ptRegion the target region, NULL means using the region of the
1694 * target tile.
1695 * \param[in] hwMaskColour the key colour in any 16bit colour format
1696 * \return arm_fsm_rt_t the operation result
1697 *
1698 * \note alpha channel is not handled, i.e. rgba5551
1699 */
1700extern
1701ARM_NONNULL(2,3)
1704 const arm_2d_tile_t *ptSource,
1705 const arm_2d_tile_t *ptTarget,
1706 const arm_2d_region_t *ptRegion,
1707 uint16_t hwMaskColour);
1708
1709
1710/*!
1711 * \brief tile copy with colour-keying
1712 * \param[in] ptOP the control block, NULL means using the default control block
1713 * \param[in] ptSource the source tile
1714 * \param[in] ptTarget the target tile
1715 * \param[in] ptRegion the target region, NULL means using the region of the
1716 * target tile.
1717 * \param[in] wMaskColour the key colour in any 32bit colour format
1718 * \return arm_fsm_rt_t the operation result
1719 *
1720 * \note alpha channel is not handled
1721 */
1722extern
1723ARM_NONNULL(2,3)
1726 const arm_2d_tile_t *ptSource,
1727 const arm_2d_tile_t *ptTarget,
1728 const arm_2d_region_t *ptRegion,
1729 uint32_t wMaskColour);
1730
1731
1732/*----------------------------------------------------------------------------*
1733 * Copy tile to destination with colour-keying and x-mirroring *
1734 *----------------------------------------------------------------------------*/
1735
1736/*!
1737 * \brief tile copy with colour-keying and x-mirroring
1738 * \param[in] ptOP the control block, NULL means using the default control block
1739 * \param[in] ptSource the source tile
1740 * \param[in] ptTarget the target tile
1741 * \param[in] ptRegion the target region, NULL means using the region of the
1742 * target tile.
1743 * \param[in] chMaskColour the key colour in any 8bit colour format
1744 * \return arm_fsm_rt_t the operation result
1745 */
1746extern
1747ARM_NONNULL(2,3)
1750 const arm_2d_tile_t *ptSource,
1751 const arm_2d_tile_t *ptTarget,
1752 const arm_2d_region_t *ptRegion,
1753 uint8_t chMaskColour);
1754
1755/*!
1756 * \brief tile copy with colour-keying and x-mirroring
1757 * \param[in] ptOP the control block, NULL means using the default control block
1758 * \param[in] ptSource the source tile
1759 * \param[in] ptTarget the target tile
1760 * \param[in] ptRegion the target region, NULL means using the region of the
1761 * target tile.
1762 * \param[in] hwMaskColour the key colour in any 16bit colour format
1763 * \return arm_fsm_rt_t the operation result
1764 *
1765 * \note alpha channel is not handled, i.e. rgba5551
1766 */
1767extern
1768ARM_NONNULL(2,3)
1771 const arm_2d_tile_t *ptSource,
1772 const arm_2d_tile_t *ptTarget,
1773 const arm_2d_region_t *ptRegion,
1774 uint16_t hwMaskColour);
1775
1776
1777/*!
1778 * \brief tile copy with colour-keying and x-mirroring
1779 * \param[in] ptOP the control block, NULL means using the default control block
1780 * \param[in] ptSource the source tile
1781 * \param[in] ptTarget the target tile
1782 * \param[in] ptRegion the target region, NULL means using the region of the
1783 * target tile.
1784 * \param[in] wMaskColour the key colour in any 32bit colour format
1785 * \return arm_fsm_rt_t the operation result
1786 *
1787 * \note alpha channel is not handled
1788 */
1789extern
1790ARM_NONNULL(2,3)
1793 const arm_2d_tile_t *ptSource,
1794 const arm_2d_tile_t *ptTarget,
1795 const arm_2d_region_t *ptRegion,
1796 uint32_t wMaskColour);
1797
1798
1799/*----------------------------------------------------------------------------*
1800 * Copy tile to destination with colour-keying and y-mirroring *
1801 *----------------------------------------------------------------------------*/
1802
1803/*!
1804 * \brief tile copy with colour-keying and y-mirroring
1805 * \param[in] ptOP the control block, NULL means using the default control block
1806 * \param[in] ptSource the source tile
1807 * \param[in] ptTarget the target tile
1808 * \param[in] ptRegion the target region, NULL means using the region of the
1809 * target tile.
1810 * \param[in] chMaskColour the key colour in any 8bit colour format
1811 * \return arm_fsm_rt_t the operation result
1812 */
1813extern
1814ARM_NONNULL(2,3)
1817 const arm_2d_tile_t *ptSource,
1818 const arm_2d_tile_t *ptTarget,
1819 const arm_2d_region_t *ptRegion,
1820 uint8_t chMaskColour);
1821
1822/*!
1823 * \brief tile copy with colour-keying and y-mirroring
1824 * \param[in] ptOP the control block, NULL means using the default control block
1825 * \param[in] ptSource the source tile
1826 * \param[in] ptTarget the target tile
1827 * \param[in] ptRegion the target region, NULL means using the region of the
1828 * target tile.
1829 * \param[in] hwMaskColour the key colour in any 16bit colour format
1830 * \return arm_fsm_rt_t the operation result
1831 *
1832 * \note alpha channel is not handled, i.e. rgba5551
1833 */
1834extern
1835ARM_NONNULL(2,3)
1838 const arm_2d_tile_t *ptSource,
1839 const arm_2d_tile_t *ptTarget,
1840 const arm_2d_region_t *ptRegion,
1841 uint16_t hwMaskColour);
1842
1843
1844/*!
1845 * \brief tile copy with colour-keying and y-mirroring
1846 * \param[in] ptOP the control block, NULL means using the default control block
1847 * \param[in] ptSource the source tile
1848 * \param[in] ptTarget the target tile
1849 * \param[in] ptRegion the target region, NULL means using the region of the
1850 * target tile.
1851 * \param[in] wMaskColour the key colour in any 32bit colour format
1852 * \return arm_fsm_rt_t the operation result
1853 *
1854 * \note alpha channel is not handled
1855 */
1856extern
1857ARM_NONNULL(2,3)
1860 const arm_2d_tile_t *ptSource,
1861 const arm_2d_tile_t *ptTarget,
1862 const arm_2d_region_t *ptRegion,
1863 uint32_t wMaskColour);
1864
1865/*----------------------------------------------------------------------------*
1866 * Copy tile to destination with colour-keying and xy-mirroring *
1867 *----------------------------------------------------------------------------*/
1868
1869/*!
1870 * \brief tile copy with colour-keying and xy-mirroring
1871 * \param[in] ptOP the control block, NULL means using the default control block
1872 * \param[in] ptSource the source tile
1873 * \param[in] ptTarget the target tile
1874 * \param[in] ptRegion the target region, NULL means using the region of the
1875 * target tile.
1876 * \param[in] chMaskColour the key colour in any 8bit colour format
1877 * \return arm_fsm_rt_t the operation result
1878 */
1879extern
1880ARM_NONNULL(2,3)
1883 const arm_2d_tile_t *ptSource,
1884 const arm_2d_tile_t *ptTarget,
1885 const arm_2d_region_t *ptRegion,
1886 uint8_t chMaskColour);
1887
1888/*!
1889 * \brief tile copy with colour-keying and xy-mirroring
1890 * \param[in] ptOP the control block, NULL means using the default control block
1891 * \param[in] ptSource the source tile
1892 * \param[in] ptTarget the target tile
1893 * \param[in] ptRegion the target region, NULL means using the region of the
1894 * target tile.
1895 * \param[in] hwMaskColour the key colour in any 16bit colour format
1896 * \return arm_fsm_rt_t the operation result
1897 *
1898 * \note alpha channel is not handled, i.e. rgba5551
1899 */
1900extern
1901ARM_NONNULL(2,3)
1904 const arm_2d_tile_t *ptSource,
1905 const arm_2d_tile_t *ptTarget,
1906 const arm_2d_region_t *ptRegion,
1907 uint16_t hwMaskColour);
1908
1909
1910/*!
1911 * \brief tile copy with colour-keying and xy-mirroring
1912 * \param[in] ptOP the control block, NULL means using the default control block
1913 * \param[in] ptSource the source tile
1914 * \param[in] ptTarget the target tile
1915 * \param[in] ptRegion the target region, NULL means using the region of the
1916 * target tile.
1917 * \param[in] wMaskColour the key colour in any 32bit colour format
1918 * \return arm_fsm_rt_t the operation result
1919 *
1920 * \note alpha channel is not handled
1921 */
1922extern
1923ARM_NONNULL(2,3)
1926 const arm_2d_tile_t *ptSource,
1927 const arm_2d_tile_t *ptTarget,
1928 const arm_2d_region_t *ptRegion,
1929 uint32_t wMaskColour);
1930
1931
1932/*----------------------------------------------------------------------------*
1933 * Tile filling (tiling) to destination with colour-keying *
1934 *----------------------------------------------------------------------------*/
1935
1936/*!
1937 * \brief tile filling (tiling) with colour-keying
1938 * \param[in] ptOP the control block, NULL means using the default control block
1939 * \param[in] ptSource the source tile
1940 * \param[in] ptTarget the target tile
1941 * \param[in] ptRegion the target region, NULL means using the region of the
1942 * target tile.
1943 * \param[in] chMaskColour the key colour in any 8bit colour format
1944 * \return arm_fsm_rt_t the operation result
1945 */
1946extern
1947ARM_NONNULL(2,3)
1950 const arm_2d_tile_t *ptSource,
1951 const arm_2d_tile_t *ptTarget,
1952 const arm_2d_region_t *ptRegion,
1953 uint8_t chMaskColour);
1954
1955/*!
1956 * \brief tile filling (tiling) with colour-keying
1957 * \param[in] ptOP the control block, NULL means using the default control block
1958 * \param[in] ptSource the source tile
1959 * \param[in] ptTarget the target tile
1960 * \param[in] ptRegion the target region, NULL means using the region of the
1961 * target tile.
1962 * \param[in] hwMaskColour the key colour in any 16bit colour format
1963 * \return arm_fsm_rt_t the operation result
1964 *
1965 * \note alpha channel is not handled, i.e. rgba5551
1966 */
1967extern
1968ARM_NONNULL(2,3)
1971 const arm_2d_tile_t *ptSource,
1972 const arm_2d_tile_t *ptTarget,
1973 const arm_2d_region_t *ptRegion,
1974 uint16_t hwMaskColour);
1975
1976
1977/*!
1978 * \brief tile filling (tiling) with colour-keying
1979 * \param[in] ptOP the control block, NULL means using the default control block
1980 * \param[in] ptSource the source tile
1981 * \param[in] ptTarget the target tile
1982 * \param[in] ptRegion the target region, NULL means using the region of the
1983 * target tile.
1984 * \param[in] wMaskColour the key colour in any 32bit colour format
1985 * \return arm_fsm_rt_t the operation result
1986 *
1987 * \note alpha channel is not handled
1988 */
1989extern
1990ARM_NONNULL(2,3)
1993 const arm_2d_tile_t *ptSource,
1994 const arm_2d_tile_t *ptTarget,
1995 const arm_2d_region_t *ptRegion,
1996 uint32_t wMaskColour);
1997
1998
1999/*----------------------------------------------------------------------------*
2000 * Tile filling (tiling) to destination with colour-keying and x-mirroring *
2001 *----------------------------------------------------------------------------*/
2002
2003/*!
2004 * \brief tile filling (tiling) with colour-keying and x-mirroring
2005 * \param[in] ptOP the control block, NULL means using the default control block
2006 * \param[in] ptSource the source tile
2007 * \param[in] ptTarget the target tile
2008 * \param[in] ptRegion the target region, NULL means using the region of the
2009 * target tile.
2010 * \param[in] chMaskColour the key colour in any 8bit colour format
2011 * \return arm_fsm_rt_t the operation result
2012 */
2013extern
2014ARM_NONNULL(2,3)
2017 const arm_2d_tile_t *ptSource,
2018 const arm_2d_tile_t *ptTarget,
2019 const arm_2d_region_t *ptRegion,
2020 uint8_t chMaskColour);
2021
2022/*!
2023 * \brief tile filling (tiling) with colour-keying and x-mirroring
2024 * \param[in] ptOP the control block, NULL means using the default control block
2025 * \param[in] ptSource the source tile
2026 * \param[in] ptTarget the target tile
2027 * \param[in] ptRegion the target region, NULL means using the region of the
2028 * target tile.
2029 * \param[in] hwMaskColour the key colour in any 16bit colour format
2030 * \return arm_fsm_rt_t the operation result
2031 *
2032 * \note alpha channel is not handled, i.e. rgba5551
2033 */
2034extern
2035ARM_NONNULL(2,3)
2038 const arm_2d_tile_t *ptSource,
2039 const arm_2d_tile_t *ptTarget,
2040 const arm_2d_region_t *ptRegion,
2041 uint16_t hwMaskColour);
2042
2043
2044/*!
2045 * \brief tile filling (tiling) with colour-keying and x-mirroring
2046 * \param[in] ptOP the control block, NULL means using the default control block
2047 * \param[in] ptSource the source tile
2048 * \param[in] ptTarget the target tile
2049 * \param[in] ptRegion the target region, NULL means using the region of the
2050 * target tile.
2051 * \param[in] wMaskColour the key colour in any 32bit colour format
2052 * \return arm_fsm_rt_t the operation result
2053 *
2054 * \note alpha channel is not handled
2055 */
2056extern
2057ARM_NONNULL(2,3)
2060 const arm_2d_tile_t *ptSource,
2061 const arm_2d_tile_t *ptTarget,
2062 const arm_2d_region_t *ptRegion,
2063 uint32_t wMaskColour);
2064
2065
2066/*----------------------------------------------------------------------------*
2067 * Tile filling (tiling) to destination with colour-keying and y-mirroring *
2068 *----------------------------------------------------------------------------*/
2069
2070/*!
2071 * \brief tile filling (tiling) with colour-keying and y-mirroring
2072 * \param[in] ptOP the control block, NULL means using the default control block
2073 * \param[in] ptSource the source tile
2074 * \param[in] ptTarget the target tile
2075 * \param[in] ptRegion the target region, NULL means using the region of the
2076 * target tile.
2077 * \param[in] chMaskColour the key colour in any 8bit colour format
2078 * \return arm_fsm_rt_t the operation result
2079 */
2080extern
2081ARM_NONNULL(2,3)
2084 const arm_2d_tile_t *ptSource,
2085 const arm_2d_tile_t *ptTarget,
2086 const arm_2d_region_t *ptRegion,
2087 uint8_t chMaskColour);
2088
2089/*!
2090 * \brief tile filling (tiling) with colour-keying and y-mirroring
2091 * \param[in] ptOP the control block, NULL means using the default control block
2092 * \param[in] ptSource the source tile
2093 * \param[in] ptTarget the target tile
2094 * \param[in] ptRegion the target region, NULL means using the region of the
2095 * target tile.
2096 * \param[in] hwMaskColour the key colour in any 16bit colour format
2097 * \return arm_fsm_rt_t the operation result
2098 *
2099 * \note alpha channel is not handled, i.e. rgba5551
2100 */
2101extern
2102ARM_NONNULL(2,3)
2105 const arm_2d_tile_t *ptSource,
2106 const arm_2d_tile_t *ptTarget,
2107 const arm_2d_region_t *ptRegion,
2108 uint16_t hwMaskColour);
2109
2110
2111/*!
2112 * \brief tile filling (tiling) with colour-keying and y-mirroring
2113 * \param[in] ptOP the control block, NULL means using the default control block
2114 * \param[in] ptSource the source tile
2115 * \param[in] ptTarget the target tile
2116 * \param[in] ptRegion the target region, NULL means using the region of the
2117 * target tile.
2118 * \param[in] wMaskColour the key colour in any 32bit colour format
2119 * \return arm_fsm_rt_t the operation result
2120 *
2121 * \note alpha channel is not handled
2122 */
2123extern
2124ARM_NONNULL(2,3)
2127 const arm_2d_tile_t *ptSource,
2128 const arm_2d_tile_t *ptTarget,
2129 const arm_2d_region_t *ptRegion,
2130 uint32_t wMaskColour);
2131
2132/*----------------------------------------------------------------------------*
2133 * Tile filling (tiling) to destination with colour-keying and xy-mirroring *
2134 *----------------------------------------------------------------------------*/
2135
2136/*!
2137 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2138 * \param[in] ptOP the control block, NULL means using the default control block
2139 * \param[in] ptSource the source tile
2140 * \param[in] ptTarget the target tile
2141 * \param[in] ptRegion the target region, NULL means using the region of the
2142 * target tile.
2143 * \param[in] chMaskColour the key colour in any 8bit colour format
2144 * \return arm_fsm_rt_t the operation result
2145 */
2146extern
2147ARM_NONNULL(2,3)
2150 const arm_2d_tile_t *ptSource,
2151 const arm_2d_tile_t *ptTarget,
2152 const arm_2d_region_t *ptRegion,
2153 uint8_t chMaskColour);
2154
2155/*!
2156 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2157 * \param[in] ptOP the control block, NULL means using the default control block
2158 * \param[in] ptSource the source tile
2159 * \param[in] ptTarget the target tile
2160 * \param[in] ptRegion the target region, NULL means using the region of the
2161 * target tile.
2162 * \param[in] hwMaskColour the key colour in any 16bit colour format
2163 * \return arm_fsm_rt_t the operation result
2164 *
2165 * \note alpha channel is not handled, i.e. rgba5551
2166 */
2167extern
2168ARM_NONNULL(2,3)
2171 const arm_2d_tile_t *ptSource,
2172 const arm_2d_tile_t *ptTarget,
2173 const arm_2d_region_t *ptRegion,
2174 uint16_t hwMaskColour);
2175
2176
2177/*!
2178 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2179 * \param[in] ptOP the control block, NULL means using the default control block
2180 * \param[in] ptSource the source tile
2181 * \param[in] ptTarget the target tile
2182 * \param[in] ptRegion the target region, NULL means using the region of the
2183 * target tile.
2184 * \param[in] wMaskColour the key colour in any 32bit colour format
2185 * \return arm_fsm_rt_t the operation result
2186 *
2187 * \note alpha channel is not handled
2188 */
2189extern
2190ARM_NONNULL(2,3)
2193 const arm_2d_tile_t *ptSource,
2194 const arm_2d_tile_t *ptTarget,
2195 const arm_2d_region_t *ptRegion,
2196 uint32_t wMaskColour);
2197
2198
2199
2200
2201
2202/*! @} */
2203
2204#ifdef __cplusplus
2205}
2206#endif
2207
2208#endif