📄 device.h
字号:
int pixtype; /* format of pixel value*/ int flags; /* device flags*/ void * addr; /* address of memory allocated (memdc or fb)*/ PSD (*Open)(PSD psd); void (*Close)(PSD psd); void (*GetScreenInfo)(PSD psd,PMWSCREENINFO psi); void (*SetPalette)(PSD psd,int first,int count,MWPALENTRY *pal); void (*DrawPixel)(PSD psd,MWCOORD x,MWCOORD y,MWPIXELVAL c); MWPIXELVAL (*ReadPixel)(PSD psd,MWCOORD x,MWCOORD y); void (*DrawHorzLine)(PSD psd,MWCOORD x1,MWCOORD x2,MWCOORD y, MWPIXELVAL c); void (*DrawVertLine)(PSD psd,MWCOORD x,MWCOORD y1,MWCOORD y2, MWPIXELVAL c); void (*FillRect)(PSD psd,MWCOORD x1,MWCOORD y1,MWCOORD x2,MWCOORD y2, MWPIXELVAL c); PMWCOREFONT builtin_fonts; /* *void (*DrawText)(PSD psd,MWCOORD x,MWCOORD y,const MWUCHAR *str, int count, MWPIXELVAL fg, PMWFONT pfont);***/ void (*Blit)(PSD destpsd,MWCOORD destx,MWCOORD desty,MWCOORD w, MWCOORD h,PSD srcpsd,MWCOORD srcx,MWCOORD srcy,long op); void (*PreSelect)(PSD psd); void (*DrawArea)(PSD psd, driver_gc_t *gc, int op); int (*SetIOPermissions)(PSD psd); PSD (*AllocateMemGC)(PSD psd); MWBOOL (*MapMemGC)(PSD mempsd,MWCOORD w,MWCOORD h,int planes,int bpp, int linelen,int size,void *addr); void (*FreeMemGC)(PSD mempsd); void (*StretchBlit)(PSD destpsd,MWCOORD destx,MWCOORD desty, MWCOORD destw,MWCOORD desth,PSD srcpsd,MWCOORD srcx, MWCOORD srcy,MWCOORD srcw,MWCOORD srch,long op); void (*SetPortrait)(PSD psd,int portraitmode); int portrait; /* screen portrait mode*/ PSUBDRIVER orgsubdriver; /* original subdriver for portrait modes*/ void (*StretchBlitEx) (PSD dstpsd, PSD srcpsd, MWCOORD dest_x_start, MWCOORD dest_y_start, MWCOORD width, MWCOORD height, int x_denominator, int y_denominator, int src_x_fraction, int src_y_fraction, int x_step_fraction, int y_step_fraction, long op);} SCREENDEVICE;/* PSD flags*/#define PSF_SCREEN 0x0001 /* screen device*/#define PSF_MEMORY 0x0002 /* memory device*/#define PSF_HAVEBLIT 0x0004 /* have bitblit*/#define PSF_HAVEOP_COPY 0x0008 /* psd->DrawArea can do area copy*/#define PSF_ADDRMALLOC 0x0010 /* psd->addr was malloc'd*/#define PSF_ADDRSHAREDMEM 0x0020 /* psd->addr is shared memory*//* Interface to Mouse Device Driver*/typedef struct _mousedevice { int (*Open)(struct _mousedevice *); void (*Close)(void); int (*GetButtonInfo)(void); void (*GetDefaultAccel)(int *pscale,int *pthresh); int (*Read)(MWCOORD *dx,MWCOORD *dy,MWCOORD *dz,int *bp); int (*Poll)(void); /* not required if have select()*/ int flags; /* raw, normal, transform flags*/} MOUSEDEVICE;#define MOUSE_NORMAL 0x0000 /* mouse in normal mode*/#define MOUSE_RAW 0x0001 /* mouse in raw mode*/#define MOUSE_TRANSFORM 0x0002 /* perform transform*//* Interface to Keyboard Device Driver*/typedef struct _kbddevice { int (*Open)(struct _kbddevice *pkd); void (*Close)(void); void (*GetModifierInfo)(MWKEYMOD *modifiers, MWKEYMOD *curmodifiers); int (*Read)(MWKEY *buf,MWKEYMOD *modifiers,MWSCANCODE *scancode); int (*Poll)(void); /* not required if have select()*/} KBDDEVICE;/* Clip areas*/#define CLIP_VISIBLE 0#define CLIP_INVISIBLE 1#define CLIP_PARTIAL 2/* static clip rectangle: drawing allowed if point within rectangle*/typedef struct { MWCOORD x; /* x coordinate of top left corner */ MWCOORD y; /* y coordinate of top left corner */ MWCOORD width; /* width of rectangle */ MWCOORD height; /* height of rectangle */} MWCLIPRECT;typedef struct { MWCOORD width; MWCOORD height; PSD psd;} MWTILE;#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif#define MWMIN(a,b) ((a) < (b) ? (a) : (b))#define MWMAX(a,b) ((a) > (b) ? (a) : (b))/* color and palette defines*/#define RGBDEF(r,g,b) {r, g, b}#define GETPALENTRY(pal,index) ((unsigned long)(pal[index].r |\ (pal[index].g << 8) | (pal[index].b << 16)))/*#define GETPALENTRY(pal,index) ((*(unsigned long *)&pal[index])&0x00ffffff)*/#define REDVALUE(rgb) ((rgb) & 0xff)#define GREENVALUE(rgb) (((rgb) >> 8) & 0xff)#define BLUEVALUE(rgb) (((rgb) >> 16) & 0xff)/* Truecolor color conversion and extraction macros*//* * Conversion from 8-bit RGB components to MWPIXELVAL *//* create 32 bit 8/8/8/8 format pixel (0xAARRGGBB) from RGB triplet*/#define RGB2PIXEL8888(r,g,b) \ (0xFF000000UL | ((r) << 16) | ((g) << 8) | (b))/* create 32 bit 8/8/8/8 format pixel (0xAARRGGBB) from ARGB triplet*/#define ARGB2PIXEL8888(a,r,g,b) \ (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))/* create 24 bit 8/8/8 format pixel (0x00RRGGBB) from RGB triplet*/#define RGB2PIXEL888(r,g,b) \ (((r) << 16) | ((g) << 8) | (b))/* create 16 bit 5/6/5 format pixel from RGB triplet */#define RGB2PIXEL565(r,g,b) \ ((((r) & 0xf8) << 8) | (((g) & 0xfc) << 3) | (((b) & 0xf8) >> 3))/* create 16 bit 5/5/5 format pixel from RGB triplet */#define RGB2PIXEL555(r,g,b) \ ((((r) & 0xf8) << 7) | (((g) & 0xf8) << 2) | (((b) & 0xf8) >> 3))/* create 8 bit 3/3/2 format pixel from RGB triplet*/#define RGB2PIXEL332(r,g,b) \ (((r) & 0xe0) | (((g) & 0xe0) >> 3) | (((b) & 0xc0) >> 6))/* * Conversion from MWCOLORVAL to MWPIXELVAL *//* create 32 bit 8/8/8/8 format pixel from ARGB colorval (0xAABBGGRR)*//* In this format, alpha is preserved. */#define COLOR2PIXEL8888(c) \ ((((c) & 0xff) << 16) | ((c) & 0xff00ff00ul) | (((c) & 0xff0000) >> 16))/* create 24 bit 8/8/8 format pixel from RGB colorval (0x00BBGGRR)*//* In this format, alpha is ignored. */#define COLOR2PIXEL888(c) \ ((((c) & 0xff) << 16) | ((c) & 0xff00) | (((c) & 0xff0000) >> 16))/* create 16 bit 5/6/5 format pixel from RGB colorval (0x00BBGGRR)*//* In this format, alpha is ignored. */#define COLOR2PIXEL565(c) \ ((((c) & 0xf8) << 8) | (((c) & 0xfc00) >> 5) | (((c) & 0xf80000) >> 19))/* create 16 bit 5/5/5 format pixel from RGB colorval (0x00BBGGRR)*//* In this format, alpha is ignored. */#define COLOR2PIXEL555(c) \ ((((c) & 0xf8) << 7) | (((c) & 0xf800) >> 6) | (((c) & 0xf80000) >> 19))/* create 8 bit 3/3/2 format pixel from RGB colorval (0x00BBGGRR)*//* In this format, alpha is ignored. */#define COLOR2PIXEL332(c) \ (((c) & 0xe0) | (((c) & 0xe000) >> 11) | (((c) & 0xc00000) >> 22))/* * Conversion from MWPIXELVAL to red, green or blue components *//* return 8/8/8/8 bit a, r, g or b component of 32 bit pixelval*/#define PIXEL8888ALPHA(pixelval) (((pixelval) >> 24) & 0xff)#define PIXEL8888RED(pixelval) (((pixelval) >> 16) & 0xff)#define PIXEL8888GREEN(pixelval) (((pixelval) >> 8) & 0xff)#define PIXEL8888BLUE(pixelval) ((pixelval) & 0xff)/* return 8/8/8 bit r, g or b component of 24 bit pixelval*/#define PIXEL888RED(pixelval) (((pixelval) >> 16) & 0xff)#define PIXEL888GREEN(pixelval) (((pixelval) >> 8) & 0xff)#define PIXEL888BLUE(pixelval) ((pixelval) & 0xff)/* return 5/6/5 bit r, g or b component of 16 bit pixelval*/#define PIXEL565RED(pixelval) (((pixelval) >> 11) & 0x1f)#define PIXEL565GREEN(pixelval) (((pixelval) >> 5) & 0x3f)#define PIXEL565BLUE(pixelval) ((pixelval) & 0x1f)/* return 5/5/5 bit r, g or b component of 16 bit pixelval*/#define PIXEL555RED(pixelval) (((pixelval) >> 10) & 0x1f)#define PIXEL555GREEN(pixelval) (((pixelval) >> 5) & 0x1f)#define PIXEL555BLUE(pixelval) ((pixelval) & 0x1f)/* return 3/3/2 bit r, g or b component of 8 bit pixelval*/#define PIXEL332RED(pixelval) (((pixelval) >> 5) & 0x07)#define PIXEL332GREEN(pixelval) (((pixelval) >> 2) & 0x07)#define PIXEL332BLUE(pixelval) ((pixelval) & 0x03)/* * Conversion from MWPIXELVAL to normal 8-bit red, green or blue components *//* return 8/8/8/8 bit a, r, g or b component of 32 bit pixelval*/#define PIXEL8888ALPHA8(pixelval) (((pixelval) >> 24) & 0xff)#define PIXEL8888RED8(pixelval) (((pixelval) >> 16) & 0xff)#define PIXEL8888GREEN8(pixelval) (((pixelval) >> 8) & 0xff)#define PIXEL8888BLUE8(pixelval) ((pixelval) & 0xff)/* return 8 bit r, g or b component of 8/8/8 24 bit pixelval*/#define PIXEL888RED8(pixelval) (((pixelval) >> 16) & 0xff)#define PIXEL888GREEN8(pixelval) (((pixelval) >> 8) & 0xff)#define PIXEL888BLUE8(pixelval) ((pixelval) & 0xff)/* return 8 bit r, g or b component of 5/6/5 16 bit pixelval*/#define PIXEL565RED8(pixelval) (((pixelval) >> 8) & 0xf8)#define PIXEL565GREEN8(pixelval) (((pixelval) >> 3) & 0xfc)#define PIXEL565BLUE8(pixelval) (((pixelval) << 3) & 0xf8)/* return 8 bit r, g or b component of 5/5/5 16 bit pixelval*/#define PIXEL555RED8(pixelval) (((pixelval) >> 7) & 0xf8)#define PIXEL555GREEN8(pixelval) (((pixelval) >> 2) & 0xf8)#define PIXEL555BLUE8(pixelval) (((pixelval) << 3) & 0xf8)/* return 8 bit r, g or b component of 3/3/2 8 bit pixelval*/#define PIXEL332RED8(pixelval) ( (pixelval) & 0xe0)#define PIXEL332GREEN8(pixelval) (((pixelval) << 3) & 0xe0)#define PIXEL332BLUE8(pixelval) (((pixelval) << 6) & 0xc0)/* * Conversion from MWPIXELVAL to *32-bit* red, green or blue components * (i.e. PIXEL888RED32(x) == (PIXEL888RED8(x) << 24). These macros optimize * out the extra shift.) *//* return 32 bit a, r, g or b component of 8/8/8/8 32 bit pixelval*/#define PIXEL8888ALPHA32(pixelval) ( ((unsigned long)(pixelval)) & 0xff000000UL)#define PIXEL8888RED32(pixelval) ((((unsigned long)(pixelval)) << 8) & 0xff000000UL)#define PIXEL8888GREEN32(pixelval) ((((unsigned long)(pixelval)) << 16) & 0xff000000UL)#define PIXEL8888BLUE32(pixelval) ((((unsigned long)(pixelval)) << 24) & 0xff000000UL)/* return 32 bit r, g or b component of 8/8/8 24 bit pixelval*/#define PIXEL888RED32(pixelval) ((((unsigned long)(pixelval)) << 8) & 0xff000000UL)#define PIXEL888GREEN32(pixelval) ((((unsigned long)(pixelval)) << 16) & 0xff000000UL)#define PIXEL888BLUE32(pixelval) ((((unsigned long)(pixelval)) << 24) & 0xff000000UL)/* return 32 bit r, g or b component of 5/6/5 16 bit pixelval*/#define PIXEL565RED32(pixelval) ((((unsigned long)(pixelval)) << 16) & 0xf8000000UL)#define PIXEL565GREEN32(pixelval) ((((unsigned long)(pixelval)) << 21) & 0xfc000000UL)#define PIXEL565BLUE32(pixelval) ((((unsigned long)(pixelval)) << 27) & 0xf8000000UL)/* return 32 bit r, g or b component of 5/5/5 16 bit pixelval*/#define PIXEL555RED32(pixelval) ((((unsigned long)(pixelval)) << 17) & 0xf8000000UL)#define PIXEL555GREEN32(pixelval) ((((unsigned long)(pixelval)) << 22) & 0xf8000000UL)#define PIXEL555BLUE32(pixelval) ((((unsigned long)(pixelval)) << 27) & 0xf8000000UL)/* return 32 bit r, g or b component of 3/3/2 8 bit pixelval*/#define PIXEL332RED32(pixelval) ((((unsigned long)(pixelval)) << 24) & 0xe0000000UL)#define PIXEL332GREEN32(pixelval) ((((unsigned long)(pixelval)) << 27) & 0xe0000000UL)#define PIXEL332BLUE32(pixelval) ((((unsigned long)(pixelval)) << 30) & 0xc0000000UL)/* * Conversion from MWPIXELVAL to MWCOLORVAL *//* create RGB colorval (0xAABBGGRR) from 8/8/8/8 format pixel*/#define PIXEL8888TOCOLORVAL(p) \ ((((p) & 0xff0000ul) >> 16) | ((p) & 0xff00ff00ul) | (((p) & 0xffu) << 16) | 0xff000000ul)/* create RGB colorval (0xAABBGGRR) from 8/8/8 format pixel*/#define PIXEL888TOCOLORVAL(p) \ (0xff000000ul | (((p) & 0xff0000ul) >> 16) | ((p) & 0xff00u) | (((p) & 0xffu) << 16) | 0xff000000ul)/* create RGB colorval (0xAABBGGRR) from 5/6/5 format pixel*/#define PIXEL565TOCOLORVAL(p) \ (0xff000000ul | (((p) & 0xf800u) >> 8) | (((p) & 0x07e0u) << 5) | (((p) & 0x1ful) << 19) | 0xff000000ul)#define PIXEL555TOCOLORVAL(p) \ (0xff000000ul | (((p) & 0x7c00u) >> 7) | (((p) & 0x03e0u) << 6) | (((p) & 0x1ful) << 19) | 0xff000000ul)/* create RGB colorval (0xAABBGGRR) from 3/3/2 format pixel*/#define PIXEL332TOCOLORVAL(p) \ (0xff000000ul | (((p) & 0xe0u)) | (((p) & 0x1cu) << 11) | (((p) & 0x03ul) << 19) | 0xff000000ul)#if MWPIXEL_FORMAT == MWPF_TRUECOLOR8888#define RGB2PIXEL(r,g,b) RGB2PIXEL8888(r,g,b)#define COLORVALTOPIXELVAL(c) COLOR2PIXEL8888(c)#define PIXELVALTOCOLORVAL(p) PIXEL8888TOCOLORVAL(p)#define PIXEL2RED(p) PIXEL8888RED(p)#define PIXEL2GREEN(p) PIXEL8888GREEN(p)#define PIXEL2BLUE(p) PIXEL8888BLUE(p)#endif#if (MWPIXEL_FORMAT == MWPF_TRUECOLOR888) || (MWPIXEL_FORMAT == MWPF_TRUECOLOR0888)#define RGB2PIXEL(r,g,b) RGB2PIXEL888(r,g,b)#define COLORVALTOPIXELVAL(c) COLOR2PIXEL888(c)#define PIXELVALTOCOLORVAL(p) PIXEL888TOCOLORVAL(p)#define PIXEL2RED(p) PIXEL888RED(p)#define PIXEL2GREEN(p) PIXEL888GREEN(p)#define PIXEL2BLUE(p) PIXEL888BLUE(p)#endif#if MWPIXEL_FORMAT == MWPF_TRUECOLOR565#define RGB2PIXEL(r,g,b) RGB2PIXEL565(r,g,b)#define COLORVALTOPIXELVAL(c) COLOR2PIXEL565(c)#define PIXELVALTOCOLORVAL(p) PIXEL565TOCOLORVAL(p)#define PIXEL2RED(p) PIXEL565RED(p)#define PIXEL2GREEN(p) PIXEL565GREEN(p)#define PIXEL2BLUE(p) PIXEL565BLUE(p)#endif#if MWPIXEL_FORMAT == MWPF_TRUECOLOR555#define RGB2PIXEL(r,g,b) RGB2PIXEL555(r,g,b)#define COLORVALTOPIXELVAL(c) COLOR2PIXEL555(c)#define PIXELVALTOCOLORVAL(p) PIXEL555TOCOLORVAL(p)#define PIXEL2RED(p) PIXEL555RED(p)#define PIXEL2GREEN(p) PIXEL555GREEN(p)#define PIXEL2BLUE(p) PIXEL555BLUE(p)#endif#if MWPIXEL_FORMAT == MWPF_TRUECOLOR332#define RGB2PIXEL(r,g,b) RGB2PIXEL332(r,g,b)#define COLORVALTOPIXELVAL(c) COLOR2PIXEL332(c)#define PIXELVALTOCOLORVAL(p) PIXEL332TOCOLORVAL(p)#define PIXEL2RED(p) PIXEL332RED(p)#define PIXEL2GREEN(p) PIXEL332GREEN(p)#define PIXEL2BLUE(p) PIXEL332BLUE(p)#endif#if 0000/* colors assumed in first 16 palette entries*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -