diff options
Diffstat (limited to 'Printstr.h')
-rw-r--r-- | Printstr.h | 781 |
1 files changed, 781 insertions, 0 deletions
diff --git a/Printstr.h b/Printstr.h new file mode 100644 index 0000000..1d763c6 --- /dev/null +++ b/Printstr.h @@ -0,0 +1,781 @@ +/* $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, Oracle and/or its affiliates. All rights reserved. + ** (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/include/extensions/Printstr.h,v 1.5 2001/08/01 00:44:35 tsi Exp $ */ + + +#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; + +#else /* _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 + +struct _XpContext; + +extern void XpRegisterPrinterScreen( + ScreenPtr pScreen, + int (*CreateContext)(struct _XpContext *)); + +typedef struct _xpprintFuncs { + int (*StartJob)( + struct _XpContext * /* pContext */, + Bool /* sendClientData */, + ClientPtr /* client */); + int (*EndJob)(struct _XpContext *, int); + int (*StartDoc)( + struct _XpContext * /* pContext */, + XPDocumentType /* type */); + int (*EndDoc)(struct _XpContext *, int); + int (*StartPage)( + struct _XpContext * /* pContext */, + WindowPtr /* pWin */); + int (*EndPage)( + struct _XpContext * /* pContext */, + WindowPtr /* pWin */); + int (*PutDocumentData)( + struct _XpContext * /* pContext */, + DrawablePtr /* pDraw */, + char * /* pData */, + int /* len_data */, + char * /* pDoc_fmt */, + int /* len_fmt */, + char * /* pOptions */, + int /* len_options */, + ClientPtr /* client */); + int (*GetDocumentData)( + struct _XpContext * /* pContext */, + ClientPtr /* client */, + int /* maxBufferSize */); + int (*DestroyContext)( + struct _XpContext *); /* pContext */ + char *(*GetAttributes)( + struct _XpContext *, + XPAttributes /* pool */); + char *(*GetOneAttribute)( + struct _XpContext * /* pContext */, + XPAttributes /* pool */, + char * /* attrs */); + int (*SetAttributes)( + struct _XpContext * /* pContext */, + XPAttributes /* pool */, + char * /* attrs */); + int (*AugmentAttributes)( + struct _XpContext * /* pContext */, + XPAttributes /* pool */, + char * /* attrs */); + int (*GetMediumDimensions)( + struct _XpContext * /* pPrintContext */, + CARD16 * /* pWidth */, + CARD16 * /* pHeight */); + int (*GetReproducibleArea)( + struct _XpContext * /* pPrintContext */, + xRectangle * /* pRect */); + int (*SetImageResolution)( + struct _XpContext * /* pPrintContext */, + int /* imageRes */, + Bool * /* 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; + PrivateRec *devPrivates; + XpDriverFuncs funcs; + ClientPtr clientSlept; + int imageRes; +} XpContextRec, *XpContextPtr; + +#include <X11/fonts/fontstruct.h> /* FontResolutionPtr */ + +extern FontResolutionPtr XpGetClientResolutions(ClientPtr, int *); +extern XpContextPtr XpContextOfClient(ClientPtr); +extern XpContextPtr XpGetPrintContext(ClientPtr); +extern int XpRehashPrinterList(void); +extern void XpSetFontResFunc(ClientPtr); +extern void XpUnsetFontResFunc(ClientPtr); +extern void XpRegisterInitFunc(ScreenPtr, char *, int (*)(struct _XpContext *)); + +#endif /* _XP_PRINT_SERVER_ */ + +_XFUNCPROTOEND + +#endif /* _XpPrintstr_H_ */ |