rt-thread-official/bsp/nuvoton/libraries/n9h30/Driver/Include/nu_2d.h

191 lines
9.0 KiB
C

/**************************************************************************//**
* @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. ***/