?? device.h
字號:
#define PIXEL233BLUE(pixelval) (((pixelval) >> 6) & 0x03)
/*
* Conversion from MWPIXELVAL to MWCOLORVAL
*/
/* create RGB colorval (0x00BBGGRR) from 8/8/8 format pixel*/
#define PIXEL888TOCOLORVAL(p) \
((((p) & 0xff0000) >> 16) | ((p) & 0xff00) | (((p) & 0xff) << 16))
/* create RGB colorval (0x00BBGGRR) from 5/6/5 format pixel*/
#define PIXEL565TOCOLORVAL(p) \
((((p) & 0xf800) >> 8) | (((p) & 0x07e0) << 5) | (((p) & 0x1f) << 19))
#define PIXEL555TOCOLORVAL(p) \
((((p) & 0x7c00) >> 7) | (((p) & 0x03e0) << 6) | (((p) & 0x1f) << 19))
/* create RGB colorval (0x00BBGGRR) from 3/3/2 format pixel*/
#define PIXEL332TOCOLORVAL(p) \
((((p) & 0xe0)) | (((p) & 0x1c) << 11) | (((p) & 0x03) << 19))
/* create RGB colorval (0x00BBGGRR) from 2/3/3 format pixel*/
#define PIXEL233TOCOLORVAL(p) \
(((p) & 0x07) | (((p) & 0x38) << 5) | (((p) & 0xC0) << 14))
#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 MWPIXEL_FORMAT == MWPF_TRUECOLOR233
#define RGB2PIXEL(r,g,b) RGB2PIXEL233(r,g,b)
#define COLORVALTOPIXELVAL(c) COLOR2PIXEL233(c)
#define PIXELVALTOCOLORVAL(p) PIXEL233TOCOLORVAL(p)
#define PIXEL2RED(p) PIXEL233RED(p)
#define PIXEL2GREEN(p) PIXEL233GREEN(p)
#define PIXEL2BLUE(p) PIXEL233BLUE(p)
#endif
/* Alpha blend two pixels using 8-bit alpha */
/* FIXME this will be quite a bit faster as an inlined function */
#define ALPHAPIXELRED(pixelvalsrc, pixelvaldest, alpha) \
(unsigned char)((((PIXEL2RED(pixelvalsrc) - PIXEL2RED(pixelvaldest))\
* alpha) >> 8) + PIXEL2RED(pixelvaldest))
#define ALPHAPIXELGREEN(pixelvalsrc, pixelvaldest, alpha) \
(unsigned char)((((PIXEL2GREEN(pixelvalsrc)-PIXEL2GREEN(pixelvaldest))\
* alpha) >> 8) + PIXEL2GREEN(pixelvaldest))
#define ALPHAPIXELBLUE(pixelvalsrc, pixelvaldest, alpha) \
(unsigned char)((((PIXEL2BLUE(pixelvalsrc) - PIXEL2BLUE(pixelvaldest))\
* alpha) >> 8) + PIXEL2BLUE(pixelvaldest))
#if 0000
/* colors assumed in first 16 palette entries*/
/* note: don't use palette indices if the palette may
* be reloaded. Use the RGB values instead.
*/
#define BLACK PALINDEX(0) /* 0, 0, 0*/
#define BLUE PALINDEX(1)
#define GREEN PALINDEX(2)
#define CYAN PALINDEX(3)
#define RED PALINDEX(4)
#define MAGENTA PALINDEX(5)
#define BROWN PALINDEX(6)
#define LTGRAY PALINDEX(7) /* 192, 192, 192*/
#define GRAY PALINDEX(8) /* 128, 128, 128*/
#define LTBLUE PALINDEX(9)
#define LTGREEN PALINDEX(10)
#define LTCYAN PALINDEX(11)
#define LTRED PALINDEX(12)
#define LTMAGENTA PALINDEX(13)
#define YELLOW PALINDEX(14)
#define WHITE PALINDEX(15) /* 255, 255, 255*/
#endif
/* GdMakePaletteConversionTable bLoadType types*/
#define LOADPALETTE 1 /* load image palette into system palette*/
#define MERGEPALETTE 2 /* merge image palette into system palette*/
/* entry points*/
/* devdraw.c*/
PSD GdOpenScreen(void);
void GdCloseScreen(PSD psd);
int GdSetPortraitMode(PSD psd, int portraitmode);
int GdSetMode(int mode);
MWBOOL GdSetUseBackground(MWBOOL flag);
MWPIXELVAL GdSetForeground(MWPIXELVAL fg);
MWPIXELVAL GdSetBackground(MWPIXELVAL bg);
void GdResetPalette(void);
void GdSetPalette(PSD psd,int first, int count, MWPALENTRY *palette);
int GdGetPalette(PSD psd,int first, int count, MWPALENTRY *palette);
MWPIXELVAL GdFindColor(MWCOLORVAL c);
MWPIXELVAL GdFindNearestColor(MWPALENTRY *pal, int size, MWCOLORVAL cr);
int GdCaptureScreen(char *path);
void GdGetScreenInfo(PSD psd,PMWSCREENINFO psi);
void GdPoint(PSD psd,MWCOORD x, MWCOORD y);
void GdLine(PSD psd,MWCOORD x1,MWCOORD y1,MWCOORD x2,MWCOORD y2,
MWBOOL bDrawLastPoint);
void GdRect(PSD psd,MWCOORD x, MWCOORD y, MWCOORD width, MWCOORD height);
void GdFillRect(PSD psd,MWCOORD x, MWCOORD y, MWCOORD width, MWCOORD height);
void GdBitmap(PSD psd,MWCOORD x,MWCOORD y,MWCOORD width,MWCOORD height,
MWIMAGEBITS *imagebits);
MWBOOL GdColorInPalette(MWCOLORVAL cr,MWPALENTRY *palette,int palsize);
void GdMakePaletteConversionTable(PSD psd,MWPALENTRY *palette,int palsize,
MWPIXELVAL *convtable,int fLoadType);
void GdDrawImage(PSD psd,MWCOORD x, MWCOORD y, PMWIMAGEHDR pimage);
void GdPoly(PSD psd,int count, MWPOINT *points);
void GdFillPoly(PSD psd,int count, MWPOINT *points);
void GdReadArea(PSD psd,MWCOORD x,MWCOORD y,MWCOORD width,MWCOORD height,
MWPIXELVAL *pixels);
void GdArea(PSD psd,MWCOORD x,MWCOORD y,MWCOORD width,MWCOORD height,
void *pixels, int pixtype);
void GdTranslateArea(MWCOORD width, MWCOORD height, void *in, int inpixtype,
MWCOORD inpitch, void *out, int outpixtype, int outpitch);
void GdCopyArea(PSD psd,MWCOORD srcx,MWCOORD srcy,MWCOORD width,
MWCOORD height, MWCOORD destx, MWCOORD desty);
void GdBlit(PSD dstpsd, MWCOORD dstx, MWCOORD dsty, MWCOORD width,
MWCOORD height,PSD srcpsd,MWCOORD srcx,MWCOORD srcy,long rop);
void GdStretchBlit(PSD dstpsd, MWCOORD dstx, MWCOORD dsty, MWCOORD dstw,
MWCOORD dsth, PSD srcpsd, MWCOORD srcx, MWCOORD srcy,
MWCOORD srcw, MWCOORD srch, long rop);
int GdCalcMemGCAlloc(PSD psd, unsigned int width, unsigned int height,
int planes, int bpp, int *size, int *linelen);
extern SCREENDEVICE scrdev;
/* devarc.c*/
/* requires float*/
void GdArcAngle(PSD psd, MWCOORD x0, MWCOORD y0, MWCOORD rx, MWCOORD ry,
MWCOORD angle1, MWCOORD angle2, int type);
/* integer only*/
void GdArc(PSD psd, MWCOORD x0, MWCOORD y0, MWCOORD rx, MWCOORD ry,
MWCOORD ax, MWCOORD ay, MWCOORD bx, MWCOORD by, int type);
void GdEllipse(PSD psd,MWCOORD x, MWCOORD y, MWCOORD rx, MWCOORD ry,
MWBOOL fill);
/* devfont.c*/
void GdClearFontList(void);
int GdAddFont(char *fndry, char *family, char *fontname, PMWLOGFONT lf,
unsigned int flags);
PMWFONT GdSetFont(PMWFONT pfont);
PMWFONT GdCreateFont(PSD psd, const char *name, MWCOORD height,
const PMWLOGFONT plogfont);
MWCOORD GdSetFontSize(PMWFONT pfont, MWCOORD fontsize);
void GdGetFontList(MWFONTLIST ***list, int *num);
void GdFreeFontList(MWFONTLIST ***list, int num);
int GdSetFontRotation(PMWFONT pfont, int tenthdegrees);
int GdSetFontAttr(PMWFONT pfont, int setflags, int clrflags);
void GdDestroyFont(PMWFONT pfont);
MWBOOL GdGetFontInfo(PMWFONT pfont, PMWFONTINFO pfontinfo);
int GdConvertEncoding(const void *istr, int iflags, int cc, void *ostr,
int oflags);
void GdGetTextSize(PMWFONT pfont, const void *str, int cc, MWCOORD *pwidth,
MWCOORD *pheight, MWCOORD *pbase, int flags);
int GdGetTextSizeEx(PMWFONT pfont, const void *str, int cc,
int nMaxExtent, int *lpnFit, int *alpDx, MWCOORD *pwidth,
MWCOORD *pheight, MWCOORD *pbase, int flags);
void GdText(PSD psd,MWCOORD x,MWCOORD y,const void *str,int count,int flags);
/* devclip1.c*/
void GdSetClipRects(PSD psd,int count,MWCLIPRECT *table);
MWBOOL GdClipPoint(PSD psd,MWCOORD x,MWCOORD y);
int GdClipArea(PSD psd,MWCOORD x1, MWCOORD y1, MWCOORD x2, MWCOORD y2);
extern MWCOORD clipminx, clipminy, clipmaxx, clipmaxy;
/* devclip2.c*/
void GdSetClipRegion(PSD psd, MWCLIPREGION *reg);
/* devrgn.c - multi-rectangle region entry points*/
MWBOOL GdPtInRegion(MWCLIPREGION *rgn, MWCOORD x, MWCOORD y);
int GdRectInRegion(MWCLIPREGION *rgn, const MWRECT *rect);
MWBOOL GdEqualRegion(MWCLIPREGION *r1, MWCLIPREGION *r2);
MWBOOL GdEmptyRegion(MWCLIPREGION *rgn);
MWCLIPREGION *GdAllocRegion(void);
MWCLIPREGION *GdAllocRectRegion(MWCOORD left,MWCOORD top,MWCOORD right,MWCOORD bottom);
MWCLIPREGION *GdAllocRectRegionIndirect(MWRECT *prc);
void GdSetRectRegion(MWCLIPREGION *rgn, MWCOORD left, MWCOORD top,
MWCOORD right, MWCOORD bottom);
void GdSetRectRegionIndirect(MWCLIPREGION *rgn, MWRECT *prc);
void GdDestroyRegion(MWCLIPREGION *rgn);
void GdOffsetRegion(MWCLIPREGION *rgn, MWCOORD x, MWCOORD y);
int GdGetRegionBox(MWCLIPREGION *rgn, MWRECT *prc);
void GdUnionRectWithRegion(const MWRECT *rect, MWCLIPREGION *rgn);
void GdSubtractRectFromRegion(const MWRECT *rect, MWCLIPREGION *rgn);
void GdCopyRegion(MWCLIPREGION *d, MWCLIPREGION *s);
void GdIntersectRegion(MWCLIPREGION *d, MWCLIPREGION *s1, MWCLIPREGION *s2);
void GdUnionRegion(MWCLIPREGION *d, MWCLIPREGION *s1, MWCLIPREGION *s2);
void GdSubtractRegion(MWCLIPREGION *d, MWCLIPREGION *s1, MWCLIPREGION *s2);
void GdXorRegion(MWCLIPREGION *d, MWCLIPREGION *s1, MWCLIPREGION *s2);
/* devrgn2.c*/
MWCLIPREGION *GdAllocPolygonRegion(MWPOINT *points, int count, int mode);
MWCLIPREGION *GdAllocPolyPolygonRegion(MWPOINT *points, int *count,
int nbpolygons, int mode);
/* devmouse.c*/
int GdOpenMouse(void);
void GdCloseMouse(void);
void GdGetButtonInfo(int *buttons);
void GdRestrictMouse(MWCOORD newminx,MWCOORD newminy,MWCOORD newmaxx,
MWCOORD newmaxy);
void GdSetAccelMouse(int newthresh, int newscale);
void GdMoveMouse(MWCOORD newx, MWCOORD newy);
int GdReadMouse(MWCOORD *px, MWCOORD *py, int *pb);
void GdMoveCursor(MWCOORD x, MWCOORD y);
MWBOOL GdGetCursorPos(MWCOORD *px, MWCOORD *py);
void GdSetCursor(PMWCURSOR pcursor);
int GdShowCursor(PSD psd);
int GdHideCursor(PSD psd);
void GdCheckCursor(PSD psd,MWCOORD x1,MWCOORD y1,MWCOORD x2,MWCOORD y2);
void GdFixCursor(PSD psd);
extern MOUSEDEVICE mousedev;
/* devkbd.c*/
int GdOpenKeyboard(void);
void GdCloseKeyboard(void);
void GdGetModifierInfo(MWKEYMOD *modifiers, MWKEYMOD *curmodifiers);
int GdReadKeyboard(MWKEY *buf, MWKEYMOD *modifiers, MWSCANCODE *scancode);
extern KBDDEVICE kbddev;
/* devimage.c */
int GdLoadImageFromBuffer(PSD psd, void *buffer, int size, int flags);
void GdDrawImageFromBuffer(PSD psd, MWCOORD x, MWCOORD y, MWCOORD width,
MWCOORD height, void *buffer, int size, int flags);
void GdDrawImageFromFile(PSD psd, MWCOORD x, MWCOORD y, MWCOORD width,
MWCOORD height, char *path, int flags);
int GdLoadImageFromFile(PSD psd, char *path, int flags);
void GdDrawImageToFit(PSD psd, MWCOORD x, MWCOORD y, MWCOORD width,
MWCOORD height, int id);
void GdFreeImage(int id);
MWBOOL GdGetImageInfo(int id, PMWIMAGEINFO pii);
void GdStretchImage(PMWIMAGEHDR src, MWCLIPRECT *srcrect, PMWIMAGEHDR dst,
MWCLIPRECT *dstrect);
/* devlist.c*/
/* field offset*/
#define MWITEM_OFFSET(type, field) ((long)&(((type *)0)->field))
void * GdItemAlloc(unsigned int size);
void GdListAdd(PMWLISTHEAD pHead,PMWLIST pItem);
void GdListInsert(PMWLISTHEAD pHead,PMWLIST pItem);
void GdListRemove(PMWLISTHEAD pHead,PMWLIST pItem);
#define GdItemNew(type) ((type *)GdItemAlloc(sizeof(type)))
#define GdItemFree(ptr) free((void *)ptr)
/* return base item address from list ptr*/
#define GdItemAddr(p,type,list) ((type *)((long)p - MWITEM_OFFSET(type,list)))
#if UNIX || DOS_DJGPP
#include <sys/time.h>
typedef void (*MWTIMERCB)(void *);
#define MWTIMER_ONESHOT 0
#define MWTIMER_PERIODIC 1
typedef struct mw_timer MWTIMER;
struct mw_timer {
struct timeval timeout;
MWTIMERCB callback;
void *arg;
MWTIMER *next;
MWTIMER *prev;
int type; /* MWTIMER_ONESHOT or MWTIMER_PERIODIC */
MWTIMEOUT period;
};
MWTIMER *GdAddTimer(MWTIMEOUT timeout, MWTIMERCB callback, void *arg);
MWTIMER *GdAddPeriodicTimer(MWTIMEOUT timeout, MWTIMERCB callback, void *arg);
void GdDestroyTimer(MWTIMER *timer);
MWTIMER *GdFindTimer(void *arg);
MWBOOL GdGetNextTimeout(struct timeval *tv, MWTIMEOUT timeout);
MWBOOL GdTimeout(void);
#endif
/* error.c*/
int GdError(const char *format, ...);
int GdErrorNull(const char *format, ...); /* doesn't print msgs */
#ifdef USE_ALLOCA
/* alloca() is available, so use it for better performance */
#define ALLOCA(size) alloca(size)
#define FREEA(pmem)
#else
/* no alloca(), so use malloc()/free() instead */
#define ALLOCA(size) malloc(size)
#define FREEA(pmem) free(pmem)
#endif
/* no assert() in MSDOS or ELKS...*/
#if MSDOS | ELKS
#undef assert
#define assert(x)
#endif
/* RTEMS requires rtems_main()*/
#if __rtems__
#define main rtems_main
#endif
#if !_MINIX
#ifndef __rtems__
#define HAVESELECT 1 /* has select system call*/
#endif
#endif
#endif /*_DEVICE_H*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -