summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:35 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:35 +0000
commit4382611f85dc0dcbfc7cca9a4ba175b3bc83da14 (patch)
tree31da251511be332efddf49f317ed3b2764b92d87
downloadxorg-proto-printproto-4382611f85dc0dcbfc7cca9a4ba175b3bc83da14.tar.gz
R6.6 is the Xorg base-lineXORG-MAINXORG-STABLE
-rw-r--r--Print.h596
-rw-r--r--Printstr.h732
2 files changed, 1328 insertions, 0 deletions
diff --git a/Print.h b/Print.h
new file mode 100644
index 0000000..3a8e4f2
--- /dev/null
+++ b/Print.h
@@ -0,0 +1,596 @@
+/* $Xorg: Print.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */
+/******************************************************************************
+ ******************************************************************************
+ **
+ ** File: Print.h
+ **
+ ** Description: Definitions needed by the server, library, and
+ ** clients. Subportion restricted to library and
+ ** clients.
+ **
+ ** Server, Library, Client portion has:
+ ** o All sz_* defines
+ ** o Revision and Name defines
+ ** o Common defines and constants (e.g. Keywords, Masks)
+ ** o Extension version structure
+ **
+ ** Library and client subportion has:
+ ** o Convience Marcos
+ ** o Client side data structures
+ ** o Client side event structures (non wire)
+ ** o Library function prototypes
+ ** o some private stuff denoted with _whatever
+ **
+ ** Printstr.h for server and library, but NOT clients.
+ **
+ ******************************************************************************
+ **
+ ** (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.
+ **
+ ******************************************************************************
+ *****************************************************************************/
+
+#ifndef _XpPrint_H_
+#define _XpPrint_H_
+
+#ifndef _XP_PRINT_SERVER_
+#include <X11/Xlib.h>
+#include <X11/Xresource.h>
+#include <X11/Xauth.h>
+#endif /* _XP_PRINT_SERVER_ */
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+/******************************************************************************
+ *
+ * Definitions used by the server, library and client.
+ */
+
+/********************************************************************
+ *
+ * Naming and versioning information.
+ */
+#define XP_PRINTNAME "XpExtension"
+
+/*
+ * Add a define below for each major extension release.
+ */
+#define XP_DONT_CHECK 0
+#define XP_INITIAL_RELEASE 1
+
+/*
+ * For each single entry above, create one major/minor pair.
+ */
+#define XP_PROTO_MAJOR 1
+#define XP_PROTO_MINOR 0
+
+/*
+ * Identify current version.
+ */
+#define XP_MAJOR_VERSION XP_PROTO_MAJOR
+#define XP_MINOR_VERSION XP_PROTO_MINOR
+
+/*
+ * Misc version defines.
+ */
+#define XP_ABSENT 0 /* Prior to XP Print support */
+#define XP_PRESENT 1 /* With XP Print support */
+
+/********************************************************************
+ *
+ * Xp Print Error codes.
+ */
+#define XP_ERRORS 3 /* number of error types */
+
+#define XPBadContext 0 /* Print Context invalid or missing */
+#define XPBadSequence 1 /* Illegal sequence of XP operations */
+#define XPBadResourceID 2 /* X-resource not valid */
+
+/********************************************************************
+ *
+ * Xp Print Event masks and codes.
+ *
+ */
+#define XP_EVENTS 2 /* number of event types */
+
+#define XPNoEventMask 0 /* not an event - just a null mask */
+#define XPPrintMask (1L<<0)
+#define XPAttributeMask (1L<<1)
+
+#define XPPrintNotify 0 /* contains "detail" - see below */
+#define XPAttributeNotify 1 /* contains "detail" - see below */
+
+#define XPStartJobNotify 0 /* value for "detail" in XPPrintNotify*/
+#define XPEndJobNotify 1
+#define XPStartDocNotify 2
+#define XPEndDocNotify 3
+#define XPStartPageNotify 4
+#define XPEndPageNotify 5
+
+/********************************************************************
+ *
+ * Xp Print Attribute Object codes (subset of ISO DPA 10175). The
+ * Xp Server can get and set any of the values, while the Xp Library
+ * may only be able to set a subset of the attribute objects.
+ *
+ * note: the codes are also used as "detail" for XPAttributeNotify
+ *
+ * note: XPPageAttr is not defined in ISO DPA 10175. It is unique
+ * to Xp, and its attributes are a proper subset of XPDocAttr.
+ */
+typedef unsigned char XPAttributes; /* type of Xp*Attr codes */
+
+#define XP_ATTRIBUTES 5 /* those attrs currently supported */
+
+#define XPJobAttr 1 /* get/set */
+#define XPDocAttr 2 /* get/set */
+#define XPPageAttr 3 /* get/set - subset of XPDocAttr */
+#define XPPrinterAttr 4 /* get only (library) */
+#define XPServerAttr 5 /* get only (library), no
+ context needed */
+
+/*
+ * note: ISO DPA 10175 defines a number of "attribute objects", of
+ * which POSIX 1387.4 and the SI Xp will only support a
+ * subset.
+ */
+#define XPMediumAttr 6 /* DPA-Object Medium */
+#define XPFontAttr 7 /* DPA-Object Font */
+#define XPResAttr 8 /* DPA-Object Resource */
+#define XPTransAttr 9 /* DPA-Object Transfer method */
+#define XPDelAttr 10 /* DPA-Object Delivery method */
+#define XPAuxSPkg 11 /* DPA-Object Auxiliary sheet package */
+#define XPAuxS 12 /* DPA-Object Auxiliary sheet */
+#define XPFinishAttr 13 /* DPA-Object Finishing */
+#define XPOutputAttr 14 /* DPA-Object Output method */
+#define XPImpAttr 15 /* DPA-Object Imposition */
+#define XPSchedAttr 16 /* DPA-Object Scheduler */
+#define XPIntJobAttr 17 /* DPA-Object Initial value job */
+#define XPIntDocAttr 18 /* DPA-Object Initial value document */
+#define XPResConAttr 19 /* DPA-Object Resource context */
+
+
+/*
+ * Replacement rules for XpSetAttributes
+ */
+typedef unsigned char XPAttrReplacement;
+#define XPAttrReplace 1
+#define XPAttrMerge 2
+
+
+/*
+ * Return codes for XpGetDocumentData
+ */
+typedef unsigned char XPGetDocStatus;
+#define XPGetDocFinished 0 /* normal termination */
+#define XPGetDocSecondConsumer 1 /* setup error */
+#define XPGetDocError 2 /* runtime error, see generated error */
+
+
+/*
+ * Save data types for XpStartJob.
+ */
+typedef unsigned char XPSaveData;
+#define XPSpool 1 /* Job data sent to spooler */
+#define XPGetData 2 /* Job data via XpGetDocumentData */
+
+
+/*
+ * Document types for XpStartDoc.
+ */
+typedef unsigned char XPDocumentType;
+#define XPDocNormal 1 /* Doc data handled by Xserver */
+#define XPDocRaw 2 /* Doc data passed through Xserver */
+
+
+/********************************************************************
+ *
+ * Xp Print Property Names
+ */
+
+
+#ifndef _XP_PRINT_SERVER_
+
+/******************************************************************************
+ *
+ * Definitions used by the library and clients only.
+ */
+
+/*******************************************************************
+ *
+ * General API defines and such.
+ */
+
+/*
+ * Print Context for XpInitContext and related calls.
+ */
+typedef XID XPContext;
+
+/*
+ * Struct for XpGetPrinterList.
+ */
+typedef struct {
+ char *name; /* name */
+ char *desc; /* localized description */
+} XPPrinterRec, *XPPrinterList;
+
+/*
+ * Typedefs for XpGetDocumentData
+ */
+typedef void (*XPSaveProc)( Display *display,
+ XPContext context,
+ unsigned char *data,
+ unsigned int data_len,
+ XPointer client_data);
+
+typedef void (*XPFinishProc)( Display *display,
+ XPContext context,
+ XPGetDocStatus status,
+ XPointer client_data);
+
+/*
+ * Typedefs for XpSetLocaleHinter and XpGetLocaleHinter
+ */
+typedef char * (*XPHinterProc)();
+
+/*******************************************************************
+ *
+ * Extension version structures.
+ *
+ */
+typedef struct {
+ int present;
+ short major_version;
+ short minor_version;
+} XExtensionVersion;
+
+/********************************************************************
+ *
+ * Event structs for clients.
+ *
+ * note: these events are relative to a print context, and
+ * not to a window as in core X.
+ */
+typedef struct {
+ int type; /* base + XPPrintNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ XPContext context; /* print context where operation was requested */
+ Bool cancel; /* was detailed event canceled */
+ int detail; /* XPStartJobNotify, XPEndJobNotify,
+ XPStartDocNotify, XPEndDocNotify,
+ XPStartPageNotify, XPEndPageNotify */
+} XPPrintEvent;
+
+typedef struct {
+ int type; /* base + XPAttributeNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ XPContext context; /* print context where operation was requested */
+ int detail; /* XPJobAttr, XPDocAttr, XPPageAttr,
+ XPPrinterAttr, XPSpoolerAttr,
+ XPMediumAttr, XPServerAttr */
+} XPAttributeEvent;
+
+typedef struct {
+ int type; /* base + XPDataReadyNotify */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ XPContext context; /* print context where operation was requested */
+ unsigned long available; /* bytes available for retrieval */
+} XPDataReadyEvent;
+
+
+/**********************************************************
+ *
+ * Function prototypes for library side.
+ */
+
+#if NeedFunctionPrototypes
+
+extern XPContext XpCreateContext (
+ Display *display,
+ char *printer_name
+);
+
+extern void XpSetContext (
+ Display *display,
+ XPContext print_context
+);
+
+extern XPContext XpGetContext (
+ Display *display
+);
+
+extern void XpDestroyContext (
+ Display *display,
+ XPContext print_context
+);
+
+extern Screen *XpGetScreenOfContext (
+ Display *display,
+ XPContext print_context
+);
+
+extern Status XpGetPageDimensions (
+ Display *display,
+ XPContext print_context,
+ unsigned short *width, /* return value */
+ unsigned short *height, /* return value */
+ XRectangle *reproducible_area /* return value */
+);
+
+extern void XpStartJob (
+ Display *display,
+ XPSaveData save_data
+);
+
+extern void XpEndJob (
+ Display *display
+);
+
+extern void XpCancelJob (
+ Display *display,
+ Bool discard
+);
+
+extern void XpStartDoc (
+ Display *display,
+ XPDocumentType type
+);
+
+extern void XpEndDoc (
+ Display *display
+);
+
+extern void XpCancelDoc (
+ Display *display,
+ Bool discard
+);
+
+extern void XpPutDocumentData (
+ Display *display,
+ Drawable drawable,
+ unsigned char *data,
+ int data_len,
+ char *doc_fmt,
+ char *options
+);
+
+extern Status XpGetDocumentData (
+ Display *display,
+ XPContext context,
+ XPSaveProc save_proc,
+ XPFinishProc finish_proc,
+ XPointer client_data
+);
+
+extern void XpStartPage (
+ Display *display,
+ Window window
+);
+
+extern void XpEndPage (
+ Display *display
+);
+
+extern void XpCancelPage (
+ Display *display,
+ Bool discard
+);
+
+extern void XpSelectInput (
+ Display *display,
+ XPContext print_context,
+ unsigned long event_mask
+);
+
+extern unsigned long XpInputSelected (
+ Display *display,
+ XPContext print_context,
+ unsigned long *all_events_mask
+);
+
+extern Bool XpSetImageResolution (
+ Display *display,
+ XPContext print_context,
+ int image_res,
+ int *prev_res
+);
+
+extern int XpGetImageResolution (
+ Display *display,
+ XPContext print_context
+);
+
+extern char *XpGetAttributes (
+ Display *display,
+ XPContext print_context,
+ XPAttributes type
+);
+
+extern void XpSetAttributes (
+ Display *display,
+ XPContext print_context,
+ XPAttributes type,
+ char *pool,
+ XPAttrReplacement replacement_rule
+);
+
+extern char *XpGetOneAttribute (
+ Display *display,
+ XPContext print_context,
+ XPAttributes type,
+ char *attribute_name
+);
+
+extern XPPrinterList XpGetPrinterList (
+ Display *display,
+ char *printer_name,
+ int *list_count /* return value */
+);
+
+extern void XpFreePrinterList (
+ XPPrinterList printer_list
+);
+
+extern void XpRehashPrinterList (
+ Display *display
+);
+
+extern Status XpQueryVersion (
+ Display *display,
+ short *major_version, /* return value */
+ short *minor_version /* return value */
+);
+
+extern Bool XpQueryExtension (
+ Display *display,
+ int *event_base_return, /* return value */
+ int *error_base_return /* return value */
+);
+
+extern Screen **XpQueryScreens (
+ Display *display,
+ int *list_count /* return value */
+);
+
+extern Status XpGetPdmStartParams (
+ Display *print_display,
+ Window print_window,
+ XPContext print_context,
+ Display *video_display,
+ Window video_window,
+ Display **selection_display, /* return value */
+ Atom *selection, /* return value */
+ Atom *type, /* return value */
+ int *format, /* return value */
+ unsigned char **data, /* return value */
+ int *nelements /* return value */
+);
+
+extern Status XpGetAuthParams (
+ Display *print_display,
+ Display *video_display,
+ Display **selection_display, /* return value */
+ Atom *selection, /* return value */
+ Atom *target /* return value */
+);
+
+extern Status XpSendAuth (
+ Display *display,
+ Window window
+);
+
+extern Status XpSendOneTicket (
+ Display *display,
+ Window window,
+ Xauth *ticket,
+ Bool more
+);
+
+extern void XpSetLocaleHinter (
+ XPHinterProc hinter_proc,
+ char *hinter_desc
+);
+
+extern char *XpGetLocaleHinter (
+ XPHinterProc *hinter_proc
+);
+
+
+
+
+extern char *XpGetLocaleNetString();
+
+extern char *XpNotifyPdm (
+ Display *print_display,
+ Window print_window,
+ XPContext print_context,
+ Display *video_display,
+ Window video_window,
+ Bool auth_flag
+);
+
+#else
+
+extern XPContext XpCreateContext ();
+extern void XpSetContext ();
+extern XPContext XpGetContext ();
+extern void XpDestroyContext ();
+extern Screen *XpGetScreenOfContext ();
+extern Status XpGetPageDimensions ();
+extern void XpStartJob ();
+extern void XpEndJob ();
+extern void XpCancelJob ();
+extern void XpStartDoc ();
+extern void XpEndDoc ();
+extern void XpCancelDoc ();
+extern void XpPutDocumentData ();
+extern Status XpGetDocumentData ();
+extern void XpStartPage ();
+extern void XpEndPage ();
+extern void XpCancelPage ();
+extern void XpSelectInput ();
+extern unsigned long XpInputSelected ();
+extern Bool XpSetImageResolution ();
+extern int XpGetImageResolution ();
+extern char *XpGetAttributes ();
+extern void XpSetAttributes ();
+extern char *XpGetOneAttribute ();
+extern XPPrinterList XpGetPrinterList ();
+extern void XpFreePrinterList ();
+extern void XpRehashPrinterList ();
+extern Status XpQueryVersion ();
+extern Bool XpQueryExtension ();
+extern Screen **XpQueryScreens ();
+extern Status XpGetPdmStartParams ();
+extern Status XpGetAuthParams ();
+extern Status XpSendAuth ();
+extern Status XpSendOneTicket ();
+extern void XpSetLocaleHinter ();
+extern char *XpGetLocaleHinter ();
+
+extern char *XpGetLocaleNetString ();
+extern char *XpNotifyPdm ();
+
+#endif /* NeedFunctionPrototypes */
+
+#endif /* _XP_PRINT_SERVER_ */
+
+_XFUNCPROTOEND
+
+#endif /* _XpPrint_H_ */
diff --git a/Printstr.h b/Printstr.h
new file mode 100644
index 0000000..2adda4f
--- /dev/null
+++ b/Printstr.h
@@ -0,0 +1,732 @@
+/* $Xorg: Printstr.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */
+/******************************************************************************
+ ******************************************************************************
+ **
+ ** File: Printstr.h
+ **
+ ** Description: Definitions needed by the server and library, but
+ ** not clients.
+ **
+ ** Print.h for server, library and clients.
+ **
+ ******************************************************************************
+ **
+ ** (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.
+ **
+ ******************************************************************************
+ *****************************************************************************/
+
+
+#ifndef _XpPrintstr_H_
+#define _XpPrintstr_H_
+
+/*
+ * NEED_EVENTS and NEED_REPLIES are hacks to limit the linker symbol-table
+ * size. When function prototypes are needed from Print.h, this sets up
+ * a cascading dependency on Printstr.h and eventually Xproto.h to provide
+ * the event and reply struct definitions.
+ */
+#ifndef NEED_EVENTS
+#define NEED_EVENTS
+#endif /* NEED_EVENTS */
+
+#define NEED_REPLIES
+
+#include <X11/Xproto.h>
+#ifndef _XP_PRINT_SERVER_
+#include <X11/Xlib.h>
+#endif /* _XP_PRINT_SERVER_ */
+
+/*
+ * Pull in other definitions. Print.h will hide some things if we're
+ * doing server side work.
+ */
+#include <X11/extensions/Print.h>
+
+#include <X11/Xfuncproto.h>
+
+_XFUNCPROTOBEGIN
+
+/******************************************************************************
+ *
+ * Protocol requests constants and alignment values
+ *
+ * Note: Xlib macro's expect X_ABC where ABC is the name of the
+ * protocol request.
+ */
+#define X_PrintQueryVersion 0
+#define X_PrintGetPrinterList 1
+#define X_PrintCreateContext 2
+#define X_PrintSetContext 3
+#define X_PrintGetContext 4
+#define X_PrintDestroyContext 5
+#define X_PrintGetContextScreen 6
+#define X_PrintStartJob 7
+#define X_PrintEndJob 8
+#define X_PrintStartDoc 9
+#define X_PrintEndDoc 10
+#define X_PrintPutDocumentData 11
+#define X_PrintGetDocumentData 12
+#define X_PrintStartPage 13
+#define X_PrintEndPage 14
+#define X_PrintSelectInput 15
+#define X_PrintInputSelected 16
+#define X_PrintGetAttributes 17
+#define X_PrintSetAttributes 18
+#define X_PrintGetOneAttribute 19
+#define X_PrintRehashPrinterList 20
+#define X_PrintGetPageDimensions 21
+#define X_PrintQueryScreens 22
+#define X_PrintSetImageResolution 23
+#define X_PrintGetImageResolution 24
+
+/********************************************************************
+ *
+ * Protocol data types
+ */
+#define PCONTEXT CARD32
+#define WINDOW CARD32
+#define DRAWABLE CARD32
+#define BITMASK CARD32
+
+/******************************************************************************
+ *
+ * Event wire struct definitions
+ *
+ * Note: Xlib macro's expect xABC struct names and sz_xABC size
+ * constants where ABC is the name of the protocol request.
+ */
+
+
+/*********************************************************************
+ *
+ * Events.
+ *
+ * See Print.h for the protocol "type" values.
+ */
+typedef struct _xPrintPrintEvent {
+ BYTE type; /* XPPrintNotify + extEntry->eventBase */
+ BYTE detail; /* XPStartJobNotify, XPEndJobNotify,
+ XPStartDocNotify, XPEndDocNotify,
+ XPStartPageNotify, XPEndPageNotify */
+ CARD16 sequenceNumber B16;
+ PCONTEXT printContext B32; /* print context */
+ BOOL cancel; /* canceled flag */
+ CARD8 pad1; /* rest is unused */
+ CARD16 pad2 B16;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+} xPrintPrintEvent;
+#define sz_xPrintPrintEvent 32;
+
+typedef struct _xPrintAttributeEvent {
+ BYTE type; /* XPAttributeNotify + extEntry->eventBase */
+ BYTE detail; /* XPJobAttr, XPDocAttr, XPPageAttr,
+ XPPrinterAttr, XPSpoolerAttr,
+ XPMediumAttr, XPServerAttr */
+ CARD16 sequenceNumber B16;
+ PCONTEXT printContext B32; /* print context */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xPrintAttributeEvent;
+#define sz_xPrintAttributeEvent 32;
+
+
+/*********************************************************************
+ *
+ * Requests
+ */
+typedef struct _PrintQueryVersion {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintQueryVersion */
+ CARD16 length B16;
+} xPrintQueryVersionReq;
+#define sz_xPrintQueryVersionReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of Xp protocol */
+ CARD16 minorVersion B16; /* minor version of Xp protocol */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xPrintQueryVersionReply;
+#define sz_xPrintQueryVersionReply 32
+
+
+typedef struct _PrintGetPrinterList {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetPrinterList */
+ CARD16 length B16;
+ CARD32 printerNameLen B32; /* length of printer name */
+ CARD32 localeLen B32; /* length of locale string */
+
+ /* variable portion *****************************************
+ STRING8 printerName; * printer name *
+ BYTE pad(printerNameLen) * unused *
+ STRING8 locale; * locale *
+ BYTE pad(localeLen) * unused *
+ ************************************************************/
+} xPrintGetPrinterListReq;
+#define sz_xPrintGetPrinterListReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 listCount B32; /* of PRINTER recs below */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+ /* variable portion *****************************************
+ CARD32 nameLen B32; * length of name in bytes *
+ STRING8 name; * name *
+ BYTE pad(nameLen) * unused *
+
+ CARD32 descLen B32; * length of desc in bytes *
+ STRING8 desc; * localized description *
+ BYTE pad(descLen) * unused *
+ ************************************************************/
+} xPrintGetPrinterListReply;
+#define sz_xPrintGetPrinterListReply 32
+
+
+typedef struct _PrintRehashPrinterList {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintRehashPrinterList */
+ CARD16 length B16;
+} xPrintRehashPrinterListReq;
+#define sz_xPrintRehashPrinterListReq 4
+
+
+typedef struct _PrintCreateContext {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintInitSetContext */
+ CARD16 length B16;
+ CARD32 contextID B32; /* ID for context */
+ CARD32 printerNameLen B32; /* length of printerName in bytes */
+ CARD32 localeLen B32; /* length of locale in bytes */
+
+ /* variable portion *****************************************
+ STRING8 printerName * printer name *
+ BYTE pad(printerNameLen) * unused *
+ STRING8 locale * locale *
+ BYTE pad(locale) * unused *
+ ************************************************************/
+} xPrintCreateContextReq;
+#define sz_xPrintCreateContextReq 16
+
+
+typedef struct _PrintSetContext {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintSetContext */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+} xPrintSetContextReq;
+#define sz_xPrintSetContextReq 8
+
+
+typedef struct _PrintGetContext {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetContext */
+ CARD16 length B16;
+} xPrintGetContextReq;
+#define sz_xPrintGetContextReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ PCONTEXT printContext B32; /* print context */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xPrintGetContextReply;
+#define sz_xPrintGetContextReply 32
+
+
+typedef struct _PrintDestroyContext {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintDestroyContext */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+} xPrintDestroyContextReq;
+#define sz_xPrintDestroyContextReq 8
+
+
+typedef struct _PrintGetContextScreen {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetContextScreen */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+} xPrintGetContextScreenReq;
+#define sz_xPrintGetContextScreenReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ WINDOW rootWindow; /* screenPtr represented as rootWin */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+} xPrintGetContextScreenReply;
+#define sz_xPrintGetContextScreenReply 32
+
+
+typedef struct _PrintStartJob {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintStartJob */
+ CARD16 length B16;
+ CARD8 saveData; /* save data boolean */
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xPrintStartJobReq;
+#define sz_xPrintStartJobReq 8
+
+typedef struct _PrintEndJob {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintEndJob */
+ CARD16 length B16;
+ BOOL cancel; /* cancel boolean */
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xPrintEndJobReq;
+#define sz_xPrintEndJobReq 8
+
+
+typedef struct _PrintStartDoc {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintStartDoc */
+ CARD16 length B16;
+ CARD8 type; /* type for document */
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xPrintStartDocReq;
+#define sz_xPrintStartDocReq 8
+
+typedef struct _PrintEndDoc {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintEndDoc */
+ CARD16 length B16;
+ BOOL cancel; /* cancel boolean */
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xPrintEndDocReq;
+#define sz_xPrintEndDocReq 8
+
+
+typedef struct _PrintPutDocumentData {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintPutDocumentData */
+ CARD16 length B16;
+ DRAWABLE drawable B32; /* target drawable */
+ CARD32 len_data B32; /* big len in bytes */
+ CARD16 len_fmt; /* len in bytes */
+ CARD16 len_options; /* len in bytes */
+
+ /* variable portion *****************************************
+ LISTofBYTE data; * data *
+ BYTE pad(len_data) * unused *
+ STRING8 doc_fmt; * ISO compliant desc of data type *
+ BYTE pad(len_fmt) * unused *
+ STRING8 options; * additional device-dependent desc *
+ BYTE pad(len_options) * unused *
+ ************************************************************/
+} xPrintPutDocumentDataReq;
+#define sz_xPrintPutDocumentDataReq 16
+
+
+typedef struct _PrintGetDocumentData {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetDocumentData */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+ CARD32 maxBufferSize B32; /* maximum buffer size requested */
+} xPrintGetDocumentDataReq;
+#define sz_xPrintGetDocumentDataReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 statusCode B32; /* status code for reply */
+ CARD32 finishedFlag B32; /* is this the last reply */
+ CARD32 dataLen B32; /* data length */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+
+ /* variable portion *****************************************
+ LISTofBYTE data; * data *
+ BYTE pad(count) * unused *
+ ************************************************************/
+} xPrintGetDocumentDataReply;
+#define sz_xPrintGetDocumentDataReply 32
+
+
+typedef struct _PrintStartPage {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintStartPage */
+ CARD16 length B16;
+ WINDOW window B32; /* window */
+} xPrintStartPageReq;
+#define sz_xPrintStartPageReq 8
+
+typedef struct _PrintEndPage {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintEndPage */
+ CARD16 length B16;
+ BOOL cancel; /* cancel boolean */
+ CARD8 pad1;
+ CARD16 pad2 B16;
+} xPrintEndPageReq;
+#define sz_xPrintEndPageReq 8
+
+
+typedef struct _PrintSelectInput {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintSelectInput */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+ BITMASK eventMask B32;
+} xPrintSelectInputReq;
+#define sz_xPrintSelectInputReq 12
+
+
+typedef struct _PrintInputSelected {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintInputSelected */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+} xPrintInputSelectedReq;
+#define sz_xPrintInputSelectedReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BITMASK eventMask B32; /* your event mask */
+ BITMASK allEventsMask B32; /* all event mask */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+} xPrintInputSelectedReply;
+#define sz_xPrintInputSelectedReply 32
+
+typedef struct _PrintGetAttributes {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetAttributes */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+ CARD8 type; /* type */
+ CARD8 pad1; /* unused */
+ CARD16 pad2 B16; /* unused */
+} xPrintGetAttributesReq;
+#define sz_xPrintGetAttributesReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 stringLen B32; /* length of xrm db string */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+ /* variable portion *****************************************
+ STRING8 string; * xrm db as a string *
+ BYTE pad(stringLen) * unused *
+ ************************************************************/
+} xPrintGetAttributesReply;
+#define sz_xPrintGetAttributesReply 32
+
+
+typedef struct _PrintSetAttributes {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintSetAttributes */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+ CARD32 stringLen B32; /* length of xrm db string */
+ CARD8 type; /* type */
+ CARD8 rule; /* replacement rule */
+ CARD16 pad1 B16; /* unused */
+
+ /* variable portion *****************************************
+ STRING8 string; * xrm db as a string *
+ BYTE pad(stringLen) * unused *
+ ************************************************************/
+} xPrintSetAttributesReq;
+#define sz_xPrintSetAttributesReq 16
+
+
+typedef struct _PrintGetOneAttribute {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetOneAttribute */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+ CARD32 nameLen; /* length of name string */
+ CARD8 type; /* type */
+ CARD8 pad1; /* unused */
+ CARD16 pad2 B16; /* unused */
+
+ /* variable portion *****************************************
+ STRING8 name; * name as a string *
+ BYTE pad(name) * unused *
+ ************************************************************/
+} xPrintGetOneAttributeReq;
+#define sz_xPrintGetOneAttributeReq 16
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 valueLen B32; /* length of value string */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+ /* variable portion *****************************************
+ STRING8 value; * value as a string *
+ BYTE pad(value) * unused *
+ ************************************************************/
+} xPrintGetOneAttributeReply;
+#define sz_xPrintGetOneAttributeReply 32
+
+
+typedef struct _PrintGetPageDimensions {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetPageDimensions */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+} xPrintGetPageDimensionsReq;
+#define sz_xPrintGetPageDimensionsReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 width; /* total pixel width */
+ CARD16 height; /* total pixel height */
+ CARD16 rx; /* reproducable x pixel offset */
+ CARD16 ry; /* reproducable y pixel offset */
+ CARD16 rwidth; /* reproducable x pixel width */
+ CARD16 rheight; /* reproducable y pixel width */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xPrintGetPageDimensionsReply;
+#define sz_xPrintGetPageDimensionsReply 32
+
+
+typedef struct _PrintQueryScreens {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintQueryScreens */
+ CARD16 length B16;
+} xPrintQueryScreensReq;
+#define sz_xPrintQueryScreensReq 4
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused; /* not used */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 listCount; /* number of screens following */
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+
+ /* variable portion *****************************************
+ WINDOW rootWindow; * root window of screen *
+ ************************************************************/
+} xPrintQueryScreensReply;
+#define sz_xPrintQueryScreensReply 32
+
+typedef struct _PrintSetImageResolution {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintSetImageResolution */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+ CARD16 imageRes B16; /* image resolution */
+ CARD16 pad1 B16;
+} xPrintSetImageResolutionReq;
+#define sz_xPrintSetImageResolutionReq 12
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ BOOL status; /* accepted or not */
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 prevRes B16; /* previous resolution */
+ CARD16 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xPrintSetImageResolutionReply;
+#define sz_xPrintSetImageResolutionReply 32
+
+typedef struct _PrintGetImageResolution {
+ CARD8 reqType; /* always PrintReqCode */
+ CARD8 printReqType; /* always X_PrintGetImageResolution */
+ CARD16 length B16;
+ PCONTEXT printContext B32; /* print context */
+} xPrintGetImageResolutionReq;
+#define sz_xPrintGetImageResolutionReq 8
+
+typedef struct {
+ BYTE type; /* X_Reply */
+ CARD8 unused;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 imageRes B16; /* image resolution */
+ CARD16 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xPrintGetImageResolutionReply;
+#define sz_xPrintGetImageResolutionReply 32
+
+#ifndef _XP_PRINT_SERVER_
+/***********************************************************************
+ *
+ * Library-only definitions.
+ */
+extern XPHinterProc _xp_hinter_proc;
+extern char *_xp_hinter_desc;
+extern int _xp_hinter_init;
+
+#endif /* _XP_PRINT_SERVER_ */
+
+#ifdef _XP_PRINT_SERVER_
+/***********************************************************************
+ *
+ * Server-only definitions shared between the extension and DDX layers.
+ *
+ */
+
+/*
+ * Internal return code used to indicate that the requesting
+ * client has been suspended.
+ */
+#define Suspended 84
+
+extern void XpRegisterPrinterScreen(
+ ScreenPtr pScreen,
+ int (*CreateContext)());
+
+typedef struct _xpprintFuncs {
+ int (*StartJob)(); /* pContext, client */
+ int (*EndJob)(); /* pContext, client */
+ int (*StartDoc)(); /* pContext, client */
+ int (*EndDoc)(); /* pContext, client */
+ int (*StartPage)(); /* pContext, pWin, client, exposures */
+ int (*EndPage)(); /* pContext, client */
+ int (*PutDocumentData)(); /* pContext,pDraw,pData,len_data,pFmt,len_fmt,pOpt,len_opt, client */
+ int (*GetDocumentData)(); /* pContext,pData,len_data,pFmt,len_fmt,pOpt,len_opt, client */
+ int (*DestroyContext)(); /* pContext, client */
+ char *(*GetAttributes)(); /* pContext, pool */
+ char *(*GetOneAttribute)(); /* pContext, pool, attr */
+ int (*SetAttributes)(); /* pContext, pool, attrs */
+ int (*AugmentAttributes)(); /* pContext, pool, attrs */
+ int (*GetMediumDimensions)(); /* pPrintContext, pWidth, pHeight */
+ int (*GetReproducibleArea)(); /* pPrintContext, pRect */
+ int (*SetImageResolution)(); /* pPrintContext, imageRes, pStatus */
+} XpDriverFuncs, *XpDriverFuncsPtr;
+
+/*
+ * Each print context is represented by one of the following structs
+ * associated with a resource ID of type RTcontext . A pointer to
+ * the context is placed in the Xp extension's devPrivates
+ * element in each client * which establishes a context via
+ * either initContext or setContext.
+ * The context pointer is also placed in the struct indicated by the
+ * RTpage resource associated with each StartPage'd window.
+ */
+typedef struct _XpContext {
+ XID contextID;
+ char *printerName;
+ int screenNum; /* screen containing the printer */
+ struct _XpClient *clientHead; /* list of clients */
+ CARD32 state;
+ VisualID pageWin;
+ DevUnion *devPrivates;
+ XpDriverFuncs funcs;
+ ClientPtr clientSlept;
+ int imageRes;
+} XpContextRec, *XpContextPtr;
+
+extern XpContextPtr XpGetPrintContext(
+ ClientPtr client);
+
+#endif /* _XP_PRINT_SERVER_ */
+
+_XFUNCPROTOEND
+
+#endif /* _XpPrintstr_H_ */
+