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