diff options
Diffstat (limited to 'nx-X11/lib/Xp/XpExtUtil.c')
-rw-r--r-- | nx-X11/lib/Xp/XpExtUtil.c | 355 |
1 files changed, 0 insertions, 355 deletions
diff --git a/nx-X11/lib/Xp/XpExtUtil.c b/nx-X11/lib/Xp/XpExtUtil.c deleted file mode 100644 index dac80286f..000000000 --- a/nx-X11/lib/Xp/XpExtUtil.c +++ /dev/null @@ -1,355 +0,0 @@ -/* $Xorg: XpExtUtil.c,v 1.3 2000/08/17 19:46:06 cpqbld Exp $ */ -/****************************************************************************** - ****************************************************************************** - ** - ** (c) Copyright 1996 Hewlett-Packard Company - ** (c) Copyright 1996 International Business Machines Corp. - ** (c) Copyright 1996 Sun Microsystems, Inc. - ** (c) Copyright 1996 Novell, Inc. - ** (c) Copyright 1996 Digital Equipment Corp. - ** (c) Copyright 1996 Fujitsu Limited - ** (c) Copyright 1996 Hitachi, Ltd. - ** - ** Permission is hereby granted, free of charge, to any person obtaining a copy - ** of this software and associated documentation files (the "Software"), to deal - ** in the Software without restriction, including without limitation the rights - ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - ** copies of the Software, and to permit persons to whom the Software is - ** furnished to do so, subject to the following conditions: - ** - ** The above copyright notice and this permission notice shall be included in - ** all copies or substantial portions of the Software. - ** - ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - ** COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - ** IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - ** CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ** - ** Except as contained in this notice, the names of the copyright holders shall - ** not be used in advertising or otherwise to promote the sale, use or other - ** dealings in this Software without prior written authorization from said - ** copyright holders. - ** - ****************************************************************************** - *****************************************************************************/ -/* $XFree86: xc/lib/Xp/XpExtUtil.c,v 1.7 2002/10/16 00:37:31 dawes Exp $ */ - -#define NEED_EVENTS -#define NEED_REPLIES -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif -#include <stdio.h> -#include <X11/extensions/Printstr.h> -#include <X11/Xlibint.h> -#include "XpExtUtil.h" -#include <X11/Xos.h> - -#define ENQUEUE_EVENT True -#define DONT_ENQUEUE False - -static XExtensionInfo xp_info_data; -static XExtensionInfo *xp_info = &xp_info_data; -static /* const */ char *xp_extension_name = XP_PRINTNAME; - -static int XpClose(); -static char *XpError(); -static Bool XpWireToEvent(); -static Status XpEventToWire(); - -#define XpCheckExtension(dpy,i,val) \ - XextCheckExtension (dpy, i, xp_extension_name, val) - -static /* const */ XExtensionHooks xpprint_extension_hooks = { - NULL, /* create_gc */ - NULL, /* copy_gc */ - NULL, /* flush_gc */ - NULL, /* free_gc */ - NULL, /* create_font */ - NULL, /* free_font */ - XpClose, /* close_display */ - XpWireToEvent, /* wire_to_event */ - XpEventToWire, /* event_to_wire */ - NULL, /* error */ - XpError, /* error_string */ -}; - -typedef struct { - int present; - short major_version; - short minor_version; -} XPrintLocalExtensionVersion; - -typedef struct _xpPrintData { - XEvent data; - XPrintLocalExtensionVersion *vers; -} xpPrintData; - -static char *XpErrorList[ /* XP_ERRORS */ ] = { - "XPBadContext", - "XPBadSequence", - "XPBadResourceID" -}; - -XEXT_GENERATE_FIND_DISPLAY (xp_find_display, xp_info, - xp_extension_name, &xpprint_extension_hooks, XP_EVENTS, NULL) - -static XEXT_GENERATE_ERROR_STRING (XpError, xp_extension_name, - XP_ERRORS, XpErrorList) - -/******************************************************************* - * - * XP Print extension versions. - */ - -static XPrintLocalExtensionVersion xpprintversions[] = {{XP_ABSENT,0,0}, - {XP_PRESENT, XP_PROTO_MAJOR, XP_PROTO_MINOR}}; - - -/*********************************************************************** - * - * Check to see if the Xp Print extension is installed in the server. - * Also check to see if the version is >= the requested version. - * - * xpprintversions[] shows all revisions of this library, past to present. - * xpprintversions[version_index] shows which version *this* library is. - */ - -int XpCheckExtInitUnlocked(dpy, version_index) - register Display *dpy; - register int version_index; -{ - XExtDisplayInfo *info = xp_find_display (dpy); - - XpCheckExtension (dpy, info, -1); - - - /* - * Check for broken condition - a partial info world. - */ - if (info->data) { - if (!(((xpPrintData *) info->data)->vers)) { - return (-1); - } - } - - if (info->data == NULL) { - /* - * Hang a Xp private data struct. Use it for version - * information. - */ - info->data = (XPointer) Xmalloc (sizeof (xpPrintData)); - if (!info->data) { - return (-1); - } - - ((xpPrintData *) info->data)->vers = - (XPrintLocalExtensionVersion *) Xmalloc(sizeof(XPrintLocalExtensionVersion)); - if (!(((xpPrintData *) info->data)->vers)) { - return (-1); - } - - /* - * Set present to false so that XpQueryVersion will fill - * it in vs using its own cache which now contains garbage. - */ - ((xpPrintData *) info->data)->vers->present = False; - - ((xpPrintData *) info->data)->vers->present = XpQueryVersion(dpy, - &(((xpPrintData *) info->data)->vers->major_version), - &(((xpPrintData *) info->data)->vers->minor_version) ); - } - if (xpprintversions[version_index].major_version > XP_DONT_CHECK) { - if ( ( ((xpPrintData *) info->data)->vers->major_version - < xpprintversions[version_index].major_version) || - ( (((xpPrintData *) info->data)->vers->major_version - == xpprintversions[version_index].major_version) && - (((xpPrintData *) info->data)->vers->minor_version - < xpprintversions[version_index].minor_version))) { - return (-1); - } - } - - return (0); -} - -int XpCheckExtInit(dpy, version_index) - register Display *dpy; - register int version_index; -{ - int retval; - - _XLockMutex(_Xglobal_lock); - - retval = XpCheckExtInitUnlocked(dpy, version_index); - - _XUnlockMutex(_Xglobal_lock); - - return retval; -} - -/*********************************************************************** - * - * Close display routine. - * - */ - -static int -XpClose (dpy, codes) - Display *dpy; - XExtCodes *codes; - { - XExtDisplayInfo *info = xp_find_display (dpy); - - _XLockMutex(_Xglobal_lock); - if ( ((xpPrintData *) info->data)) { - if (((xpPrintData *) info->data)->vers) { - XFree((char *)((xpPrintData *) info->data)->vers); - } - XFree((char *)info->data); - info->data = (char *) NULL; /* NULL since tests are run on */ - } - _XUnlockMutex(_Xglobal_lock); - - return XextRemoveDisplay (xp_info, dpy); - } - - -/****************************************************************************** - * - * Handle extension events. - */ - -/******************************************************************** - * - * Reformat a wire event into an XEvent structure of the right type. - */ -static Bool -XpWireToEvent (dpy, re, event) - Display *dpy; - XEvent *re; - xEvent *event; -{ - XExtDisplayInfo *info = xp_find_display (dpy); - - - /* - * type, serial, send_event, display are common to all events. - */ - re->type = event->u.u.type & 0x7f; - ((XAnyEvent *)re)->serial = _XSetLastRequestRead(dpy, - (xGenericReply *)event); - ((XAnyEvent *)re)->send_event = ((event->u.u.type & 0x80) != 0); - ((XAnyEvent *)re)->display = dpy; - - - switch (re->type - info->codes->first_event) - { - - case XPPrintNotify: - { - register XPPrintEvent *ev = (XPPrintEvent *) re; - xPrintPrintEvent *ev2 = (xPrintPrintEvent *) event; - - /* type, serial, send_event, *display */ - - ev->context = (XPContext) ev2->printContext; - ev->cancel = (Bool) ev2->cancel; - ev->detail = (int) ev2->detail; - - return (ENQUEUE_EVENT); - break; - } - - case XPAttributeNotify: - { - register XPAttributeEvent *ev = (XPAttributeEvent *) re; - xPrintAttributeEvent *ev2 = (xPrintAttributeEvent *) event; - - /* type, serial, send_event, *display */ - - ev->context = (XPContext) ev2->printContext; - ev->detail = (int) ev2->detail; - - return (ENQUEUE_EVENT); - break; - } - - default: - printf ("XpWireToEvent: UNKNOWN WIRE EVENT! type=%d\n",re->type); - break; - } - - return (DONT_ENQUEUE); -} - -/******************************************************************** - * - * Reformat an XEvent into a wire event. - */ -static Status -XpEventToWire(dpy, re, event, count) - register Display *dpy; /* pointer to display structure */ - register XEvent *re; /* pointer to client event */ - register xEvent **event; /* wire protocol event */ - register int *count; -{ - XExtDisplayInfo *info = (XExtDisplayInfo *) xp_find_display (dpy); - - switch ((re->type & 0x7f) - info->codes->first_event) - { -#ifdef PRINT_SomeEventExample2 - case PRINT_SomeEventExample: - { - register XDeviceKeyEvent *ev = (XDeviceKeyEvent*) re; - register deviceKeyButtonPointer *kev; - register deviceValuator *vev; - int i; - - *count = 2; - kev = (deviceKeyButtonPointer *) Xmalloc (*count * sizeof (xEvent)); - if (!kev) - return(_XUnknownNativeEvent(dpy, re, event)); - *event = (xEvent *) kev; - - kev->type = ev->type; - kev->root = ev->root; - kev->event = ev->window; - kev->child = ev->subwindow; - kev->time = ev->time; - kev->event_x = ev->x ; - kev->event_y = ev->y ; - kev->root_x = ev->x_root; - kev->root_y = ev->y_root; - kev->state = ev->state; - kev->same_screen = ev->same_screen; - kev->detail = ev->keycode; - kev->deviceid = ev->deviceid | MORE_EVENTS; - - vev = (deviceValuator *) ++kev; - vev->type = info->codes->first_event + XI_DeviceValuator; - vev->deviceid = ev->deviceid; - vev->device_state = ev->device_state; - vev->first_valuator = ev->first_axis; - vev->num_valuators = ev->axes_count; - i = vev->num_valuators; - if (i > 6) i = 6; - switch (i) - { - case 6: vev->valuator5 = ev->axis_data[5]; - case 5: vev->valuator4 = ev->axis_data[4]; - case 4: vev->valuator3 = ev->axis_data[3]; - case 3: vev->valuator2 = ev->axis_data[2]; - case 2: vev->valuator1 = ev->axis_data[1]; - case 1: vev->valuator0 = ev->axis_data[0]; - } - break; - } -#endif /* PRINT_SomeEventExample2 */ - - default: - return(_XUnknownNativeEvent(dpy, re, *event)); - } -} |