📄 nano-x.h
字号:
extern char *nxErrorStrings[];/* Public graphics routines. */void GrFlush(void);int GrOpen(void);void GrClose(void);void GrDelay(GR_TIMEOUT msecs);void GrGetScreenInfo(GR_SCREEN_INFO *sip);GR_COLOR GrGetSysColor(int index);GR_WINDOW_ID GrNewWindow(GR_WINDOW_ID parent, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, GR_SIZE bordersize, GR_COLOR background, GR_COLOR bordercolor);GR_WINDOW_ID GrNewPixmap(GR_SIZE width, GR_SIZE height, void *pixels);GR_WINDOW_ID GrNewInputWindow(GR_WINDOW_ID parent, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);void GrDestroyWindow(GR_WINDOW_ID wid);GR_GC_ID GrNewGC(void);GR_GC_ID GrCopyGC(GR_GC_ID gc);void GrGetGCInfo(GR_GC_ID gc, GR_GC_INFO *gcip);void GrDestroyGC(GR_GC_ID gc);GR_REGION_ID GrNewRegion(void);GR_REGION_ID GrNewBitmapRegion(GR_BITMAP *bitmap, GR_SIZE width, GR_SIZE height);GR_REGION_ID GrNewPolygonRegion(int mode, GR_COUNT count, GR_POINT *points);void GrDestroyRegion(GR_REGION_ID region);void GrUnionRectWithRegion(GR_REGION_ID region, GR_RECT *rect);void GrUnionRegion(GR_REGION_ID dst_rgn, GR_REGION_ID src_rgn1, GR_REGION_ID src_rgn2);void GrIntersectRegion(GR_REGION_ID dst_rgn, GR_REGION_ID src_rgn1, GR_REGION_ID src_rgn2);void GrSubtractRegion(GR_REGION_ID dst_rgn, GR_REGION_ID src_rgn1, GR_REGION_ID src_rgn2);void GrXorRegion(GR_REGION_ID dst_rgn, GR_REGION_ID src_rgn1, GR_REGION_ID src_rgn2);void GrSetGCRegion(GR_GC_ID gc, GR_REGION_ID region);void GrSetGCClipOrigin(GR_GC_ID gc, int x, int y);GR_BOOL GrPointInRegion(GR_REGION_ID region, GR_COORD x, GR_COORD y);int GrRectInRegion(GR_REGION_ID region, GR_COORD x, GR_COORD y, GR_COORD w, GR_COORD h);GR_BOOL GrEmptyRegion(GR_REGION_ID region);GR_BOOL GrEqualRegion(GR_REGION_ID rgn1, GR_REGION_ID rgn2);void GrOffsetRegion(GR_REGION_ID region, GR_SIZE dx, GR_SIZE dy);int GrGetRegionBox(GR_REGION_ID region, GR_RECT *rect);void GrMapWindow(GR_WINDOW_ID wid);void GrUnmapWindow(GR_WINDOW_ID wid);void GrRaiseWindow(GR_WINDOW_ID wid);void GrLowerWindow(GR_WINDOW_ID wid);void GrMoveWindow(GR_WINDOW_ID wid, GR_COORD x, GR_COORD y);void GrResizeWindow(GR_WINDOW_ID wid, GR_SIZE width, GR_SIZE height);void GrReparentWindow(GR_WINDOW_ID wid, GR_WINDOW_ID pwid, GR_COORD x, GR_COORD y);void GrGetWindowInfo(GR_WINDOW_ID wid, GR_WINDOW_INFO *infoptr);void GrSetWMProperties(GR_WINDOW_ID wid, GR_WM_PROPERTIES *props);void GrGetWMProperties(GR_WINDOW_ID wid, GR_WM_PROPERTIES *props);GR_FONT_ID GrCreateFont(GR_CHAR *name, GR_COORD height, GR_LOGFONT *plogfont);GR_FONT_ID GrCreateFontFromBuffer(const void *buffer, unsigned length, const char *format, GR_COORD height);GR_FONT_ID GrCopyFont(GR_FONT_ID fontid, GR_COORD height);void GrGetFontList(GR_FONTLIST ***fonts, int *numfonts);void GrFreeFontList(GR_FONTLIST ***fonts, int numfonts);void GrSetFontSize(GR_FONT_ID fontid, GR_COORD size);void GrSetFontRotation(GR_FONT_ID fontid, int tenthsdegrees);void GrSetFontAttr(GR_FONT_ID fontid, int setflags, int clrflags);void GrDestroyFont(GR_FONT_ID fontid);void GrGetFontInfo(GR_FONT_ID font, GR_FONT_INFO *fip);GR_WINDOW_ID GrGetFocus(void);void GrSetFocus(GR_WINDOW_ID wid);void GrClearArea(GR_WINDOW_ID wid, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, GR_BOOL exposeflag);void GrSelectEvents(GR_WINDOW_ID wid, GR_EVENT_MASK eventmask);void GrGetNextEvent(GR_EVENT *ep);int GrGetTypedEvent(GR_WINDOW_ID wid, GR_EVENT_MASK mask, GR_UPDATE_TYPE update, GR_EVENT *ep, GR_BOOL block);typedef GR_BOOL (*GR_TYPED_EVENT_CALLBACK)(GR_WINDOW_ID, GR_EVENT_MASK, GR_UPDATE_TYPE, GR_EVENT *, void *);int GrGetTypedEventPred(GR_WINDOW_ID wid, GR_EVENT_MASK mask, GR_UPDATE_TYPE update, GR_EVENT * ep, GR_BOOL block, GR_TYPED_EVENT_CALLBACK matchfn, void *arg);void GrGetNextEventTimeout(GR_EVENT *ep, GR_TIMEOUT timeout);void GrCheckNextEvent(GR_EVENT *ep);int GrPeekEvent(GR_EVENT *ep);void GrPeekWaitEvent(GR_EVENT *ep);void GrLine(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x1, GR_COORD y1, GR_COORD x2, GR_COORD y2);void GrPoint(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y);void GrPoints(GR_DRAW_ID id, GR_GC_ID gc, GR_COUNT count, GR_POINT *pointtable);void GrRect(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);void GrFillRect(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);void GrPoly(GR_DRAW_ID id, GR_GC_ID gc, GR_COUNT count, GR_POINT *pointtable);void GrFillPoly(GR_DRAW_ID id, GR_GC_ID gc, GR_COUNT count, GR_POINT *pointtable);void GrEllipse(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE rx, GR_SIZE ry);void GrFillEllipse(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE rx, GR_SIZE ry);void GrArc(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE rx, GR_SIZE ry, GR_COORD ax, GR_COORD ay, GR_COORD bx, GR_COORD by, int type);void GrArcAngle(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE rx, GR_SIZE ry, GR_COORD angle1, GR_COORD angle2, int type); /* floating point required*/void GrSetGCForeground(GR_GC_ID gc, GR_COLOR foreground);void GrSetGCForegroundPixelVal(GR_GC_ID gc, GR_PIXELVAL foreground);void GrSetGCBackground(GR_GC_ID gc, GR_COLOR background);void GrSetGCBackgroundPixelVal(GR_GC_ID gc, GR_PIXELVAL background);void GrSetGCUseBackground(GR_GC_ID gc, GR_BOOL flag);void GrSetGCMode(GR_GC_ID gc, int mode);void GrSetGCLineAttributes(GR_GC_ID, int);void GrSetGCDash(GR_GC_ID, char *, int);void GrSetGCFillMode(GR_GC_ID, int);void GrSetGCStipple(GR_GC_ID, GR_BITMAP *, GR_SIZE, GR_SIZE);void GrSetGCTile(GR_GC_ID, GR_WINDOW_ID, GR_SIZE, GR_SIZE);void GrSetGCTSOffset(GR_GC_ID, GR_COORD, GR_COORD);void GrSetGCGraphicsExposure(GR_GC_ID gc, GR_BOOL exposure);void GrSetGCFont(GR_GC_ID gc, GR_FONT_ID font);void GrGetGCTextSize(GR_GC_ID gc, void *str, int count, GR_TEXTFLAGS flags, GR_SIZE *retwidth, GR_SIZE *retheight,GR_SIZE *retbase);void GrReadArea(GR_DRAW_ID id, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, GR_PIXELVAL *pixels);void GrArea(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width,GR_SIZE height,void *pixels,int pixtype);void GrCopyArea(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, GR_DRAW_ID srcid, GR_COORD srcx, GR_COORD srcy, unsigned long op);void GrStretchArea(GR_DRAW_ID dstid, GR_GC_ID gc, GR_COORD dx1, GR_COORD dy1, GR_COORD dx2, GR_COORD dy2, GR_DRAW_ID srcid, GR_COORD sx1, GR_COORD sy1, GR_COORD sx2, GR_COORD sy2, unsigned long op);void GrBitmap(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, GR_BITMAP *imagebits);void GrDrawImageBits(GR_DRAW_ID id,GR_GC_ID gc,GR_COORD x,GR_COORD y, GR_IMAGE_HDR *pimage);void GrDrawImageFromFile(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, char *path, int flags);GR_IMAGE_ID GrLoadImageFromFile(char *path, int flags);void GrDrawImageFromBuffer(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, void *buffer, int size, int flags);GR_IMAGE_ID GrLoadImageFromBuffer(void *buffer, int size, int flags);void GrDrawImageToFit(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, GR_IMAGE_ID imageid);void GrFreeImage(GR_IMAGE_ID id);void GrGetImageInfo(GR_IMAGE_ID id, GR_IMAGE_INFO *iip);void GrText(GR_DRAW_ID id, GR_GC_ID gc, GR_COORD x, GR_COORD y, void *str, GR_COUNT count, GR_TEXTFLAGS flags);GR_CURSOR_ID GrNewCursor(GR_SIZE width, GR_SIZE height, GR_COORD hotx, GR_COORD hoty, GR_COLOR foreground, GR_COLOR background, GR_BITMAP *fgbitmap, GR_BITMAP *bgbitmap);void GrDestroyCursor(GR_CURSOR_ID cid);void GrSetWindowCursor(GR_WINDOW_ID wid, GR_CURSOR_ID cid);void GrSetWindowRegion(GR_WINDOW_ID wid, GR_REGION_ID rid, int type);void GrMoveCursor(GR_COORD x, GR_COORD y);void GrGetSystemPalette(GR_PALETTE *pal);void GrSetSystemPalette(GR_COUNT first, GR_PALETTE *pal);void GrFindColor(GR_COLOR c, GR_PIXELVAL *retpixel);void GrReqShmCmds(long shmsize);void GrInjectPointerEvent(MWCOORD x, MWCOORD y, int button, int visible);void GrInjectKeyboardEvent(GR_WINDOW_ID wid, GR_KEY keyvalue, GR_KEYMOD modifiers, GR_SCANCODE scancode, GR_BOOL pressed);void GrCloseWindow(GR_WINDOW_ID wid);void GrKillWindow(GR_WINDOW_ID wid);void GrSetScreenSaverTimeout(GR_TIMEOUT timeout);void GrSetSelectionOwner(GR_WINDOW_ID wid, GR_CHAR *typelist);GR_WINDOW_ID GrGetSelectionOwner(GR_CHAR **typelist);void GrRequestClientData(GR_WINDOW_ID wid, GR_WINDOW_ID rid, GR_SERIALNO serial, GR_MIMETYPE mimetype);void GrSendClientData(GR_WINDOW_ID wid, GR_WINDOW_ID did, GR_SERIALNO serial, GR_LENGTH len, GR_LENGTH thislen, void *data);void GrBell(void);void GrSetBackgroundPixmap(GR_WINDOW_ID wid, GR_WINDOW_ID pixmap, int flags);void GrQueryPointer(GR_WINDOW_ID *mwin, GR_COORD *x, GR_COORD *y, GR_BUTTON *bmask);void GrQueryTree(GR_WINDOW_ID wid, GR_WINDOW_ID *parentid, GR_WINDOW_ID **children, GR_COUNT *nchildren);GR_BOOL GrGrabKey(GR_WINDOW_ID wid, GR_KEY key, int type);void GrUngrabKey(GR_WINDOW_ID wid, GR_KEY key);GR_TIMER_ID GrCreateTimer(GR_WINDOW_ID wid, GR_TIMEOUT period);void GrDestroyTimer(GR_TIMER_ID tid);void GrSetPortraitMode(int portraitmode);void GrRegisterInput(int fd);void GrUnregisterInput(int fd);void GrMainLoop(GR_FNCALLBACKEVENT fncb);GR_FNCALLBACKEVENT GrSetErrorHandler(GR_FNCALLBACKEVENT fncb);void GrDefaultErrorHandler(GR_EVENT *ep);/* passive library entry points - available with client/server only*/void GrPrepareSelect(int *maxfd,void *rfdset);void GrServiceSelect(void *rfdset, GR_FNCALLBACKEVENT fncb);/* Client side queue count - available only with client/server */int GrQueueLength(void);void GrSetTransform(GR_TRANSFORM *);/* nxtransform.c - mouse utility routines (requires floating point)*/int GrCalcTransform(GR_CAL_DATA *, GR_TRANSFORM *);int GrLoadTransformData(char *filename, GR_TRANSFORM *);int GrSaveTransformData(GR_TRANSFORM *, char *filename);/* nxutil.c - utility routines*/GR_WINDOW_ID GrNewWindowEx(GR_WM_PROPS props, GR_CHAR *title, GR_WINDOW_ID parent, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height, GR_COLOR background);void GrDrawLines(GR_DRAW_ID w, GR_GC_ID gc, GR_POINT *points, GR_COUNT count);GR_BITMAP * GrNewBitmapFromData(GR_SIZE width, GR_SIZE height, GR_SIZE bits_width, GR_SIZE bits_height, void *bits, int flags);GR_WINDOW_ID GrNewPixmapFromData(GR_SIZE width, GR_SIZE height, GR_COLOR foreground, GR_COLOR background, void * bits, int flags);GR_BITMAP * GrNewBitmapFromPixmap(GR_WINDOW_ID pixmap, int x, int y, GR_SIZE width, GR_SIZE height);GR_BITMAP * GrNewBitmapFromPixmap(GR_WINDOW_ID pixmap, int x, int y, GR_SIZE width, GR_SIZE height);GR_REGION_ID GrNewRegionFromPixmap(GR_WINDOW_ID src, MWCOORD x, MWCOORD y, GR_SIZE width, GR_SIZE height);/* direct client-side framebuffer mapping routines*/unsigned char * GrOpenClientFramebuffer(void);void GrCloseClientFramebuffer(void);void GrGetWindowFBInfo(GR_WINDOW_ID wid, GR_WINDOW_FB_INFO *fbinfo);/* retrofit - no longer used*/GR_CURSOR_ID GrSetCursor(GR_WINDOW_ID wid, GR_SIZE width, GR_SIZE height, GR_COORD hotx, GR_COORD hoty, GR_COLOR foreground, GR_COLOR background, GR_BITMAP *fbbitmap, GR_BITMAP *bgbitmap);#define GrSetBorderColor GrSetWindowBorderColor /* retrofit*/#define GrClearWindow(wid,exposeflag) GrClearArea(wid,0,0,0,0,exposeflag) /* retrofit*//* useful function macros*/#define GrSetWindowBackgroundColor(wid,color) \ { GR_WM_PROPERTIES props; \ props.flags = GR_WM_FLAGS_BACKGROUND; \ props.background = color; \ GrSetWMProperties(wid, &props); \ }#define GrSetWindowBorderSize(wid,width) \ { GR_WM_PROPERTIES props; \ props.flags = GR_WM_FLAGS_BORDERSIZE; \ props.bordersize = width; \ GrSetWMProperties(wid, &props); \ }#define GrSetWindowBorderColor(wid,color) \ { GR_WM_PROPERTIES props; \ props.flags = GR_WM_FLAGS_BORDERCOLOR; \ props.bordercolor = color; \ GrSetWMProperties(wid, &props); \ }#define GrSetWindowTitle(wid,name) \ { GR_WM_PROPERTIES props; \ props.flags = GR_WM_FLAGS_TITLE; \ props.title = (GR_CHAR *)name; \ GrSetWMProperties(wid, &props); \ }#ifdef __cplusplus}#endif/* RTEMS requires rtems_main()*/#if __rtems__#define main rtems_main#endif/* client side event queue (client.c local)*/typedef struct event_list EVENT_LIST;struct event_list { EVENT_LIST * next; GR_EVENT event;};/* queued request buffer (nxproto.c local)*/typedef struct { unsigned char *bufptr; /* next unused buffer location*/ unsigned char *bufmax; /* max buffer location*/ unsigned char *buffer; /* request buffer*/} REQBUF;#ifdef __ECOS#include <sys/select.h>#include <cyg/kernel/kapi.h>/* * In a single process, multi-threaded environment, we need to keep * all static data of shared code in a structure, with a pointer to * the structure to be stored in thread-local storage */typedef struct { /* Init to: */ int _nxSocket; /* -1 */ MWMUTEX _nxGlobalLock; int _storedevent; /* 0 */ GR_EVENT _storedevent_data; /* no init(0) */ int _regfdmax; /* -1 */ fd_set _regfdset; /* FD_ZERO */ GR_FNCALLBACKEVENT _GrErrorFunc; /* GrDefaultErrorHandler */ REQBUF _reqbuf; EVENT_LIST *_evlist;} ecos_nanox_client_data;extern int ecos_nanox_client_data_index;#define ACCESS_PER_THREAD_DATA() \ ecos_nanox_client_data *data = (ecos_nanox_client_data*) \ cyg_thread_get_data((cyg_ucount32)ecos_nanox_client_data_index);#define INIT_PER_THREAD_DATA() \ { \ ecos_nanox_client_data *dptr = malloc(sizeof(ecos_nanox_client_data)); \ ecos_nanox_client_data_index = data; \ dptr->_nxSocket = -1; \ dptr->nxGlobalLock = 0; dptr->_storedevent = 0; \ dptr->_regfdmax = -1; \ FD_ZERO(&dptr->_regfdset); \ dptr->_GrErrorFunc = GrDefaultErrorHandler; \ dptr->_reqbuf.bufptr = NULL; \ dptr->_reqbuf.bufmax = NULL; \ dptr->_reqbuf.buffer = NULL; \ dptr->_evlist = NULL; \ cyg_thread_set_data(ecos_nanox_client_data_index,(CYG_ADDRWORD)dptr); \ }#define nxSocket (data->_nxSocket)#define nxGlobalLock (data->_nxGlobalLock)#define storedevent (data->_storedevent)#define storedevent_data (data->_storedevent_data)#define regfdmax (data->_regfdmax)#define regfdset (data->_regfdset)#define ErrorFunc (data->_GrErrorFunc)#define reqbuf (data->_reqbuf)#define evlist (data->_evlist)#else#define ACCESS_PER_THREAD_DATA()#endif#endif /* _NANO_X_H*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -