Mac OS 9
Quickdraw.h
Go to the documentation of this file.
1 
18 #ifndef __QUICKDRAW__
19 #define __QUICKDRAW__
20 
21 #ifndef __COMPONENTS__
22 #include <Components.h>
23 #endif
24 
25 #ifndef __MACTYPES__
26 #include <MacTypes.h>
27 #endif
28 
29 #ifndef __MIXEDMODE__
30 #include <MixedMode.h>
31 #endif
32 
33 #ifndef __QUICKDRAWTEXT__
34 #include <QuickdrawText.h>
35 #endif
36 
37 #ifndef __CGCONTEXT__
38 #include <CGContext.h>
39 #endif
40 
41 #if PRAGMA_ONCE
42 #pragma once
43 #endif
44 
45 #ifdef __cplusplus
46 extern "C"
47 {
48 #endif
49 
50 #if PRAGMA_IMPORT
51 #pragma import on
52 #endif
53 
54 #if PRAGMA_STRUCT_ALIGN
55 #pragma options align = mac68k
56 #elif PRAGMA_STRUCT_PACKPUSH
57 #pragma pack(push, 2)
58 #elif PRAGMA_STRUCT_PACK
59 #pragma pack(2)
60 #endif
61 
62  enum
63  {
64  invalColReq = -1 /*invalid color table request*/
65  };
66 
67  enum
68  {
69  /* transfer modes */
70  srcCopy = 0, /*the 16 transfer modes*/
71  srcOr = 1,
72  srcXor = 2,
73  srcBic = 3,
74  notSrcCopy = 4,
75  notSrcOr = 5,
76  notSrcXor = 6,
77  notSrcBic = 7,
78  patCopy = 8,
79  patOr = 9,
80  patXor = 10,
81  patBic = 11,
82  notPatCopy = 12,
83  notPatOr = 13,
84  notPatXor = 14,
85  notPatBic = 15, /* Special Text Transfer Mode */
86  grayishTextOr = 49,
87  hilitetransfermode = 50,
88  hilite = 50, /* Arithmetic transfer modes */
89  blend = 32,
90  addPin = 33,
91  addOver = 34,
92  subPin = 35,
93  addMax = 37,
94  adMax = 37,
95  subOver = 38,
96  adMin = 39,
97  ditherCopy = 64, /* Transparent mode constant */
98  transparent = 36
99  };
100 
101  enum
102  {
103  italicBit = 1,
104  ulineBit = 2,
105  outlineBit = 3,
106  shadowBit = 4,
107  condenseBit = 5,
108  extendBit = 6
109  };
110 
111  enum
112  {
113  /* QuickDraw color separation constants */
114  normalBit = 0, /*normal screen mapping*/
115  inverseBit = 1, /*inverse screen mapping*/
116  redBit = 4, /*RGB additive mapping*/
117  greenBit = 3,
118  blueBit = 2,
119  cyanBit = 8, /*CMYBk subtractive mapping*/
120  magentaBit = 7,
121  yellowBit = 6,
122  blackBit = 5
123  };
124 
125  enum
126  {
127  blackColor = 33, /*colors expressed in these mappings*/
128  whiteColor = 30,
129  redColor = 205,
130  greenColor = 341,
131  blueColor = 409,
132  cyanColor = 273,
133  magentaColor = 137,
134  yellowColor = 69
135  };
136 
137  enum
138  {
139  picLParen = 0, /*standard picture comments*/
140  picRParen = 1,
141  clutType = 0, /*0 if lookup table*/
142  fixedType = 1, /*1 if fixed table*/
143  directType = 2, /*2 if direct values*/
144  gdDevType = 0 /*0 = monochrome 1 = color*/
145  };
146 
147  enum
148  {
149  interlacedDevice = 2, /* 1 if single pixel lines look bad */
150  hwMirroredDevice = 4, /* 1 if device is HW mirrored */
151  roundedDevice = 5, /* 1 if device has been �rounded� into the GrayRgn */
152  hasAuxMenuBar = 6, /* 1 if device has an aux menu bar on it */
153  burstDevice = 7,
154  ext32Device = 8,
155  ramInit = 10, /*1 if initialized from 'scrn' resource*/
156  mainScreen = 11, /* 1 if main screen */
157  allInit = 12, /* 1 if all devices initialized */
158  screenDevice = 13, /*1 if screen device [not used]*/
159  noDriver = 14, /* 1 if no driver for this GDevice */
160  screenActive = 15, /*1 if in use*/
161  hiliteBit = 7, /*flag bit in LMGet/SetHiliteMode*/
162  pHiliteBit = 0, /*flag bit in LMGet/SetHiliteMode when used with BitClr*/
163  defQDColors = 127, /*resource ID of clut for default QDColors*/
164  /* pixel type */
165  RGBDirect = 16, /* 16 & 32 bits/pixel pixelType value */
166  /* pmVersion values */
167  baseAddr32 = 4 /*pixmap base address is 32-bit address*/
168  };
169 
170  enum
171  {
172  sysPatListID = 0,
173  iBeamCursor = 1,
174  crossCursor = 2,
175  plusCursor = 3,
176  watchCursor = 4
177  };
178 
179  enum
180  {
181  kQDGrafVerbFrame = 0,
182  kQDGrafVerbPaint = 1,
183  kQDGrafVerbErase = 2,
184  kQDGrafVerbInvert = 3,
185  kQDGrafVerbFill = 4
186  };
187 
188 #if OLDROUTINENAMES
189  enum
190  {
191  frame = kQDGrafVerbFrame,
192  paint = kQDGrafVerbPaint,
193  erase = kQDGrafVerbErase,
194  invert = kQDGrafVerbInvert,
195  fill = kQDGrafVerbFill
196  };
197 
198 #endif /* OLDROUTINENAMES */
199 
200  typedef SInt8 GrafVerb;
201  enum
202  {
203  chunky = 0,
204  chunkyPlanar = 1,
205  planar = 2
206  };
207 
208  typedef SInt8 PixelType;
209  typedef short Bits16[16];
210 
211  /*************** IMPORTANT NOTE REGARDING Pattern
212  ************************************** Patterns were originally defined as:
213 
214  C: typedef unsigned char Pattern[8];
215  Pascal: Pattern = PACKED ARRAY [0..7] OF 0..255;
216 
217  The old array definition of Pattern would cause 68000 based CPU's to crash in
218  certain circum- stances. The new struct definition is safe, but may require
219  source code changes to compile.
220 
221  *********************************************************************************************/
222  struct Pattern
223  {
224  UInt8 pat[8];
225  };
226  typedef struct Pattern Pattern;
233  typedef const Pattern *ConstPatternParam;
234  typedef Pattern *PatPtr;
235  typedef PatPtr *PatHandle;
236  typedef SignedByte QDByte;
237  typedef QDByte *QDPtr;
238  typedef QDPtr *QDHandle;
239  typedef short QDErr;
240  enum
241  {
242  singleDevicesBit = 0,
243  dontMatchSeedsBit = 1,
244  allDevicesBit = 2
245  };
246 
247  enum
248  {
249  singleDevices = 1 << singleDevicesBit,
250  dontMatchSeeds = 1 << dontMatchSeedsBit,
251  allDevices = 1 << allDevicesBit
252  };
253 
254  typedef unsigned long DeviceLoopFlags;
259  typedef SInt32 PrinterStatusOpcode;
260  enum
261  {
262  kPrinterFontStatus = 0,
263  kPrinterScalingStatus = 1
264  };
265 
267  {
268  SInt32 oResult;
269  SInt16 iFondID;
270  Style iStyle;
271  };
272  typedef struct PrinterFontStatus PrinterFontStatus;
274  {
275  Point oScalingFactors;
276  };
278  struct BitMap
279  {
280  Ptr baseAddr;
281  short rowBytes;
282  Rect bounds;
283  };
284  typedef struct BitMap BitMap;
285  typedef BitMap *BitMapPtr;
286  typedef BitMapPtr *BitMapHandle;
287  struct Cursor
288  {
289  Bits16 data;
290  Bits16 mask;
291  Point hotSpot;
292  };
293  typedef struct Cursor Cursor;
294  typedef Cursor *CursPtr;
295  typedef CursPtr *CursHandle;
296  struct PenState
297  {
298  Point pnLoc;
299  Point pnSize;
300  short pnMode;
301  Pattern pnPat;
302  };
303  typedef struct PenState PenState;
304 #if !OPAQUE_TOOLBOX_STRUCTS
305  struct MacRegion
306  {
307  unsigned short rgnSize; /* size in bytes; don't rely on it */
308  Rect rgnBBox; /* enclosing rectangle; in Carbon use GetRegionBounds */
309  };
310  typedef struct MacRegion MacRegion;
315 #if TARGET_OS_MAC
316  typedef MacRegion Region;
317 #endif /* TARGET_OS_MAC */
318 
319  typedef MacRegion *RgnPtr;
320  typedef RgnPtr *RgnHandle;
321 #else
322 typedef struct OpaqueRgnHandle *RgnHandle;
323 #endif /* !OPAQUE_TOOLBOX_STRUCTS */
324 
325  struct Picture
326  {
327  short picSize;
328  Rect picFrame;
329  };
330  typedef struct Picture Picture;
331  typedef Picture *PicPtr;
332  typedef PicPtr *PicHandle;
333  struct MacPolygon
334  {
335  short polySize;
336  Rect polyBBox;
337  Point polyPoints[1];
338  };
339  typedef struct MacPolygon MacPolygon;
344 #if TARGET_OS_MAC
345  typedef MacPolygon Polygon;
346 #endif /* TARGET_OS_MAC */
347 
348  typedef MacPolygon *PolyPtr;
349  typedef PolyPtr *PolyHandle;
350  typedef CALLBACK_API(void, QDTextProcPtr)(short byteCount, const void *textBuf,
351  Point numer, Point denom);
352  typedef CALLBACK_API(void, QDLineProcPtr)(Point newPt);
353  typedef CALLBACK_API(void, QDRectProcPtr)(GrafVerb verb, const Rect *r);
354  typedef CALLBACK_API(void, QDRRectProcPtr)(GrafVerb verb, const Rect *r,
355  short ovalWidth, short ovalHeight);
356  typedef CALLBACK_API(void, QDOvalProcPtr)(GrafVerb verb, const Rect *r);
357  typedef CALLBACK_API(void, QDArcProcPtr)(GrafVerb verb, const Rect *r,
358  short startAngle, short arcAngle);
359  typedef CALLBACK_API(void, QDPolyProcPtr)(GrafVerb verb, PolyHandle poly);
360  typedef CALLBACK_API(void, QDRgnProcPtr)(GrafVerb verb, RgnHandle rgn);
361  typedef CALLBACK_API(void, QDBitsProcPtr)(const BitMap *srcBits,
362  const Rect *srcRect,
363  const Rect *dstRect, short mode,
364  RgnHandle maskRgn);
365  typedef CALLBACK_API(void, QDCommentProcPtr)(short kind, short dataSize,
366  Handle dataHandle);
367  typedef CALLBACK_API(short, QDTxMeasProcPtr)(short byteCount,
368  const void *textAddr, Point *numer,
369  Point *denom, FontInfo *info);
370  typedef CALLBACK_API(void, QDGetPicProcPtr)(void *dataPtr, short byteCount);
371  typedef CALLBACK_API(void, QDPutPicProcPtr)(const void *dataPtr,
372  short byteCount);
373  typedef CALLBACK_API(void, QDOpcodeProcPtr)(const Rect *fromRect,
374  const Rect *toRect, UInt16 opcode,
375  SInt16 version);
376  typedef CALLBACK_API_C(OSStatus, QDStdGlyphsProcPtr)(void *dataStream,
377  ByteCount size);
378  typedef CALLBACK_API(void, QDJShieldCursorProcPtr)(short left, short top,
379  short right, short bottom);
380  typedef STACK_UPP_TYPE(QDTextProcPtr) QDTextUPP;
381  typedef STACK_UPP_TYPE(QDLineProcPtr) QDLineUPP;
382  typedef STACK_UPP_TYPE(QDRectProcPtr) QDRectUPP;
383  typedef STACK_UPP_TYPE(QDRRectProcPtr) QDRRectUPP;
384  typedef STACK_UPP_TYPE(QDOvalProcPtr) QDOvalUPP;
385  typedef STACK_UPP_TYPE(QDArcProcPtr) QDArcUPP;
386  typedef STACK_UPP_TYPE(QDPolyProcPtr) QDPolyUPP;
387  typedef STACK_UPP_TYPE(QDRgnProcPtr) QDRgnUPP;
388  typedef STACK_UPP_TYPE(QDBitsProcPtr) QDBitsUPP;
389  typedef STACK_UPP_TYPE(QDCommentProcPtr) QDCommentUPP;
390  typedef STACK_UPP_TYPE(QDTxMeasProcPtr) QDTxMeasUPP;
391  typedef STACK_UPP_TYPE(QDGetPicProcPtr) QDGetPicUPP;
392  typedef STACK_UPP_TYPE(QDPutPicProcPtr) QDPutPicUPP;
393  typedef STACK_UPP_TYPE(QDOpcodeProcPtr) QDOpcodeUPP;
394  typedef STACK_UPP_TYPE(QDStdGlyphsProcPtr) QDStdGlyphsUPP;
395  typedef STACK_UPP_TYPE(QDJShieldCursorProcPtr) QDJShieldCursorUPP;
396  struct QDProcs
397  {
398  QDTextUPP textProc;
399  QDLineUPP lineProc;
400  QDRectUPP rectProc;
401  QDRRectUPP rRectProc;
402  QDOvalUPP ovalProc;
403  QDArcUPP arcProc;
404  QDPolyUPP polyProc;
405  QDRgnUPP rgnProc;
406  QDBitsUPP bitsProc;
407  QDCommentUPP commentProc;
408  QDTxMeasUPP txMeasProc;
409  QDGetPicUPP getPicProc;
410  QDPutPicUPP putPicProc;
411  };
412  typedef struct QDProcs QDProcs;
413  typedef QDProcs *QDProcsPtr;
422  QDTextUPP
423  NewQDTextUPP(QDTextProcPtr userRoutine);
424 #if !OPAQUE_UPP_TYPES
425  enum
426  {
427  uppQDTextProcInfo = 0x00003F80
428  }; /* pascal no_return_value Func(2_bytes, 4_bytes, 4_bytes, 4_bytes) */
429 #ifdef __cplusplus
430  inline QDTextUPP NewQDTextUPP(QDTextProcPtr userRoutine)
431  {
432  return (QDTextUPP)NewRoutineDescriptor(
433  (ProcPtr)(userRoutine), uppQDTextProcInfo, GetCurrentArchitecture());
434  }
435 #else
436 #define NewQDTextUPP(userRoutine) \
437  (QDTextUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTextProcInfo, \
438  GetCurrentArchitecture())
439 #endif
440 #endif
441 
450  QDLineUPP
451  NewQDLineUPP(QDLineProcPtr userRoutine);
452 #if !OPAQUE_UPP_TYPES
453  enum
454  {
455  uppQDLineProcInfo = 0x000000C0
456  }; /* pascal no_return_value Func(4_bytes) */
457 #ifdef __cplusplus
458  inline QDLineUPP NewQDLineUPP(QDLineProcPtr userRoutine)
459  {
460  return (QDLineUPP)NewRoutineDescriptor(
461  (ProcPtr)(userRoutine), uppQDLineProcInfo, GetCurrentArchitecture());
462  }
463 #else
464 #define NewQDLineUPP(userRoutine) \
465  (QDLineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDLineProcInfo, \
466  GetCurrentArchitecture())
467 #endif
468 #endif
469 
478  QDRectUPP
479  NewQDRectUPP(QDRectProcPtr userRoutine);
480 #if !OPAQUE_UPP_TYPES
481  enum
482  {
483  uppQDRectProcInfo = 0x00000340
484  }; /* pascal no_return_value Func(1_byte, 4_bytes) */
485 #ifdef __cplusplus
486  inline QDRectUPP NewQDRectUPP(QDRectProcPtr userRoutine)
487  {
488  return (QDRectUPP)NewRoutineDescriptor(
489  (ProcPtr)(userRoutine), uppQDRectProcInfo, GetCurrentArchitecture());
490  }
491 #else
492 #define NewQDRectUPP(userRoutine) \
493  (QDRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRectProcInfo, \
494  GetCurrentArchitecture())
495 #endif
496 #endif
497 
506  QDRRectUPP
507  NewQDRRectUPP(QDRRectProcPtr userRoutine);
508 #if !OPAQUE_UPP_TYPES
509  enum
510  {
511  uppQDRRectProcInfo = 0x00002B40
512  }; /* pascal no_return_value Func(1_byte, 4_bytes, 2_bytes, 2_bytes) */
513 #ifdef __cplusplus
514  inline QDRRectUPP NewQDRRectUPP(QDRRectProcPtr userRoutine)
515  {
516  return (QDRRectUPP)NewRoutineDescriptor(
517  (ProcPtr)(userRoutine), uppQDRRectProcInfo, GetCurrentArchitecture());
518  }
519 #else
520 #define NewQDRRectUPP(userRoutine) \
521  (QDRRectUPP) NewRoutineDescriptor( \
522  (ProcPtr)(userRoutine), uppQDRRectProcInfo, GetCurrentArchitecture())
523 #endif
524 #endif
525 
534  QDOvalUPP
535  NewQDOvalUPP(QDOvalProcPtr userRoutine);
536 #if !OPAQUE_UPP_TYPES
537  enum
538  {
539  uppQDOvalProcInfo = 0x00000340
540  }; /* pascal no_return_value Func(1_byte, 4_bytes) */
541 #ifdef __cplusplus
542  inline QDOvalUPP NewQDOvalUPP(QDOvalProcPtr userRoutine)
543  {
544  return (QDOvalUPP)NewRoutineDescriptor(
545  (ProcPtr)(userRoutine), uppQDOvalProcInfo, GetCurrentArchitecture());
546  }
547 #else
548 #define NewQDOvalUPP(userRoutine) \
549  (QDOvalUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOvalProcInfo, \
550  GetCurrentArchitecture())
551 #endif
552 #endif
553 
562  QDArcUPP
563  NewQDArcUPP(QDArcProcPtr userRoutine);
564 #if !OPAQUE_UPP_TYPES
565  enum
566  {
567  uppQDArcProcInfo = 0x00002B40
568  }; /* pascal no_return_value Func(1_byte, 4_bytes, 2_bytes, 2_bytes) */
569 #ifdef __cplusplus
570  inline QDArcUPP NewQDArcUPP(QDArcProcPtr userRoutine)
571  {
572  return (QDArcUPP)NewRoutineDescriptor(
573  (ProcPtr)(userRoutine), uppQDArcProcInfo, GetCurrentArchitecture());
574  }
575 #else
576 #define NewQDArcUPP(userRoutine) \
577  (QDArcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDArcProcInfo, \
578  GetCurrentArchitecture())
579 #endif
580 #endif
581 
590  QDPolyUPP
591  NewQDPolyUPP(QDPolyProcPtr userRoutine);
592 #if !OPAQUE_UPP_TYPES
593  enum
594  {
595  uppQDPolyProcInfo = 0x00000340
596  }; /* pascal no_return_value Func(1_byte, 4_bytes) */
597 #ifdef __cplusplus
598  inline QDPolyUPP NewQDPolyUPP(QDPolyProcPtr userRoutine)
599  {
600  return (QDPolyUPP)NewRoutineDescriptor(
601  (ProcPtr)(userRoutine), uppQDPolyProcInfo, GetCurrentArchitecture());
602  }
603 #else
604 #define NewQDPolyUPP(userRoutine) \
605  (QDPolyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPolyProcInfo, \
606  GetCurrentArchitecture())
607 #endif
608 #endif
609 
618  QDRgnUPP
619  NewQDRgnUPP(QDRgnProcPtr userRoutine);
620 #if !OPAQUE_UPP_TYPES
621  enum
622  {
623  uppQDRgnProcInfo = 0x00000340
624  }; /* pascal no_return_value Func(1_byte, 4_bytes) */
625 #ifdef __cplusplus
626  inline QDRgnUPP NewQDRgnUPP(QDRgnProcPtr userRoutine)
627  {
628  return (QDRgnUPP)NewRoutineDescriptor(
629  (ProcPtr)(userRoutine), uppQDRgnProcInfo, GetCurrentArchitecture());
630  }
631 #else
632 #define NewQDRgnUPP(userRoutine) \
633  (QDRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRgnProcInfo, \
634  GetCurrentArchitecture())
635 #endif
636 #endif
637 
646  QDBitsUPP
647  NewQDBitsUPP(QDBitsProcPtr userRoutine);
648 #if !OPAQUE_UPP_TYPES
649  enum
650  {
651  uppQDBitsProcInfo = 0x0000EFC0
652  }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes)
653  */
654 #ifdef __cplusplus
655  inline QDBitsUPP NewQDBitsUPP(QDBitsProcPtr userRoutine)
656  {
657  return (QDBitsUPP)NewRoutineDescriptor(
658  (ProcPtr)(userRoutine), uppQDBitsProcInfo, GetCurrentArchitecture());
659  }
660 #else
661 #define NewQDBitsUPP(userRoutine) \
662  (QDBitsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDBitsProcInfo, \
663  GetCurrentArchitecture())
664 #endif
665 #endif
666 
675  QDCommentUPP
676  NewQDCommentUPP(QDCommentProcPtr userRoutine);
677 #if !OPAQUE_UPP_TYPES
678  enum
679  {
680  uppQDCommentProcInfo = 0x00000E80
681  }; /* pascal no_return_value Func(2_bytes, 2_bytes, 4_bytes) */
682 #ifdef __cplusplus
683  inline QDCommentUPP NewQDCommentUPP(QDCommentProcPtr userRoutine)
684  {
685  return (QDCommentUPP)NewRoutineDescriptor(
686  (ProcPtr)(userRoutine), uppQDCommentProcInfo, GetCurrentArchitecture());
687  }
688 #else
689 #define NewQDCommentUPP(userRoutine) \
690  (QDCommentUPP) NewRoutineDescriptor( \
691  (ProcPtr)(userRoutine), uppQDCommentProcInfo, GetCurrentArchitecture())
692 #endif
693 #endif
694 
703  QDTxMeasUPP
704  NewQDTxMeasUPP(QDTxMeasProcPtr userRoutine);
705 #if !OPAQUE_UPP_TYPES
706  enum
707  {
708  uppQDTxMeasProcInfo = 0x0000FFA0
709  }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
710 #ifdef __cplusplus
711  inline QDTxMeasUPP NewQDTxMeasUPP(QDTxMeasProcPtr userRoutine)
712  {
713  return (QDTxMeasUPP)NewRoutineDescriptor(
714  (ProcPtr)(userRoutine), uppQDTxMeasProcInfo, GetCurrentArchitecture());
715  }
716 #else
717 #define NewQDTxMeasUPP(userRoutine) \
718  (QDTxMeasUPP) NewRoutineDescriptor( \
719  (ProcPtr)(userRoutine), uppQDTxMeasProcInfo, GetCurrentArchitecture())
720 #endif
721 #endif
722 
731  QDGetPicUPP
732  NewQDGetPicUPP(QDGetPicProcPtr userRoutine);
733 #if !OPAQUE_UPP_TYPES
734  enum
735  {
736  uppQDGetPicProcInfo = 0x000002C0
737  }; /* pascal no_return_value Func(4_bytes, 2_bytes) */
738 #ifdef __cplusplus
739  inline QDGetPicUPP NewQDGetPicUPP(QDGetPicProcPtr userRoutine)
740  {
741  return (QDGetPicUPP)NewRoutineDescriptor(
742  (ProcPtr)(userRoutine), uppQDGetPicProcInfo, GetCurrentArchitecture());
743  }
744 #else
745 #define NewQDGetPicUPP(userRoutine) \
746  (QDGetPicUPP) NewRoutineDescriptor( \
747  (ProcPtr)(userRoutine), uppQDGetPicProcInfo, GetCurrentArchitecture())
748 #endif
749 #endif
750 
759  QDPutPicUPP
760  NewQDPutPicUPP(QDPutPicProcPtr userRoutine);
761 #if !OPAQUE_UPP_TYPES
762  enum
763  {
764  uppQDPutPicProcInfo = 0x000002C0
765  }; /* pascal no_return_value Func(4_bytes, 2_bytes) */
766 #ifdef __cplusplus
767  inline QDPutPicUPP NewQDPutPicUPP(QDPutPicProcPtr userRoutine)
768  {
769  return (QDPutPicUPP)NewRoutineDescriptor(
770  (ProcPtr)(userRoutine), uppQDPutPicProcInfo, GetCurrentArchitecture());
771  }
772 #else
773 #define NewQDPutPicUPP(userRoutine) \
774  (QDPutPicUPP) NewRoutineDescriptor( \
775  (ProcPtr)(userRoutine), uppQDPutPicProcInfo, GetCurrentArchitecture())
776 #endif
777 #endif
778 
787  QDOpcodeUPP
788  NewQDOpcodeUPP(QDOpcodeProcPtr userRoutine);
789 #if !OPAQUE_UPP_TYPES
790  enum
791  {
792  uppQDOpcodeProcInfo = 0x00002BC0
793  }; /* pascal no_return_value Func(4_bytes, 4_bytes, 2_bytes, 2_bytes) */
794 #ifdef __cplusplus
795  inline QDOpcodeUPP NewQDOpcodeUPP(QDOpcodeProcPtr userRoutine)
796  {
797  return (QDOpcodeUPP)NewRoutineDescriptor(
798  (ProcPtr)(userRoutine), uppQDOpcodeProcInfo, GetCurrentArchitecture());
799  }
800 #else
801 #define NewQDOpcodeUPP(userRoutine) \
802  (QDOpcodeUPP) NewRoutineDescriptor( \
803  (ProcPtr)(userRoutine), uppQDOpcodeProcInfo, GetCurrentArchitecture())
804 #endif
805 #endif
806 
815  QDStdGlyphsUPP
816  NewQDStdGlyphsUPP(QDStdGlyphsProcPtr userRoutine);
817 #if !OPAQUE_UPP_TYPES
818  enum
819  {
820  uppQDStdGlyphsProcInfo = 0x000003F1
821  }; /* 4_bytes Func(4_bytes, 4_bytes) */
822 #ifdef __cplusplus
823  inline QDStdGlyphsUPP NewQDStdGlyphsUPP(QDStdGlyphsProcPtr userRoutine)
824  {
825  return (QDStdGlyphsUPP)NewRoutineDescriptor(
826  (ProcPtr)(userRoutine), uppQDStdGlyphsProcInfo, GetCurrentArchitecture());
827  }
828 #else
829 #define NewQDStdGlyphsUPP(userRoutine) \
830  (QDStdGlyphsUPP) \
831  NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDStdGlyphsProcInfo, \
832  GetCurrentArchitecture())
833 #endif
834 #endif
835 
844  QDJShieldCursorUPP
845  NewQDJShieldCursorUPP(QDJShieldCursorProcPtr userRoutine);
846 #if !OPAQUE_UPP_TYPES
847  enum
848  {
849  uppQDJShieldCursorProcInfo = 0x00002A80
850  }; /* pascal no_return_value Func(2_bytes, 2_bytes, 2_bytes, 2_bytes) */
851 #ifdef __cplusplus
852  inline QDJShieldCursorUPP
853  NewQDJShieldCursorUPP(QDJShieldCursorProcPtr userRoutine)
854  {
855  return (QDJShieldCursorUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
856  uppQDJShieldCursorProcInfo,
857  GetCurrentArchitecture());
858  }
859 #else
860 #define NewQDJShieldCursorUPP(userRoutine) \
861  (QDJShieldCursorUPP) \
862  NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, \
863  GetCurrentArchitecture())
864 #endif
865 #endif
866 
875  void
876  DisposeQDTextUPP(QDTextUPP userUPP);
877 #if !OPAQUE_UPP_TYPES
878 #ifdef __cplusplus
879  inline void DisposeQDTextUPP(QDTextUPP userUPP)
880  {
881  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
882  }
883 #else
884 #define DisposeQDTextUPP(userUPP) DisposeRoutineDescriptor(userUPP)
885 #endif
886 #endif
887 
896  void
897  DisposeQDLineUPP(QDLineUPP userUPP);
898 #if !OPAQUE_UPP_TYPES
899 #ifdef __cplusplus
900  inline void DisposeQDLineUPP(QDLineUPP userUPP)
901  {
902  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
903  }
904 #else
905 #define DisposeQDLineUPP(userUPP) DisposeRoutineDescriptor(userUPP)
906 #endif
907 #endif
908 
917  void
918  DisposeQDRectUPP(QDRectUPP userUPP);
919 #if !OPAQUE_UPP_TYPES
920 #ifdef __cplusplus
921  inline void DisposeQDRectUPP(QDRectUPP userUPP)
922  {
923  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
924  }
925 #else
926 #define DisposeQDRectUPP(userUPP) DisposeRoutineDescriptor(userUPP)
927 #endif
928 #endif
929 
938  void
939  DisposeQDRRectUPP(QDRRectUPP userUPP);
940 #if !OPAQUE_UPP_TYPES
941 #ifdef __cplusplus
942  inline void DisposeQDRRectUPP(QDRRectUPP userUPP)
943  {
944  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
945  }
946 #else
947 #define DisposeQDRRectUPP(userUPP) DisposeRoutineDescriptor(userUPP)
948 #endif
949 #endif
950 
959  void
960  DisposeQDOvalUPP(QDOvalUPP userUPP);
961 #if !OPAQUE_UPP_TYPES
962 #ifdef __cplusplus
963  inline void DisposeQDOvalUPP(QDOvalUPP userUPP)
964  {
965  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
966  }
967 #else
968 #define DisposeQDOvalUPP(userUPP) DisposeRoutineDescriptor(userUPP)
969 #endif
970 #endif
971 
980  void
981  DisposeQDArcUPP(QDArcUPP userUPP);
982 #if !OPAQUE_UPP_TYPES
983 #ifdef __cplusplus
984  inline void DisposeQDArcUPP(QDArcUPP userUPP)
985  {
986  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
987  }
988 #else
989 #define DisposeQDArcUPP(userUPP) DisposeRoutineDescriptor(userUPP)
990 #endif
991 #endif
992 
1001  void
1002  DisposeQDPolyUPP(QDPolyUPP userUPP);
1003 #if !OPAQUE_UPP_TYPES
1004 #ifdef __cplusplus
1005  inline void DisposeQDPolyUPP(QDPolyUPP userUPP)
1006  {
1007  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1008  }
1009 #else
1010 #define DisposeQDPolyUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1011 #endif
1012 #endif
1013 
1022  void
1023  DisposeQDRgnUPP(QDRgnUPP userUPP);
1024 #if !OPAQUE_UPP_TYPES
1025 #ifdef __cplusplus
1026  inline void DisposeQDRgnUPP(QDRgnUPP userUPP)
1027  {
1028  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1029  }
1030 #else
1031 #define DisposeQDRgnUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1032 #endif
1033 #endif
1034 
1043  void
1044  DisposeQDBitsUPP(QDBitsUPP userUPP);
1045 #if !OPAQUE_UPP_TYPES
1046 #ifdef __cplusplus
1047  inline void DisposeQDBitsUPP(QDBitsUPP userUPP)
1048  {
1049  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1050  }
1051 #else
1052 #define DisposeQDBitsUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1053 #endif
1054 #endif
1055 
1064  void
1065  DisposeQDCommentUPP(QDCommentUPP userUPP);
1066 #if !OPAQUE_UPP_TYPES
1067 #ifdef __cplusplus
1068  inline void DisposeQDCommentUPP(QDCommentUPP userUPP)
1069  {
1070  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1071  }
1072 #else
1073 #define DisposeQDCommentUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1074 #endif
1075 #endif
1076 
1085  void
1086  DisposeQDTxMeasUPP(QDTxMeasUPP userUPP);
1087 #if !OPAQUE_UPP_TYPES
1088 #ifdef __cplusplus
1089  inline void DisposeQDTxMeasUPP(QDTxMeasUPP userUPP)
1090  {
1091  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1092  }
1093 #else
1094 #define DisposeQDTxMeasUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1095 #endif
1096 #endif
1097 
1106  void
1107  DisposeQDGetPicUPP(QDGetPicUPP userUPP);
1108 #if !OPAQUE_UPP_TYPES
1109 #ifdef __cplusplus
1110  inline void DisposeQDGetPicUPP(QDGetPicUPP userUPP)
1111  {
1112  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1113  }
1114 #else
1115 #define DisposeQDGetPicUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1116 #endif
1117 #endif
1118 
1127  void
1128  DisposeQDPutPicUPP(QDPutPicUPP userUPP);
1129 #if !OPAQUE_UPP_TYPES
1130 #ifdef __cplusplus
1131  inline void DisposeQDPutPicUPP(QDPutPicUPP userUPP)
1132  {
1133  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1134  }
1135 #else
1136 #define DisposeQDPutPicUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1137 #endif
1138 #endif
1139 
1148  void
1149  DisposeQDOpcodeUPP(QDOpcodeUPP userUPP);
1150 #if !OPAQUE_UPP_TYPES
1151 #ifdef __cplusplus
1152  inline void DisposeQDOpcodeUPP(QDOpcodeUPP userUPP)
1153  {
1154  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1155  }
1156 #else
1157 #define DisposeQDOpcodeUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1158 #endif
1159 #endif
1160 
1169  void
1170  DisposeQDStdGlyphsUPP(QDStdGlyphsUPP userUPP);
1171 #if !OPAQUE_UPP_TYPES
1172 #ifdef __cplusplus
1173  inline void DisposeQDStdGlyphsUPP(QDStdGlyphsUPP userUPP)
1174  {
1175  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1176  }
1177 #else
1178 #define DisposeQDStdGlyphsUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1179 #endif
1180 #endif
1181 
1190  void
1191  DisposeQDJShieldCursorUPP(QDJShieldCursorUPP userUPP);
1192 #if !OPAQUE_UPP_TYPES
1193 #ifdef __cplusplus
1194  inline void DisposeQDJShieldCursorUPP(QDJShieldCursorUPP userUPP)
1195  {
1196  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1197  }
1198 #else
1199 #define DisposeQDJShieldCursorUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1200 #endif
1201 #endif
1202 
1211  void
1212  InvokeQDTextUPP(short byteCount, const void *textBuf, Point numer, Point denom,
1213  QDTextUPP userUPP);
1214 #if !OPAQUE_UPP_TYPES
1215 #ifdef __cplusplus
1216  inline void InvokeQDTextUPP(short byteCount, const void *textBuf, Point numer,
1217  Point denom, QDTextUPP userUPP)
1218  {
1219  CALL_FOUR_PARAMETER_UPP(userUPP, uppQDTextProcInfo, byteCount, textBuf, numer,
1220  denom);
1221  }
1222 #else
1223 #define InvokeQDTextUPP(byteCount, textBuf, numer, denom, userUPP) \
1224  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDTextProcInfo, (byteCount), \
1225  (textBuf), (numer), (denom))
1226 #endif
1227 #endif
1228 
1237  void
1238  InvokeQDLineUPP(Point newPt, QDLineUPP userUPP);
1239 #if !OPAQUE_UPP_TYPES
1240 #ifdef __cplusplus
1241  inline void InvokeQDLineUPP(Point newPt, QDLineUPP userUPP)
1242  {
1243  CALL_ONE_PARAMETER_UPP(userUPP, uppQDLineProcInfo, newPt);
1244  }
1245 #else
1246 #define InvokeQDLineUPP(newPt, userUPP) \
1247  CALL_ONE_PARAMETER_UPP((userUPP), uppQDLineProcInfo, (newPt))
1248 #endif
1249 #endif
1250 
1259  void
1260  InvokeQDRectUPP(GrafVerb verb, const Rect *r, QDRectUPP userUPP);
1261 #if !OPAQUE_UPP_TYPES
1262 #ifdef __cplusplus
1263  inline void InvokeQDRectUPP(GrafVerb verb, const Rect *r, QDRectUPP userUPP)
1264  {
1265  CALL_TWO_PARAMETER_UPP(userUPP, uppQDRectProcInfo, verb, r);
1266  }
1267 #else
1268 #define InvokeQDRectUPP(verb, r, userUPP) \
1269  CALL_TWO_PARAMETER_UPP((userUPP), uppQDRectProcInfo, (verb), (r))
1270 #endif
1271 #endif
1272 
1281  void
1282  InvokeQDRRectUPP(GrafVerb verb, const Rect *r, short ovalWidth,
1283  short ovalHeight, QDRRectUPP userUPP);
1284 #if !OPAQUE_UPP_TYPES
1285 #ifdef __cplusplus
1286  inline void InvokeQDRRectUPP(GrafVerb verb, const Rect *r, short ovalWidth,
1287  short ovalHeight, QDRRectUPP userUPP)
1288  {
1289  CALL_FOUR_PARAMETER_UPP(userUPP, uppQDRRectProcInfo, verb, r, ovalWidth,
1290  ovalHeight);
1291  }
1292 #else
1293 #define InvokeQDRRectUPP(verb, r, ovalWidth, ovalHeight, userUPP) \
1294  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDRRectProcInfo, (verb), (r), \
1295  (ovalWidth), (ovalHeight))
1296 #endif
1297 #endif
1298 
1307  void
1308  InvokeQDOvalUPP(GrafVerb verb, const Rect *r, QDOvalUPP userUPP);
1309 #if !OPAQUE_UPP_TYPES
1310 #ifdef __cplusplus
1311  inline void InvokeQDOvalUPP(GrafVerb verb, const Rect *r, QDOvalUPP userUPP)
1312  {
1313  CALL_TWO_PARAMETER_UPP(userUPP, uppQDOvalProcInfo, verb, r);
1314  }
1315 #else
1316 #define InvokeQDOvalUPP(verb, r, userUPP) \
1317  CALL_TWO_PARAMETER_UPP((userUPP), uppQDOvalProcInfo, (verb), (r))
1318 #endif
1319 #endif
1320 
1329  void
1330  InvokeQDArcUPP(GrafVerb verb, const Rect *r, short startAngle, short arcAngle,
1331  QDArcUPP userUPP);
1332 #if !OPAQUE_UPP_TYPES
1333 #ifdef __cplusplus
1334  inline void InvokeQDArcUPP(GrafVerb verb, const Rect *r, short startAngle,
1335  short arcAngle, QDArcUPP userUPP)
1336  {
1337  CALL_FOUR_PARAMETER_UPP(userUPP, uppQDArcProcInfo, verb, r, startAngle,
1338  arcAngle);
1339  }
1340 #else
1341 #define InvokeQDArcUPP(verb, r, startAngle, arcAngle, userUPP) \
1342  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDArcProcInfo, (verb), (r), \
1343  (startAngle), (arcAngle))
1344 #endif
1345 #endif
1346 
1355  void
1356  InvokeQDPolyUPP(GrafVerb verb, PolyHandle poly, QDPolyUPP userUPP);
1357 #if !OPAQUE_UPP_TYPES
1358 #ifdef __cplusplus
1359  inline void InvokeQDPolyUPP(GrafVerb verb, PolyHandle poly, QDPolyUPP userUPP)
1360  {
1361  CALL_TWO_PARAMETER_UPP(userUPP, uppQDPolyProcInfo, verb, poly);
1362  }
1363 #else
1364 #define InvokeQDPolyUPP(verb, poly, userUPP) \
1365  CALL_TWO_PARAMETER_UPP((userUPP), uppQDPolyProcInfo, (verb), (poly))
1366 #endif
1367 #endif
1368 
1377  void
1378  InvokeQDRgnUPP(GrafVerb verb, RgnHandle rgn, QDRgnUPP userUPP);
1379 #if !OPAQUE_UPP_TYPES
1380 #ifdef __cplusplus
1381  inline void InvokeQDRgnUPP(GrafVerb verb, RgnHandle rgn, QDRgnUPP userUPP)
1382  {
1383  CALL_TWO_PARAMETER_UPP(userUPP, uppQDRgnProcInfo, verb, rgn);
1384  }
1385 #else
1386 #define InvokeQDRgnUPP(verb, rgn, userUPP) \
1387  CALL_TWO_PARAMETER_UPP((userUPP), uppQDRgnProcInfo, (verb), (rgn))
1388 #endif
1389 #endif
1390 
1399  void
1400  InvokeQDBitsUPP(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect,
1401  short mode, RgnHandle maskRgn, QDBitsUPP userUPP);
1402 #if !OPAQUE_UPP_TYPES
1403 #ifdef __cplusplus
1404  inline void InvokeQDBitsUPP(const BitMap *srcBits, const Rect *srcRect,
1405  const Rect *dstRect, short mode, RgnHandle maskRgn,
1406  QDBitsUPP userUPP)
1407  {
1408  CALL_FIVE_PARAMETER_UPP(userUPP, uppQDBitsProcInfo, srcBits, srcRect, dstRect,
1409  mode, maskRgn);
1410  }
1411 #else
1412 #define InvokeQDBitsUPP(srcBits, srcRect, dstRect, mode, maskRgn, userUPP) \
1413  CALL_FIVE_PARAMETER_UPP((userUPP), uppQDBitsProcInfo, (srcBits), (srcRect), \
1414  (dstRect), (mode), (maskRgn))
1415 #endif
1416 #endif
1417 
1426  void
1427  InvokeQDCommentUPP(short kind, short dataSize, Handle dataHandle,
1428  QDCommentUPP userUPP);
1429 #if !OPAQUE_UPP_TYPES
1430 #ifdef __cplusplus
1431  inline void InvokeQDCommentUPP(short kind, short dataSize, Handle dataHandle,
1432  QDCommentUPP userUPP)
1433  {
1434  CALL_THREE_PARAMETER_UPP(userUPP, uppQDCommentProcInfo, kind, dataSize,
1435  dataHandle);
1436  }
1437 #else
1438 #define InvokeQDCommentUPP(kind, dataSize, dataHandle, userUPP) \
1439  CALL_THREE_PARAMETER_UPP((userUPP), uppQDCommentProcInfo, (kind), \
1440  (dataSize), (dataHandle))
1441 #endif
1442 #endif
1443 
1452  short
1453  InvokeQDTxMeasUPP(short byteCount, const void *textAddr, Point *numer,
1454  Point *denom, FontInfo *info, QDTxMeasUPP userUPP);
1455 #if !OPAQUE_UPP_TYPES
1456 #ifdef __cplusplus
1457  inline short InvokeQDTxMeasUPP(short byteCount, const void *textAddr,
1458  Point *numer, Point *denom, FontInfo *info,
1459  QDTxMeasUPP userUPP)
1460  {
1461  return (short)CALL_FIVE_PARAMETER_UPP(userUPP, uppQDTxMeasProcInfo, byteCount,
1462  textAddr, numer, denom, info);
1463  }
1464 #else
1465 #define InvokeQDTxMeasUPP(byteCount, textAddr, numer, denom, info, userUPP) \
1466  (short)CALL_FIVE_PARAMETER_UPP((userUPP), uppQDTxMeasProcInfo, (byteCount), \
1467  (textAddr), (numer), (denom), (info))
1468 #endif
1469 #endif
1470 
1479  void
1480  InvokeQDGetPicUPP(void *dataPtr, short byteCount, QDGetPicUPP userUPP);
1481 #if !OPAQUE_UPP_TYPES
1482 #ifdef __cplusplus
1483  inline void InvokeQDGetPicUPP(void *dataPtr, short byteCount,
1484  QDGetPicUPP userUPP)
1485  {
1486  CALL_TWO_PARAMETER_UPP(userUPP, uppQDGetPicProcInfo, dataPtr, byteCount);
1487  }
1488 #else
1489 #define InvokeQDGetPicUPP(dataPtr, byteCount, userUPP) \
1490  CALL_TWO_PARAMETER_UPP((userUPP), uppQDGetPicProcInfo, (dataPtr), (byteCount))
1491 #endif
1492 #endif
1493 
1502  void
1503  InvokeQDPutPicUPP(const void *dataPtr, short byteCount, QDPutPicUPP userUPP);
1504 #if !OPAQUE_UPP_TYPES
1505 #ifdef __cplusplus
1506  inline void InvokeQDPutPicUPP(const void *dataPtr, short byteCount,
1507  QDPutPicUPP userUPP)
1508  {
1509  CALL_TWO_PARAMETER_UPP(userUPP, uppQDPutPicProcInfo, dataPtr, byteCount);
1510  }
1511 #else
1512 #define InvokeQDPutPicUPP(dataPtr, byteCount, userUPP) \
1513  CALL_TWO_PARAMETER_UPP((userUPP), uppQDPutPicProcInfo, (dataPtr), (byteCount))
1514 #endif
1515 #endif
1516 
1525  void
1526  InvokeQDOpcodeUPP(const Rect *fromRect, const Rect *toRect, UInt16 opcode,
1527  SInt16 version, QDOpcodeUPP userUPP);
1528 #if !OPAQUE_UPP_TYPES
1529 #ifdef __cplusplus
1530  inline void InvokeQDOpcodeUPP(const Rect *fromRect, const Rect *toRect,
1531  UInt16 opcode, SInt16 version,
1532  QDOpcodeUPP userUPP)
1533  {
1534  CALL_FOUR_PARAMETER_UPP(userUPP, uppQDOpcodeProcInfo, fromRect, toRect,
1535  opcode, version);
1536  }
1537 #else
1538 #define InvokeQDOpcodeUPP(fromRect, toRect, opcode, version, userUPP) \
1539  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDOpcodeProcInfo, (fromRect), \
1540  (toRect), (opcode), (version))
1541 #endif
1542 #endif
1543 
1552  OSStatus
1553  InvokeQDStdGlyphsUPP(void *dataStream, ByteCount size, QDStdGlyphsUPP userUPP);
1554 #if !OPAQUE_UPP_TYPES
1555 #ifdef __cplusplus
1556  inline OSStatus InvokeQDStdGlyphsUPP(void *dataStream, ByteCount size,
1557  QDStdGlyphsUPP userUPP)
1558  {
1559  return (OSStatus)CALL_TWO_PARAMETER_UPP(userUPP, uppQDStdGlyphsProcInfo,
1560  dataStream, size);
1561  }
1562 #else
1563 #define InvokeQDStdGlyphsUPP(dataStream, size, userUPP) \
1564  (OSStatus) CALL_TWO_PARAMETER_UPP((userUPP), uppQDStdGlyphsProcInfo, \
1565  (dataStream), (size))
1566 #endif
1567 #endif
1568 
1577  void
1578  InvokeQDJShieldCursorUPP(short left, short top, short right, short bottom,
1579  QDJShieldCursorUPP userUPP);
1580 #if !OPAQUE_UPP_TYPES
1581 #ifdef __cplusplus
1582  inline void InvokeQDJShieldCursorUPP(short left, short top, short right,
1583  short bottom, QDJShieldCursorUPP userUPP)
1584  {
1585  CALL_FOUR_PARAMETER_UPP(userUPP, uppQDJShieldCursorProcInfo, left, top, right,
1586  bottom);
1587  }
1588 #else
1589 #define InvokeQDJShieldCursorUPP(left, top, right, bottom, userUPP) \
1590  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDJShieldCursorProcInfo, (left), \
1591  (top), (right), (bottom))
1592 #endif
1593 #endif
1594 
1595 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
1596 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
1597 #define NewQDTextProc(userRoutine) NewQDTextUPP(userRoutine)
1598 #define NewQDLineProc(userRoutine) NewQDLineUPP(userRoutine)
1599 #define NewQDRectProc(userRoutine) NewQDRectUPP(userRoutine)
1600 #define NewQDRRectProc(userRoutine) NewQDRRectUPP(userRoutine)
1601 #define NewQDOvalProc(userRoutine) NewQDOvalUPP(userRoutine)
1602 #define NewQDArcProc(userRoutine) NewQDArcUPP(userRoutine)
1603 #define NewQDPolyProc(userRoutine) NewQDPolyUPP(userRoutine)
1604 #define NewQDRgnProc(userRoutine) NewQDRgnUPP(userRoutine)
1605 #define NewQDBitsProc(userRoutine) NewQDBitsUPP(userRoutine)
1606 #define NewQDCommentProc(userRoutine) NewQDCommentUPP(userRoutine)
1607 #define NewQDTxMeasProc(userRoutine) NewQDTxMeasUPP(userRoutine)
1608 #define NewQDGetPicProc(userRoutine) NewQDGetPicUPP(userRoutine)
1609 #define NewQDPutPicProc(userRoutine) NewQDPutPicUPP(userRoutine)
1610 #define NewQDOpcodeProc(userRoutine) NewQDOpcodeUPP(userRoutine)
1611 #define NewQDStdGlyphsProc(userRoutine) NewQDStdGlyphsUPP(userRoutine)
1612 #define NewQDJShieldCursorProc(userRoutine) NewQDJShieldCursorUPP(userRoutine)
1613 #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom) \
1614  InvokeQDTextUPP(byteCount, textBuf, numer, denom, userRoutine)
1615 #define CallQDLineProc(userRoutine, newPt) InvokeQDLineUPP(newPt, userRoutine)
1616 #define CallQDRectProc(userRoutine, verb, r) \
1617  InvokeQDRectUPP(verb, r, userRoutine)
1618 #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight) \
1619  InvokeQDRRectUPP(verb, r, ovalWidth, ovalHeight, userRoutine)
1620 #define CallQDOvalProc(userRoutine, verb, r) \
1621  InvokeQDOvalUPP(verb, r, userRoutine)
1622 #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle) \
1623  InvokeQDArcUPP(verb, r, startAngle, arcAngle, userRoutine)
1624 #define CallQDPolyProc(userRoutine, verb, poly) \
1625  InvokeQDPolyUPP(verb, poly, userRoutine)
1626 #define CallQDRgnProc(userRoutine, verb, rgn) \
1627  InvokeQDRgnUPP(verb, rgn, userRoutine)
1628 #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn) \
1629  InvokeQDBitsUPP(srcBits, srcRect, dstRect, mode, maskRgn, userRoutine)
1630 #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle) \
1631  InvokeQDCommentUPP(kind, dataSize, dataHandle, userRoutine)
1632 #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info) \
1633  InvokeQDTxMeasUPP(byteCount, textAddr, numer, denom, info, userRoutine)
1634 #define CallQDGetPicProc(userRoutine, dataPtr, byteCount) \
1635  InvokeQDGetPicUPP(dataPtr, byteCount, userRoutine)
1636 #define CallQDPutPicProc(userRoutine, dataPtr, byteCount) \
1637  InvokeQDPutPicUPP(dataPtr, byteCount, userRoutine)
1638 #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version) \
1639  InvokeQDOpcodeUPP(fromRect, toRect, opcode, version, userRoutine)
1640 #define CallQDStdGlyphsProc(userRoutine, dataStream, size) \
1641  InvokeQDStdGlyphsUPP(dataStream, size, userRoutine)
1642 #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom) \
1643  InvokeQDJShieldCursorUPP(left, top, right, bottom, userRoutine)
1644 #endif /* CALL_NOT_IN_CARBON */
1645 
1646 #if !OPAQUE_TOOLBOX_STRUCTS
1647  struct GrafPort
1648  {
1649  short device; /* not available in Carbon*/
1650  BitMap portBits; /* in Carbon use GetPortBitMapForCopyBits or IsPortColor*/
1651  Rect portRect; /* in Carbon use Get/SetPortBounds*/
1652  RgnHandle visRgn; /* in Carbon use Get/SetPortVisibleRegion*/
1653  RgnHandle clipRgn; /* in Carbon use Get/SetPortClipRegion*/
1654  Pattern bkPat; /* not available in Carbon all GrafPorts are CGrafPorts*/
1655  Pattern fillPat; /* not available in Carbon all GrafPorts are CGrafPorts*/
1656  Point pnLoc; /* in Carbon use GetPortPenLocation or MoveTo*/
1657  Point pnSize; /* in Carbon use Get/SetPortPenSize*/
1658  short pnMode; /* in Carbon use Get/SetPortPenMode*/
1659  Pattern pnPat; /* not available in Carbon all GrafPorts are CGrafPorts*/
1660  short pnVis; /* in Carbon use GetPortPenVisibility or Show/HidePen*/
1661  short txFont; /* in Carbon use GetPortTextFont or TextFont*/
1662  StyleField txFace; /* in Carbon use GetPortTextFace or TextFace*/
1663  /*StyleField occupies 16-bits, but only first 8-bits are used*/
1664  short txMode; /* in Carbon use GetPortTextMode or TextMode*/
1665  short txSize; /* in Carbon use GetPortTextSize or TextSize*/
1666  Fixed spExtra; /* in Carbon use GetPortSpExtra or SpaceExtra*/
1667  long fgColor; /* not available in Carbon */
1668  long bkColor; /* not available in Carbon*/
1669  short colrBit; /* not available in Carbon*/
1670  short patStretch; /* not available in Carbon*/
1671  Handle picSave; /* in Carbon use IsPortPictureBeingDefined*/
1672  Handle rgnSave; /* not available in Carbon*/
1673  Handle polySave; /* not available in Carbon*/
1674  QDProcsPtr
1675  grafProcs; /* not available in Carbon all GrafPorts are CGrafPorts*/
1676  };
1677  typedef struct GrafPort GrafPort;
1678  typedef GrafPort *GrafPtr;
1686  typedef WindowPtr DialogPtr;
1687 #else
1688 typedef struct OpaqueWindowPtr *WindowPtr;
1689 typedef struct OpaqueDialogPtr *DialogPtr;
1690 typedef struct OpaqueGrafPtr *GrafPtr;
1691 #endif /* !OPAQUE_TOOLBOX_STRUCTS */
1692 
1693  typedef WindowPtr WindowRef;
1694  /* DragConstraint constants to pass to DragGray,DragTheRgn, or
1695  * ConstrainedDragRgn*/
1696  typedef UInt16 DragConstraint;
1697  enum
1698  {
1699  kNoConstraint = 0,
1700  kVerticalConstraint = 1,
1701  kHorizontalConstraint = 2
1702  };
1703 
1704  typedef CALLBACK_API(void, DragGrayRgnProcPtr)(void);
1709  struct RGBColor
1710  {
1711  unsigned short red; /*magnitude of red component*/
1712  unsigned short green; /*magnitude of green component*/
1713  unsigned short blue; /*magnitude of blue component*/
1714  };
1715  typedef struct RGBColor RGBColor;
1716  typedef RGBColor *RGBColorPtr;
1717  typedef RGBColorPtr *RGBColorHdl;
1718  typedef CALLBACK_API(Boolean, ColorSearchProcPtr)(RGBColor *rgb,
1719  long *position);
1720  typedef CALLBACK_API(Boolean, ColorComplementProcPtr)(RGBColor *rgb);
1721  typedef STACK_UPP_TYPE(DragGrayRgnProcPtr) DragGrayRgnUPP;
1722  typedef STACK_UPP_TYPE(ColorSearchProcPtr) ColorSearchUPP;
1723  typedef STACK_UPP_TYPE(ColorComplementProcPtr) ColorComplementUPP;
1732  DragGrayRgnUPP
1733  NewDragGrayRgnUPP(DragGrayRgnProcPtr userRoutine);
1734 #if !OPAQUE_UPP_TYPES
1735  enum
1736  {
1737  uppDragGrayRgnProcInfo = 0x00000000
1738  }; /* pascal no_return_value Func() */
1739 #ifdef __cplusplus
1740  inline DragGrayRgnUPP NewDragGrayRgnUPP(DragGrayRgnProcPtr userRoutine)
1741  {
1742  return (DragGrayRgnUPP)NewRoutineDescriptor(
1743  (ProcPtr)(userRoutine), uppDragGrayRgnProcInfo, GetCurrentArchitecture());
1744  }
1745 #else
1746 #define NewDragGrayRgnUPP(userRoutine) \
1747  (DragGrayRgnUPP) \
1748  NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragGrayRgnProcInfo, \
1749  GetCurrentArchitecture())
1750 #endif
1751 #endif
1752 
1761  ColorSearchUPP
1762  NewColorSearchUPP(ColorSearchProcPtr userRoutine);
1763 #if !OPAQUE_UPP_TYPES
1764  enum
1765  {
1766  uppColorSearchProcInfo = 0x000003D0
1767  }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
1768 #ifdef __cplusplus
1769  inline ColorSearchUPP NewColorSearchUPP(ColorSearchProcPtr userRoutine)
1770  {
1771  return (ColorSearchUPP)NewRoutineDescriptor(
1772  (ProcPtr)(userRoutine), uppColorSearchProcInfo, GetCurrentArchitecture());
1773  }
1774 #else
1775 #define NewColorSearchUPP(userRoutine) \
1776  (ColorSearchUPP) \
1777  NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorSearchProcInfo, \
1778  GetCurrentArchitecture())
1779 #endif
1780 #endif
1781 
1790  ColorComplementUPP
1791  NewColorComplementUPP(ColorComplementProcPtr userRoutine);
1792 #if !OPAQUE_UPP_TYPES
1793  enum
1794  {
1795  uppColorComplementProcInfo = 0x000000D0
1796  }; /* pascal 1_byte Func(4_bytes) */
1797 #ifdef __cplusplus
1798  inline ColorComplementUPP
1799  NewColorComplementUPP(ColorComplementProcPtr userRoutine)
1800  {
1801  return (ColorComplementUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
1802  uppColorComplementProcInfo,
1803  GetCurrentArchitecture());
1804  }
1805 #else
1806 #define NewColorComplementUPP(userRoutine) \
1807  (ColorComplementUPP) \
1808  NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorComplementProcInfo, \
1809  GetCurrentArchitecture())
1810 #endif
1811 #endif
1812 
1821  void
1822  DisposeDragGrayRgnUPP(DragGrayRgnUPP userUPP);
1823 #if !OPAQUE_UPP_TYPES
1824 #ifdef __cplusplus
1825  inline void DisposeDragGrayRgnUPP(DragGrayRgnUPP userUPP)
1826  {
1827  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1828  }
1829 #else
1830 #define DisposeDragGrayRgnUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1831 #endif
1832 #endif
1833 
1842  void
1843  DisposeColorSearchUPP(ColorSearchUPP userUPP);
1844 #if !OPAQUE_UPP_TYPES
1845 #ifdef __cplusplus
1846  inline void DisposeColorSearchUPP(ColorSearchUPP userUPP)
1847  {
1848  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1849  }
1850 #else
1851 #define DisposeColorSearchUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1852 #endif
1853 #endif
1854 
1863  void
1864  DisposeColorComplementUPP(ColorComplementUPP userUPP);
1865 #if !OPAQUE_UPP_TYPES
1866 #ifdef __cplusplus
1867  inline void DisposeColorComplementUPP(ColorComplementUPP userUPP)
1868  {
1869  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1870  }
1871 #else
1872 #define DisposeColorComplementUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1873 #endif
1874 #endif
1875 
1884  void
1885  InvokeDragGrayRgnUPP(DragGrayRgnUPP userUPP);
1886 #if !OPAQUE_UPP_TYPES
1887 #ifdef __cplusplus
1888  inline void InvokeDragGrayRgnUPP(DragGrayRgnUPP userUPP)
1889  {
1890  CALL_ZERO_PARAMETER_UPP(userUPP, uppDragGrayRgnProcInfo);
1891  }
1892 #else
1893 #define InvokeDragGrayRgnUPP(userUPP) \
1894  CALL_ZERO_PARAMETER_UPP((userUPP), uppDragGrayRgnProcInfo)
1895 #endif
1896 #endif
1897 
1906  Boolean
1907  InvokeColorSearchUPP(RGBColor *rgb, long *position, ColorSearchUPP userUPP);
1908 #if !OPAQUE_UPP_TYPES
1909 #ifdef __cplusplus
1910  inline Boolean InvokeColorSearchUPP(RGBColor *rgb, long *position,
1911  ColorSearchUPP userUPP)
1912  {
1913  return (Boolean)CALL_TWO_PARAMETER_UPP(userUPP, uppColorSearchProcInfo, rgb,
1914  position);
1915  }
1916 #else
1917 #define InvokeColorSearchUPP(rgb, position, userUPP) \
1918  (Boolean) CALL_TWO_PARAMETER_UPP((userUPP), uppColorSearchProcInfo, (rgb), \
1919  (position))
1920 #endif
1921 #endif
1922 
1931  Boolean
1932  InvokeColorComplementUPP(RGBColor *rgb, ColorComplementUPP userUPP);
1933 #if !OPAQUE_UPP_TYPES
1934 #ifdef __cplusplus
1936  ColorComplementUPP userUPP)
1937  {
1938  return (Boolean)CALL_ONE_PARAMETER_UPP(userUPP, uppColorComplementProcInfo,
1939  rgb);
1940  }
1941 #else
1942 #define InvokeColorComplementUPP(rgb, userUPP) \
1943  (Boolean) CALL_ONE_PARAMETER_UPP((userUPP), uppColorComplementProcInfo, (rgb))
1944 #endif
1945 #endif
1946 
1947 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
1948 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
1949 #define NewDragGrayRgnProc(userRoutine) NewDragGrayRgnUPP(userRoutine)
1950 #define NewColorSearchProc(userRoutine) NewColorSearchUPP(userRoutine)
1951 #define NewColorComplementProc(userRoutine) NewColorComplementUPP(userRoutine)
1952 #define CallDragGrayRgnProc(userRoutine) InvokeDragGrayRgnUPP(userRoutine)
1953 #define CallColorSearchProc(userRoutine, rgb, position) \
1954  InvokeColorSearchUPP(rgb, position, userRoutine)
1955 #define CallColorComplementProc(userRoutine, rgb) \
1956  InvokeColorComplementUPP(rgb, userRoutine)
1957 #endif /* CALL_NOT_IN_CARBON */
1958 
1959  struct ColorSpec
1960  {
1961  short value; /*index or other value*/
1962  RGBColor rgb; /*true color*/
1963  };
1964  typedef struct ColorSpec ColorSpec;
1965  typedef ColorSpec *ColorSpecPtr;
1966  typedef ColorSpec CSpecArray[1];
1967  struct ColorTable
1968  {
1969  long ctSeed; /*unique identifier for table*/
1970  short ctFlags; /*high bit: 0 = PixMap; 1 = device*/
1971  short ctSize; /*number of entries in CTTable*/
1972  CSpecArray ctTable; /*array [0..0] of ColorSpec*/
1973  };
1974  typedef struct ColorTable ColorTable;
1975  typedef ColorTable *CTabPtr;
1976  typedef CTabPtr *CTabHandle;
1977  struct xColorSpec
1978  {
1979  short value; /*index or other value*/
1980  RGBColor rgb; /*true color*/
1981  short xalpha;
1982  };
1983  typedef struct xColorSpec xColorSpec;
1984  typedef xColorSpec *xColorSpecPtr;
1985  typedef xColorSpec xCSpecArray[1];
1986  struct MatchRec
1987  {
1988  unsigned short red;
1989  unsigned short green;
1990  unsigned short blue;
1991  long matchData;
1992  };
1993  typedef struct MatchRec MatchRec;
2002 #ifndef OLDPIXMAPSTRUCT
2003 #if TARGET_OS_MAC && TARGET_API_MAC_OS8
2004 #define OLDPIXMAPSTRUCT 1
2005 #else
2006 #define OLDPIXMAPSTRUCT 0
2007 #endif /* TARGET_OS_MAC && TARGET_API_MAC_OS8 */
2008 
2009 #endif /* !defined(OLDPIXMAPSTRUCT) */
2010 
2011 #if OLDPIXMAPSTRUCT
2012 #define GETPIXMAPPIXELFORMAT(pm) ((pm)->pixelSize)
2013 #else
2014 #define GETPIXMAPPIXELFORMAT(pm) \
2015  (((pm)->pixelFormat != 0) ? (pm)->pixelFormat : (pm)->pixelSize)
2016 #endif
2017 
2018 #if TARGET_OS_MAC && TARGET_API_MAC_OS8
2019 #define NON_MAC_PIXEL_FORMATS 0
2020 #else
2021 #define NON_MAC_PIXEL_FORMATS 1
2022 #endif
2023 
2024  /* pixel formats*/
2025  enum
2026  {
2027  k1MonochromePixelFormat = 0x00000001, /* 1 bit indexed*/
2028  k2IndexedPixelFormat = 0x00000002, /* 2 bit indexed*/
2029  k4IndexedPixelFormat = 0x00000004, /* 4 bit indexed*/
2030  k8IndexedPixelFormat = 0x00000008, /* 8 bit indexed*/
2031  k16BE555PixelFormat = 0x00000010, /* 16 bit BE rgb 555 (Mac)*/
2032  k24RGBPixelFormat = 0x00000018, /* 24 bit rgb */
2033  k32ARGBPixelFormat = 0x00000020, /* 32 bit argb (Mac)*/
2034  k1IndexedGrayPixelFormat = 0x00000021, /* 1 bit indexed gray*/
2035  k2IndexedGrayPixelFormat = 0x00000022, /* 2 bit indexed gray*/
2036  k4IndexedGrayPixelFormat = 0x00000024, /* 4 bit indexed gray*/
2037  k8IndexedGrayPixelFormat = 0x00000028 /* 8 bit indexed gray*/
2038  };
2039 
2040  /* values for PixMap.pixelFormat*/
2041  enum
2042  {
2043  k16LE555PixelFormat = FOUR_CHAR_CODE('L555'), /* 16 bit LE rgb 555 (PC)*/
2044  k16LE5551PixelFormat = FOUR_CHAR_CODE('5551'), /* 16 bit LE rgb 5551*/
2045  k16BE565PixelFormat = FOUR_CHAR_CODE('B565'), /* 16 bit BE rgb 565*/
2046  k16LE565PixelFormat = FOUR_CHAR_CODE('L565'), /* 16 bit LE rgb 565*/
2047  k24BGRPixelFormat = FOUR_CHAR_CODE('24BG'), /* 24 bit bgr */
2048  k32BGRAPixelFormat = FOUR_CHAR_CODE('BGRA'), /* 32 bit bgra (Matrox)*/
2049  k32ABGRPixelFormat = FOUR_CHAR_CODE('ABGR'), /* 32 bit abgr */
2050  k32RGBAPixelFormat = FOUR_CHAR_CODE('RGBA'), /* 32 bit rgba */
2051  kYUVSPixelFormat =
2052  FOUR_CHAR_CODE('yuvs'), /* YUV 4:2:2 byte ordering 16-unsigned = 'YUY2'*/
2053  kYUVUPixelFormat =
2054  FOUR_CHAR_CODE('yuvu'), /* YUV 4:2:2 byte ordering 16-signed*/
2055  kYVU9PixelFormat = FOUR_CHAR_CODE('YVU9'), /* YVU9 Planar 9*/
2056  kYUV411PixelFormat = FOUR_CHAR_CODE('Y411'), /* YUV 4:1:1 Interleaved 16*/
2057  kYVYU422PixelFormat = FOUR_CHAR_CODE('YVYU'), /* YVYU 4:2:2 byte ordering 16*/
2058  kUYVY422PixelFormat = FOUR_CHAR_CODE('UYVY'), /* UYVY 4:2:2 byte ordering 16*/
2059  kYUV211PixelFormat = FOUR_CHAR_CODE('Y211'), /* YUV 2:1:1 Packed 8*/
2060  k2vuyPixelFormat = FOUR_CHAR_CODE('2vuy') /* UYVY 4:2:2 byte ordering 16*/
2061  };
2062 
2063  struct PixMap
2064  {
2065  Ptr baseAddr; /*pointer to pixels*/
2066  short rowBytes; /*offset to next line*/
2067  Rect bounds; /*encloses bitmap*/
2068  short pmVersion; /*pixMap version number*/
2069  short packType; /*defines packing format*/
2070  long packSize; /*length of pixel data*/
2071  Fixed hRes; /*horiz. resolution (ppi)*/
2072  Fixed vRes; /*vert. resolution (ppi)*/
2073  short pixelType; /*defines pixel type*/
2074  short pixelSize; /*# bits in pixel*/
2075  short cmpCount; /*# components in pixel*/
2076  short cmpSize; /*# bits per component*/
2077 #if OLDPIXMAPSTRUCT
2078  long planeBytes; /*offset to next plane*/
2079  CTabHandle pmTable; /*color map for this pixMap*/
2080  long pmReserved;
2081 #else
2082  OSType pixelFormat; /*fourCharCode representation*/
2083  CTabHandle pmTable; /*color map for this pixMap*/
2084  void *pmExt; /*Handle to pixMap extension*/
2085 #endif
2086  };
2087  typedef struct PixMap PixMap;
2088  typedef PixMap *PixMapPtr;
2089  typedef PixMapPtr *PixMapHandle;
2090  struct PixPat
2091  {
2092  short patType; /*type of pattern*/
2093  PixMapHandle patMap; /*the pattern's pixMap*/
2094  Handle patData; /*pixmap's data*/
2095  Handle patXData; /*expanded Pattern data*/
2096  short patXValid; /*flags whether expanded Pattern valid*/
2097  Handle patXMap; /*Handle to expanded Pattern data*/
2098  Pattern pat1Data; /*old-Style pattern/RGB color*/
2099  };
2100  typedef struct PixPat PixPat;
2101  typedef PixPat *PixPatPtr;
2102  typedef PixPatPtr *PixPatHandle;
2103  struct CCrsr
2104  {
2105  short crsrType; /*type of cursor*/
2106  PixMapHandle crsrMap; /*the cursor's pixmap*/
2107  Handle crsrData; /*cursor's data*/
2108  Handle crsrXData; /*expanded cursor data*/
2109  short crsrXValid; /*depth of expanded data (0 if none)*/
2110  Handle crsrXHandle; /*future use*/
2111  Bits16 crsr1Data; /*one-bit cursor*/
2112  Bits16 crsrMask; /*cursor's mask*/
2113  Point crsrHotSpot; /*cursor's hotspot*/
2114  long crsrXTable; /*private*/
2115  long crsrID; /*private*/
2116  };
2117  typedef struct CCrsr CCrsr;
2118  typedef CCrsr *CCrsrPtr;
2119  typedef CCrsrPtr *CCrsrHandle;
2120  struct GammaTbl
2121  {
2122  short gVersion; /*gamma version number*/
2123  short gType; /*gamma data type*/
2124  short gFormulaSize; /*Formula data size*/
2125  short gChanCnt; /*number of channels of data*/
2126  short gDataCnt; /*number of values/channel*/
2127  short gDataWidth; /*bits/corrected value (data packed to next larger byte
2128  size)*/
2129  short gFormulaData[1]; /*data for formulas followed by gamma values*/
2130  };
2131  typedef struct GammaTbl GammaTbl;
2132  typedef GammaTbl *GammaTblPtr;
2133  typedef GammaTblPtr *GammaTblHandle;
2134  struct ITab
2135  {
2136  long iTabSeed; /*copy of CTSeed from source CTable*/
2137  short iTabRes; /*bits/channel resolution of iTable*/
2138  Byte iTTable[1]; /*byte colortable index values*/
2139  };
2140  typedef struct ITab ITab;
2141  typedef ITab *ITabPtr;
2142  typedef ITabPtr *ITabHandle;
2143  struct SProcRec
2144  {
2145  Handle nxtSrch; /*SProcHndl Handle to next SProcRec*/
2146  ColorSearchUPP srchProc; /*search procedure proc ptr*/
2147  };
2148  typedef struct SProcRec SProcRec;
2149  typedef SProcRec *SProcPtr;
2150  typedef SProcPtr *SProcHndl;
2151  struct CProcRec
2152  {
2153  Handle nxtComp; /*CProcHndl Handle to next CProcRec*/
2154  ColorComplementUPP compProc; /*complement procedure proc ptr*/
2155  };
2156  typedef struct CProcRec CProcRec;
2157  typedef CProcRec *CProcPtr;
2158  typedef CProcPtr *CProcHndl;
2165 #ifndef OLDGDEVICESTRUCT
2166 #if TARGET_OS_MAC && TARGET_API_MAC_OS8
2167 #define OLDGDEVICESTRUCT 1
2168 #else
2169 #define OLDGDEVICESTRUCT 0
2170 #endif /* TARGET_OS_MAC && TARGET_API_MAC_OS8 */
2171 
2172 #endif /* !defined(OLDGDEVICESTRUCT) */
2173 
2174  typedef struct GDevice GDevice;
2175  typedef GDevice *GDPtr;
2176  typedef GDPtr *GDHandle;
2177  struct GDevice
2178  {
2179  short gdRefNum; /*driver's unit number*/
2180  short gdID; /*client ID for search procs*/
2181  short gdType; /*fixed/CLUT/direct*/
2182  ITabHandle gdITable; /*Handle to inverse lookup table*/
2183  short gdResPref; /*preferred resolution of GDITable*/
2184  SProcHndl gdSearchProc; /*search proc list head*/
2185  CProcHndl gdCompProc; /*complement proc list*/
2186  short gdFlags; /*grafDevice flags word*/
2187  PixMapHandle gdPMap; /*describing pixMap*/
2188  long gdRefCon; /*reference value*/
2189  GDHandle gdNextGD; /*GDHandle Handle of next gDevice*/
2190  Rect gdRect; /* device's bounds in global coordinates*/
2191  long gdMode; /*device's current mode*/
2192  short gdCCBytes; /*depth of expanded cursor data*/
2193  short gdCCDepth; /*depth of expanded cursor data*/
2194  Handle gdCCXData; /*Handle to cursor's expanded data*/
2195  Handle gdCCXMask; /*Handle to cursor's expanded mask*/
2196 #if OLDGDEVICESTRUCT
2197  long gdReserved; /*future use. MUST BE 0*/
2198 #else
2199  Handle gdExt; /*QuickTime 3.0 private info*/
2200 #endif
2201  };
2202 
2203  struct GrafVars
2204  {
2205  RGBColor rgbOpColor; /*color for addPin subPin and average*/
2206  RGBColor rgbHiliteColor; /*color for hiliting*/
2207  Handle pmFgColor; /*palette Handle for foreground color*/
2208  short pmFgIndex; /*index value for foreground*/
2209  Handle pmBkColor; /*palette Handle for background color*/
2210  short pmBkIndex; /*index value for background*/
2211  short pmFlags; /*flags for Palette Manager*/
2212  };
2213  typedef struct GrafVars GrafVars;
2214  typedef GrafVars *GVarPtr;
2215  typedef GVarPtr *GVarHandle;
2216 
2217 #if !OPAQUE_TOOLBOX_STRUCTS
2218  typedef struct CGrafPort CGrafPort;
2219  typedef CGrafPort *CGrafPtr;
2220 #else
2221 typedef GrafPtr CGrafPtr;
2222 #endif /* !OPAQUE_TOOLBOX_STRUCTS */
2223 
2224  typedef CALLBACK_API_C(OSStatus,
2225  QDPrinterStatusProcPtr)(PrinterStatusOpcode opcode,
2227  void *printerStatus);
2228  typedef STACK_UPP_TYPE(QDPrinterStatusProcPtr) QDPrinterStatusUPP;
2229 
2230  struct CQDProcs
2231  {
2232  QDTextUPP textProc;
2233  QDLineUPP lineProc;
2234  QDRectUPP rectProc;
2235  QDRRectUPP rRectProc;
2236  QDOvalUPP ovalProc;
2237  QDArcUPP arcProc;
2238  QDPolyUPP polyProc;
2239  QDRgnUPP rgnProc;
2240  QDBitsUPP bitsProc;
2241  QDCommentUPP commentProc;
2242  QDTxMeasUPP txMeasProc;
2243  QDGetPicUPP getPicProc;
2244  QDPutPicUPP putPicProc;
2245  QDOpcodeUPP opcodeProc;
2246  UniversalProcPtr
2247  newProc1; /* this is the StdPix bottleneck -- see ImageCompression.h */
2248  QDStdGlyphsUPP
2249  glyphsProc; /* was newProc2; now used in Unicode text drawing */
2250  QDPrinterStatusUPP
2251  printerStatusProc; /* was newProc3; now used to communicate status
2252  between Printing code and System imaging code */
2253  UniversalProcPtr newProc4;
2254  UniversalProcPtr newProc5;
2255  UniversalProcPtr newProc6;
2256  };
2257  typedef struct CQDProcs CQDProcs;
2258  typedef CQDProcs *CQDProcsPtr;
2259 #if !OPAQUE_TOOLBOX_STRUCTS
2260  struct CGrafPort
2261  {
2262  short device; /* not available in Carbon*/
2263  PixMapHandle portPixMap; /* in Carbon use GetPortPixMap*/
2264  short portVersion; /* in Carbon use IsPortColor*/
2265  Handle grafVars; /* not available in Carbon*/
2266  short chExtra; /* in Carbon use GetPortChExtra*/
2267  short pnLocHFrac; /* in Carbon use Get/SetPortFracHPenLocation*/
2268  Rect portRect; /* in Carbon use Get/SetPortBounds*/
2269  RgnHandle visRgn; /* in Carbon use Get/SetPortVisibleRegion*/
2270  RgnHandle clipRgn; /* in Carbon use Get/SetPortClipRegion*/
2271  PixPatHandle bkPixPat; /* in Carbon use GetPortBackPixPat or BackPixPat*/
2272  RGBColor rgbFgColor; /* in Carbon use GetPortForeColor or RGBForeColor*/
2273  RGBColor rgbBkColor; /* in Carbon use GetPortBackColor or RGBBackColor*/
2274  Point pnLoc; /* in Carbon use GetPortPenLocation or MoveTo*/
2275  Point pnSize; /* in Carbon use Get/SetPortPenSize*/
2276  short pnMode; /* in Carbon use Get/SetPortPenMode*/
2277  PixPatHandle pnPixPat; /* in Carbon use Get/SetPortPenPixPat*/
2278  PixPatHandle fillPixPat; /* in Carbon use GetPortFillPixPat*/
2279  short pnVis; /* in Carbon use GetPortPenVisibility or Show/HidePen*/
2280  short txFont; /* in Carbon use GetPortTextFont or TextFont*/
2281  StyleField txFace; /* in Carbon use GetPortTextFace or TextFace*/
2282  /*StyleField occupies 16-bits, but only first 8-bits are used*/
2283  short txMode; /* in Carbon use GetPortTextMode or TextMode*/
2284  short txSize; /* in Carbon use GetPortTextSize or TextSize*/
2285  Fixed spExtra; /* in Carbon use GetPortSpExtra or SpaceExtra*/
2286  long fgColor; /* not available in Carbon*/
2287  long bkColor; /* not available in Carbon*/
2288  short colrBit; /* not available in Carbon*/
2289  short patStretch; /* not available in Carbon*/
2290  Handle picSave; /* in Carbon use IsPortPictureBeingDefined*/
2291  Handle rgnSave; /* in Carbon use IsPortRegionBeingDefined*/
2292  Handle polySave; /* in Carbon use IsPortPolyBeingDefined*/
2293  CQDProcsPtr grafProcs; /* in Carbon use Get/SetPortGrafProcs*/
2294  };
2295 
2296 #endif /* !OPAQUE_TOOLBOX_STRUCTS */
2297 
2298 #if OPAQUE_TOOLBOX_STRUCTS
2299  typedef WindowPtr CWindowPtr;
2300 #else
2301 typedef CGrafPtr CWindowPtr;
2302 #endif /* OPAQUE_TOOLBOX_STRUCTS */
2303 
2304  struct ReqListRec
2305  {
2306  short reqLSize; /*request list size*/
2307  short reqLData[1]; /*request list data*/
2308  };
2309  typedef struct ReqListRec ReqListRec;
2311  {
2312  Rect srcRect;
2313  Fixed hRes;
2314  Fixed vRes;
2315  short version;
2316  short reserved1;
2317  long reserved2;
2318  };
2319  typedef struct OpenCPicParams OpenCPicParams;
2320  enum
2321  {
2322  kCursorImageMajorVersion = 0x0001,
2323  kCursorImageMinorVersion = 0x0000
2324  };
2325 
2327  {
2328  UInt16 majorVersion;
2329  UInt16 minorVersion;
2330  PixMapHandle cursorPixMap;
2331  BitMapHandle cursorBitMask;
2332  };
2333  typedef struct CursorImageRec CursorImageRec;
2334  typedef CursorImageRec *CursorImagePtr;
2335  typedef CALLBACK_API(void, DeviceLoopDrawingProcPtr)(short depth,
2336  short deviceFlags,
2337  GDHandle targetDevice,
2338  long userData);
2339  typedef STACK_UPP_TYPE(DeviceLoopDrawingProcPtr) DeviceLoopDrawingUPP;
2340 #if CALL_NOT_IN_CARBON
2349  QDPrinterStatusUPP
2350  NewQDPrinterStatusUPP(QDPrinterStatusProcPtr userRoutine);
2351 #if !OPAQUE_UPP_TYPES
2352  enum
2353  {
2354  uppQDPrinterStatusProcInfo = 0x00000FF1
2355  }; /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
2356 #ifdef __cplusplus
2357  inline QDPrinterStatusUPP
2358  NewQDPrinterStatusUPP(QDPrinterStatusProcPtr userRoutine)
2359  {
2360  return (QDPrinterStatusUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
2361  uppQDPrinterStatusProcInfo,
2362  GetCurrentArchitecture());
2363  }
2364 #else
2365 #define NewQDPrinterStatusUPP(userRoutine) \
2366  (QDPrinterStatusUPP) \
2367  NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPrinterStatusProcInfo, \
2368  GetCurrentArchitecture())
2369 #endif
2370 #endif
2371 
2372 #endif /* CALL_NOT_IN_CARBON */
2373 
2382  DeviceLoopDrawingUPP
2383  NewDeviceLoopDrawingUPP(DeviceLoopDrawingProcPtr userRoutine);
2384 #if !OPAQUE_UPP_TYPES
2385  enum
2386  {
2387  uppDeviceLoopDrawingProcInfo = 0x00003E80
2388  }; /* pascal no_return_value Func(2_bytes, 2_bytes, 4_bytes, 4_bytes) */
2389 #ifdef __cplusplus
2390  inline DeviceLoopDrawingUPP
2391  NewDeviceLoopDrawingUPP(DeviceLoopDrawingProcPtr userRoutine)
2392  {
2393  return (DeviceLoopDrawingUPP)NewRoutineDescriptor(
2394  (ProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo,
2395  GetCurrentArchitecture());
2396  }
2397 #else
2398 #define NewDeviceLoopDrawingUPP(userRoutine) \
2399  (DeviceLoopDrawingUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), \
2400  uppDeviceLoopDrawingProcInfo, \
2401  GetCurrentArchitecture())
2402 #endif
2403 #endif
2404 
2405 #if CALL_NOT_IN_CARBON
2414  void
2415  DisposeQDPrinterStatusUPP(QDPrinterStatusUPP userUPP);
2416 #if !OPAQUE_UPP_TYPES
2417 #ifdef __cplusplus
2418  inline void DisposeQDPrinterStatusUPP(QDPrinterStatusUPP userUPP)
2419  {
2420  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
2421  }
2422 #else
2423 #define DisposeQDPrinterStatusUPP(userUPP) DisposeRoutineDescriptor(userUPP)
2424 #endif
2425 #endif
2426 
2427 #endif /* CALL_NOT_IN_CARBON */
2428 
2437  void
2438  DisposeDeviceLoopDrawingUPP(DeviceLoopDrawingUPP userUPP);
2439 #if !OPAQUE_UPP_TYPES
2440 #ifdef __cplusplus
2441  inline void DisposeDeviceLoopDrawingUPP(DeviceLoopDrawingUPP userUPP)
2442  {
2443  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
2444  }
2445 #else
2446 #define DisposeDeviceLoopDrawingUPP(userUPP) DisposeRoutineDescriptor(userUPP)
2447 #endif
2448 #endif
2449 
2450 #if CALL_NOT_IN_CARBON
2459  OSStatus
2461  void *printerStatus, QDPrinterStatusUPP userUPP);
2462 #if !OPAQUE_UPP_TYPES
2463 #ifdef __cplusplus
2464  inline OSStatus InvokeQDPrinterStatusUPP(PrinterStatusOpcode opcode,
2466  void *printerStatus,
2467  QDPrinterStatusUPP userUPP)
2468  {
2469  return (OSStatus)CALL_THREE_PARAMETER_UPP(userUPP, uppQDPrinterStatusProcInfo,
2470  opcode, currentPort, printerStatus);
2471  }
2472 #else
2473 #define InvokeQDPrinterStatusUPP(opcode, currentPort, printerStatus, userUPP) \
2474  (OSStatus) \
2475  CALL_THREE_PARAMETER_UPP((userUPP), uppQDPrinterStatusProcInfo, \
2476  (opcode), (currentPort), (printerStatus))
2477 #endif
2478 #endif
2479 
2480 #endif /* CALL_NOT_IN_CARBON */
2481 
2490  void
2491  InvokeDeviceLoopDrawingUPP(short depth, short deviceFlags,
2492  GDHandle targetDevice, long userData,
2493  DeviceLoopDrawingUPP userUPP);
2494 #if !OPAQUE_UPP_TYPES
2495 #ifdef __cplusplus
2496  inline void InvokeDeviceLoopDrawingUPP(short depth, short deviceFlags,
2497  GDHandle targetDevice, long userData,
2498  DeviceLoopDrawingUPP userUPP)
2499  {
2500  CALL_FOUR_PARAMETER_UPP(userUPP, uppDeviceLoopDrawingProcInfo, depth,
2501  deviceFlags, targetDevice, userData);
2502  }
2503 #else
2504 #define InvokeDeviceLoopDrawingUPP(depth, deviceFlags, targetDevice, userData, \
2505  userUPP) \
2506  CALL_FOUR_PARAMETER_UPP((userUPP), uppDeviceLoopDrawingProcInfo, (depth), \
2507  (deviceFlags), (targetDevice), (userData))
2508 #endif
2509 #endif
2510 
2511 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
2512 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
2513 #define NewQDPrinterStatusProc(userRoutine) NewQDPrinterStatusUPP(userRoutine)
2514 #define NewDeviceLoopDrawingProc(userRoutine) \
2515  NewDeviceLoopDrawingUPP(userRoutine)
2516 #define CallQDPrinterStatusProc(userRoutine, opcode, currentPort, \
2517  printerStatus) \
2518  InvokeQDPrinterStatusUPP(opcode, currentPort, printerStatus, userRoutine)
2519 #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, \
2520  targetDevice, userData) \
2521  InvokeDeviceLoopDrawingUPP(depth, deviceFlags, targetDevice, userData, \
2522  userRoutine)
2523 #endif /* CALL_NOT_IN_CARBON */
2524 
2525 #if !OPAQUE_TOOLBOX_STRUCTS || !TARGET_API_MAC_CARBON
2526  struct QDGlobals
2527  {
2528  char privates[76];
2529  long randSeed; /* in Carbon use GetQDGlobalsRandomSeed*/
2530  BitMap screenBits; /* in Carbon use GetQDGlobalsScreenBits*/
2531  Cursor arrow; /* in Carbon use GetQDGlobalsArrow*/
2532  Pattern dkGray; /* in Carbon use GetQDGlobalsDarkGray*/
2533  Pattern ltGray; /* in Carbon use GetQDGlobalsLightGray*/
2534  Pattern gray; /* in Carbon use GetQDGlobalsGray*/
2535  Pattern black; /* in Carbon use GetQDGlobalsBlack*/
2536  Pattern white; /* in Carbon use GetQDGlobalsWhite*/
2537  GrafPtr thePort; /* in Carbon use GetQDGlobalsThePort*/
2538  };
2539  typedef struct QDGlobals QDGlobals;
2540  typedef QDGlobals *QDGlobalsPtr;
2541  typedef QDGlobalsPtr *QDGlobalsHdl;
2542  extern QDGlobals qd;
2543 
2544 #endif /* !OPAQUE_TOOLBOX_STRUCTS || !TARGET_API_MAC_CARBON */
2545 
2546 #if CALL_NOT_IN_CARBON
2555  void
2556  InitGraf(void *globalPtr);
2557 
2566  void
2568 
2577  void
2579 
2588  void
2590 
2595 #endif /* CALL_NOT_IN_CARBON */
2596 
2605  OSErr
2607 
2616  OSErr
2618 
2619  /* Break a region up into rectangles.*/
2620 
2621  enum
2622  {
2623  kQDParseRegionFromTop = (1 << 0),
2624  kQDParseRegionFromBottom = (1 << 1),
2625  kQDParseRegionFromLeft = (1 << 2),
2626  kQDParseRegionFromRight = (1 << 3),
2627  kQDParseRegionFromTopLeft = kQDParseRegionFromTop | kQDParseRegionFromLeft,
2628  kQDParseRegionFromBottomRight =
2629  kQDParseRegionFromBottom | kQDParseRegionFromRight
2630  };
2631 
2632  typedef SInt32 QDRegionParseDirection;
2633  enum
2634  {
2635  kQDRegionToRectsMsgInit = 1,
2636  kQDRegionToRectsMsgParse = 2,
2637  kQDRegionToRectsMsgTerminate = 3
2638  };
2639 
2640  typedef CALLBACK_API_C(OSStatus,
2641  RegionToRectsProcPtr)(UInt16 message, RgnHandle rgn,
2642  const Rect *rect, void *refCon);
2643  typedef STACK_UPP_TYPE(RegionToRectsProcPtr) RegionToRectsUPP;
2652  RegionToRectsUPP
2653  NewRegionToRectsUPP(RegionToRectsProcPtr userRoutine);
2654 #if !OPAQUE_UPP_TYPES
2655  enum
2656  {
2657  uppRegionToRectsProcInfo = 0x00003FB1
2658  }; /* 4_bytes Func(2_bytes, 4_bytes, 4_bytes, 4_bytes) */
2659 #ifdef __cplusplus
2660  inline RegionToRectsUPP NewRegionToRectsUPP(RegionToRectsProcPtr userRoutine)
2661  {
2662  return (RegionToRectsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
2663  uppRegionToRectsProcInfo,
2664  GetCurrentArchitecture());
2665  }
2666 #else
2667 #define NewRegionToRectsUPP(userRoutine) \
2668  (RegionToRectsUPP) \
2669  NewRoutineDescriptor((ProcPtr)(userRoutine), uppRegionToRectsProcInfo, \
2670  GetCurrentArchitecture())
2671 #endif
2672 #endif
2673 
2682  void
2683  DisposeRegionToRectsUPP(RegionToRectsUPP userUPP);
2684 #if !OPAQUE_UPP_TYPES
2685 #ifdef __cplusplus
2686  inline void DisposeRegionToRectsUPP(RegionToRectsUPP userUPP)
2687  {
2688  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
2689  }
2690 #else
2691 #define DisposeRegionToRectsUPP(userUPP) DisposeRoutineDescriptor(userUPP)
2692 #endif
2693 #endif
2694 
2703  OSStatus
2704  InvokeRegionToRectsUPP(UInt16 message, RgnHandle rgn, const Rect *rect,
2705  void *refCon, RegionToRectsUPP userUPP);
2706 #if !OPAQUE_UPP_TYPES
2707 #ifdef __cplusplus
2708  inline OSStatus InvokeRegionToRectsUPP(UInt16 message, RgnHandle rgn,
2709  const Rect *rect, void *refCon,
2710  RegionToRectsUPP userUPP)
2711  {
2712  return (OSStatus)CALL_FOUR_PARAMETER_UPP(userUPP, uppRegionToRectsProcInfo,
2713  message, rgn, rect, refCon);
2714  }
2715 #else
2716 #define InvokeRegionToRectsUPP(message, rgn, rect, refCon, userUPP) \
2717  (OSStatus) CALL_FOUR_PARAMETER_UPP((userUPP), uppRegionToRectsProcInfo, \
2718  (message), (rgn), (rect), (refCon))
2719 #endif
2720 #endif
2721 
2722 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
2723 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
2724 #define NewRegionToRectsProc(userRoutine) NewRegionToRectsUPP(userRoutine)
2725 #define CallRegionToRectsProc(userRoutine, message, rgn, rect, refCon) \
2726  InvokeRegionToRectsUPP(message, rgn, rect, refCon, userRoutine)
2727 #endif /* CALL_NOT_IN_CARBON */
2728 
2737  OSStatus
2738  QDRegionToRects(RgnHandle rgn, QDRegionParseDirection dir,
2739  RegionToRectsUPP proc, void *userData);
2740 
2741 #if !TARGET_OS_MAC
2742 #if CALL_NOT_IN_CARBON
2751  OSErr
2753 
2777  void *
2779 
2788  GrafPtr
2789  GetNativeWindowPort(void *nativeWindow);
2790 
2799  void *
2801 
2810  RgnHandle
2811  NativeRegionToMacRegion(void *nativeRegion);
2812 
2813 #endif /* CALL_NOT_IN_CARBON */
2814 
2815 #endif /* !TARGET_OS_MAC */
2816 
2817 #if TARGET_OS_WIN32
2818 #if CALL_NOT_IN_CARBON
2827  void *
2828  GetPortHWND(GrafPtr port);
2829 
2838  GrafPtr
2839  GetHWNDPort(void *theHWND);
2840 
2841 #define GetPortHWND(port) (HWND) GetPortNativeWindow(port)
2842 #define GetHWNDPort(theHWND) GetNativeWindowPort(theHWND)
2851  void *
2852  GetPortHDC(GrafPtr port);
2853 
2862  void *
2863  GetPortHBITMAP(GrafPtr port);
2864 
2873  void *
2874  GetPortHPALETTE(GrafPtr port);
2875 
2884  void *
2885  GetPortHFONT(GrafPtr port);
2886 
2895  void *
2896  GetDIBFromPICT(PicHandle hPict);
2897 
2906  PicHandle
2907  GetPICTFromDIB(void *h);
2908 
2909 #endif /* CALL_NOT_IN_CARBON */
2910 
2911 #endif /* TARGET_OS_WIN32 */
2912 
2921 #if TARGET_OS_MAC
2922 #define MacSetPort SetPort
2923 #endif
2924  void
2926 
2935  void
2937 
2946  Boolean
2947  QDSwapPort(CGrafPtr inNewPort, CGrafPtr *outOldPort);
2948 
2970  void
2971  GrafDevice(short device);
2972 
2997 The third line above correctly adjusts for the required word alignment.
2998 Example
2999 #include < Quickdraw.h >
3000 #include < Memory.h >
3001 OffScreenDraw( short rWide, short rHigh, Rect rDest )
3002 // rWide, rHigh; size of off-screen rectangle
3003 // rDest; on-screen destination */
3004 {
3005  BitMap saveBits;
3006  BitMap tempBits;
3007  short bytesPerRow;
3008  saveBits = thePort->portBits; /* save current */
3009  /* now create an off-screen "canvas" */
3010  bytesPerRow = (((rWide - 1) / 16) + 1) * 2;
3011  tempBits.baseAddr = (QDPtr)NewPtr(bytesPerRow * rHigh);
3012  tempBits.rowBytes = bytesPerRow;
3013  SetRect(&tempBits.bounds, 0, 0, rWide, rHigh);
3014  </ pre>
3015  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
3016 
3017  * \non_carbon_cfm in InterfaceLib 7.1 and
3018  later
3019  * \carbon_lib in CarbonLib 1.0 and
3020  later
3021  * \mac_os_x in version 10.0 and
3022  later
3023  * /
3024  void
3025  SetPortBits(const BitMap *bm);
3026 
3050  void
3051  PortSize(short width, short height);
3052 
3082  void
3083  MovePortTo(short leftGlobal, short topGlobal);
3084 
3093  void
3094  SetOrigin(short h, short v);
3095 
3104  void
3105  SetClip(RgnHandle rgn);
3106 
3115  void
3116  GetClip(RgnHandle rgn);
3117 
3126  void
3127  ClipRect(const Rect *r);
3128 
3137  void
3138  BackPat(const Pattern *pat);
3139 
3158  void
3159  InitCursor(void);
3160 
3169 #if TARGET_OS_MAC
3170 #define MacSetCursor SetCursor
3171 #endif
3172  void
3173  MacSetCursor(const Cursor *crsr);
3174 
3196  void
3197  HideCursor(void);
3198 
3207 #if TARGET_OS_MAC
3208 #define MacShowCursor ShowCursor
3209 #endif
3210  void
3211  MacShowCursor(void);
3212 
3222  void
3223  ObscureCursor(void);
3224 
3252  void
3253  HidePen(void);
3254 
3276  void
3277  ShowPen(void);
3278 
3300  void
3301  GetPen(Point * pt);
3302 
3326  ShowPen(); /* we want pen to be visible */
3327  /* ...draw some figure here which may change the state... */
3328  SetPenState(&savePenState); /* restore the pen's visible state */
3329  }
3330  </ pre>
3331  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
3332 
3333  * \non_carbon_cfm in InterfaceLib 7.1 and
3334  later
3335  * \carbon_lib in CarbonLib 1.0 and
3336  later
3337  * \mac_os_x in version 10.0 and
3338  later
3339  * /
3340  void
3341  GetPenState(PenState *pnState);
3342 
3361  void
3362  SetPenState(const PenState *pnState);
3363 
3392  void
3393  PenSize(short width, short height);
3394 
3430  void
3431  PenMode(short mode);
3432 
3441  void
3442  PenPat(const Pattern *pat);
3443 
3452  void
3453  PenNormal(void);
3454 
3477  void
3478  MoveTo(short h, short v);
3479 
3503  void
3504  Move(short dh, short dv);
3505 
3514 #if TARGET_OS_MAC
3515 #define MacLineTo LineTo
3516 #endif
3517  void
3518  MacLineTo(short h, short v);
3519 
3528  void
3529  Line(short dh, short dv);
3530 
3539  void
3540  ForeColor(long color);
3541 
3550  void
3551  BackColor(long color);
3552 
3575  void
3576  ColorBit(short whichBit);
3577 
3586 #if TARGET_OS_MAC
3587 #define MacSetRect SetRect
3588 #endif
3589  void
3590  MacSetRect(Rect *r, short left, short top, short right, short bottom);
3591 
3600 #if TARGET_OS_MAC
3601 #define MacOffsetRect OffsetRect
3602 #endif
3603  void
3604  MacOffsetRect(Rect *r, short dh, short dv);
3605 
3614 #if TARGET_OS_MAC
3615 #define MacInsetRect InsetRect
3616 #endif
3617  void
3618  MacInsetRect(Rect *r, short dh, short dv);
3619 
3663  Boolean
3664  SectRect(const Rect *src1, const Rect *src2, Rect *dstRect);
3665 
3674 #if TARGET_OS_MAC
3675 #define MacUnionRect UnionRect
3676 #endif
3677  void
3678  MacUnionRect(const Rect *src1, const Rect *src2, Rect *dstRect);
3679 
3688 #if TARGET_OS_MAC
3689 #define MacEqualRect EqualRect
3690 #endif
3691  Boolean
3692  MacEqualRect(const Rect *rect1, const Rect *rect2);
3693 
3718  Boolean
3719  EmptyRect(const Rect *r);
3720 
3729 #if TARGET_OS_MAC
3730 #define MacFrameRect FrameRect
3731 #endif
3732  void
3733  MacFrameRect(const Rect *r);
3734 
3743  void
3744  PaintRect(const Rect *r);
3745 
3754  void
3755  EraseRect(const Rect *r);
3756 
3765 #if TARGET_OS_MAC
3766 #define MacInvertRect InvertRect
3767 #endif
3768  void
3769  MacInvertRect(const Rect *r);
3770 
3779 #if TARGET_OS_MAC
3780 #define MacFillRect FillRect
3781 #endif
3782  void
3783  MacFillRect(const Rect *r, const Pattern *pat);
3784 
3793  void
3794  FrameOval(const Rect *r);
3795 
3804  void
3805  PaintOval(const Rect *r);
3806 
3815  void
3816  EraseOval(const Rect *r);
3817 
3826  void
3827  InvertOval(const Rect *r);
3828 
3837  void
3838  FillOval(const Rect *r, const Pattern *pat);
3839 
3848  void
3849  FrameRoundRect(const Rect *r, short ovalWidth, short ovalHeight);
3850 
3859  void
3860  PaintRoundRect(const Rect *r, short ovalWidth, short ovalHeight);
3861 
3870  void
3871  EraseRoundRect(const Rect *r, short ovalWidth, short ovalHeight);
3872 
3881  void
3882  InvertRoundRect(const Rect *r, short ovalWidth, short ovalHeight);
3883 
3892  void
3893  FillRoundRect(const Rect *r, short ovalWidth, short ovalHeight,
3894  const Pattern *pat);
3895 
3904  void
3905  FrameArc(const Rect *r, short startAngle, short arcAngle);
3906 
3915  void
3916  PaintArc(const Rect *r, short startAngle, short arcAngle);
3917 
3926  void
3927  EraseArc(const Rect *r, short startAngle, short arcAngle);
3928 
3937  void
3938  InvertArc(const Rect *r, short startAngle, short arcAngle);
3939 
3948  void
3949  FillArc(const Rect *r, short startAngle, short arcAngle, const Pattern *pat);
3950 
3959  RgnHandle
3960  NewRgn(void);
3961 
3970  void
3971  OpenRgn(void);
3972 
3981  void
3983 
3992  OSErr
3993  BitMapToRegion(RgnHandle region, const BitMap *bMap);
3994 
4003  void
4004  HandleToRgn(Handle oldRegion, RgnHandle region);
4005 
4014  void
4015  RgnToHandle(RgnHandle region, Handle flattenedRgnDataHdl);
4016 
4025  void
4027 
4036 #if TARGET_OS_MAC
4037 #define MacCopyRgn CopyRgn
4038 #endif
4039  void
4040  MacCopyRgn(RgnHandle srcRgn, RgnHandle dstRgn);
4041 
4050  void
4052 
4061 #if TARGET_OS_MAC
4062 #define MacSetRectRgn SetRectRgn
4063 #endif
4064  void
4065  MacSetRectRgn(RgnHandle rgn, short left, short top, short right, short bottom);
4066 
4075  void
4077 
4086 #if TARGET_OS_MAC
4087 #define MacOffsetRgn OffsetRgn
4088 #endif
4089  void
4090  MacOffsetRgn(RgnHandle rgn, short dh, short dv);
4091 
4100  void
4101  InsetRgn(RgnHandle rgn, short dh, short dv);
4102 
4111  void
4112  SectRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn);
4113 
4122 #if TARGET_OS_MAC
4123 #define MacUnionRgn UnionRgn
4124 #endif
4125  void
4126  MacUnionRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn);
4127 
4136  void
4137  DiffRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn);
4138 
4147 #if TARGET_OS_MAC
4148 #define MacXorRgn XorRgn
4149 #endif
4150  void
4151  MacXorRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn);
4152 
4184  Boolean
4186 
4195 #if TARGET_OS_MAC
4196 #define MacEqualRgn EqualRgn
4197 #endif
4198  Boolean
4200 
4228  Boolean
4230 
4239 #if TARGET_OS_MAC
4240 #define MacFrameRgn FrameRgn
4241 #endif
4242  void
4244 
4253 #if TARGET_OS_MAC
4254 #define MacPaintRgn PaintRgn
4255 #endif
4256  void
4258 
4267  void
4269 
4278 #if TARGET_OS_MAC
4279 #define MacInvertRgn InvertRgn
4280 #endif
4281  void
4283 
4292 #if TARGET_OS_MAC
4293 #define MacFillRgn FillRgn
4294 #endif
4295  void
4297 
4306  void
4307  ScrollRect(const Rect *r, short dh, short dv, RgnHandle updateRgn);
4308 
4317  void
4318  CopyBits(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect,
4319  const Rect *dstRect, short mode,
4320  RgnHandle maskRgn) /* can be NULL */;
4321 
4365  void
4366  SeedFill(const void *srcPtr, void *dstPtr, short srcRow, short dstRow,
4367  short height, short words, short seedH, short seedV);
4368 
4377  void
4378  CalcMask(const void *srcPtr, void *dstPtr, short srcRow, short dstRow,
4379  short height, short words);
4380 
4389  void
4390  CopyMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits,
4391  const Rect *srcRect, const Rect *maskRect, const Rect *dstRect);
4392 
4401  PicHandle
4402  OpenPicture(const Rect *picFrame);
4403 
4412  void
4413  PicComment(short kind, short dataSize, Handle dataHandle);
4414 
4423  void
4425 
4434  void
4435  DrawPicture(PicHandle myPicture, const Rect *dstRect);
4436 
4445  void
4447 
4456  PolyHandle
4457  OpenPoly(void);
4458 
4467  void
4468  ClosePoly(void);
4469 
4478  void
4480 
4508  void
4509  OffsetPoly(PolyHandle poly, short dh, short dv);
4510 
4519  void
4521 
4530  void
4532 
4541  void
4543 
4552  void
4554 
4563  void
4565 
4589  void
4590  SetPt(Point *pt, short h, short v);
4591 
4624  LocalToGlobal(&tmpPt); /* convert to global */
4625  SubPt(localPt, &tmpPt); /* find difference */
4626  OffsetPoly(thePoly, tmpPt.h, tmpPt.v); /* move the item */
4627  </ pre>
4628  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
4629 
4630  * \non_carbon_cfm in InterfaceLib 7.1 and
4631  later
4632  * \carbon_lib in CarbonLib 1.0 and
4633  later
4634  * \mac_os_x in version 10.0 and
4635  later
4636  * /
4637  void
4638  LocalToGlobal(Point *pt);
4639 
4665  ctlCode = FindControl(myEvent.where, myWindow, &myCtl);
4666  if (ctlCode == inThumb)
4667  /*. . . etc. . . */
4668 }
4669 This function is also used as an intermediate step in converting between
4670  coordinates of two different grafPorts(e.g., windows)
4671  .For instance,
4672  to
4673  convert the position of rectangle theRect from the coordinates of windowA
4674  to the coordinates of windowB : SetPort(windowA);
4675 LocalToGlobal(&topLeft(theRect));
4676 LocalToGlobal(&botRight(theRect));
4677 SetPort(windowB);
4678 GlobalToLocal(&topLeft(theRect));
4679 GlobalToLocal(&botRight(theRect));
4680 To convert between the coordinates of regions and polygons, calculate the</ pre>
4681  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
4682 
4683  * \non_carbon_cfm in InterfaceLib 7.1 and
4684  later
4685  * \carbon_lib in CarbonLib 1.0 and
4686  later
4687  * \mac_os_x in version 10.0 and
4688  later
4689  * /
4690  void
4691  GlobalToLocal(Point *pt);
4692 
4712 theRand = Random(); /* get a random number */
4713 The Quickdraw global variable randSeed can also be used as a seed to start a
4714  pseudo -
4715  random sequence.Example
4716 /* example function returns value between min and max */
4717 #include < Quickdraw.h >
4718  unsigned short
4719  RangedRdm(unsigned short min, unsigned short max)
4720 /* assume that min is less than max */
4721 {
4722  unsigned qdRdm; /* treat return value as 0-65536 */
4723  long range, t;
4724  qdRdm = Random();
4725  range = max - min;
4726  t = (qdRdm * range) / 65536; /* now 0 <= t <= range */
4727  return (t + min);
4728 }
4729 </ pre>
4730  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
4731 
4732  * \non_carbon_cfm in InterfaceLib 7.1 and
4733  later
4734  * \carbon_lib in CarbonLib 1.0 and
4735  later
4736  * \mac_os_x in version 10.0 and
4737  later
4738  * /
4739  short
4740  Random(void);
4741 
4774 void StuffHex(void *thingPtr, ConstStr255Param s);
4775 
4784 #if TARGET_OS_MAC
4785 #define MacGetPixel GetPixel
4786 #endif
4787 Boolean
4788 MacGetPixel(short h, short v);
4789 
4830 void ScalePt(Point *pt, const Rect *srcRect, const Rect *dstRect);
4831 
4862 w1 = r1.right - r1.left;
4863 w2 = r2.right - r2.left; /* and widths */
4864 thePoint.h = (thePoint.h * w1) / w2; /* apply ratio of sizes */
4865 </ pre>
4866  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
4867 
4868  * \non_carbon_cfm in InterfaceLib 7.1 and
4869  later
4870  * \carbon_lib in CarbonLib 1.0 and
4871  later
4872  * \mac_os_x in version 10.0 and
4873  later
4874  * /
4875  void
4876  MapPt(Point *pt, const Rect *srcRect, const Rect *dstRect);
4877 
4912 void MapRect(Rect *r, const Rect *srcRect, const Rect *dstRect);
4913 
4922 void MapRgn(RgnHandle rgn, const Rect *srcRect, const Rect *dstRect);
4923 
4957 void MapPoly(PolyHandle poly, const Rect *srcRect, const Rect *dstRect);
4958 
4994 pascal short myCommentProc(void); /* declare the function */
4995 SetStdProcs(&myQDProcs); /* initialize with defaults */
4996 myQDProcs.commentProc = (QDPtr)myCommentProc; /* change one proc */
4997 thePort->grafProcs = &myQDProcs; /* install the change */
4998 </ pre>
4999  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
5000 
5001  * \non_carbon_cfm in InterfaceLib 7.1 and
5002  later
5003  * \carbon_lib in CarbonLib 1.0 and
5004  later
5005  * \mac_os_x in version 10.0 and
5006  later
5007  * /
5008  void
5009  SetStdProcs(QDProcs *procs);
5010 
5019 void StdRect(GrafVerb verb, const Rect *r);
5020 
5029 void StdRRect(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight);
5030 
5039 void StdOval(GrafVerb verb, const Rect *r);
5040 
5049 void StdArc(GrafVerb verb, const Rect *r, short startAngle, short arcAngle);
5050 
5059 void StdPoly(GrafVerb verb, PolyHandle poly);
5060 
5069 void StdRgn(GrafVerb verb, RgnHandle rgn);
5070 
5079 void StdBits(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect,
5080  short mode, RgnHandle maskRgn);
5081 
5090 void StdComment(short kind, short dataSize, Handle dataHandle);
5091 
5109 void StdGetPic(void *dataPtr, short byteCount);
5110 
5119 void StdPutPic(const void *dataPtr, short byteCount);
5120 
5129 void StdOpcode(const Rect *fromRect, const Rect *toRect, UInt16 opcode,
5130  SInt16 version);
5131 
5154 void AddPt(Point src, Point *dst);
5155 
5176 ... they are equal...
5177 }
5178 or the more efficient : if (*(long *)&pt1 == *(long *)&pt2){/* compare longs once */
5179  ... they are equal...} < / pre >
5180  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
5181 
5182  * \non_carbon_cfm in InterfaceLib 7.1 and
5183  later * \carbon_lib in CarbonLib 1.0 and later * \mac_os_x in version 10.0 and later * / Boolean EqualPt(Point pt1, Point pt2);
5184 
5193 #if TARGET_OS_MAC
5194 #define MacPtInRect PtInRect
5195 #endif
5196 Boolean
5197 MacPtInRect(Point pt, const Rect *r);
5198 
5223 void Pt2Rect(Point pt1, Point pt2, Rect *dstRect);
5224 
5254 void PtToAngle(const Rect *r, Point pt, short *angle);
5255 
5282 void SubPt(Point src, Point *dst);
5283 
5308 ...
5309 }
5310 </ pre>
5311  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
5312 
5313  * \non_carbon_cfm in InterfaceLib 7.1 and
5314  later
5315  * \carbon_lib in CarbonLib 1.0 and
5316  later
5317  * \mac_os_x in version 10.0 and
5318  later
5319  * /
5320  Boolean
5321  PtInRgn(Point pt, RgnHandle rgn);
5322 
5331 void StdLine(Point newPt);
5332 
5333 #if CALL_NOT_IN_CARBON
5343 
5353 
5363 
5364 #endif /* CALL_NOT_IN_CARBON */
5365 
5376 
5386 
5408 
5419 
5429 
5450 
5460 
5470 
5480 GetPixPat(short patID);
5481 
5516 void MakeRGBPat(PixPatHandle pp, const RGBColor *myColor);
5517 
5526 void FillCRect(const Rect *r, PixPatHandle pp);
5527 
5536 void FillCOval(const Rect *r, PixPatHandle pp);
5537 
5546 void FillCRoundRect(const Rect *r, short ovalWidth, short ovalHeight,
5547  PixPatHandle pp);
5548 
5557 void FillCArc(const Rect *r, short startAngle, short arcAngle, PixPatHandle pp);
5558 
5568 
5578 
5587 void RGBForeColor(const RGBColor *color);
5588 
5597 void RGBBackColor(const RGBColor *color);
5598 
5607 void SetCPixel(short h, short v, const RGBColor *cPix);
5608 
5633 
5652 void GetCPixel(short h, short v, RGBColor *cPix);
5653 
5685 void GetForeColor(RGBColor *color);
5686 
5718 void GetBackColor(RGBColor *color);
5719 
5762 void SeedCFill(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect,
5763  const Rect *dstRect, short seedH, short seedV,
5764  ColorSearchUPP matchProc, long matchData);
5765 
5809 void CalcCMask(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect,
5810  const Rect *dstRect, const RGBColor *seedRGB,
5811  ColorSearchUPP matchProc, long matchData);
5812 
5821 PicHandle
5822 OpenCPicture(const OpenCPicParams *newHeader);
5823 
5844 void OpColor(const RGBColor *color);
5845 
5866 void HiliteColor(const RGBColor *color);
5867 
5877 
5886 CTabHandle
5887 GetCTable(short ctID);
5888 
5898 GetCCursor(short crsrID);
5899 
5909 
5918 void AllocCursor(void);
5919 
5929 
5930 /* GetCIcon(), PlotCIcon(), and DisposeCIcon() moved to Icons.h*/
5931 
5972 void SetStdCProcs(CQDProcs *procs);
5973 
6022 GDHandle
6023 GetMaxDevice(const Rect *globalRect);
6024 
6042 long GetCTSeed(void);
6043 
6059 GDHandle
6061 
6081 GDHandle
6083 
6092 GDHandle
6094 
6119 Boolean
6120 TestDeviceAttribute(GDHandle gdh, short attribute);
6121 
6148 void SetDeviceAttribute(GDHandle gdh, short attribute, Boolean value);
6149 
6158 void InitGDevice(short qdRefNum, long mode, GDHandle gdh);
6159 
6168 GDHandle
6169 NewGDevice(short refNum, long mode);
6170 
6180 
6195 
6208 GDHandle
6210 
6219 long Color2Index(const RGBColor *myColor);
6220 
6243 void Index2Color(long index, RGBColor *aColor);
6244 
6262 void InvertColor(RGBColor *myColor);
6263 
6272 Boolean
6273 RealColor(const RGBColor *color);
6274 
6283 void GetSubTable(CTabHandle myColors, short iTabRes, CTabHandle targetTbl);
6284 
6293 void MakeITable(CTabHandle cTabH, ITabHandle iTabH, short res);
6294 
6303 void AddSearch(ColorSearchUPP searchProc);
6304 
6313 void AddComp(ColorComplementUPP compProc);
6314 
6323 void DelSearch(ColorSearchUPP searchProc);
6324 
6333 void DelComp(ColorComplementUPP compProc);
6334 
6350 void SetClientID(short id);
6351 
6374 void ProtectEntry(short index, Boolean protect);
6375 
6404 void ReserveEntry(short index, Boolean reserve);
6405 
6453 void SetEntries(short start, short count, CSpecArray aTable);
6454 
6481 void SaveEntries(CTabHandle srcTable, CTabHandle resultTable, ReqListRec *selection);
6482 
6517 void RestoreEntries(CTabHandle srcTable, CTabHandle dstTable, ReqListRec *selection);
6518 
6559 short QDError(void);
6560 
6569 void CopyDeepMask(const BitMap *srcBits, const BitMap *maskBits,
6570  const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect,
6571  const Rect *dstRect, short mode,
6572  RgnHandle maskRgn) /* can be NULL */;
6573 
6582 void DeviceLoop(RgnHandle drawingRgn, DeviceLoopDrawingUPP drawingProc,
6583  long userData, DeviceLoopFlags flags);
6584 
6611 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
6612 #pragma parameter __A0 GetMaskTable
6613 #endif
6614 Ptr GetMaskTable(void);
6615 
6624 PatHandle
6625 GetPattern(short patternID);
6626 
6635 #if TARGET_OS_MAC
6636 #define MacGetCursor GetCursor
6637 #endif
6638 CursHandle
6639 MacGetCursor(short cursorID);
6640 
6649 PicHandle
6650 GetPicture(short pictureID);
6651 
6676 long DeltaPoint(Point ptA, Point ptB);
6677 
6685 An alternative method is to convert shieldRect to global coordinates(via
6686  LocalToGlobal) before the call,
6687  and pass(0, 0) as offsetPt.</ pre>
6688  * \copyright THINK Reference © 1991 -
6689  1992 Symantec Corporation
6690 
6691  * \non_carbon_cfm in InterfaceLib 7.1 and
6692  later
6693  * \carbon_lib in CarbonLib 1.0 and
6694  later
6695  * \mac_os_x in version 10.0 and
6696  later
6697  * /
6698  void ShieldCursor(const Rect *shieldRect, Point offsetPt);
6699 
6730 void ScreenRes(short *scrnHRes, short *scrnVRes);
6731 
6740 void GetIndPattern(Pattern *thePat, short patternListID, short index);
6741 
6742 #if CALL_NOT_IN_CARBON
6751 Boolean
6752 ptinrect(const Point *pt, const Rect *r);
6753 
6762 void pt2rect(const Point *pt1, const Point *pt2, Rect *destRect);
6763 
6772 void pttoangle(const Rect *r, const Point *pt, short *angle);
6773 
6782 Boolean
6784 
6793 void addpt(const Point *src, Point *dst);
6794 
6803 void subpt(const Point *src, Point *dst);
6804 
6813 Boolean
6814 equalpt(const Point *pt1, const Point *pt2);
6815 
6824 void stuffhex(void *thingPtr, const char *s);
6825 
6834 void stdline(const Point *newPt);
6835 
6844 void shieldcursor(const Rect *shieldRect, Point *offsetPt);
6845 
6846 #endif /* CALL_NOT_IN_CARBON */
6847 
6856 long deltapoint(Point *ptA, Point *ptB);
6857 
6858 #if OLDROUTINENAMES
6859 #define DisposPixMap(pm) DisposePixMap(pm)
6860 #define DisposPixPat(pp) DisposePixPat(pp)
6861 #define DisposCTable(cTable) DisposeCTable(cTable)
6862 #define DisposCCursor(cCrsr) DisposeCCursor(cCrsr)
6863 #define DisposGDevice(gdh) DisposeGDevice(gdh)
6864 #endif /* OLDROUTINENAMES */
6865 
6907 </ pre>
6908  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
6909 
6910  * \non_carbon_cfm in InterfaceLib 7.1 and
6911  later
6912  * \carbon_lib in CarbonLib 1.0 and
6913  later
6914  * \mac_os_x in version 10.0 and
6915  later
6916  * /
6917  void
6918  PackBits(Ptr *srcPtr, Ptr *dstPtr, short srcBytes);
6919 
6934 void UnpackBits(Ptr *srcPtr, Ptr *dstPtr, short dstBytes);
6935 
6940 /* -------- calculate dv and dh; the vertical and horizontal distance */
6941 dv = startPt.v - endPt.v; /* vertical is easy */
6942 dh = FixRound(FixMul(INT2FIX(dv), theSlope));
6943 MoveTo(startPt.h, startPt.v); /* move to start point */
6944 Line(dh, dv); /* draw calculated distance */
6945 </ pre>
6946  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
6947 
6948  * \non_carbon_cfm in InterfaceLib 7.1 and
6949  later
6950  * \carbon_lib in CarbonLib 1.0 and
6951  later
6952  * \mac_os_x in version 10.0 and
6953  later
6954  * /
6955  Fixed
6956  SlopeFromAngle(short angle);
6957 
6979 Point startPt, endPt;
6980 short theAngle, dh, dv;
6981 dh = startPt.h - endPt.h; /* calculate the deltas */
6982 dv = startPt.v - endPt.v;
6983 theSlope = FixRatio(INT2FIX(dh), INT2FIX(dv)); /* slope=dh/dv */
6984 theAngle = AngleFromSlope(theSlope);
6985 </ pre>
6986  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
6987 
6988  * \non_carbon_cfm in InterfaceLib 7.1 and
6989  later
6990  * \carbon_lib in CarbonLib 1.0 and
6991  later
6992  * \mac_os_x in version 10.0 and
6993  later
6994  * /
6995  short
6996  AngleFromSlope(Fixed slope);
6997 
6998 /* New transfer modes */
6999 enum
7000 {
7001  colorXorXFer = 52,
7002  noiseXFer = 53,
7003  customXFer = 54
7004 };
7005 
7006 /* Custom XFer flags */
7007 enum
7008 {
7009  kXFer1PixelAtATime = 0x00000001, /* 1 pixel passed to custom XFer proc*/
7010  kXFerConvertPixelToRGB32 =
7011  0x00000002 /* All color depths converted to 32 bit RGB*/
7012 };
7013 
7015 {
7016  UInt32 version;
7017  void *srcPixels;
7018  void *destPixels;
7019  void *resultPixels;
7020  UInt32 refCon;
7021  UInt32 pixelSize;
7022  UInt32 pixelCount;
7023  Point firstPixelHV;
7024  Rect destBounds;
7025 };
7026 typedef struct CustomXFerRec CustomXFerRec;
7028 typedef CALLBACK_API(void, CustomXFerProcPtr)(CustomXFerRecPtr info);
7037 OSErr GetPortCustomXFerProc(CGrafPtr port, CustomXFerProcPtr *proc, UInt32 *flags,
7038  UInt32 *refCon);
7039 
7048 OSErr SetPortCustomXFerProc(CGrafPtr port, CustomXFerProcPtr proc, UInt32 flags,
7049  UInt32 refCon);
7050 
7051 enum
7052 {
7053  kCursorComponentsVersion = 0x00010001
7054 };
7055 
7056 enum
7057 {
7058  kCursorComponentType = FOUR_CHAR_CODE('curs')
7059 };
7060 
7061 /* Cursor Component capabilities flags */
7062 enum
7063 {
7064  cursorDoesAnimate = 1L << 0,
7065  cursorDoesHardware = 1L << 1,
7066  cursorDoesUnreadableScreenBits = 1L << 2
7067 };
7068 
7069 /* Cursor Component output mode flags */
7070 enum
7071 {
7072  kRenderCursorInHardware = 1L << 0,
7073  kRenderCursorInSoftware = 1L << 1
7074 };
7075 
7076 /* Cursor Component Info */
7078 {
7079  long version; /* use kCursorComponentsVersion */
7080  long capabilities;
7081  long animateDuration; /* approximate time between animate tickles */
7082  Rect bounds;
7083  Point hotspot;
7084  long reserved; /* must set to zero */
7085 };
7086 typedef struct CursorInfo CursorInfo;
7087 /* Cursor Component Selectors */
7088 enum
7089 {
7090  kCursorComponentInit = 0x0001,
7091  kCursorComponentGetInfo = 0x0002,
7092  kCursorComponentSetOutputMode = 0x0003,
7093  kCursorComponentSetData = 0x0004,
7094  kCursorComponentReconfigure = 0x0005,
7095  kCursorComponentDraw = 0x0006,
7096  kCursorComponentErase = 0x0007,
7097  kCursorComponentMove = 0x0008,
7098  kCursorComponentAnimate = 0x0009,
7099  kCursorComponentLastReserved = 0x0050
7100 };
7101 
7111 
7121 
7131 
7141 
7151 
7152 /* Quickdraw-specific ColorSync matching */
7153 /* Available in CarbonLib... */
7162 Boolean
7164 
7165 #if ACCESSOR_CALLS_ARE_FUNCTIONS
7166 /* GrafPort */
7167 /* Getters */
7177 GetPortPixMap(CGrafPtr port);
7178 
7198 const BitMap *
7199 GetPortBitMapForCopyBits(CGrafPtr port);
7200 
7209 Rect *
7210 GetPortBounds(CGrafPtr port, Rect *rect);
7211 
7220 RGBColor *
7221 GetPortForeColor(CGrafPtr port, RGBColor *foreColor);
7222 
7231 RGBColor *
7232 GetPortBackColor(CGrafPtr port, RGBColor *backColor);
7233 
7242 RGBColor *
7243 GetPortOpColor(CGrafPtr port, RGBColor *opColor);
7244 
7253 RGBColor *
7254 GetPortHiliteColor(CGrafPtr port, RGBColor *hiliteColor);
7255 
7265 GetPortGrafProcs(CGrafPtr port);
7266 
7275 short GetPortTextFont(CGrafPtr port);
7276 
7285 Style GetPortTextFace(CGrafPtr port);
7286 
7295 short GetPortTextMode(CGrafPtr port);
7296 
7305 short GetPortTextSize(CGrafPtr port);
7306 
7315 short GetPortChExtra(CGrafPtr port);
7316 
7325 short GetPortFracHPenLocation(CGrafPtr port);
7326 
7335 Fixed GetPortSpExtra(CGrafPtr port);
7336 
7345 short GetPortPenVisibility(CGrafPtr port);
7346 
7355 RgnHandle
7356 GetPortVisibleRegion(CGrafPtr port, RgnHandle visRgn);
7357 
7366 RgnHandle
7367 GetPortClipRegion(CGrafPtr port, RgnHandle clipRgn);
7368 
7378 GetPortBackPixPat(CGrafPtr port, PixPatHandle backPattern);
7379 
7389 GetPortPenPixPat(CGrafPtr port, PixPatHandle penPattern);
7390 
7400 GetPortFillPixPat(CGrafPtr port, PixPatHandle fillPattern);
7401 
7410 Point *
7411 GetPortPenSize(CGrafPtr port, Point *penSize);
7412 
7421 SInt32
7422 GetPortPenMode(CGrafPtr port);
7423 
7432 Point *
7433 GetPortPenLocation(CGrafPtr port, Point *penLocation);
7434 
7443 Boolean
7444 IsPortRegionBeingDefined(CGrafPtr port);
7445 
7454 Boolean
7455 IsPortPictureBeingDefined(CGrafPtr port);
7456 
7465 Boolean
7466 IsPortPolyBeingDefined(CGrafPtr port);
7467 
7476 Boolean
7477 IsPortOffscreen(CGrafPtr port);
7478 
7487 Boolean
7488 IsPortColor(CGrafPtr port);
7489 
7498 Boolean
7499 IsPortVisibleRegionEmpty(CGrafPtr port);
7500 
7509 Boolean
7510 IsPortClipRegionEmpty(CGrafPtr port);
7511 
7520 void SectRegionWithPortClipRegion(CGrafPtr port, RgnHandle ioRegion);
7521 
7530 void SectRegionWithPortVisibleRegion(CGrafPtr port, RgnHandle ioRegion);
7531 
7532 /* Swappers */
7562 Handle
7563 SwapPortPicSaveHandle(CGrafPtr port, Handle inPicSaveHdl);
7564 
7565 /* Setters */
7574 void SetPortBounds(CGrafPtr port, const Rect *rect);
7575 
7584 void SetPortOpColor(CGrafPtr port, const RGBColor *opColor);
7585 
7594 void SetPortGrafProcs(CGrafPtr port, CQDProcsPtr procs);
7595 
7604 void SetPortTextFont(CGrafPtr port, short txFont);
7605 
7614 void SetPortTextSize(CGrafPtr port, short txSize);
7615 
7624 void SetPortTextFace(CGrafPtr port, StyleParameter face);
7625 
7634 void SetPortTextMode(CGrafPtr port, short mode);
7635 
7644 void SetPortVisibleRegion(CGrafPtr port, RgnHandle visRgn);
7645 
7654 void SetPortClipRegion(CGrafPtr port, RgnHandle clipRgn);
7655 
7664 void SetPortPenPixPat(CGrafPtr port, PixPatHandle penPattern);
7665 
7674 void SetPortFillPixPat(CGrafPtr port, PixPatHandle penPattern);
7675 
7684 void SetPortBackPixPat(CGrafPtr port, PixPatHandle backPattern);
7685 
7694 void SetPortPenSize(CGrafPtr port, Point penSize);
7695 
7704 void SetPortPenMode(CGrafPtr port, SInt32 penMode);
7705 
7714 void SetPortFracHPenLocation(CGrafPtr port, short pnLocHFrac);
7715 
7716 /* PixMap */
7725 Rect *
7726 GetPixBounds(PixMapHandle pixMap, Rect *bounds);
7727 
7736 short GetPixDepth(PixMapHandle pixMap);
7737 
7738 /* QDGlobals */
7739 /* Getters */
7748 long GetQDGlobalsRandomSeed(void);
7749 
7758 BitMap *
7759 GetQDGlobalsScreenBits(BitMap *screenBits);
7760 
7769 Cursor *
7770 GetQDGlobalsArrow(Cursor *arrow);
7771 
7780 Pattern *
7781 GetQDGlobalsDarkGray(Pattern *dkGray);
7782 
7791 Pattern *
7792 GetQDGlobalsLightGray(Pattern *ltGray);
7793 
7802 Pattern *
7803 GetQDGlobalsGray(Pattern *gray);
7804 
7813 Pattern *
7814 GetQDGlobalsBlack(Pattern *black);
7815 
7824 Pattern *
7825 GetQDGlobalsWhite(Pattern *white);
7826 
7835 CGrafPtr
7836 GetQDGlobalsThePort(void);
7837 
7838 /* Setters */
7847 void SetQDGlobalsRandomSeed(long randomSeed);
7848 
7857 void SetQDGlobalsArrow(const Cursor *arrow);
7858 
7859 /* Regions */
7868 Rect *
7869 GetRegionBounds(RgnHandle region, Rect *bounds);
7870 
7879 Boolean
7880 IsRegionRectangular(RgnHandle region);
7881 
7882 /* Utilities */
7883 /* To prevent upward dependencies, GetWindowFromPort() is defined in Window
7884  * Manager interface: */
7885 /* pascal WindowRef GetWindowFromPort(CGrafPtr port); */
7886 /* NewPtr/OpenCPort doesn't work with opaque structures */
7895 CGrafPtr
7896 CreateNewPort(void);
7897 
7906 void DisposePort(CGrafPtr port);
7907 
7916 void SetQDError(OSErr err);
7917 
7918 #endif /* ACCESSOR_CALLS_ARE_FUNCTIONS */
7919 
7934 Boolean
7936 
7945 Boolean
7947 
7956 void QDFlushPortBuffer(CGrafPtr port, RgnHandle region); /* can be NULL */
7957 
7966 OSStatus
7968 
7977 OSStatus
7979 
7988 OSStatus
7989 QDAddRectToDirtyRegion(CGrafPtr inPort, const Rect *inBounds);
7990 
7999 OSStatus
8001 
8010 OSStatus
8011 CreateCGContextForPort(CGrafPtr inPort, CGContextRef *outContext);
8012 
8021 OSStatus
8022 ClipCGContextToRegion(CGContextRef gc, const Rect *portRect, RgnHandle region);
8023 
8032 OSStatus
8033 SyncCGContextOriginWithPort(CGContextRef inContext, CGrafPtr port);
8034 
8069 OSStatus
8070 QDBeginCGContext(CGrafPtr inPort, CGContextRef *outContext);
8071 
8080 OSStatus
8081 QDEndCGContext(CGrafPtr inPort, CGContextRef *inoutContext);
8082 
8090 typedef struct OpaqueQDRegionBitsRef *QDRegionBitsRef;
8101 
8110 OSStatus
8112 
8121 OSStatus
8123 
8139 CGrafPtr
8140 CreateNewPortForCGDisplayID(UInt32 inCGDisplayID);
8141 
8156 void QDDisplayWaitCursor(Boolean forceWaitCursor);
8157 
8193 
8211 
8223 SInt16
8225 
8234 void LMSetScrVRes(SInt16 value);
8235 
8244 SInt16
8246 
8255 void LMSetScrHRes(SInt16 value);
8256 
8265 GDHandle
8267 
8277 
8286 GDHandle
8288 
8298 
8307 Handle
8309 
8318 void LMSetQDColors(Handle value);
8319 
8328 Handle
8330 
8339 void LMSetWidthListHand(Handle value);
8340 
8349 UInt8 LMGetHiliteMode(void);
8350 
8359 void LMSetHiliteMode(UInt8 value);
8360 
8369 Ptr LMGetWidthPtr(void);
8370 
8379 void LMSetWidthPtr(Ptr value);
8380 
8389 Handle
8391 
8400 void LMSetWidthTabHandle(Handle value);
8401 
8410 SInt32
8412 
8421 void LMSetLastSPExtra(SInt32 value);
8422 
8431 Handle
8433 
8442 void LMSetLastFOND(Handle value);
8443 
8452 UInt8 LMGetFractEnable(void);
8453 
8462 void LMSetFractEnable(UInt8 value);
8463 
8472 GDHandle
8474 
8484 
8485 #if TARGET_CPU_68K && !TARGET_RT_MAC_CFM
8486 #define LMGetHiliteRGB(hiliteRGBValue) (*(hiliteRGBValue) = *(RGBColor *)0x0DA0)
8487 #define LMSetHiliteRGB(hiliteRGBValue) \
8488  ((*(RGBColor *)0x0DA0) = *(hiliteRGBValue))
8489 #else
8498 void LMGetHiliteRGB(RGBColor *hiliteRGBValue);
8499 
8508 void LMSetHiliteRGB(const RGBColor *hiliteRGBValue);
8509 
8510 #endif /* TARGET_CPU_68K && !TARGET_RT_MAC_CFM */
8511 
8520 Boolean
8522 
8532 
8533 #if PRAGMA_STRUCT_ALIGN
8534 #pragma options align = reset
8535 #elif PRAGMA_STRUCT_PACKPUSH
8536 #pragma pack(pop)
8537 #elif PRAGMA_STRUCT_PACK
8538 #pragma pack()
8539 #endif
8540 
8541 #ifdef PRAGMA_IMPORT_OFF
8542 #pragma import off
8543 #elif PRAGMA_IMPORT
8544 #pragma import reset
8545 #endif
8546 
8547 #ifdef __cplusplus
8548 }
8549 #endif
8550 
8551 #endif /* __QUICKDRAW__ */
8552 in CarbonLib 1.0 and later * \mac_os_x in version 10.0 and later * / UInt8 LMGetHiliteMode(void);
8553 
8562 void LMSetHiliteMode(UInt8 value);
8563 
8572 Ptr LMGetWidthPtr(void);
8573 
8582 void LMSetWidthPtr(Ptr value);
8583 
8592 Handle
8593 LMGetWidthTabHandle(void);
8594 
8603 void LMSetWidthTabHandle(Handle value);
8604 
8613 SInt32
8614 LMGetLastSPExtra(void);
8615 
8624 void LMSetLastSPExtra(SInt32 value);
8625 
8634 Handle
8635 LMGetLastFOND(void);
8636 
8645 void LMSetLastFOND(Handle value);
8646 
8655 UInt8 LMGetFractEnable(void);
8656 
8665 void LMSetFractEnable(UInt8 value);
8666 
8675 GDHandle
8676 LMGetTheGDevice(void);
8677 
8686 void LMSetTheGDevice(GDHandle value);
8687 
8688 #if TARGET_CPU_68K && !TARGET_RT_MAC_CFM
8689 #define LMGetHiliteRGB(hiliteRGBValue) (*(hiliteRGBValue) = *(RGBColor *)0x0DA0)
8690 #define LMSetHiliteRGB(hiliteRGBValue) \
8691  ((*(RGBColor *)0x0DA0) = *(hiliteRGBValue))
8692 #else
8701 void LMGetHiliteRGB(RGBColor *hiliteRGBValue);
8702 
8711 void LMSetHiliteRGB(const RGBColor *hiliteRGBValue);
8712 
8713 #endif /* TARGET_CPU_68K && !TARGET_RT_MAC_CFM */
8714 
8723 Boolean
8724 LMGetCursorNew(void);
8725 
8734 void LMSetCursorNew(Boolean value);
8735 
8736 #if PRAGMA_STRUCT_ALIGN
8737 #pragma options align = reset
8738 #elif PRAGMA_STRUCT_PACKPUSH
8739 #pragma pack(pop)
8740 #elif PRAGMA_STRUCT_PACK
8741 #pragma pack()
8742 #endif
8743 
8744 #ifdef PRAGMA_IMPORT_OFF
8745 #pragma import off
8746 #elif PRAGMA_IMPORT
8747 #pragma import reset
8748 #endif
8749 
8750 #ifdef __cplusplus
8751 }
8752 #endif
8753 
8754 #endif /* __QUICKDRAW__ */
@ cTable
Definition: AERegistry.h:116
CoreGraphics context.
Component Manager Interfaces.
ControlPartCode FindControl(Point testPoint, WindowRef theWindow, ControlRef *theControl)
Fixed FixMul(Fixed a, Fixed b)
Fixed FixRatio(short numer, short denom)
short FixRound(Fixed x)
FrameRect & r
Lock a handle's data area (keep it from moving)
Definition: MacMemory.h:927
Ptr NewPtr(Size byteCount)
Basic Macintosh data types.
long Fixed
Definition: MacTypes.h:153
unsigned char Boolean
Definition: MacTypes.h:318
Mixed Mode Manager Interfaces.
#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)
Quickdraw Text Interfaces.
PicHandle OpenPicture(const Rect *picFrame)
void LMGetHiliteRGB(RGBColor *hiliteRGBValue)
void DisposeQDOpcodeUPP(QDOpcodeUPP userUPP)
void EraseRgn(RgnHandle rgn)
void SetGDevice(GDHandle gd)
Set the current device to the specified device.
void StuffHex(void *thingPtr, ConstStr255Param s)
Convert a string of hex digits to binary data.
void RestoreEntries(CTabHandle srcTable, CTabHandle dstTable, ReqListRec *selection)
Sets entries into dstTable without rebuilding inverse table.
void addpt(const Point *src, Point *dst)
Ptr LMGetWidthPtr(void)
Boolean IsValidPort(CGrafPtr port)
void StdBits(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
void * MacRegionToNativeRegion(RgnHandle macRegion)
void LMSetScrVRes(SInt16 value)
long DeltaPoint(Point ptA, Point ptB)
Calculate distance between two points.
void InvokeDeviceLoopDrawingUPP(short depth, short deviceFlags, GDHandle targetDevice, long userData, DeviceLoopDrawingUPP userUPP)
Ptr GetMaskTable(void)
Get table of masks from ROM.
OSStatus QDAddRegionToDirtyRegion(CGrafPtr inPort, RgnHandle inRegion)
void FrameOval(const Rect *r)
void MacOffsetRect(Rect *r, short dh, short dv)
GDHandle LMGetDeviceList(void)
void RGBForeColor(const RGBColor *color)
void StdArc(GrafVerb verb, const Rect *r, short startAngle, short arcAngle)
void InvokeQDOvalUPP(GrafVerb verb, const Rect *r, QDOvalUPP userUPP)
OSStatus ClipCGContextToRegion(CGContextRef gc, const Rect *portRect, RgnHandle region)
SInt32 PrinterStatusOpcode
Definition: Quickdraw.h:259
void InvokeQDLineUPP(Point newPt, QDLineUPP userUPP)
Boolean MacGetPixel(short h, short v)
void InitCPort(CGrafPtr port)
void DisposeQDBitsUPP(QDBitsUPP userUPP)
void DisposeCCursor(CCrsrHandle cCrsr)
void * GetPortNativeWindow(GrafPtr macPort)
Find which GrafPort is currently active.
Boolean EmptyRgn(RgnHandle rgn)
Determine if a Region is empty.
ctlCode
Obtain local coordinates of global point.
Definition: Quickdraw.h:4665
void InvokeQDRgnUPP(GrafVerb verb, RgnHandle rgn, QDRgnUPP userUPP)
RgnHandle NativeRegionToMacRegion(void *nativeRegion)
void MacLineTo(short h, short v)
CTabHandle GetCTable(short ctID)
GrafPtr GetNativeWindowPort(void *nativeWindow)
void InvertOval(const Rect *r)
void StdPoly(GrafVerb verb, PolyHandle poly)
void StdOpcode(const Rect *fromRect, const Rect *toRect, UInt16 opcode, SInt16 version)
void CloseRgn(RgnHandle dstRgn)
void QDFlushPortBuffer(CGrafPtr port, RgnHandle region)
void SeedFill(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words, short seedH, short seedV)
Calculate a mask for use in CopyMask.
void InvokeDragGrayRgnUPP(DragGrayRgnUPP userUPP)
void DisposeQDTextUPP(QDTextUPP userUPP)
w1
Map point relative to two rectangles.
Definition: Quickdraw.h:4862
void InsetRgn(RgnHandle rgn, short dh, short dv)
void MacXorRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
void shieldcursor(const Rect *shieldRect, Point *offsetPt)
short QDError(void)
Return error result from last QuickDraw call.
void DisposeDragGrayRgnUPP(DragGrayRgnUPP userUPP)
void LMSetHiliteRGB(const RGBColor *hiliteRGBValue)
void InvokeQDBitsUPP(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn, QDBitsUPP userUPP)
QDPolyUPP NewQDPolyUPP(QDPolyProcPtr userRoutine)
void ErasePoly(PolyHandle poly)
void FillCRect(const Rect *r, PixPatHandle pp)
Boolean ptinrect(const Point *pt, const Rect *r)
void PenPixPat(PixPatHandle pp)
void FillRoundRect(const Rect *r, short ovalWidth, short ovalHeight, const Pattern *pat)
void MacUnionRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
void pttoangle(const Rect *r, const Point *pt, short *angle)
void QDDisplayWaitCursor(Boolean forceWaitCursor)
void ColorBit(short whichBit)
Select color plane for subsequent drawing.
void PenMode(short mode)
Set the graphics pen pattern transfer mode.
void EraseArc(const Rect *r, short startAngle, short arcAngle)
void CopyBits(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
void LMSetWidthPtr(Ptr value)
void InvokeQDPolyUPP(GrafVerb verb, PolyHandle poly, QDPolyUPP userUPP)
void Line(short dh, short dv)
void MacOffsetRgn(RgnHandle rgn, short dh, short dv)
SInt16 LMGetScrHRes(void)
OSStatus SyncCGContextOriginWithPort(CGContextRef inContext, CGrafPtr port)
OSErr BitMapToRegion(RgnHandle region, const BitMap *bMap)
ColorSearchUPP NewColorSearchUPP(ColorSearchProcPtr userRoutine)
QDCommentUPP NewQDCommentUPP(QDCommentProcPtr userRoutine)
void MacSetPort(GrafPtr port)
void PaintPoly(PolyHandle poly)
GrafPtr WindowPtr
Definition: Quickdraw.h:1685
void stuffhex(void *thingPtr, const char *s)
Boolean InvokeColorSearchUPP(RGBColor *rgb, long *position, ColorSearchUPP userUPP)
void LMSetLastSPExtra(SInt32 value)
Handle LMGetLastFOND(void)
void SeedCFill(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short seedH, short seedV, ColorSearchUPP matchProc, long matchData)
Calculate a mask for use in CopyMask or CopyBits.
void LMSetLastFOND(Handle value)
void StdRgn(GrafVerb verb, RgnHandle rgn)
void SectRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
void FillOval(const Rect *r, const Pattern *pat)
void LMSetDeviceList(GDHandle value)
QDRectUPP NewQDRectUPP(QDRectProcPtr userRoutine)
Boolean EmptyRect(const Rect *r)
Determine if a rectangle is empty.
void InvokeQDGetPicUPP(void *dataPtr, short byteCount, QDGetPicUPP userUPP)
void StdGetPic(void *dataPtr, short byteCount)
The default Quickdraw picture-retrieving routine.
void RGBBackColor(const RGBColor *color)
OSStatus QDBeginCGContext(CGrafPtr inPort, CGContextRef *outContext)
void GrafDevice(short device)
Set the device field for a GrafPort.
GDHandle GetNextDevice(GDHandle curDevice)
QDStdGlyphsUPP NewQDStdGlyphsUPP(QDStdGlyphsProcPtr userRoutine)
void LMSetCursorNew(Boolean value)
void InvokeQDCommentUPP(short kind, short dataSize, Handle dataHandle, QDCommentUPP userUPP)
GDHandle LMGetMainDevice(void)
UInt8 LMGetFractEnable(void)
GDHandle LMGetTheGDevice(void)
void LMSetWidthTabHandle(Handle value)
void StdOval(GrafVerb verb, const Rect *r)
void PaintOval(const Rect *r)
void MacFrameRgn(RgnHandle rgn)
void FillCOval(const Rect *r, PixPatHandle pp)
QDTxMeasUPP NewQDTxMeasUPP(QDTxMeasProcPtr userRoutine)
Boolean MacPtInRect(Point pt, const Rect *r)
void InitPort(GrafPtr port)
OSErr SetPortCustomXFerProc(CGrafPtr port, CustomXFerProcPtr proc, UInt32 flags, UInt32 refCon)
void StdPutPic(const void *dataPtr, short byteCount)
dv
Calculate slope given an angle.
Definition: Quickdraw.h:6941
GDHandle NewGDevice(short refNum, long mode)
OSStatus CreateCGContextForPort(CGrafPtr inPort, CGContextRef *outContext)
short InvokeQDTxMeasUPP(short byteCount, const void *textAddr, Point *numer, Point *denom, FontInfo *info, QDTxMeasUPP userUPP)
QDOpcodeUPP NewQDOpcodeUPP(QDOpcodeProcPtr userRoutine)
OSStatus QDRestoreRegionBits(RgnHandle region, QDRegionBitsRef regionBits)
pascal short myCommentProc(void)
Set graphProcs field to point to custom routines.
void DisposeQDArcUPP(QDArcUPP userUPP)
void MacPaintRgn(RgnHandle rgn)
void PaintRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
void MacInvertRgn(RgnHandle rgn)
void InitGDevice(short qdRefNum, long mode, GDHandle gdh)
OSErr CursorComponentSetData(ComponentInstance ci, long data)
void AddComp(ColorComplementUPP compProc)
PixPatHandle GetPixPat(short patID)
void DisposeQDCommentUPP(QDCommentUPP userUPP)
void MacSetRect(Rect *r, short left, short top, short right, short bottom)
void MapPoly(PolyHandle poly, const Rect *srcRect, const Rect *dstRect)
Scale and reposition a polygon.
GDHandle GetDeviceList(void)
Provides a handle to the first gDevice in the DeviceList.
QDBitsUPP NewQDBitsUPP(QDBitsProcPtr userRoutine)
void RgnToHandle(RgnHandle region, Handle flattenedRgnDataHdl)
OSErr OpenCursorComponent(Component c, ComponentInstance *ci)
void MakeITable(CTabHandle cTabH, ITabHandle iTabH, short res)
void pt2rect(const Point *pt1, const Point *pt2, Rect *destRect)
QDRRectUPP NewQDRRectUPP(QDRRectProcPtr userRoutine)
void EraseOval(const Rect *r)
void OpenPort(GrafPtr port)
void EraseRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
OSStatus InvokeQDPrinterStatusUPP(PrinterStatusOpcode opcode, CGrafPtr currentPort, void *printerStatus, QDPrinterStatusUPP userUPP)
void Index2Color(long index, RGBColor *aColor)
Find specific RGB.
long deltapoint(Point *ptA, Point *ptB)
void DisposeQDRRectUPP(QDRRectUPP userUPP)
void InvokeQDTextUPP(short byteCount, const void *textBuf, Point numer, Point denom, QDTextUPP userUPP)
void OffsetPoly(PolyHandle poly, short dh, short dv)
Move a polygon.
void KillPicture(PicHandle myPicture)
void Move(short dh, short dv)
the pen relative to its current location
Boolean MacEqualRect(const Rect *rect1, const Rect *rect2)
OSErr UpdatePort(GrafPtr port)
void BackPixPat(PixPatHandle pp)
void LMSetFractEnable(UInt8 value)
MacRegion * RgnPtr
Definition: Quickdraw.h:319
void BackColor(long color)
void InvokeQDRRectUPP(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight, QDRRectUPP userUPP)
void SetPt(Point *pt, short h, short v)
Pack horizontal and vertical coordinates into Point.
void UnpackBits(Ptr *srcPtr, Ptr *dstPtr, short dstBytes)
Uncompress data stored via PackBits.
QDOvalUPP NewQDOvalUPP(QDOvalProcPtr userRoutine)
void DisposeColorComplementUPP(ColorComplementUPP userUPP)
void MacFillRect(const Rect *r, const Pattern *pat)
PatHandle GetPattern(short patternID)
long Color2Index(const RGBColor *myColor)
void StdLine(Point newPt)
QDRgnUPP NewQDRgnUPP(QDRgnProcPtr userRoutine)
void PenSize(short width, short height)
Set dimensions of pen for current GrafPort.
GDHandle GetMainDevice(void)
Provides a handle to the startup gDevice.
void DisposeQDLineUPP(QDLineUPP userUPP)
void InvertPoly(PolyHandle poly)
Boolean InvokeColorComplementUPP(RGBColor *rgb, ColorComplementUPP userUPP)
void subpt(const Point *src, Point *dst)
void MacFrameRect(const Rect *r)
OSStatus QDAddRectToDirtyRegion(CGrafPtr inPort, const Rect *inBounds)
void DisposeQDRectUPP(QDRectUPP userUPP)
void LMSetTheGDevice(GDHandle value)
void InvertColor(RGBColor *myColor)
Find a color's complement.
void FillPoly(PolyHandle poly, const Pattern *pat)
void ScrollRect(const Rect *r, short dh, short dv, RgnHandle updateRgn)
OSStatus InvokeQDStdGlyphsUPP(void *dataStream, ByteCount size, QDStdGlyphsUPP userUPP)
void ProtectEntry(short index, Boolean protect)
Protect or un-protect color table entry.
An alternative method is to convert shieldRect to global and pass(0, 0) as offsetPt.</pre > *@par Copyright void ScreenRes(short *scrnHRes, short *scrnVRes)
Obtain screen resolution in pixels-per-inch.
void Pt2Rect(Point pt1, Point pt2, Rect *dstRect)
Find smallest rectangle enclosing two points.
void SetPenState(const PenState *pnState)
Set the pen location, size, pattern and mode.
void DisposeQDTxMeasUPP(QDTxMeasUPP userUPP)
void DiffRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
Boolean RealColor(const RGBColor *color)
void LMSetWidthListHand(Handle value)
RgnHandle NewRgn(void)
void AllocCursor(void)
Boolean equalpt(const Point *pt1, const Point *pt2)
QDJShieldCursorUPP NewQDJShieldCursorUPP(QDJShieldCursorProcPtr userRoutine)
void StdComment(short kind, short dataSize, Handle dataHandle)
PixMapHandle NewPixMap(void)
Boolean ptinrgn(const Point *pt, RgnHandle rgn)
OSStatus InvokeRegionToRectsUPP(UInt16 message, RgnHandle rgn, const Rect *rect, void *refCon, RegionToRectsUPP userUPP)
OSStatus QDEndCGContext(CGrafPtr inPort, CGContextRef *inoutContext)
MacPolygon * PolyPtr
Definition: Quickdraw.h:348
void DeviceLoop(RgnHandle drawingRgn, DeviceLoopDrawingUPP drawingProc, long userData, DeviceLoopFlags flags)
PicHandle OpenCPicture(const OpenCPicParams *newHeader)
void InvertArc(const Rect *r, short startAngle, short arcAngle)
OSErr CursorComponentChanged(ComponentInstance ci)
void DisposeCTable(CTabHandle cTable)
void DelSearch(ColorSearchUPP searchProc)
void DisposeQDOvalUPP(QDOvalUPP userUPP)
void MacInsetRect(Rect *r, short dh, short dv)
void SetEmptyRgn(RgnHandle rgn)
void DisposeQDPolyUPP(QDPolyUPP userUPP)
void FillCRoundRect(const Rect *r, short ovalWidth, short ovalHeight, PixPatHandle pp)
void SetPortPix(PixMapHandle pm)
Replaces a portPixMap of the active CGrafPort with a handle.
void MacSetRectRgn(RgnHandle rgn, short left, short top, short right, short bottom)
Boolean QDSwapPort(CGrafPtr inNewPort, CGrafPtr *outOldPort)
void InvokeQDJShieldCursorUPP(short left, short top, short right, short bottom, QDJShieldCursorUPP userUPP)
void CopyDeepMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
OSErr GetPortCustomXFerProc(CGrafPtr port, CustomXFerProcPtr *proc, UInt32 *flags, UInt32 *refCon)
OSStatus QDGetDirtyRegion(CGrafPtr port, RgnHandle rgn)
DragGrayRgnUPP NewDragGrayRgnUPP(DragGrayRgnProcPtr userRoutine)
void SetCPixel(short h, short v, const RGBColor *cPix)
void PtToAngle(const Rect *r, Point pt, short *angle)
Obtain angle between point and rectangle center.
ColorComplementUPP NewColorComplementUPP(ColorComplementProcPtr userRoutine)
void SetDeviceAttribute(GDHandle gdh, short attribute, Boolean value)
SetDeviceAttribute Set the device's display characteristics.
QDPutPicUPP NewQDPutPicUPP(QDPutPicProcPtr userRoutine)
void MoveTo(short h, short v)
Set pen location without drawing.
struct OpaqueQDRegionBitsRef * QDRegionBitsRef
Definition: Quickdraw.h:8090
QDArcUPP NewQDArcUPP(QDArcProcPtr userRoutine)
OSErr LockPortBits(GrafPtr port)
void DisposeColorSearchUPP(ColorSearchUPP userUPP)
void LMSetQDColors(Handle value)
void CloseCPort(CGrafPtr port)
void QDGetPatternOrigin(Point *origin)
void SetClientID(short id)
Identify this client to search and complement procedures.
void StdRRect(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight)
void FillArc(const Rect *r, short startAngle, short arcAngle, const Pattern *pat)
void DisposeRgn(RgnHandle rgn)
void InitGraf(void *globalPtr)
void DisposeQDJShieldCursorUPP(QDJShieldCursorUPP userUPP)
void ClosePoly(void)
Boolean QDIsPortBuffered(CGrafPtr port)
Boolean RectInRgn(const Rect *r, RgnHandle rgn)
Check if a rectangle intersects a region.
void MacUnionRect(const Rect *src1, const Rect *src2, Rect *dstRect)
void DisposeQDRgnUPP(QDRgnUPP userUPP)
void DelComp(ColorComplementUPP compProc)
QDPrinterStatusUPP NewQDPrinterStatusUPP(QDPrinterStatusProcPtr userRoutine)
OSErr SetCursorComponent(ComponentInstance ci)
OSStatus QDRegionToRects(RgnHandle rgn, QDRegionParseDirection dir, RegionToRectsUPP proc, void *userData)
Fixed theSlope
Calculate angle given slope.
Definition: Quickdraw.h:6978
they are equal or the more efficient
Check if two points are identical.
Definition: Quickdraw.h:5183
void SetEntries(short start, short count, CSpecArray aTable)
Set a group of color table entries for the current gDevice.
void SaveEntries(CTabHandle srcTable, CTabHandle resultTable, ReqListRec *selection)
Saves selected entries to a result table.
void PaintArc(const Rect *r, short startAngle, short arcAngle)
void InvokeQDPutPicUPP(const void *dataPtr, short byteCount, QDPutPicUPP userUPP)
void FillCPoly(PolyHandle poly, PixPatHandle pp)
The third line above correctly adjusts for the required word alignment Example OffScreenDraw(short rWide, short rHigh, Rect rDest)
Assigns a new bit map to the active GrafPort.
Definition: Quickdraw.h:3001
void HandleToRgn(Handle oldRegion, RgnHandle region)
void OpenRgn(void)
void GetForeColor(RGBColor *color)
Obtain foreground color set in current port.
QDLineUPP NewQDLineUPP(QDLineProcPtr userRoutine)
void DisposeGDevice(GDHandle gdh)
OSStatus QDDisposeRegionBits(QDRegionBitsRef regionBits)
PicHandle GetPicture(short pictureID)
void FillCRgn(RgnHandle rgn, PixPatHandle pp)
void DrawPicture(PicHandle myPicture, const Rect *dstRect)
void LMSetScrHRes(SInt16 value)
long GetCTSeed(void)
Get unique seed value for color table.
void DisposePixPat(PixPatHandle pp)
GDHandle GetMaxDevice(const Rect *globalRect)
Gives a handle to device with the deepest pixMap.
void PenNormal(void)
void PenPat(const Pattern *pat)
void AddPt(Point src, Point *dst)
Add coordinates of two points.
void GetIndPattern(Pattern *thePat, short patternListID, short index)
Boolean TestDeviceAttribute(GDHandle gdh, short attribute)
TestDeviceAttribute Check whether or not an attribute is set.
Handle LMGetWidthTabHandle(void)
void MakeRGBPat(PixPatHandle pp, const RGBColor *myColor)
Provides best possible RGB match on current device.
void ReserveEntry(short index, Boolean reserve)
Reserve or dereserve color table entry.
void DisposeQDGetPicUPP(QDGetPicUPP userUPP)
void FillCArc(const Rect *r, short startAngle, short arcAngle, PixPatHandle pp)
Handle LMGetWidthListHand(void)
void InvokeQDOpcodeUPP(const Rect *fromRect, const Rect *toRect, UInt16 opcode, SInt16 version, QDOpcodeUPP userUPP)
void OpenCPort(CGrafPtr port)
void FrameArc(const Rect *r, short startAngle, short arcAngle)
void LMSetMainDevice(GDHandle value)
void MapRect(Rect *r, const Rect *srcRect, const Rect *dstRect)
Scale and reposition a rectangle.
Handle LMGetQDColors(void)
void HiliteColor(const RGBColor *color)
Choose new highlighting color.
void EraseRect(const Rect *r)
CCrsrHandle GetCCursor(short crsrID)
void ScalePt(Point *pt, const Rect *srcRect, const Rect *dstRect)
Resize coordinate pair to ratio of two rectangles.
Boolean LMGetCursorNew(void)
DeviceLoopDrawingUPP NewDeviceLoopDrawingUPP(DeviceLoopDrawingProcPtr userRoutine)
void ClosePicture(void)
void KillPoly(PolyHandle poly)
void CopyPixMap(PixMapHandle srcPM, PixMapHandle dstPM)
Duplicate pixMap's structure to an existing pixmap.
void InvertRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
void GetPort(GrafPtr *port)
void DisposeQDPutPicUPP(QDPutPicUPP userUPP)
void OpColor(const RGBColor *color)
Set RGB values used by addPin, subPin and blend modes.
LocalToGlobal & tmpPt
Obtain global (screen) value of local point.
Definition: Quickdraw.h:4624
void GetSubTable(CTabHandle myColors, short iTabRes, CTabHandle targetTbl)
OSErr CloseCursorComponent(ComponentInstance ci)
SInt16 LMGetScrVRes(void)
void RectRgn(RgnHandle rgn, const Rect *r)
PixPatHandle NewPixPat(void)
void MacFillRgn(RgnHandle rgn, const Pattern *pat)
Boolean MacEqualRgn(RgnHandle rgnA, RgnHandle rgnB)
void DisposeQDPrinterStatusUPP(QDPrinterStatusUPP userUPP)
void DisposePixMap(PixMapHandle pm)
Boolean SectRect(const Rect *src1, const Rect *src2, Rect *dstRect)
Get the intersection of two rectangles; check for overlap.
Boolean QDIsPortBufferDirty(CGrafPtr port)
void PaintRect(const Rect *r)
UInt8 LMGetHiliteMode(void)
An alternative method is to convert shieldRect to global coordinates(via LocalToGlobal) before the call
Hide cursor while moving (or while in) a rectangle.
OSStatus QDSetDirtyRegion(CGrafPtr port, RgnHandle rgn)
void MacCopyRgn(RgnHandle srcRgn, RgnHandle dstRgn)
void CalcCMask(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, const RGBColor *seedRGB, ColorSearchUPP matchProc, long matchData)
Calculate a mask for use in CopyMask.
void AddSearch(ColorSearchUPP searchProc)
void CalcMask(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words)
void LMSetHiliteMode(UInt8 value)
QDGetPicUPP NewQDGetPicUPP(QDGetPicProcPtr userRoutine)
void StdRect(GrafVerb verb, const Rect *r)
void SetStdCProcs(CQDProcs *procs)
Set graphProcs field to point to custom routines.
void FrameRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
OSErr UnlockPortBits(GrafPtr port)
void CopyPixPat(PixPatHandle srcPP, PixPatHandle dstPP)
Duplicate pixPat's structure to an existing region.
QDTextUPP NewQDTextUPP(QDTextProcPtr userRoutine)
GDHandle GetGDevice(void)
Get handle to current GDevice.
void SubPt(Point src, Point *dst)
Subtract coordinates of one point from another.
void ForeColor(long color)
void MacInvertRect(const Rect *r)
QDRegionBitsRef QDSaveRegionBits(RgnHandle region)
void DisposeRegionToRectsUPP(RegionToRectsUPP userUPP)
void DisposeDeviceLoopDrawingUPP(DeviceLoopDrawingUPP userUPP)
const Pattern * ConstPatternParam
Definition: Quickdraw.h:233
void ClosePort(GrafPtr port)
void stdline(const Point *newPt)
void PicComment(short kind, short dataSize, Handle dataHandle)
void FramePoly(PolyHandle poly)
SInt32 LMGetLastSPExtra(void)
void DisposeQDStdGlyphsUPP(QDStdGlyphsUPP userUPP)
RegionToRectsUPP NewRegionToRectsUPP(RegionToRectsProcPtr userRoutine)
void InvokeQDRectUPP(GrafVerb verb, const Rect *r, QDRectUPP userUPP)
void SetCCursor(CCrsrHandle cCrsr)
void GetBackColor(RGBColor *color)
Obtain foreground color set in current port.
void GetCPixel(short h, short v, RGBColor *cPix)
Find the RGB of a specified pixel.
void MapRgn(RgnHandle rgn, const Rect *srcRect, const Rect *dstRect)
void InvokeQDArcUPP(GrafVerb verb, const Rect *r, short startAngle, short arcAngle, QDArcUPP userUPP)
theRand
Obtain pseudo-random signed integer.
Definition: Quickdraw.h:4712
void CopyMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect)
CGrafPtr CreateNewPortForCGDisplayID(UInt32 inCGDisplayID)
CursHandle MacGetCursor(short cursorID)
PolyHandle OpenPoly(void)
void QDSetPatternOrigin(Point origin)
TQAMethodSelector
Definition: RAVE.h:1009
Definition: Quickdraw.h:279
Definition: Quickdraw.h:2104
Definition: Quickdraw.h:2261
Definition: Quickdraw.h:2152
Definition: Quickdraw.h:2231
Definition: Quickdraw.h:1960
Definition: Quickdraw.h:1968
Definition: Components.h:220
Definition: Components.h:214
Definition: Quickdraw.h:2327
Definition: Quickdraw.h:7078
Definition: Quickdraw.h:288
Definition: Quickdraw.h:7015
Definition: MacTypes.h:220
Definition: QuickdrawText.h:139
Definition: Quickdraw.h:2178
Definition: Quickdraw.h:2121
Definition: Quickdraw.h:1648
Definition: Quickdraw.h:2204
Definition: Quickdraw.h:2135
Definition: Quickdraw.h:334
Definition: Quickdraw.h:306
Definition: Quickdraw.h:1987
Definition: Quickdraw.h:2311
Definition: Quickdraw.h:223
Definition: Quickdraw.h:297
Definition: Quickdraw.h:326
Definition: Quickdraw.h:2064
Definition: Quickdraw.h:2091
Definition: MacTypes.h:520
Definition: PPCToolbox.h:168
Definition: Quickdraw.h:267
Definition: Quickdraw.h:274
Definition: Quickdraw.h:2527
Definition: Quickdraw.h:397
Definition: Quickdraw.h:1710
Definition: MacTypes.h:527
Definition: Quickdraw.h:2305
Definition: Quickdraw.h:2144
Definition: RAVE.h:426
Definition: Quickdraw.h:1978