📄 serv.h
字号:
#ifndef _SERV_H#define _SERV_H/* * Copyright (c) 2000, 2003 Greg Haerr <greg@censoft.com> * Portions Copyright (c) 2002 by Koninklijke Philips Electronics N.V. * Copyright (c) 2000 Alex Holden <alex@linuxhacker.org> * Copyright (c) 1991 David I. Bell * Permission is granted to use, distribute, or modify this source, * provided that this copyright notice remains intact. * * Private definitions for the graphics server. * These definitions are not to be used by clients. */#include "mwsystem.h"#if defined(__ECOS) && !defined(_NO_SVR_MAPPING)/* * Since eCos is a single task, multi-threaded environment, the * server and the client code share the same namespace. This means * that server functions which are represented by dispatchers in * the client code need to have unique names, thus this remapping. */#define nxErrorStrings SVR_nxErrorStrings#define GrArcAngle SVR_GrArcAngle#define GrArc SVR_GrArc#define GrArea SVR_GrArea#define GrBell SVR_GrBell#define GrBitmap SVR_GrBitmap#define GrCheckNextEvent SVR_GrCheckNextEvent#define GrClearArea SVR_GrClearArea#define GrClose SVR_GrClose#define GrCloseWindow SVR_GrCloseWindow#define GrCopyArea SVR_GrCopyArea#define GrCopyGC SVR_GrCopyGC#define GrCreateFont SVR_GrCreateFont#define GrCreateTimer SVR_GrCreateTimer #define GrDelay SVR_GrDelay#define GrDestroyCursor SVR_GrDestroyCursor #define GrDestroyFont SVR_GrDestroyFont#define GrDestroyGC SVR_GrDestroyGC#define GrDestroyRegion SVR_GrDestroyRegion#define GrDestroyTimer SVR_GrDestroyTimer #define GrDestroyWindow SVR_GrDestroyWindow#define GrDrawImageBits SVR_GrDrawImageBits#define GrDrawImageFromBuffer SVR_GrDrawImageFromBuffer#define GrDrawImageFromFile SVR_GrDrawImageFromFile#define GrDrawImageToFit SVR_GrDrawImageToFit#define GrEllipse SVR_GrEllipse#define GrEmptyRegion SVR_GrEmptyRegion#define GrEqualRegion SVR_GrEqualRegion#define GrFillEllipse SVR_GrFillEllipse#define GrFillPoly SVR_GrFillPoly#define GrFillRect SVR_GrFillRect#define GrFindColor SVR_GrFindColor#define GrFreeFontList SVR_GrFreeFontList #define GrFreeImage SVR_GrFreeImage#define GrGetFocus SVR_GrGetFocus#define GrGetFontInfo SVR_GrGetFontInfo#define GrGetFontList SVR_GrGetFontList #define GrGetGCInfo SVR_GrGetGCInfo#define GrGetGCTextSize SVR_GrGetGCTextSize#define GrGetImageInfo SVR_GrGetImageInfo#define GrGetRegionBox SVR_GrGetRegionBox#define GrGetScreenInfo SVR_GrGetScreenInfo#define GrGetSelectionOwner SVR_GrGetSelectionOwner#define GrGetSysColor SVR_GrGetSysColor#define GrGetSystemPalette SVR_GrGetSystemPalette#define GrGetWindowInfo SVR_GrGetWindowInfo#define GrGetWMProperties SVR_GrGetWMProperties#define GrInjectKeyboardEvent SVR_GrInjectKeyboardEvent#define GrInjectPointerEvent SVR_GrInjectPointerEvent#define GrIntersectRegion SVR_GrIntersectRegion#define GrKillWindow SVR_GrKillWindow#define GrLine SVR_GrLine#define GrLoadImageFromFile SVR_GrLoadImageFromFile#define GrLowerWindow SVR_GrLowerWindow#define GrMapWindow SVR_GrMapWindow#define GrMoveCursor SVR_GrMoveCursor#define GrMoveWindow SVR_GrMoveWindow#define GrNewCursor SVR_GrNewCursor #define GrNewGC SVR_GrNewGC#define GrNewInputWindow SVR_GrNewInputWindow#define GrNewPixmap SVR_GrNewPixmap#define GrNewPolygonRegion SVR_GrNewPolygonRegion#define GrNewRegion SVR_GrNewRegion#define GrNewWindow SVR_GrNewWindow#define GrOffsetRegion SVR_GrOffsetRegion#define GrOpen SVR_GrOpen#define GrPeekEvent SVR_GrPeekEvent#define GrPointInRegion SVR_GrPointInRegion#define GrPoints SVR_GrPoints#define GrPoint SVR_GrPoint#define GrPoly SVR_GrPoly#define GrQueryTree SVR_GrQueryTree #define GrRaiseWindow SVR_GrRaiseWindow#define GrReadArea SVR_GrReadArea#define GrRectInRegion SVR_GrRectInRegion#define GrRect SVR_GrRect#define GrReparentWindow SVR_GrReparentWindow#define GrRequestClientData SVR_GrRequestClientData#define GrResizeWindow SVR_GrResizeWindow#define GrSelectEvents SVR_GrSelectEvents#define GrSendClientData SVR_GrSendClientData#define GrSetBackgroundPixmap SVR_GrSetBackgroundPixmap#define GrSetCursor SVR_GrSetCursor#define GrSetFocus SVR_GrSetFocus#define GrSetFontAttr SVR_GrSetFontAttr#define GrSetFontRotation SVR_GrSetFontRotation#define GrSetFontSize SVR_GrSetFontSize#define GrSetGCBackground SVR_GrSetGCBackground#define GrSetGCClipOrigin SVR_GrSetGCClipOrigin#define GrSetGCFont SVR_GrSetGCFont#define GrSetGCForeground SVR_GrSetGCForeground#define GrSetGCGraphicsExposure SVR_GrSetGCGraphicsExposure#define GrSetGCMode SVR_GrSetGCMode#define GrSetGCRegion SVR_GrSetGCRegion#define GrSetGCUseBackground SVR_GrSetGCUseBackground#define GrSetPortraitMode SVR_GrSetPortraitMode#define GrSetScreenSaverTimeout SVR_GrSetScreenSaverTimeout#define GrSetSelectionOwner SVR_GrSetSelectionOwner#define GrSetSystemPalette SVR_GrSetSystemPalette#define GrSetWindowCursor SVR_GrSetWindowCursor #define GrSetWMProperties SVR_GrSetWMProperties#define GrSubtractRegion SVR_GrSubtractRegion#define GrText SVR_GrText#define GrUnionRectWithRegion SVR_GrUnionRectWithRegion#define GrUnionRegion SVR_GrUnionRegion#define GrUnmapWindow SVR_GrUnmapWindow#define GrXorRegion SVR_GrXorRegion#endif#include "nano-X.h"#include "device.h"/* * Define the server-side mutex code. This is a regular mutex (as defined * in lock.h) for linked-in mode, or a no-op for client/server mode. */#if NONETWORK/* Use a server-side mutex. */#include "lock.h"LOCK_EXTERN(gr_server_mutex);#define SERVER_LOCK_DECLARE LOCK_DECLARE(gr_server_mutex);#define SERVER_LOCK_INIT() LOCK_INIT(&gr_server_mutex)#define SERVER_LOCK() LOCK(&gr_server_mutex)#define SERVER_UNLOCK() UNLOCK(&gr_server_mutex)#else /* !NONETWORK *//* The Nano-X server is single threaded, so disable the server-side mutex (for speed). */#define SERVER_LOCK_DECLARE /* no-op */#define SERVER_LOCK_INIT() do {} while(0) /* no-op, but require a ";" */#define SERVER_LOCK() do {} while(0) /* no-op, but require a ";" */#define SERVER_UNLOCK() do {} while(0) /* no-op, but require a ";" */#endif /* !NONETWORK*//* * Drawing types. */typedef int GR_DRAW_TYPE;#define GR_DRAW_TYPE_NONE 0 /* none or error */#define GR_DRAW_TYPE_WINDOW 1 /* windows */#define GR_DRAW_TYPE_PIXMAP 2 /* pixmaps */#define GR_MAX_MODE MWMODE_MAX/* * List of elements for events. */typedef struct gr_event_list GR_EVENT_LIST;struct gr_event_list { GR_EVENT_LIST *next; /* next element in list */ GR_EVENT event; /* event */};/* * Data structure to keep track of state of clients. */typedef struct gr_client GR_CLIENT;struct gr_client { int id; /* client id and socket descriptor */ GR_EVENT_LIST *eventhead; /* head of event chain (or NULL) */ GR_EVENT_LIST *eventtail; /* tail of event chain (or NULL) */ GR_CLIENT *next; /* the next client in the list */ GR_CLIENT *prev; /* the previous client in the list */ int waiting_for_event; /* used to implement GrGetNextEvent*/ char *shm_cmds; int shm_cmds_size; int shm_cmds_shmid; unsigned long processid; /* client process id*/};/* * Structure to remember clients associated with events. */typedef struct gr_event_client GR_EVENT_CLIENT;struct gr_event_client { GR_EVENT_CLIENT *next; /* next interested client or NULL */ GR_EVENT_MASK eventmask; /* events client wants to see */ GR_CLIENT *client; /* client who is interested */};/* * Structure to remember graphics contexts. */typedef struct gr_gc GR_GC;struct gr_gc { GR_GC_ID id; /* graphics context id */ int mode; /* drawing mode */ GR_REGION_ID regionid; /* current clipping region */ GR_COORD xoff; /* X offset for the clip region */ GR_COORD yoff; /* Y offset for the clip region */ GR_FONT_ID fontid; /* current font id*/ GR_COLOR foreground; /* foreground RGB color or pixel value*/ GR_COLOR background; /* background RGB color or pixel value*/ GR_BOOL fgispixelval; /* TRUE if 'foreground' is actually a GR_PIXELVAL */ GR_BOOL bgispixelval; /* TRUE if 'background' is actually a GR_PIXELVAL */ GR_BOOL usebackground; /* actually display the background */ GR_BOOL exposure; /* send expose events on GrCopyArea */ int linestyle; /* GR_LINE_SOLID, GR_LINE_ONOFF_DASH */ unsigned long dashmask; char dashcount; int fillmode; /* GR_FILL_SOLID, STIPPLE, OPAQUE_STIPPLE, TILE */ GR_STIPPLE stipple; /* width,height,bitmap*/ struct { PSD psd; GR_SIZE width; GR_SIZE height; } tile; GR_POINT ts_offset; GR_BOOL changed; /* graphics context has been changed */ GR_CLIENT *owner; /* client that created it */ GR_GC *next; /* next graphics context */};/* * Structure to remember regions. */typedef struct gr_region GR_REGION;struct gr_region { MWCLIPREGION * rgn; GR_REGION_ID id; GR_CLIENT * owner; /* client that created it */ GR_REGION * next;}; /* * Structure to remember fonts. */typedef struct gr_font GR_FONT;struct gr_font { PMWFONT pfont; /* font*/ int fontsize; /* font size*/ GR_FONT_ID id; /* font id*/ GR_CLIENT * owner; /* client that created it */ GR_FONT * next; /* next font*/};/* * Cursor structure. */typedef struct gr_cursor GR_CURSOR;struct gr_cursor { GR_CURSOR_ID id; /* cursor id*/ GR_CLIENT *owner; /* client that created it*/ GR_CURSOR *next; MWCURSOR cursor; /* mwin engine cursor structure*/};/* * Structure to remember selection owner and mime types it can produce. */typedef struct { GR_WINDOW_ID wid; GR_CHAR *typelist;} GR_SELECTIONOWNER;#if MW_FEATURE_IMAGES/* * Structure to remember images.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -