xenocara/proto/printproto/Print.h
2006-11-25 15:43:19 +00:00

553 lines
15 KiB
C

/* $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.
**
******************************************************************************
*****************************************************************************/
/* $XFree86: xc/include/extensions/Print.h,v 1.4 2000/01/25 18:37:31 dawes Exp $ */
#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)(void);
#if 0
/*******************************************************************
*
* Extension version structures.
*
**** this structure is now defined localy in the one file that uses it
**** in order to avoid clashes with its definition in XI.h
*/
typedef struct {
int present;
short major_version;
short minor_version;
} XExtensionVersion;
#endif
/********************************************************************
*
* 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.
*/
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(void);
extern char *XpNotifyPdm (
Display *print_display,
Window print_window,
XPContext print_context,
Display *video_display,
Window video_window,
Bool auth_flag
);
#endif /* _XP_PRINT_SERVER_ */
_XFUNCPROTOEND
#endif /* _XpPrint_H_ */