📄 nano-x.h
字号:
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 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);
void GrGetFontList(GR_FONTLIST ***fonts, int *numfonts);
void GrFreeFontList(GR_FONTLIST ***fonts, int num);
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);
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 GrSetGCBackground(GR_GC_ID gc, GR_COLOR background);
void GrSetGCUseBackground(GR_GC_ID gc, GR_BOOL flag);
void GrSetGCMode(GR_GC_ID gc, int mode);
void GrSetGCFont(GR_GC_ID gc, GR_FONT_ID font);
void GrGetGCTextSize(GR_GC_ID gc, void *str, int count, int 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, int 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, int 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 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 GrQueryTree(GR_WINDOW_ID wid, GR_WINDOW_ID *parentid, GR_WINDOW_ID **children,
GR_COUNT *nchildren);
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);
/* 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);
/* 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>
/*
* 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
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->_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 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 + -