Printstr.h revision 677833bc953b6cb418c701facbdcf4aa18d6c44e
/* $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
** 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
#ifndef _XP_PRINT_SERVER_
#endif /* _XP_PRINT_SERVER_ */
/*
* Pull in other definitions. Print.h will hide some things if we're
* doing server side work.
*/
#include <X11/Xfuncproto.h>
/******************************************************************************
*
* 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
*/
/******************************************************************************
*
* 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 {
XPStartDocNotify, XPEndDocNotify,
XPStartPageNotify, XPEndPageNotify */
#define sz_xPrintPrintEvent 32;
typedef struct _xPrintAttributeEvent {
XPPrinterAttr, XPSpoolerAttr,
XPMediumAttr, XPServerAttr */
#define sz_xPrintAttributeEvent 32;
/*********************************************************************
*
* Requests
*/
typedef struct _PrintQueryVersion {
#define sz_xPrintQueryVersionReq 4
typedef struct {
#define sz_xPrintQueryVersionReply 32
typedef struct _PrintGetPrinterList {
/* variable portion *****************************************
STRING8 printerName; * printer name *
BYTE pad(printerNameLen) * unused *
STRING8 locale; * locale *
BYTE pad(localeLen) * unused *
************************************************************/
#define sz_xPrintGetPrinterListReq 12
typedef struct {
/* 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 *
************************************************************/
#define sz_xPrintGetPrinterListReply 32
typedef struct _PrintRehashPrinterList {
#define sz_xPrintRehashPrinterListReq 4
typedef struct _PrintCreateContext {
/* variable portion *****************************************
STRING8 printerName * printer name *
BYTE pad(printerNameLen) * unused *
STRING8 locale * locale *
BYTE pad(locale) * unused *
************************************************************/
#define sz_xPrintCreateContextReq 16
typedef struct _PrintSetContext {
#define sz_xPrintSetContextReq 8
typedef struct _PrintGetContext {
#define sz_xPrintGetContextReq 4
typedef struct {
#define sz_xPrintGetContextReply 32
typedef struct _PrintDestroyContext {
#define sz_xPrintDestroyContextReq 8
typedef struct _PrintGetContextScreen {
#define sz_xPrintGetContextScreenReq 8
typedef struct {
#define sz_xPrintGetContextScreenReply 32
typedef struct _PrintStartJob {
#define sz_xPrintStartJobReq 8
typedef struct _PrintEndJob {
#define sz_xPrintEndJobReq 8
typedef struct _PrintStartDoc {
#define sz_xPrintStartDocReq 8
typedef struct _PrintEndDoc {
#define sz_xPrintEndDocReq 8
typedef struct _PrintPutDocumentData {
/* 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 *
************************************************************/
#define sz_xPrintPutDocumentDataReq 16
typedef struct _PrintGetDocumentData {
#define sz_xPrintGetDocumentDataReq 12
typedef struct {
/* variable portion *****************************************
LISTofBYTE data; * data *
BYTE pad(count) * unused *
************************************************************/
#define sz_xPrintGetDocumentDataReply 32
typedef struct _PrintStartPage {
#define sz_xPrintStartPageReq 8
typedef struct _PrintEndPage {
#define sz_xPrintEndPageReq 8
typedef struct _PrintSelectInput {
#define sz_xPrintSelectInputReq 12
typedef struct _PrintInputSelected {
#define sz_xPrintInputSelectedReq 8
typedef struct {
#define sz_xPrintInputSelectedReply 32
typedef struct _PrintGetAttributes {
#define sz_xPrintGetAttributesReq 12
typedef struct {
/* variable portion *****************************************
STRING8 string; * xrm db as a string *
BYTE pad(stringLen) * unused *
************************************************************/
#define sz_xPrintGetAttributesReply 32
typedef struct _PrintSetAttributes {
/* variable portion *****************************************
STRING8 string; * xrm db as a string *
BYTE pad(stringLen) * unused *
************************************************************/
#define sz_xPrintSetAttributesReq 16
typedef struct _PrintGetOneAttribute {
/* variable portion *****************************************
STRING8 name; * name as a string *
BYTE pad(name) * unused *
************************************************************/
#define sz_xPrintGetOneAttributeReq 16
typedef struct {
/* variable portion *****************************************
STRING8 value; * value as a string *
BYTE pad(value) * unused *
************************************************************/
#define sz_xPrintGetOneAttributeReply 32
typedef struct _PrintGetPageDimensions {
#define sz_xPrintGetPageDimensionsReq 8
typedef struct {
#define sz_xPrintGetPageDimensionsReply 32
typedef struct _PrintQueryScreens {
#define sz_xPrintQueryScreensReq 4
typedef struct {
/* variable portion *****************************************
WINDOW rootWindow; * root window of screen *
************************************************************/
#define sz_xPrintQueryScreensReply 32
typedef struct _PrintSetImageResolution {
#define sz_xPrintSetImageResolutionReq 12
typedef struct {
#define sz_xPrintSetImageResolutionReply 32
typedef struct _PrintGetImageResolution {
#define sz_xPrintGetImageResolutionReq 8
typedef struct {
#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(
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 */);
/*
* 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 {
char *printerName;
int screenNum; /* screen containing the printer */
int imageRes;
} XpContextRec, *XpContextPtr;
extern Bool XpAllocateContextPrivate(int, unsigned);
extern int XpAllocateContextPrivateIndex(void);
extern int XpRehashPrinterList(void);
extern void XpSetFontResFunc(ClientPtr);
extern void XpUnsetFontResFunc(ClientPtr);
#endif /* _XP_PRINT_SERVER_ */
#endif /* _XpPrintstr_H_ */