1 /* $Xorg: Printstr.h,v 1.3 2000/08/18 04:05:44 coskrey Exp $ */
2 /******************************************************************************
3  ******************************************************************************
4  **
5  ** File:         Printstr.h
6  **
7  ** Description: Definitions needed by the server and library, but
8  **              not clients.
9  **
10  **              Print.h for server, library and clients.
11  **
12  ******************************************************************************
13  **
14  ** (c) Copyright 1996 Hewlett-Packard Company
15  ** (c) Copyright 1996 International Business Machines Corp.
16  ** (c) Copyright 1996, Oracle and/or its affiliates. All rights reserved.
17  ** (c) Copyright 1996 Novell, Inc.
18  ** (c) Copyright 1996 Digital Equipment Corp.
19  ** (c) Copyright 1996 Fujitsu Limited
20  ** (c) Copyright 1996 Hitachi, Ltd.
21  **
22  ** Permission is hereby granted, free of charge, to any person obtaining a copy
23  ** of this software and associated documentation files (the "Software"), to deal
24  ** in the Software without restriction, including without limitation the rights
25  ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
26  ** copies of the Software, and to permit persons to whom the Software is
27  ** furnished to do so, subject to the following conditions:
28  **
29  ** The above copyright notice and this permission notice shall be included in
30  ** all copies or substantial portions of the Software.
31  **
32  ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33  ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34  ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
35  ** COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
36  ** IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
37  ** CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
38  **
39  ** Except as contained in this notice, the names of the copyright holders shall
40  ** not be used in advertising or otherwise to promote the sale, use or other
41  ** dealings in this Software without prior written authorization from said
42  ** copyright holders.
43  **
44  ******************************************************************************
45  *****************************************************************************/
46 /* $XFree86: xc/include/extensions/Printstr.h,v 1.5 2001/08/01 00:44:35 tsi Exp $ */
47 
48 
49 #ifndef _XpPrintstr_H_
50 #define _XpPrintstr_H_
51 
52 /*
53  * NEED_EVENTS and NEED_REPLIES are hacks to limit the linker symbol-table
54  * size.   When function prototypes are needed from Print.h, this sets up
55  * a cascading dependency on Printstr.h and eventually Xproto.h to provide
56  * the event and reply struct definitions.
57  */
58 #ifndef NEED_EVENTS
59 #define NEED_EVENTS
60 #endif /* NEED_EVENTS */
61 
62 #define NEED_REPLIES
63 
64 #include <X11/Xproto.h>
65 #ifndef _XP_PRINT_SERVER_
66 #include <X11/Xlib.h>
67 #endif /* _XP_PRINT_SERVER_ */
68 
69 /*
70  * Pull in other definitions.  Print.h will hide some things if we're
71  * doing server side work.
72  */
73 #include <X11/extensions/Print.h>
74 
75 #include <X11/Xfuncproto.h>
76 
77 _XFUNCPROTOBEGIN
78 
79 /******************************************************************************
80  *
81  * Protocol requests constants and alignment values
82  *
83  * Note: Xlib macro's expect X_ABC where ABC is the name of the
84  * protocol request.
85  */
86 #define X_PrintQueryVersion		0
87 #define X_PrintGetPrinterList		1
88 #define X_PrintCreateContext		2
89 #define X_PrintSetContext		3
90 #define X_PrintGetContext		4
91 #define X_PrintDestroyContext		5
92 #define X_PrintGetContextScreen		6
93 #define X_PrintStartJob			7
94 #define X_PrintEndJob			8
95 #define X_PrintStartDoc			9
96 #define X_PrintEndDoc			10
97 #define X_PrintPutDocumentData		11
98 #define X_PrintGetDocumentData		12
99 #define X_PrintStartPage		13
100 #define X_PrintEndPage			14
101 #define X_PrintSelectInput		15
102 #define X_PrintInputSelected		16
103 #define X_PrintGetAttributes		17
104 #define X_PrintSetAttributes		18
105 #define X_PrintGetOneAttribute		19
106 #define X_PrintRehashPrinterList	20
107 #define X_PrintGetPageDimensions	21
108 #define X_PrintQueryScreens		22
109 #define X_PrintSetImageResolution	23
110 #define X_PrintGetImageResolution	24
111 
112 /********************************************************************
113  *
114  * Protocol data types
115  */
116 #define PCONTEXT CARD32
117 #define WINDOW   CARD32
118 #define DRAWABLE CARD32
119 #define BITMASK  CARD32
120 
121 /******************************************************************************
122  *
123  * Event wire struct definitions
124  *
125  * Note: Xlib macro's expect xABC struct names and sz_xABC size
126  * constants where ABC is the name of the protocol request.
127  */
128 
129 
130 /*********************************************************************
131  *
132  * Events.
133  *
134  * See Print.h for the protocol "type" values.
135  */
136 typedef struct _xPrintPrintEvent {
137 	BYTE type;		/* XPPrintNotify + extEntry->eventBase */
138 	BYTE detail;		/* XPStartJobNotify, XPEndJobNotify,
139 				   XPStartDocNotify, XPEndDocNotify,
140 				   XPStartPageNotify, XPEndPageNotify */
141 	CARD16 sequenceNumber;
142 	PCONTEXT printContext;	/* print context */
143 	BOOL   cancel;		/* canceled flag */
144 	CARD8  pad1;		/* rest is unused */
145 	CARD16 pad2;
146 	CARD32 pad3;
147 	CARD32 pad4;
148 	CARD32 pad5;
149 	CARD32 pad6;
150 	CARD32 pad7;
151 } xPrintPrintEvent;
152 #define sz_xPrintPrintEvent 32;
153 
154 typedef struct _xPrintAttributeEvent {
155 	BYTE   type;		/* XPAttributeNotify + extEntry->eventBase */
156 	BYTE   detail;		/* XPJobAttr, XPDocAttr, XPPageAttr,
157 				   XPPrinterAttr, XPSpoolerAttr,
158 				   XPMediumAttr, XPServerAttr */
159 	CARD16 sequenceNumber;
160 	PCONTEXT printContext;	/* print context */
161 	CARD32 pad1;
162 	CARD32 pad2;
163 	CARD32 pad3;
164 	CARD32 pad4;
165 	CARD32 pad5;
166 	CARD32 pad6;
167 } xPrintAttributeEvent;
168 #define sz_xPrintAttributeEvent 32;
169 
170 
171 /*********************************************************************
172  *
173  * Requests
174  */
175 typedef struct _PrintQueryVersion {
176 	CARD8	reqType;		/* always PrintReqCode */
177 	CARD8	printReqType;		/* always X_PrintQueryVersion */
178 	CARD16	length;
179 } xPrintQueryVersionReq;
180 #define sz_xPrintQueryVersionReq	4
181 
182 typedef struct {
183 	BYTE	type;			/* X_Reply */
184 	CARD8	unused;			/* not used */
185 	CARD16	sequenceNumber;
186 	CARD32	length;
187 	CARD16	majorVersion;		/* major version of Xp protocol */
188 	CARD16	minorVersion;		/* minor version of Xp protocol */
189 	CARD32	pad1;
190 	CARD32	pad2;
191 	CARD32	pad3;
192 	CARD32	pad4;
193 	CARD32	pad5;
194 } xPrintQueryVersionReply;
195 #define sz_xPrintQueryVersionReply	32
196 
197 
198 typedef struct _PrintGetPrinterList {
199 	CARD8	reqType;		/* always PrintReqCode */
200 	CARD8	printReqType;		/* always X_PrintGetPrinterList */
201 	CARD16	length;
202 	CARD32	printerNameLen;		/* length of printer name */
203 	CARD32	localeLen;		/* length of locale string */
204 
205 	/* variable portion *****************************************
206 	STRING8	printerName;		 * printer name *
207 	BYTE	pad(printerNameLen)	 * unused *
208 	STRING8	locale;			 * locale *
209 	BYTE	pad(localeLen)		 * unused *
210 	************************************************************/
211 } xPrintGetPrinterListReq;
212 #define sz_xPrintGetPrinterListReq	12
213 
214 typedef struct {
215 	BYTE	type;			/* X_Reply */
216 	CARD8	unused;			/* not used */
217 	CARD16	sequenceNumber;
218 	CARD32	length;
219 	CARD32	listCount;		/* of PRINTER recs below */
220 	CARD32	pad1;
221 	CARD32	pad2;
222 	CARD32	pad3;
223 	CARD32	pad4;
224 	CARD32	pad5;
225 
226 	/* variable portion *****************************************
227 	CARD32	nameLen;		* length of name in bytes *
228 	STRING8	name;			* name *
229 	BYTE	pad(nameLen)		* unused *
230 
231 	CARD32	descLen;		* length of desc in bytes *
232 	STRING8	desc;			* localized description *
233 	BYTE	pad(descLen)		* unused *
234 	************************************************************/
235 } xPrintGetPrinterListReply;
236 #define sz_xPrintGetPrinterListReply	32
237 
238 
239 typedef struct _PrintRehashPrinterList {
240 	CARD8	reqType;		/* always PrintReqCode */
241 	CARD8	printReqType;		/* always X_PrintRehashPrinterList */
242 	CARD16	length;
243 } xPrintRehashPrinterListReq;
244 #define sz_xPrintRehashPrinterListReq	4
245 
246 
247 typedef struct _PrintCreateContext {
248 	CARD8	reqType;		/* always PrintReqCode */
249 	CARD8	printReqType;		/* always X_PrintInitSetContext */
250 	CARD16	length;
251 	CARD32	contextID;		/* ID for context */
252 	CARD32	printerNameLen;		/* length of printerName in bytes */
253 	CARD32	localeLen;		/* length of locale in bytes */
254 
255 	/* variable portion *****************************************
256 	STRING8	printerName		 * printer name *
257 	BYTE	pad(printerNameLen)	 * unused *
258 	STRING8	locale			 * locale *
259 	BYTE	pad(locale)		 * unused *
260 	************************************************************/
261 } xPrintCreateContextReq;
262 #define sz_xPrintCreateContextReq	16
263 
264 
265 typedef struct _PrintSetContext {
266 	CARD8	reqType;		/* always PrintReqCode */
267 	CARD8	printReqType;		/* always X_PrintSetContext */
268 	CARD16	length;
269 	PCONTEXT printContext;		/* print context */
270 } xPrintSetContextReq;
271 #define sz_xPrintSetContextReq		8
272 
273 
274 typedef struct _PrintGetContext {
275 	CARD8	reqType;		/* always PrintReqCode */
276 	CARD8	printReqType;		/* always X_PrintGetContext */
277 	CARD16	length;
278 } xPrintGetContextReq;
279 #define sz_xPrintGetContextReq		4
280 
281 typedef struct {
282 	BYTE	type;			/* X_Reply */
283 	CARD8	unused;			/* not used */
284 	CARD16	sequenceNumber;
285 	CARD32	length;
286 	PCONTEXT printContext;		/* print context */
287 	CARD32	pad1;
288 	CARD32	pad2;
289 	CARD32	pad3;
290 	CARD32	pad4;
291 	CARD32	pad5;
292 } xPrintGetContextReply;
293 #define sz_xPrintGetContextReply	32
294 
295 
296 typedef struct _PrintDestroyContext {
297 	CARD8	reqType;		/* always PrintReqCode */
298 	CARD8	printReqType;		/* always X_PrintDestroyContext */
299 	CARD16	length;
300 	PCONTEXT printContext;		/* print context */
301 } xPrintDestroyContextReq;
302 #define sz_xPrintDestroyContextReq	8
303 
304 
305 typedef struct _PrintGetContextScreen {
306 	CARD8	reqType;		/* always PrintReqCode */
307 	CARD8	printReqType;		/* always X_PrintGetContextScreen */
308 	CARD16	length;
309 	PCONTEXT printContext;		/* print context */
310 } xPrintGetContextScreenReq;
311 #define sz_xPrintGetContextScreenReq	8
312 
313 typedef struct {
314 	BYTE	type;			/* X_Reply */
315 	CARD8	unused;			/* not used */
316 	CARD16	sequenceNumber;
317 	CARD32	length;
318 	WINDOW  rootWindow;		/* screenPtr represented as rootWin */
319 	CARD32	pad1;
320 	CARD32	pad2;
321 	CARD32	pad3;
322 	CARD32	pad4;
323 	CARD32	pad5;
324 } xPrintGetContextScreenReply;
325 #define sz_xPrintGetContextScreenReply	32
326 
327 
328 typedef struct _PrintStartJob {
329 	CARD8	reqType;		/* always PrintReqCode */
330 	CARD8	printReqType;		/* always X_PrintStartJob */
331 	CARD16	length;
332 	CARD8	saveData;		/* save data boolean */
333 	CARD8	pad1;
334 	CARD16	pad2;
335 } xPrintStartJobReq;
336 #define sz_xPrintStartJobReq		8
337 
338 typedef struct _PrintEndJob {
339 	CARD8	reqType;		/* always PrintReqCode */
340 	CARD8	printReqType;		/* always X_PrintEndJob */
341 	CARD16	length;
342 	BOOL	cancel;			/* cancel boolean */
343 	CARD8	pad1;
344 	CARD16	pad2;
345 } xPrintEndJobReq;
346 #define sz_xPrintEndJobReq		8
347 
348 
349 typedef struct _PrintStartDoc {
350 	CARD8	reqType;		/* always PrintReqCode */
351 	CARD8	printReqType;		/* always X_PrintStartDoc */
352 	CARD16	length;
353 	CARD8	type;			/* type for document */
354 	CARD8	pad1;
355 	CARD16	pad2;
356 } xPrintStartDocReq;
357 #define sz_xPrintStartDocReq		8
358 
359 typedef struct _PrintEndDoc {
360 	CARD8	reqType;		/* always PrintReqCode */
361 	CARD8	printReqType;		/* always X_PrintEndDoc */
362 	CARD16	length;
363 	BOOL	cancel;			/* cancel boolean */
364 	CARD8	pad1;
365 	CARD16	pad2;
366 } xPrintEndDocReq;
367 #define sz_xPrintEndDocReq		8
368 
369 
370 typedef struct _PrintPutDocumentData {
371 	CARD8	reqType;		/* always PrintReqCode */
372 	CARD8	printReqType;		/* always X_PrintPutDocumentData */
373 	CARD16	length;
374 	DRAWABLE drawable;		/* target drawable */
375 	CARD32	len_data;		/* big len in bytes */
376 	CARD16	len_fmt;		/* len in bytes */
377 	CARD16	len_options;		/* len in bytes */
378 
379 	/* variable portion *****************************************
380 	LISTofBYTE	data;		 * data *
381 	BYTE		pad(len_data)	 * unused *
382 	STRING8		doc_fmt;	 * ISO compliant desc of data type *
383 	BYTE		pad(len_fmt)	 * unused *
384 	STRING8		options;	 * additional device-dependent desc *
385 	BYTE		pad(len_options) * unused *
386 	************************************************************/
387 } xPrintPutDocumentDataReq;
388 #define sz_xPrintPutDocumentDataReq	16
389 
390 
391 typedef struct _PrintGetDocumentData {
392 	CARD8	reqType;		/* always PrintReqCode */
393 	CARD8	printReqType;		/* always X_PrintGetDocumentData */
394 	CARD16	length;
395 	PCONTEXT printContext;		/* print context */
396 	CARD32	maxBufferSize;		/* maximum buffer size requested */
397 } xPrintGetDocumentDataReq;
398 #define sz_xPrintGetDocumentDataReq	12
399 
400 typedef struct {
401 	BYTE	type;			/* X_Reply */
402 	CARD8	unused;			/* not used */
403 	CARD16	sequenceNumber;
404 	CARD32	length;
405 	CARD32	statusCode;		/* status code for reply */
406 	CARD32	finishedFlag;		/* is this the last reply */
407 	CARD32	dataLen;		/* data length */
408 	CARD32	pad1;
409 	CARD32	pad2;
410 	CARD32	pad3;
411 
412 	/* variable portion *****************************************
413 	LISTofBYTE	data;		 * data *
414 	BYTE		pad(count)	 * unused *
415 	************************************************************/
416 } xPrintGetDocumentDataReply;
417 #define sz_xPrintGetDocumentDataReply	32
418 
419 
420 typedef struct _PrintStartPage {
421 	CARD8	reqType;		/* always PrintReqCode */
422 	CARD8	printReqType;		/* always X_PrintStartPage */
423 	CARD16	length;
424 	WINDOW	window;			/* window */
425 } xPrintStartPageReq;
426 #define sz_xPrintStartPageReq		8
427 
428 typedef struct _PrintEndPage {
429 	CARD8	reqType;		/* always PrintReqCode */
430 	CARD8	printReqType;		/* always X_PrintEndPage */
431 	CARD16	length;
432 	BOOL	cancel;			/* cancel boolean */
433 	CARD8	pad1;
434 	CARD16	pad2;
435 } xPrintEndPageReq;
436 #define sz_xPrintEndPageReq		8
437 
438 
439 typedef struct _PrintSelectInput {
440         CARD8   reqType;        	/* always PrintReqCode */
441 	CARD8   printReqType;		/* always X_PrintSelectInput */
442 	CARD16	length;
443 	PCONTEXT printContext;		/* print context */
444 	BITMASK	eventMask;
445 } xPrintSelectInputReq;
446 #define sz_xPrintSelectInputReq		12
447 
448 
449 typedef struct _PrintInputSelected {
450         CARD8   reqType;        	/* always PrintReqCode */
451 	CARD8   printReqType;		/* always X_PrintInputSelected */
452 	CARD16	length;
453 	PCONTEXT printContext;		/* print context */
454 } xPrintInputSelectedReq;
455 #define sz_xPrintInputSelectedReq	8
456 
457 typedef struct {
458 	BYTE	type;			/* X_Reply */
459 	CARD8	unused;			/* not used */
460 	CARD16	sequenceNumber;
461 	CARD32	length;
462 	BITMASK	eventMask;		/* your event mask */
463 	BITMASK	allEventsMask;		/* all event mask */
464 	CARD32	pad1;
465 	CARD32	pad2;
466 	CARD32	pad3;
467 	CARD32	pad4;
468 } xPrintInputSelectedReply;
469 #define sz_xPrintInputSelectedReply	32
470 
471 typedef struct _PrintGetAttributes {
472         CARD8   reqType;        	/* always PrintReqCode */
473 	CARD8   printReqType;		/* always X_PrintGetAttributes */
474 	CARD16	length;
475 	PCONTEXT printContext;		/* print context */
476         CARD8   type;			/* type */
477         CARD8   pad1;			/* unused */
478         CARD16  pad2;			/* unused */
479 } xPrintGetAttributesReq;
480 #define sz_xPrintGetAttributesReq	12
481 
482 typedef struct {
483 	BYTE	type;			/* X_Reply */
484 	CARD8	unused;			/* not used */
485 	CARD16	sequenceNumber;
486 	CARD32	length;
487 	CARD32	stringLen;		/* length of xrm db string */
488 	CARD32	pad1;
489 	CARD32	pad2;
490 	CARD32	pad3;
491 	CARD32	pad4;
492 	CARD32	pad5;
493 
494         /* variable portion *****************************************
495 	STRING8	string;                  * xrm db as a string *
496 	BYTE	pad(stringLen)           * unused *
497         ************************************************************/
498 } xPrintGetAttributesReply;
499 #define sz_xPrintGetAttributesReply	32
500 
501 
502 typedef struct _PrintSetAttributes {
503         CARD8   reqType;        	/* always PrintReqCode */
504 	CARD8   printReqType;		/* always X_PrintSetAttributes */
505 	CARD16	length;
506 	PCONTEXT printContext;		/* print context */
507 	CARD32	stringLen;		/* length of xrm db string */
508         CARD8   type;                   /* type */
509 	CARD8   rule;			/* replacement rule */
510 	CARD16  pad1;			/* unused */
511 
512         /* variable portion *****************************************
513 	STRING8	string;                  * xrm db as a string *
514 	BYTE	pad(stringLen)           * unused *
515         ************************************************************/
516 } xPrintSetAttributesReq;
517 #define sz_xPrintSetAttributesReq	16
518 
519 
520 typedef struct _PrintGetOneAttribute {
521         CARD8   reqType;        	/* always PrintReqCode */
522 	CARD8   printReqType;		/* always X_PrintGetOneAttribute */
523 	CARD16	length;
524 	PCONTEXT printContext;		/* print context */
525 	CARD32	nameLen;		/* length of name string */
526         CARD8   type;			/* type */
527         CARD8   pad1;			/* unused */
528         CARD16  pad2;			/* unused */
529 
530         /* variable portion *****************************************
531 	STRING8	name;			 * name as a string *
532 	BYTE	pad(name)		 * unused *
533         ************************************************************/
534 } xPrintGetOneAttributeReq;
535 #define sz_xPrintGetOneAttributeReq	16
536 
537 typedef struct {
538 	BYTE	type;			/* X_Reply */
539 	CARD8	unused;			/* not used */
540 	CARD16	sequenceNumber;
541 	CARD32	length;
542 	CARD32	valueLen;		/* length of value string */
543 	CARD32	pad1;
544 	CARD32	pad2;
545 	CARD32	pad3;
546 	CARD32	pad4;
547 	CARD32	pad5;
548 
549         /* variable portion *****************************************
550 	STRING8	value;			 * value as a string *
551 	BYTE	pad(value)		 * unused *
552         ************************************************************/
553 } xPrintGetOneAttributeReply;
554 #define sz_xPrintGetOneAttributeReply	32
555 
556 
557 typedef struct _PrintGetPageDimensions {
558 	CARD8	reqType;		/* always PrintReqCode */
559 	CARD8	printReqType;		/* always X_PrintGetPageDimensions */
560 	CARD16	length;
561 	PCONTEXT printContext;		/* print context */
562 } xPrintGetPageDimensionsReq;
563 #define sz_xPrintGetPageDimensionsReq	8
564 
565 typedef struct {
566 	BYTE	type;			/* X_Reply */
567 	CARD8	unused;			/* not used */
568 	CARD16	sequenceNumber;
569 	CARD32	length;
570 	CARD16	width;			/* total pixel width */
571 	CARD16	height;			/* total pixel height */
572 	CARD16	rx;			/* reproducible x pixel offset */
573 	CARD16	ry;			/* reproducible y pixel offset */
574 	CARD16	rwidth;			/* reproducible x pixel width */
575 	CARD16	rheight;		/* reproducible y pixel width */
576 	CARD32	pad1;
577 	CARD32	pad2;
578 	CARD32	pad3;
579 } xPrintGetPageDimensionsReply;
580 #define sz_xPrintGetPageDimensionsReply	32
581 
582 
583 typedef struct _PrintQueryScreens {
584 	CARD8	reqType;		/* always PrintReqCode */
585 	CARD8	printReqType;		/* always X_PrintQueryScreens */
586 	CARD16	length;
587 } xPrintQueryScreensReq;
588 #define sz_xPrintQueryScreensReq	4
589 
590 typedef struct {
591 	BYTE	type;			/* X_Reply */
592 	CARD8	unused;			/* not used */
593 	CARD16	sequenceNumber;
594 	CARD32	length;
595 	CARD32	listCount;		/* number of screens following */
596 	CARD32	pad1;
597 	CARD32	pad2;
598 	CARD32	pad3;
599 	CARD32	pad4;
600 	CARD32	pad5;
601 
602         /* variable portion *****************************************
603 	WINDOW	rootWindow;		 * root window of screen *
604         ************************************************************/
605 } xPrintQueryScreensReply;
606 #define sz_xPrintQueryScreensReply	32
607 
608 typedef struct _PrintSetImageResolution {
609 	CARD8	reqType;		/* always PrintReqCode */
610 	CARD8	printReqType;		/* always X_PrintSetImageResolution */
611 	CARD16	length;
612 	PCONTEXT printContext;		/* print context */
613 	CARD16 imageRes;		/* image resolution */
614 	CARD16 pad1;
615 } xPrintSetImageResolutionReq;
616 #define sz_xPrintSetImageResolutionReq	12
617 
618 typedef struct {
619 	BYTE	type;			/* X_Reply */
620 	BOOL	status;			/* accepted or not */
621 	CARD16	sequenceNumber;
622 	CARD32	length;
623 	CARD16	prevRes;		/* previous resolution */
624 	CARD16	pad1;
625 	CARD32	pad2;
626 	CARD32	pad3;
627 	CARD32	pad4;
628 	CARD32	pad5;
629 	CARD32	pad6;
630 } xPrintSetImageResolutionReply;
631 #define sz_xPrintSetImageResolutionReply 32
632 
633 typedef struct _PrintGetImageResolution {
634 	CARD8	reqType;		/* always PrintReqCode */
635 	CARD8	printReqType;		/* always X_PrintGetImageResolution */
636 	CARD16	length;
637 	PCONTEXT printContext;		/* print context */
638 } xPrintGetImageResolutionReq;
639 #define sz_xPrintGetImageResolutionReq	8
640 
641 typedef struct {
642 	BYTE	type;			/* X_Reply */
643 	CARD8	unused;
644 	CARD16	sequenceNumber;
645 	CARD32	length;
646 	CARD16	imageRes;		/* image resolution */
647 	CARD16	pad1;
648 	CARD32	pad2;
649 	CARD32	pad3;
650 	CARD32	pad4;
651 	CARD32	pad5;
652 	CARD32	pad6;
653 } xPrintGetImageResolutionReply;
654 #define sz_xPrintGetImageResolutionReply 32
655 
656 #ifndef _XP_PRINT_SERVER_
657 /***********************************************************************
658  *
659  * Library-only definitions.
660  */
661 extern XPHinterProc  _xp_hinter_proc;
662 extern char         *_xp_hinter_desc;
663 extern int           _xp_hinter_init;
664 
665 #else /* _XP_PRINT_SERVER_ */
666 
667 /***********************************************************************
668  *
669  * Server-only definitions shared between the extension and DDX layers.
670  *
671  */
672 
673 /*
674  * Internal return code used to indicate that the requesting
675  * client has been suspended.
676  */
677 #define Suspended 84
678 
679 struct _XpContext;
680 
681 extern void XpRegisterPrinterScreen(
682     ScreenPtr pScreen,
683     int (*CreateContext)(struct _XpContext *));
684 
685 typedef struct _xpprintFuncs {
686     int (*StartJob)(
687 	struct _XpContext *	/* pContext */,
688 	Bool			/* sendClientData */,
689 	ClientPtr		/* client */);
690     int (*EndJob)(struct _XpContext *, int);
691     int (*StartDoc)(
692 	struct _XpContext *	/* pContext */,
693 	XPDocumentType		/* type */);
694     int (*EndDoc)(struct _XpContext *, int);
695     int (*StartPage)(
696 	struct _XpContext *	/* pContext */,
697 	WindowPtr		/* pWin */);
698     int (*EndPage)(
699 	struct _XpContext *	/* pContext */,
700 	WindowPtr		/* pWin */);
701     int (*PutDocumentData)(
702 	struct _XpContext *	/* pContext */,
703     	DrawablePtr		/* pDraw */,
704 	char *			/* pData */,
705 	int			/* len_data */,
706 	char *			/* pDoc_fmt */,
707 	int			/* len_fmt */,
708 	char *			/* pOptions */,
709 	int			/* len_options */,
710 	ClientPtr		/* client */);
711     int (*GetDocumentData)(
712 	struct _XpContext *	/* pContext */,
713 	ClientPtr		/* client */,
714 	int			/* maxBufferSize */);
715     int (*DestroyContext)(
716 	struct _XpContext *);	/* pContext */
717     char *(*GetAttributes)(
718 	struct _XpContext *,
719 	XPAttributes 		/* pool */);
720     char *(*GetOneAttribute)(
721 	struct _XpContext *	/* pContext */,
722 	XPAttributes 		/* pool */,
723 	char *			/* attrs */);
724     int (*SetAttributes)(
725 	struct _XpContext *	/* pContext */,
726 	XPAttributes 		/* pool */,
727 	char *			/* attrs */);
728     int (*AugmentAttributes)(
729 	struct _XpContext *	/* pContext */,
730 	XPAttributes 		/* pool */,
731 	char *			/* attrs */);
732     int (*GetMediumDimensions)(
733 	struct _XpContext *	/* pPrintContext */,
734 	CARD16 *		/* pWidth */,
735 	CARD16 *		/* pHeight */);
736     int (*GetReproducibleArea)(
737 	struct _XpContext *	/* pPrintContext */,
738 	xRectangle *		/* pRect */);
739     int (*SetImageResolution)(
740 	struct _XpContext *	/* pPrintContext */,
741 	int			/* imageRes */,
742 	Bool *			/* pStatus */);
743 } XpDriverFuncs, *XpDriverFuncsPtr;
744 
745 /*
746  * Each print context is represented by one of the following structs
747  * associated with a resource ID of type RTcontext .  A pointer to
748  * the context is placed in the Xp extension's devPrivates
749  * element in each client * which establishes a context via
750  * either initContext or setContext.
751  * The context pointer is also placed in the struct indicated by the
752  * RTpage resource associated with each StartPage'd window.
753  */
754 typedef struct _XpContext {
755         XID contextID;
756         char *printerName;
757         int screenNum;          /* screen containing the printer */
758         struct _XpClient *clientHead; /* list of clients */
759         CARD32 state;
760         VisualID pageWin;
761         PrivateRec *devPrivates;
762         XpDriverFuncs funcs;
763 	ClientPtr clientSlept;
764 	int imageRes;
765 } XpContextRec, *XpContextPtr;
766 
767 #include <X11/fonts/fontstruct.h>	/* FontResolutionPtr */
768 
769 extern FontResolutionPtr XpGetClientResolutions(ClientPtr, int *);
770 extern XpContextPtr XpContextOfClient(ClientPtr);
771 extern XpContextPtr XpGetPrintContext(ClientPtr);
772 extern int XpRehashPrinterList(void);
773 extern void XpSetFontResFunc(ClientPtr);
774 extern void XpUnsetFontResFunc(ClientPtr);
775 extern void XpRegisterInitFunc(ScreenPtr, char *, int (*)(struct _XpContext *));
776 
777 #endif /* _XP_PRINT_SERVER_ */
778 
779 _XFUNCPROTOEND
780 
781 #endif /* _XpPrintstr_H_ */
782