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: 27. Oct 2022
25 * $Revision: V.1.1.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 * \brief check whether a point is inside a given region
846 * \param[in] ptRegion the target region
847 * \param[in] ptPoint the target point
848 * \retval true the point is inside the target region
849 * \retval false the point is outside the target region
850 */
851extern
852ARM_NONNULL(1,2)
854 const arm_2d_location_t *ptPoint);
855
856/*!
857 * \brief get the root tile and the valid region for a given tile
858 * \param[in] ptTile the target tile
859 * \param[out] ptValidRegion the valid region inside the root tile
860 * \param[out] ptOffset the offsite of the root tile as if the root tile is inside the target tile
861 * \return const arm_2d_tile_t* the root tile
862 *
863 * \code
864 HOW IT WORKS:
865
866 Root Tile (Output Tile)
867 +------------------------------------------------------------------------+
868 | ... ... |
869 | |
870 | Child Tile of Parent Tile |
871 | +------------------------------------+ |
872 | | Child Tile of Parent Tile | |
873 | | +------------------------------+---------+ |
874 | | | |/////////| |
875 | | | Valid Region |/////////| |
876 | | | |/////////| |
877 | +-----+------------------------------+/////////| |
878 | |////////////////////////////////////////| |
879 | |////////////////////////////////////////| |
880 | +----------------------------------------+ |
881 | |
882 +------------------------------------------------------------------------+
883 \endcode
884 */
885extern
886ARM_NONNULL(1,2)
888 arm_2d_region_t *ptValidRegion,
889 arm_2d_location_t *ptOffset);
890
891/*!
892 * \brief generate a child tile from the target tile with a given region
893 * \param[in] ptTargetTile the target tile
894 * \param[in] ptRegion the target region
895 * \param[out] ptOutput the child tile
896 * \param[in] bClipRegion whether clip the region for the child tile
897 * \note We highly recommend that please DO NOT clip the child tile if
898 * you don't know what you are doing.
899 * \retval non-NULL the child tile
900 * \retval NULL the given region is outside the target tile
901 *
902 * \note If you want to use the child tile generated by
903 * arm_2d_tile_generate_child() as a source tile / mask, please set the
904 * bDerivedResource to true manually, otherwise all mirror related
905 * operation will NOT work correctly.
906 *
907 * \code
908 HOW IT WORKS:
909
910 Parent Tile (NOT necessarily a ROOT tile )
911 +------------------------------------------------------+
912 | |
913 | |
914 | Target Region |
915 | +------------------------------+---------+
916 | | |/////////|
917 | | New Child Tile (Output) |/////////|
918 | | |/////////|
919 +-----------------------+------------------------------+/////////|
920 |////////////////////////////////////////|
921 |////////////////////////////////////////|
922 +----------------------------------------+
923 \endcode
924 */
925extern
926ARM_NONNULL(1,2,3)
928 const arm_2d_tile_t *ptTargetTile,
929 const arm_2d_region_t *ptRegion,
930 arm_2d_tile_t *ptOutput,
931 bool bClipRegion);
932
933/*!
934 * \brief compare the widths of two tiles
935 * \param[in] ptTarget the target tile
936 * \param[in] ptReference the reference tile
937 * \return arm_2d_cmp_t the comparision result
938 */
939extern
940ARM_NONNULL(1,2)
942 const arm_2d_tile_t *ptReference);
943/*!
944 * \brief compare the heights of two tiles
945 * \param[in] ptTarget the target tile
946 * \param[in] ptReference the reference tile
947 * \return arm_2d_cmp_t the comparision result
948 */
949extern
950ARM_NONNULL(1,2)
952 const arm_2d_tile_t *ptReference);
953
954/*!
955 * \brief compare the shape (both widths and heights) of two tiles
956 * \param[in] ptTarget the target tile
957 * \param[in] ptReference the reference tile
958 * \return arm_2d_cmp_t the comparision result
959 */
960extern
961ARM_NONNULL(1,2)
963 const arm_2d_tile_t *ptReference);
964
965/*!
966 * \brief get the absolute location of a given tile
967 * \param[in] ptTile the target tile
968 * \param[out] ptLocation the absolute location in the root tile
969 * \return const arm_2d_tile_t * the root tile
970 */
971extern
972ARM_NONNULL(1,2)
974 const arm_2d_tile_t *ptTile,
975 arm_2d_location_t *ptLocation);
976
977/*!
978 * \brief calculate the region differences between two tiles
979 * \param[in] ptTarget the target tile
980 * \param[in] ptReference the reference tile
981 * \param[out] ptBuffer the difference stored in a region
982 * \return arm_2d_region_t * the ptBuffer passed to this function
983 */
984extern
985ARM_NONNULL(1,2,3)
987 const arm_2d_tile_t *ptReference,
988 arm_2d_region_t *ptBuffer);
989/*----------------------------------------------------------------------------*
990 * Copy/Fill tile to destination with Mirroring *
991 *----------------------------------------------------------------------------*/
992
993/*!
994 * \brief tile copy modes
995 */
997 ARM_2D_CP_MODE_COPY = 0,
998 ARM_2D_CP_MODE_FILL = _BV(0),
999 ARM_2D_CP_MODE_Y_MIRROR = _BV(2),
1000 ARM_2D_CP_MODE_X_MIRROR = _BV(3),
1001 ARM_2D_CP_MODE_XY_MIRROR = ARM_2D_CP_MODE_X_MIRROR |
1002 ARM_2D_CP_MODE_Y_MIRROR,
1003};
1004
1005/*!
1006 * \brief tile copy with specified mode
1007 * \param[in] ptOP the control block, NULL means using the default control block
1008 * \param[in] ptSource the source tile
1009 * \param[in] ptTarget the target tile
1010 * \param[in] ptRegion the target region, NULL means using the region of the
1011 * target tile.
1012 * \param[in] wMode the copy mode
1013 * \return arm_fsm_rt_t the operation result
1014 */
1015extern
1016ARM_NONNULL(2,3)
1018 const arm_2d_tile_t *ptSource,
1019 const arm_2d_tile_t *ptTarget,
1020 const arm_2d_region_t *ptRegion,
1021 uint32_t wMode);
1022
1023/*!
1024 * \brief tile copy with specified mode
1025 * \param[in] ptOP the control block, NULL means using the default control block
1026 * \param[in] ptSource the source tile
1027 * \param[in] ptTarget the target tile
1028 * \param[in] ptRegion the target region, NULL means using the region of the
1029 * target tile.
1030 * \param[in] wMode the copy mode
1031 * \return arm_fsm_rt_t the operation result
1032 */
1033extern
1034ARM_NONNULL(2,3)
1036 const arm_2d_tile_t *ptSource,
1037 const arm_2d_tile_t *ptTarget,
1038 const arm_2d_region_t *ptRegion,
1039 uint32_t wMode);
1040
1041/*!
1042 * \brief tile copy with specified mode
1043 * \param[in] ptOP the control block, NULL means using the default control block
1044 * \param[in] ptSource the source tile
1045 * \param[in] ptTarget the target tile
1046 * \param[in] ptRegion the target region, NULL means using the region of the
1047 * target tile.
1048 * \param[in] wMode the copy mode
1049 * \return arm_fsm_rt_t the operation result
1050 */
1051extern
1052ARM_NONNULL(2,3)
1054 const arm_2d_tile_t *ptSource,
1055 const arm_2d_tile_t *ptTarget,
1056 const arm_2d_region_t *ptRegion,
1057 uint32_t wMode);
1058
1059/*----------------------------------------------------------------------------*
1060 * Copy Only *
1061 *----------------------------------------------------------------------------*/
1062/*!
1063 * \brief tile copy only
1064 * \param[in] ptOP the control block, NULL means using the default control block
1065 * \param[in] ptSource the source tile
1066 * \param[in] ptTarget the target tile
1067 * \param[in] ptRegion the target region, NULL means using the region of the
1068 * target tile.
1069 * \return arm_fsm_rt_t the operation result
1070 */
1071extern
1072ARM_NONNULL(2,3)
1074 const arm_2d_tile_t *ptSource,
1075 const arm_2d_tile_t *ptTarget,
1076 const arm_2d_region_t *ptRegion);
1077
1078/*!
1079 * \brief tile copy only
1080 * \param[in] ptOP the control block, NULL means using the default control block
1081 * \param[in] ptSource the source tile
1082 * \param[in] ptTarget the target tile
1083 * \param[in] ptRegion the target region, NULL means using the region of the
1084 * target tile.
1085 * \return arm_fsm_rt_t the operation result
1086 */
1087extern
1088ARM_NONNULL(2,3)
1090 const arm_2d_tile_t *ptSource,
1091 const arm_2d_tile_t *ptTarget,
1092 const arm_2d_region_t *ptRegion);
1093
1094/*!
1095 * \brief tile copy only
1096 * \param[in] ptOP the control block, NULL means using the default control block
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 * \return arm_fsm_rt_t the operation result
1102 */
1103extern
1104ARM_NONNULL(2,3)
1106 const arm_2d_tile_t *ptSource,
1107 const arm_2d_tile_t *ptTarget,
1108 const arm_2d_region_t *ptRegion);
1109
1110/*----------------------------------------------------------------------------*
1111 * Copy with X mirroring *
1112 *----------------------------------------------------------------------------*/
1113/*!
1114 * \brief tile copy with x-mirroring
1115 * \param[in] ptOP the control block, NULL means using the default control block
1116 * \param[in] ptSource the source tile
1117 * \param[in] ptTarget the target tile
1118 * \param[in] ptRegion the target region, NULL means using the region of the
1119 * target tile.
1120 * \return arm_fsm_rt_t the operation result
1121 */
1122extern
1123ARM_NONNULL(2,3)
1125 arm_2d_op_cp_t *ptOP,
1126 const arm_2d_tile_t *ptSource,
1127 const arm_2d_tile_t *ptTarget,
1128 const arm_2d_region_t *ptRegion);
1129
1130/*!
1131 * \brief tile copy with x-mirroring
1132 * \param[in] ptOP the control block, NULL means using the default control block
1133 * \param[in] ptSource the source tile
1134 * \param[in] ptTarget the target tile
1135 * \param[in] ptRegion the target region, NULL means using the region of the
1136 * target tile.
1137 * \return arm_fsm_rt_t the operation result
1138 */
1139extern
1140ARM_NONNULL(2,3)
1142 arm_2d_op_cp_t *ptOP,
1143 const arm_2d_tile_t *ptSource,
1144 const arm_2d_tile_t *ptTarget,
1145 const arm_2d_region_t *ptRegion);
1146
1147/*!
1148 * \brief tile copy with x-mirroring
1149 * \param[in] ptOP the control block, NULL means using the default control block
1150 * \param[in] ptSource the source tile
1151 * \param[in] ptTarget the target tile
1152 * \param[in] ptRegion the target region, NULL means using the region of the
1153 * target tile.
1154 * \return arm_fsm_rt_t the operation result
1155 */
1156extern
1157ARM_NONNULL(2,3)
1159 arm_2d_op_cp_t *ptOP,
1160 const arm_2d_tile_t *ptSource,
1161 const arm_2d_tile_t *ptTarget,
1162 const arm_2d_region_t *ptRegion);
1163
1164/*----------------------------------------------------------------------------*
1165 * Copy with Y mirroring *
1166 *----------------------------------------------------------------------------*/
1167
1168/*!
1169 * \brief tile copy with y-mirroring
1170 * \param[in] ptOP the control block, NULL means using the default control block
1171 * \param[in] ptSource the source tile
1172 * \param[in] ptTarget the target tile
1173 * \param[in] ptRegion the target region, NULL means using the region of the
1174 * target tile.
1175 * \return arm_fsm_rt_t the operation result
1176 */
1177extern
1178ARM_NONNULL(2,3)
1180 arm_2d_op_cp_t *ptOP,
1181 const arm_2d_tile_t *ptSource,
1182 const arm_2d_tile_t *ptTarget,
1183 const arm_2d_region_t *ptRegion);
1184
1185/*!
1186 * \brief tile copy with y-mirroring
1187 * \param[in] ptOP the control block, NULL means using the default control block
1188 * \param[in] ptSource the source tile
1189 * \param[in] ptTarget the target tile
1190 * \param[in] ptRegion the target region, NULL means using the region of the
1191 * target tile.
1192 * \return arm_fsm_rt_t the operation result
1193 */
1194extern
1195ARM_NONNULL(2,3)
1197 arm_2d_op_cp_t *ptOP,
1198 const arm_2d_tile_t *ptSource,
1199 const arm_2d_tile_t *ptTarget,
1200 const arm_2d_region_t *ptRegion);
1201
1202/*!
1203 * \brief tile copy with y-mirroring
1204 * \param[in] ptOP the control block, NULL means using the default control block
1205 * \param[in] ptSource the source tile
1206 * \param[in] ptTarget the target tile
1207 * \param[in] ptRegion the target region, NULL means using the region of the
1208 * target tile.
1209 * \return arm_fsm_rt_t the operation result
1210 */
1211extern
1212ARM_NONNULL(2,3)
1214 arm_2d_op_cp_t *ptOP,
1215 const arm_2d_tile_t *ptSource,
1216 const arm_2d_tile_t *ptTarget,
1217 const arm_2d_region_t *ptRegion);
1218
1219/*----------------------------------------------------------------------------*
1220 * Copy with XY mirroring *
1221 *----------------------------------------------------------------------------*/
1222
1223/*!
1224 * \brief tile copy with xy-mirroring
1225 * \param[in] ptOP the control block, NULL means using the default control block
1226 * \param[in] ptSource the source tile
1227 * \param[in] ptTarget the target tile
1228 * \param[in] ptRegion the target region, NULL means using the region of the
1229 * target tile.
1230 * \return arm_fsm_rt_t the operation result
1231 */
1232extern
1233ARM_NONNULL(2,3)
1235 arm_2d_op_cp_t *ptOP,
1236 const arm_2d_tile_t *ptSource,
1237 const arm_2d_tile_t *ptTarget,
1238 const arm_2d_region_t *ptRegion);
1239
1240/*!
1241 * \brief tile copy with xy-mirroring
1242 * \param[in] ptOP the control block, NULL means using the default control block
1243 * \param[in] ptSource the source tile
1244 * \param[in] ptTarget the target tile
1245 * \param[in] ptRegion the target region, NULL means using the region of the
1246 * target tile.
1247 * \return arm_fsm_rt_t the operation result
1248 */
1249extern
1250ARM_NONNULL(2,3)
1252 arm_2d_op_cp_t *ptOP,
1253 const arm_2d_tile_t *ptSource,
1254 const arm_2d_tile_t *ptTarget,
1255 const arm_2d_region_t *ptRegion);
1256
1257/*!
1258 * \brief tile copy with xy-mirroring
1259 * \param[in] ptOP the control block, NULL means using the default control block
1260 * \param[in] ptSource the source tile
1261 * \param[in] ptTarget the target tile
1262 * \param[in] ptRegion the target region, NULL means using the region of the
1263 * target tile.
1264 * \return arm_fsm_rt_t the operation result
1265 */
1266extern
1267ARM_NONNULL(2,3)
1269 arm_2d_op_cp_t *ptOP,
1270 const arm_2d_tile_t *ptSource,
1271 const arm_2d_tile_t *ptTarget,
1272 const arm_2d_region_t *ptRegion);
1273
1274/*----------------------------------------------------------------------------*
1275 * Fill Only *
1276 *----------------------------------------------------------------------------*/
1277
1278/*!
1279 * \brief Tiling only
1280 * \param[in] ptOP the control block, NULL means using the default control block
1281 * \param[in] ptSource the source tile
1282 * \param[in] ptTarget the target tile
1283 * \param[in] ptRegion the target region, NULL means using the region of the
1284 * target tile.
1285 * \return arm_fsm_rt_t the operation result
1286 */
1287extern
1288ARM_NONNULL(2,3)
1290 const arm_2d_tile_t *ptSource,
1291 const arm_2d_tile_t *ptTarget,
1292 const arm_2d_region_t *ptRegion);
1293
1294/*!
1295 * \brief Tiling only
1296 * \param[in] ptOP the control block, NULL means using the default control block
1297 * \param[in] ptSource the source tile
1298 * \param[in] ptTarget the target tile
1299 * \param[in] ptRegion the target region, NULL means using the region of the
1300 * target tile.
1301 * \return arm_fsm_rt_t the operation result
1302 */
1303extern
1304ARM_NONNULL(2,3)
1306 const arm_2d_tile_t *ptSource,
1307 const arm_2d_tile_t *ptTarget,
1308 const arm_2d_region_t *ptRegion);
1309
1310/*!
1311 * \brief Tiling only
1312 * \param[in] ptOP the control block, NULL means using the default control block
1313 * \param[in] ptSource the source tile
1314 * \param[in] ptTarget the target tile
1315 * \param[in] ptRegion the target region, NULL means using the region of the
1316 * target tile.
1317 * \return arm_fsm_rt_t the operation result
1318 */
1319extern
1320ARM_NONNULL(2,3)
1322 const arm_2d_tile_t *ptSource,
1323 const arm_2d_tile_t *ptTarget,
1324 const arm_2d_region_t *ptRegion);
1325
1326/*----------------------------------------------------------------------------*
1327 * Fill with X mirroring *
1328 *----------------------------------------------------------------------------*/
1329
1330/*!
1331 * \brief Tiling with x-mirroring
1332 * \param[in] ptOP the control block, NULL means using the default control block
1333 * \param[in] ptSource the source tile
1334 * \param[in] ptTarget the target tile
1335 * \param[in] ptRegion the target region, NULL means using the region of the
1336 * target tile.
1337 * \return arm_fsm_rt_t the operation result
1338 */
1339extern
1340ARM_NONNULL(2,3)
1342 arm_2d_op_cp_t *ptOP,
1343 const arm_2d_tile_t *ptSource,
1344 const arm_2d_tile_t *ptTarget,
1345 const arm_2d_region_t *ptRegion);
1346
1347/*!
1348 * \brief Tiling with x-mirroring
1349 * \param[in] ptOP the control block, NULL means using the default control block
1350 * \param[in] ptSource the source tile
1351 * \param[in] ptTarget the target tile
1352 * \param[in] ptRegion the target region, NULL means using the region of the
1353 * target tile.
1354 * \return arm_fsm_rt_t the operation result
1355 */
1356extern
1357ARM_NONNULL(2,3)
1359 arm_2d_op_cp_t *ptOP,
1360 const arm_2d_tile_t *ptSource,
1361 const arm_2d_tile_t *ptTarget,
1362 const arm_2d_region_t *ptRegion);
1363
1364/*!
1365 * \brief Tiling with x-mirroring
1366 * \param[in] ptOP the control block, NULL means using the default control block
1367 * \param[in] ptSource the source tile
1368 * \param[in] ptTarget the target tile
1369 * \param[in] ptRegion the target region, NULL means using the region of the
1370 * target tile.
1371 * \return arm_fsm_rt_t the operation result
1372 */
1373extern
1374ARM_NONNULL(2,3)
1376 arm_2d_op_cp_t *ptOP,
1377 const arm_2d_tile_t *ptSource,
1378 const arm_2d_tile_t *ptTarget,
1379 const arm_2d_region_t *ptRegion);
1380
1381/*----------------------------------------------------------------------------*
1382 * Fill with Y mirroring *
1383 *----------------------------------------------------------------------------*/
1384
1385/*!
1386 * \brief Tiling with y-mirroring
1387 * \param[in] ptOP the control block, NULL means using the default control block
1388 * \param[in] ptSource the source tile
1389 * \param[in] ptTarget the target tile
1390 * \param[in] ptRegion the target region, NULL means using the region of the
1391 * target tile.
1392 * \return arm_fsm_rt_t the operation result
1393 */
1394extern
1395ARM_NONNULL(2,3)
1397 arm_2d_op_cp_t *ptOP,
1398 const arm_2d_tile_t *ptSource,
1399 const arm_2d_tile_t *ptTarget,
1400 const arm_2d_region_t *ptRegion);
1401
1402/*!
1403 * \brief Tiling with y-mirroring
1404 * \param[in] ptOP the control block, NULL means using the default control block
1405 * \param[in] ptSource the source tile
1406 * \param[in] ptTarget the target tile
1407 * \param[in] ptRegion the target region, NULL means using the region of the
1408 * target tile.
1409 * \return arm_fsm_rt_t the operation result
1410 */
1411extern
1412ARM_NONNULL(2,3)
1414 arm_2d_op_cp_t *ptOP,
1415 const arm_2d_tile_t *ptSource,
1416 const arm_2d_tile_t *ptTarget,
1417 const arm_2d_region_t *ptRegion);
1418
1419/*!
1420 * \brief Tiling with y-mirroring
1421 * \param[in] ptOP the control block, NULL means using the default control block
1422 * \param[in] ptSource the source tile
1423 * \param[in] ptTarget the target tile
1424 * \param[in] ptRegion the target region, NULL means using the region of the
1425 * target tile.
1426 * \return arm_fsm_rt_t the operation result
1427 */
1428extern
1429ARM_NONNULL(2,3)
1431 arm_2d_op_cp_t *ptOP,
1432 const arm_2d_tile_t *ptSource,
1433 const arm_2d_tile_t *ptTarget,
1434 const arm_2d_region_t *ptRegion);
1435
1436/*----------------------------------------------------------------------------*
1437 * Fill with XY mirroring *
1438 *----------------------------------------------------------------------------*/
1439
1440/*!
1441 * \brief Tiling with xy-mirroring
1442 * \param[in] ptOP the control block, NULL means using the default control block
1443 * \param[in] ptSource the source tile
1444 * \param[in] ptTarget the target tile
1445 * \param[in] ptRegion the target region, NULL means using the region of the
1446 * target tile.
1447 * \return arm_fsm_rt_t the operation result
1448 */
1449extern
1450ARM_NONNULL(2,3)
1452 arm_2d_op_cp_t *ptOP,
1453 const arm_2d_tile_t *ptSource,
1454 const arm_2d_tile_t *ptTarget,
1455 const arm_2d_region_t *ptRegion);
1456
1457/*!
1458 * \brief Tiling with xy-mirroring
1459 * \param[in] ptOP the control block, NULL means using the default control block
1460 * \param[in] ptSource the source tile
1461 * \param[in] ptTarget the target tile
1462 * \param[in] ptRegion the target region, NULL means using the region of the
1463 * target tile.
1464 * \return arm_fsm_rt_t the operation result
1465 */
1466extern
1467ARM_NONNULL(2,3)
1469 arm_2d_op_cp_t *ptOP,
1470 const arm_2d_tile_t *ptSource,
1471 const arm_2d_tile_t *ptTarget,
1472 const arm_2d_region_t *ptRegion);
1473
1474/*!
1475 * \brief Tiling with xy-mirroring
1476 * \param[in] ptOP the control block, NULL means using the default control block
1477 * \param[in] ptSource the source tile
1478 * \param[in] ptTarget the target tile
1479 * \param[in] ptRegion the target region, NULL means using the region of the
1480 * target tile.
1481 * \return arm_fsm_rt_t the operation result
1482 */
1483extern
1484ARM_NONNULL(2,3)
1486 arm_2d_op_cp_t *ptOP,
1487 const arm_2d_tile_t *ptSource,
1488 const arm_2d_tile_t *ptTarget,
1489 const arm_2d_region_t *ptRegion);
1490
1491/*----------------------------------------------------------------------------*
1492 * Copy/Fill tile to destination with colour-keying and mirroring *
1493 *----------------------------------------------------------------------------*/
1494
1495/*!
1496 * \brief tile copy with colour-keying and specified mode
1497 * \param[in] ptOP the control block, NULL means using the default control block
1498 * \param[in] ptSource the source tile
1499 * \param[in] ptTarget the target tile
1500 * \param[in] ptRegion the target region, NULL means using the region of the
1501 * target tile.
1502 * \param[in] chMaskColour the key colour in any 8bit colour format
1503 * \param[in] wMode the copy mode
1504 * \return arm_fsm_rt_t the operation result
1505 */
1506extern
1507ARM_NONNULL(2,3)
1510 const arm_2d_tile_t *ptSource,
1511 const arm_2d_tile_t *ptTarget,
1512 const arm_2d_region_t *ptRegion,
1513 uint8_t chMaskColour,
1514 uint32_t wMode);
1515
1516/*!
1517 * \brief tile copy with colour-keying and specified mode
1518 * \param[in] ptOP the control block, NULL means using the default control block
1519 * \param[in] ptSource the source tile
1520 * \param[in] ptTarget the target tile
1521 * \param[in] ptRegion the target region, NULL means using the region of the
1522 * target tile.
1523 * \param[in] hwMaskColour the key colour in any 16bit colour format
1524 * \param[in] wMode the copy mode
1525 * \return arm_fsm_rt_t the operation result
1526 *
1527 * \note alpha channel is not handled, i.e. rgba5551
1528 */
1529extern
1530ARM_NONNULL(2,3)
1533 const arm_2d_tile_t *ptSource,
1534 const arm_2d_tile_t *ptTarget,
1535 const arm_2d_region_t *ptRegion,
1536 uint16_t hwMaskColour,
1537 uint32_t wMode);
1538
1539
1540/*!
1541 * \brief tile copy with colour-keying and specified mode
1542 * \param[in] ptOP the control block, NULL means using the default control block
1543 * \param[in] ptSource the source tile
1544 * \param[in] ptTarget the target tile
1545 * \param[in] ptRegion the target region, NULL means using the region of the
1546 * target tile.
1547 * \param[in] wMaskColour the key colour in any 32bit colour format
1548 * \param[in] wMode the copy mode
1549 * \return arm_fsm_rt_t the operation result
1550 *
1551 * \note alpha channel is not handled
1552 */
1553extern
1554ARM_NONNULL(2,3)
1557 const arm_2d_tile_t *ptSource,
1558 const arm_2d_tile_t *ptTarget,
1559 const arm_2d_region_t *ptRegion,
1560 uint32_t wMaskColour,
1561 uint32_t wMode);
1562
1563
1564/*----------------------------------------------------------------------------*
1565 * Copy tile to destination with colour-keying *
1566 *----------------------------------------------------------------------------*/
1567
1568/*!
1569 * \brief tile copy with colour-keying
1570 * \param[in] ptOP the control block, NULL means using the default control block
1571 * \param[in] ptSource the source tile
1572 * \param[in] ptTarget the target tile
1573 * \param[in] ptRegion the target region, NULL means using the region of the
1574 * target tile.
1575 * \param[in] chMaskColour the key colour in any 8bit colour format
1576 * \return arm_fsm_rt_t the operation result
1577 */
1578extern
1579ARM_NONNULL(2,3)
1582 const arm_2d_tile_t *ptSource,
1583 const arm_2d_tile_t *ptTarget,
1584 const arm_2d_region_t *ptRegion,
1585 uint8_t chMaskColour);
1586
1587/*!
1588 * \brief tile copy with colour-keying
1589 * \param[in] ptOP the control block, NULL means using the default control block
1590 * \param[in] ptSource the source tile
1591 * \param[in] ptTarget the target tile
1592 * \param[in] ptRegion the target region, NULL means using the region of the
1593 * target tile.
1594 * \param[in] hwMaskColour the key colour in any 16bit colour format
1595 * \return arm_fsm_rt_t the operation result
1596 *
1597 * \note alpha channel is not handled, i.e. rgba5551
1598 */
1599extern
1600ARM_NONNULL(2,3)
1603 const arm_2d_tile_t *ptSource,
1604 const arm_2d_tile_t *ptTarget,
1605 const arm_2d_region_t *ptRegion,
1606 uint16_t hwMaskColour);
1607
1608
1609/*!
1610 * \brief tile copy with colour-keying
1611 * \param[in] ptOP the control block, NULL means using the default control block
1612 * \param[in] ptSource the source tile
1613 * \param[in] ptTarget the target tile
1614 * \param[in] ptRegion the target region, NULL means using the region of the
1615 * target tile.
1616 * \param[in] wMaskColour the key colour in any 32bit colour format
1617 * \return arm_fsm_rt_t the operation result
1618 *
1619 * \note alpha channel is not handled
1620 */
1621extern
1622ARM_NONNULL(2,3)
1625 const arm_2d_tile_t *ptSource,
1626 const arm_2d_tile_t *ptTarget,
1627 const arm_2d_region_t *ptRegion,
1628 uint32_t wMaskColour);
1629
1630
1631/*----------------------------------------------------------------------------*
1632 * Copy tile to destination with colour-keying and x-mirroring *
1633 *----------------------------------------------------------------------------*/
1634
1635/*!
1636 * \brief tile copy with colour-keying and x-mirroring
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] chMaskColour the key colour in any 8bit colour format
1643 * \return arm_fsm_rt_t the operation result
1644 */
1645extern
1646ARM_NONNULL(2,3)
1649 const arm_2d_tile_t *ptSource,
1650 const arm_2d_tile_t *ptTarget,
1651 const arm_2d_region_t *ptRegion,
1652 uint8_t chMaskColour);
1653
1654/*!
1655 * \brief tile copy with colour-keying and x-mirroring
1656 * \param[in] ptOP the control block, NULL means using the default control block
1657 * \param[in] ptSource the source tile
1658 * \param[in] ptTarget the target tile
1659 * \param[in] ptRegion the target region, NULL means using the region of the
1660 * target tile.
1661 * \param[in] hwMaskColour the key colour in any 16bit colour format
1662 * \return arm_fsm_rt_t the operation result
1663 *
1664 * \note alpha channel is not handled, i.e. rgba5551
1665 */
1666extern
1667ARM_NONNULL(2,3)
1670 const arm_2d_tile_t *ptSource,
1671 const arm_2d_tile_t *ptTarget,
1672 const arm_2d_region_t *ptRegion,
1673 uint16_t hwMaskColour);
1674
1675
1676/*!
1677 * \brief tile copy with colour-keying and x-mirroring
1678 * \param[in] ptOP the control block, NULL means using the default control block
1679 * \param[in] ptSource the source tile
1680 * \param[in] ptTarget the target tile
1681 * \param[in] ptRegion the target region, NULL means using the region of the
1682 * target tile.
1683 * \param[in] wMaskColour the key colour in any 32bit colour format
1684 * \return arm_fsm_rt_t the operation result
1685 *
1686 * \note alpha channel is not handled
1687 */
1688extern
1689ARM_NONNULL(2,3)
1692 const arm_2d_tile_t *ptSource,
1693 const arm_2d_tile_t *ptTarget,
1694 const arm_2d_region_t *ptRegion,
1695 uint32_t wMaskColour);
1696
1697
1698/*----------------------------------------------------------------------------*
1699 * Copy tile to destination with colour-keying and y-mirroring *
1700 *----------------------------------------------------------------------------*/
1701
1702/*!
1703 * \brief tile copy with colour-keying and y-mirroring
1704 * \param[in] ptOP the control block, NULL means using the default control block
1705 * \param[in] ptSource the source tile
1706 * \param[in] ptTarget the target tile
1707 * \param[in] ptRegion the target region, NULL means using the region of the
1708 * target tile.
1709 * \param[in] chMaskColour the key colour in any 8bit colour format
1710 * \return arm_fsm_rt_t the operation result
1711 */
1712extern
1713ARM_NONNULL(2,3)
1716 const arm_2d_tile_t *ptSource,
1717 const arm_2d_tile_t *ptTarget,
1718 const arm_2d_region_t *ptRegion,
1719 uint8_t chMaskColour);
1720
1721/*!
1722 * \brief tile copy with colour-keying and y-mirroring
1723 * \param[in] ptOP the control block, NULL means using the default control block
1724 * \param[in] ptSource the source tile
1725 * \param[in] ptTarget the target tile
1726 * \param[in] ptRegion the target region, NULL means using the region of the
1727 * target tile.
1728 * \param[in] hwMaskColour the key colour in any 16bit colour format
1729 * \return arm_fsm_rt_t the operation result
1730 *
1731 * \note alpha channel is not handled, i.e. rgba5551
1732 */
1733extern
1734ARM_NONNULL(2,3)
1737 const arm_2d_tile_t *ptSource,
1738 const arm_2d_tile_t *ptTarget,
1739 const arm_2d_region_t *ptRegion,
1740 uint16_t hwMaskColour);
1741
1742
1743/*!
1744 * \brief tile copy with colour-keying and y-mirroring
1745 * \param[in] ptOP the control block, NULL means using the default control block
1746 * \param[in] ptSource the source tile
1747 * \param[in] ptTarget the target tile
1748 * \param[in] ptRegion the target region, NULL means using the region of the
1749 * target tile.
1750 * \param[in] wMaskColour the key colour in any 32bit colour format
1751 * \return arm_fsm_rt_t the operation result
1752 *
1753 * \note alpha channel is not handled
1754 */
1755extern
1756ARM_NONNULL(2,3)
1759 const arm_2d_tile_t *ptSource,
1760 const arm_2d_tile_t *ptTarget,
1761 const arm_2d_region_t *ptRegion,
1762 uint32_t wMaskColour);
1763
1764/*----------------------------------------------------------------------------*
1765 * Copy tile to destination with colour-keying and xy-mirroring *
1766 *----------------------------------------------------------------------------*/
1767
1768/*!
1769 * \brief tile copy with colour-keying and xy-mirroring
1770 * \param[in] ptOP the control block, NULL means using the default control block
1771 * \param[in] ptSource the source tile
1772 * \param[in] ptTarget the target tile
1773 * \param[in] ptRegion the target region, NULL means using the region of the
1774 * target tile.
1775 * \param[in] chMaskColour the key colour in any 8bit colour format
1776 * \return arm_fsm_rt_t the operation result
1777 */
1778extern
1779ARM_NONNULL(2,3)
1782 const arm_2d_tile_t *ptSource,
1783 const arm_2d_tile_t *ptTarget,
1784 const arm_2d_region_t *ptRegion,
1785 uint8_t chMaskColour);
1786
1787/*!
1788 * \brief tile copy with colour-keying and xy-mirroring
1789 * \param[in] ptOP the control block, NULL means using the default control block
1790 * \param[in] ptSource the source tile
1791 * \param[in] ptTarget the target tile
1792 * \param[in] ptRegion the target region, NULL means using the region of the
1793 * target tile.
1794 * \param[in] hwMaskColour the key colour in any 16bit colour format
1795 * \return arm_fsm_rt_t the operation result
1796 *
1797 * \note alpha channel is not handled, i.e. rgba5551
1798 */
1799extern
1800ARM_NONNULL(2,3)
1803 const arm_2d_tile_t *ptSource,
1804 const arm_2d_tile_t *ptTarget,
1805 const arm_2d_region_t *ptRegion,
1806 uint16_t hwMaskColour);
1807
1808
1809/*!
1810 * \brief tile copy with colour-keying and xy-mirroring
1811 * \param[in] ptOP the control block, NULL means using the default control block
1812 * \param[in] ptSource the source tile
1813 * \param[in] ptTarget the target tile
1814 * \param[in] ptRegion the target region, NULL means using the region of the
1815 * target tile.
1816 * \param[in] wMaskColour the key colour in any 32bit colour format
1817 * \return arm_fsm_rt_t the operation result
1818 *
1819 * \note alpha channel is not handled
1820 */
1821extern
1822ARM_NONNULL(2,3)
1825 const arm_2d_tile_t *ptSource,
1826 const arm_2d_tile_t *ptTarget,
1827 const arm_2d_region_t *ptRegion,
1828 uint32_t wMaskColour);
1829
1830
1831/*----------------------------------------------------------------------------*
1832 * Tile filling (tiling) to destination with colour-keying *
1833 *----------------------------------------------------------------------------*/
1834
1835/*!
1836 * \brief tile filling (tiling) with colour-keying
1837 * \param[in] ptOP the control block, NULL means using the default control block
1838 * \param[in] ptSource the source tile
1839 * \param[in] ptTarget the target tile
1840 * \param[in] ptRegion the target region, NULL means using the region of the
1841 * target tile.
1842 * \param[in] chMaskColour the key colour in any 8bit colour format
1843 * \return arm_fsm_rt_t the operation result
1844 */
1845extern
1846ARM_NONNULL(2,3)
1849 const arm_2d_tile_t *ptSource,
1850 const arm_2d_tile_t *ptTarget,
1851 const arm_2d_region_t *ptRegion,
1852 uint8_t chMaskColour);
1853
1854/*!
1855 * \brief tile filling (tiling) with colour-keying
1856 * \param[in] ptOP the control block, NULL means using the default control block
1857 * \param[in] ptSource the source tile
1858 * \param[in] ptTarget the target tile
1859 * \param[in] ptRegion the target region, NULL means using the region of the
1860 * target tile.
1861 * \param[in] hwMaskColour the key colour in any 16bit colour format
1862 * \return arm_fsm_rt_t the operation result
1863 *
1864 * \note alpha channel is not handled, i.e. rgba5551
1865 */
1866extern
1867ARM_NONNULL(2,3)
1870 const arm_2d_tile_t *ptSource,
1871 const arm_2d_tile_t *ptTarget,
1872 const arm_2d_region_t *ptRegion,
1873 uint16_t hwMaskColour);
1874
1875
1876/*!
1877 * \brief tile filling (tiling) with colour-keying
1878 * \param[in] ptOP the control block, NULL means using the default control block
1879 * \param[in] ptSource the source tile
1880 * \param[in] ptTarget the target tile
1881 * \param[in] ptRegion the target region, NULL means using the region of the
1882 * target tile.
1883 * \param[in] wMaskColour the key colour in any 32bit colour format
1884 * \return arm_fsm_rt_t the operation result
1885 *
1886 * \note alpha channel is not handled
1887 */
1888extern
1889ARM_NONNULL(2,3)
1892 const arm_2d_tile_t *ptSource,
1893 const arm_2d_tile_t *ptTarget,
1894 const arm_2d_region_t *ptRegion,
1895 uint32_t wMaskColour);
1896
1897
1898/*----------------------------------------------------------------------------*
1899 * Tile filling (tiling) to destination with colour-keying and x-mirroring *
1900 *----------------------------------------------------------------------------*/
1901
1902/*!
1903 * \brief tile filling (tiling) with colour-keying and x-mirroring
1904 * \param[in] ptOP the control block, NULL means using the default control block
1905 * \param[in] ptSource the source tile
1906 * \param[in] ptTarget the target tile
1907 * \param[in] ptRegion the target region, NULL means using the region of the
1908 * target tile.
1909 * \param[in] chMaskColour the key colour in any 8bit colour format
1910 * \return arm_fsm_rt_t the operation result
1911 */
1912extern
1913ARM_NONNULL(2,3)
1916 const arm_2d_tile_t *ptSource,
1917 const arm_2d_tile_t *ptTarget,
1918 const arm_2d_region_t *ptRegion,
1919 uint8_t chMaskColour);
1920
1921/*!
1922 * \brief tile filling (tiling) with colour-keying and x-mirroring
1923 * \param[in] ptOP the control block, NULL means using the default control block
1924 * \param[in] ptSource the source tile
1925 * \param[in] ptTarget the target tile
1926 * \param[in] ptRegion the target region, NULL means using the region of the
1927 * target tile.
1928 * \param[in] hwMaskColour the key colour in any 16bit colour format
1929 * \return arm_fsm_rt_t the operation result
1930 *
1931 * \note alpha channel is not handled, i.e. rgba5551
1932 */
1933extern
1934ARM_NONNULL(2,3)
1937 const arm_2d_tile_t *ptSource,
1938 const arm_2d_tile_t *ptTarget,
1939 const arm_2d_region_t *ptRegion,
1940 uint16_t hwMaskColour);
1941
1942
1943/*!
1944 * \brief tile filling (tiling) with colour-keying and x-mirroring
1945 * \param[in] ptOP the control block, NULL means using the default control block
1946 * \param[in] ptSource the source tile
1947 * \param[in] ptTarget the target tile
1948 * \param[in] ptRegion the target region, NULL means using the region of the
1949 * target tile.
1950 * \param[in] wMaskColour the key colour in any 32bit colour format
1951 * \return arm_fsm_rt_t the operation result
1952 *
1953 * \note alpha channel is not handled
1954 */
1955extern
1956ARM_NONNULL(2,3)
1959 const arm_2d_tile_t *ptSource,
1960 const arm_2d_tile_t *ptTarget,
1961 const arm_2d_region_t *ptRegion,
1962 uint32_t wMaskColour);
1963
1964
1965/*----------------------------------------------------------------------------*
1966 * Tile filling (tiling) to destination with colour-keying and y-mirroring *
1967 *----------------------------------------------------------------------------*/
1968
1969/*!
1970 * \brief tile filling (tiling) with colour-keying and y-mirroring
1971 * \param[in] ptOP the control block, NULL means using the default control block
1972 * \param[in] ptSource the source tile
1973 * \param[in] ptTarget the target tile
1974 * \param[in] ptRegion the target region, NULL means using the region of the
1975 * target tile.
1976 * \param[in] chMaskColour the key colour in any 8bit colour format
1977 * \return arm_fsm_rt_t the operation result
1978 */
1979extern
1980ARM_NONNULL(2,3)
1983 const arm_2d_tile_t *ptSource,
1984 const arm_2d_tile_t *ptTarget,
1985 const arm_2d_region_t *ptRegion,
1986 uint8_t chMaskColour);
1987
1988/*!
1989 * \brief tile filling (tiling) with colour-keying and y-mirroring
1990 * \param[in] ptOP the control block, NULL means using the default control block
1991 * \param[in] ptSource the source tile
1992 * \param[in] ptTarget the target tile
1993 * \param[in] ptRegion the target region, NULL means using the region of the
1994 * target tile.
1995 * \param[in] hwMaskColour the key colour in any 16bit colour format
1996 * \return arm_fsm_rt_t the operation result
1997 *
1998 * \note alpha channel is not handled, i.e. rgba5551
1999 */
2000extern
2001ARM_NONNULL(2,3)
2004 const arm_2d_tile_t *ptSource,
2005 const arm_2d_tile_t *ptTarget,
2006 const arm_2d_region_t *ptRegion,
2007 uint16_t hwMaskColour);
2008
2009
2010/*!
2011 * \brief tile filling (tiling) with colour-keying and y-mirroring
2012 * \param[in] ptOP the control block, NULL means using the default control block
2013 * \param[in] ptSource the source tile
2014 * \param[in] ptTarget the target tile
2015 * \param[in] ptRegion the target region, NULL means using the region of the
2016 * target tile.
2017 * \param[in] wMaskColour the key colour in any 32bit colour format
2018 * \return arm_fsm_rt_t the operation result
2019 *
2020 * \note alpha channel is not handled
2021 */
2022extern
2023ARM_NONNULL(2,3)
2026 const arm_2d_tile_t *ptSource,
2027 const arm_2d_tile_t *ptTarget,
2028 const arm_2d_region_t *ptRegion,
2029 uint32_t wMaskColour);
2030
2031/*----------------------------------------------------------------------------*
2032 * Tile filling (tiling) to destination with colour-keying and xy-mirroring *
2033 *----------------------------------------------------------------------------*/
2034
2035/*!
2036 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2037 * \param[in] ptOP the control block, NULL means using the default control block
2038 * \param[in] ptSource the source tile
2039 * \param[in] ptTarget the target tile
2040 * \param[in] ptRegion the target region, NULL means using the region of the
2041 * target tile.
2042 * \param[in] chMaskColour the key colour in any 8bit colour format
2043 * \return arm_fsm_rt_t the operation result
2044 */
2045extern
2046ARM_NONNULL(2,3)
2049 const arm_2d_tile_t *ptSource,
2050 const arm_2d_tile_t *ptTarget,
2051 const arm_2d_region_t *ptRegion,
2052 uint8_t chMaskColour);
2053
2054/*!
2055 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2056 * \param[in] ptOP the control block, NULL means using the default control block
2057 * \param[in] ptSource the source tile
2058 * \param[in] ptTarget the target tile
2059 * \param[in] ptRegion the target region, NULL means using the region of the
2060 * target tile.
2061 * \param[in] hwMaskColour the key colour in any 16bit colour format
2062 * \return arm_fsm_rt_t the operation result
2063 *
2064 * \note alpha channel is not handled, i.e. rgba5551
2065 */
2066extern
2067ARM_NONNULL(2,3)
2070 const arm_2d_tile_t *ptSource,
2071 const arm_2d_tile_t *ptTarget,
2072 const arm_2d_region_t *ptRegion,
2073 uint16_t hwMaskColour);
2074
2075
2076/*!
2077 * \brief tile filling (tiling) with colour-keying and xy-mirroring
2078 * \param[in] ptOP the control block, NULL means using the default control block
2079 * \param[in] ptSource the source tile
2080 * \param[in] ptTarget the target tile
2081 * \param[in] ptRegion the target region, NULL means using the region of the
2082 * target tile.
2083 * \param[in] wMaskColour the key colour in any 32bit colour format
2084 * \return arm_fsm_rt_t the operation result
2085 *
2086 * \note alpha channel is not handled
2087 */
2088extern
2089ARM_NONNULL(2,3)
2092 const arm_2d_tile_t *ptSource,
2093 const arm_2d_tile_t *ptTarget,
2094 const arm_2d_region_t *ptRegion,
2095 uint32_t wMaskColour);
2096
2097
2098
2099
2100
2101/*! @} */
2102
2103#ifdef __cplusplus
2104}
2105#endif
2106
2107#endif