?? gdi.h
字號:
/* * $Id: gdi.h,v 1.36 2000/11/20 05:46:45 ymwei Exp $ * * gdi.h * * This file include definitions of Graphics Device Interfaces. * * MiniGUI for Linux Version 0.9.xx * Copyright (c) 1998 ~ 2000 Wei Yongming. * Last modified date: 2000/11/17 *//*** This library is free software; you can redistribute it and/or** modify it under the terms of the GNU Library General Public** License as published by the Free Software Foundation; either** version 2 of the License, or (at your option) any later version.**** This library is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU** Library General Public License for more details.**** You should have received a copy of the GNU Library General Public** License along with this library; if not, write to the Free** Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,** MA 02111-1307, USA*/#ifndef GUI_GDI_H #define GUI_GDI_H/* include necessary headers */#include <pthread.h> #ifdef __cplusplusextern "C" {#endif /* __cplusplus */#ifdef __ECOStypedef unsigned char uchar;typedef unsigned short ushort;typedef unsigned long ulong;typedef unsigned int uint;typedef unsigned char u_char;typedef unsigned short u_short;typedef unsigned long u_long;typedef unsigned int u_int;#endif/* expanded bitmap struct */typedef struct tagBITMAP{ int bmType; int bmWidth; int bmHeight; int bmWidthBytes; BYTE bmPlanes; BYTE bmBitsPixel; void* bmBits;} BITMAP;typedef BITMAP* PBITMAP;/******************************** Region Support ****************************/// Clip Recttypedef struct tagCLIPRECT{ RECT rc; BOOL fromheap; struct tagCLIPRECT* next;}CLIPRECT;typedef CLIPRECT* PCLIPRECT;// Free CLIPRECT listtypedef struct tagFREECLIPRECTLIST{ pthread_mutex_t lock; PCLIPRECT head; PCLIPRECT tail; int size; PCLIPRECT heap; int free;}FREECLIPRECTLIST;typedef FREECLIPRECTLIST* PFREECLIPRECTLIST;// Clip Regiontypedef struct tagCLIPRGN{ RECT rcBound; // bound rect of clip region PCLIPRECT head; // clip rect list head PCLIPRECT tail; // clip rect list tail PFREECLIPRECTLIST pFreeList; // free clip rect list}CLIPRGN;typedef CLIPRGN* PCLIPRGN;BOOL GUIAPI InitFreeClipRectList (PFREECLIPRECTLIST pList, size_t size);PCLIPRECT GUIAPI ClipRectAlloc (PFREECLIPRECTLIST pList);void GUIAPI FreeClipRect (PFREECLIPRECTLIST pList, CLIPRECT* pRect);void GUIAPI EmptyFreeClipRectList (PFREECLIPRECTLIST pList);void GUIAPI DestroyFreeClipRectList (PFREECLIPRECTLIST pList);void GUIAPI InitClipRgn (PCLIPRGN pRgn, PFREECLIPRECTLIST pFreeList);BOOL GUIAPI ClipRgnCopy (PCLIPRGN pDstRgn, const CLIPRGN* pSrcRgn);BOOL GUIAPI ClipRgnIntersect (PCLIPRGN pRstRgn, const CLIPRGN* pRgn1, const CLIPRGN* pRgn2);void GUIAPI GetClipRgnBoundRect (PCLIPRGN pRgn, PRECT pRect);BOOL GUIAPI SetClipRgn (PCLIPRGN pRgn, const RECT* pRect);BOOL GUIAPI IsEmptyClipRgn (const CLIPRGN* pRgn);void GUIAPI EmptyClipRgn (PCLIPRGN pRgn);BOOL GUIAPI AddClipRect (PCLIPRGN pRgn, const RECT* pRect);BOOL GUIAPI IntersectClipRect (PCLIPRGN pRgn, const RECT* pRect);BOOL GUIAPI SubtractClipRect (PCLIPRGN pRgn, const RECT* pRect);/************************* Font-related structures ************************/#define LEN_FONT_NAME 15#define LEN_DEVFONT_NAME 79#define FONT_WEIGHT_NIL '\0'#define FONT_WEIGHT_ALL '*'#define FONT_WEIGHT_BLACK 'c'#define FONT_WEIGHT_BOLD 'b'#define FONT_WEIGHT_BOOK 'k'#define FONT_WEIGHT_DEMIBOLD 'd'#define FONT_WEIGHT_LIGHT 'l'#define FONT_WEIGHT_MEDIUM 'm'#define FONT_WEIGHT_REGULAR 'r'#define FS_WEIGHT_MASK 0x000000FF#define FS_WEIGHT_BLACK 0x00000001#define FS_WEIGHT_BOLD 0x00000002#define FS_WEIGHT_BOOK 0x00000004#define FS_WEIGHT_DEMIBOLD 0x00000006 /* BOOK | BOLD */#define FS_WEIGHT_LIGHT 0x00000010#define FS_WEIGHT_MEDIUM 0x00000020#define FS_WEIGHT_REGULAR 0x00000000#define FONT_SLANT_NIL '\0'#define FONT_SLANT_ALL '*'#define FONT_SLANT_ITALIC 'i'#define FONT_SLANT_OBLIQUE 'o'#define FONT_SLANT_ROMAN 'r'#define FS_SLANT_MASK 0x00000F00#define FS_SLANT_ITALIC 0x00000100#define FS_SLANT_OBLIQUE 0x00000200#define FS_SLANT_ROMAN 0x00000000#define FONT_SETWIDTH_NIL '\0'#define FONT_SETWIDTH_ALL '*'#define FONT_SETWIDTH_BOLD 'b'#define FONT_SETWIDTH_CONDENSED 'c'#define FONT_SETWIDTH_SEMICONDENSED 's'#define FONT_SETWIDTH_NORMAL 'n'#define FS_SETWIDTH_MASK 0x0000F000#define FS_SETWIDTH_BOLD 0x00001000#define FS_SETWIDTH_CONDENSED 0x00002000#define FS_SETWIDTH_SEMICONDENSED 0x00004000#define FS_SETWIDTH_NORMAL 0x00000000#define FONT_SPACING_NIL '\0'#define FONT_SPACING_ALL '*'#define FONT_SPACING_MONOSPACING 'm'#define FONT_SPACING_PROPORTIONAL 'p'#define FONT_SPACING_CHARCELL 'c'#define FS_SPACING_MASK 0x000F0000#define FS_SPACING_MONOSPACING 0x00010000#define FS_SPACING_PROPORTIONAL 0x00020000#define FS_SPACING_CHARCELL 0x00000000#define FONT_UNDERLINE_NIL '\0'#define FONT_UNDERLINE_ALL '*'#define FONT_UNDERLINE_LINE 'u'#define FONT_UNDERLINE_NONE 'n'#define FS_UNDERLINE_MASK 0x00F00000#define FS_UNDERLINE_LINE 0x00100000#define FS_UNDERLINE_NONE 0x00000000#define FONT_STRUCKOUT_NIL '\0'#define FONT_STRUCKOUT_ALL '*'#define FONT_STRUCKOUT_LINE 's'#define FONT_STRUCKOUT_NONE 'n'#define FS_STRUCKOUT_MASK 0x0F000000#define FS_STRUCKOUT_LINE 0x01000000#define FS_STRUCKOUT_NONE 0x00000000#define FONT_TYPE_NAME_BITMAP_RAW "rbf"#define FONT_TYPE_NAME_BITMAP_VAR "vbf"#define FONT_TYPE_NAME_SCALE_TTF "ttf"#define FONT_TYPE_NAME_ALL "all"#define FONT_TYPE_BITMAP_RAW 0x0001 // "rbf"#define FONT_TYPE_BITMAP_VAR 0x0002 // "vbf"#define FONT_TYPE_SCALE_TTF 0x0010 // "ttf"#define FONT_TYPE_ALL 0xFFFF // "all"#define FONT_CHARSET_ISO8859_1 "ISO8859-1"#define FONT_CHARSET_GB2312_1980_0 "GB2312.1980-0"#define FONT_CHARSET_GB12345 "GB12345"#define FONT_CHARSET_BIG5 "BIG5"#define FONT_MAX_SIZE 256#define FONT_MIN_SIZE 4struct _DEVFONT;typedef struct _DEVFONT DEVFONT;typedef struct _LOGFONT { char type [LEN_FONT_NAME + 1]; char family [LEN_FONT_NAME + 1]; char charset [LEN_FONT_NAME + 1]; DWORD style; int size; int rotation; DEVFONT* sbc_devfont; DEVFONT* mbc_devfont;} LOGFONT;typedef LOGFONT* PLOGFONT;extern LOGFONT SysLogFont;#define MAX_LEN_MCHAR 4typedef struct _WORDINFO{ int len; // length of the word unsigned char delimiter; // delimiter after the word int nr_delimiters; // number of delimiter after the word} WORDINFO;typedef struct _CHARSETOPS{ int nr_chars; int bytes_per_char; int bytes_maxlen_char; const char* name; char def_char [MAX_LEN_MCHAR]; int (*len_first_char) (const unsigned char* mstr, int mstrlen); int (*char_offset) (const unsigned char* mchar); int (*nr_chars_in_str) (const unsigned char* mstr, int mstrlen); int (*is_this_charset) (const unsigned char* charset); int (*len_first_substr) (const unsigned char* mstr, int mstrlen); const unsigned char* (*get_next_word) (const unsigned char* mstr, int strlen, WORDINFO* word_info); int (*pos_first_char) (const unsigned char* mstr, int mstrlen); unsigned short (*conv_to_uc16) (const unsigned char* mchar, int len);} CHARSETOPS;typedef struct _FONTOPS{ int (*get_char_width) (LOGFONT* logfont, DEVFONT* devfont, const unsigned char* mchar, int len); int (*get_str_width) (LOGFONT* logfont, DEVFONT* devfont, const unsigned char* mstr, int n, int cExtra); int (*get_ave_width) (LOGFONT* logfont, DEVFONT* devfont); int (*get_max_width) (LOGFONT* logfont, DEVFONT* devfont); int (*get_font_height) (LOGFONT* logfont, DEVFONT* devfont); int (*get_font_size) (LOGFONT* logfont, DEVFONT* devfont, int expect); int (*get_font_ascent) (LOGFONT* logfont, DEVFONT* devfont); int (*get_font_descent) (LOGFONT* logfont, DEVFONT* devfont);/* TODO */// int (*get_font_ABC) (LOGFONT* logfont); size_t (*char_bitmap_size) (LOGFONT* logfont, DEVFONT* devfont, const unsigned char* mchar, int len); size_t (*max_bitmap_size) (LOGFONT* logfont, DEVFONT* devfont); void* (*get_char_bitmap) (LOGFONT* logfont, DEVFONT* devfont, const unsigned char* mchar, int len); void* (*get_char_pixmap) (LOGFONT* logfont, DEVFONT* devfont, const unsigned char* mchar, int len, int* pitch); /* Can be NULL */ void (*start_str_output) (LOGFONT* logfont, DEVFONT* devfont); /* Can be NULL */ int (*get_char_bbox) (LOGFONT* logfont, DEVFONT* devfont, const unsigned char* mchar, int len, int* px, int* py, int* pwidth, int* pheight); /* Can be NULL */ void (*get_char_advance) (LOGFONT* logfont, DEVFONT* devfont, int* px, int* py); /* Can be NULL */ DEVFONT* (*new_instance) (LOGFONT* logfont, DEVFONT* devfont, BOOL need_sbc_font); /* Can be NULL */ void (*delete_instance) (DEVFONT* devfont); /* Can be NULL */} FONTOPS;struct _DEVFONT{ char name [LEN_DEVFONT_NAME + 1]; DWORD style; FONTOPS* font_ops; CHARSETOPS* charset_ops; struct _DEVFONT* sbc_next; struct _DEVFONT* mbc_next; void* data;};#define SBC_DEVFONT_INFO(logfont) (logfont.sbc_devfont)#define MBC_DEVFONT_INFO(logfont) (logfont.mbc_devfont)#define SBC_DEVFONT_INFO_P(logfont) (logfont->sbc_devfont)#define MBC_DEVFONT_INFO_P(logfont) (logfont->mbc_devfont)/****** Color support *******************************************************//* System pixel definition */extern gal_pixel SysPixelIndex [];extern const RGB SysPixelColor [];#define PIXEL_invalid -1#define PIXEL_transparent SysPixelIndex[0]#define PIXEL_darkred SysPixelIndex[1] #define PIXEL_darkgreen SysPixelIndex[2]#define PIXEL_darkyellow SysPixelIndex[3] #define PIXEL_darkblue SysPixelIndex[4]#define PIXEL_darkmagenta SysPixelIndex[5]#define PIXEL_darkcyan SysPixelIndex[6]#define PIXEL_lightgray SysPixelIndex[7]#define PIXEL_darkgray SysPixelIndex[8] #define PIXEL_red SysPixelIndex[9]#define PIXEL_green SysPixelIndex[10]#define PIXEL_yellow SysPixelIndex[11]#define PIXEL_blue SysPixelIndex[12]#define PIXEL_magenta SysPixelIndex[13]
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -