⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlibint.c

📁 早期freebsd实现
💻 C
📖 第 1 页 / 共 4 页
字号:
		    ev->drawable	= event->u.graphicsExposure.drawable;		    ev->x		= event->u.graphicsExposure.x;		    ev->y		= event->u.graphicsExposure.y;		    ev->width		= event->u.graphicsExposure.width;		    ev->height		= event->u.graphicsExposure.height;		    ev->count		= event->u.graphicsExposure.count;		    ev->major_code	= event->u.graphicsExposure.majorEvent;		    ev->minor_code	= event->u.graphicsExposure.minorEvent;		}		break;	      case NoExpose:		{		    register XNoExposeEvent *ev = (XNoExposeEvent *) re;		    ev->drawable	= event->u.noExposure.drawable;		    ev->major_code	= event->u.noExposure.majorEvent;		    ev->minor_code	= event->u.noExposure.minorEvent;		}		break;	      case VisibilityNotify:		{		    register XVisibilityEvent *ev = (XVisibilityEvent *) re;		    ev->window		= event->u.visibility.window;		    ev->state		= event->u.visibility.state;		}		break;	      case CreateNotify:		{		    register XCreateWindowEvent *ev =			 (XCreateWindowEvent *) re;		    ev->window		= event->u.createNotify.window;		    ev->parent		= event->u.createNotify.parent;		    ev->x		= cvtINT16toInt(event->u.createNotify.x);		    ev->y		= cvtINT16toInt(event->u.createNotify.y);		    ev->width		= event->u.createNotify.width;		    ev->height		= event->u.createNotify.height;		    ev->border_width	= event->u.createNotify.borderWidth;		    ev->override_redirect	= event->u.createNotify.override;		}		break;	      case DestroyNotify:		{		    register XDestroyWindowEvent *ev =				(XDestroyWindowEvent *) re;		    ev->window		= event->u.destroyNotify.window;		    ev->event		= event->u.destroyNotify.event;		}		break;	      case UnmapNotify:		{		    register XUnmapEvent *ev = (XUnmapEvent *) re;		    ev->window		= event->u.unmapNotify.window;		    ev->event		= event->u.unmapNotify.event;		    ev->from_configure	= event->u.unmapNotify.fromConfigure;		}		break;	      case MapNotify:		{		    register XMapEvent *ev = (XMapEvent *) re;		    ev->window		= event->u.mapNotify.window;		    ev->event		= event->u.mapNotify.event;		    ev->override_redirect	= event->u.mapNotify.override;		}		break;	      case MapRequest:		{		    register XMapRequestEvent *ev = (XMapRequestEvent *) re;		    ev->window		= event->u.mapRequest.window;		    ev->parent		= event->u.mapRequest.parent;		}		break;	      case ReparentNotify:		{		    register XReparentEvent *ev = (XReparentEvent *) re;		    ev->event		= event->u.reparent.event;		    ev->window		= event->u.reparent.window;		    ev->parent		= event->u.reparent.parent;		    ev->x		= cvtINT16toInt(event->u.reparent.x);		    ev->y		= cvtINT16toInt(event->u.reparent.y);		    ev->override_redirect	= event->u.reparent.override;		}		break;	      case ConfigureNotify:		{		    register XConfigureEvent *ev = (XConfigureEvent *) re;		    ev->event	= event->u.configureNotify.event;		    ev->window	= event->u.configureNotify.window;		    ev->above	= event->u.configureNotify.aboveSibling;		    ev->x	= cvtINT16toInt(event->u.configureNotify.x);		    ev->y	= cvtINT16toInt(event->u.configureNotify.y);		    ev->width	= event->u.configureNotify.width;		    ev->height	= event->u.configureNotify.height;		    ev->border_width  = event->u.configureNotify.borderWidth;		    ev->override_redirect = event->u.configureNotify.override;		}		break;	      case ConfigureRequest:		{		    register XConfigureRequestEvent *ev =		        (XConfigureRequestEvent *) re;		    ev->window		= event->u.configureRequest.window;		    ev->parent		= event->u.configureRequest.parent;		    ev->above		= event->u.configureRequest.sibling;		    ev->x		= cvtINT16toInt(event->u.configureRequest.x);		    ev->y		= cvtINT16toInt(event->u.configureRequest.y);		    ev->width		= event->u.configureRequest.width;		    ev->height		= event->u.configureRequest.height;		    ev->border_width	= event->u.configureRequest.borderWidth;		    ev->value_mask	= event->u.configureRequest.valueMask;		    ev->detail  	= event->u.u.detail;		}		break;	      case GravityNotify:		{		    register XGravityEvent *ev = (XGravityEvent *) re;		    ev->window		= event->u.gravity.window;		    ev->event		= event->u.gravity.event;		    ev->x		= cvtINT16toInt(event->u.gravity.x);		    ev->y		= cvtINT16toInt(event->u.gravity.y);		}		break;	      case ResizeRequest:		{		    register XResizeRequestEvent *ev =			(XResizeRequestEvent *) re;		    ev->window		= event->u.resizeRequest.window;		    ev->width		= event->u.resizeRequest.width;		    ev->height		= event->u.resizeRequest.height;		}		break;	      case CirculateNotify:		{		    register XCirculateEvent *ev = (XCirculateEvent *) re;		    ev->window		= event->u.circulate.window;		    ev->event		= event->u.circulate.event;		    ev->place		= event->u.circulate.place;		}		break;	      case CirculateRequest:		{		    register XCirculateRequestEvent *ev =		        (XCirculateRequestEvent *) re;		    ev->window		= event->u.circulate.window;		    ev->parent		= event->u.circulate.event;		    ev->place		= event->u.circulate.place;		}		break;	      case PropertyNotify:		{		    register XPropertyEvent *ev = (XPropertyEvent *) re;		    ev->window		= event->u.property.window;		    ev->atom		= event->u.property.atom;		    ev->time		= event->u.property.time;		    ev->state		= event->u.property.state;		}		break;	      case SelectionClear:		{		    register XSelectionClearEvent *ev =			 (XSelectionClearEvent *) re;		    ev->window		= event->u.selectionClear.window;		    ev->selection	= event->u.selectionClear.atom;		    ev->time		= event->u.selectionClear.time;		}		break;	      case SelectionRequest:		{		    register XSelectionRequestEvent *ev =		        (XSelectionRequestEvent *) re;		    ev->owner		= event->u.selectionRequest.owner;		    ev->requestor	= event->u.selectionRequest.requestor;		    ev->selection	= event->u.selectionRequest.selection;		    ev->target		= event->u.selectionRequest.target;		    ev->property	= event->u.selectionRequest.property;		    ev->time		= event->u.selectionRequest.time;		}		break;	      case SelectionNotify:		{		    register XSelectionEvent *ev = (XSelectionEvent *) re;		    ev->requestor	= event->u.selectionNotify.requestor;		    ev->selection	= event->u.selectionNotify.selection;		    ev->target		= event->u.selectionNotify.target;		    ev->property	= event->u.selectionNotify.property;		    ev->time		= event->u.selectionNotify.time;		}		break;	      case ColormapNotify:		{		    register XColormapEvent *ev = (XColormapEvent *) re;		    ev->window		= event->u.colormap.window;		    ev->colormap	= event->u.colormap.colormap;		    ev->new		= event->u.colormap.new;		    ev->state		= event->u.colormap.state;	        }		break;	      case ClientMessage:		{		   register int i;		   register XClientMessageEvent *ev 		   			= (XClientMessageEvent *) re;		   ev->window		= event->u.clientMessage.window;		   ev->format		= event->u.u.detail;		   switch (ev->format) {			case 8:				   ev->message_type = event->u.clientMessage.u.b.type;			   for (i = 0; i < 20; i++) 				     ev->data.b[i] = event->u.clientMessage.u.b.bytes[i];			   break;			case 16:			   ev->message_type = event->u.clientMessage.u.s.type;			   ev->data.s[0] = cvtINT16toShort(event->u.clientMessage.u.s.shorts0);			   ev->data.s[1] = cvtINT16toShort(event->u.clientMessage.u.s.shorts1);			   ev->data.s[2] = cvtINT16toShort(event->u.clientMessage.u.s.shorts2);			   ev->data.s[3] = cvtINT16toShort(event->u.clientMessage.u.s.shorts3);			   ev->data.s[4] = cvtINT16toShort(event->u.clientMessage.u.s.shorts4);			   ev->data.s[5] = cvtINT16toShort(event->u.clientMessage.u.s.shorts5);			   ev->data.s[6] = cvtINT16toShort(event->u.clientMessage.u.s.shorts6);			   ev->data.s[7] = cvtINT16toShort(event->u.clientMessage.u.s.shorts7);			   ev->data.s[8] = cvtINT16toShort(event->u.clientMessage.u.s.shorts8);			   ev->data.s[9] = cvtINT16toShort(event->u.clientMessage.u.s.shorts9);			   break;			case 32:			   ev->message_type = event->u.clientMessage.u.l.type;			   ev->data.l[0] = cvtINT32toLong(event->u.clientMessage.u.l.longs0);			   ev->data.l[1] = cvtINT32toLong(event->u.clientMessage.u.l.longs1);			   ev->data.l[2] = cvtINT32toLong(event->u.clientMessage.u.l.longs2);			   ev->data.l[3] = cvtINT32toLong(event->u.clientMessage.u.l.longs3);			   ev->data.l[4] = cvtINT32toLong(event->u.clientMessage.u.l.longs4);			   break;			default: /* XXX should never occur */				break;		    }	        }		break;	      case MappingNotify:		{		   register XMappingEvent *ev = (XMappingEvent *)re;		   ev->window		= 0;		   ev->first_keycode 	= event->u.mappingNotify.firstKeyCode;		   ev->request 		= event->u.mappingNotify.request;		   ev->count 		= event->u.mappingNotify.count;		}		break;	      default:		return(_XUnknownWireEvent(dpy, re, event));	}	return(True);}#ifndef USL_SHARELIBstatic char *_SysErrorMsg (n)    int n;{    extern char *sys_errlist[];    extern int sys_nerr;    char *s = ((n >= 0 && n < sys_nerr) ? sys_errlist[n] : "unknown error");    return (s ? s : "no such error");}#endif 	/* USL sharedlibs in don't define for SVR3.2 *//* * _XDefaultIOError - Default fatal system error reporting routine.  Called  * when an X internal system error is encountered. */_XDefaultIOError (dpy)	Display *dpy;{	(void) fprintf (stderr, 	 "XIO:  fatal IO error %d (%s) on X server \"%s\"\r\n",			errno, _SysErrorMsg (errno), DisplayString (dpy));	(void) fprintf (stderr, 	 "      after %lu requests (%lu known processed) with %d events remaining.\r\n",			NextRequest(dpy) - 1, LastKnownRequestProcessed(dpy),			QLength(dpy));	if (errno == EPIPE) {	    (void) fprintf (stderr,	 "      The connection was probably broken by a server shutdown or KillClient.\r\n");	}	exit(1);}static int _XPrintDefaultError (dpy, event, fp)    Display *dpy;    XErrorEvent *event;    FILE *fp;{    char buffer[BUFSIZ];    char mesg[BUFSIZ];    char number[32];    char *mtype = "XlibMessage";    register _XExtension *ext = (_XExtension *)NULL;    _XExtension *bext = (_XExtension *)NULL;    XGetErrorText(dpy, event->error_code, buffer, BUFSIZ);    XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ);    (void) fprintf(fp, "%s:  %s\n  ", mesg, buffer);    XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d", 	mesg, BUFSIZ);    (void) fprintf(fp, mesg, event->request_code);    if (event->request_code < 128) {	sprintf(number, "%d", event->request_code);	XGetErrorDatabaseText(dpy, "XRequest", number, "", buffer, BUFSIZ);    } else {	for (ext = dpy->ext_procs;	     ext && (ext->codes.major_opcode != event->request_code);	     ext = ext->next)	  ;	if (ext)	    strcpy(buffer, ext->name);	else	    buffer[0] = '\0';    }    (void) fprintf(fp, " (%s)\n", buffer);    if (event->request_code >= 128) {	XGetErrorDatabaseText(dpy, mtype, "MinorCode", "Request Minor code %d",			      mesg, BUFSIZ);	fputs("  ", fp);	(void) fprintf(fp, mesg, event->minor_code);	if (ext) {	    sprintf(mesg, "%s.%d", ext->name, event->minor_code);	    XGetErrorDatabaseText(dpy, "XRequest", mesg, "", buffer, BUFSIZ);	    (void) fprintf(fp, " (%s)", buffer);	}	fputs("\n", fp);    }    if (event->error_code >= 128) {	/* kludge, try to find the extension that caused it */	buffer[0] = '\0';	for (ext = dpy->ext_procs; ext; ext = ext->next) {	    if (ext->error_string) 		(*ext->error_string)(dpy, event->error_code, &ext->codes,				     buffer, BUFSIZ);	    if (buffer[0]) {		bext = ext;		break;	    }	    if (ext->codes.first_error &&		ext->codes.first_error < event->error_code &&		(!bext || ext->codes.first_error > bext->codes.first_error))		bext = ext;	}    	if (bext)	    sprintf(buffer, "%s.%d", bext->name,		    event->error_code - bext->codes.first_error);	else	    strcpy(buffer, "Value");	XGetErrorDatabaseText(dpy, mtype, buffer, "", mesg, BUFSIZ);	if (mesg[0]) {	    fputs("  ", fp);	    (void) fprintf(fp, mesg, event->resourceid);	    fputs("\n", fp);	}	/* let extensions try to print the values */	for (ext = dpy->ext_procs; ext; ext = ext->next) {	    if (ext->error_values)		(*ext->error_values)(dpy, event, fp);	}    } else if ((event->error_code == BadWindow) ||	       (event->error_code == BadPixmap) ||	       (event->error_code == BadCursor) ||	       (event->error_code == BadFont) ||	       (event->error_code == BadDrawable) ||	       (event->error_code == BadColor) ||	       (event->error_code == BadGC) ||	       (event->error_code == BadIDChoice) ||	       (event->error_code == BadValue) ||	       (event->error_code == BadAtom)) {	if (event->error_code == BadValue)	    XGetErrorDatabaseText(dpy, mtype, "Value", "Value 0x%x",				  mesg, BUFSIZ);	else if (event->error_code == BadAtom)	    XGetErrorDatabaseText(dpy, mtype, "AtomID", "AtomID 0x%x",				  mesg, BUFSIZ);	else	    XGetErrorDatabaseText(dpy, mtype, "ResourceID", "ResourceID 0x%x",				  mesg, BUFSIZ);	fputs("  ", fp);	(void) fprintf(fp, mesg, event->resourceid);	fputs("\n", fp);    }    XGetErrorDatabaseText(dpy, mtype, "ErrorSerial", "Error Serial #%d", 			  mesg, BUFSIZ);    fputs("  ", fp);    (void) fprintf(fp, mesg, event->serial);    XGetErrorDatabaseText(dpy, mtype, "CurrentSerial", "Current Serial #%d",			  mesg, BUFSIZ);    fputs("\n  ", fp);    (void) fprintf(fp, mesg, dpy->request);    fputs("\n", fp);    if (event->error_code == BadImplementation) return 0;    return 1;}int _XDefaultError(dpy, event)	Display *dpy;	XErrorEvent *event;{    if (_XPrintDefaultError (dpy, event, stderr) == 0) return 0;    exit(1);    /*NOTREACHED*/}/*ARGSUSED*/Bool _XDefaultWireError(display, he, we)    Display     *display;    XErrorEvent *he;    xError      *we;{    return True;}/* * _XError - prepare to upcall user protocol error handler */int _XError (dpy, rep)    Display *dpy;    xError *rep;{    /*      * X_Error packet encountered!  We need to unpack the error before     * giving it to the user.     */    XEvent event; /* make it a large event */    event.xerror.display = dpy;    event.xerror.type = X_Error;    event.xerror.serial = _XSetLastRequestRead(dpy, (xGenericReply *)rep);    event.xerror.resourceid = rep->resourceID;    event.xerror.error_code = rep->errorCode;    event.xerror.request_code = rep->majorCode;    event.xerror.minor_code = rep->minorCode;    if (dpy->error_vec &&	!(*dpy->error_vec[rep->errorCode])(dpy, &event.xerror, rep))	return 0;    if (_XErrorFunction != NULL) {      	return ((*_XErrorFunction)(dpy, &event));	/* upcall */    } else {	return _XDefaultError(dpy, &event);    }}    /* * _XIOError - call user connection error handler and exit */int _XIOError (dpy)    Display *dpy;{    dpy->flags |= XlibDisplayIOError;    if (_XIOErrorFunction != NULL)	(*_XIOErrorFunction)(dpy);    else	_XDefaultIOError(dpy);    exit (1);}/* * This routine can be used to (cheaply) get some memory within a single * Xlib routine for scratch space.  It is reallocated from the same place * each time, unless the library needs a large scratch space. */char *_XAllocScratch (dpy, nbytes)	register Display *dpy;	unsigned long nbytes;{	if (nbytes > dpy->scratch_length) {	    if (dpy->scratch_buffer) Xfree (dpy->scratch_buffer);	    if (dpy->scratch_buffer = Xmalloc((unsigned) nbytes))		dpy->scratch_length = nbytes;	    else dpy->scratch_length = 0;	}	return (dpy->scratch_buffer);}/* * Given a visual id, find the visual structure for this id on this display. */Visual *_XVIDtoVisual (dpy, id)	Display *dpy;	VisualID id;{	register int i, j, k;	register Screen *sp;	register Depth *dp;	register Visual *vp;	for (i = 0; i < dpy->nscreens; i++) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -