?? lcd.h
字號:
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* 礐/GUI is protected by international copyright laws. Knowledge of the
* source code may not be used to write a similar product. This file may
* only be used in accordance with a license and should not be redistributed
* in any way. We appreciate your understanding and fairness.
*
----------------------------------------------------------------------
File : LCD.h
Purpose : Declares LCD interface functions
----------------------------------------------------------------------
*/
#ifndef LCD_H
#define LCD_H
#include "GUI_ConfDefaults.h" /* Used for GUI_UNI_PTR */
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
/*
********************************************************************
* *
* Basic type defines *
* *
********************************************************************
The follwing are defines for types used in the LCD-driver and the
GUI layers on top of that. Since "C" does not provide data types of
fixed length which are identical on all platforms, this is done here.
For most 16/32 controllers, the settings will work fine. However, if
you have similar defines in other sections of your program, you might
want to change or relocate these defines, e.g. in a TYPE.h file.
*/
#define I8 signed char
#define U8 unsigned char /* unsigned 8 bits. */
#define I16 signed short /* signed 16 bits. */
#define U16 unsigned short /* unsigned 16 bits. */
#define I32 signed long /* signed 32 bits. */
#define U32 unsigned long /* unsigned 32 bits. */
#define I16P I16 /* signed 16 bits OR MORE ! */
#define U16P U16 /* unsigned 16 bits OR MORE ! */
/*
********************************************************************
* *
* Settings for windows simulation *
* *
********************************************************************
Some settings in the configuration may conflict with the values required
in the Simulation. This is why we ignore the target settings for data
types and use the correct settings for the simulation.
(U32 could be defined as long, which would yield a 64 bit type on
the PC)
*/
#ifdef WIN32
#pragma warning( disable : 4244 ) // Disable warning messages in simulation
#pragma warning( disable : 4761 ) // Disable warning "integral size mismatch in argument; conversion supplied"
#endif
/* *************************************************************
* *
* Constants *
* *
*************************************************************
*/
#define LCD_ERR0 (0x10)
#define LCD_ERR_CONTROLLER_NOT_FOUND (LCD_ERR0+1)
#define LCD_ERR_MEMORY (LCD_ERR0+2)
/*
*********************************
* *
* Drawing modes *
* *
*********************************
*/
#define LCD_DRAWMODE_NORMAL (0)
#define LCD_DRAWMODE_XOR (1<<0)
#define LCD_DRAWMODE_TRANS (1<<1)
#define LCD_DRAWMODE_REV (1<<2)
/* *************************************************************
* *
* Typedefs *
* *
*************************************************************
*/
typedef int LCD_DRAWMODE;
typedef U32 LCD_COLOR;
/********************************************************
*
* Data structures
*
*********************************************************
*/
typedef struct { I16P x,y; } GUI_POINT;
typedef struct { I16 x0,y0,x1,y1; } LCD_RECT;
/*typedef struct { GUI_POINT P0, P1; } LCD_RECT; */
typedef struct {
int NumEntries;
char HasTrans;
const LCD_COLOR GUI_UNI_PTR * pPalEntries;
} LCD_LOGPALETTE;
/* This is used for the simulation only ! */
typedef struct {
int x,y;
unsigned char KeyStat;
} LCD_tMouseState;
/*********************************************************************
*
* Index2Color
This function needs to be int the public part of the software
since it is needed by the simulation. Most other driver
functions are hidden in the private header file.
*/
typedef LCD_COLOR tLCDDEV_Index2Color (int Index);
typedef unsigned int tLCDDEV_Color2Index (LCD_COLOR Color);
typedef unsigned int tLCDDEV_GetIndexMask (void);
LCD_COLOR LCD_L0_Index2Color (int Index);
LCD_COLOR LCD_L0_1_Index2Color(int Index);
LCD_COLOR LCD_L0_2_Index2Color(int Index);
LCD_COLOR LCD_L0_3_Index2Color(int Index);
LCD_COLOR LCD_L0_4_Index2Color(int Index);
unsigned int LCD_L0_Color2Index (LCD_COLOR Color);
unsigned int LCD_L0_1_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_2_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_3_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_4_Color2Index(LCD_COLOR Color);
unsigned int LCD_L0_GetIndexMask (void);
unsigned int LCD_L0_1_GetIndexMask(void);
unsigned int LCD_L0_2_GetIndexMask(void);
unsigned int LCD_L0_3_GetIndexMask(void);
unsigned int LCD_L0_4_GetIndexMask(void);
/*********************************************************************
*
* Color conversion API tables
*/
typedef struct {
tLCDDEV_Color2Index* pfColor2Index;
tLCDDEV_Index2Color* pfIndex2Color;
tLCDDEV_GetIndexMask* pfGetIndexMask;
} LCD_API_COLOR_CONV;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_1;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_2;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_4;
extern const LCD_API_COLOR_CONV LCD_API_ColorConv_8666;
#define GUI_COLOR_CONV_1 &LCD_API_ColorConv_1
#define GUI_COLOR_CONV_2 &LCD_API_ColorConv_2
#define GUI_COLOR_CONV_4 &LCD_API_ColorConv_4
#define GUI_COLOR_CONV_8666 &LCD_API_ColorConv_8666
/*********************************************************************
*
* LCDDEV function table
*
**********************************************************************
Below the routines which need to in an LCDDEV routine table are
defined. All of these routines have to be in the low-level driver
(LCD_L0) or in the memory device which can be used to replace the
driver.
The one exception to this is the SetClipRect routine, which would
be identical for all drivers and is therefor contained in the
level above (LCD).
*/
typedef void tLCDDEV_DrawHLine (int x0, int y0, int x1);
typedef void tLCDDEV_DrawVLine (int x , int y0, int y1);
typedef void tLCDDEV_FillRect (int x0, int y0, int x1, int y1);
typedef unsigned int tLCDDEV_GetPixelIndex(int x, int y);
typedef void tLCDDEV_SetPixelIndex(int x, int y, int ColorIndex);
typedef void tLCDDEV_XorPixel (int x, int y);
typedef void tLCDDEV_FillPolygon (const GUI_POINT* pPoints, int NumPoints, int x0, int y0);
typedef void tLCDDEV_FillPolygonAA(const GUI_POINT* pPoints, int NumPoints, int x0, int y0);
typedef void tLCDDEV_GetRect (LCD_RECT*pRect);
typedef int tLCDDEV_Init (void);
typedef void tLCDDEV_On (void);
typedef void tLCDDEV_Off (void);
typedef void tLCDDEV_SetLUTEntry (U8 Pos, LCD_COLOR color);
/*********************************************************************
*
* Memory device API tables
*/
#if GUI_COMPILER_SUPPORTS_FP
typedef struct tLCDDEV_APIList_struct tLCDDEV_APIList;
#endif
typedef void tLCDDEV_DrawBitmap (int x0, int y0, int xsize, int ysize,
int BitsPerPixel, int BytesPerLine,
const U8 GUI_UNI_PTR * pData, int Diff,
const void* pTrans); /* Really LCD_PIXELINDEX, but is void to avoid compiler warnings*/
struct tLCDDEV_APIList_struct {
tLCDDEV_Color2Index* pfColor2Index;
tLCDDEV_Index2Color* pfIndex2Color;
tLCDDEV_GetIndexMask* pfGetIndexMask;
tLCDDEV_DrawBitmap* pfDrawBitmap;
tLCDDEV_DrawHLine* pfDrawHLine;
tLCDDEV_DrawVLine* pfDrawVLine;
tLCDDEV_FillRect* pfFillRect;
tLCDDEV_GetPixelIndex* pfGetPixelIndex;
tLCDDEV_GetRect* pfGetRect;
tLCDDEV_SetPixelIndex* pfSetPixelIndex;
tLCDDEV_XorPixel* pfXorPixel;
tLCDDEV_SetLUTEntry* pfSetLUTEntry;
#if GUI_SUPPORT_MEMDEV
tLCDDEV_FillPolygon* pfFillPolygon;
tLCDDEV_FillPolygonAA* pfFillPolygonAA;
const tLCDDEV_APIList* pMemDevAPI;
unsigned BitsPerPixel;
#endif
};
#if GUI_COMPILER_SUPPORTS_FP
extern const struct tLCDDEV_APIList_struct GUI_MEMDEV__APIList8;
extern const struct tLCDDEV_APIList_struct GUI_MEMDEV__APIList16;
#define GUI_MEMDEV_APILIST_8 &GUI_MEMDEV__APIList8
#define GUI_MEMDEV_APILIST_16 &GUI_MEMDEV__APIList16
#endif
/* *************************************************************
* *
* Defines *
* *
* for device capabilities *
* *
*************************************************************
The following is the list of device capabilities which can, but do
not have to be implemented in the driver. This way the driver can be
enhanced in the future without affecting the driver interface,
keeping older drivers compatible.
More DevCaps can always be added in the future, as older drivers
are guaranteed to return 0 for all unimplemented features or queries.
The values below define the legal parameters to the LCD_GetDeviceCaps
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -