📄 gui.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 : GUI.h
Purpose : Include file for 2DGL incl. character related routines.
---------------------------END-OF-HEADER------------------------------
Attention : Do not modify this file ! If you do, you will not
be able do update to a later version of emWin !
*/
#ifndef GUI_H
#define GUI_H
#define __EMWIN_GSC__ /* Allow "C" to find out that emWin GSC is used */
#if defined(__cplusplus)
extern "C" { /* Make sure we have C-declarations in C++ programs */
#endif
#include "GUIType.h"
#include "GUIConf.h"
#if GUI_WINSUPPORT
#include "WM.h"
#endif
#include "GUIVersion.h"
/**********************************************************************
*
* Defaults for config switches
*
***********************************************************************
*/
#ifndef GUI_SUPPORT_TOUCH
#define GUI_SUPPORT_TOUCH 0
#endif
#ifndef GUI_SUPPORT_MOUSE
#define GUI_SUPPORT_MOUSE 0
#endif
#ifndef GUI_SUPPORT_MEMDEV
#define GUI_SUPPORT_MEMDEV 0
#endif
#ifndef GUI_SUPPORT_AA
#define GUI_SUPPORT_AA 1
#endif
#ifndef GUI_SUPPORT_CURSOR
#define GUI_SUPPORT_CURSOR (GUI_SUPPORT_MOUSE | GUI_SUPPORT_TOUCH)
#endif
#ifndef GUI_OS
#define GUI_OS 0
#endif
#ifndef GUI_DEFAULT_FONT
#define GUI_DEFAULT_FONT &GUI_Font6x8
#endif
#ifndef GUI_DEFAULT_CURSOR
#define GUI_DEFAULT_CURSOR &GUI_CursorArrowM
#endif
#ifndef GUI_DEFAULT_BKCOLOR
#define GUI_DEFAULT_BKCOLOR GUI_BLACK
#endif
#ifndef GUI_DEFAULT_COLOR
#define GUI_DEFAULT_COLOR GUI_WHITE
#endif
#ifndef GUI_SUPPORT_UNICODE
#define GUI_SUPPORT_UNICODE 0
#endif
/* In order to avoid warnings for undefined parameters */
#ifndef GUI_USE_PARA
#ifdef __BORLANDC__
#define GUI_USE_PARA(para)
#else
#define GUI_USE_PARA(para) para=para;
#endif
#endif
/* GUI_FLASH allows to put constants into a special memory area
For most CPUs, this is not necessary hence the default is "".
(This makes sense for CPUs like ATMEL AT90 or 8051, where
default pointers are unable to reach ROM/FLASH memory in some
memory models)
*/
#ifndef GUI_FLASH
#define GUI_FLASH
#endif
#ifndef GUI_FAR
#define GUI_FAR
#endif
/* Default for types */
#ifndef GUI_TIMER_TIME
#define GUI_TIMER_TIME int /* default is to use 16 bits for 16 bit CPUs,
32 bits on 32 bit CPUs for timing */
#endif
#ifndef GUI_COMPATIBLE_MODE
#define GUI_COMPATIBLE_MODE 1
#endif
/*********************************************************************
*
* Limitations for certain C51 Keil (__C51__)
*
**********************************************************************
*/
#if defined (__C51__) && GUI_SUPPORT_MEMDEV
#error __C51__ (Keil) can not support function pointers sufficiently ! -> Disable memory devices -> GUI_SUPPORT_MEMDEV 0
#endif
/*********************************************************************
*
* macros, function replacement
*
**********************************************************************
*/
#define GUI_COUNTOF(a) (sizeof(a) / sizeof(a[0]))
/************************************************************
*
* GUI_KEY_...
*
*************************************************************
These ID values are basically meant to be used with widgets
*/
#define GUI_KEY_BACKSPACE 8 /* ASCII: BACKSPACE Crtl-H */
#define GUI_KEY_TAB 9 /* ASCII: TAB Crtl-I */
#define GUI_KEY_ENTER 13 /* ASCII: ENTER Crtl-M */
#define GUI_KEY_LEFT 16
#define GUI_KEY_UP 17
#define GUI_KEY_RIGHT 18
#define GUI_KEY_DOWN 19
#define GUI_KEY_HOME 23
#define GUI_KEY_END 24
#define GUI_KEY_SHIFT 25
#define GUI_KEY_CONTROL 26
#define GUI_KEY_ESCAPE 27 /* ASCII: ESCAPE 0x1b */
#define GUI_KEY_INSERT 29
#define GUI_KEY_DELETE 30
/*********************************************************************
*
* Dialog item IDs
*
* The IDs below are arbitrary values. They just have to be unique
* within the dialog.
*
* If you use your own Ids, we recommend to use values above GUI_ID_USER.
*/
#define GUI_ID_OK 1
#define GUI_ID_CANCEL 2
#define GUI_ID_YES 3
#define GUI_ID_NO 4
#define GUI_ID_CLOSE 5
#define GUI_ID_HELP 6
#define GUI_ID_VSCROLL 0xFE
#define GUI_ID_HSCROLL 0xFF
#define GUI_ID_EDIT0 0x100
#define GUI_ID_EDIT1 0x101
#define GUI_ID_EDIT2 0x102
#define GUI_ID_EDIT3 0x103
#define GUI_ID_EDIT4 0x104
#define GUI_ID_EDIT5 0x105
#define GUI_ID_EDIT6 0x106
#define GUI_ID_EDIT7 0x107
#define GUI_ID_EDIT8 0x108
#define GUI_ID_EDIT9 0x109
#define GUI_ID_LISTBOX0 0x110
#define GUI_ID_LISTBOX1 0x111
#define GUI_ID_LISTBOX2 0x112
#define GUI_ID_LISTBOX3 0x113
#define GUI_ID_LISTBOX4 0x114
#define GUI_ID_LISTBOX5 0x115
#define GUI_ID_LISTBOX6 0x116
#define GUI_ID_LISTBOX7 0x117
#define GUI_ID_LISTBOX8 0x118
#define GUI_ID_LISTBOX9 0x119
#define GUI_ID_CHECK0 0x120
#define GUI_ID_CHECK1 0x121
#define GUI_ID_CHECK2 0x122
#define GUI_ID_CHECK3 0x123
#define GUI_ID_CHECK4 0x124
#define GUI_ID_CHECK5 0x125
#define GUI_ID_CHECK6 0x126
#define GUI_ID_CHECK7 0x127
#define GUI_ID_CHECK8 0x128
#define GUI_ID_SLIDER0 0x130
#define GUI_ID_SLIDER1 0x131
#define GUI_ID_SLIDER2 0x132
#define GUI_ID_SLIDER3 0x133
#define GUI_ID_SLIDER4 0x134
#define GUI_ID_SLIDER5 0x135
#define GUI_ID_SLIDER6 0x136
#define GUI_ID_SLIDER7 0x137
#define GUI_ID_SLIDER8 0x138
#define GUI_ID_SLIDER9 0x139
#define GUI_ID_SCROLLBAR0 0x140
#define GUI_ID_SCROLLBAR1 0x141
#define GUI_ID_SCROLLBAR2 0x142
#define GUI_ID_SCROLLBAR3 0x142
#define GUI_ID_RADIO0 0x150
#define GUI_ID_RADIO1 0x151
#define GUI_ID_RADIO2 0x152
#define GUI_ID_RADIO3 0x152
#define GUI_ID_USER 0x800
/*********************************************************************
*
* Constants needed for GL
*
**********************************************************************
*/
/* *********************************
*
* Linestyles
*
*********************************
*/
#define GUI_LS_SOLID (0)
#define GUI_LS_DASH (1)
#define GUI_LS_DOT (2)
#define GUI_LS_DASHDOT (3)
#define GUI_LS_DASHDOTDOT (4)
/* *********************************
*
* Pen shapes
*
*********************************
*/
#define GUI_PS_ROUND (0)
#define GUI_PS_FLAT (1)
#define GUI_PS_SQUARE (2)
/* *********************************
*
* Standard colors
*
*********************************
*/
#define GUI_BLACK 0x000000
#define GUI_BLUE 0xFF0000
#define GUI_GREEN 0x00ff00
#define GUI_CYAN 0xffff00
#define GUI_RED 0x0000FF
#define GUI_MAGENTA 0x8b008b
#define GUI_BROWN 0x2a2aa5
#define GUI_DARKGRAY 0x404040
#define GUI_GRAY 0x808080
#define GUI_LIGHTGRAY 0xd3d3d3
#define GUI_LIGHTBLUE 0xff8080
#define GUI_LIGHTGREEN 0x80ff80
#define GUI_LIGHTCYAN 0x80ffff
#define GUI_LIGHTRED 0x8080ff
#define GUI_LIGHTMAGENTA 0xff80ff
#define GUI_YELLOW 0x00ffff
#define GUI_WHITE 0xffffff
#define GUI_INVALID_COLOR 0xfffffff /* Invalid color - more than 24 bits */
/* *********************************
*
* Coordinates
*
*********************************
*/
#define GUI_COORD_X 0
#define GUI_COORD_Y 1
/* *********************************
*
* UNICODE support macros
*
*********************************
*/
#define GUI_UC_STARTCHAR 0x1a
#define GUI_UC_ENDCHAR 0xe2
#define GUI_UC_STARTSTRING "\x1a"
#define GUI_UC_ENDSTRING "\xe2"
#define GUI_UC_START GUI_UC_STARTSTRING
#define GUI_UC_END GUI_UC_ENDSTRING
#define GUI_UC_NL "\xe0\x0a"
/*********************************************************************
*
* Standard Fonts supplied with emWin
*
**********************************************************************
Note: The external declarations for the fonts are now also included in
this file.
*/
/* Proportional fonts */
extern const GUI_FONT GUI_Font8_ASCII, GUI_Font8_1;
extern const GUI_FONT GUI_Font10S_ASCII, GUI_Font10S_1;
extern const GUI_FONT GUI_Font10_ASCII, GUI_Font10_1;
extern const GUI_FONT GUI_Font13_ASCII, GUI_Font13_1;
extern const GUI_FONT GUI_Font13B_ASCII, GUI_Font13B_1;
extern const GUI_FONT GUI_Font13H_ASCII, GUI_Font13H_1;
extern const GUI_FONT GUI_Font13HB_ASCII, GUI_Font13HB_1;
extern const GUI_FONT GUI_Font16_ASCII, GUI_Font16_1, GUI_Font16_HK, GUI_Font16_1HK;
extern const GUI_FONT GUI_Font16B_ASCII, GUI_Font16B_1;
extern const GUI_FONT GUI_Font24_ASCII, GUI_Font24_1;
extern const GUI_FONT GUI_Font24B_ASCII, GUI_Font24B_1;
extern const GUI_FONT GUI_Font32_ASCII, GUI_Font32_1;
extern const GUI_FONT GUI_Font32B_ASCII, GUI_Font32B_1;
/* Monospaced */
extern const GUI_FONT GUI_Font4x6;
extern const GUI_FONT GUI_Font6x8, GUI_Font6x9;
extern const GUI_FONT GUI_Font8x8, GUI_Font8x9;
extern const GUI_FONT GUI_Font8x10_ASCII;
extern const GUI_FONT GUI_Font8x12_ASCII;
extern const GUI_FONT GUI_Font8x13_ASCII, GUI_Font8x13_1;
extern const GUI_FONT GUI_Font8x15B_ASCII, GUI_Font8x15B_1;
extern const GUI_FONT GUI_Font8x16, GUI_Font8x17, GUI_Font8x18;
extern const GUI_FONT GUI_Font8x16x1x2, GUI_Font8x16x2x2, GUI_Font8x16x3x3;
/* Digits */
extern const GUI_FONT GUI_FontD24x32;
extern const GUI_FONT GUI_FontD32;
/* Comic fonts */
extern const GUI_FONT GUI_FontComic18B_ASCII, GUI_FontComic18B_1;
extern const GUI_FONT GUI_FontComic24B_ASCII, GUI_FontComic24B_1;
/*
*********************************
* *
* Text and drawing mode defines *
* *
*********************************
These defines come in two flavors: the long version (.._DRAWMODE_..)
and the short ones (.._DM_..). They are identical, feel free to use
which ever one you like best.
*/
#define GUI_DRAWMODE_NORMAL LCD_DRAWMODE_NORMAL
#define GUI_DRAWMODE_XOR LCD_DRAWMODE_XOR
#define GUI_DRAWMODE_TRANS LCD_DRAWMODE_TRANS
#define GUI_DRAWMODE_REV LCD_DRAWMODE_REV
#define GUI_DM_NORMAL LCD_DRAWMODE_NORMAL
#define GUI_DM_XOR LCD_DRAWMODE_XOR
#define GUI_DM_TRANS LCD_DRAWMODE_TRANS
#define GUI_DM_REV LCD_DRAWMODE_REV
#define GUI_TEXTMODE_NORMAL LCD_DRAWMODE_NORMAL
#define GUI_TEXTMODE_XOR LCD_DRAWMODE_XOR
#define GUI_TEXTMODE_TRANS LCD_DRAWMODE_TRANS
#define GUI_TEXTMODE_REV LCD_DRAWMODE_REV
#define GUI_TM_NORMAL LCD_DRAWMODE_NORMAL
#define GUI_TM_XOR LCD_DRAWMODE_XOR
#define GUI_TM_TRANS LCD_DRAWMODE_TRANS
#define GUI_TM_REV LCD_DRAWMODE_REV
/* Text alignment flags, horizontal */
#define GUI_TA_HORIZONTAL (3<<0)
#define GUI_TA_LEFT (0<<0)
#define GUI_TA_RIGHT (1<<0)
#define GUI_TA_CENTER (2<<0)
#define GUI_TA_HCENTER GUI_TA_CENTER /* easier to remember :-) */
/* Text alignment flags, vertical */
#define GUI_TA_VERTICAL (3<<2)
#define GUI_TA_TOP (0<<2)
#define GUI_TA_BOTTOM (1<<2)
#define GUI_TA_BASELINE (2<<2)
#define GUI_TA_VCENTER (3<<2)
/* *********************************
*
* Min/Max coordinates
*
*********************************
*/
/* Define minimum and maximum coordinates in x and y */
#define GUI_XMIN -4095
#define GUI_XMAX 4095
#define GUI_YMIN -4095
#define GUI_YMAX 4095
/*********************************************************************
*
* GUI_CONTEXT
*
**********************************************************************
This structure is public for one reason only:
To allow the application to save and restore the context.
*/
typedef union {
U8 aColorIndex8[2];
U16 aColorIndex16[2];
} LCD_COLORINDEX_UNION;
typedef struct GUI_Context_struct GUI_CONTEXT;
#if !defined (__C51__) /* To bypass Keil-compiler bug */
typedef struct tLCDDEV_APIList_struct tLCDDEV_APIList;
#endif
struct GUI_Context_struct {
/* Variables in LCD module */
LCD_COLORINDEX_UNION LCD;
LCD_RECT ClipRect;
const tLCD_HL_APIList* pLCD_HL;
U8 DrawMode;
/* Variables in GL module */
GUI_RECT* pClipRect_HL;
U8 PenSize;
U8 PenShape;
U8 LineStyle;
U8 FillStyle;
/* Variables in GUICHAR module */
const GUI_FONT* pAFont;
I16P LBorder;
I16P DispPosX, DispPosY;
I16P DrawPosX, DrawPosY;
I16P TextMode;
I16P TextAlign;
/* Variables in WM module */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -