📄 nano-x.h
字号:
#define GR_EVENT_TYPE_CLIENT_DATA_REQ 18#define GR_EVENT_TYPE_CLIENT_DATA 19#define GR_EVENT_TYPE_SELECTION_CHANGED 20#define GR_EVENT_TYPE_TIMER 21#define GR_EVENT_TYPE_PORTRAIT_CHANGED 22/* Event masks */#define GR_EVENTMASK(n) (((GR_EVENT_MASK) 1) << (n))#define GR_EVENT_MASK_NONE GR_EVENTMASK(GR_EVENT_TYPE_NONE)#define GR_EVENT_MASK_ERROR 0x80000000L#define GR_EVENT_MASK_EXPOSURE GR_EVENTMASK(GR_EVENT_TYPE_EXPOSURE)#define GR_EVENT_MASK_BUTTON_DOWN GR_EVENTMASK(GR_EVENT_TYPE_BUTTON_DOWN)#define GR_EVENT_MASK_BUTTON_UP GR_EVENTMASK(GR_EVENT_TYPE_BUTTON_UP)#define GR_EVENT_MASK_MOUSE_ENTER GR_EVENTMASK(GR_EVENT_TYPE_MOUSE_ENTER)#define GR_EVENT_MASK_MOUSE_EXIT GR_EVENTMASK(GR_EVENT_TYPE_MOUSE_EXIT)#define GR_EVENT_MASK_MOUSE_MOTION GR_EVENTMASK(GR_EVENT_TYPE_MOUSE_MOTION)#define GR_EVENT_MASK_MOUSE_POSITION GR_EVENTMASK(GR_EVENT_TYPE_MOUSE_POSITION)#define GR_EVENT_MASK_KEY_DOWN GR_EVENTMASK(GR_EVENT_TYPE_KEY_DOWN)#define GR_EVENT_MASK_KEY_UP GR_EVENTMASK(GR_EVENT_TYPE_KEY_UP)#define GR_EVENT_MASK_FOCUS_IN GR_EVENTMASK(GR_EVENT_TYPE_FOCUS_IN)#define GR_EVENT_MASK_FOCUS_OUT GR_EVENTMASK(GR_EVENT_TYPE_FOCUS_OUT)#define GR_EVENT_MASK_FDINPUT GR_EVENTMASK(GR_EVENT_TYPE_FDINPUT)#define GR_EVENT_MASK_UPDATE GR_EVENTMASK(GR_EVENT_TYPE_UPDATE)#define GR_EVENT_MASK_CHLD_UPDATE GR_EVENTMASK(GR_EVENT_TYPE_CHLD_UPDATE)#define GR_EVENT_MASK_CLOSE_REQ GR_EVENTMASK(GR_EVENT_TYPE_CLOSE_REQ)#define GR_EVENT_MASK_TIMEOUT GR_EVENTMASK(GR_EVENT_TYPE_TIMEOUT)#define GR_EVENT_MASK_SCREENSAVER GR_EVENTMASK(GR_EVENT_TYPE_SCREENSAVER)#define GR_EVENT_MASK_CLIENT_DATA_REQ GR_EVENTMASK(GR_EVENT_TYPE_CLIENT_DATA_REQ)#define GR_EVENT_MASK_CLIENT_DATA GR_EVENTMASK(GR_EVENT_TYPE_CLIENT_DATA)#define GR_EVENT_MASK_SELECTION_CHANGED GR_EVENTMASK(GR_EVENT_TYPE_SELECTION_CHANGED)#define GR_EVENT_MASK_TIMER GR_EVENTMASK(GR_EVENT_TYPE_TIMER)#define GR_EVENT_MASK_PORTRAIT_CHANGED GR_EVENTMASK(GR_EVENT_TYPE_PORTRAIT_CHANGED)#define GR_EVENT_MASK_ALL ((GR_EVENT_MASK) -1L)/* update event types */#define GR_UPDATE_MAP 1#define GR_UPDATE_UNMAP 2#define GR_UPDATE_MOVE 3#define GR_UPDATE_SIZE 4#define GR_UPDATE_UNMAPTEMP 5 /* unmap during window move/resize*/#define GR_UPDATE_ACTIVATE 6 /* toplevel window [de]activate*/#define GR_UPDATE_DESTROY 7/* Event for errors detected by the server. * These events are not delivered to GrGetNextEvent, but instead call * the user supplied error handling function. Only the first one of * these errors at a time is saved for delivery to the client since * there is not much to be done about errors anyway except complain * and exit. */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_FUNC_NAME name; /* function name which failed */ GR_ERROR code; /* error code */ GR_ID id; /* resource id (maybe useless) */} GR_EVENT_ERROR;/* Event for a mouse button pressed down or released. */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* window id event delivered to */ GR_WINDOW_ID subwid; /* sub-window id (pointer was in) */ GR_COORD rootx; /* root window x coordinate */ GR_COORD rooty; /* root window y coordinate */ GR_COORD x; /* window x coordinate of mouse */ GR_COORD y; /* window y coordinate of mouse */ GR_BUTTON buttons; /* current state of all buttons */ GR_BUTTON changebuttons; /* buttons which went down or up */ GR_KEYMOD modifiers; /* modifiers (MWKMOD_SHIFT, etc)*/ GR_TIMEOUT time; /* tickcount time value*/} GR_EVENT_BUTTON;/* Event for a keystroke typed for the window with has focus. */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* window id event delived to */ GR_WINDOW_ID subwid; /* sub-window id (pointer was in) */ GR_COORD rootx; /* root window x coordinate */ GR_COORD rooty; /* root window y coordinate */ GR_COORD x; /* window x coordinate of mouse */ GR_COORD y; /* window y coordinate of mouse */ GR_BUTTON buttons; /* current state of buttons */ GR_KEYMOD modifiers; /* modifiers (MWKMOD_SHIFT, etc)*/ GR_KEY ch; /* 16-bit unicode key value, MWKEY_xxx */ GR_SCANCODE scancode; /* OEM scancode value if available*/} GR_EVENT_KEYSTROKE;/* Event for exposure for a region of a window. */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* window id */ GR_COORD x; /* window x coordinate of exposure */ GR_COORD y; /* window y coordinate of exposure */ GR_SIZE width; /* width of exposure */ GR_SIZE height; /* height of exposure */} GR_EVENT_EXPOSURE;/* General events for focus in or focus out for a window, or mouse enter * or mouse exit from a window, or window unmapping or mapping, etc. * Server portrait mode changes are also sent using this event to * all windows that request it. */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* window id */ GR_WINDOW_ID otherid; /* new/old focus id for focus events*/} GR_EVENT_GENERAL;/* Events for mouse motion or mouse position. */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* window id event delivered to */ GR_WINDOW_ID subwid; /* sub-window id (pointer was in) */ GR_COORD rootx; /* root window x coordinate */ GR_COORD rooty; /* root window y coordinate */ GR_COORD x; /* window x coordinate of mouse */ GR_COORD y; /* window y coordinate of mouse */ GR_BUTTON buttons; /* current state of buttons */ GR_KEYMOD modifiers; /* modifiers (MWKMOD_SHIFT, etc)*/} GR_EVENT_MOUSE;/* GrRegisterInput event*/typedef struct { GR_EVENT_TYPE type; /* event type */ int fd; /* input fd*/} GR_EVENT_FDINPUT;/* GR_EVENT_TYPE_UPDATE */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* select window id*/ GR_WINDOW_ID subwid; /* update window id (=wid for UPDATE event)*/ GR_COORD x; /* new window x coordinate */ GR_COORD y; /* new window y coordinate */ GR_SIZE width; /* new width */ GR_SIZE height; /* new height */ GR_UPDATE_TYPE utype; /* update_type */} GR_EVENT_UPDATE;/* GR_EVENT_TYPE_SCREENSAVER */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_BOOL activate; /* true = activate, false = deactivate */} GR_EVENT_SCREENSAVER;/* GR_EVENT_TYPE_CLIENT_DATA_REQ */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* ID of requested window */ GR_WINDOW_ID rid; /* ID of window to send data to */ GR_SERIALNO serial; /* Serial number of transaction */ GR_MIMETYPE mimetype; /* Type to supply data as */} GR_EVENT_CLIENT_DATA_REQ;/* GR_EVENT_TYPE_CLIENT_DATA */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID wid; /* ID of window data is destined for */ GR_WINDOW_ID rid; /* ID of window data is from */ GR_SERIALNO serial; /* Serial number of transaction */ unsigned long len; /* Total length of data */ unsigned long datalen; /* Length of following data */ void *data; /* Pointer to data (filled in on client side) */} GR_EVENT_CLIENT_DATA;/* GR_EVENT_TYPE_SELECTION_CHANGED */typedef struct { GR_EVENT_TYPE type; /* event type */ GR_WINDOW_ID new_owner; /* ID of new selection owner */} GR_EVENT_SELECTION_CHANGED;/* GR_EVENT_TYPE_TIMER */typedef struct { GR_EVENT_TYPE type; /* event type, GR_EVENT_TYPE_TIMER */ GR_WINDOW_ID wid; /* ID of window timer is destined for */ GR_TIMER_ID tid; /* ID of expired timer */} GR_EVENT_TIMER;/* * Union of all possible event structures. * This is the structure returned by the GrGetNextEvent and similar routines. */typedef union { GR_EVENT_TYPE type; /* event type */ GR_EVENT_ERROR error; /* error event */ GR_EVENT_GENERAL general; /* general window events */ GR_EVENT_BUTTON button; /* button events */ GR_EVENT_KEYSTROKE keystroke; /* keystroke events */ GR_EVENT_EXPOSURE exposure; /* exposure events */ GR_EVENT_MOUSE mouse; /* mouse motion events */ GR_EVENT_FDINPUT fdinput; /* fd input events*/ GR_EVENT_UPDATE update; /* window update events */ GR_EVENT_SCREENSAVER screensaver; /* Screen saver events */ GR_EVENT_CLIENT_DATA_REQ clientdatareq; /* Request for client data events */ GR_EVENT_CLIENT_DATA clientdata; /* Client data events */ GR_EVENT_SELECTION_CHANGED selectionchanged; /* Selection owner changed */ GR_EVENT_TIMER timer;} GR_EVENT;typedef void (*GR_FNCALLBACKEVENT)(GR_EVENT *);/* Pixel packings within words. */#define GR_BITMAPBITS (sizeof(GR_BITMAP) * 8)#define GR_ZEROBITS ((GR_BITMAP) 0x0000)#define GR_ONEBITS ((GR_BITMAP) 0xffff)#define GR_FIRSTBIT ((GR_BITMAP) 0x8000)#define GR_LASTBIT ((GR_BITMAP) 0x0001)#define GR_BITVALUE(n) ((GR_BITMAP) (((GR_BITMAP) 1) << (n)))#define GR_SHIFTBIT(m) ((GR_BITMAP) ((m) << 1))#define GR_NEXTBIT(m) ((GR_BITMAP) ((m) >> 1))#define GR_TESTBIT(m) (((m) & GR_FIRSTBIT) != 0)/* Size of bitmaps. */#define GR_BITMAP_SIZE(width, height) ((height) * \ (((width) + sizeof(GR_BITMAP) * 8 - 1) / (sizeof(GR_BITMAP) * 8)))#define GR_MAX_BITMAP_SIZE \ GR_BITMAP_SIZE(MWMAX_CURSOR_SIZE, MWMAX_CURSOR_SIZE)/* GrGetSysColor colors*//* desktop background*/#define GR_COLOR_DESKTOP 0/* caption colors*/#define GR_COLOR_ACTIVECAPTION 1#define GR_COLOR_ACTIVECAPTIONTEXT 2#define GR_COLOR_INACTIVECAPTION 3#define GR_COLOR_INACTIVECAPTIONTEXT 4/* 3d border shades*/#define GR_COLOR_WINDOWFRAME 5#define GR_COLOR_BTNSHADOW 6#define GR_COLOR_3DLIGHT 7#define GR_COLOR_BTNHIGHLIGHT 8/* top level application window backgrounds/text*/#define GR_COLOR_APPWINDOW 9#define GR_COLOR_APPTEXT 10/* button control backgrounds/text (usually same as app window colors)*/#define GR_COLOR_BTNFACE 11#define GR_COLOR_BTNTEXT 12/* edit/listbox control backgrounds/text, selected highlights*/#define GR_COLOR_WINDOW 13#define GR_COLOR_WINDOWTEXT 14#define GR_COLOR_HIGHLIGHT 15#define GR_COLOR_HIGHLIGHTTEXT 16#define GR_COLOR_GRAYTEXT 17/* menu backgrounds/text*/#define GR_COLOR_MENUTEXT 18#define GR_COLOR_MENU 19/* Error strings per error number*/#define GR_ERROR_STRINGS \ "", \ "Bad window id: %d\n", \ "Bad graphics context: %d\n", \ "Bad cursor size\n", \ "Out of server memory\n", \ "Bad window size: %d\n", \ "Keyboard error\n", \ "Mouse error\n", \ "Input only window: %d\n", \ "Illegal on root window: %d\n", \ "Clipping overflow\n", \ "Screen error\n", \ "Unmapped focus window: %d\n", \ "Bad drawing mode gc: %d\n"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 * addr);GR_WINDOW_ID GrNewInputWindow(GR_WINDOW_ID parent, GR_COORD x, GR_COORD y, GR_SIZE width, GR_SIZE height);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -