Mac OS 9
ImageCodec.h
Go to the documentation of this file.
1 
19 #ifndef __IMAGECODEC__
20 #define __IMAGECODEC__
21 
22 #ifndef __MACTYPES__
23 #include <MacTypes.h>
24 #endif
25 
26 #ifndef __QUICKDRAW__
27 #include <Quickdraw.h>
28 #endif
29 
30 #ifndef __COMPONENTS__
31 #include <Components.h>
32 #endif
33 
34 #ifndef __GXTYPES__
35 #include <GXTypes.h>
36 #endif
37 
38 #ifndef __IMAGECOMPRESSION__
39 #include <ImageCompression.h>
40 #endif
41 
42 #ifndef __MOVIES__
43 #include <Movies.h>
44 #endif
45 
46 #if PRAGMA_ONCE
47 #pragma once
48 #endif
49 
50 #ifdef __cplusplus
51 extern "C"
52 {
53 #endif
54 
55 #if PRAGMA_IMPORT
56 #pragma import on
57 #endif
58 
59 #if PRAGMA_STRUCT_ALIGN
60 #pragma options align = mac68k
61 #elif PRAGMA_STRUCT_PACKPUSH
62 #pragma pack(push, 2)
63 #elif PRAGMA_STRUCT_PACK
64 #pragma pack(2)
65 #endif
66 
67  /* codec capabilities flags */
68  enum
69  {
70  codecCanScale = 1L << 0,
71  codecCanMask = 1L << 1,
72  codecCanMatte = 1L << 2,
73  codecCanTransform = 1L << 3,
74  codecCanTransferMode = 1L << 4,
75  codecCanCopyPrev = 1L << 5,
76  codecCanSpool = 1L << 6,
77  codecCanClipVertical = 1L << 7,
78  codecCanClipRectangular = 1L << 8,
79  codecCanRemapColor = 1L << 9,
80  codecCanFastDither = 1L << 10,
81  codecCanSrcExtract = 1L << 11,
82  codecCanCopyPrevComp = 1L << 12,
83  codecCanAsync = 1L << 13,
84  codecCanMakeMask = 1L << 14,
85  codecCanShift = 1L << 15,
86  codecCanAsyncWhen = 1L << 16,
87  codecCanShieldCursor = 1L << 17,
88  codecCanManagePrevBuffer = 1L << 18,
89  codecHasVolatileBuffer =
90  1L << 19, /* codec requires redraw after window movement */
91  codecWantsRegionMask = 1L << 20,
92  codecImageBufferIsOnScreen =
93  1L << 21, /* old def of codec using overlay surface, = (
94  codecIsDirectToScreenOnly | codecUsesOverlaySurface |
95  codecImageBufferIsOverlaySurface | codecSrcMustBeImageBuffer
96  ) */
97  codecWantsDestinationPixels = 1L << 22,
98  codecWantsSpecialScaling = 1L << 23,
99  codecHandlesInputs = 1L << 24,
100  codecCanDoIndirectSurface =
101  1L << 25, /* codec can handle indirect surface (GDI) */
102  codecIsSequenceSensitive = 1L << 26,
103  codecRequiresOffscreen = 1L << 27,
104  codecRequiresMaskBits = 1L << 28,
105  codecCanRemapResolution = 1L << 29,
106  codecIsDirectToScreenOnly =
107  1L << 30, /* codec can only decompress data to the screen */
108  codecCanLockSurface =
109  1L
110  << 31 /* codec can lock destination surface, icm doesn't lock for you */
111  };
112 
113  /* codec capabilities flags2 */
114  enum
115  {
116  codecUsesOverlaySurface = 1L << 0, /* codec uses overlay surface */
117  codecImageBufferIsOverlaySurface =
118  1L << 1, /* codec image buffer is overlay surface, the bits in the buffer
119  are on the screen */
120  codecSrcMustBeImageBuffer =
121  1L << 2, /* codec can only source data from an image buffer */
122  codecImageBufferIsInAGPMemory =
123  1L << 4, /* codec image buffer is in AGP space, byte writes are OK */
124  codecImageBufferIsInPCIMemory =
125  1L << 5 /* codec image buffer is across a PCI bus; byte writes are bad */
126  };
127 
129  {
130  long flags;
131  short wantedPixelSize;
132  short extendWidth;
133  short extendHeight;
134  short bandMin;
135  short bandInc;
136  short pad;
137  unsigned long time;
138  long flags2; /* field new in QuickTime 4.0 */
139  };
140  typedef struct CodecCapabilities CodecCapabilities;
141  /* codec condition flags */
142  enum
143  {
144  codecConditionFirstBand = 1L << 0,
145  codecConditionLastBand = 1L << 1,
146  codecConditionFirstFrame = 1L << 2,
147  codecConditionNewDepth = 1L << 3,
148  codecConditionNewTransform = 1L << 4,
149  codecConditionNewSrcRect = 1L << 5,
150  codecConditionNewMask = 1L << 6,
151  codecConditionNewMatte = 1L << 7,
152  codecConditionNewTransferMode = 1L << 8,
153  codecConditionNewClut = 1L << 9,
154  codecConditionNewAccuracy = 1L << 10,
155  codecConditionNewDestination = 1L << 11,
156  codecConditionFirstScreen = 1L << 12,
157  codecConditionDoCursor = 1L << 13,
158  codecConditionCatchUpDiff = 1L << 14,
159  codecConditionMaskMayBeChanged = 1L << 15,
160  codecConditionToBuffer = 1L << 16,
161  codecConditionCodecChangedMask = 1L << 31
162  };
163 
164  enum
165  {
166  codecInfoResourceType = FOUR_CHAR_CODE('cdci'), /* codec info resource type */
167  codecInterfaceVersion = 2 /* high word returned in component GetVersion */
168  };
169 
171  {
172  void *nextBusy;
173 
174  long descSeed;
175  Handle dataDesc;
176  void *data;
177  long dataSize;
178 
179  long useCount;
180 
181  TimeValue frameTime;
182  TimeValue frameDuration;
183  TimeValue timeScale;
184  };
188  {
189  long recordSize;
190 
191  void *next;
192 
193  ImageSequence seqID;
194  ImageSequenceDataSource sourceID;
195  OSType sourceType;
196  long sourceInputNumber;
197  void *dataPtr;
198  Handle dataDescription;
199  long changeSeed;
200  ICMConvertDataFormatUPP transferProc;
201  void *transferRefcon;
202  long dataSize;
203 
204  /* fields available in QT 3 and later */
205 
206  QHdrPtr dataQueue; /* queue of CDSequenceDataSourceQueueEntry structures*/
207 
208  void *originalDataPtr;
209  long originalDataSize;
210  Handle originalDataDescription;
211  long originalDataDescriptionSeed;
212  };
216  {
217  wide startTime;
218  long scale;
219  long duration;
220  };
221  typedef struct ICMFrameTimeInfo ICMFrameTimeInfo;
224  {
225  ImageSequence sequenceID; /* precompress,bandcompress */
226  ImageDescriptionHandle imageDescription; /* precompress,bandcompress */
227  Ptr data;
228  long bufferSize;
229  long frameNumber;
230  long startLine;
231  long stopLine;
232  long conditionFlags;
233  CodecFlags callerFlags;
234  CodecCapabilities *capabilities; /* precompress,bandcompress */
235  ICMProgressProcRecord progressProcRecord;
236  ICMCompletionProcRecord completionProcRecord;
237  ICMFlushProcRecord flushProcRecord;
238 
239  PixMap srcPixMap; /* precompress,bandcompress */
240  PixMap prevPixMap;
241  CodecQ spatialQuality;
242  CodecQ temporalQuality;
243  Fixed similarity;
244  DataRateParamsPtr dataRateParams;
245  long reserved;
246 
247  /* The following fields only exist for QuickTime 2.1 and greater */
248  UInt16 majorSourceChangeSeed;
249  UInt16 minorSourceChangeSeed;
250  CDSequenceDataSourcePtr sourceData;
251 
252  /* The following fields only exist for QuickTime 2.5 and greater */
253  long preferredPacketSizeInBytes;
254 
255  /* The following fields only exist for QuickTime 3.0 and greater */
256  long requestedBufferWidth; /* must set codecWantsSpecialScaling to indicate
257  this field is valid*/
258  long requestedBufferHeight; /* must set codecWantsSpecialScaling to indicate
259  this field is valid*/
260 
261  /* The following fields only exist for QuickTime 4.0 and greater */
262  OSType wantedSourcePixelType;
263 
264  /* The following fields only exist for QuickTime 5.0 and greater */
265  long compressedDataSize; /* if nonzero, this overrides
266  (*imageDescription)->dataSize*/
267  UInt32
268  taskWeight; /* preferred weight for MP tasks implementing this operation*/
269  OSType taskName; /* preferred name (type) for MP tasks implementing this
270  operation*/
271  };
274  {
275  ImageSequence sequenceID; /* predecompress,banddecompress */
276  ImageDescriptionHandle imageDescription; /* predecompress,banddecompress */
277  Ptr data;
278  long bufferSize;
279  long frameNumber;
280  long startLine;
281  long stopLine;
282  long conditionFlags;
283  CodecFlags callerFlags;
284  CodecCapabilities *capabilities; /* predecompress,banddecompress */
285  ICMProgressProcRecord progressProcRecord;
286  ICMCompletionProcRecord completionProcRecord;
287  ICMDataProcRecord dataProcRecord;
288 
289  CGrafPtr port; /* predecompress,banddecompress */
290  PixMap dstPixMap; /* predecompress,banddecompress */
291  BitMapPtr maskBits;
292  PixMapPtr mattePixMap;
293  Rect srcRect; /* predecompress,banddecompress */
294  MatrixRecord *matrix; /* predecompress,banddecompress */
295  CodecQ accuracy; /* predecompress,banddecompress */
296  short transferMode; /* predecompress,banddecompress */
297  ICMFrameTimePtr frameTime; /* banddecompress */
298  long reserved[1];
299 
300  /* The following fields only exist for QuickTime 2.0 and greater */
301  SInt8 matrixFlags; /* high bit set if 2x resize */
302  SInt8 matrixType;
303  Rect dstRect; /* only valid for simple transforms */
304 
305  /* The following fields only exist for QuickTime 2.1 and greater */
306  UInt16 majorSourceChangeSeed;
307  UInt16 minorSourceChangeSeed;
308  CDSequenceDataSourcePtr sourceData;
309 
310  RgnHandle maskRegion;
311 
312  /* The following fields only exist for QuickTime 2.5 and greater */
313  OSType *
314  *wantedDestinationPixelTypes; /* Handle to 0-terminated list of OSTypes */
315 
316  long screenFloodMethod;
317  long screenFloodValue;
318  short preferredOffscreenPixelSize;
319 
320  /* The following fields only exist for QuickTime 3.0 and greater */
321  ICMFrameTimeInfoPtr syncFrameTime; /* banddecompress */
322  Boolean needUpdateOnTimeChange; /* banddecompress */
323  Boolean enableBlackLining;
324  Boolean needUpdateOnSourceChange; /* band decompress */
325  Boolean pad;
326 
327  long unused;
328 
329  CGrafPtr finalDestinationPort;
330 
331  long requestedBufferWidth; /* must set codecWantsSpecialScaling to indicate
332  this field is valid*/
333  long requestedBufferHeight; /* must set codecWantsSpecialScaling to indicate
334  this field is valid*/
335 
336  /* The following fields only exist for QuickTime 4.0 and greater */
337  Rect displayableAreaOfRequestedBuffer; /* set in predecompress*/
338  Boolean requestedSingleField;
339  Boolean needUpdateOnNextIdle;
340  Boolean pad2[2];
341  Fixed bufferGammaLevel;
342 
343  /* The following fields only exist for QuickTime 5.0 and greater */
344  UInt32
345  taskWeight; /* preferred weight for MP tasks implementing this operation*/
346  OSType taskName; /* preferred name (type) for MP tasks implementing this
347  operation*/
348  };
350  enum
351  {
352  matrixFlagScale2x = 1L << 7,
353  matrixFlagScale1x = 1L << 6,
354  matrixFlagScaleHalf = 1L << 5
355  };
356 
357  enum
358  {
359  kScreenFloodMethodNone = 0,
360  kScreenFloodMethodKeyColor = 1,
361  kScreenFloodMethodAlpha = 2
362  };
363 
364  enum
365  {
366  kFlushLastQueuedFrame = 0,
367  kFlushFirstQueuedFrame = 1
368  };
369 
370  enum
371  {
372  kNewImageGWorldErase = 1L << 0
373  };
374 
375  typedef CALLBACK_API(void, ImageCodecTimeTriggerProcPtr)(void *refcon);
376  typedef CALLBACK_API(void, ImageCodecDrawBandCompleteProcPtr)(
377  void *refcon, ComponentResult drawBandResult, UInt32 drawBandCompleteFlags);
378  typedef STACK_UPP_TYPE(ImageCodecTimeTriggerProcPtr) ImageCodecTimeTriggerUPP;
379  typedef STACK_UPP_TYPE(ImageCodecDrawBandCompleteProcPtr)
380  ImageCodecDrawBandCompleteUPP;
389  ImageCodecTimeTriggerUPP
390  NewImageCodecTimeTriggerUPP(ImageCodecTimeTriggerProcPtr userRoutine);
391 #if !OPAQUE_UPP_TYPES
392  enum
393  {
394  uppImageCodecTimeTriggerProcInfo = 0x000000C0
395  }; /* pascal no_return_value Func(4_bytes) */
396 #ifdef __cplusplus
397  inline ImageCodecTimeTriggerUPP
398  NewImageCodecTimeTriggerUPP(ImageCodecTimeTriggerProcPtr userRoutine)
399  {
400  return (ImageCodecTimeTriggerUPP)NewRoutineDescriptor(
401  (ProcPtr)(userRoutine), uppImageCodecTimeTriggerProcInfo,
402  GetCurrentArchitecture());
403  }
404 #else
405 #define NewImageCodecTimeTriggerUPP(userRoutine) \
406  (ImageCodecTimeTriggerUPP) NewRoutineDescriptor( \
407  (ProcPtr)(userRoutine), uppImageCodecTimeTriggerProcInfo, \
408  GetCurrentArchitecture())
409 #endif
410 #endif
411 
420  ImageCodecDrawBandCompleteUPP
421  NewImageCodecDrawBandCompleteUPP(ImageCodecDrawBandCompleteProcPtr userRoutine);
422 #if !OPAQUE_UPP_TYPES
423  enum
424  {
425  uppImageCodecDrawBandCompleteProcInfo = 0x00000FC0
426  }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
427 #ifdef __cplusplus
428  inline ImageCodecDrawBandCompleteUPP NewImageCodecDrawBandCompleteUPP(
429  ImageCodecDrawBandCompleteProcPtr userRoutine)
430  {
431  return (ImageCodecDrawBandCompleteUPP)NewRoutineDescriptor(
432  (ProcPtr)(userRoutine), uppImageCodecDrawBandCompleteProcInfo,
433  GetCurrentArchitecture());
434  }
435 #else
436 #define NewImageCodecDrawBandCompleteUPP(userRoutine) \
437  (ImageCodecDrawBandCompleteUPP) NewRoutineDescriptor( \
438  (ProcPtr)(userRoutine), uppImageCodecDrawBandCompleteProcInfo, \
439  GetCurrentArchitecture())
440 #endif
441 #endif
442 
451  void
452  DisposeImageCodecTimeTriggerUPP(ImageCodecTimeTriggerUPP userUPP);
453 #if !OPAQUE_UPP_TYPES
454 #ifdef __cplusplus
455  inline void DisposeImageCodecTimeTriggerUPP(ImageCodecTimeTriggerUPP userUPP)
456  {
457  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
458  }
459 #else
460 #define DisposeImageCodecTimeTriggerUPP(userUPP) \
461  DisposeRoutineDescriptor(userUPP)
462 #endif
463 #endif
464 
473  void
474  DisposeImageCodecDrawBandCompleteUPP(ImageCodecDrawBandCompleteUPP userUPP);
475 #if !OPAQUE_UPP_TYPES
476 #ifdef __cplusplus
477  inline void
478  DisposeImageCodecDrawBandCompleteUPP(ImageCodecDrawBandCompleteUPP userUPP)
479  {
480  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
481  }
482 #else
483 #define DisposeImageCodecDrawBandCompleteUPP(userUPP) \
484  DisposeRoutineDescriptor(userUPP)
485 #endif
486 #endif
487 
496  void
497  InvokeImageCodecTimeTriggerUPP(void *refcon, ImageCodecTimeTriggerUPP userUPP);
498 #if !OPAQUE_UPP_TYPES
499 #ifdef __cplusplus
500  inline void InvokeImageCodecTimeTriggerUPP(void *refcon,
501  ImageCodecTimeTriggerUPP userUPP)
502  {
503  CALL_ONE_PARAMETER_UPP(userUPP, uppImageCodecTimeTriggerProcInfo, refcon);
504  }
505 #else
506 #define InvokeImageCodecTimeTriggerUPP(refcon, userUPP) \
507  CALL_ONE_PARAMETER_UPP((userUPP), uppImageCodecTimeTriggerProcInfo, (refcon))
508 #endif
509 #endif
510 
519  void
521  ComponentResult drawBandResult,
522  UInt32 drawBandCompleteFlags,
523  ImageCodecDrawBandCompleteUPP userUPP);
524 #if !OPAQUE_UPP_TYPES
525 #ifdef __cplusplus
527  void *refcon, ComponentResult drawBandResult, UInt32 drawBandCompleteFlags,
528  ImageCodecDrawBandCompleteUPP userUPP)
529  {
530  CALL_THREE_PARAMETER_UPP(userUPP, uppImageCodecDrawBandCompleteProcInfo,
531  refcon, drawBandResult, drawBandCompleteFlags);
532  }
533 #else
534 #define InvokeImageCodecDrawBandCompleteUPP(refcon, drawBandResult, \
535  drawBandCompleteFlags, userUPP) \
536  CALL_THREE_PARAMETER_UPP((userUPP), uppImageCodecDrawBandCompleteProcInfo, \
537  (refcon), (drawBandResult), \
538  (drawBandCompleteFlags))
539 #endif
540 #endif
541 
542 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
543 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
544 #define NewImageCodecTimeTriggerProc(userRoutine) \
545  NewImageCodecTimeTriggerUPP(userRoutine)
546 #define NewImageCodecDrawBandCompleteProc(userRoutine) \
547  NewImageCodecDrawBandCompleteUPP(userRoutine)
548 #define CallImageCodecTimeTriggerProc(userRoutine, refcon) \
549  InvokeImageCodecTimeTriggerUPP(refcon, userRoutine)
550 #define CallImageCodecDrawBandCompleteProc( \
551  userRoutine, refcon, drawBandResult, drawBandCompleteFlags) \
552  InvokeImageCodecDrawBandCompleteUPP(refcon, drawBandResult, \
553  drawBandCompleteFlags, userRoutine)
554 #endif /* CALL_NOT_IN_CARBON */
555 
557  {
558  long recordSize; /* sizeof(ImageSubCodecDecompressCapabilities)*/
559  long decompressRecordSize; /* size of your codec's decompress record*/
560  Boolean canAsync; /* default true*/
561  UInt8 pad0;
562  /* The following field only exists for QuickTime 4.1 and greater */
563  UInt16 suggestedQueueSize;
564  /* The following field only exists for QuickTime 4.0 and greater */
565  Boolean canProvideTrigger;
566 
567  /* The following fields only exist for QuickTime 5.0 and greater */
568  Boolean subCodecFlushesScreen; /* only used on Mac OS X*/
569  Boolean subCodecCallsDrawBandComplete;
570  UInt8 pad2[1];
571 
572  /* The following fields only exist for QuickTime 5.0.1 and greater */
573  Boolean isChildCodec; /* set by base codec before calling Initialize*/
574  UInt8 pad3[3];
575  };
578  enum
579  {
580  kCodecFrameTypeUnknown = 0,
581  kCodecFrameTypeKey = 1,
582  kCodecFrameTypeDifference = 2,
583  kCodecFrameTypeDroppableDifference = 3
584  };
585 
587  {
588  Ptr baseAddr;
589  long rowBytes;
590  Ptr codecData;
591  ICMProgressProcRecord progressProcRecord;
592  ICMDataProcRecord dataProcRecord;
593  void *userDecompressRecord; /* pointer to codec-specific per-band data*/
594  UInt8 frameType;
595  Boolean
596  inhibitMP; /* set this in BeginBand to tell the base decompressor not to
597  call DrawBand from an MP task for this frame. (Only has any
598  effect for MP-capable subcodecs. New in QuickTime 5.0.)*/
599  UInt8 pad[2];
600  long priv[2];
601 
602  /* The following fields only exist for QuickTime 5.0 and greater */
603  ImageCodecDrawBandCompleteUPP
604  drawBandCompleteUPP; /* only used if subcodec set
605  subCodecCallsDrawBandComplete; if
606  drawBandCompleteUPP is non-nil, codec must call it
607  when a frame is finished, but may return from
608  DrawBand before the frame is finished. */
609  void *drawBandCompleteRefCon; /* Note: do not call drawBandCompleteUPP
610  directly from a hardware interrupt; instead,
611  use DTInstall to run a function at deferred
612  task time, and call drawBandCompleteUPP from
613  that. */
614  };
627  {
628  SInt32 offset;
629  UInt32 rowBytes;
630  };
633  {
634  PlanarComponentInfo componentInfo[1];
635  };
636  typedef struct PlanarPixMapInfo PlanarPixMapInfo;
638  {
639  PlanarComponentInfo componentInfoY;
640  PlanarComponentInfo componentInfoU;
641  PlanarComponentInfo componentInfoV;
642  };
645  {
646  PlanarComponentInfo componentInfoY;
647  PlanarComponentInfo componentInfoCb;
648  PlanarComponentInfo componentInfoCr;
649  };
651  /* name of parameters or effect -- placed in root container, required */
652  enum
653  {
654  kParameterTitleName = FOUR_CHAR_CODE('name'),
655  kParameterTitleID = 1
656  };
657 
658  /* codec sub-type of parameters or effect -- placed in root container, required
659  */
660  enum
661  {
662  kParameterWhatName = FOUR_CHAR_CODE('what'),
663  kParameterWhatID = 1
664  };
665 
666  /* effect version -- placed in root container, optional, but recommended */
667  enum
668  {
669  kParameterVersionName = FOUR_CHAR_CODE('vers'),
670  kParameterVersionID = 1
671  };
672 
673  /* is effect repeatable -- placed in root container, optional, default is TRUE*/
674  enum
675  {
676  kParameterRepeatableName = FOUR_CHAR_CODE('pete'),
677  kParameterRepeatableID = 1
678  };
679 
680  enum
681  {
682  kParameterRepeatableTrue = 1,
683  kParameterRepeatableFalse = 0
684  };
685 
686  /* substitution codec in case effect is missing -- placed in root container,
687  * recommended */
688  enum
689  {
690  kParameterAlternateCodecName = FOUR_CHAR_CODE('subs'),
691  kParameterAlternateCodecID = 1
692  };
693 
694  /* maximum number of sources -- placed in root container, required */
695  enum
696  {
697  kParameterSourceCountName = FOUR_CHAR_CODE('srcs'),
698  kParameterSourceCountID = 1
699  };
700 
701  enum
702  {
703  kParameterDependencyName = FOUR_CHAR_CODE('deep'),
704  kParameterDependencyID = 1
705  };
706 
707  enum
708  {
709  kParameterListDependsUponColorProfiles = FOUR_CHAR_CODE('prof'),
710  kParameterListDependsUponFonts = FOUR_CHAR_CODE('font')
711  };
712 
714  {
715  long dependCount;
716  OSType depends[1];
717  };
723  enum
724  {
725  kParameterEnumList = FOUR_CHAR_CODE('enum')
726  };
727 
729  {
730  long value;
731  Str255 name;
732  };
733  typedef struct EnumValuePair EnumValuePair;
735  {
736  long enumCount; /* number of enumeration items to follow*/
737  EnumValuePair values[1]; /* values and names for them, packed */
738  };
739  typedef struct EnumListRecord EnumListRecord;
740  /* atom type of parameter*/
741  enum
742  {
743  kParameterAtomTypeAndID = FOUR_CHAR_CODE('type')
744  };
745 
746  enum
747  {
748  kNoAtom = FOUR_CHAR_CODE('none'), /* atom type for no data got/set*/
749  kAtomNoFlags = 0x00000000,
750  kAtomNotInterpolated = 0x00000001, /* atom can never be interpolated*/
751  kAtomInterpolateIsOptional = 0x00000002, /* atom can be interpolated, but it
752  is an advanced user operation*/
753  kAtomMayBeIndexed = 0x00000004 /* more than one value of atom can exist with
754  accending IDs (ie, lists of colors)*/
755  };
756 
758  {
759  QTAtomType atomType; /* type of atom this data comes from/goes into*/
760  QTAtomID atomID; /* ID of atom this data comes from/goes into*/
761  long atomFlags; /* options for this atom*/
762  Str255 atomName; /* name of this value type*/
763  };
765  /* data type of a parameter*/
766  enum
767  {
768  kParameterDataType = FOUR_CHAR_CODE('data')
769  };
770 
771  enum
772  {
773  kParameterTypeDataLong = kTweenTypeLong, /* integer value*/
774  kParameterTypeDataFixed = kTweenTypeFixed, /* fixed point value*/
775  kParameterTypeDataRGBValue = kTweenTypeRGBColor, /* RGBColor data*/
776  kParameterTypeDataDouble =
777  kTweenTypeQTFloatDouble, /* IEEE 64 bit floating point value*/
778  kParameterTypeDataText = FOUR_CHAR_CODE('text'), /* editable text item*/
779  kParameterTypeDataEnum = FOUR_CHAR_CODE('enum'), /* enumerated lookup value*/
780  kParameterTypeDataBitField = FOUR_CHAR_CODE(
781  'bool'), /* bit field value (something that holds boolean(s))*/
782  kParameterTypeDataImage =
783  FOUR_CHAR_CODE('imag') /* reference to an image via Picture data*/
784  };
785 
787  {
788  OSType dataType; /* type of data this item is stored as*/
789  };
790  typedef struct ParameterDataType ParameterDataType;
796  enum
797  {
798  kParameterAlternateDataType = FOUR_CHAR_CODE('alt1'),
799  kParameterTypeDataColorValue = FOUR_CHAR_CODE(
800  'cmlr'), /* CMColor data (supported on machines with ColorSync)*/
801  kParameterTypeDataCubic =
802  FOUR_CHAR_CODE('cubi'), /* cubic bezier(s) (no built-in support)*/
803  kParameterTypeDataNURB =
804  FOUR_CHAR_CODE('nurb') /* nurb(s) (no built-in support)*/
805  };
806 
808  {
809  OSType dataType; /* type of data this item is stored as*/
810  QTAtomType alternateAtom; /* where to store*/
811  };
814  {
815  long numEntries;
816  ParameterAlternateDataEntry entries[1];
817  };
819  /* legal values for the parameter*/
820  enum
821  {
822  kParameterDataRange = FOUR_CHAR_CODE('rang')
823  };
824 
825  enum
826  {
827  kNoMinimumLongFixed = 0x7FFFFFFF, /* ignore minimum/maxiumum values*/
828  kNoMaximumLongFixed = (long)0x80000000,
829  kNoScaleLongFixed = 0, /* don't perform any scaling of value*/
830  kNoPrecision = (-1) /* allow as many digits as format*/
831  };
832 
833  /* 'text'*/
835  {
836  long maxChars; /* maximum length of string*/
837  long maxLines; /* number of editing lines to use (1 typical, 0 to default)*/
838  };
839  typedef struct StringRangeRecord StringRangeRecord;
840  /* 'long'*/
842  {
843  long minValue; /* no less than this*/
844  long maxValue; /* no more than this*/
845  long scaleValue; /* muliply content by this going in, divide going out*/
846  long precisionDigits; /* # digits of precision when editing via typing*/
847  };
848  typedef struct LongRangeRecord LongRangeRecord;
849  /* 'enum'*/
851  {
852  long enumID; /* 'enum' list in root container to search within*/
853  };
854  typedef struct EnumRangeRecord EnumRangeRecord;
855  /* 'fixd'*/
857  {
858  Fixed minValue; /* no less than this*/
859  Fixed maxValue; /* no more than this*/
860  Fixed scaleValue; /* muliply content by this going in, divide going out*/
861  long precisionDigits; /* # digits of precision when editing via typing*/
862  };
863  typedef struct FixedRangeRecord FixedRangeRecord;
864  /* 'doub'*/
865 
866 #define kNoMinimumDouble (NAN) /* ignore minimum/maxiumum values */
867 #define kNoMaximumDouble (NAN)
868 #define kNoScaleDouble (0) /* don't perform any scaling of value */
870  {
871  QTFloatDouble minValue; /* no less than this */
872  QTFloatDouble maxValue; /* no more than this */
873  QTFloatDouble
874  scaleValue; /* muliply content by this going in, divide going out */
875  long precisionDigits; /* # digits of precision when editing via typing */
876  };
877  typedef struct DoubleRangeRecord DoubleRangeRecord;
878 
879  /* 'bool' */
881  {
882  long maskValue; /* value to mask on/off to set/clear the boolean*/
883  };
884  typedef struct BooleanRangeRecord BooleanRangeRecord;
885  /* 'rgb '*/
887  {
888  RGBColor minColor;
889  RGBColor maxColor;
890  };
891  typedef struct RGBRangeRecord RGBRangeRecord;
892  /* 'imag'*/
893  enum
894  {
895  kParameterImageNoFlags = 0,
896  kParameterImageIsPreset = 1
897  };
898 
899  enum
900  {
901  kStandardPresetGroup = FOUR_CHAR_CODE('pset')
902  };
903 
905  {
906  long imageFlags;
907  OSType fileType; /* file type to contain the preset group (normally
908  kStandardPresetGroup)*/
909  long replacedAtoms; /* # atoms at this level replaced by this preset group*/
910  };
911  typedef struct ImageRangeRecord ImageRangeRecord;
912  /* union of all of the above*/
913 
915  {
916  union
917  {
918  LongRangeRecord longRange;
919  EnumRangeRecord enumRange;
920  FixedRangeRecord fixedRange;
921  DoubleRangeRecord doubleRange;
922  StringRangeRecord stringRange;
923  BooleanRangeRecord booleanRange;
924  RGBRangeRecord rgbRange;
925  ImageRangeRecord imageRange;
926  } u;
927  };
929 
930  /* UI behavior of a parameter*/
931  enum
932  {
933  kParameterDataBehavior = FOUR_CHAR_CODE('ditl')
934  };
935 
936  enum
937  {
938  /* items edited via typing*/
939  kParameterItemEditText = FOUR_CHAR_CODE('edit'), /* edit text box*/
940  kParameterItemEditLong = FOUR_CHAR_CODE('long'), /* long number editing box*/
941  kParameterItemEditFixed =
942  FOUR_CHAR_CODE('fixd'), /* fixed point number editing box*/
943  kParameterItemEditDouble =
944  FOUR_CHAR_CODE('doub'), /* double number editing box*/
945  /* items edited via control(s)*/
946  kParameterItemPopUp = FOUR_CHAR_CODE('popu'), /* pop up value for enum types*/
947  kParameterItemRadioCluster =
948  FOUR_CHAR_CODE('radi'), /* radio cluster for enum types*/
949  kParameterItemCheckBox = FOUR_CHAR_CODE('chex'), /* check box for booleans*/
950  kParameterItemControl = FOUR_CHAR_CODE(
951  'cntl'), /* item controlled via a standard control of some type*/
952  /* special user items*/
953  kParameterItemLine = FOUR_CHAR_CODE('line'), /* line*/
954  kParameterItemColorPicker = FOUR_CHAR_CODE('pick'), /* color swatch & picker*/
955  kParameterItemGroupDivider =
956  FOUR_CHAR_CODE('divi'), /* start of a new group of items*/
957  kParameterItemStaticText =
958  FOUR_CHAR_CODE('stat'), /* display "parameter name" as static text*/
959  kParameterItemDragImage =
960  FOUR_CHAR_CODE('imag'), /* allow image display, along with drag and drop*/
961  /* flags valid for lines and groups*/
962  kGraphicsNoFlags = 0x00000000, /* no options for graphics*/
963  kGraphicsFlagsGray = 0x00000001, /* draw lines with gray*/
964  /* flags valid for groups*/
965  kGroupNoFlags = 0x00000000, /* no options for group -- may be combined with
966  graphics options */
967  kGroupAlignText = 0x00010000, /* edit text items in group have the same size*/
968  kGroupSurroundBox = 0x00020000, /* group should be surrounded with a box*/
969  kGroupMatrix = 0x00040000, /* side-by-side arrangement of group is okay*/
970  kGroupNoName =
971  0x00080000, /* name of group should not be displayed above box*/
972  /* flags valid for popup/radiocluster/checkbox/control*/
973  kDisableControl = 0x00000001,
974  kDisableWhenNotEqual = (0x00000000 + kDisableControl),
975  kDisableWhenEqual = (0x00000010 + kDisableControl),
976  kDisableWhenLessThan = (0x00000020 + kDisableControl),
977  kDisableWhenGreaterThan =
978  (0x00000030 + kDisableControl), /* flags valid for popups*/
979  kPopupStoreAsString = 0x00010000
980  };
981 
983  {
984  QTAtomID groupID; /* group under control of this item*/
985  long controlValue; /* control value for comparison purposes*/
986  };
987  typedef struct ControlBehaviors ControlBehaviors;
989  {
990  OSType behaviorType;
991  long behaviorFlags;
992  union
993  {
994  ControlBehaviors controls;
995  } u;
996  };
998  /* higher level purpose of a parameter or set of parameters*/
999  enum
1000  {
1001  kParameterDataUsage = FOUR_CHAR_CODE('use ')
1002  };
1003 
1004  enum
1005  {
1006  kParameterUsagePixels = FOUR_CHAR_CODE('pixl'),
1007  kParameterUsageRectangle = FOUR_CHAR_CODE('rect'),
1008  kParameterUsagePoint = FOUR_CHAR_CODE('xy '),
1009  kParameterUsage3DPoint = FOUR_CHAR_CODE('xyz '),
1010  kParameterUsageDegrees = FOUR_CHAR_CODE('degr'),
1011  kParameterUsageRadians = FOUR_CHAR_CODE('rads'),
1012  kParameterUsagePercent = FOUR_CHAR_CODE('pcnt'),
1013  kParameterUsageSeconds = FOUR_CHAR_CODE('secs'),
1014  kParameterUsageMilliseconds = FOUR_CHAR_CODE('msec'),
1015  kParameterUsageMicroseconds = FOUR_CHAR_CODE('�sec'),
1016  kParameterUsage3by3Matrix = FOUR_CHAR_CODE('3by3'),
1017  kParameterUsageCircularDegrees = FOUR_CHAR_CODE('degc'),
1018  kParameterUsageCircularRadians = FOUR_CHAR_CODE('radc')
1019  };
1020 
1022  {
1023  OSType usageType; /* higher level purpose of the data or group*/
1024  };
1025  typedef struct ParameterDataUsage ParameterDataUsage;
1026  /* default value(s) for a parameter*/
1027  enum
1028  {
1029  kParameterDataDefaultItem = FOUR_CHAR_CODE('dflt')
1030  };
1031 
1032  /* atoms that help to fill in data within the info window */
1033  enum
1034  {
1035  kParameterInfoLongName = FOUR_CHAR_CODE('�nam'),
1036  kParameterInfoCopyright = FOUR_CHAR_CODE('�cpy'),
1037  kParameterInfoDescription = FOUR_CHAR_CODE('�inf'),
1038  kParameterInfoWindowTitle = FOUR_CHAR_CODE('�wnt'),
1039  kParameterInfoPicture = FOUR_CHAR_CODE('�pix'),
1040  kParameterInfoManufacturer = FOUR_CHAR_CODE('�man'),
1041  kParameterInfoIDs = 1
1042  };
1043 
1044  /* flags for ImageCodecValidateParameters */
1045  enum
1046  {
1047  kParameterValidationNoFlags = 0x00000000,
1048  kParameterValidationFinalValidation = 0x00000001
1049  };
1050 
1051  typedef long QTParameterValidationOptions;
1052  /* QTAtomTypes for atoms in image compressor settings containers*/
1053  enum
1054  {
1055  kImageCodecSettingsFieldCount =
1056  FOUR_CHAR_CODE('fiel'), /* Number of fields (UInt8) */
1057  kImageCodecSettingsFieldOrdering =
1058  FOUR_CHAR_CODE('fdom'), /* Ordering of fields (UInt8)*/
1059  kImageCodecSettingsFieldOrderingF1F2 = 1,
1060  kImageCodecSettingsFieldOrderingF2F1 = 2
1061  };
1062 
1063  /* Additional Image Description Extensions*/
1064  enum
1065  {
1066  kColorInfoImageDescriptionExtension = FOUR_CHAR_CODE(
1067  'colr'), /* image description extension describing the color properties */
1068  kPixelAspectRatioImageDescriptionExtension =
1069  FOUR_CHAR_CODE('pasp'), /* image description extension describing the
1070  pixel aspect ratio*/
1071  kCleanApertureImageDescriptionExtension = FOUR_CHAR_CODE(
1072  'clap') /* image description extension describing the pixel aspect ratio*/
1073  };
1074 
1075  /* Color Info Image Description Extension types*/
1076  enum
1077  {
1078  kVideoColorInfoImageDescriptionExtensionType =
1079  FOUR_CHAR_CODE('nclc'), /* For video color descriptions (defined below) */
1080  kICCProfileColorInfoImageDescriptionExtensionType = FOUR_CHAR_CODE(
1081  'prof') /* For ICC Profile color descriptions (not defined here)*/
1082  };
1083 
1084  /* Video Color Info Image Description Extensions*/
1086  {
1087  OSType colorParamType; /* Type of color parameter 'nclc' */
1088  UInt16 primaries; /* CIE 1931 xy chromaticity coordinates */
1089  UInt16 transferFunction; /* Nonlinear transfer function from RGB to ErEgEb */
1090  UInt16 matrix; /* Matrix from ErEgEb to EyEcbEcr */
1091  };
1094  /* Primaries*/
1095  enum
1096  {
1097  kQTPrimaries_ITU_R709_2 =
1098  1, /* ITU-R BT.709-2, SMPTE 274M-1995, and SMPTE 296M-1997 */
1099  kQTPrimaries_Unknown = 2, /* Unknown */
1100  kQTPrimaries_EBU_3213 = 5, /* EBU Tech. 3213 (1981) */
1101  kQTPrimaries_SMPTE_C = 6 /* SMPTE C Primaries from SMPTE RP 145-1993 */
1102  };
1103 
1104  /* Transfer Function*/
1105  enum
1106  {
1107  kQTTransferFunction_ITU_R709_2 =
1108  1, /* Recommendation ITU-R BT.709-2, SMPTE 274M-1995, SMPTE 296M-1997,
1109  SMPTE 293M-1996 and SMPTE 170M-1994 */
1110  kQTTransferFunction_Unknown = 2, /* Unknown */
1111  kQTTransferFunction_SMPTE_240M_1995 =
1112  7 /* SMPTE 240M-1995 and interim color implementation of SMPTE 274M-1995
1113  */
1114  };
1115 
1116  /* Matrix*/
1117  enum
1118  {
1119  kQTMatrix_ITU_R_709_2 = 1, /* Recommendation ITU-R BT.709-2 (1125/60/2:1
1120  only), SMPTE 274M-1995 and SMPTE 296M-1997 */
1121  kQTMatrix_Unknown = 2, /* Unknown */
1122  kQTMatrix_ITU_R_601_4 =
1123  6, /* Recommendation ITU-R BT.601-4, Recommendation ITU-R BT.470-4 System
1124  B and G, SMPTE 170M-1994 and SMPTE 293M-1996 */
1125  kQTMatrix_SMPTE_240M_1995 = 7 /* SMPTE 240M-1995 and interim color
1126  implementation of SMPTE 274M-1995 */
1127  };
1128 
1129  /* Field/Frame Info Image Description (this remaps to
1130  * FieldInfoImageDescriptionExtension)*/
1132  {
1133  UInt8 fields;
1134  UInt8 detail;
1135  };
1138  enum
1139  {
1140  kQTFieldsProgressiveScan = 1,
1141  kQTFieldsInterlaced = 2
1142  };
1143 
1144  enum
1145  {
1146  kQTFieldDetailUnknown = 0,
1147  kQTFieldDetailTemporalTopFirst = 1,
1148  kQTFieldDetailTemporalBottomFirst = 6,
1149  kQTFieldDetailSpatialFirstLineEarly = 9,
1150  kQTFieldDetailSpatialFirstLineLate = 14
1151  };
1152 
1153  /* Pixel Aspect Ratio Image Description Extensions*/
1155  {
1156  UInt32 hSpacing; /* Horizontal Spacing */
1157  UInt32 vSpacing; /* Vertical Spacing */
1158  };
1161  /* Clean Aperture Image Description Extensions*/
1163  {
1164  UInt32
1165  cleanApertureWidthN; /* width of clean aperture, numerator, denominator */
1166  UInt32 cleanApertureWidthD;
1167  UInt32 cleanApertureHeightN; /* height of clean aperture, numerator,
1168  denominator*/
1169  UInt32 cleanApertureHeightD;
1170  UInt32 horizOffN; /* horizontal offset of clean aperture center minus
1171  (width-1)/2, numerator, denominator */
1172  UInt32 horizOffD;
1173  UInt32 vertOffN; /* vertical offset of clean aperture center minus
1174  (height-1)/2, numerator, denominator */
1175  UInt32 vertOffD;
1176  };
1179  typedef CALLBACK_API(ComponentResult, ImageCodecMPDrawBandProcPtr)(
1180  void *refcon, ImageSubCodecDecompressRecord *drp);
1181  typedef STACK_UPP_TYPE(ImageCodecMPDrawBandProcPtr) ImageCodecMPDrawBandUPP;
1190  ImageCodecMPDrawBandUPP
1191  NewImageCodecMPDrawBandUPP(ImageCodecMPDrawBandProcPtr userRoutine);
1192 #if !OPAQUE_UPP_TYPES
1193  enum
1194  {
1195  uppImageCodecMPDrawBandProcInfo = 0x000003F0
1196  }; /* pascal 4_bytes Func(4_bytes, 4_bytes) */
1197 #ifdef __cplusplus
1198  inline ImageCodecMPDrawBandUPP
1199  NewImageCodecMPDrawBandUPP(ImageCodecMPDrawBandProcPtr userRoutine)
1200  {
1201  return (ImageCodecMPDrawBandUPP)NewRoutineDescriptor(
1202  (ProcPtr)(userRoutine), uppImageCodecMPDrawBandProcInfo,
1203  GetCurrentArchitecture());
1204  }
1205 #else
1206 #define NewImageCodecMPDrawBandUPP(userRoutine) \
1207  (ImageCodecMPDrawBandUPP) NewRoutineDescriptor( \
1208  (ProcPtr)(userRoutine), uppImageCodecMPDrawBandProcInfo, \
1209  GetCurrentArchitecture())
1210 #endif
1211 #endif
1212 
1221  void
1222  DisposeImageCodecMPDrawBandUPP(ImageCodecMPDrawBandUPP userUPP);
1223 #if !OPAQUE_UPP_TYPES
1224 #ifdef __cplusplus
1225  inline void DisposeImageCodecMPDrawBandUPP(ImageCodecMPDrawBandUPP userUPP)
1226  {
1227  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1228  }
1229 #else
1230 #define DisposeImageCodecMPDrawBandUPP(userUPP) \
1231  DisposeRoutineDescriptor(userUPP)
1232 #endif
1233 #endif
1234 
1243  ComponentResult
1245  ImageCodecMPDrawBandUPP userUPP);
1246 #if !OPAQUE_UPP_TYPES
1247 #ifdef __cplusplus
1248  inline ComponentResult
1250  ImageCodecMPDrawBandUPP userUPP)
1251  {
1252  return (ComponentResult)CALL_TWO_PARAMETER_UPP(
1253  userUPP, uppImageCodecMPDrawBandProcInfo, refcon, drp);
1254  }
1255 #else
1256 #define InvokeImageCodecMPDrawBandUPP(refcon, drp, userUPP) \
1257  (ComponentResult) CALL_TWO_PARAMETER_UPP( \
1258  (userUPP), uppImageCodecMPDrawBandProcInfo, (refcon), (drp))
1259 #endif
1260 #endif
1261 
1262 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
1263 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
1264 #define NewImageCodecMPDrawBandProc(userRoutine) \
1265  NewImageCodecMPDrawBandUPP(userRoutine)
1266 #define CallImageCodecMPDrawBandProc(userRoutine, refcon, drp) \
1267  InvokeImageCodecMPDrawBandUPP(refcon, drp, userRoutine)
1268 #endif /* CALL_NOT_IN_CARBON */
1269 
1270  /* codec selectors 0-127 are reserved by Apple */
1271  /* codec selectors 128-191 are subtype specific */
1272  /* codec selectors 192-255 are vendor specific */
1273  /* codec selectors 256-32767 are available for general use */
1274  /* negative selectors are reserved by the Component Manager */
1284  ComponentResult
1286 
1296  ComponentResult
1298  const Rect *srcRect, short depth,
1299  CodecQ *spatialQuality, CodecQ *temporalQuality,
1300  unsigned long *time);
1301 
1311  ComponentResult
1313  const Rect *srcRect, short depth,
1314  CodecQ quality, long *size);
1315 
1325  ComponentResult
1327 
1337  ComponentResult
1339 
1349  ComponentResult
1351 
1361  ComponentResult
1363 
1373  ComponentResult
1374  ImageCodecBusy(ComponentInstance ci, ImageSequence seq);
1375 
1385  ComponentResult
1387  ImageDescriptionHandle desc, Ptr data,
1388  long bufferSize, ICMDataProcRecordPtr dataProc,
1389  long *dataSize);
1390 
1400  ComponentResult
1402  const Rect *srcRect, ImageDescriptionHandle desc,
1403  Ptr data, Fixed *similarity);
1404 
1414  ComponentResult
1416  Ptr inData, long inBufferSize,
1417  ICMDataProcRecordPtr dataProc, Ptr outData,
1418  long outBufferSize, ICMFlushProcRecordPtr flushProc,
1419  Rect *trimRect, ICMProgressProcRecordPtr progressProc);
1420 
1430  ComponentResult
1432  ModalFilterUPP filterProc);
1433 
1443  ComponentResult
1445 
1455  ComponentResult
1457 
1467  ComponentResult
1469 
1479  ComponentResult
1480  ImageCodecSetTimeCode(ComponentInstance ci, void *timeCodeFormat,
1481  void *timeCodeTime);
1482 
1492  ComponentResult
1494  ImageDescriptionHandle newDesc,
1495  Boolean *equivalent);
1496 
1506  ComponentResult
1507  ImageCodecNewMemory(ComponentInstance ci, Ptr *data, Size dataSize,
1508  long dataUse, ICMMemoryDisposedUPP memoryGoneProc,
1509  void *refCon);
1510 
1520  ComponentResult
1522 
1532  ComponentResult
1534  void *data, Size dataSize, Point where, Boolean *hit);
1535 
1545  ComponentResult
1547  CodecDecompressParams *params, long flags,
1548  ICMMemoryDisposedUPP memoryGoneProc,
1549  void *refCon);
1550 
1560  ComponentResult
1562  void *data1, long dataSize1,
1563  ImageDescriptionHandle desc1, void *data2,
1564  long dataSize2, ImageDescriptionHandle desc2,
1565  void *outputData, long *outDataSize,
1566  ImageDescriptionHandle descOut);
1567 
1577  ComponentResult
1579  ComponentInstance ci, PixMapHandle src, const Rect *srcRect, short depth,
1580  CodecQ quality, CDSequenceDataSourcePtr sourceData, long *size);
1581 
1591  ComponentResult
1593 
1603  ComponentResult
1604  ImageCodecSourceChanged(ComponentInstance ci, UInt32 majorSourceChangeSeed,
1605  UInt32 minorSourceChangeSeed,
1606  CDSequenceDataSourcePtr sourceData, long *flagsOut);
1607 
1617  ComponentResult
1619 
1629  ComponentResult
1631 
1641  ComponentResult
1643  Handle *parameterDescriptionHandle);
1644 
1654  ComponentResult
1656  QTAtomContainer *parameterDescription);
1657 
1667  ComponentResult
1669  QTAtomContainer parameterDescription,
1670  QTAtomContainer parameters,
1671  QTParameterDialogOptions dialogOptions,
1672  DialogPtr existingDialog,
1673  short existingUserItem,
1674  QTParameterDialog *createdDialog);
1675 
1685  ComponentResult
1687  EventRecord *pEvent,
1688  QTParameterDialog createdDialog);
1689 
1699  ComponentResult
1701  QTParameterDialog createdDialog);
1702 
1712  ComponentResult
1714  QTParameterDialog createdDialog,
1715  long action, void *params);
1716 
1726  ComponentResult
1728  GWorldPtr *newGW, long flags);
1729 
1739  ComponentResult
1741 
1751  ComponentResult
1753  ImageDescriptionHandle desc, void *data,
1754  Size dataSize, Point where, long *hit,
1755  long hitFlags);
1756 
1766  ComponentResult
1767  ImageCodecValidateParameters(ComponentInstance ci, QTAtomContainer parameters,
1768  QTParameterValidationOptions validationFlags,
1769  StringPtr errorString);
1770 
1780  ComponentResult
1782  ComponentMPWorkFunctionUPP *workFunction,
1783  void **refCon, ImageCodecMPDrawBandUPP drawProc,
1784  void *drawProcRefCon);
1785 
1795  ComponentResult
1797  Fixed dstGammaLevel, long *codecCanMatch);
1798 
1808  ComponentResult
1810  Fixed *sourceDataGammaLevel);
1811 
1821  ComponentResult
1823 
1833  ComponentResult
1835 
1845  ComponentResult
1848 
1858  ComponentResult
1860  ImageSubCodecDecompressRecord *drp, long flags);
1861 
1871  ComponentResult
1873 
1883  ComponentResult
1885  OSErr result, long flags);
1886 
1896  ComponentResult
1898 
1908  ComponentResult
1910 
1920  ComponentResult
1923 
1933  ComponentResult
1936  ImageCodecTimeTriggerUPP triggerProc,
1937  void *triggerProcRefCon);
1938 
1948  ComponentResult
1950 
1951  /* selectors for component calls */
1952  enum
1953  {
1954  kImageCodecGetCodecInfoSelect = 0x0000,
1955  kImageCodecGetCompressionTimeSelect = 0x0001,
1956  kImageCodecGetMaxCompressionSizeSelect = 0x0002,
1957  kImageCodecPreCompressSelect = 0x0003,
1958  kImageCodecBandCompressSelect = 0x0004,
1959  kImageCodecPreDecompressSelect = 0x0005,
1960  kImageCodecBandDecompressSelect = 0x0006,
1961  kImageCodecBusySelect = 0x0007,
1962  kImageCodecGetCompressedImageSizeSelect = 0x0008,
1963  kImageCodecGetSimilaritySelect = 0x0009,
1964  kImageCodecTrimImageSelect = 0x000A,
1965  kImageCodecRequestSettingsSelect = 0x000B,
1966  kImageCodecGetSettingsSelect = 0x000C,
1967  kImageCodecSetSettingsSelect = 0x000D,
1968  kImageCodecFlushSelect = 0x000E,
1969  kImageCodecSetTimeCodeSelect = 0x000F,
1970  kImageCodecIsImageDescriptionEquivalentSelect = 0x0010,
1971  kImageCodecNewMemorySelect = 0x0011,
1972  kImageCodecDisposeMemorySelect = 0x0012,
1973  kImageCodecHitTestDataSelect = 0x0013,
1974  kImageCodecNewImageBufferMemorySelect = 0x0014,
1975  kImageCodecExtractAndCombineFieldsSelect = 0x0015,
1976  kImageCodecGetMaxCompressionSizeWithSourcesSelect = 0x0016,
1977  kImageCodecSetTimeBaseSelect = 0x0017,
1978  kImageCodecSourceChangedSelect = 0x0018,
1979  kImageCodecFlushFrameSelect = 0x0019,
1980  kImageCodecGetSettingsAsTextSelect = 0x001A,
1981  kImageCodecGetParameterListHandleSelect = 0x001B,
1982  kImageCodecGetParameterListSelect = 0x001C,
1983  kImageCodecCreateStandardParameterDialogSelect = 0x001D,
1984  kImageCodecIsStandardParameterDialogEventSelect = 0x001E,
1985  kImageCodecDismissStandardParameterDialogSelect = 0x001F,
1986  kImageCodecStandardParameterDialogDoActionSelect = 0x0020,
1987  kImageCodecNewImageGWorldSelect = 0x0021,
1988  kImageCodecDisposeImageGWorldSelect = 0x0022,
1989  kImageCodecHitTestDataWithFlagsSelect = 0x0023,
1990  kImageCodecValidateParametersSelect = 0x0024,
1991  kImageCodecGetBaseMPWorkFunctionSelect = 0x0025,
1992  kImageCodecRequestGammaLevelSelect = 0x0028,
1993  kImageCodecGetSourceDataGammaLevelSelect = 0x0029,
1994  kImageCodecGetDecompressLatencySelect = 0x002B,
1995  kImageCodecPreflightSelect = 0x0200,
1996  kImageCodecInitializeSelect = 0x0201,
1997  kImageCodecBeginBandSelect = 0x0202,
1998  kImageCodecDrawBandSelect = 0x0203,
1999  kImageCodecEndBandSelect = 0x0204,
2000  kImageCodecQueueStartingSelect = 0x0205,
2001  kImageCodecQueueStoppingSelect = 0x0206,
2002  kImageCodecDroppingFrameSelect = 0x0207,
2003  kImageCodecScheduleFrameSelect = 0x0208,
2004  kImageCodecCancelTriggerSelect = 0x0209
2005  };
2006 
2007  enum
2008  {
2009  kMotionJPEGTag = FOUR_CHAR_CODE('mjpg'),
2010  kJPEGQuantizationTablesImageDescriptionExtension = FOUR_CHAR_CODE('mjqt'),
2011  kJPEGHuffmanTablesImageDescriptionExtension = FOUR_CHAR_CODE('mjht'),
2012  kFieldInfoImageDescriptionExtension =
2013  FOUR_CHAR_CODE('fiel') /* image description extension describing the field
2014  count and field orderings*/
2015  };
2016 
2017  enum
2018  {
2019  kFieldOrderUnknown = 0,
2020  kFieldsStoredF1F2DisplayedF1F2 = 1,
2021  kFieldsStoredF1F2DisplayedF2F1 = 2,
2022  kFieldsStoredF2F1DisplayedF1F2 = 5,
2023  kFieldsStoredF2F1DisplayedF2F1 = 6
2024  };
2025 
2027  {
2028  long unused;
2029  long tag;
2030  long fieldSize;
2031  long paddedFieldSize;
2032  long offsetToNextField;
2033  long qTableOffset;
2034  long huffmanTableOffset;
2035  long sofOffset;
2036  long sosOffset;
2037  long soiOffset;
2038  };
2041  {
2042  UInt8 fieldCount;
2043  UInt8 fieldOrderings;
2044  };
2045  typedef struct FieldInfoImageDescriptionExtension
2047 
2057  ComponentResult
2058  QTPhotoSetSampling(ComponentInstance codec, short yH, short yV, short cbH,
2059  short cbV, short crH, short crV);
2060 
2070  ComponentResult
2072  unsigned short restartInterval);
2073 
2083  ComponentResult
2084  QTPhotoDefineHuffmanTable(ComponentInstance codec, short componentNumber,
2085  Boolean isDC, unsigned char *lengthCounts,
2086  unsigned char *values);
2087 
2097  ComponentResult
2099  unsigned char *table);
2100 
2101  /* selectors for component calls */
2102  enum
2103  {
2104  kQTPhotoSetSamplingSelect = 0x0100,
2105  kQTPhotoSetRestartIntervalSelect = 0x0101,
2106  kQTPhotoDefineHuffmanTableSelect = 0x0102,
2107  kQTPhotoDefineQuantizationTableSelect = 0x0103
2108  };
2109 
2110  /* source identifier -- placed in root container of description, one or more
2111  * required */
2112  enum
2113  {
2114  kEffectSourceName = FOUR_CHAR_CODE('src ')
2115  };
2116 
2117  /* source type -- placed in the input map to identify the source kind */
2118  enum
2119  {
2120  kEffectDataSourceType = FOUR_CHAR_CODE('dtst')
2121  };
2122 
2123  /* default effect types */
2124  enum
2125  {
2126  kEffectRawSource = 0, /* the source is raw image data*/
2127  kEffectGenericType =
2128  FOUR_CHAR_CODE('geff') /* generic effect for combining others*/
2129  };
2130 
2131  typedef struct EffectSource EffectSource;
2132 
2133  typedef EffectSource *EffectSourcePtr;
2135  {
2137  EffectSourcePtr effect;
2138  };
2139  typedef union SourceData SourceData;
2140 
2142  {
2143  long effectType; /* type of effect or kEffectRawSource if raw ICM data*/
2144  Ptr data; /* track data for this effect*/
2145  SourceData source; /* source/effect pointers*/
2146  EffectSourcePtr next; /* the next source for the parent effect*/
2147 
2148  /* fields added for QuickTime 4.0*/
2149  TimeValue lastTranslatedFrameTime; /* start frame time of last converted
2150  frame, may be -1*/
2151  TimeValue
2152  lastFrameDuration; /* duration of the last converted frame, may be zero*/
2153  TimeValue lastFrameTimeScale; /* time scale of this source frame, only has
2154  meaning if above fields are valid*/
2155  };
2156 
2158  {
2159  ICMFrameTimeRecord frameTime; /* timing data*/
2160  long effectDuration; /* the duration of a single effect frame*/
2161  Boolean doAsync; /* set to true if the effect can go async*/
2162  unsigned char pad[3];
2163  EffectSourcePtr source; /* ptr to the source input tree*/
2164  void *refCon; /* storage for the effect*/
2165  };
2166  typedef struct EffectsFrameParams EffectsFrameParams;
2168 
2178  ComponentResult
2180 
2190  ComponentResult
2192  EffectsFrameParamsPtr ePtr);
2193 
2203  ComponentResult
2205 
2215  ComponentResult
2217  ComponentInstance effect, EffectSourcePtr sourceToConvert,
2218  ImageDescriptionHandle requestedDesc);
2219 
2229  ComponentResult
2231 
2241  ComponentResult
2242  ImageCodecEffectGetSpeed(ComponentInstance effect, QTAtomContainer parameters,
2243  Fixed *pFPS);
2244 
2245  enum
2246  {
2247  kSMPTENoFlag = 0,
2248  kSMPTESmoothEdgeFlag = 0x01, /* smooth edges of the stroke*/
2249  kSMPTEStrokeEdgeFlag = 0x02 /* stroke edge with color*/
2250  };
2251 
2252  typedef long SMPTEFlags;
2253  typedef long SMPTEFrameReference;
2254  enum
2255  {
2256  kSlideHorizontalWipe = 1,
2257  kSlideVerticalWipe = 2,
2258  kTopLeftWipe = 3,
2259  kTopRightWipe = 4,
2260  kBottomRightWipe = 5,
2261  kBottomLeftWipe = 6,
2262  kFourCornerWipe = 7,
2263  kFourBoxWipe = 8,
2264  kBarnVerticalWipe = 21,
2265  kBarnHorizontalWipe = 22,
2266  kTopCenterWipe = 23,
2267  kRightCenterWipe = 24,
2268  kBottomCenterWipe = 25,
2269  kLeftCenterWipe = 26,
2270  kDiagonalLeftDownWipe = 41,
2271  kDiagonalRightDownWipe = 42,
2272  kTopBottomBowTieWipe = 43,
2273  kLeftRightBowTieWipe = 44,
2274  kDiagonalLeftOutWipe = 45,
2275  kDiagonalRightOutWipe = 46,
2276  kDiagonalCrossWipe = 47,
2277  kDiagonalBoxWipe = 48,
2278  kFilledVWipe = 61,
2279  kFilledVRightWipe = 62,
2280  kFilledVBottomWipe = 63,
2281  kFilledVLeftWipe = 64,
2282  kHollowVWipe = 65,
2283  kHollowVRightWipe = 66,
2284  kHollowVBottomWipe = 67,
2285  kHollowVLeftWipe = 68,
2286  kVerticalZigZagWipe = 71,
2287  kHorizontalZigZagWipe = 72,
2288  kVerticalBarnZigZagWipe = 73,
2289  kHorizontalBarnZigZagWipe = 74
2290  };
2291 
2292  enum
2293  {
2294  kRectangleWipe = 101,
2295  kDiamondWipe = 102,
2296  kTriangleWipe = 103,
2297  kTriangleRightWipe = 104,
2298  kTriangleUpsideDownWipe = 105,
2299  kTriangleLeftWipe = 106,
2300  kSpaceShipWipe = 107,
2301  kSpaceShipRightWipe = 108,
2302  kSpaceShipUpsideDownWipe = 109,
2303  kSpaceShipLeftWipe = 110,
2304  kPentagonWipe = 111,
2305  kPentagonUpsideDownWipe = 112,
2306  kHexagonWipe = 113,
2307  kHexagonSideWipe = 114,
2308  kCircleWipe = 119,
2309  kOvalWipe = 120,
2310  kOvalSideWipe = 121,
2311  kCatEyeWipe = 122,
2312  kCatEyeSideWipe = 123,
2313  kRoundRectWipe = 124,
2314  kRoundRectSideWipe = 125,
2315  kFourPointStarWipe = 127,
2316  kFivePointStarWipe = 128,
2317  kStarOfDavidWipe = 129,
2318  kHeartWipe = 130,
2319  kKeyholeWipe = 131
2320  };
2321 
2322  enum
2323  {
2324  kRotatingTopWipe = 201,
2325  kRotatingRightWipe = 202,
2326  kRotatingBottomWipe = 203,
2327  kRotatingLeftWipe = 204,
2328  kRotatingTopBottomWipe = 205,
2329  kRotatingLeftRightWipe = 206,
2330  kRotatingQuadrantWipe = 207,
2331  kTopToBottom180Wipe = 211,
2332  kRightToLeft180Wipe = 212,
2333  kTopToBottom90Wipe = 213,
2334  kRightToLeft90Wipe = 214,
2335  kTop180Wipe = 221,
2336  kRight180Wipe = 222,
2337  kBottom180Wipe = 223,
2338  kLeft180Wipe = 224,
2339  kCounterRotatingTopBottomWipe = 225,
2340  kCounterRotatingLeftRightWipe = 226,
2341  kDoubleRotatingTopBottomWipe = 227,
2342  kDoubleRotatingLeftRightWipe = 228,
2343  kVOpenTopWipe = 231,
2344  kVOpenRightWipe = 232,
2345  kVOpenBottomWipe = 233,
2346  kVOpenLeftWipe = 234,
2347  kVOpenTopBottomWipe = 235,
2348  kVOpenLeftRightWipe = 236,
2349  kRotatingTopLeftWipe = 241,
2350  kRotatingBottomLeftWipe = 242,
2351  kRotatingBottomRightWipe = 243,
2352  kRotatingTopRightWipe = 244,
2353  kRotatingTopLeftBottomRightWipe = 245,
2354  kRotatingBottomLeftTopRightWipe = 246,
2355  kRotatingTopLeftRightWipe = 251,
2356  kRotatingLeftTopBottomWipe = 252,
2357  kRotatingBottomLeftRightWipe = 253,
2358  kRotatingRightTopBottomWipe = 254,
2359  kRotatingDoubleCenterRightWipe = 261,
2360  kRotatingDoubleCenterTopWipe = 262,
2361  kRotatingDoubleCenterTopBottomWipe = 263,
2362  kRotatingDoubleCenterLeftRightWipe = 264
2363  };
2364 
2365  enum
2366  {
2367  kHorizontalMatrixWipe = 301,
2368  kVerticalMatrixWipe = 302,
2369  kTopLeftDiagonalMatrixWipe = 303,
2370  kTopRightDiagonalMatrixWipe = 304,
2371  kBottomRightDiagonalMatrixWipe = 305,
2372  kBottomLeftDiagonalMatrixWipe = 306,
2373  kClockwiseTopLeftMatrixWipe = 310,
2374  kClockwiseTopRightMatrixWipe = 311,
2375  kClockwiseBottomRightMatrixWipe = 312,
2376  kClockwiseBottomLeftMatrixWipe = 313,
2377  kCounterClockwiseTopLeftMatrixWipe = 314,
2378  kCounterClockwiseTopRightMatrixWipe = 315,
2379  kCounterClockwiseBottomRightMatrixWipe = 316,
2380  kCounterClockwiseBottomLeftMatrixWipe = 317,
2381  kVerticalStartTopMatrixWipe = 320,
2382  kVerticalStartBottomMatrixWipe = 321,
2383  kVerticalStartTopOppositeMatrixWipe = 322,
2384  kVerticalStartBottomOppositeMatrixWipe = 323,
2385  kHorizontalStartLeftMatrixWipe = 324,
2386  kHorizontalStartRightMatrixWipe = 325,
2387  kHorizontalStartLeftOppositeMatrixWipe = 326,
2388  kHorizontalStartRightOppositeMatrixWipe = 327,
2389  kDoubleDiagonalTopRightMatrixWipe = 328,
2390  kDoubleDiagonalBottomRightMatrixWipe = 329,
2391  kDoubleSpiralTopMatixWipe = 340,
2392  kDoubleSpiralBottomMatixWipe = 341,
2393  kDoubleSpiralLeftMatixWipe = 342,
2394  kDoubleSpiralRightMatixWipe = 343,
2395  kQuadSpiralVerticalMatixWipe = 344,
2396  kQuadSpiralHorizontalMatixWipe = 345,
2397  kVerticalWaterfallLeftMatrixWipe = 350,
2398  kVerticalWaterfallRightMatrixWipe = 351,
2399  kHorizontalWaterfallLeftMatrixWipe = 352,
2400  kHorizontalWaterfallRightMatrixWipe = 353,
2401  kRandomWipe = 409, /* non-SMPTE standard numbers*/
2402  kRandomWipeGroupWipe = 501,
2403  kRandomIrisGroupWipe = 502,
2404  kRandomRadialGroupWipe = 503,
2405  kRandomMatrixGroupWipe = 504
2406  };
2407 
2408  typedef unsigned long SMPTEWipeType;
2418  ComponentResult
2420  PixMapPtr destPixMap,
2421  SMPTEFrameReference *returnValue);
2422 
2432  ComponentResult
2434  SMPTEFrameReference frameRef);
2435 
2445  ComponentResult
2447  SMPTEFrameReference frameRef,
2448  Fixed effectPercentageEven,
2449  Fixed effectPercentageOdd, Rect *pSourceRect,
2450  MatrixRecord *pMatrix,
2451  SMPTEWipeType effectNumber, long xRepeat,
2452  long yRepeat, SMPTEFlags flags, Fixed penWidth,
2453  long strokeValue);
2454 
2455  /* selectors for component calls */
2456  enum
2457  {
2458  kImageCodecEffectSetupSelect = 0x0300,
2459  kImageCodecEffectBeginSelect = 0x0301,
2460  kImageCodecEffectRenderFrameSelect = 0x0302,
2461  kImageCodecEffectConvertEffectSourceToFormatSelect = 0x0303,
2462  kImageCodecEffectCancelSelect = 0x0304,
2463  kImageCodecEffectGetSpeedSelect = 0x0305,
2464  kImageCodecEffectPrepareSMPTEFrameSelect = 0x0100,
2465  kImageCodecEffectDisposeSMPTEFrameSelect = 0x0101,
2466  kImageCodecEffectRenderSMPTEFrameSelect = 0x0102
2467  };
2468 
2469  /* curve atom types and data structures */
2470  enum
2471  {
2472  kCurvePathAtom = FOUR_CHAR_CODE('path'),
2473  kCurveEndAtom = FOUR_CHAR_CODE('zero'),
2474  kCurveAntialiasControlAtom = FOUR_CHAR_CODE('anti'),
2475  kCurveAntialiasOff = 0,
2476  kCurveAntialiasOn = (long)0xFFFFFFFF,
2477  kCurveFillTypeAtom = FOUR_CHAR_CODE('fill'),
2478  kCurvePenThicknessAtom = FOUR_CHAR_CODE('pent'),
2479  kCurveMiterLimitAtom = FOUR_CHAR_CODE('mitr'),
2480  kCurveJoinAttributesAtom = FOUR_CHAR_CODE('join'),
2481  kCurveMinimumDepthAtom = FOUR_CHAR_CODE('mind'),
2482  kCurveDepthAlwaysOffscreenMask = (long)0x80000000,
2483  kCurveTransferModeAtom = FOUR_CHAR_CODE('xfer'),
2484  kCurveGradientAngleAtom = FOUR_CHAR_CODE('angl'),
2485  kCurveGradientRadiusAtom = FOUR_CHAR_CODE('radi'),
2486  kCurveGradientOffsetAtom = FOUR_CHAR_CODE('cent')
2487  };
2488 
2489  enum
2490  {
2491  kCurveARGBColorAtom = FOUR_CHAR_CODE('argb')
2492  };
2493 
2494  struct ARGBColor
2495  {
2496  unsigned short alpha;
2497  unsigned short red;
2498  unsigned short green;
2499  unsigned short blue;
2500  };
2501  typedef struct ARGBColor ARGBColor;
2502  enum
2503  {
2504  kCurveGradientRecordAtom = FOUR_CHAR_CODE('grad')
2505  };
2506 
2508  {
2509  ARGBColor thisColor;
2510  Fixed endingPercentage;
2511  };
2514  enum
2515  {
2516  kCurveGradientTypeAtom = FOUR_CHAR_CODE('grdt')
2517  };
2518 
2519  /* currently supported gradient types */
2520  enum
2521  {
2522  kLinearGradient = 0,
2523  kCircularGradient = 1
2524  };
2525 
2526  typedef long GradientType;
2536  ComponentResult
2537  CurveGetLength(ComponentInstance effect, gxPaths *target, long index,
2538  wide *wideLength);
2539 
2549  ComponentResult
2550  CurveLengthToPoint(ComponentInstance effect, gxPaths *target, long index,
2551  Fixed length, FixedPoint *location, FixedPoint *tangent);
2552 
2562  ComponentResult
2563  CurveNewPath(ComponentInstance effect, Handle *pPath);
2564 
2574  ComponentResult
2576  unsigned long contourIndex, unsigned long *pCount);
2577 
2587  ComponentResult
2589  unsigned long contourIndex, unsigned long pointIndex,
2590  gxPoint *thePoint, Boolean *ptIsOnPath);
2591 
2601  ComponentResult
2603  Handle thePath, unsigned long contourIndex,
2604  unsigned long pointIndex, Boolean ptIsOnPath);
2605 
2615  ComponentResult
2617  unsigned long contourIndex, unsigned long pointIndex,
2618  gxPoint *thePoint, Boolean ptIsOnPath);
2619 
2629  ComponentResult
2631  FixedPoint *thePoint, unsigned long *contourIndex,
2632  unsigned long *pointIndex, Fixed *theDelta);
2633 
2643  ComponentResult
2645  Fixed endDist, FixedPoint *thePoint, Fixed *pLength);
2646 
2656  ComponentResult
2657  CurveCreateVectorStream(ComponentInstance effect, Handle *pStream);
2658 
2668  ComponentResult
2670  Size atomSize, void *pAtomData, Handle vectorStream);
2671 
2681  ComponentResult
2683  Handle vectorStream);
2684 
2694  ComponentResult
2696 
2706  ComponentResult
2708  long atomType, long *dataSize, Ptr *dataPtr);
2709 
2710  /* selectors for component calls */
2711  enum
2712  {
2713  kCurveGetLengthSelect = 0x0100,
2714  kCurveLengthToPointSelect = 0x0101,
2715  kCurveNewPathSelect = 0x0102,
2716  kCurveCountPointsInPathSelect = 0x0103,
2717  kCurveGetPathPointSelect = 0x0104,
2718  kCurveInsertPointIntoPathSelect = 0x0105,
2719  kCurveSetPathPointSelect = 0x0106,
2720  kCurveGetNearestPathPointSelect = 0x0107,
2721  kCurvePathPointToLengthSelect = 0x0108,
2722  kCurveCreateVectorStreamSelect = 0x0109,
2723  kCurveAddAtomToVectorStreamSelect = 0x010A,
2724  kCurveAddPathAtomToVectorStreamSelect = 0x010B,
2725  kCurveAddZeroAtomToVectorStreamSelect = 0x010C,
2726  kCurveGetAtomDataFromVectorStreamSelect = 0x010D
2727  };
2728  /* UPP call backs */
2729 
2730 #if PRAGMA_STRUCT_ALIGN
2731 #pragma options align = reset
2732 #elif PRAGMA_STRUCT_PACKPUSH
2733 #pragma pack(pop)
2734 #elif PRAGMA_STRUCT_PACK
2735 #pragma pack()
2736 #endif
2737 
2738 #ifdef PRAGMA_IMPORT_OFF
2739 #pragma import off
2740 #elif PRAGMA_IMPORT
2741 #pragma import reset
2742 #endif
2743 
2744 #ifdef __cplusplus
2745 }
2746 #endif
2747 
2748 #endif /* __IMAGECODEC__ */
@ pLength
Definition: ASRegistry.h:124
Component Manager Interfaces.
QuickDraw GX object and constant definitions.
ComponentResult QTPhotoSetRestartInterval(ComponentInstance codec, unsigned short restartInterval)
ComponentResult ImageCodecDisposeMemory(ComponentInstance ci, Ptr data)
ComponentResult CurveAddPathAtomToVectorStream(ComponentInstance effect, Handle pathData, Handle vectorStream)
ComponentResult ImageCodecPreCompress(ComponentInstance ci, CodecCompressParams *params)
ComponentResult ImageCodecEffectRenderSMPTEFrame(ComponentInstance effect, PixMapPtr destPixMap, SMPTEFrameReference frameRef, Fixed effectPercentageEven, Fixed effectPercentageOdd, Rect *pSourceRect, MatrixRecord *pMatrix, SMPTEWipeType effectNumber, long xRepeat, long yRepeat, SMPTEFlags flags, Fixed penWidth, long strokeValue)
ComponentResult CurveSetPathPoint(ComponentInstance effect, gxPaths *aPath, unsigned long contourIndex, unsigned long pointIndex, gxPoint *thePoint, Boolean ptIsOnPath)
ComponentResult ImageCodecGetParameterList(ComponentInstance ci, QTAtomContainer *parameterDescription)
ImageCodecTimeTriggerUPP NewImageCodecTimeTriggerUPP(ImageCodecTimeTriggerProcPtr userRoutine)
ComponentResult QTPhotoDefineQuantizationTable(ComponentInstance codec, short componentNumber, unsigned char *table)
ComponentResult ImageCodecSetTimeCode(ComponentInstance ci, void *timeCodeFormat, void *timeCodeTime)
ComponentResult CurvePathPointToLength(ComponentInstance ci, gxPaths *aPath, Fixed startDist, Fixed endDist, FixedPoint *thePoint, Fixed *pLength)
ComponentResult ImageCodecNewImageGWorld(ComponentInstance ci, CodecDecompressParams *params, GWorldPtr *newGW, long flags)
ComponentResult CurveGetLength(ComponentInstance effect, gxPaths *target, long index, wide *wideLength)
ComponentResult CurveLengthToPoint(ComponentInstance effect, gxPaths *target, long index, Fixed length, FixedPoint *location, FixedPoint *tangent)
ComponentResult CurveInsertPointIntoPath(ComponentInstance effect, gxPoint *aPoint, Handle thePath, unsigned long contourIndex, unsigned long pointIndex, Boolean ptIsOnPath)
ComponentResult InvokeImageCodecMPDrawBandUPP(void *refcon, ImageSubCodecDecompressRecord *drp, ImageCodecMPDrawBandUPP userUPP)
ComponentResult ImageCodecBandDecompress(ComponentInstance ci, CodecDecompressParams *params)
ComponentResult CurveGetNearestPathPoint(ComponentInstance effect, gxPaths *aPath, FixedPoint *thePoint, unsigned long *contourIndex, unsigned long *pointIndex, Fixed *theDelta)
ComponentResult ImageCodecDisposeImageGWorld(ComponentInstance ci, GWorldPtr theGW)
ComponentResult ImageCodecHitTestDataWithFlags(ComponentInstance ci, ImageDescriptionHandle desc, void *data, Size dataSize, Point where, long *hit, long hitFlags)
ComponentResult CurveGetPathPoint(ComponentInstance effect, gxPaths *aPath, unsigned long contourIndex, unsigned long pointIndex, gxPoint *thePoint, Boolean *ptIsOnPath)
void DisposeImageCodecMPDrawBandUPP(ImageCodecMPDrawBandUPP userUPP)
ComponentResult ImageCodecEffectPrepareSMPTEFrame(ComponentInstance effect, PixMapPtr destPixMap, SMPTEFrameReference *returnValue)
ComponentResult ImageCodecIsImageDescriptionEquivalent(ComponentInstance ci, ImageDescriptionHandle newDesc, Boolean *equivalent)
ComponentResult ImageCodecEffectBegin(ComponentInstance effect, CodecDecompressParams *p, EffectsFrameParamsPtr ePtr)
ComponentResult ImageCodecGetMaxCompressionSizeWithSources(ComponentInstance ci, PixMapHandle src, const Rect *srcRect, short depth, CodecQ quality, CDSequenceDataSourcePtr sourceData, long *size)
ImageCodecMPDrawBandUPP NewImageCodecMPDrawBandUPP(ImageCodecMPDrawBandProcPtr userRoutine)
ComponentResult ImageCodecFlush(ComponentInstance ci)
ComponentResult ImageCodecEffectGetSpeed(ComponentInstance effect, QTAtomContainer parameters, Fixed *pFPS)
ComponentResult ImageCodecGetParameterListHandle(ComponentInstance ci, Handle *parameterDescriptionHandle)
ComponentResult ImageCodecExtractAndCombineFields(ComponentInstance ci, long fieldFlags, void *data1, long dataSize1, ImageDescriptionHandle desc1, void *data2, long dataSize2, ImageDescriptionHandle desc2, void *outputData, long *outDataSize, ImageDescriptionHandle descOut)
ComponentResult ImageCodecCreateStandardParameterDialog(ComponentInstance ci, QTAtomContainer parameterDescription, QTAtomContainer parameters, QTParameterDialogOptions dialogOptions, DialogPtr existingDialog, short existingUserItem, QTParameterDialog *createdDialog)
ComponentResult ImageCodecSetSettings(ComponentInstance ci, Handle settings)
ComponentResult ImageCodecGetSimilarity(ComponentInstance ci, PixMapHandle src, const Rect *srcRect, ImageDescriptionHandle desc, Ptr data, Fixed *similarity)
ComponentResult ImageCodecRequestSettings(ComponentInstance ci, Handle settings, Rect *rp, ModalFilterUPP filterProc)
ComponentResult CurveNewPath(ComponentInstance effect, Handle *pPath)
ComponentResult ImageCodecGetCodecInfo(ComponentInstance ci, CodecInfo *info)
ComponentResult ImageCodecDroppingFrame(ComponentInstance ci, const ImageSubCodecDecompressRecord *drp)
ComponentResult QTPhotoDefineHuffmanTable(ComponentInstance codec, short componentNumber, Boolean isDC, unsigned char *lengthCounts, unsigned char *values)
ComponentResult ImageCodecIsStandardParameterDialogEvent(ComponentInstance ci, EventRecord *pEvent, QTParameterDialog createdDialog)
ComponentResult ImageCodecDismissStandardParameterDialog(ComponentInstance ci, QTParameterDialog createdDialog)
ComponentResult ImageCodecDrawBand(ComponentInstance ci, ImageSubCodecDecompressRecord *drp)
ComponentResult QTPhotoSetSampling(ComponentInstance codec, short yH, short yV, short cbH, short cbV, short crH, short crV)
ComponentResult ImageCodecGetSettingsAsText(ComponentInstance ci, Handle *text)
ComponentResult ImageCodecNewMemory(ComponentInstance ci, Ptr *data, Size dataSize, long dataUse, ICMMemoryDisposedUPP memoryGoneProc, void *refCon)
ComponentResult ImageCodecPreDecompress(ComponentInstance ci, CodecDecompressParams *params)
ComponentResult ImageCodecValidateParameters(ComponentInstance ci, QTAtomContainer parameters, QTParameterValidationOptions validationFlags, StringPtr errorString)
void InvokeImageCodecDrawBandCompleteUPP(void *refcon, ComponentResult drawBandResult, UInt32 drawBandCompleteFlags, ImageCodecDrawBandCompleteUPP userUPP)
ComponentResult CurveCreateVectorStream(ComponentInstance effect, Handle *pStream)
ComponentResult ImageCodecGetCompressionTime(ComponentInstance ci, PixMapHandle src, const Rect *srcRect, short depth, CodecQ *spatialQuality, CodecQ *temporalQuality, unsigned long *time)
ComponentResult ImageCodecQueueStarting(ComponentInstance ci)
ComponentResult ImageCodecStandardParameterDialogDoAction(ComponentInstance ci, QTParameterDialog createdDialog, long action, void *params)
ComponentResult ImageCodecEffectRenderFrame(ComponentInstance effect, EffectsFrameParamsPtr p)
ComponentResult CurveAddZeroAtomToVectorStream(ComponentInstance effect, Handle vectorStream)
ComponentResult ImageCodecEffectSetup(ComponentInstance effect, CodecDecompressParams *p)
ComponentResult ImageCodecQueueStopping(ComponentInstance ci)
void InvokeImageCodecTimeTriggerUPP(void *refcon, ImageCodecTimeTriggerUPP userUPP)
ComponentResult ImageCodecCancelTrigger(ComponentInstance ci)
ComponentResult ImageCodecTrimImage(ComponentInstance ci, ImageDescriptionHandle Desc, Ptr inData, long inBufferSize, ICMDataProcRecordPtr dataProc, Ptr outData, long outBufferSize, ICMFlushProcRecordPtr flushProc, Rect *trimRect, ICMProgressProcRecordPtr progressProc)
ComponentResult ImageCodecInitialize(ComponentInstance ci, ImageSubCodecDecompressCapabilities *cap)
ComponentResult ImageCodecGetCompressedImageSize(ComponentInstance ci, ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, long *dataSize)
ComponentResult ImageCodecBeginBand(ComponentInstance ci, CodecDecompressParams *params, ImageSubCodecDecompressRecord *drp, long flags)
ComponentResult ImageCodecGetDecompressLatency(ComponentInstance ci, TimeRecord *latency)
ComponentResult ImageCodecGetBaseMPWorkFunction(ComponentInstance ci, ComponentMPWorkFunctionUPP *workFunction, void **refCon, ImageCodecMPDrawBandUPP drawProc, void *drawProcRefCon)
ComponentResult ImageCodecEffectConvertEffectSourceToFormat(ComponentInstance effect, EffectSourcePtr sourceToConvert, ImageDescriptionHandle requestedDesc)
ComponentResult ImageCodecGetSourceDataGammaLevel(ComponentInstance ci, Fixed *sourceDataGammaLevel)
ComponentResult ImageCodecHitTestData(ComponentInstance ci, ImageDescriptionHandle desc, void *data, Size dataSize, Point where, Boolean *hit)
ComponentResult ImageCodecSourceChanged(ComponentInstance ci, UInt32 majorSourceChangeSeed, UInt32 minorSourceChangeSeed, CDSequenceDataSourcePtr sourceData, long *flagsOut)
ComponentResult ImageCodecRequestGammaLevel(ComponentInstance ci, Fixed srcGammaLevel, Fixed dstGammaLevel, long *codecCanMatch)
ComponentResult ImageCodecBusy(ComponentInstance ci, ImageSequence seq)
ComponentResult ImageCodecEffectDisposeSMPTEFrame(ComponentInstance effect, SMPTEFrameReference frameRef)
ComponentResult ImageCodecBandCompress(ComponentInstance ci, CodecCompressParams *params)
ComponentResult ImageCodecSetTimeBase(ComponentInstance ci, void *base)
ComponentResult CurveAddAtomToVectorStream(ComponentInstance effect, OSType atomType, Size atomSize, void *pAtomData, Handle vectorStream)
ComponentResult ImageCodecNewImageBufferMemory(ComponentInstance ci, CodecDecompressParams *params, long flags, ICMMemoryDisposedUPP memoryGoneProc, void *refCon)
ComponentResult ImageCodecFlushFrame(ComponentInstance ci, UInt32 flags)
ComponentResult ImageCodecGetSettings(ComponentInstance ci, Handle settings)
ComponentResult ImageCodecEndBand(ComponentInstance ci, ImageSubCodecDecompressRecord *drp, OSErr result, long flags)
ComponentResult ImageCodecPreflight(ComponentInstance ci, CodecDecompressParams *params)
ComponentResult CurveGetAtomDataFromVectorStream(ComponentInstance effect, Handle vectorStream, long atomType, long *dataSize, Ptr *dataPtr)
ComponentResult ImageCodecGetMaxCompressionSize(ComponentInstance ci, PixMapHandle src, const Rect *srcRect, short depth, CodecQ quality, long *size)
void DisposeImageCodecTimeTriggerUPP(ImageCodecTimeTriggerUPP userUPP)
void DisposeImageCodecDrawBandCompleteUPP(ImageCodecDrawBandCompleteUPP userUPP)
ComponentResult ImageCodecEffectCancel(ComponentInstance effect, EffectsFrameParamsPtr p)
ImageCodecDrawBandCompleteUPP NewImageCodecDrawBandCompleteUPP(ImageCodecDrawBandCompleteProcPtr userRoutine)
ComponentResult CurveCountPointsInPath(ComponentInstance effect, gxPaths *aPath, unsigned long contourIndex, unsigned long *pCount)
ComponentResult ImageCodecScheduleFrame(ComponentInstance ci, const ImageSubCodecDecompressRecord *drp, ImageCodecTimeTriggerUPP triggerProc, void *triggerProcRefCon)
QuickTime Image Compression Interfaces.
Basic Macintosh data types.
long Fixed
Definition: MacTypes.h:153
unsigned char * StringPtr
Definition: MacTypes.h:477
unsigned char Boolean
Definition: MacTypes.h:318
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
#define STACK_UPP_TYPE(name)
Definition: MixedMode.h:734
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
QuickTime Interfaces.
Interface to Quickdraw Graphics.
Definition: ImageCodec.h:2495
Definition: Quickdraw.h:279
Definition: ImageCodec.h:881
Definition: ImageCodec.h:171
Definition: ImageCodec.h:188
Definition: Quickdraw.h:2261
Definition: ImageCodec.h:1163
Definition: ImageCodec.h:129
Definition: ImageCodec.h:224
Definition: ImageCodec.h:274
Definition: ImageCompression.h:459
Definition: Components.h:220
Definition: ImageCodec.h:983
Definition: ImageCompression.h:422
Definition: ImageCodec.h:870
Definition: ImageCodec.h:2142
Definition: ImageCodec.h:2158
Definition: ImageCodec.h:735
Definition: ImageCodec.h:851
Definition: ImageCodec.h:729
Definition: Events.h:224
Definition: ImageCodec.h:1132
Definition: ImageCodec.h:2041
Definition: MacTypes.h:536
Definition: ImageCodec.h:857
Definition: ImageCodec.h:2508
Definition: Quickdraw.h:1648
Definition: ImageCompression.h:394
Definition: ImageCompression.h:401
Definition: ImageCompression.h:408
Definition: ImageCodec.h:216
Definition: ImageCompression.h:546
Definition: ImageCompression.h:387
Definition: ImageCompression.h:433
Definition: ImageCodec.h:905
Definition: ImageCodec.h:557
Definition: ImageCodec.h:587
Definition: ImageCodec.h:842
Definition: Quickdraw.h:306
Definition: ImageCompression.h:68
Definition: ImageCodec.h:2027
Definition: ImageCodec.h:1086
Definition: ImageCodec.h:808
Definition: ImageCodec.h:814
Definition: ImageCodec.h:758
Definition: ImageCodec.h:989
Definition: ImageCodec.h:787
Definition: ImageCodec.h:1022
Definition: ImageCodec.h:714
Definition: ImageCodec.h:915
Definition: Quickdraw.h:2064
Definition: ImageCodec.h:1155
Definition: ImageCodec.h:627
Definition: ImageCodec.h:633
Definition: ImageCodec.h:638
Definition: ImageCodec.h:645
Definition: MacTypes.h:520
Definition: PPCToolbox.h:168
Definition: OSUtils.h:154
Definition: Quickdraw.h:1710
Definition: ImageCodec.h:887
Definition: MacTypes.h:527
Definition: ImageCodec.h:835
Definition: MacTypes.h:585
Definition: GXTypes.h:194
Definition: GXMath.h:61
Definition: MacTypes.h:104
Definition: ImageCodec.h:2135