summaryrefslogtreecommitdiff
path: root/bsp/nuvoton/libraries/n9h30/Driver/Include/nu_2d.h
blob: 8844f5040b8f0fcc6747fd91637c7f5bbd256f74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/**************************************************************************//**
* @file     2d.h
* @brief    N9H30 2DGE driver header file
*
* @note
* SPDX-License-Identifier: Apache-2.0
* Copyright (C) 2018 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/

#ifndef __NU_2D_H__
#define __NU_2D_H__

#ifdef __cplusplus
extern "C"
{
#endif

/** @addtogroup N9H30_Device_Driver N9H30 Device Driver
  @{
*/

/** @addtogroup N9H30_GE2D_Driver GE2D Driver
  @{
*/

/** @addtogroup N9H30_GE2D_EXPORTED_CONSTANTS GE2D Exported Constants
  @{
*/

/// @cond HIDDEN_SYMBOLS
typedef struct
{
    uint32_t    PatternA;
    uint32_t    PatternB;
} MONOPATTERN;

#define COLOR_KEY 0xFF000000
/// @endcond HIDDEN_SYMBOLS

///////////////////////////////////////////////////////////////////////////////
// Definition of ROP2
///////////////////////////////////////////////////////////////////////////////
#define    BLACKNESS       0x00  /*!< rop code: 0 */
#define    DSTINVERT       0x55  /*!< rop code: Dn  */
#define    MERGECOPY       0xC0  /*!< rop code: PSa  */
#define    MERGEPAINT      0xBB  /*!< rop code: DSno  */
#define    NOTSRCCOPY      0x33  /*!< rop code: Sn  */
#define    NOTSRCERASE     0x11  /*!< rop code: DSon  */
#define    PATCOPY         0xF0  /*!< rop code: P  */
#define    PATINVERT       0x5A  /*!< rop code: DPx  */
#define    PATPAINT        0xFB  /*!< rop code: DPSnoo  */
#define    SRCAND          0x88  /*!< rop code: DSa  */
#define    SRCCOPY         0xCC  /*!< rop code: S  */
#define    SRCERASE        0x44  /*!< rop code: SDna  */
#define    SRCINVERT       0x66  /*!< rop code: DSx  */
#define    SRCPAINT        0xEE  /*!< rop code: DSo  */
#define    WHITENESS       0xFF  /*!< rop code: 1  */

///////////////////////////////////////////////////////////////////////////////
// Definition of Pen Styles
///////////////////////////////////////////////////////////////////////////////
#define PS_SOLID        0xffff     /*!< pan style: solid */ //1111111111111111 (1111111111111111)
#define PS_DASH         0xcccc     /*!< pan style: dash */ //1100110011001100 (1111000011110000)
#define PS_DOT          0xaaaa     /*!< pan style: dot */ //1010101010101010 (1100110011001100)
#define PS_DASHDOT      0xe4e4     /*!< pan style: dash and dot */ //1110010011100100 (1111110000110000)
#define PS_DASHDOTDOT   0xeaea     /*!< pan style: dash and two dots  */ //1110101011101010 (1111110011001100)
#define PS_NULL         0x0000     /*!< pan style: null */ //0000000000000000 (0000000000000000)

///////////////////////////////////////////////////////////////////////////////
// Definition of Brush Styles
//
// HS_HORIZONTAL:   00000000     HS_BDIAGONAL:  00000001
//                  00000000                    00000010
//                  00000000                    00000100
//                  00000000                    00001000
//                  11111111                    00010000
//                  00000000                    00100000
//                  00000000                    01000000
//                  00000000                    10000000
//
// HS_VERTICAL:     00001000     HS_CROSS:      00001000
//                  00001000                    00001000
//                  00001000                    00001000
//                  00001000                    00001000
//                  00001000                    11111111
//                  00001000                    00001000
//                  00001000                    00001000
//                  00001000                    00001000
//
// HS_FDIAGONAL:    10000000     HS_DIAGCROSS:  10000001
//                  01000000                    01000010
//                  00100000                    00100100
//                  00010000                    00011000
//                  00001000                    00011000
//                  00000100                    00100100
//                  00000010                    01000010
//                  00000001                    10000001
///////////////////////////////////////////////////////////////////////////////
#define HS_HORIZONTAL   0   /*!< brush style: horizontal */
#define HS_VERTICAL     1   /*!< brush style: vertical */
#define HS_FDIAGONAL    2   /*!< brush style: fdiagonal */
#define HS_BDIAGONAL    3   /*!< brush style: bdiagonal */
#define HS_CROSS        4   /*!< brush style: cross */
#define HS_DIAGCROSS    5   /*!< brush style: diagcross */

#define MODE_OPAQUE             0                   /*!< opaque mode */
#define MODE_TRANSPARENT        1                   /*!< transparent mode */
#define MODE_SRC_TRANSPARENT    MODE_TRANSPARENT    /*!< source transparent mode */
#define MODE_DEST_TRANSPARENT   2                   /*!< destination transparent mode */

#define MODE_INSIDE_CLIP    0   /*!< clip inside */
#define MODE_OUTSIDE_CLIP   1   /*!< clip outside */

#define TYPE_MONO           0   /*!< mono */
#define TYPE_COLOR          1   /*!< color */

#define GE_BPP_8    0x00000000  /*!< 8bpp display */
#define GE_BPP_16   0x00000010  /*!< 16bpp display */
#define GE_BPP_32   0x00000020  /*!< 32bpp display */

#define RGB332 1    /*!< 8bpp display */
#define RGB565 2    /*!< 16bpp display */
#define RGB888 3    /*!< 24bpp display */

#define F8x8            0   /*!< 8x8 font support */
#define F8x16           1   /*!< 8x16 font support */

/*@}*/ /* end of group N9H30_GE2D_EXPORTED_CONSTANTS */

/** @addtogroup N9H30_GE2D_EXPORTED_FUNCTIONS GE2D Exported Functions
  @{
*/

void ge2dClearScreen(int color);
void ge2dSetWriteMask(int mask);
void ge2dSetSourceOriginStarting(void *ptr);
void ge2dSetDestinationOriginStarting(void *ptr);
void ge2dInit(int bpp, int width, int height, void *destination);
void ge2dReset(void);
void ge2dResetFIFO(void);
void ge2dBitblt_SetDrawMode(int opt, int ckey, int mask);
int ge2dBitblt_SetAlphaMode(int opt, int ks, int kd);
void ge2dBitblt_ScreenToScreen(int srcx, int srcy, int destx, int desty, int width, int height);
void ge2dBitblt_ScreenToScreenRop(int srcx, int srcy, int destx, int desty, int width, int height, int rop);
void ge2dBitblt_SourceToDestination(int srcx, int srcy, int destx, int desty, int width, int height, int srcpitch, int destpitch);
void ge2dClip_SetClip(int x1, int y1, int x2, int y2);
void ge2dClip_SetClipMode(int opt);
void ge2dDrawFrame(int x1, int y1, int x2, int y2, int color, int opt);
void ge2dLine_DrawSolidLine(int x1, int y1, int x2, int y2, int color);
void ge2dLine_DrawSolidLine_RGB565(int x1, int y1, int x2, int y2, int color);
void ge2dLine_DrawStyledLine(int x1, int y1, int x2, int y2, int style, int fgcolor, int bkcolor, int draw_mode);
void ge2dLine_DrawStyledLine_RGB565(int x1, int y1, int x2, int y2, int style, int fgcolor, int bkcolor, int draw_mode);
void ge2dFill_Solid(int dx, int dy, int width, int height, int color);
void ge2dFill_Solid_RGB565(int dx, int dy, int width, int height, int color);
void ge2dFill_SolidBackground(int dx, int dy, int width, int height, int color);
void ge2dFill_ColorPattern(int dx, int dy, int width, int height);
void ge2dFill_MonoPattern(int dx, int dy, int width, int height, int opt);
void ge2dFill_ColorPatternROP(int sx, int sy, int width, int height, int rop);
void ge2dFill_MonoPatternROP(int sx, int sy, int width, int height, int rop, int opt);
void ge2dFill_TileBlt(int srcx, int srcy, int destx, int desty, int width, int height, int x_count, int y_count);
void ge2dHostBlt_Write(int x, int y, int width, int height, void *buf);
void ge2dHostBlt_Read(int x, int y, int width, int height, void *buf);
void ge2dHostBlt_Sprite(int x, int y, int width, int height, void *buf);
void ge2dRotation(int srcx, int srcy, int destx, int desty, int width, int height, int ctl);
void ge2dSpriteBlt_Screen(int destx, int desty, int sprite_width, int sprite_height, void *buf);
void ge2dSpriteBltx_Screen(int x, int y, int sprite_sx, int sprite_sy, int width, int height, int sprite_width, int sprite_height, void *buf);
void ge2dSpriteBlt_ScreenRop(int x, int y, int sprite_width, int sprite_height, void *buf, int rop);
void ge2dSpriteBltx_ScreenRop(int x, int y, int sprite_sx, int sprite_sy, int width, int height, int sprite_width, int sprite_height, void *buf, int rop);
void ge2dColorExpansionBlt(int x, int y, int width, int height, int fore_color, int back_color, int opt, void *buf);
void ge2dHostColorExpansionBlt(int x, int y, int width, int height, int fore_color, int back_color, int opt, void *buf);
void ge2dInitMonoPattern(int opt, int fore_color, int back_color);
void ge2dInitMonoInputPattern(uint32_t PatternA, uint32_t PatternB, int fore_color, int back_color);
void ge2dInitColorPattern(int patformat, void *patdata);
void ge2dFont_PutChar(int x, int y, char asc_code, int fore_color, int back_color, int draw_mode, int font_id);
void ge2dFont_PutString(int x, int y, char *str, int fore_color, int back_color, int draw_mode, int font_id);

/*@}*/ /* end of group N9H30_GE2D_EXPORTED_FUNCTIONS */

/*@}*/ /* end of group N9H30_GE2D_Driver */

/*@}*/ /* end of group N9H30_Device_Driver */


#ifdef __cplusplus
}
#endif

#endif //__NU_2D_H__

/*** (C) COPYRIGHT 2018 Nuvoton Technology Corp. ***/