Mac OS 9
DesktopPrinting.h
Go to the documentation of this file.
1 
20 #ifndef __DESKTOPPRINTING__
21 #define __DESKTOPPRINTING__
22 
23 #ifndef __MACTYPES__
24 #include <MacTypes.h>
25 #endif
26 
27 #ifndef __FILES__
28 #include <Files.h>
29 #endif
30 
31 #ifndef __PRINTING__
32 #include <Printing.h>
33 #endif
34 
35 #ifndef __QUICKDRAW__
36 #include <Quickdraw.h>
37 #endif
38 
39 #ifndef __MACERRORS__
40 #include <MacErrors.h>
41 #endif
42 
46 #if PRAGMA_ONCE
47 #pragma once
48 #endif
49 
50 #ifdef __cplusplus
51 extern "C"
52 {
53 #endif
54 
55 #if PRAGMA_IMPORT
56 #pragma import on
57 #endif
58 
59 #if PRAGMA_STRUCT_ALIGN
60 #pragma options align = mac68k
61 #elif PRAGMA_STRUCT_PACKPUSH
62 #pragma pack(push, 2)
63 #elif PRAGMA_STRUCT_PACK
64 #pragma pack(2)
65 #endif
66 
67  enum
68  {
69  kDTPUnknownPrinterType = -1,
75  };
76 
78  enum
79  {
80  kDTPUnknownPort = -1,
83  kDTPModemPort = 1
84  };
85 
87  enum
88  {
89  kDTPGetPrinterInfo = 23,
90  kDTPIsSamePrinterInfo = 24,
91  kDTPSetDefaultPrinterInfo = 25
92  };
93 
96  {
97  short port;
98  Str31 portName;
99  };
100  typedef struct DTPSerialAddress DTPSerialAddress;
103  {
104  Str32 nbpName;
105  Str32 nbpZone;
106  Str32 nbpType;
107  };
111  {
112  Str255 TCPIPAddress;
113  Str255 queueName;
114  };
115  typedef struct DTPTCPIPAddress DTPTCPIPAddress;
118  {
119  short id;
120  };
121  typedef struct DTPSCSIAddress DTPSCSIAddress;
124  {
125  Str255 name;
126  };
127  typedef struct DTPUSBAddress DTPUSBAddress;
130  {
131  Str31 dtpDefaultName;
132  short printerType;
137  union
138  {
139  DTPSerialAddress serial;
140  DTPAppleTalkAddress appleTalk;
141  DTPTCPIPAddress tcpip;
142  DTPSCSIAddress scsi;
143  DTPUSBAddress usb;
144  } u;
145 
147  };
148  typedef struct DTPPrinterInfo DTPPrinterInfo;
152  {
153  short iOpCode;
155  short iError;
156  long iCommand;
157  DTPPrinterInfoHandle printerInfo;
158  };
159  typedef struct TDTPPrGeneralData TDTPPrGeneralData;
161  enum
162  {
163  kDTPInfoResType = FOUR_CHAR_CODE('dtpi'),
164  kDTPInfoResID = -8192
165  };
166 
168  enum
169  {
170  kDTPUnknownConnection = 0x00000000,
171  kDTPSerialConnection = 0x00000001,
172  kDTPSCSIConnection = 0x00000002,
173  kDTPAppleTalkConnection = 0x00000004,
174  kDTPTCPIPConnection = 0x00000008,
175  kDTPUSBConnection = 0x00000010
176  };
177 
179  enum
180  {
181  kDTPBasicFeatures =
182  0x00000000
183  };
184 
186  {
187  long features;
193  };
194  typedef struct DTPInfoResource DTPInfoResource;
195  enum
196  {
199  0x02008000,
200  kDTPGestaltStructVersion3 = 0x03000000
201  };
202 
204  struct DTPInfo
205  {
206  short vRefNum;
207  long dirID;
208  Str31 dtpName;
209  OSType driverType;
211  Str32 printerName;
213  Str32 zoneName;
215  };
216  typedef struct DTPInfo DTPInfo;
219  {
220  long version;
221  short numDTPs;
222  Handle theDTPList;
225  long reserved;
226  };
227  typedef struct GestaltDTPInfoRec GestaltDTPInfoRec;
231  enum
232  {
233  kDTPSignature = FOUR_CHAR_CODE('dtpx')
234  };
235 
236  enum
237  {
238  aeDTPSetDefaultEventType = FOUR_CHAR_CODE(
239  'pfsd'),
241  FOUR_CHAR_CODE('pfsc')
243  };
244 
247  {
248  OSType dtpSignature;
249  OSType dtpEventType;
250  FSSpec dtpSpec;
251  };
252  typedef struct DTPAppleEventData DTPAppleEventData;
255  typedef CALLBACK_API(void,
256  DTPAsyncErrorNotificationProcPtr)(StringHandle errStr);
258  typedef CALLBACK_API(void, DTPEndNotificationProcPtr)(void);
260  typedef CALLBACK_API(Boolean, DTPInForegroundProcPtr)(void);
262  typedef CALLBACK_API(void, DTPStatusMessageProcPtr)(StringHandle statusStr);
263  typedef STACK_UPP_TYPE(DTPAsyncErrorNotificationProcPtr)
264  DTPAsyncErrorNotificationUPP;
265  typedef STACK_UPP_TYPE(DTPEndNotificationProcPtr) DTPEndNotificationUPP;
266  typedef STACK_UPP_TYPE(DTPInForegroundProcPtr) DTPInForegroundUPP;
267  typedef STACK_UPP_TYPE(DTPStatusMessageProcPtr) DTPStatusMessageUPP;
268 #if CALL_NOT_IN_CARBON
277  DTPAsyncErrorNotificationUPP
278  NewDTPAsyncErrorNotificationUPP(DTPAsyncErrorNotificationProcPtr userRoutine);
279 #if !OPAQUE_UPP_TYPES
280  enum
281  {
282  uppDTPAsyncErrorNotificationProcInfo = 0x000000C0
283  };
284 #ifdef __cplusplus
285  inline DTPAsyncErrorNotificationUPP
286  NewDTPAsyncErrorNotificationUPP(DTPAsyncErrorNotificationProcPtr userRoutine)
287  {
288  return (DTPAsyncErrorNotificationUPP)NewRoutineDescriptor(
289  (ProcPtr)(userRoutine), uppDTPAsyncErrorNotificationProcInfo,
290  GetCurrentArchitecture());
291  }
292 #else
293 #define NewDTPAsyncErrorNotificationUPP(userRoutine) \
294  (DTPAsyncErrorNotificationUPP) NewRoutineDescriptor( \
295  (ProcPtr)(userRoutine), uppDTPAsyncErrorNotificationProcInfo, \
296  GetCurrentArchitecture())
297 #endif
298 #endif
299 
308  DTPEndNotificationUPP
309  NewDTPEndNotificationUPP(DTPEndNotificationProcPtr userRoutine);
310 #if !OPAQUE_UPP_TYPES
311  enum
312  {
313  uppDTPEndNotificationProcInfo = 0x00000000
314  };
315 #ifdef __cplusplus
316  inline DTPEndNotificationUPP
317  NewDTPEndNotificationUPP(DTPEndNotificationProcPtr userRoutine)
318  {
319  return (DTPEndNotificationUPP)NewRoutineDescriptor(
320  (ProcPtr)(userRoutine), uppDTPEndNotificationProcInfo,
321  GetCurrentArchitecture());
322  }
323 #else
324 #define NewDTPEndNotificationUPP(userRoutine) \
325  (DTPEndNotificationUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
326  uppDTPEndNotificationProcInfo, \
327  GetCurrentArchitecture())
328 #endif
329 #endif
330 
339  DTPInForegroundUPP
340  NewDTPInForegroundUPP(DTPInForegroundProcPtr userRoutine);
341 #if !OPAQUE_UPP_TYPES
342  enum
343  {
344  uppDTPInForegroundProcInfo = 0x00000010
345  };
346 #ifdef __cplusplus
347  inline DTPInForegroundUPP
348  NewDTPInForegroundUPP(DTPInForegroundProcPtr userRoutine)
349  {
350  return (DTPInForegroundUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
351  uppDTPInForegroundProcInfo,
352  GetCurrentArchitecture());
353  }
354 #else
355 #define NewDTPInForegroundUPP(userRoutine) \
356  (DTPInForegroundUPP) \
357  NewRoutineDescriptor((ProcPtr)(userRoutine), uppDTPInForegroundProcInfo, \
358  GetCurrentArchitecture())
359 #endif
360 #endif
361 
370  DTPStatusMessageUPP
371  NewDTPStatusMessageUPP(DTPStatusMessageProcPtr userRoutine);
372 #if !OPAQUE_UPP_TYPES
373  enum
374  {
375  uppDTPStatusMessageProcInfo = 0x000000C0
376  };
377 #ifdef __cplusplus
378  inline DTPStatusMessageUPP
379  NewDTPStatusMessageUPP(DTPStatusMessageProcPtr userRoutine)
380  {
381  return (DTPStatusMessageUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
382  uppDTPStatusMessageProcInfo,
383  GetCurrentArchitecture());
384  }
385 #else
386 #define NewDTPStatusMessageUPP(userRoutine) \
387  (DTPStatusMessageUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
388  uppDTPStatusMessageProcInfo, \
389  GetCurrentArchitecture())
390 #endif
391 #endif
392 
401  void
402  DisposeDTPAsyncErrorNotificationUPP(DTPAsyncErrorNotificationUPP userUPP);
403 #if !OPAQUE_UPP_TYPES
404 #ifdef __cplusplus
405  inline void
406  DisposeDTPAsyncErrorNotificationUPP(DTPAsyncErrorNotificationUPP userUPP)
407  {
408  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
409  }
410 #else
411 #define DisposeDTPAsyncErrorNotificationUPP(userUPP) \
412  DisposeRoutineDescriptor(userUPP)
413 #endif
414 #endif
415 
424  void
425  DisposeDTPEndNotificationUPP(DTPEndNotificationUPP userUPP);
426 #if !OPAQUE_UPP_TYPES
427 #ifdef __cplusplus
428  inline void DisposeDTPEndNotificationUPP(DTPEndNotificationUPP userUPP)
429  {
430  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
431  }
432 #else
433 #define DisposeDTPEndNotificationUPP(userUPP) DisposeRoutineDescriptor(userUPP)
434 #endif
435 #endif
436 
445  void
446  DisposeDTPInForegroundUPP(DTPInForegroundUPP userUPP);
447 #if !OPAQUE_UPP_TYPES
448 #ifdef __cplusplus
449  inline void DisposeDTPInForegroundUPP(DTPInForegroundUPP userUPP)
450  {
451  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
452  }
453 #else
454 #define DisposeDTPInForegroundUPP(userUPP) DisposeRoutineDescriptor(userUPP)
455 #endif
456 #endif
457 
466  void
467  DisposeDTPStatusMessageUPP(DTPStatusMessageUPP userUPP);
468 #if !OPAQUE_UPP_TYPES
469 #ifdef __cplusplus
470  inline void DisposeDTPStatusMessageUPP(DTPStatusMessageUPP userUPP)
471  {
472  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
473  }
474 #else
475 #define DisposeDTPStatusMessageUPP(userUPP) DisposeRoutineDescriptor(userUPP)
476 #endif
477 #endif
478 
487  void
489  DTPAsyncErrorNotificationUPP userUPP);
490 #if !OPAQUE_UPP_TYPES
491 #ifdef __cplusplus
492  inline void
493  InvokeDTPAsyncErrorNotificationUPP(StringHandle errStr,
494  DTPAsyncErrorNotificationUPP userUPP)
495  {
496  CALL_ONE_PARAMETER_UPP(userUPP, uppDTPAsyncErrorNotificationProcInfo, errStr);
497  }
498 #else
499 #define InvokeDTPAsyncErrorNotificationUPP(errStr, userUPP) \
500  CALL_ONE_PARAMETER_UPP((userUPP), uppDTPAsyncErrorNotificationProcInfo, \
501  (errStr))
502 #endif
503 #endif
504 
513  void
514  InvokeDTPEndNotificationUPP(DTPEndNotificationUPP userUPP);
515 #if !OPAQUE_UPP_TYPES
516 #ifdef __cplusplus
517  inline void InvokeDTPEndNotificationUPP(DTPEndNotificationUPP userUPP)
518  {
519  CALL_ZERO_PARAMETER_UPP(userUPP, uppDTPEndNotificationProcInfo);
520  }
521 #else
522 #define InvokeDTPEndNotificationUPP(userUPP) \
523  CALL_ZERO_PARAMETER_UPP((userUPP), uppDTPEndNotificationProcInfo)
524 #endif
525 #endif
526 
535  Boolean
536  InvokeDTPInForegroundUPP(DTPInForegroundUPP userUPP);
537 #if !OPAQUE_UPP_TYPES
538 #ifdef __cplusplus
539  inline Boolean InvokeDTPInForegroundUPP(DTPInForegroundUPP userUPP)
540  {
541  return (Boolean)CALL_ZERO_PARAMETER_UPP(userUPP, uppDTPInForegroundProcInfo);
542  }
543 #else
544 #define InvokeDTPInForegroundUPP(userUPP) \
545  (Boolean) CALL_ZERO_PARAMETER_UPP((userUPP), uppDTPInForegroundProcInfo)
546 #endif
547 #endif
548 
557  void
558  InvokeDTPStatusMessageUPP(StringHandle statusStr, DTPStatusMessageUPP userUPP);
559 #if !OPAQUE_UPP_TYPES
560 #ifdef __cplusplus
561  inline void InvokeDTPStatusMessageUPP(StringHandle statusStr,
562  DTPStatusMessageUPP userUPP)
563  {
564  CALL_ONE_PARAMETER_UPP(userUPP, uppDTPStatusMessageProcInfo, statusStr);
565  }
566 #else
567 #define InvokeDTPStatusMessageUPP(statusStr, userUPP) \
568  CALL_ONE_PARAMETER_UPP((userUPP), uppDTPStatusMessageProcInfo, (statusStr))
569 #endif
570 #endif
571 
572 #endif
574 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
576 #define NewDTPAsyncErrorNotificationProc(userRoutine) \
577  NewDTPAsyncErrorNotificationUPP(userRoutine)
578 #define NewDTPEndNotificationProc(userRoutine) \
579  NewDTPEndNotificationUPP(userRoutine)
580 #define NewDTPInForegroundProc(userRoutine) NewDTPInForegroundUPP(userRoutine)
581 #define NewDTPStatusMessageProc(userRoutine) NewDTPStatusMessageUPP(userRoutine)
582 #define CallDTPAsyncErrorNotificationProc(userRoutine, errStr) \
583  InvokeDTPAsyncErrorNotificationUPP(errStr, userRoutine)
584 #define CallDTPEndNotificationProc(userRoutine) \
585  InvokeDTPEndNotificationUPP(userRoutine)
586 #define CallDTPInForegroundProc(userRoutine) \
587  InvokeDTPInForegroundUPP(userRoutine)
588 #define CallDTPStatusMessageProc(userRoutine, statusStr) \
589  InvokeDTPStatusMessageUPP(statusStr, userRoutine)
590 #endif
594  enum
595  {
596  kPrintMonitorPrGeneral = -3
597  };
598 
605  {
606  short iOpCode;
607  short iError;
608  long iReserved;
610  short noProcs;
612  DTPAsyncErrorNotificationUPP
613  pAsyncNotificationProc;
614  DTPEndNotificationUPP
616  DTPInForegroundUPP
618  };
625  {
626  short iOpCode;
627  short iError;
628  long iReserved;
630  short noProcs;
632  DTPAsyncErrorNotificationUPP
633  pAsyncNotificationProc;
634  DTPEndNotificationUPP
636  DTPInForegroundUPP
638  DTPStatusMessageUPP
641  };
642  typedef struct TDesktopPrintMonitorPrintingData
648  {
649  short version;
650  long fileLen;
651  long fileFlags;
652  short numPages;
654  };
655  typedef struct SpoolFileHeader SpoolFileHeader;
658  struct SpoolPage
659  {
660  long pictFlags;
662  long pageOffset;
663  };
664  typedef struct SpoolPage SpoolPage;
670  {
671  short version;
672  short flags;
673  short numPages;
674  short numCopies;
675  OSType creator;
677  Str31 appName;
678  };
679  typedef struct SpoolPREC126Record SpoolPREC126Record;
684  {
685  short count;
686  long pageOffset[1];
689  };
690  typedef struct SpoolPageIndex SpoolPageIndex;
697  enum
698  {
699  kDTPPrintJobUrgent = 0x00000001,
700  kDTPPrintJobAtTime = 0x00000002,
701  kDTPPrintJobNormal = 0x00000003,
702  kDTPPrintJobHolding = 0x00001003
703  };
704 
706  {
707  short firstPageToPrint;
708  short priority;
709  short numCopies;
710  short numPages;
711  unsigned long timeToPrint;
713  Str31 documentName;
716  Str32 printerName;
718  };
719  typedef struct DTPPrintJobInfo DTPPrintJobInfo;
722 
723 #if PRAGMA_STRUCT_ALIGN
724 #pragma options align = reset
725 #elif PRAGMA_STRUCT_PACKPUSH
726 #pragma pack(pop)
727 #elif PRAGMA_STRUCT_PACK
728 #pragma pack()
729 #endif
730 
731 #ifdef PRAGMA_IMPORT_OFF
732 #pragma import off
733 #elif PRAGMA_IMPORT
734 #pragma import reset
735 #endif
736 
737 #ifdef __cplusplus
738 }
739 #endif
740 
741 #endif
#define NewDTPAsyncErrorNotificationUPP(userRoutine)
Definition: DesktopPrinting.h:293
@ kDTPSCSIConnection
Definition: DesktopPrinting.h:172
@ kDTPSerialConnection
Definition: DesktopPrinting.h:171
@ kDTPTCPIPConnection
Definition: DesktopPrinting.h:174
@ kDTPAppleTalkConnection
Definition: DesktopPrinting.h:173
@ kDTPUSBConnection
Definition: DesktopPrinting.h:175
void DisposeDTPInForegroundUPP(DTPInForegroundUPP userUPP)
#define NewDTPEndNotificationUPP(userRoutine)
Definition: DesktopPrinting.h:324
void InvokeDTPStatusMessageUPP(StringHandle statusStr, DTPStatusMessageUPP userUPP)
Boolean InvokeDTPInForegroundUPP(DTPInForegroundUPP userUPP)
typedef CALLBACK_API(void, DTPAsyncErrorNotificationProcPtr)(StringHandle errStr)
void DisposeDTPAsyncErrorNotificationUPP(DTPAsyncErrorNotificationUPP userUPP)
void DisposeDTPEndNotificationUPP(DTPEndNotificationUPP userUPP)
@ kDTPGestaltStructVersion3
Definition: DesktopPrinting.h:200
@ kDTPGestaltStructVersion2
Definition: DesktopPrinting.h:198
void InvokeDTPEndNotificationUPP(DTPEndNotificationUPP userUPP)
void InvokeDTPAsyncErrorNotificationUPP(StringHandle errStr, DTPAsyncErrorNotificationUPP userUPP)
@ kDTPModemPort
Definition: DesktopPrinting.h:83
@ kDTPPrinterPort
Definition: DesktopPrinting.h:82
void DisposeDTPStatusMessageUPP(DTPStatusMessageUPP userUPP)
#define NewDTPInForegroundUPP(userRoutine)
Definition: DesktopPrinting.h:355
#define NewDTPStatusMessageUPP(userRoutine)
Definition: DesktopPrinting.h:386
@ kDTPSerialPrinterType
Definition: DesktopPrinting.h:70
@ kDTPUSBPrinterType
Definition: DesktopPrinting.h:74
@ kDTPSCSIPrinterType
Definition: DesktopPrinting.h:73
@ kDTPAppleTalkPrinterType
Definition: DesktopPrinting.h:71
@ kDTPTCPIPPrinterType
Definition: DesktopPrinting.h:72
@ aeDTPSyncEventType
Definition: DesktopPrinting.h:240
File Manager (MFS, HFS, and HFS+) Interfaces.
OSErr codes.
Basic Macintosh data types.
unsigned char Boolean
Definition: MacTypes.h:318
#define CALL_ZERO_PARAMETER_UPP(upp, procInfo)
Definition: MixedMode.h:790
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
#define STACK_UPP_TYPE(name)
Definition: MixedMode.h:734
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
Print Manager Interfaces.
Interface to Quickdraw Graphics.
Definition: DesktopPrinting.h:247
FSSpec dtpSpec
Definition: DesktopPrinting.h:250
OSType dtpEventType
Definition: DesktopPrinting.h:249
Definition: DesktopPrinting.h:103
Definition: DesktopPrinting.h:186
long connectionType
Definition: DesktopPrinting.h:189
Definition: DesktopPrinting.h:205
long dirID
Definition: DesktopPrinting.h:207
OSType driverType
Definition: DesktopPrinting.h:209
Str31 dtpName
Definition: DesktopPrinting.h:208
Boolean current
Definition: DesktopPrinting.h:210
Str32 printerName
Definition: DesktopPrinting.h:211
Str32 zoneName
Definition: DesktopPrinting.h:213
Definition: DesktopPrinting.h:706
Str31 documentName
Definition: DesktopPrinting.h:713
unsigned long timeToPrint
Definition: DesktopPrinting.h:711
short numCopies
Definition: DesktopPrinting.h:709
Str32 printerName
Definition: DesktopPrinting.h:716
Str31 applicationName
Definition: DesktopPrinting.h:714
short numPages
Definition: DesktopPrinting.h:710
short priority
Definition: DesktopPrinting.h:708
Definition: DesktopPrinting.h:130
union DTPPrinterInfo::@895 u
short printerType
Definition: DesktopPrinting.h:132
Definition: DesktopPrinting.h:118
Definition: DesktopPrinting.h:96
Str31 portName
Definition: DesktopPrinting.h:98
Definition: DesktopPrinting.h:111
Definition: DesktopPrinting.h:124
Definition: DesktopPrinting.h:219
Handle theDTPList
Definition: DesktopPrinting.h:222
long reserved
Definition: DesktopPrinting.h:225
Handle theDTPDriverList
Definition: DesktopPrinting.h:223
short numDTPs
Definition: DesktopPrinting.h:221
Definition: Quickdraw.h:326
Definition: PPCToolbox.h:168
Definition: DesktopPrinting.h:648
TPrint printRecord
Definition: DesktopPrinting.h:653
short numPages
Definition: DesktopPrinting.h:652
long fileLen
Definition: DesktopPrinting.h:650
long fileFlags
Definition: DesktopPrinting.h:651
Definition: DesktopPrinting.h:670
short flags
Definition: DesktopPrinting.h:672
short numPages
Definition: DesktopPrinting.h:673
short numCopies
Definition: DesktopPrinting.h:674
OSType creator
Definition: DesktopPrinting.h:675
Str31 appName
Definition: DesktopPrinting.h:677
Definition: DesktopPrinting.h:684
long pageOffset[1]
Definition: DesktopPrinting.h:686
Definition: DesktopPrinting.h:659
long pageOffset
Definition: DesktopPrinting.h:662
Picture thePict
Definition: DesktopPrinting.h:661
Definition: DesktopPrinting.h:152
short iError
Definition: DesktopPrinting.h:155
Definition: DesktopPrinting.h:625
short iError
Definition: DesktopPrinting.h:627
DTPInForegroundUPP pInForegroundProc
Definition: DesktopPrinting.h:637
DTPEndNotificationUPP pAsyncEndnotifyProc
Definition: DesktopPrinting.h:635
THPrint hPrint
Definition: DesktopPrinting.h:629
long iReserved2
Definition: DesktopPrinting.h:631
DTPStatusMessageUPP pStatusMessageProc
Definition: DesktopPrinting.h:639
Definition: DesktopPrinting.h:605
DTPEndNotificationUPP pAsyncEndnotifyProc
Definition: DesktopPrinting.h:615
long iReserved2
Definition: DesktopPrinting.h:611
short iError
Definition: DesktopPrinting.h:607
THPrint hPrint
Definition: DesktopPrinting.h:609
DTPInForegroundUPP pDTPInForegroundProc
Definition: DesktopPrinting.h:617
Definition: Printing.h:374