Arm-2D  
2D Image Processing Library for Cortex-M Processors
 
Loading...
Searching...
No Matches
__arm_2d_fill_colour_with_alpha_gradient.h
1/*
2 * Copyright (C) 2024 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_fill_colour_with_alpha_gradient.c
22 * Description: The header file of APIs for colour-filling-with-alpha-gradient
23 *
24 * $Date: 16. Aug 2024
25 * $Revision: V.1.1.0
26 *
27 * Target Processor: Cortex-M cores
28 *
29 * -------------------------------------------------------------------- */
30
31#ifndef __ARM_2D_FILL_COLOUR_WITH_ALPHA_GRADIENT_H__
32#define __ARM_2D_FILL_COLOUR_WITH_ALPHA_GRADIENT_H__
33
34/*============================ INCLUDES ======================================*/
35#include "arm_2d_types.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41#if defined(__clang__)
42# pragma clang diagnostic push
43# pragma clang diagnostic ignored "-Wunknown-warning-option"
44# pragma clang diagnostic ignored "-Wreserved-identifier"
45# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
46# pragma clang diagnostic ignored "-Wsign-conversion"
47# pragma clang diagnostic ignored "-Wpadded"
48# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
49# pragma clang diagnostic ignored "-Wmissing-declarations"
50#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
51# pragma diag_suppress 174,177,188,68,513,144,64
52#endif
53
54/*!
55 * \addtogroup gAlpha 4 Alpha Blending Operations
56 * @{
57 */
58
59/*============================ MACROS ========================================*/
60/*============================ MACROFIED FUNCTIONS ===========================*/
61
62#define arm_2d_gray8_fill_colour_with_4pts_alpha_gradient( \
63 __TARGET_ADDR, /* target tile address*/ \
64 __REGION_ADDR, /* target region address*/\
65 __COLOUR, /* target colour */ \
66 ...) /* sample points */ \
67 arm_2dp_gray8_fill_colour_with_4pts_alpha_gradient( \
68 NULL, \
69 (__TARGET_ADDR), \
70 (__REGION_ADDR), \
71 (__COLOUR), \
72 __VA_ARGS__)
73
74#define arm_2d_gray8_fill_colour_with_4pts_alpha_gradient_and_opacity( \
75 __TARGET_ADDR, /* target tile address*/ \
76 __REGION_ADDR, /* target region address*/\
77 __COLOUR, /* target colour */ \
78 __OPACITY, /* opacity */ \
79 ...) /* sample points */ \
80 arm_2dp_gray8_fill_colour_with_4pts_alpha_gradient_and_opacity( \
81 NULL, \
82 (__TARGET_ADDR), \
83 (__REGION_ADDR), \
84 (__COLOUR), \
85 (__OPACITY), \
86 __VA_ARGS__)
87
88#define arm_2d_gray8_fill_colour_with_3pts_alpha_gradient( \
89 __TARGET_ADDR, /* target tile address*/ \
90 __REGION_ADDR, /* target region address*/\
91 __COLOUR, /* target colour */ \
92 ...) /* sample points */ \
93 arm_2dp_gray8_fill_colour_with_3pts_alpha_gradient( \
94 NULL, \
95 (__TARGET_ADDR), \
96 (__REGION_ADDR), \
97 (__COLOUR), \
98 __VA_ARGS__)
99
100#define arm_2d_gray8_fill_colour_with_3pts_alpha_gradient_and_opacity( \
101 __TARGET_ADDR, /* target tile address*/ \
102 __REGION_ADDR, /* target region address*/\
103 __COLOUR, /* target colour */ \
104 __OPACITY, /* opacity */ \
105 ...) /* sample points */ \
106 arm_2dp_gray8_fill_colour_with_3pts_alpha_gradient_and_opacity( \
107 NULL, \
108 (__TARGET_ADDR), \
109 (__REGION_ADDR), \
110 (__COLOUR), \
111 (__OPACITY), \
112 __VA_ARGS__)
113
114#define arm_2d_gray8_fill_colour_with_vertical_alpha_gradient( \
115 __TARGET_ADDR, /* target tile address*/ \
116 __REGION_ADDR, /* target region address*/\
117 __COLOUR, /* target colour */ \
118 ...) /* sample points */ \
119 arm_2dp_gray8_fill_colour_with_vertical_alpha_gradient( \
120 NULL, \
121 (__TARGET_ADDR), \
122 (__REGION_ADDR), \
123 (__COLOUR), \
124 __VA_ARGS__)
125
126#define arm_2d_gray8_fill_colour_with_vertical_alpha_gradient_and_opacity( \
127 __TARGET_ADDR, /* target tile address*/ \
128 __REGION_ADDR, /* target region address*/\
129 __COLOUR, /* target colour */ \
130 __OPACITY, /* opacity */ \
131 ...) /* sample points */ \
132 arm_2dp_gray8_fill_colour_with_vertical_alpha_gradient_and_opacity( \
133 NULL, \
134 (__TARGET_ADDR), \
135 (__REGION_ADDR), \
136 (__COLOUR), \
137 (__OPACITY), \
138 __VA_ARGS__)
139
140#define arm_2d_gray8_fill_colour_with_horizontal_alpha_gradient( \
141 __TARGET_ADDR, /* target tile address*/ \
142 __REGION_ADDR, /* target region address*/\
143 __COLOUR, /* target colour */ \
144 ...) /* sample points */ \
145 arm_2dp_gray8_fill_colour_with_horizontal_alpha_gradient( \
146 NULL, \
147 (__TARGET_ADDR), \
148 (__REGION_ADDR), \
149 (__COLOUR), \
150 __VA_ARGS__)
151
152#define arm_2d_gray8_fill_colour_with_horizontal_alpha_gradient_and_opacity( \
153 __TARGET_ADDR, /* target tile address*/ \
154 __REGION_ADDR, /* target region address*/\
155 __COLOUR, /* target colour */ \
156 __OPACITY, /* opacity */ \
157 ...) /* sample points */ \
158 arm_2dp_gray8_fill_colour_with_horizontal_alpha_gradient_and_opacity( \
159 NULL, \
160 (__TARGET_ADDR), \
161 (__REGION_ADDR), \
162 (__COLOUR), \
163 (__OPACITY), \
164 __VA_ARGS__)
165
166#define arm_2d_rgb565_fill_colour_with_4pts_alpha_gradient( \
167 __TARGET_ADDR, /* target tile address*/ \
168 __REGION_ADDR, /* target region address*/\
169 __COLOUR, /* target colour */ \
170 ...) /* sample points */ \
171 arm_2dp_rgb565_fill_colour_with_4pts_alpha_gradient( \
172 NULL, \
173 (__TARGET_ADDR), \
174 (__REGION_ADDR), \
175 (__COLOUR), \
176 __VA_ARGS__)
177
178#define arm_2d_rgb565_fill_colour_with_4pts_alpha_gradient_and_opacity( \
179 __TARGET_ADDR, /* target tile address*/ \
180 __REGION_ADDR, /* target region address*/\
181 __COLOUR, /* target colour */ \
182 __OPACITY, /* opacity */ \
183 ...) /* sample points */ \
184 arm_2dp_rgb565_fill_colour_with_4pts_alpha_gradient_and_opacity( \
185 NULL, \
186 (__TARGET_ADDR), \
187 (__REGION_ADDR), \
188 (__COLOUR), \
189 (__OPACITY), \
190 __VA_ARGS__)
191
192#define arm_2d_rgb565_fill_colour_with_3pts_alpha_gradient( \
193 __TARGET_ADDR, /* target tile address*/ \
194 __REGION_ADDR, /* target region address*/\
195 __COLOUR, /* target colour */ \
196 ...) /* sample points */ \
197 arm_2dp_rgb565_fill_colour_with_3pts_alpha_gradient( \
198 NULL, \
199 (__TARGET_ADDR), \
200 (__REGION_ADDR), \
201 (__COLOUR), \
202 __VA_ARGS__)
203
204#define arm_2d_rgb565_fill_colour_with_3pts_alpha_gradient_and_opacity( \
205 __TARGET_ADDR, /* target tile address*/ \
206 __REGION_ADDR, /* target region address*/\
207 __COLOUR, /* target colour */ \
208 __OPACITY, /* opacity */ \
209 ...) /* sample points */ \
210 arm_2dp_rgb565_fill_colour_with_3pts_alpha_gradient_and_opacity( \
211 NULL, \
212 (__TARGET_ADDR), \
213 (__REGION_ADDR), \
214 (__COLOUR), \
215 (__OPACITY), \
216 __VA_ARGS__)
217
218#define arm_2d_rgb565_fill_colour_with_vertical_alpha_gradient( \
219 __TARGET_ADDR, /* target tile address*/ \
220 __REGION_ADDR, /* target region address*/\
221 __COLOUR, /* target colour */ \
222 ...) /* sample points */ \
223 arm_2dp_rgb565_fill_colour_with_vertical_alpha_gradient( \
224 NULL, \
225 (__TARGET_ADDR), \
226 (__REGION_ADDR), \
227 (__COLOUR), \
228 __VA_ARGS__)
229
230#define arm_2d_rgb565_fill_colour_with_vertical_alpha_gradient_and_opacity( \
231 __TARGET_ADDR, /* target tile address*/ \
232 __REGION_ADDR, /* target region address*/\
233 __COLOUR, /* target colour */ \
234 __OPACITY, /* opacity */ \
235 ...) /* sample points */ \
236 arm_2dp_rgb565_fill_colour_with_vertical_alpha_gradient_and_opacity( \
237 NULL, \
238 (__TARGET_ADDR), \
239 (__REGION_ADDR), \
240 (__COLOUR), \
241 (__OPACITY), \
242 __VA_ARGS__)
243
244#define arm_2d_rgb565_fill_colour_with_horizontal_alpha_gradient( \
245 __TARGET_ADDR, /* target tile address*/ \
246 __REGION_ADDR, /* target region address*/\
247 __COLOUR, /* target colour */ \
248 ...) /* sample points */ \
249 arm_2dp_rgb565_fill_colour_with_horizontal_alpha_gradient( \
250 NULL, \
251 (__TARGET_ADDR), \
252 (__REGION_ADDR), \
253 (__COLOUR), \
254 __VA_ARGS__)
255
256#define arm_2d_rgb565_fill_colour_with_horizontal_alpha_gradient_and_opacity( \
257 __TARGET_ADDR, /* target tile address*/ \
258 __REGION_ADDR, /* target region address*/\
259 __COLOUR, /* target colour */ \
260 __OPACITY, /* opacity */ \
261 ...) /* sample points */ \
262 arm_2dp_rgb565_fill_colour_with_horizontal_alpha_gradient_and_opacity( \
263 NULL, \
264 (__TARGET_ADDR), \
265 (__REGION_ADDR), \
266 (__COLOUR), \
267 (__OPACITY), \
268 __VA_ARGS__)
269
270#define arm_2d_cccn888_fill_colour_with_4pts_alpha_gradient( \
271 __TARGET_ADDR, /* target tile address*/ \
272 __REGION_ADDR, /* target region address*/\
273 __COLOUR, /* target colour */ \
274 ...) /* sample points */ \
275 arm_2dp_cccn888_fill_colour_with_4pts_alpha_gradient( \
276 NULL, \
277 (__TARGET_ADDR), \
278 (__REGION_ADDR), \
279 (__COLOUR), \
280 __VA_ARGS__)
281
282#define arm_2d_cccn888_fill_colour_with_4pts_alpha_gradient_and_opacity( \
283 __TARGET_ADDR, /* target tile address*/ \
284 __REGION_ADDR, /* target region address*/\
285 __COLOUR, /* target colour */ \
286 __OPACITY, /* opacity */ \
287 ...) /* sample points */ \
288 arm_2dp_cccn888_fill_colour_with_4pts_alpha_gradient_and_opacity( \
289 NULL, \
290 (__TARGET_ADDR), \
291 (__REGION_ADDR), \
292 (__COLOUR), \
293 (__OPACITY), \
294 __VA_ARGS__)
295
296#define arm_2d_cccn888_fill_colour_with_3pts_alpha_gradient( \
297 __TARGET_ADDR, /* target tile address*/ \
298 __REGION_ADDR, /* target region address*/\
299 __COLOUR, /* target colour */ \
300 ...) /* sample points */ \
301 arm_2dp_cccn888_fill_colour_with_3pts_alpha_gradient( \
302 NULL, \
303 (__TARGET_ADDR), \
304 (__REGION_ADDR), \
305 (__COLOUR), \
306 __VA_ARGS__)
307
308#define arm_2d_cccn888_fill_colour_with_3pts_alpha_gradient_and_opacity( \
309 __TARGET_ADDR, /* target tile address*/ \
310 __REGION_ADDR, /* target region address*/\
311 __COLOUR, /* target colour */ \
312 __OPACITY, /* opacity */ \
313 ...) /* sample points */ \
314 arm_2dp_cccn888_fill_colour_with_3pts_alpha_gradient_and_opacity( \
315 NULL, \
316 (__TARGET_ADDR), \
317 (__REGION_ADDR), \
318 (__COLOUR), \
319 (__OPACITY), \
320 __VA_ARGS__)
321
322#define arm_2d_cccn888_fill_colour_with_vertical_alpha_gradient( \
323 __TARGET_ADDR, /* target tile address*/ \
324 __REGION_ADDR, /* target region address*/\
325 __COLOUR, /* target colour */ \
326 ...) /* sample points */ \
327 arm_2dp_cccn888_fill_colour_with_vertical_alpha_gradient( \
328 NULL, \
329 (__TARGET_ADDR), \
330 (__REGION_ADDR), \
331 (__COLOUR), \
332 __VA_ARGS__)
333
334#define arm_2d_cccn888_fill_colour_with_vertical_alpha_gradient_and_opacity( \
335 __TARGET_ADDR, /* target tile address*/ \
336 __REGION_ADDR, /* target region address*/\
337 __COLOUR, /* target colour */ \
338 __OPACITY, /* opacity */ \
339 ...) /* sample points */ \
340 arm_2dp_cccn888_fill_colour_with_vertical_alpha_gradient_and_opacity( \
341 NULL, \
342 (__TARGET_ADDR), \
343 (__REGION_ADDR), \
344 (__COLOUR), \
345 (__OPACITY), \
346 __VA_ARGS__)
347
348#define arm_2d_cccn888_fill_colour_with_horizontal_alpha_gradient( \
349 __TARGET_ADDR, /* target tile address*/ \
350 __REGION_ADDR, /* target region address*/\
351 __COLOUR, /* target colour */ \
352 ...) /* sample points */ \
353 arm_2dp_cccn888_fill_colour_with_horizontal_alpha_gradient( \
354 NULL, \
355 (__TARGET_ADDR), \
356 (__REGION_ADDR), \
357 (__COLOUR), \
358 __VA_ARGS__)
359
360#define arm_2d_cccn888_fill_colour_with_horizontal_alpha_gradient_and_opacity( \
361 __TARGET_ADDR, /* target tile address*/ \
362 __REGION_ADDR, /* target region address*/\
363 __COLOUR, /* target colour */ \
364 __OPACITY, /* opacity */ \
365 ...) /* sample points */ \
366 arm_2dp_cccn888_fill_colour_with_horizontal_alpha_gradient_and_opacity( \
367 NULL, \
368 (__TARGET_ADDR), \
369 (__REGION_ADDR), \
370 (__COLOUR), \
371 (__OPACITY), \
372 __VA_ARGS__)
373
374/*============================ TYPES =========================================*/
375
377
379ARM_PRIVATE(
380 implement(arm_2d_op_t); /* inherit from base class arm_2d_op_cp_t*/
381
382 union {
383 uint8_t chColour; //!< 8bit colour
384 uint16_t hwColour; //!< 16bit colour
385 uint32_t wColour; //!< 32bit colour
386 };
387
388 arm_2d_alpha_samples_4pts_t tSamplePoints;
390};
391
393
395ARM_PRIVATE(
396 implement(arm_2d_op_t); /* inherit from base class arm_2d_op_cp_t*/
397
398 union {
399 uint8_t chColour; //!< 8bit colour
400 uint16_t hwColour; //!< 16bit colour
401 uint32_t wColour; //!< 32bit colour
402 };
403
404 arm_2d_alpha_samples_3pts_t tSamplePoints;
406};
407
409
411ARM_PRIVATE(
412 implement(arm_2d_op_t); /* inherit from base class arm_2d_op_cp_t*/
413
414 union {
415 uint8_t chColour; //!< 8bit colour
416 uint16_t hwColour; //!< 16bit colour
417 uint32_t wColour; //!< 32bit colour
418 };
419
420 arm_2d_alpha_samples_2pts_t tSamplePoints;
422};
423
424/*============================ GLOBAL VARIABLES ==============================*/
425/*============================ PROTOTYPES ====================================*/
426
427/*!
428 * \brief fill the target region with a given colour and an alpha gradient that
429 * is defined by 4 corner sample points.
430 * \param[in] ptOP the control block, NULL means using the default control block
431 * \param[in] ptTarget the target tile
432 * \param[in] ptRegion the target region
433 * \param[in] tColour the target colour
434 * \param[in] tSamplePoints the 4 corner sample points.
435 * \return arm_fsm_rt_t the operations result
436 */
437extern
438ARM_NONNULL(2)
441 const arm_2d_tile_t *ptTarget,
442 const arm_2d_region_t *ptRegion,
443 arm_2d_color_gray8_t tColour,
444 arm_2d_alpha_samples_4pts_t tSamplePoints);
445
446/*!
447 * \brief fill the target region with a given colour, an alpha gradient (that
448 * is defined by 4 corner sample points) and an opacity
449 * \param[in] ptOP the control block, NULL means using the default control block
450 * \param[in] ptTarget the target tile
451 * \param[in] ptRegion the target region
452 * \param[in] tColour the target colour
453 * \param[in] chOpacity the opacity ratio
454 * \param[in] tSamplePoints the 4 corner sample points.
455 * \return arm_fsm_rt_t the operations result
456 */
457extern
458ARM_NONNULL(2)
461 const arm_2d_tile_t *ptTarget,
462 const arm_2d_region_t *ptRegion,
463 arm_2d_color_gray8_t tColour,
464 uint8_t chOpacity,
465 arm_2d_alpha_samples_4pts_t tSamplePoints);
466
467/*!
468 * \brief fill the target region with a given colour and an alpha gradient that
469 * is defined by 3 corner sample points.
470 * \param[in] ptOP the control block, NULL means using the default control block
471 * \param[in] ptTarget the target tile
472 * \param[in] ptRegion the target region
473 * \param[in] tColour the target colour
474 * \param[in] tSamplePoints the 3 corner sample points.
475 * \return arm_fsm_rt_t the operations result
476 */
477extern
478ARM_NONNULL(2)
481 const arm_2d_tile_t *ptTarget,
482 const arm_2d_region_t *ptRegion,
483 arm_2d_color_gray8_t tColour,
484 arm_2d_alpha_samples_3pts_t tSamplePoints);
485
486/*!
487 * \brief fill the target region with a given colour, an alpha gradient (that
488 * is defined by 3 corner sample points) and an opacity
489 * \param[in] ptOP the control block, NULL means using the default control block
490 * \param[in] ptTarget the target tile
491 * \param[in] ptRegion the target region
492 * \param[in] tColour the target colour
493 * \param[in] chOpacity the opacity ratio
494 * \param[in] tSamplePoints the 3 corner sample points.
495 * \return arm_fsm_rt_t the operations result
496 */
497extern
498ARM_NONNULL(2)
501 const arm_2d_tile_t *ptTarget,
502 const arm_2d_region_t *ptRegion,
503 arm_2d_color_gray8_t tColour,
504 uint8_t chOpacity,
505 arm_2d_alpha_samples_3pts_t tSamplePoints);
506
507
508/*!
509 * \brief fill the target region with a given colour and a vertical alpha gradient
510 * (that is defined by 2 corner sample points).
511 * \param[in] ptOP the control block, NULL means using the default control block
512 * \param[in] ptTarget the target tile
513 * \param[in] ptRegion the target region
514 * \param[in] tColour the target colour
515 * \param[in] tSamplePoints the 2 corner sample points.
516 * \return arm_fsm_rt_t the operations result
517 */
518extern
519ARM_NONNULL(2)
522 const arm_2d_tile_t *ptTarget,
523 const arm_2d_region_t *ptRegion,
524 arm_2d_color_gray8_t tColour,
525 arm_2d_alpha_samples_2pts_t tSamplePoints);
526
527/*!
528 * \brief fill the target region with a given colour, a vertical alpha gradient
529 * (that is defined by 2 corner sample points) and an opacity
530 * \param[in] ptOP the control block, NULL means using the default control block
531 * \param[in] ptTarget the target tile
532 * \param[in] ptRegion the target region
533 * \param[in] tColour the target colour
534 * \param[in] chOpacity the opacity ratio
535 * \param[in] tSamplePoints the 2 corner sample points.
536 * \return arm_fsm_rt_t the operations result
537 */
538extern
539ARM_NONNULL(2)
542 const arm_2d_tile_t *ptTarget,
543 const arm_2d_region_t *ptRegion,
544 arm_2d_color_gray8_t tColour,
545 uint8_t chOpacity,
546 arm_2d_alpha_samples_2pts_t tSamplePoints);
547
548/*!
549 * \brief fill the target region with a given colour and a horizontal alpha
550 * gradient (that is defined by 2 corner sample points).
551 * \param[in] ptOP the control block, NULL means using the default control block
552 * \param[in] ptTarget the target tile
553 * \param[in] ptRegion the target region
554 * \param[in] tColour the target colour
555 * \param[in] tSamplePoints the 2 corner sample points.
556 * \return arm_fsm_rt_t the operations result
557 */
558extern
559ARM_NONNULL(2)
562 const arm_2d_tile_t *ptTarget,
563 const arm_2d_region_t *ptRegion,
564 arm_2d_color_gray8_t tColour,
565 arm_2d_alpha_samples_2pts_t tSamplePoints);
566
567/*!
568 * \brief fill the target region with a given colour, a horizontal alpha
569 * gradient (that is defined by 2 corner sample points) and an opacity
570 * \param[in] ptOP the control block, NULL means using the default control block
571 * \param[in] ptTarget the target tile
572 * \param[in] ptRegion the target region
573 * \param[in] tColour the target colour
574 * \param[in] chOpacity the opacity ratio
575 * \param[in] tSamplePoints the 2 corner sample points.
576 * \return arm_fsm_rt_t the operations result
577 */
578extern
579ARM_NONNULL(2)
582 const arm_2d_tile_t *ptTarget,
583 const arm_2d_region_t *ptRegion,
584 arm_2d_color_gray8_t tColour,
585 uint8_t chOpacity,
586 arm_2d_alpha_samples_2pts_t tSamplePoints);
587
588/*!
589 * \brief fill the target region with a given colour and an alpha gradient that
590 * is defined by 4 corner sample points.
591 * \param[in] ptOP the control block, NULL means using the default control block
592 * \param[in] ptTarget the target tile
593 * \param[in] ptRegion the target region
594 * \param[in] tColour the target colour
595 * \param[in] tSamplePoints the 4 corner sample points.
596 * \return arm_fsm_rt_t the operations result
597 */
598extern
599ARM_NONNULL(2)
602 const arm_2d_tile_t *ptTarget,
603 const arm_2d_region_t *ptRegion,
604 arm_2d_color_rgb565_t tColour,
605 arm_2d_alpha_samples_4pts_t tSamplePoints);
606
607/*!
608 * \brief fill the target region with a given colour, an alpha gradient (that
609 * is defined by 4 corner sample points) and an opacity
610 * \param[in] ptOP the control block, NULL means using the default control block
611 * \param[in] ptTarget the target tile
612 * \param[in] ptRegion the target region
613 * \param[in] tColour the target colour
614 * \param[in] chOpacity the opacity ratio
615 * \param[in] tSamplePoints the 4 corner sample points.
616 * \return arm_fsm_rt_t the operations result
617 */
618extern
619ARM_NONNULL(2)
622 const arm_2d_tile_t *ptTarget,
623 const arm_2d_region_t *ptRegion,
624 arm_2d_color_rgb565_t tColour,
625 uint8_t chOpacity,
626 arm_2d_alpha_samples_4pts_t tSamplePoints);
627
628/*!
629 * \brief fill the target region with a given colour and an alpha gradient that
630 * is defined by 3 corner sample points.
631 * \param[in] ptOP the control block, NULL means using the default control block
632 * \param[in] ptTarget the target tile
633 * \param[in] ptRegion the target region
634 * \param[in] tColour the target colour
635 * \param[in] tSamplePoints the 3 corner sample points.
636 * \return arm_fsm_rt_t the operations result
637 */
638extern
639ARM_NONNULL(2)
642 const arm_2d_tile_t *ptTarget,
643 const arm_2d_region_t *ptRegion,
644 arm_2d_color_rgb565_t tColour,
645 arm_2d_alpha_samples_3pts_t tSamplePoints);
646
647/*!
648 * \brief fill the target region with a given colour, an alpha gradient (that
649 * is defined by 3 corner sample points) and an opacity
650 * \param[in] ptOP the control block, NULL means using the default control block
651 * \param[in] ptTarget the target tile
652 * \param[in] ptRegion the target region
653 * \param[in] tColour the target colour
654 * \param[in] chOpacity the opacity ratio
655 * \param[in] tSamplePoints the 3 corner sample points.
656 * \return arm_fsm_rt_t the operations result
657 */
658extern
659ARM_NONNULL(2)
662 const arm_2d_tile_t *ptTarget,
663 const arm_2d_region_t *ptRegion,
664 arm_2d_color_rgb565_t tColour,
665 uint8_t chOpacity,
666 arm_2d_alpha_samples_3pts_t tSamplePoints);
667
668
669/*!
670 * \brief fill the target region with a given colour and a vertical alpha gradient
671 * (that is defined by 2 corner sample points).
672 * \param[in] ptOP the control block, NULL means using the default control block
673 * \param[in] ptTarget the target tile
674 * \param[in] ptRegion the target region
675 * \param[in] tColour the target colour
676 * \param[in] tSamplePoints the 2 corner sample points.
677 * \return arm_fsm_rt_t the operations result
678 */
679extern
680ARM_NONNULL(2)
683 const arm_2d_tile_t *ptTarget,
684 const arm_2d_region_t *ptRegion,
685 arm_2d_color_rgb565_t tColour,
686 arm_2d_alpha_samples_2pts_t tSamplePoints);
687
688/*!
689 * \brief fill the target region with a given colour, a vertical alpha gradient
690 * (that is defined by 2 corner sample points) and an opacity
691 * \param[in] ptOP the control block, NULL means using the default control block
692 * \param[in] ptTarget the target tile
693 * \param[in] ptRegion the target region
694 * \param[in] tColour the target colour
695 * \param[in] chOpacity the opacity ratio
696 * \param[in] tSamplePoints the 2 corner sample points.
697 * \return arm_fsm_rt_t the operations result
698 */
699extern
700ARM_NONNULL(2)
703 const arm_2d_tile_t *ptTarget,
704 const arm_2d_region_t *ptRegion,
705 arm_2d_color_rgb565_t tColour,
706 uint8_t chOpacity,
707 arm_2d_alpha_samples_2pts_t tSamplePoints);
708
709/*!
710 * \brief fill the target region with a given colour and a horizontal alpha
711 * gradient (that is defined by 2 corner sample points).
712 * \param[in] ptOP the control block, NULL means using the default control block
713 * \param[in] ptTarget the target tile
714 * \param[in] ptRegion the target region
715 * \param[in] tColour the target colour
716 * \param[in] tSamplePoints the 2 corner sample points.
717 * \return arm_fsm_rt_t the operations result
718 */
719extern
720ARM_NONNULL(2)
723 const arm_2d_tile_t *ptTarget,
724 const arm_2d_region_t *ptRegion,
725 arm_2d_color_rgb565_t tColour,
726 arm_2d_alpha_samples_2pts_t tSamplePoints);
727
728/*!
729 * \brief fill the target region with a given colour, a horizontal alpha
730 * gradient (that is defined by 2 corner sample points) and an opacity
731 * \param[in] ptOP the control block, NULL means using the default control block
732 * \param[in] ptTarget the target tile
733 * \param[in] ptRegion the target region
734 * \param[in] tColour the target colour
735 * \param[in] chOpacity the opacity ratio
736 * \param[in] tSamplePoints the 2 corner sample points.
737 * \return arm_fsm_rt_t the operations result
738 */
739extern
740ARM_NONNULL(2)
743 const arm_2d_tile_t *ptTarget,
744 const arm_2d_region_t *ptRegion,
745 arm_2d_color_rgb565_t tColour,
746 uint8_t chOpacity,
747 arm_2d_alpha_samples_2pts_t tSamplePoints);
748
749/*!
750 * \brief fill the target region with a given colour and an alpha gradient that
751 * is defined by 4 corner sample points.
752 * \param[in] ptOP the control block, NULL means using the default control block
753 * \param[in] ptTarget the target tile
754 * \param[in] ptRegion the target region
755 * \param[in] tColour the target colour
756 * \param[in] tSamplePoints the 4 corner sample points.
757 * \return arm_fsm_rt_t the operations result
758 */
759extern
760ARM_NONNULL(2)
763 const arm_2d_tile_t *ptTarget,
764 const arm_2d_region_t *ptRegion,
766 arm_2d_alpha_samples_4pts_t tSamplePoints);
767
768/*!
769 * \brief fill the target region with a given colour, an alpha gradient (that
770 * is defined by 4 corner sample points) and an opacity
771 * \param[in] ptOP the control block, NULL means using the default control block
772 * \param[in] ptTarget the target tile
773 * \param[in] ptRegion the target region
774 * \param[in] tColour the target colour
775 * \param[in] chOpacity the opacity ratio
776 * \param[in] tSamplePoints the 4 corner sample points.
777 * \return arm_fsm_rt_t the operations result
778 */
779extern
780ARM_NONNULL(2)
783 const arm_2d_tile_t *ptTarget,
784 const arm_2d_region_t *ptRegion,
786 uint8_t chOpacity,
787 arm_2d_alpha_samples_4pts_t tSamplePoints);
788
789/*!
790 * \brief fill the target region with a given colour and an alpha gradient that
791 * is defined by 3 corner sample points.
792 * \param[in] ptOP the control block, NULL means using the default control block
793 * \param[in] ptTarget the target tile
794 * \param[in] ptRegion the target region
795 * \param[in] tColour the target colour
796 * \param[in] tSamplePoints the 3 corner sample points.
797 * \return arm_fsm_rt_t the operations result
798 */
799extern
800ARM_NONNULL(2)
803 const arm_2d_tile_t *ptTarget,
804 const arm_2d_region_t *ptRegion,
806 arm_2d_alpha_samples_3pts_t tSamplePoints);
807
808/*!
809 * \brief fill the target region with a given colour, an alpha gradient (that
810 * is defined by 3 corner sample points) and an opacity
811 * \param[in] ptOP the control block, NULL means using the default control block
812 * \param[in] ptTarget the target tile
813 * \param[in] ptRegion the target region
814 * \param[in] tColour the target colour
815 * \param[in] chOpacity the opacity ratio
816 * \param[in] tSamplePoints the 3 corner sample points.
817 * \return arm_fsm_rt_t the operations result
818 */
819extern
820ARM_NONNULL(2)
823 const arm_2d_tile_t *ptTarget,
824 const arm_2d_region_t *ptRegion,
826 uint8_t chOpacity,
827 arm_2d_alpha_samples_3pts_t tSamplePoints);
828
829
830/*!
831 * \brief fill the target region with a given colour and a vertical alpha gradient
832 * (that is defined by 2 corner sample points).
833 * \param[in] ptOP the control block, NULL means using the default control block
834 * \param[in] ptTarget the target tile
835 * \param[in] ptRegion the target region
836 * \param[in] tColour the target colour
837 * \param[in] tSamplePoints the 2 corner sample points.
838 * \return arm_fsm_rt_t the operations result
839 */
840extern
841ARM_NONNULL(2)
844 const arm_2d_tile_t *ptTarget,
845 const arm_2d_region_t *ptRegion,
847 arm_2d_alpha_samples_2pts_t tSamplePoints);
848
849/*!
850 * \brief fill the target region with a given colour, a vertical alpha gradient
851 * (that is defined by 2 corner sample points) and an opacity
852 * \param[in] ptOP the control block, NULL means using the default control block
853 * \param[in] ptTarget the target tile
854 * \param[in] ptRegion the target region
855 * \param[in] tColour the target colour
856 * \param[in] chOpacity the opacity ratio
857 * \param[in] tSamplePoints the 2 corner sample points.
858 * \return arm_fsm_rt_t the operations result
859 */
860extern
861ARM_NONNULL(2)
864 const arm_2d_tile_t *ptTarget,
865 const arm_2d_region_t *ptRegion,
867 uint8_t chOpacity,
868 arm_2d_alpha_samples_2pts_t tSamplePoints);
869
870/*!
871 * \brief fill the target region with a given colour and a horizontal alpha
872 * gradient (that is defined by 2 corner sample points).
873 * \param[in] ptOP the control block, NULL means using the default control block
874 * \param[in] ptTarget the target tile
875 * \param[in] ptRegion the target region
876 * \param[in] tColour the target colour
877 * \param[in] tSamplePoints the 2 corner sample points.
878 * \return arm_fsm_rt_t the operations result
879 */
880extern
881ARM_NONNULL(2)
884 const arm_2d_tile_t *ptTarget,
885 const arm_2d_region_t *ptRegion,
887 arm_2d_alpha_samples_2pts_t tSamplePoints);
888
889/*!
890 * \brief fill the target region with a given colour, a horizontal alpha
891 * gradient (that is defined by 2 corner sample points) and an opacity
892 * \param[in] ptOP the control block, NULL means using the default control block
893 * \param[in] ptTarget the target tile
894 * \param[in] ptRegion the target region
895 * \param[in] tColour the target colour
896 * \param[in] chOpacity the opacity ratio
897 * \param[in] tSamplePoints the 2 corner sample points.
898 * \return arm_fsm_rt_t the operations result
899 */
900extern
901ARM_NONNULL(2)
904 const arm_2d_tile_t *ptTarget,
905 const arm_2d_region_t *ptRegion,
907 uint8_t chOpacity,
908 arm_2d_alpha_samples_2pts_t tSamplePoints);
909
910/*! @} */
911
912#if defined(__clang__)
913# pragma clang diagnostic pop
914#endif
915
916#ifdef __cplusplus
917}
918#endif
919
920
921#endif /* __ARM_2D_FILL_COLOUR_WITH_ALPHA_GRADIENT_H__ */