topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-ImageCompression.h / h



  /*
       File:       ImageCompression.h
   
       Contains:   QuickTime Interfaces.
   
       Version:    Technology: QuickTime 6.0
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1990-2001 by Apple Computer, Inc., all rights reserved
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __IMAGECOMPRESSION__
  define __IMAGECOMPRESSION__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __QUICKDRAW__
  include <Quickdraw.h>
  endif
  
  ifndef __QDOFFSCREEN__
  include <QDOffscreen.h>
  endif
  
  ifndef __COMPONENTS__
  include <Components.h>
  endif
  
  ifndef __STANDARDFILE__
  include <StandardFile.h>
  endif
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  struct MatrixRecord {
      Fixed                           matrix[3][3];
  };
  typedef struct MatrixRecord             MatrixRecord;
  typedef MatrixRecord *                  MatrixRecordPtr;
  enum {
      kRawCodecType               = FOUR_CHAR_CODE('raw '),
      kCinepakCodecType           = FOUR_CHAR_CODE('cvid'),
      kGraphicsCodecType          = FOUR_CHAR_CODE('smc '),
      kAnimationCodecType         = FOUR_CHAR_CODE('rle '),
      kVideoCodecType             = FOUR_CHAR_CODE('rpza'),
      kComponentVideoCodecType    = FOUR_CHAR_CODE('yuv2'),
      kJPEGCodecType              = FOUR_CHAR_CODE('jpeg'),
      kMotionJPEGACodecType       = FOUR_CHAR_CODE('mjpa'),
      kMotionJPEGBCodecType       = FOUR_CHAR_CODE('mjpb'),
      kSGICodecType               = FOUR_CHAR_CODE('.SGI'),
      kPlanarRGBCodecType         = FOUR_CHAR_CODE('8BPS'),
      kMacPaintCodecType          = FOUR_CHAR_CODE('PNTG'),
      kGIFCodecType               = FOUR_CHAR_CODE('gif '),
      kPhotoCDCodecType           = FOUR_CHAR_CODE('kpcd'),
      kQuickDrawGXCodecType       = FOUR_CHAR_CODE('qdgx'),
      kAVRJPEGCodecType           = FOUR_CHAR_CODE('avr '),
      kOpenDMLJPEGCodecType       = FOUR_CHAR_CODE('dmb1'),
      kBMPCodecType               = FOUR_CHAR_CODE('WRLE'),
      kWindowsRawCodecType        = FOUR_CHAR_CODE('WRAW'),
      kVectorCodecType            = FOUR_CHAR_CODE('path'),
      kQuickDrawCodecType         = FOUR_CHAR_CODE('qdrw'),
      kWaterRippleCodecType       = FOUR_CHAR_CODE('ripl'),
      kFireCodecType              = FOUR_CHAR_CODE('fire'),
      kCloudCodecType             = FOUR_CHAR_CODE('clou'),
      kH261CodecType              = FOUR_CHAR_CODE('h261'),
      kH263CodecType              = FOUR_CHAR_CODE('h263'),
      kDVCNTSCCodecType           = FOUR_CHAR_CODE('dvc '),       /* DV - NTSC and DVCPRO NTSC (available in QuickTime 6.0 or later)*/
                                                                  /* NOTE: kDVCProNTSCCodecType is deprecated.  */
                                                                  /* Use kDVCNTSCCodecType instead -- as far as the codecs are concerned, */
                                                                  /* the two data formats are identical.*/
      kDVCPALCodecType            = FOUR_CHAR_CODE('dvcp'),
      kDVCProPALCodecType         = FOUR_CHAR_CODE('dvpp'),       /* available in QuickTime 6.0 or later*/
      kBaseCodecType              = FOUR_CHAR_CODE('base'),
      kFLCCodecType               = FOUR_CHAR_CODE('flic'),
      kTargaCodecType             = FOUR_CHAR_CODE('tga '),
      kPNGCodecType               = FOUR_CHAR_CODE('png '),
      kTIFFCodecType              = FOUR_CHAR_CODE('tiff'),       /* NOTE: despite what might seem obvious from the two constants*/
                                                                  /* below and their names, they really are correct. 'yuvu' really */
                                                                  /* does mean signed, and 'yuvs' really does mean unsigned. Really. */
      kComponentVideoSigned       = FOUR_CHAR_CODE('yuvu'),
      kComponentVideoUnsigned     = FOUR_CHAR_CODE('yuvs'),
      kCMYKCodecType              = FOUR_CHAR_CODE('cmyk'),
      kMicrosoftVideo1CodecType   = FOUR_CHAR_CODE('msvc'),
      kSorensonCodecType          = FOUR_CHAR_CODE('SVQ1'),
      kSorenson3CodecType         = FOUR_CHAR_CODE('SVQ3'),       /* available in QuickTime 5 and later*/
      kIndeo4CodecType            = FOUR_CHAR_CODE('IV41'),
      kMPEG4VisualCodecType       = FOUR_CHAR_CODE('mp4v'),
      k64ARGBCodecType            = FOUR_CHAR_CODE('b64a'),
      k48RGBCodecType             = FOUR_CHAR_CODE('b48r'),
      k32AlphaGrayCodecType       = FOUR_CHAR_CODE('b32a'),
      k16GrayCodecType            = FOUR_CHAR_CODE('b16g'),
      kMpegYUV420CodecType        = FOUR_CHAR_CODE('myuv'),
      kYUV420CodecType            = FOUR_CHAR_CODE('y420'),
      kSorensonYUV9CodecType      = FOUR_CHAR_CODE('syv9'),
      k422YpCbCr8CodecType        = FOUR_CHAR_CODE('2vuy'),       /* Component Y'CbCr 8-bit 4:2:2  */
      k444YpCbCr8CodecType        = FOUR_CHAR_CODE('v308'),       /* Component Y'CbCr 8-bit 4:4:4  */
      k4444YpCbCrA8CodecType      = FOUR_CHAR_CODE('v408'),       /* Component Y'CbCrA 8-bit 4:4:4:4 */
      k422YpCbCr16CodecType       = FOUR_CHAR_CODE('v216'),       /* Component Y'CbCr 10,12,14,16-bit 4:2:2*/
      k422YpCbCr10CodecType       = FOUR_CHAR_CODE('v210'),       /* Component Y'CbCr 10-bit 4:2:2 */
      k444YpCbCr10CodecType       = FOUR_CHAR_CODE('v410'),       /* Component Y'CbCr 10-bit 4:4:4 */
      k4444YpCbCrA8RCodecType     = FOUR_CHAR_CODE('r408')        /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv*/
  };
  
  /* one source effects */
  enum {
      kBlurImageFilterType        = FOUR_CHAR_CODE('blur'),
      kSharpenImageFilterType     = FOUR_CHAR_CODE('shrp'),
      kEdgeDetectImageFilterType  = FOUR_CHAR_CODE('edge'),
      kEmbossImageFilterType      = FOUR_CHAR_CODE('embs'),
      kConvolveImageFilterType    = FOUR_CHAR_CODE('genk'),
      kAlphaGainImageFilterType   = FOUR_CHAR_CODE('gain'),
      kRGBColorBalanceImageFilterType = FOUR_CHAR_CODE('rgbb'),
      kHSLColorBalanceImageFilterType = FOUR_CHAR_CODE('hslb'),
      kColorSyncImageFilterType   = FOUR_CHAR_CODE('sync'),
      kFilmNoiseImageFilterType   = FOUR_CHAR_CODE('fmns'),
      kSolarizeImageFilterType    = FOUR_CHAR_CODE('solr'),
      kColorTintImageFilterType   = FOUR_CHAR_CODE('tint'),
      kLensFlareImageFilterType   = FOUR_CHAR_CODE('lens'),
      kBrightnessContrastImageFilterType = FOUR_CHAR_CODE('brco')
  };
  
  /* two source effects */
  enum {
      kAlphaCompositorTransitionType = FOUR_CHAR_CODE('blnd'),
      kCrossFadeTransitionType    = FOUR_CHAR_CODE('dslv'),
      kChannelCompositeEffectType = FOUR_CHAR_CODE('chan'),
      kChromaKeyTransitionType    = FOUR_CHAR_CODE('ckey'),
      kImplodeTransitionType      = FOUR_CHAR_CODE('mplo'),
      kExplodeTransitionType      = FOUR_CHAR_CODE('xplo'),
      kGradientTransitionType     = FOUR_CHAR_CODE('matt'),
      kPushTransitionType         = FOUR_CHAR_CODE('push'),
      kSlideTransitionType        = FOUR_CHAR_CODE('slid'),
      kWipeTransitionType         = FOUR_CHAR_CODE('smpt'),
      kIrisTransitionType         = FOUR_CHAR_CODE('smp2'),
      kRadialTransitionType       = FOUR_CHAR_CODE('smp3'),
      kMatrixTransitionType       = FOUR_CHAR_CODE('smp4'),
      kZoomTransitionType         = FOUR_CHAR_CODE('zoom')
  };
  
  /* three source effects */
  enum {
      kTravellingMatteEffectType  = FOUR_CHAR_CODE('trav')
  };
  
  /* Supported by QTNewGWorld in QuickTime 4.0 and later */
  enum {
      kCMYKPixelFormat            = FOUR_CHAR_CODE('cmyk'),       /* CMYK, 8-bit */
      k64ARGBPixelFormat          = FOUR_CHAR_CODE('b64a'),       /* ARGB, 16-bit big-endian samples */
      k48RGBPixelFormat           = FOUR_CHAR_CODE('b48r'),       /* RGB, 16-bit big-endian samples */
      k32AlphaGrayPixelFormat     = FOUR_CHAR_CODE('b32a'),       /* AlphaGray, 16-bit big-endian samples */
      k16GrayPixelFormat          = FOUR_CHAR_CODE('b16g'),       /* Grayscale, 16-bit big-endian samples */
      k422YpCbCr8PixelFormat      = FOUR_CHAR_CODE('2vuy')        /* Component Y'CbCr 8-bit 4:2:2, ordered Cb Y'0 Cr Y'1 */
  };
  
  /* Supported by QTNewGWorld in QuickTime 4.1.2 and later */
  enum {
      k4444YpCbCrA8PixelFormat    = FOUR_CHAR_CODE('v408'),       /* Component Y'CbCrA 8-bit 4:4:4:4, ordered Cb Y' Cr A */
      k4444YpCbCrA8RPixelFormat   = FOUR_CHAR_CODE('r408')        /* Component Y'CbCrA 8-bit 4:4:4:4, rendering format. full range alpha, zero biased yuv, ordered A Y' Cb Cr */
  };
  
  /* Supported by QTNewGWorld in QuickTime 6.0 and later */
  enum {
      kYUV420PixelFormat          = FOUR_CHAR_CODE('y420')        /* Planar Component Y'CbCr 8-bit 4:2:0.  PixMap baseAddr points to a big-endian PlanarPixmapInfoYUV420 struct; see ImageCodec.i. */
  };
  
  /* These are the bits that are set in the Component flags, and also in the codecInfo struct. */
  enum {
      codecInfoDoes1              = (1L << 0),                    /* codec can work with 1-bit pixels */
      codecInfoDoes2              = (1L << 1),                    /* codec can work with 2-bit pixels */
      codecInfoDoes4              = (1L << 2),                    /* codec can work with 4-bit pixels */
      codecInfoDoes8              = (1L << 3),                    /* codec can work with 8-bit pixels */
      codecInfoDoes16             = (1L << 4),                    /* codec can work with 16-bit pixels */
      codecInfoDoes32             = (1L << 5),                    /* codec can work with 32-bit pixels */
      codecInfoDoesDither         = (1L << 6),                    /* codec can do ditherMode */
      codecInfoDoesStretch        = (1L << 7),                    /* codec can stretch to arbitrary sizes */
      codecInfoDoesShrink         = (1L << 8),                    /* codec can shrink to arbitrary sizes */
      codecInfoDoesMask           = (1L << 9),                    /* codec can mask to clipping regions */
      codecInfoDoesTemporal       = (1L << 10),                   /* codec can handle temporal redundancy */
      codecInfoDoesDouble         = (1L << 11),                   /* codec can stretch to double size exactly */
      codecInfoDoesQuad           = (1L << 12),                   /* codec can stretch to quadruple size exactly */
      codecInfoDoesHalf           = (1L << 13),                   /* codec can shrink to half size */
      codecInfoDoesQuarter        = (1L << 14),                   /* codec can shrink to quarter size */
      codecInfoDoesRotate         = (1L << 15),                   /* codec can rotate on decompress */
      codecInfoDoesHorizFlip      = (1L << 16),                   /* codec can flip horizontally on decompress */
      codecInfoDoesVertFlip       = (1L << 17),                   /* codec can flip vertically on decompress */
      codecInfoHasEffectParameterList = (1L << 18),               /* codec implements get effects parameter list call, once was codecInfoDoesSkew */
      codecInfoDoesBlend          = (1L << 19),                   /* codec can blend on decompress */
      codecInfoDoesWarp           = (1L << 20),                   /* codec can warp arbitrarily on decompress */
      codecInfoDoesRecompress     = (1L << 21),                   /* codec can recompress image without accumulating errors */
      codecInfoDoesSpool          = (1L << 22),                   /* codec can spool image data */
      codecInfoDoesRateConstrain  = (1L << 23)                    /* codec can data rate constrain */
  };
  
  enum {
      codecInfoDepth1             = (1L << 0),                    /* compressed data at 1 bpp depth available */
      codecInfoDepth2             = (1L << 1),                    /* compressed data at 2 bpp depth available */
      codecInfoDepth4             = (1L << 2),                    /* compressed data at 4 bpp depth available */
      codecInfoDepth8             = (1L << 3),                    /* compressed data at 8 bpp depth available */
      codecInfoDepth16            = (1L << 4),                    /* compressed data at 16 bpp depth available */
      codecInfoDepth32            = (1L << 5),                    /* compressed data at 32 bpp depth available */
      codecInfoDepth24            = (1L << 6),                    /* compressed data at 24 bpp depth available */
      codecInfoDepth33            = (1L << 7),                    /* compressed data at 1 bpp monochrome depth  available */
      codecInfoDepth34            = (1L << 8),                    /* compressed data at 2 bpp grayscale depth available */
      codecInfoDepth36            = (1L << 9),                    /* compressed data at 4 bpp grayscale depth available */
      codecInfoDepth40            = (1L << 10),                   /* compressed data at 8 bpp grayscale depth available */
      codecInfoStoresClut         = (1L << 11),                   /* compressed data can have custom cluts */
      codecInfoDoesLossless       = (1L << 12),                   /* compressed data can be stored in lossless format */
      codecInfoSequenceSensitive  = (1L << 13)                    /* compressed data is sensitive to out of sequence decoding */
  };
  
  /* input sequence flags*/
  enum {
      codecFlagUseImageBuffer     = (1L << 0),                    /* decompress*/
      codecFlagUseScreenBuffer    = (1L << 1),                    /* decompress*/
      codecFlagUpdatePrevious     = (1L << 2),                    /* compress*/
      codecFlagNoScreenUpdate     = (1L << 3),                    /* decompress*/
      codecFlagWasCompressed      = (1L << 4),                    /* compress*/
      codecFlagDontOffscreen      = (1L << 5),                    /* decompress*/
      codecFlagUpdatePreviousComp = (1L << 6),                    /* compress*/
      codecFlagForceKeyFrame      = (1L << 7),                    /* compress*/
      codecFlagOnlyScreenUpdate   = (1L << 8),                    /* decompress*/
      codecFlagLiveGrab           = (1L << 9),                    /* compress*/
      codecFlagDiffFrame          = (1L << 9),                    /* decompress*/
      codecFlagDontUseNewImageBuffer = (1L << 10),                /* decompress*/
      codecFlagInterlaceUpdate    = (1L << 11),                   /* decompress*/
      codecFlagCatchUpDiff        = (1L << 12),                   /* decompress*/
      codecFlagSupportDisable     = (1L << 13),                   /* decompress*/
      codecFlagReenable           = (1L << 14)                    /* decompress*/
  };
  
  /* output sequence flags*/
  enum {
      codecFlagOutUpdateOnNextIdle = (1L << 9),
      codecFlagOutUpdateOnDataSourceChange = (1L << 10),
      codecFlagSequenceSensitive  = (1L << 11),
      codecFlagOutUpdateOnTimeChange = (1L << 12),
      codecFlagImageBufferNotSourceImage = (1L << 13),
      codecFlagUsedNewImageBuffer = (1L << 14),
      codecFlagUsedImageBuffer    = (1L << 15)
  };
  
  enum {
                                                                  /* The minimum data size for spooling in or out data */
      codecMinimumDataSize        = 32768L
  };
  
  enum {
      compressorComponentType     = FOUR_CHAR_CODE('imco'),       /* the type for "Components" which compress images */
      decompressorComponentType   = FOUR_CHAR_CODE('imdc')        /* the type for "Components" which decompress images */
  };
  
  typedef Component                       CompressorComponent;
  typedef Component                       DecompressorComponent;
  typedef Component                       CodecComponent;
  define anyCodec                ((CodecComponent)0)
  define bestSpeedCodec          ((CodecComponent)-1)
  define bestFidelityCodec       ((CodecComponent)-2)
  define bestCompressionCodec    ((CodecComponent)-3)
  typedef OSType                          CodecType;
  typedef unsigned short                  CodecFlags;
  typedef unsigned long                   CodecQ;
  enum {
      codecLosslessQuality        = 0x00000400,
      codecMaxQuality             = 0x000003FF,
      codecMinQuality             = 0x00000000,
      codecLowQuality             = 0x00000100,
      codecNormalQuality          = 0x00000200,
      codecHighQuality            = 0x00000300
  };
  
  enum {
      codecLockBitsShieldCursor   = (1 << 0)                      /* shield cursor */
  };
  
  enum {
      codecCompletionSource       = (1 << 0),                     /* asynchronous codec is done with source data */
      codecCompletionDest         = (1 << 1),                     /* asynchronous codec is done with destination data */
      codecCompletionDontUnshield = (1 << 2),                     /* on dest complete don't unshield cursor */
      codecCompletionWentOffscreen = (1 << 3),                    /* codec used offscreen buffer */
      codecCompletionUnlockBits   = (1 << 4),                     /* on dest complete, call ICMSequenceUnlockBits */
      codecCompletionForceChainFlush = (1 << 5),                  /* ICM needs to flush the whole chain */
      codecCompletionDropped      = (1 << 6)                      /* codec decided to drop this frame */
  };
  
  enum {
      codecProgressOpen           = 0,
      codecProgressUpdatePercent  = 1,
      codecProgressClose          = 2
  };
  
  typedef CALLBACK_API( OSErr , ICMDataProcPtr )(Ptr *dataP, long bytesNeeded, long refcon);
  typedef CALLBACK_API( OSErr , ICMFlushProcPtr )(Ptr data, long bytesAdded, long refcon);
  typedef CALLBACK_API( void , ICMCompletionProcPtr )(OSErr result, short flags, long refcon);
  typedef CALLBACK_API( OSErr , ICMProgressProcPtr )(short message, Fixed completeness, long refcon);
  typedef CALLBACK_API( void , StdPixProcPtr )(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  typedef CALLBACK_API( void , QDPixProcPtr )(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  typedef CALLBACK_API( void , ICMAlignmentProcPtr )(Rect *rp, long refcon);
  typedef CALLBACK_API( void , ICMCursorShieldedProcPtr )(const Rect *r, void *refcon, long flags);
  typedef CALLBACK_API( void , ICMMemoryDisposedProcPtr )(Ptr memoryBlock, void *refcon);
  typedef void *                          ICMCursorNotify;
  typedef CALLBACK_API( OSErr , ICMConvertDataFormatProcPtr )(void *refCon, long flags, Handle desiredFormat, Handle sourceDataFormat, void *srcData, long srcDataSize, void **dstData, long *dstDataSize);
  typedef STACK_UPP_TYPE(ICMDataProcPtr)                          ICMDataUPP;
  typedef STACK_UPP_TYPE(ICMFlushProcPtr)                         ICMFlushUPP;
  typedef STACK_UPP_TYPE(ICMCompletionProcPtr)                    ICMCompletionUPP;
  typedef STACK_UPP_TYPE(ICMProgressProcPtr)                      ICMProgressUPP;
  typedef STACK_UPP_TYPE(StdPixProcPtr)                           StdPixUPP;
  typedef STACK_UPP_TYPE(QDPixProcPtr)                            QDPixUPP;
  typedef STACK_UPP_TYPE(ICMAlignmentProcPtr)                     ICMAlignmentUPP;
  typedef STACK_UPP_TYPE(ICMCursorShieldedProcPtr)                ICMCursorShieldedUPP;
  typedef STACK_UPP_TYPE(ICMMemoryDisposedProcPtr)                ICMMemoryDisposedUPP;
  typedef STACK_UPP_TYPE(ICMConvertDataFormatProcPtr)             ICMConvertDataFormatUPP;
  typedef long                            ImageSequence;
  typedef long                            ImageSequenceDataSource;
  typedef long                            ImageTranscodeSequence;
  typedef long                            ImageFieldSequence;
  
  struct ICMProgressProcRecord {
      ICMProgressUPP                  progressProc;
      long                            progressRefCon;
  };
  typedef struct ICMProgressProcRecord    ICMProgressProcRecord;
  typedef ICMProgressProcRecord *         ICMProgressProcRecordPtr;
  
  struct ICMCompletionProcRecord {
      ICMCompletionUPP                completionProc;
      long                            completionRefCon;
  };
  typedef struct ICMCompletionProcRecord  ICMCompletionProcRecord;
  typedef ICMCompletionProcRecord *       ICMCompletionProcRecordPtr;
  
  struct ICMDataProcRecord {
      ICMDataUPP                      dataProc;
      long                            dataRefCon;
  };
  typedef struct ICMDataProcRecord        ICMDataProcRecord;
  typedef ICMDataProcRecord *             ICMDataProcRecordPtr;
  
  struct ICMFlushProcRecord {
      ICMFlushUPP                     flushProc;
      long                            flushRefCon;
  };
  typedef struct ICMFlushProcRecord       ICMFlushProcRecord;
  typedef ICMFlushProcRecord *            ICMFlushProcRecordPtr;
  
  struct ICMAlignmentProcRecord {
      ICMAlignmentUPP                 alignmentProc;
      long                            alignmentRefCon;
  };
  typedef struct ICMAlignmentProcRecord   ICMAlignmentProcRecord;
  typedef ICMAlignmentProcRecord *        ICMAlignmentProcRecordPtr;
  
  struct DataRateParams {
      long                            dataRate;
      long                            dataOverrun;
      long                            frameDuration;
      long                            keyFrameRate;
      CodecQ                          minSpatialQuality;
      CodecQ                          minTemporalQuality;
  };
  typedef struct DataRateParams           DataRateParams;
  typedef DataRateParams *                DataRateParamsPtr;
  
  struct ImageDescription {
      long                            idSize;                     /* total size of ImageDescription including extra data ( CLUTs and other per sequence data ) */
      CodecType                       cType;                      /* what kind of codec compressed this data */
      long                            resvd1;                     /* reserved for Apple use */
      short                           resvd2;                     /* reserved for Apple use */
      short                           dataRefIndex;               /* set to zero  */
      short                           version;                    /* which version is this data */
      short                           revisionLevel;              /* what version of that codec did this */
      long                            vendor;                     /* whose  codec compressed this data */
      CodecQ                          temporalQuality;            /* what was the temporal quality factor  */
      CodecQ                          spatialQuality;             /* what was the spatial quality factor */
      short                           width;                      /* how many pixels wide is this data */
      short                           height;                     /* how many pixels high is this data */
      Fixed                           hRes;                       /* horizontal resolution */
      Fixed                           vRes;                       /* vertical resolution */
      long                            dataSize;                   /* if known, the size of data for this image descriptor */
      short                           frameCount;                 /* number of frames this description applies to */
      Str31                           name;                       /* name of codec ( in case not installed )  */
      short                           depth;                      /* what depth is this data (1-32) or ( 33-40 grayscale ) */
      short                           clutID;                     /* clut id or if 0 clut follows  or -1 if no clut */
  };
  typedef struct ImageDescription         ImageDescription;
  typedef ImageDescription *              ImageDescriptionPtr;
  typedef ImageDescriptionPtr *           ImageDescriptionHandle;
  
  struct CodecInfo {
      Str31                           typeName;                   /* name of the codec type i.e.: 'Apple Image Compression' */
      short                           version;                    /* version of the codec data that this codec knows about */
      short                           revisionLevel;              /* revision level of this codec i.e: 0x00010001 (1.0.1) */
      long                            vendor;                     /* Maker of this codec i.e: 'appl' */
      long                            decompressFlags;            /* codecInfo flags for decompression capabilities */
      long                            compressFlags;              /* codecInfo flags for compression capabilities */
      long                            formatFlags;                /* codecInfo flags for compression format details */
      UInt8                           compressionAccuracy;        /* measure (1-255) of accuracy of this codec for compress (0 if unknown) */
      UInt8                           decompressionAccuracy;      /* measure (1-255) of accuracy of this codec for decompress (0 if unknown) */
      unsigned short                  compressionSpeed;           /* ( millisecs for compressing 320x240 on base mac II) (0 if unknown)  */
      unsigned short                  decompressionSpeed;         /* ( millisecs for decompressing 320x240 on mac II)(0 if unknown)  */
      UInt8                           compressionLevel;           /* measure (1-255) of compression level of this codec (0 if unknown)  */
      UInt8                           resvd;                      /* pad */
      short                           minimumHeight;              /* minimum height of image (block size) */
      short                           minimumWidth;               /* minimum width of image (block size) */
      short                           decompressPipelineLatency;  /* in milliseconds ( for asynchronous codecs ) */
      short                           compressPipelineLatency;    /* in milliseconds ( for asynchronous codecs ) */
      long                            privateData;
  };
  typedef struct CodecInfo                CodecInfo;
  
  struct CodecNameSpec {
      CodecComponent                  codec;
      CodecType                       cType;
      Str31                           typeName;
      Handle                          name;
  };
  typedef struct CodecNameSpec            CodecNameSpec;
  
  struct CodecNameSpecList {
      short                           count;
      CodecNameSpec                   list[1];
  };
  typedef struct CodecNameSpecList        CodecNameSpecList;
  typedef CodecNameSpecList *             CodecNameSpecListPtr;
  enum {
      defaultDither               = 0,
      forceDither                 = 1,
      suppressDither              = 2,
      useColorMatching            = 4
  };
  
  enum {
      callStdBits                 = 1,
      callOldBits                 = 2,
      noDefaultOpcodes            = 4
  };
  
  enum {
      graphicsModeStraightAlpha   = 256,
      graphicsModePreWhiteAlpha   = 257,
      graphicsModePreBlackAlpha   = 258,
      graphicsModeComposition     = 259,
      graphicsModeStraightAlphaBlend = 260,
      graphicsModePreMulColorAlpha = 261
  };
  
  enum {
      evenField1ToEvenFieldOut    = 1 << 0,
      evenField1ToOddFieldOut     = 1 << 1,
      oddField1ToEvenFieldOut     = 1 << 2,
      oddField1ToOddFieldOut      = 1 << 3,
      evenField2ToEvenFieldOut    = 1 << 4,
      evenField2ToOddFieldOut     = 1 << 5,
      oddField2ToEvenFieldOut     = 1 << 6,
      oddField2ToOddFieldOut      = 1 << 7
  };
  
  enum {
      icmFrameTimeHasVirtualStartTimeAndDuration = 1 << 0
  };
  
  struct ICMFrameTimeRecord {
      wide                            value;                      /* frame time*/
      long                            scale;                      /* timescale of value/duration fields*/
      void *                          base;                       /* timebase*/
  
      long                            duration;                   /* duration frame is to be displayed (0 if unknown)*/
      Fixed                           rate;                       /* rate of timebase relative to wall-time*/
  
      long                            recordSize;                 /* total number of bytes in ICMFrameTimeRecord*/
  
      long                            frameNumber;                /* number of frame, zero if not known*/
  
      long                            flags;
  
      wide                            virtualStartTime;           /* conceptual start time*/
      long                            virtualDuration;            /* conceptual duration*/
  };
  typedef struct ICMFrameTimeRecord       ICMFrameTimeRecord;
  
  typedef ICMFrameTimeRecord *            ICMFrameTimePtr;
  ifndef __QTUUID__
  define __QTUUID__ 1
  /* QuickTime flavor of universally unique identifier (uuid)*/
  
  struct QTUUID {
      UInt32                          data1;
      UInt16                          data2;
      UInt16                          data3;
      UInt8                           data4[8];
  };
  typedef struct QTUUID                   QTUUID;
  
  typedef QTUUID                          QTMediaContextID;
  endif  /* !defined(__QTUUID__) */
  
  if OPAQUE_UPP_TYPES
      EXTERN_API(ICMDataUPP)
      NewICMDataUPP                  (ICMDataProcPtr          userRoutine);
  
      EXTERN_API(ICMFlushUPP)
      NewICMFlushUPP                 (ICMFlushProcPtr         userRoutine);
  
      EXTERN_API(ICMCompletionUPP)
      NewICMCompletionUPP            (ICMCompletionProcPtr    userRoutine);
  
      EXTERN_API(ICMProgressUPP)
      NewICMProgressUPP              (ICMProgressProcPtr      userRoutine);
  
      EXTERN_API(StdPixUPP)
      NewStdPixUPP                   (StdPixProcPtr           userRoutine);
  
      EXTERN_API(QDPixUPP)
      NewQDPixUPP                    (QDPixProcPtr            userRoutine);
  
      EXTERN_API(ICMAlignmentUPP)
      NewICMAlignmentUPP             (ICMAlignmentProcPtr     userRoutine);
  
      EXTERN_API(ICMCursorShieldedUPP)
      NewICMCursorShieldedUPP        (ICMCursorShieldedProcPtr userRoutine);
  
      EXTERN_API(ICMMemoryDisposedUPP)
      NewICMMemoryDisposedUPP        (ICMMemoryDisposedProcPtr userRoutine);
  
      EXTERN_API(ICMConvertDataFormatUPP)
      NewICMConvertDataFormatUPP     (ICMConvertDataFormatProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposeICMDataUPP              (ICMDataUPP              userUPP);
  
      EXTERN_API(void)
      DisposeICMFlushUPP             (ICMFlushUPP             userUPP);
  
      EXTERN_API(void)
      DisposeICMCompletionUPP        (ICMCompletionUPP        userUPP);
  
      EXTERN_API(void)
      DisposeICMProgressUPP          (ICMProgressUPP          userUPP);
  
      EXTERN_API(void)
      DisposeStdPixUPP               (StdPixUPP               userUPP);
  
      EXTERN_API(void)
      DisposeQDPixUPP                (QDPixUPP                userUPP);
  
      EXTERN_API(void)
      DisposeICMAlignmentUPP         (ICMAlignmentUPP         userUPP);
  
      EXTERN_API(void)
      DisposeICMCursorShieldedUPP    (ICMCursorShieldedUPP    userUPP);
  
      EXTERN_API(void)
      DisposeICMMemoryDisposedUPP    (ICMMemoryDisposedUPP    userUPP);
  
      EXTERN_API(void)
      DisposeICMConvertDataFormatUPP    (ICMConvertDataFormatUPP userUPP);
  
      EXTERN_API(OSErr)
      InvokeICMDataUPP               (Ptr *                   dataP,
                                      long                    bytesNeeded,
                                      long                    refcon,
                                      ICMDataUPP              userUPP);
  
      EXTERN_API(OSErr)
      InvokeICMFlushUPP              (Ptr                     data,
                                      long                    bytesAdded,
                                      long                    refcon,
                                      ICMFlushUPP             userUPP);
  
      EXTERN_API(void)
      InvokeICMCompletionUPP         (OSErr                   result,
                                      short                   flags,
                                      long                    refcon,
                                      ICMCompletionUPP        userUPP);
  
      EXTERN_API(OSErr)
      InvokeICMProgressUPP           (short                   message,
                                      Fixed                   completeness,
                                      long                    refcon,
                                      ICMProgressUPP          userUPP);
  
      EXTERN_API(void)
      InvokeStdPixUPP                (PixMap *                src,
                                      Rect *                  srcRect,
                                      MatrixRecord *          matrix,
                                      short                   mode,
                                      RgnHandle               mask,
                                      PixMap *                matte,
                                      Rect *                  matteRect,
                                      short                   flags,
                                      StdPixUPP               userUPP);
  
      EXTERN_API(void)
      InvokeQDPixUPP                 (PixMap *                src,
                                      Rect *                  srcRect,
                                      MatrixRecord *          matrix,
                                      short                   mode,
                                      RgnHandle               mask,
                                      PixMap *                matte,
                                      Rect *                  matteRect,
                                      short                   flags,
                                      QDPixUPP                userUPP);
  
      EXTERN_API(void)
      InvokeICMAlignmentUPP          (Rect *                  rp,
                                      long                    refcon,
                                      ICMAlignmentUPP         userUPP);
  
      EXTERN_API(void)
      InvokeICMCursorShieldedUPP     (const Rect *            r,
                                      void *                  refcon,
                                      long                    flags,
                                      ICMCursorShieldedUPP    userUPP);
  
      EXTERN_API(void)
      InvokeICMMemoryDisposedUPP     (Ptr                     memoryBlock,
                                      void *                  refcon,
                                      ICMMemoryDisposedUPP    userUPP);
  
      EXTERN_API(OSErr)
      InvokeICMConvertDataFormatUPP    (void *                refCon,
                                      long                    flags,
                                      Handle                  desiredFormat,
                                      Handle                  sourceDataFormat,
                                      void *                  srcData,
                                      long                    srcDataSize,
                                      void **                 dstData,
                                      long *                  dstDataSize,
                                      ICMConvertDataFormatUPP userUPP);
  
  else
      enum { uppICMDataProcInfo = 0x00000FE0 };                       /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
      enum { uppICMFlushProcInfo = 0x00000FE0 };                      /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
      enum { uppICMCompletionProcInfo = 0x00000E80 };                 /* pascal no_return_value Func(2_bytes, 2_bytes, 4_bytes) */
      enum { uppICMProgressProcInfo = 0x00000FA0 };                   /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
      enum { uppStdPixProcInfo = 0x002FEFC0 };                        /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes, 2_bytes) */
      enum { uppQDPixProcInfo = 0x002FEFC0 };                         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes, 2_bytes) */
      enum { uppICMAlignmentProcInfo = 0x000003C0 };                  /* pascal no_return_value Func(4_bytes, 4_bytes) */
      enum { uppICMCursorShieldedProcInfo = 0x00000FC0 };             /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
      enum { uppICMMemoryDisposedProcInfo = 0x000003C0 };             /* pascal no_return_value Func(4_bytes, 4_bytes) */
      enum { uppICMConvertDataFormatProcInfo = 0x003FFFE0 };          /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
      #define NewICMDataUPP(userRoutine)                              (ICMDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentArchitecture())
      #define NewICMFlushUPP(userRoutine)                             (ICMFlushUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentArchitecture())
      #define NewICMCompletionUPP(userRoutine)                        (ICMCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentArchitecture())
      #define NewICMProgressUPP(userRoutine)                          (ICMProgressUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentArchitecture())
      #define NewStdPixUPP(userRoutine)                               (StdPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentArchitecture())
      #define NewQDPixUPP(userRoutine)                                (QDPixUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPixProcInfo, GetCurrentArchitecture())
      #define NewICMAlignmentUPP(userRoutine)                         (ICMAlignmentUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentArchitecture())
      #define NewICMCursorShieldedUPP(userRoutine)                    (ICMCursorShieldedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCursorShieldedProcInfo, GetCurrentArchitecture())
      #define NewICMMemoryDisposedUPP(userRoutine)                    (ICMMemoryDisposedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMMemoryDisposedProcInfo, GetCurrentArchitecture())
      #define NewICMConvertDataFormatUPP(userRoutine)                 (ICMConvertDataFormatUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMConvertDataFormatProcInfo, GetCurrentArchitecture())
      #define DisposeICMDataUPP(userUPP)                              DisposeRoutineDescriptor(userUPP)
      #define DisposeICMFlushUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
      #define DisposeICMCompletionUPP(userUPP)                        DisposeRoutineDescriptor(userUPP)
      #define DisposeICMProgressUPP(userUPP)                          DisposeRoutineDescriptor(userUPP)
      #define DisposeStdPixUPP(userUPP)                               DisposeRoutineDescriptor(userUPP)
      #define DisposeQDPixUPP(userUPP)                                DisposeRoutineDescriptor(userUPP)
      #define DisposeICMAlignmentUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
      #define DisposeICMCursorShieldedUPP(userUPP)                    DisposeRoutineDescriptor(userUPP)
      #define DisposeICMMemoryDisposedUPP(userUPP)                    DisposeRoutineDescriptor(userUPP)
      #define DisposeICMConvertDataFormatUPP(userUPP)                 DisposeRoutineDescriptor(userUPP)
      #define InvokeICMDataUPP(dataP, bytesNeeded, refcon, userUPP)   (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMDataProcInfo, (dataP), (bytesNeeded), (refcon))
      #define InvokeICMFlushUPP(data, bytesAdded, refcon, userUPP)    (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMFlushProcInfo, (data), (bytesAdded), (refcon))
      #define InvokeICMCompletionUPP(result, flags, refcon, userUPP)  CALL_THREE_PARAMETER_UPP((userUPP), uppICMCompletionProcInfo, (result), (flags), (refcon))
      #define InvokeICMProgressUPP(message, completeness, refcon, userUPP)  (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppICMProgressProcInfo, (message), (completeness), (refcon))
      #define InvokeStdPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userUPP)  CALL_EIGHT_PARAMETER_UPP((userUPP), uppStdPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
      #define InvokeQDPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userUPP)  CALL_EIGHT_PARAMETER_UPP((userUPP), uppQDPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
      #define InvokeICMAlignmentUPP(rp, refcon, userUPP)              CALL_TWO_PARAMETER_UPP((userUPP), uppICMAlignmentProcInfo, (rp), (refcon))
      #define InvokeICMCursorShieldedUPP(r, refcon, flags, userUPP)   CALL_THREE_PARAMETER_UPP((userUPP), uppICMCursorShieldedProcInfo, (r), (refcon), (flags))
      #define InvokeICMMemoryDisposedUPP(memoryBlock, refcon, userUPP)  CALL_TWO_PARAMETER_UPP((userUPP), uppICMMemoryDisposedProcInfo, (memoryBlock), (refcon))
      #define InvokeICMConvertDataFormatUPP(refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize, userUPP)  (OSErr)CALL_EIGHT_PARAMETER_UPP((userUPP), uppICMConvertDataFormatProcInfo, (refCon), (flags), (desiredFormat), (sourceDataFormat), (srcData), (srcDataSize), (dstData), (dstDataSize))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewICMDataProc(userRoutine)                             NewICMDataUPP(userRoutine)
  define NewICMFlushProc(userRoutine)                            NewICMFlushUPP(userRoutine)
  define NewICMCompletionProc(userRoutine)                       NewICMCompletionUPP(userRoutine)
  define NewICMProgressProc(userRoutine)                         NewICMProgressUPP(userRoutine)
  define NewStdPixProc(userRoutine)                              NewStdPixUPP(userRoutine)
  define NewQDPixProc(userRoutine)                               NewQDPixUPP(userRoutine)
  define NewICMAlignmentProc(userRoutine)                        NewICMAlignmentUPP(userRoutine)
  define NewICMCursorShieldedProc(userRoutine)                   NewICMCursorShieldedUPP(userRoutine)
  define NewICMMemoryDisposedProc(userRoutine)                   NewICMMemoryDisposedUPP(userRoutine)
  define NewICMConvertDataFormatProc(userRoutine)                NewICMConvertDataFormatUPP(userRoutine)
  define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon) InvokeICMDataUPP(dataP, bytesNeeded, refcon, userRoutine)
  define CallICMFlushProc(userRoutine, data, bytesAdded, refcon) InvokeICMFlushUPP(data, bytesAdded, refcon, userRoutine)
  define CallICMCompletionProc(userRoutine, result, flags, refcon) InvokeICMCompletionUPP(result, flags, refcon, userRoutine)
  define CallICMProgressProc(userRoutine, message, completeness, refcon) InvokeICMProgressUPP(message, completeness, refcon, userRoutine)
  define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags) InvokeStdPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userRoutine)
  define CallQDPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags) InvokeQDPixUPP(src, srcRect, matrix, mode, mask, matte, matteRect, flags, userRoutine)
  define CallICMAlignmentProc(userRoutine, rp, refcon)           InvokeICMAlignmentUPP(rp, refcon, userRoutine)
  define CallICMCursorShieldedProc(userRoutine, r, refcon, flags) InvokeICMCursorShieldedUPP(r, refcon, flags, userRoutine)
  define CallICMMemoryDisposedProc(userRoutine, memoryBlock, refcon) InvokeICMMemoryDisposedUPP(memoryBlock, refcon, userRoutine)
  define CallICMConvertDataFormatProc(userRoutine, refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize) InvokeICMConvertDataFormatUPP(refCon, flags, desiredFormat, sourceDataFormat, srcData, srcDataSize, dstData, dstDataSize, userRoutine)
  
  EXTERN_API( OSErr )
  CodecManagerVersion             (long *                 version)                            TWOWORDINLINE(0x7000, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCodecNameList                (CodecNameSpecListPtr * list,
                                   short                  showAll)                            TWOWORDINLINE(0x7001, 0xAAA3);
  
  EXTERN_API( OSErr )
  DisposeCodecNameList            (CodecNameSpecListPtr   list)                               TWOWORDINLINE(0x700F, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCodecInfo                    (CodecInfo *            info,
                                   CodecType              cType,
                                   CodecComponent         codec)                              TWOWORDINLINE(0x7003, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetMaxCompressionSize           (PixMapHandle           src,
                                   const Rect *           srcRect,
                                   short                  colorDepth,
                                   CodecQ                 quality,
                                   CodecType              cType,
                                   CompressorComponent    codec,
                                   long *                 size)                               TWOWORDINLINE(0x7004, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCSequenceMaxCompressionSize  (ImageSequence          seqID,
                                   PixMapHandle           src,
                                   long *                 size)                               FOURWORDINLINE(0x203C, 0x000C, 0x0074, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCompressionTime              (PixMapHandle           src,
                                   const Rect *           srcRect,
                                   short                  colorDepth,
                                   CodecType              cType,
                                   CompressorComponent    codec,
                                   CodecQ *               spatialQuality,
                                   CodecQ *               temporalQuality,
                                   unsigned long *        compressTime)                       TWOWORDINLINE(0x7005, 0xAAA3);
  
  EXTERN_API( OSErr )
  CompressImage                   (PixMapHandle           src,
                                   const Rect *           srcRect,
                                   CodecQ                 quality,
                                   CodecType              cType,
                                   ImageDescriptionHandle  desc,
                                   Ptr                    data)                               TWOWORDINLINE(0x7006, 0xAAA3);
  
  EXTERN_API( OSErr )
  FCompressImage                  (PixMapHandle           src,
                                   const Rect *           srcRect,
                                   short                  colorDepth,
                                   CodecQ                 quality,
                                   CodecType              cType,
                                   CompressorComponent    codec,
                                   CTabHandle             ctable,
                                   CodecFlags             flags,
                                   long                   bufferSize,
                                   ICMFlushProcRecordPtr  flushProc,
                                   ICMProgressProcRecordPtr  progressProc,
                                   ImageDescriptionHandle  desc,
                                   Ptr                    data)                               TWOWORDINLINE(0x7007, 0xAAA3);
  
  EXTERN_API( OSErr )
  DecompressImage                 (Ptr                    data,
                                   ImageDescriptionHandle  desc,
                                   PixMapHandle           dst,
                                   const Rect *           srcRect,
                                   const Rect *           dstRect,
                                   short                  mode,
                                   RgnHandle              mask)                               TWOWORDINLINE(0x7008, 0xAAA3);
  
  EXTERN_API( OSErr )
  FDecompressImage                (Ptr                    data,
                                   ImageDescriptionHandle  desc,
                                   PixMapHandle           dst,
                                   const Rect *           srcRect,
                                   MatrixRecordPtr        matrix,
                                   short                  mode,
                                   RgnHandle              mask,
                                   PixMapHandle           matte,
                                   const Rect *           matteRect,
                                   CodecQ                 accuracy,
                                   DecompressorComponent  codec,
                                   long                   bufferSize,
                                   ICMDataProcRecordPtr   dataProc,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x7009, 0xAAA3);
  
  EXTERN_API( OSErr )
  CompressSequenceBegin           (ImageSequence *        seqID,
                                   PixMapHandle           src,
                                   PixMapHandle           prev,
                                   const Rect *           srcRect,
                                   const Rect *           prevRect,
                                   short                  colorDepth,
                                   CodecType              cType,
                                   CompressorComponent    codec,
                                   CodecQ                 spatialQuality,
                                   CodecQ                 temporalQuality,
                                   long                   keyFrameRate,
                                   CTabHandle             ctable,
                                   CodecFlags             flags,
                                   ImageDescriptionHandle  desc)                              TWOWORDINLINE(0x700A, 0xAAA3);
  
  EXTERN_API( OSErr )
  CompressSequenceFrame           (ImageSequence          seqID,
                                   PixMapHandle           src,
                                   const Rect *           srcRect,
                                   CodecFlags             flags,
                                   Ptr                    data,
                                   long *                 dataSize,
                                   UInt8 *                similarity,
                                   ICMCompletionProcRecordPtr  asyncCompletionProc)           TWOWORDINLINE(0x700B, 0xAAA3);
  
  EXTERN_API( OSErr )
  DecompressSequenceBegin         (ImageSequence *        seqID,
                                   ImageDescriptionHandle  desc,
                                   CGrafPtr               port,
                                   GDHandle               gdh,
                                   const Rect *           srcRect,
                                   MatrixRecordPtr        matrix,
                                   short                  mode,
                                   RgnHandle              mask,
                                   CodecFlags             flags,
                                   CodecQ                 accuracy,
                                   DecompressorComponent  codec)                              TWOWORDINLINE(0x700D, 0xAAA3);
  
  EXTERN_API( OSErr )
  DecompressSequenceBeginS        (ImageSequence *        seqID,
                                   ImageDescriptionHandle  desc,
                                   Ptr                    data,
                                   long                   dataSize,
                                   CGrafPtr               port,
                                   GDHandle               gdh,
                                   const Rect *           srcRect,
                                   MatrixRecordPtr        matrix,
                                   short                  mode,
                                   RgnHandle              mask,
                                   CodecFlags             flags,
                                   CodecQ                 accuracy,
                                   DecompressorComponent  codec)                              FOURWORDINLINE(0x203C, 0x0030, 0x005D, 0xAAA3);
  
  EXTERN_API( OSErr )
  DecompressSequenceFrame         (ImageSequence          seqID,
                                   Ptr                    data,
                                   CodecFlags             inFlags,
                                   CodecFlags *           outFlags,
                                   ICMCompletionProcRecordPtr  asyncCompletionProc)           TWOWORDINLINE(0x700E, 0xAAA3);
  
  EXTERN_API( OSErr )
  DecompressSequenceFrameS        (ImageSequence          seqID,
                                   Ptr                    data,
                                   long                   dataSize,
                                   CodecFlags             inFlags,
                                   CodecFlags *           outFlags,
                                   ICMCompletionProcRecordPtr  asyncCompletionProc)           FOURWORDINLINE(0x203C, 0x0016, 0x0047, 0xAAA3);
  
  EXTERN_API( OSErr )
  DecompressSequenceFrameWhen     (ImageSequence          seqID,
                                   Ptr                    data,
                                   long                   dataSize,
                                   CodecFlags             inFlags,
                                   CodecFlags *           outFlags,
                                   ICMCompletionProcRecordPtr  asyncCompletionProc,
                                   const ICMFrameTimeRecord * frameTime)                      FOURWORDINLINE(0x203C, 0x001A, 0x005E, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceFlush                 (ImageSequence          seqID)                              FOURWORDINLINE(0x203C, 0x0004, 0x005F, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceMatrix              (ImageSequence          seqID,
                                   MatrixRecordPtr        matrix)                             TWOWORDINLINE(0x7010, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetDSequenceMatrix              (ImageSequence          seqID,
                                   MatrixRecordPtr        matrix)                             FOURWORDINLINE(0x203C, 0x0008, 0x0091, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceMatte               (ImageSequence          seqID,
                                   PixMapHandle           matte,
                                   const Rect *           matteRect)                          TWOWORDINLINE(0x7011, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceMask                (ImageSequence          seqID,
                                   RgnHandle              mask)                               TWOWORDINLINE(0x7012, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceTransferMode        (ImageSequence          seqID,
                                   short                  mode,
                                   const RGBColor *       opColor)                            TWOWORDINLINE(0x7013, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceDataProc            (ImageSequence          seqID,
                                   ICMDataProcRecordPtr   dataProc,
                                   long                   bufferSize)                         TWOWORDINLINE(0x7014, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceAccuracy            (ImageSequence          seqID,
                                   CodecQ                 accuracy)                           TWOWORDINLINE(0x7034, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceSrcRect             (ImageSequence          seqID,
                                   const Rect *           srcRect)                            TWOWORDINLINE(0x7035, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceFlags               (ImageSequence          seqID,
                                   long                   flags,
                                   long                   flagsMask)                          FOURWORDINLINE(0x203C, 0x000C, 0x0057, 0xAAA3);
  
  enum {
      codecDSequenceDisableOverlaySurface = (1L << 5),
      codecDSequenceSingleField   = (1L << 6),
      codecDSequenceBidirectionalPrediction = (1L << 7),
      codecDSequenceFlushInsteadOfDirtying = (1L << 8),
      codecDSequenceEnableSubPixelPositioning = (1L << 9)
  };
  
  typedef CodecComponent *                CodecComponentPtr;
  typedef CodecComponentPtr *             CodecComponentHandle;
  /* selectors for ICMSequenceGet/SetInfo*/
  enum {
      kICMSequenceTaskWeight      = FOUR_CHAR_CODE('twei'),       /* data is pointer to UInt32*/
      kICMSequenceTaskName        = FOUR_CHAR_CODE('tnam'),       /* data is pointer to OSType*/
      kICMSequenceUserPreferredCodecs = FOUR_CHAR_CODE('punt')    /* data is pointer to CodecComponentHandle*/
  };
  
  EXTERN_API( OSErr )
  ICMSequenceGetInfo              (ImageSequence          seqID,
                                   OSType                 which,
                                   void *                 data)                               FOURWORDINLINE(0x203C, 0x000C, 0x0089, 0xAAA3);
  
  EXTERN_API( OSErr )
  ICMSequenceSetInfo              (ImageSequence          seqID,
                                   OSType                 which,
                                   void *                 data,
                                   Size                   dataSize)                           FOURWORDINLINE(0x203C, 0x0010, 0x009D, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetDSequenceImageBuffer         (ImageSequence          seqID,
                                   GWorldPtr *            gworld)                             TWOWORDINLINE(0x7015, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetDSequenceScreenBuffer        (ImageSequence          seqID,
                                   GWorldPtr *            gworld)                             TWOWORDINLINE(0x7016, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCSequenceQuality             (ImageSequence          seqID,
                                   CodecQ                 spatialQuality,
                                   CodecQ                 temporalQuality)                    TWOWORDINLINE(0x7017, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCSequencePrev                (ImageSequence          seqID,
                                   PixMapHandle           prev,
                                   const Rect *           prevRect)                           TWOWORDINLINE(0x7018, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCSequenceFlushProc           (ImageSequence          seqID,
                                   ICMFlushProcRecordPtr  flushProc,
                                   long                   bufferSize)                         TWOWORDINLINE(0x7033, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCSequenceKeyFrameRate        (ImageSequence          seqID,
                                   long                   keyFrameRate)                       TWOWORDINLINE(0x7036, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCSequenceKeyFrameRate        (ImageSequence          seqID,
                                   long *                 keyFrameRate)                       FOURWORDINLINE(0x203C, 0x0008, 0x004B, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCSequencePrevBuffer          (ImageSequence          seqID,
                                   GWorldPtr *            gworld)                             TWOWORDINLINE(0x7019, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceBusy                  (ImageSequence          seqID)                              TWOWORDINLINE(0x701A, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceEnd                   (ImageSequence          seqID)                              TWOWORDINLINE(0x701B, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceEquivalentImageDescription (ImageSequence     seqID,
                                   ImageDescriptionHandle  newDesc,
                                   Boolean *              equivalent)                         FOURWORDINLINE(0x203C, 0x000C, 0x0065, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceEquivalentImageDescriptionS (ImageSequence    seqID,
                                   ImageDescriptionHandle  newDesc,
                                   Boolean *              equivalent,
                                   Boolean *              canSwitch)                          FOURWORDINLINE(0x203C, 0x0010, 0x009F, 0xAAA3);
  
  EXTERN_API( OSErr )
  ReplaceDSequenceImageDescription (ImageSequence         seqID,
                                   ImageDescriptionHandle  newDesc)                           FOURWORDINLINE(0x203C, 0x0008, 0x00A0, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCompressedImageSize          (ImageDescriptionHandle  desc,
                                   Ptr                    data,
                                   long                   bufferSize,
                                   ICMDataProcRecordPtr   dataProc,
                                   long *                 dataSize)                           TWOWORDINLINE(0x701C, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetSimilarity                   (PixMapHandle           src,
                                   const Rect *           srcRect,
                                   ImageDescriptionHandle  desc,
                                   Ptr                    data,
                                   Fixed *                similarity)                         TWOWORDINLINE(0x701D, 0xAAA3);
  
  enum {
      kImageDescriptionSampleFormat = FOUR_CHAR_CODE('idfm'),     /* image description extension describing sample format*/
      kImageDescriptionClassicAtomFormat = FOUR_CHAR_CODE('atom'), /* sample contains classic atom structure (ie, GX codec and Curve codec)*/
      kImageDescriptionQTAtomFormat = FOUR_CHAR_CODE('qtat'),     /* sample contains QT atom structure*/
      kImageDescriptionEffectDataFormat = FOUR_CHAR_CODE('fxat'), /* sample describes an effect (as QTAtoms)*/
      kImageDescriptionPrivateDataFormat = FOUR_CHAR_CODE('priv'), /* sample is in a private codec specific format*/
      kImageDescriptionAlternateCodec = FOUR_CHAR_CODE('subs'),   /* image description extension containing the OSType of a substitute codec should the main codec not be available*/
      kImageDescriptionColorSpace = FOUR_CHAR_CODE('cspc')        /* image description extension containing an OSType naming the native pixel format of an image (only used for pixel formats not supported by classic Color QuickDraw)*/
  };
  
  EXTERN_API( OSErr )
  GetImageDescriptionCTable       (ImageDescriptionHandle  desc,
                                   CTabHandle *           ctable)                             TWOWORDINLINE(0x701E, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetImageDescriptionCTable       (ImageDescriptionHandle  desc,
                                   CTabHandle             ctable)                             TWOWORDINLINE(0x701F, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetImageDescriptionExtension    (ImageDescriptionHandle  desc,
                                   Handle *               extension,
                                   long                   idType,
                                   long                   index)                              TWOWORDINLINE(0x7020, 0xAAA3);
  
  EXTERN_API( OSErr )
  AddImageDescriptionExtension    (ImageDescriptionHandle  desc,
                                   Handle                 extension,
                                   long                   idType)                             TWOWORDINLINE(0x7021, 0xAAA3);
  
  EXTERN_API( OSErr )
  RemoveImageDescriptionExtension (ImageDescriptionHandle  desc,
                                   long                   idType,
                                   long                   index)                              FOURWORDINLINE(0x203C, 0x000C, 0x003A, 0xAAA3);
  
  EXTERN_API( OSErr )
  CountImageDescriptionExtensionType (ImageDescriptionHandle  desc,
                                   long                   idType,
                                   long *                 count)                              FOURWORDINLINE(0x203C, 0x000C, 0x003B, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetNextImageDescriptionExtensionType (ImageDescriptionHandle  desc,
                                   long *                 idType)                             FOURWORDINLINE(0x203C, 0x0008, 0x003C, 0xAAA3);
  
  EXTERN_API( OSErr )
  FindCodec                       (CodecType              cType,
                                   CodecComponent         specCodec,
                                   CompressorComponent *  compressor,
                                   DecompressorComponent * decompressor)                      TWOWORDINLINE(0x7023, 0xAAA3);
  
  EXTERN_API( OSErr )
  CompressPicture                 (PicHandle              srcPicture,
                                   PicHandle              dstPicture,
                                   CodecQ                 quality,
                                   CodecType              cType)                              TWOWORDINLINE(0x7024, 0xAAA3);
  
  EXTERN_API( OSErr )
  FCompressPicture                (PicHandle              srcPicture,
                                   PicHandle              dstPicture,
                                   short                  colorDepth,
                                   CTabHandle             ctable,
                                   CodecQ                 quality,
                                   short                  doDither,
                                   short                  compressAgain,
                                   ICMProgressProcRecordPtr  progressProc,
                                   CodecType              cType,
                                   CompressorComponent    codec)                              TWOWORDINLINE(0x7025, 0xAAA3);
  
  EXTERN_API( OSErr )
  CompressPictureFile             (short                  srcRefNum,
                                   short                  dstRefNum,
                                   CodecQ                 quality,
                                   CodecType              cType)                              TWOWORDINLINE(0x7026, 0xAAA3);
  
  EXTERN_API( OSErr )
  FCompressPictureFile            (short                  srcRefNum,
                                   short                  dstRefNum,
                                   short                  colorDepth,
                                   CTabHandle             ctable,
                                   CodecQ                 quality,
                                   short                  doDither,
                                   short                  compressAgain,
                                   ICMProgressProcRecordPtr  progressProc,
                                   CodecType              cType,
                                   CompressorComponent    codec)                              TWOWORDINLINE(0x7027, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetPictureFileHeader            (short                  refNum,
                                   Rect *                 frame,
                                   OpenCPicParams *       header)                             TWOWORDINLINE(0x7028, 0xAAA3);
  
  EXTERN_API( OSErr )
  DrawPictureFile                 (short                  refNum,
                                   const Rect *           frame,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x7029, 0xAAA3);
  
  EXTERN_API( OSErr )
  DrawTrimmedPicture              (PicHandle              srcPicture,
                                   const Rect *           frame,
                                   RgnHandle              trimMask,
                                   short                  doDither,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x702E, 0xAAA3);
  
  EXTERN_API( OSErr )
  DrawTrimmedPictureFile          (short                  srcRefnum,
                                   const Rect *           frame,
                                   RgnHandle              trimMask,
                                   short                  doDither,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x702F, 0xAAA3);
  
  EXTERN_API( OSErr )
  MakeThumbnailFromPicture        (PicHandle              picture,
                                   short                  colorDepth,
                                   PicHandle              thumbnail,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x702A, 0xAAA3);
  
  EXTERN_API( OSErr )
  MakeThumbnailFromPictureFile    (short                  refNum,
                                   short                  colorDepth,
                                   PicHandle              thumbnail,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x702B, 0xAAA3);
  
  EXTERN_API( OSErr )
  MakeThumbnailFromPixMap         (PixMapHandle           src,
                                   const Rect *           srcRect,
                                   short                  colorDepth,
                                   PicHandle              thumbnail,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x702C, 0xAAA3);
  
  EXTERN_API( OSErr )
  TrimImage                       (ImageDescriptionHandle  desc,
                                   Ptr                    inData,
                                   long                   inBufferSize,
                                   ICMDataProcRecordPtr   dataProc,
                                   Ptr                    outData,
                                   long                   outBufferSize,
                                   ICMFlushProcRecordPtr  flushProc,
                                   Rect *                 trimRect,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x702D, 0xAAA3);
  
  EXTERN_API( OSErr )
  ConvertImage                    (ImageDescriptionHandle  srcDD,
                                   Ptr                    srcData,
                                   short                  colorDepth,
                                   CTabHandle             ctable,
                                   CodecQ                 accuracy,
                                   CodecQ                 quality,
                                   CodecType              cType,
                                   CodecComponent         codec,
                                   ImageDescriptionHandle  dstDD,
                                   Ptr                    dstData)                            TWOWORDINLINE(0x7030, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCompressedPixMapInfo         (PixMapPtr              pix,
                                   ImageDescriptionHandle * desc,
                                   Ptr *                  data,
                                   long *                 bufferSize,
                                   ICMDataProcRecord *    dataProc,
                                   ICMProgressProcRecord * progressProc)                      TWOWORDINLINE(0x7037, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCompressedPixMapInfo         (PixMapPtr              pix,
                                   ImageDescriptionHandle  desc,
                                   Ptr                    data,
                                   long                   bufferSize,
                                   ICMDataProcRecordPtr   dataProc,
                                   ICMProgressProcRecordPtr  progressProc)                    TWOWORDINLINE(0x7038, 0xAAA3);
  
  EXTERN_API( void )
  StdPix                          (PixMapPtr              src,
                                   const Rect *           srcRect,
                                   MatrixRecordPtr        matrix,
                                   short                  mode,
                                   RgnHandle              mask,
                                   PixMapPtr              matte,
                                   const Rect *           matteRect,
                                   short                  flags)                              TWOWORDINLINE(0x700C, 0xAAA3);
  
  EXTERN_API( OSErr )
  TransformRgn                    (MatrixRecordPtr        matrix,
                                   RgnHandle              rgn)                                TWOWORDINLINE(0x7039, 0xAAA3);
  
  
********* preview stuff *********

  
  EXTERN_API( void )
  SFGetFilePreview                (Point                  where,
                                   ConstStr255Param       prompt,
                                   FileFilterUPP          fileFilter,
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList,
                                   DlgHookUPP             dlgHook,
                                   SFReply *              reply)                              TWOWORDINLINE(0x7041, 0xAAA3);
  
  EXTERN_API( void )
  SFPGetFilePreview               (Point                  where,
                                   ConstStr255Param       prompt,
                                   FileFilterUPP          fileFilter,
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList,
                                   DlgHookUPP             dlgHook,
                                   SFReply *              reply,
                                   short                  dlgID,
                                   ModalFilterUPP         filterProc)                         TWOWORDINLINE(0x7042, 0xAAA3);
  
  EXTERN_API( void )
  StandardGetFilePreview          (FileFilterUPP          fileFilter,
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList,
                                   StandardFileReply *    reply)                              TWOWORDINLINE(0x7043, 0xAAA3);
  
  EXTERN_API( void )
  CustomGetFilePreview            (FileFilterYDUPP        fileFilter,
                                   short                  numTypes,
                                   ConstSFTypeListPtr     typeList,
                                   StandardFileReply *    reply,
                                   short                  dlgID,
                                   Point                  where,
                                   DlgHookYDUPP           dlgHook,
                                   ModalFilterYDUPP       filterProc,
                                   ActivationOrderListPtr  activeList,
                                   ActivateYDUPP          activateProc,
                                   void *                 yourDataPtr)                        TWOWORDINLINE(0x7044, 0xAAA3);
  
  EXTERN_API( OSErr )
  MakeFilePreview                 (short                  resRefNum,
                                   ICMProgressProcRecordPtr  progress)                        TWOWORDINLINE(0x7045, 0xAAA3);
  
  EXTERN_API( OSErr )
  AddFilePreview                  (short                  resRefNum,
                                   OSType                 previewType,
                                   Handle                 previewData)                        TWOWORDINLINE(0x7046, 0xAAA3);
  
  enum {
      sfpItemPreviewAreaUser      = 11,
      sfpItemPreviewStaticText    = 12,
      sfpItemPreviewDividerUser   = 13,
      sfpItemCreatePreviewButton  = 14,
      sfpItemShowPreviewButton    = 15
  };
  
  struct PreviewResourceRecord {
      unsigned long                   modDate;
      short                           version;
      OSType                          resType;
      short                           resID;
  };
  typedef struct PreviewResourceRecord    PreviewResourceRecord;
  
  typedef PreviewResourceRecord *         PreviewResourcePtr;
  typedef PreviewResourcePtr *            PreviewResource;
  EXTERN_API( void )
  AlignScreenRect                 (Rect *                 rp,
                                   ICMAlignmentProcRecordPtr  alignmentProc)                  FOURWORDINLINE(0x203C, 0x0008, 0x004C, 0xAAA3);
  
  EXTERN_API( void )
  AlignWindow                     (WindowRef              wp,
                                   Boolean                front,
                                   const Rect *           alignmentRect,
                                   ICMAlignmentProcRecordPtr  alignmentProc)                  FOURWORDINLINE(0x203C, 0x000E, 0x004D, 0xAAA3);
  
  EXTERN_API( void )
  DragAlignedWindow               (WindowRef              wp,
                                   Point                  startPt,
                                   Rect *                 boundsRect,
                                   Rect *                 alignmentRect,
                                   ICMAlignmentProcRecordPtr  alignmentProc)                  FOURWORDINLINE(0x203C, 0x0014, 0x004E, 0xAAA3);
  
  EXTERN_API( long )
  DragAlignedGrayRgn              (RgnHandle              theRgn,
                                   Point                  startPt,
                                   Rect *                 boundsRect,
                                   Rect *                 slopRect,
                                   short                  axis,
                                   UniversalProcPtr       actionProc,
                                   Rect *                 alignmentRect,
                                   ICMAlignmentProcRecordPtr  alignmentProc)                  FOURWORDINLINE(0x203C, 0x001E, 0x004F, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCSequenceDataRateParams      (ImageSequence          seqID,
                                   DataRateParamsPtr      params)                             FOURWORDINLINE(0x203C, 0x0008, 0x0050, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCSequenceFrameNumber         (ImageSequence          seqID,
                                   long                   frameNumber)                        FOURWORDINLINE(0x203C, 0x0008, 0x0051, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetCSequencePreferredPacketSize (ImageSequence          seqID,
                                   long                   preferredPacketSizeInBytes)         FOURWORDINLINE(0x203C, 0x0008, 0x0078, 0xAAA3);
  
  EXTERN_API( OSErr )
  NewImageGWorld                  (GWorldPtr *            gworld,
                                   ImageDescriptionHandle  idh,
                                   GWorldFlags            flags)                              FOURWORDINLINE(0x203C, 0x000C, 0x0052, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCSequenceDataRateParams      (ImageSequence          seqID,
                                   DataRateParamsPtr      params)                             FOURWORDINLINE(0x203C, 0x0008, 0x0053, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetCSequenceFrameNumber         (ImageSequence          seqID,
                                   long *                 frameNumber)                        FOURWORDINLINE(0x203C, 0x0008, 0x0054, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetBestDeviceRect               (GDHandle *             gdh,
                                   Rect *                 rp)                                 FOURWORDINLINE(0x203C, 0x0008, 0x0055, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetSequenceProgressProc         (ImageSequence          seqID,
                                   ICMProgressProcRecord * progressProc)                      FOURWORDINLINE(0x203C, 0x0008, 0x0056, 0xAAA3);
  
  EXTERN_API( OSErr )
  GDHasScale                      (GDHandle               gdh,
                                   short                  depth,
                                   Fixed *                scale)                              FOURWORDINLINE(0x203C, 0x000A, 0x005A, 0xAAA3);
  
  EXTERN_API( OSErr )
  GDGetScale                      (GDHandle               gdh,
                                   Fixed *                scale,
                                   short *                flags)                              FOURWORDINLINE(0x203C, 0x000C, 0x005B, 0xAAA3);
  
  EXTERN_API( OSErr )
  GDSetScale                      (GDHandle               gdh,
                                   Fixed                  scale,
                                   short                  flags)                              FOURWORDINLINE(0x203C, 0x000A, 0x005C, 0xAAA3);
  
  EXTERN_API( OSErr )
  ICMShieldSequenceCursor         (ImageSequence          seqID)                              FOURWORDINLINE(0x203C, 0x0004, 0x0062, 0xAAA3);
  
  EXTERN_API( void )
  ICMDecompressComplete           (ImageSequence          seqID,
                                   OSErr                  err,
                                   short                  flag,
                                   ICMCompletionProcRecordPtr  completionRtn)                 FOURWORDINLINE(0x203C, 0x000C, 0x0063, 0xAAA3);
  
  EXTERN_API( OSErr )
  ICMDecompressCompleteS          (ImageSequence          seqID,
                                   OSErr                  err,
                                   short                  flag,
                                   ICMCompletionProcRecordPtr  completionRtn)                 FOURWORDINLINE(0x203C, 0x000C, 0x0082, 0xAAA3);
  
  EXTERN_API( OSErr )
  ICMSequenceLockBits             (ImageSequence          seqID,
                                   PixMapPtr              dst,
                                   long                   flags)                              FOURWORDINLINE(0x203C, 0x000C, 0x007C, 0xAAA3);
  
  EXTERN_API( OSErr )
  ICMSequenceUnlockBits           (ImageSequence          seqID,
                                   long                   flags)                              FOURWORDINLINE(0x203C, 0x0008, 0x007D, 0xAAA3);
  
  enum {
      kICMPixelFormatIsPlanarMask = 0x0F,                         /* these bits in formatFlags indicate how many planes there are; they're 0 if chunky*/
      kICMPixelFormatIsIndexed    = (1L << 4),
      kICMPixelFormatIsSupportedByQD = (1L << 5),
      kICMPixelFormatIsMonochrome = (1L << 6),
      kICMPixelFormatHasAlphaChannel = (1L << 7)
  };
  
  struct ICMPixelFormatInfo {
      long                            size;                       /* caller MUST fill this in with sizeof(ICMPixelFormatInfo) before calling ICMGet/SetPixelFormatInfo*/
      unsigned long                   formatFlags;
      short                           bitsPerPixel[14];           /* list each plane's bits per pixel separately if planar*/
                                                                  /* new field for QuickTime 4.1*/
      Fixed                           defaultGammaLevel;
                                                                  /* new fields for QuickTime 6.0*/
      short                           horizontalSubsampling[14];  /* per plane; use 1 if plane is not subsampled*/
      short                           verticalSubsampling[14];    /* per plane; use 1 if plane is not subsampled*/
  };
  typedef struct ICMPixelFormatInfo       ICMPixelFormatInfo;
  typedef ICMPixelFormatInfo *            ICMPixelFormatInfoPtr;
  /* IMPORTANT: Fill in theInfo->size with sizeof(ICMPixelFormatInfo) before calling ICMGetPixelFormatInfo */
  EXTERN_API( OSErr )
  ICMGetPixelFormatInfo           (OSType                 PixelFormat,
                                   ICMPixelFormatInfoPtr  theInfo)                            FOURWORDINLINE(0x203C, 0x0008, 0x0083, 0xAAA3);
  
  /* IMPORTANT: Fill in theInfo->size with sizeof(ICMPixelFormatInfo) before calling ICMSetPixelFormatInfo */
  EXTERN_API( OSErr )
  ICMSetPixelFormatInfo           (OSType                 PixelFormat,
                                   ICMPixelFormatInfoPtr  theInfo)                            FOURWORDINLINE(0x203C, 0x0008, 0x008A, 0xAAA3);
  
  enum {
      kICMGetChainUltimateParent  = 0,
      kICMGetChainParent          = 1,
      kICMGetChainChild           = 2,
      kICMGetChainUltimateChild   = 3
  };
  
  EXTERN_API( OSErr )
  ICMSequenceGetChainMember       (ImageSequence          seqID,
                                   ImageSequence *        retSeqID,
                                   long                   flags)                              FOURWORDINLINE(0x203C, 0x000C, 0x007E, 0xAAA3);
  
  EXTERN_API( OSErr )
  SetDSequenceTimeCode            (ImageSequence          seqID,
                                   void *                 timeCodeFormat,
                                   void *                 timeCodeTime)                       FOURWORDINLINE(0x203C, 0x000C, 0x0064, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceNewMemory             (ImageSequence          seqID,
                                   Ptr *                  data,
                                   Size                   dataSize,
                                   long                   dataUse,
                                   ICMMemoryDisposedUPP   memoryGoneProc,
                                   void *                 refCon)                             FOURWORDINLINE(0x203C, 0x0018, 0x0066, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceDisposeMemory         (ImageSequence          seqID,
                                   Ptr                    data)                               FOURWORDINLINE(0x203C, 0x0008, 0x0067, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceNewDataSource         (ImageSequence          seqID,
                                   ImageSequenceDataSource * sourceID,
                                   OSType                 sourceType,
                                   long                   sourceInputNumber,
                                   Handle                 dataDescription,
                                   ICMConvertDataFormatUPP  transferProc,
                                   void *                 refCon)                             FOURWORDINLINE(0x203C, 0x001C, 0x0068, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceDisposeDataSource     (ImageSequenceDataSource  sourceID)                         FOURWORDINLINE(0x203C, 0x0004, 0x0069, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceSetSourceData         (ImageSequenceDataSource  sourceID,
                                   void *                 data,
                                   long                   dataSize)                           FOURWORDINLINE(0x203C, 0x000C, 0x006A, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceChangedSourceData     (ImageSequenceDataSource  sourceID)                         FOURWORDINLINE(0x203C, 0x0004, 0x006B, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceSetSourceDataQueue    (ImageSequenceDataSource  sourceID,
                                   QHdrPtr                dataQueue)                          FOURWORDINLINE(0x203C, 0x0008, 0x007B, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceGetDataSource         (ImageSequence          seqID,
                                   ImageSequenceDataSource * sourceID,
                                   OSType                 sourceType,
                                   long                   sourceInputNumber)                  FOURWORDINLINE(0x203C, 0x0010, 0x007F, 0xAAA3);
  
  EXTERN_API( OSErr )
  PtInDSequenceData               (ImageSequence          seqID,
                                   void *                 data,
                                   Size                   dataSize,
                                   Point                  where,
                                   Boolean *              hit)                                FOURWORDINLINE(0x203C, 0x0014, 0x006C, 0xAAA3);
  
  EXTERN_API( OSErr )
  HitTestDSequenceData            (ImageSequence          seqID,
                                   void *                 data,
                                   Size                   dataSize,
                                   Point                  where,
                                   long *                 hit,
                                   long                   hitFlags)                           FOURWORDINLINE(0x203C, 0x0018, 0x0087, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetGraphicsImporterForFile      (const FSSpec *         theFile,
                                   ComponentInstance *    gi)                                 FOURWORDINLINE(0x203C, 0x0008, 0x006E, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetGraphicsImporterForDataRef   (Handle                 dataRef,
                                   OSType                 dataRefType,
                                   ComponentInstance *    gi)                                 FOURWORDINLINE(0x203C, 0x000C, 0x0077, 0xAAA3);
  
  enum {
      kDontUseValidateToFindGraphicsImporter = 1L << 0
  };
  
  EXTERN_API( OSErr )
  GetGraphicsImporterForFileWithFlags (const FSSpec *     theFile,
                                   ComponentInstance *    gi,
                                   long                   flags)                              FOURWORDINLINE(0x203C, 0x000C, 0x0084, 0xAAA3);
  
  EXTERN_API( OSErr )
  GetGraphicsImporterForDataRefWithFlags (Handle          dataRef,
                                   OSType                 dataRefType,
                                   ComponentInstance *    gi,
                                   long                   flags)                              FOURWORDINLINE(0x203C, 0x0010, 0x0085, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTGetFileNameExtension          (ConstStrFileNameParam  fileName,
                                   OSType                 fileType,
                                   OSType *               extension)                          FOURWORDINLINE(0x203C, 0x000C, 0x0061, 0xAAA3);
  
  EXTERN_API( OSErr )
  ImageTranscodeSequenceBegin     (ImageTranscodeSequence * its,
                                   ImageDescriptionHandle  srcDesc,
                                   OSType                 destType,
                                   ImageDescriptionHandle * dstDesc,
                                   void *                 data,
                                   long                   dataSize)                           FOURWORDINLINE(0x203C, 0x0018, 0x006F, 0xAAA3);
  
  EXTERN_API( OSErr )
  ImageTranscodeSequenceEnd       (ImageTranscodeSequence  its)                               FOURWORDINLINE(0x203C, 0x0004, 0x0070, 0xAAA3);
  
  EXTERN_API( OSErr )
  ImageTranscodeFrame             (ImageTranscodeSequence  its,
                                   void *                 srcData,
                                   long                   srcDataSize,
                                   void **                dstData,
                                   long *                 dstDataSize)                        FOURWORDINLINE(0x203C, 0x0014, 0x0071, 0xAAA3);
  
  EXTERN_API( OSErr )
  ImageTranscodeDisposeFrameData  (ImageTranscodeSequence  its,
                                   void *                 dstData)                            FOURWORDINLINE(0x203C, 0x0008, 0x0072, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceInvalidate            (ImageSequence          seqID,
                                   RgnHandle              invalRgn)                           FOURWORDINLINE(0x203C, 0x0008, 0x0073, 0xAAA3);
  
  EXTERN_API( OSErr )
  CDSequenceSetTimeBase           (ImageSequence          seqID,
                                   void *                 base)                               FOURWORDINLINE(0x203C, 0x0008, 0x0079, 0xAAA3);
  
  EXTERN_API( OSErr )
  ImageFieldSequenceBegin         (ImageFieldSequence *   ifs,
                                   ImageDescriptionHandle  desc1,
                                   ImageDescriptionHandle  desc2,
                                   ImageDescriptionHandle  descOut)                           FOURWORDINLINE(0x203C, 0x0010, 0x006D, 0xAAA3);
  
  EXTERN_API( OSErr )
  ImageFieldSequenceExtractCombine (ImageFieldSequence    ifs,
                                   long                   fieldFlags,
                                   void *                 data1,
                                   long                   dataSize1,
                                   void *                 data2,
                                   long                   dataSize2,
                                   void *                 outputData,
                                   long *                 outDataSize)                        FOURWORDINLINE(0x203C, 0x0020, 0x0075, 0xAAA3);
  
  EXTERN_API( OSErr )
  ImageFieldSequenceEnd           (ImageFieldSequence     ifs)                                FOURWORDINLINE(0x203C, 0x0004, 0x0076, 0xAAA3);
  
  enum {
      kICMTempThenAppMemory       = 1L << 12,
      kICMAppThenTempMemory       = 1L << 13
  };
  
  EXTERN_API( OSErr )
  QTNewGWorld                     (GWorldPtr *            offscreenGWorld,
                                   OSType                 PixelFormat,
                                   const Rect *           boundsRect,
                                   CTabHandle             cTable,
                                   GDHandle               aGDevice,
                                   GWorldFlags            flags)                              FOURWORDINLINE(0x203C, 0x0018, 0x0080, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTNewGWorldFromPtr              (GWorldPtr *            gw,
                                   OSType                 pixelFormat,
                                   const Rect *           boundsRect,
                                   CTabHandle             cTable,
                                   GDHandle               aGDevice,
                                   GWorldFlags            flags,
                                   void *                 baseAddr,
                                   long                   rowBytes)                           FOURWORDINLINE(0x203C, 0x0020, 0x008B, 0xAAA3);
  
  EXTERN_API( GWorldFlags )
  QTUpdateGWorld                  (GWorldPtr *            offscreenGWorld,
                                   OSType                 PixelFormat,
                                   const Rect *           boundsRect,
                                   CTabHandle             cTable,
                                   GDHandle               aGDevice,
                                   GWorldFlags            flags)                              FOURWORDINLINE(0x203C, 0x0018, 0x0081, 0xAAA3);
  
  EXTERN_API( OSErr )
  MakeImageDescriptionForPixMap   (PixMapHandle           pixmap,
                                   ImageDescriptionHandle * idh)                              FOURWORDINLINE(0x203C, 0x0008, 0x007A, 0xAAA3);
  
  EXTERN_API( OSErr )
  MakeImageDescriptionForEffect   (OSType                 effectType,
                                   ImageDescriptionHandle * idh)                              FOURWORDINLINE(0x203C, 0x0008, 0x0092, 0xAAA3);
  
  EXTERN_API( short )
  QTGetPixelSize                  (OSType                 PixelFormat)                        FOURWORDINLINE(0x203C, 0x0004, 0x0086, 0xAAA3);
  
  EXTERN_API( short )
  QTGetPixelFormatDepthForImageDescription (OSType        pixelFormat)                        FOURWORDINLINE(0x203C, 0x0004, 0x00A3, 0xAAA3);
  
  EXTERN_API( long )
  QTGetPixMapPtrRowBytes          (PixMapPtr              pm)                                 FOURWORDINLINE(0x203C, 0x0004, 0x008D, 0xAAA3);
  
  EXTERN_API( long )
  QTGetPixMapHandleRowBytes       (PixMapHandle           pm)                                 FOURWORDINLINE(0x203C, 0x0004, 0x008E, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTSetPixMapPtrRowBytes          (PixMapPtr              pm,
                                   long                   rowBytes)                           FOURWORDINLINE(0x203C, 0x0008, 0x0090, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTSetPixMapHandleRowBytes       (PixMapHandle           pm,
                                   long                   rowBytes)                           FOURWORDINLINE(0x203C, 0x0008, 0x008F, 0xAAA3);
  
  enum {
      kQTUsePlatformDefaultGammaLevel = 0,                        /* When decompressing into this PixMap, gamma-correct to the platform's standard gamma. */
      kQTUseSourceGammaLevel      = -1L,                          /* When decompressing into this PixMap, don't perform gamma-correction. */
      kQTCCIR601VideoGammaLevel   = 0x00023333                    /* 2.2, standard television video gamma.*/
  };
  
  EXTERN_API( Fixed )
  QTGetPixMapPtrGammaLevel        (PixMapPtr              pm)                                 FOURWORDINLINE(0x203C, 0x0004, 0x0093, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTSetPixMapPtrGammaLevel        (PixMapPtr              pm,
                                   Fixed                  gammaLevel)                         FOURWORDINLINE(0x203C, 0x0008, 0x0094, 0xAAA3);
  
  EXTERN_API( Fixed )
  QTGetPixMapHandleGammaLevel     (PixMapHandle           pm)                                 FOURWORDINLINE(0x203C, 0x0004, 0x0096, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTSetPixMapHandleGammaLevel     (PixMapHandle           pm,
                                   Fixed                  gammaLevel)                         FOURWORDINLINE(0x203C, 0x0008, 0x0097, 0xAAA3);
  
  EXTERN_API( Fixed )
  QTGetPixMapPtrRequestedGammaLevel (PixMapPtr            pm)                                 FOURWORDINLINE(0x203C, 0x0004, 0x0098, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTSetPixMapPtrRequestedGammaLevel (PixMapPtr            pm,
                                   Fixed                  requestedGammaLevel)                FOURWORDINLINE(0x203C, 0x0008, 0x0099, 0xAAA3);
  
  EXTERN_API( Fixed )
  QTGetPixMapHandleRequestedGammaLevel (PixMapHandle      pm)                                 FOURWORDINLINE(0x203C, 0x0004, 0x009A, 0xAAA3);
  
  EXTERN_API( OSErr )
  QTSetPixMapHandleRequestedGammaLevel (PixMapHandle      pm,
                                   Fixed                  requestedGammaLevel)                FOURWORDINLINE(0x203C, 0x0008, 0x009B, 0xAAA3);
  
  EXTERN_API( OSErr )
  QuadToQuadMatrix                (const Fixed *          source,
                                   const Fixed *          dest,
                                   MatrixRecord *         map)                                FOURWORDINLINE(0x203C, 0x000C, 0x0095, 0xAAA3);
  
  enum {
      identityMatrixType          = 0x00,                         /* result if matrix is identity */
      translateMatrixType         = 0x01,                         /* result if matrix translates */
      scaleMatrixType             = 0x02,                         /* result if matrix scales */
      scaleTranslateMatrixType    = 0x03,                         /* result if matrix scales and translates */
      linearMatrixType            = 0x04,                         /* result if matrix is general 2 x 2 */
      linearTranslateMatrixType   = 0x05,                         /* result if matrix is general 2 x 2 and translates */
      perspectiveMatrixType       = 0x06                          /* result if matrix is general 3 x 3 */
  };
  
  typedef unsigned short                  MatrixFlags;
  EXTERN_API( short )
  GetMatrixType                   (const MatrixRecord *   m)                                  TWOWORDINLINE(0x7014, 0xABC2);
  
  EXTERN_API( void )
  CopyMatrix                      (const MatrixRecord *   m1,
                                   MatrixRecord *         m2)                                 TWOWORDINLINE(0x7020, 0xABC2);
  
  EXTERN_API( Boolean )
  EqualMatrix                     (const MatrixRecord *   m1,
                                   const MatrixRecord *   m2)                                 TWOWORDINLINE(0x7021, 0xABC2);
  
  EXTERN_API( void )
  SetIdentityMatrix               (MatrixRecord *         matrix)                             TWOWORDINLINE(0x7015, 0xABC2);
  
  EXTERN_API( void )
  TranslateMatrix                 (MatrixRecord *         m,
                                   Fixed                  deltaH,
                                   Fixed                  deltaV)                             TWOWORDINLINE(0x7019, 0xABC2);
  
  EXTERN_API( void )
  RotateMatrix                    (MatrixRecord *         m,
                                   Fixed                  degrees,
                                   Fixed                  aboutX,
                                   Fixed                  aboutY)                             TWOWORDINLINE(0x7016, 0xABC2);
  
  EXTERN_API( void )
  ScaleMatrix                     (MatrixRecord *         m,
                                   Fixed                  scaleX,
                                   Fixed                  scaleY,
                                   Fixed                  aboutX,
                                   Fixed                  aboutY)                             TWOWORDINLINE(0x7017, 0xABC2);
  
  EXTERN_API( void )
  SkewMatrix                      (MatrixRecord *         m,
                                   Fixed                  skewX,
                                   Fixed                  skewY,
                                   Fixed                  aboutX,
                                   Fixed                  aboutY)                             TWOWORDINLINE(0x7018, 0xABC2);
  
  EXTERN_API( OSErr )
  TransformFixedPoints            (const MatrixRecord *   m,
                                   FixedPoint *           fpt,
                                   long                   count)                              TWOWORDINLINE(0x7022, 0xABC2);
  
  EXTERN_API( OSErr )
  TransformPoints                 (const MatrixRecord *   mp,
                                   Point *                pt1,
                                   long                   count)                              TWOWORDINLINE(0x7023, 0xABC2);
  
  EXTERN_API( Boolean )
  TransformFixedRect              (const MatrixRecord *   m,
                                   FixedRect *            fr,
                                   FixedPoint *           fpp)                                TWOWORDINLINE(0x7024, 0xABC2);
  
  EXTERN_API( Boolean )
  TransformRect                   (const MatrixRecord *   m,
                                   Rect *                 r,
                                   FixedPoint *           fpp)                                TWOWORDINLINE(0x7025, 0xABC2);
  
  EXTERN_API( Boolean )
  InverseMatrix                   (const MatrixRecord *   m,
                                   MatrixRecord *         im)                                 TWOWORDINLINE(0x701C, 0xABC2);
  
  EXTERN_API( void )
  ConcatMatrix                    (const MatrixRecord *   a,
                                   MatrixRecord *         b)                                  TWOWORDINLINE(0x701B, 0xABC2);
  
  EXTERN_API( void )
  RectMatrix                      (MatrixRecord *         matrix,
                                   const Rect *           srcRect,
                                   const Rect *           dstRect)                            TWOWORDINLINE(0x701E, 0xABC2);
  
  EXTERN_API( void )
  MapMatrix                       (MatrixRecord *         matrix,
                                   const Rect *           fromRect,
                                   const Rect *           toRect)                             TWOWORDINLINE(0x701D, 0xABC2);
  
  EXTERN_API( void )
  CompAdd                         (wide *                 src,
                                   wide *                 dst)                                TWOWORDINLINE(0x7001, 0xABC2);
  
  EXTERN_API( void )
  CompSub                         (wide *                 src,
                                   wide *                 dst)                                TWOWORDINLINE(0x7002, 0xABC2);
  
  EXTERN_API( void )
  CompNeg                         (wide *                 dst)                                TWOWORDINLINE(0x7003, 0xABC2);
  
  EXTERN_API( void )
  CompShift                       (wide *                 src,
                                   short                  shift)                              TWOWORDINLINE(0x7004, 0xABC2);
  
  EXTERN_API( void )
  CompMul                         (long                   src1,
                                   long                   src2,
                                   wide *                 dst)                                TWOWORDINLINE(0x7005, 0xABC2);
  
  EXTERN_API( long )
  CompDiv                         (wide *                 numerator,
                                   long                   denominator,
                                   long *                 remainder)                          TWOWORDINLINE(0x7006, 0xABC2);
  
  EXTERN_API( void )
  CompFixMul                      (wide *                 compSrc,
                                   Fixed                  fixSrc,
                                   wide *                 compDst)                            TWOWORDINLINE(0x7007, 0xABC2);
  
  EXTERN_API( void )
  CompMulDiv                      (wide *                 co,
                                   long                   mul,
                                   long                   divisor)                            TWOWORDINLINE(0x7008, 0xABC2);
  
  EXTERN_API( void )
  CompMulDivTrunc                 (wide *                 co,
                                   long                   mul,
                                   long                   divisor,
                                   long *                 remainder)                          TWOWORDINLINE(0x700C, 0xABC2);
  
  EXTERN_API( long )
  CompCompare                     (const wide *           a,
                                   const wide *           minusb)                             TWOWORDINLINE(0x7009, 0xABC2);
  
  EXTERN_API( unsigned long )
  CompSquareRoot                  (const wide *           src)                                TWOWORDINLINE(0x7011, 0xABC2);
  
  EXTERN_API( Fixed )
  FixMulDiv                       (Fixed                  src,
                                   Fixed                  mul,
                                   Fixed                  divisor)                            TWOWORDINLINE(0x700A, 0xABC2);
  
  EXTERN_API( Fixed )
  UnsignedFixMulDiv               (Fixed                  src,
                                   Fixed                  mul,
                                   Fixed                  divisor)                            TWOWORDINLINE(0x700D, 0xABC2);
  
  EXTERN_API( Fract )
  FracSinCos                      (Fixed                  degree,
                                   Fract *                cosOut)                             TWOWORDINLINE(0x700B, 0xABC2);
  
  EXTERN_API( Fixed )
  FixExp2                         (Fixed                  src)                                TWOWORDINLINE(0x700E, 0xABC2);
  
  EXTERN_API( Fixed )
  FixLog2                         (Fixed                  src)                                TWOWORDINLINE(0x700F, 0xABC2);
  
  EXTERN_API( Fixed )
  FixPow                          (Fixed                  base,
                                   Fixed                  exp)                                TWOWORDINLINE(0x7010, 0xABC2);
  
  typedef ComponentInstance               GraphicsImportComponent;
  enum {
      GraphicsImporterComponentType = FOUR_CHAR_CODE('grip')
  };
  
  enum {
      graphicsImporterUsesImageDecompressor = 1L << 23
  };
  
  enum {
      quickTimeImageFileImageDescriptionAtom = FOUR_CHAR_CODE('idsc'),
      quickTimeImageFileImageDataAtom = FOUR_CHAR_CODE('idat'),
      quickTimeImageFileMetaDataAtom = FOUR_CHAR_CODE('meta'),
      quickTimeImageFileColorSyncProfileAtom = FOUR_CHAR_CODE('iicc')
  };
  
  enum {
      graphicsImporterDrawsAllPixels = 0,
      graphicsImporterDoesntDrawAllPixels = 1,
      graphicsImporterDontKnowIfDrawAllPixels = 2
  };
  
  /* Flags for GraphicsImportSetFlags */
  enum {
      kGraphicsImporterDontDoGammaCorrection = 1L << 0,
      kGraphicsImporterTrustResolutionFromFile = 1L << 1,
      kGraphicsImporterEnableSubPixelPositioning = 1L << 2
  };
  
  enum {
      kGraphicsExportGroup        = FOUR_CHAR_CODE('expo'),
      kGraphicsExportFileType     = FOUR_CHAR_CODE('ftyp'),
      kGraphicsExportMIMEType     = FOUR_CHAR_CODE('mime'),
      kGraphicsExportExtension    = FOUR_CHAR_CODE('ext '),
      kGraphicsExportDescription  = FOUR_CHAR_CODE('desc')
  };
  
  /* User data types for layers of Photoshop files */
  enum {
      kQTPhotoshopLayerMode       = FOUR_CHAR_CODE('lmod'),       /* OSType */
      kQTPhotoshopLayerOpacity    = FOUR_CHAR_CODE('lopa'),       /* UInt8, 0 = transparent .. 255 = opaque */
      kQTPhotoshopLayerClipping   = FOUR_CHAR_CODE('lclp'),       /* UInt8, 0 = base, 1 = non-base */
      kQTPhotoshopLayerFlags      = FOUR_CHAR_CODE('lflg'),       /* UInt8 */
      kQTPhotoshopLayerName       = FOUR_CHAR_CODE('©lnm'),       /* Text */
      kQTPhotoshopLayerUnicodeName = FOUR_CHAR_CODE('luni')       /* Unicode characters, not terminated */
  };
  
  /* User data returned by graphics importers to suggest intended use for indexed images */
  enum {
      kQTIndexedImageType         = FOUR_CHAR_CODE('nth?'),       /* 1 or more OSTypes, such as the following values: */
      kQTIndexedImageIsThumbnail  = FOUR_CHAR_CODE('n=th'),       /* The image at this index is a thumbnail. */
      kQTIndexedImageIsLayer      = FOUR_CHAR_CODE('n=ly'),       /* The image at this index is a layer. */
      kQTIndexedImageIsPage       = FOUR_CHAR_CODE('n=pg'),       /* The image at this index is a page. */
      kQTIndexedImageIsMultiResolution = FOUR_CHAR_CODE('n=rs')   /* The image at this index is one of several identical images at different resolutions. */
  };
  
  /* Other user data types returned by graphics importers */
  enum {
      kQTTIFFUserDataPrefix       = 0x74690000,                   /* Added to some tag values in TIFF IFDs to generate user data codes.  (0x7469 is 'ti'.) */
                                                                  /* For example, YCbCrPositioning is tag 0x0213, so its user data code is 0x74690213. */
      kQTTIFFExifUserDataPrefix   = 0x65780000,                   /* Added to tag values in Exif IFDs to generate user data codes.  (0x6578 is 'ex'.) */
                                                                  /* For example, DateTimeOriginal is tag 0x9003, so its user data code is 0x65789003. */
      kQTTIFFExifGPSUserDataPrefix = 0x67700000,                  /* Added to tag values in Exif GPS IFDs to generate user data codes.  (0x6770 is 'gp'.) */
                                                                  /* For example, GPSAltitude is tag 0x0006, so its user data code is 0x6770006. */
      kQTAlphaMode                = FOUR_CHAR_CODE('almo'),       /* UInt32; eg, graphicsModeStraightAlpha or graphicsModePreBlackAlpha */
      kQTAlphaModePreMulColor     = FOUR_CHAR_CODE('almp'),       /* RGBColor; used if kQTAlphaMode is graphicsModePreMulColorAlpha */
      kUserDataIPTC               = FOUR_CHAR_CODE('iptc')
  };
  
  /* Found in TIFF and Exif JPEG files */
  enum {
      kQTTIFFUserDataOrientation  = 0x74690112,                   /* 1 SHORT */
      kQTTIFFUserDataTransferFunction = 0x7469012D,               /* n SHORTs */
      kQTTIFFUserDataWhitePoint   = 0x7469013E,                   /* 2 RATIONALs */
      kQTTIFFUserDataPrimaryChromaticities = 0x7469013F,          /* 6 RATIONALs */
      kQTTIFFUserDataTransferRange = 0x74690156,                  /* 6 SHORTs */
      kQTTIFFUserDataYCbCrPositioning = 0x74690213,               /* 1 SHORT */
      kQTTIFFUserDataReferenceBlackWhite = 0x74690214             /* n LONGs */
  };
  
  /* Found in GeoTIFF files; defined in the GeoTIFF 1.0 spec */
  enum {
      kQTTIFFUserDataModelPixelScale = 0x7469830E,                /* 3 DOUBLEs */
      kQTTIFFUserDataModelTransformation = 0x746985D8,            /* 16 DOUBLEs */
      kQTTIFFUserDataModelTiepoint = 0x74698482,                  /* n DOUBLEs */
      kQTTIFFUserDataGeoKeyDirectory = 0x746987AF,                /* n SHORTs */
      kQTTIFFUserDataGeoDoubleParams = 0x746987B0,                /* n DOUBLEs */
      kQTTIFFUserDataGeoAsciiParams = 0x746987B1,                 /* n ASCIIs */
      kQTTIFFUserDataIntergraphMatrix = 0x74698480                /* 16 or 17 DOUBLEs */
  };
  
  /* Found in Exif TIFF and Exif JPEG files; defined in the Exif 2.1 spec */
  enum {
      kQTExifUserDataExifVersion  = 0x65789000,                   /* 4 bytes (import only) */
      kQTExifUserDataFlashPixVersion = 0x6578A000,                /* 4 bytes */
      kQTExifUserDataColorSpace   = 0x6578A001,                   /* 1 SHORT */
      kQTExifUserDataComponentsConfiguration = 0x65789101,        /* 4 bytes */
      kQTExifUserDataCompressedBitsPerPixel = 0x65789102,         /* 1 RATIONAL */
      kQTExifUserDataPixelXDimension = 0x6578A002,                /* 1 SHORT or LONG */
      kQTExifUserDataPixelYDimension = 0x6578A003,                /* 1 SHORT or LONG */
      kQTExifUserDataMakerNote    = 0x6578927C,                   /* n bytes */
      kQTExifUserDataUserComment  = 0x6578928C,                   /* n bytes */
      kQTExifUserDataRelatedSoundFile = 0x6578A004,               /* 13 ASCIIs*/
      kQTExifUserDataDateTimeOriginal = 0x65789003,               /* 20 ASCIIs */
      kQTExifUserDataDateTimeDigitized = 0x65789004,              /* 20 ASCIIs */
      kQTExifUserDataSubSecTime   = 0x65789290,                   /* n ASCIIs */
      kQTExifUserDataSubSecTimeOriginal = 0x65789291,             /* n ASCIIs */
      kQTExifUserDataSubSecTimeDigitized = 0x65789292,            /* n ASCIIs */
      kQTExifUserDataExposureTime = 0x6578829A,                   /* 1 RATIONAL */
      kQTExifUserDataFNumber      = 0x6578829D,                   /* 1 RATIONAL */
      kQTExifUserDataExposureProgram = 0x65788822,                /* 1 SHORT */
      kQTExifUserDataSpectralSensitivity = 0x65788824,            /* n ASCIIs */
      kQTExifUserDataISOSpeedRatings = 0x65788827,                /* n SHORTs */
      kQTExifUserDataShutterSpeedValue = 0x65789201,              /* 1 SIGNED RATIONAL */
      kQTExifUserDataApertureValue = 0x65789202,                  /* 1 RATIONAL */
      kQTExifUserDataBrightnessValue = 0x65789203,                /* 1 SIGNED RATIONAL */
      kQTExifUserDataExposureBiasValue = 0x65789204,              /* 1 SIGNED RATIONAL */
      kQTExifUserDataMaxApertureValue = 0x65789205,               /* 1 RATIONAL */
      kQTExifUserDataSubjectDistance = 0x65789206,                /* 1 RATIONAL */
      kQTExifUserDataMeteringMode = 0x65789207,                   /* 1 SHORT */
      kQTExifUserDataLightSource  = 0x65789208,                   /* 1 SHORT */
      kQTExifUserDataFlash        = 0x65789209,                   /* 1 SHORT */
      kQTExifUserDataFocalLength  = 0x6578920A,                   /* 1 RATIONAL */
      kQTExifUserDataFlashEnergy  = 0x6578A20B,                   /* 1 RATIONAL */
      kQTExifUserDataFocalPlaneXResolution = 0x6578A20E,          /* 1 RATIONAL */
      kQTExifUserDataFocalPlaneYResolution = 0x6578A20F,          /* 1 RATIONAL */
      kQTExifUserDataFocalPlaneResolutionUnit = 0x6578A210,       /* 1 SHORT */
      kQTExifUserDataSubjectLocation = 0x6578A214,                /* 1 SHORT */
      kQTExifUserDataExposureIndex = 0x6578A215,                  /* 1 RATIONAL */
      kQTExifUserDataSensingMethod = 0x6578A217,                  /* 1 SHORT */
      kQTExifUserDataFileSource   = 0x6578A300,                   /* 1 UNDEFINED */
      kQTExifUserDataSceneType    = 0x6578A301                    /* 1 UNDEFINED */
  };
  
  /* Found in some Exif TIFF and Exif JPEG files; defined in the Exif 2.1 spec */
  enum {
      kQTExifUserDataGPSVersionID = 0x06770000,                   /* 4 BYTEs */
      kQTExifUserDataGPSLatitudeRef = 0x06770001,                 /* 2 ASCIIs*/
      kQTExifUserDataGPSLatitude  = 0x06770002,                   /* 3 RATIONALs */
      kQTExifUserDataGPSLongitudeRef = 0x06770003,                /* 2 ASCIIs */
      kQTExifUserDataGPSLongitude = 0x06770004,                   /* 3 RATIONALs */
      kQTExifUserDataGPSAltitudeRef = 0x06770005,                 /* 1 BYTE */
      kQTExifUserDataGPSAltitude  = 0x06770006,                   /* 1 RATIONAL */
      kQTExifUserDataGPSTimeStamp = 0x06770007,                   /* 3 RATIONALs */
      kQTExifUserDataGPSSatellites = 0x06770008,                  /* n ASCIIs */
      kQTExifUserDataGPSStatus    = 0x06770009,                   /* 2 ASCIIs */
      kQTExifUserDataGPSMeasureMode = 0x0677000A,                 /* 2 ASCIIs */
      kQTExifUserDataGPSDOP       = 0x0677000B,                   /* 1 RATIONAL */
      kQTExifUserDataGPSSpeedRef  = 0x0677000C,                   /* 2 ASCIIs */
      kQTExifUserDataGPSSpeed     = 0x0677000D,                   /* 1 RATIONAL */
      kQTExifUserDataGPSTrackRef  = 0x0677000E,                   /* 2 ASCIIs */
      kQTExifUserDataGPSTrack     = 0x0677000F,                   /* 1 RATIONAL */
      kQTExifUserDataGPSImgDirectionRef = 0x06770010,             /* 2 ASCIIs */
      kQTExifUserDataGPSImgDirection = 0x06770011,                /* 1 RATIONAL */
      kQTExifUserDataGPSMapDatum  = 0x06770012,                   /* n ASCII */
      kQTExifUserDataGPSDestLatitudeRef = 0x06770013,             /* 2 ASCIIs */
      kQTExifUserDataGPSDestLatitude = 0x06770014,                /* 3 RATIONALs */
      kQTExifUserDataGPSDestLongitudeRef = 0x06770015,            /* 2 ASCIIs */
      kQTExifUserDataGPSDestLongitude = 0x06770016,               /* 3 RATIONALs */
      kQTExifUserDataGPSDestBearingRef = 0x06770017,              /* 2 ASCIIs */
      kQTExifUserDataGPSDestBearing = 0x06770018,                 /* 1 RATIONAL */
      kQTExifUserDataGPSDestDistanceRef = 0x06770019,             /* 2 ASCIIs */
      kQTExifUserDataGPSDestDistance = 0x0677001A                 /* 1 RATIONAL */
  };
  
  
These are GraphicsImport procedures *

  
  EXTERN_API( ComponentResult )
  GraphicsImportSetDataReference  (GraphicsImportComponent  ci,
                                   Handle                 dataRef,
                                   OSType                 dataReType)                         FIVEWORDINLINE(0x2F3C, 0x0008, 0x0001, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDataReference  (GraphicsImportComponent  ci,
                                   Handle *               dataRef,
                                   OSType *               dataReType)                         FIVEWORDINLINE(0x2F3C, 0x0008, 0x0002, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetDataFile       (GraphicsImportComponent  ci,
                                   const FSSpec *         theFile)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDataFile       (GraphicsImportComponent  ci,
                                   FSSpec *               theFile)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0004, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetDataHandle     (GraphicsImportComponent  ci,
                                   Handle                 h)                                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0005, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDataHandle     (GraphicsImportComponent  ci,
                                   Handle *               h)                                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0006, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetImageDescription (GraphicsImportComponent  ci,
                                   ImageDescriptionHandle * desc)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0007, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDataOffsetAndSize (GraphicsImportComponent  ci,
                                   unsigned long *        offset,
                                   unsigned long *        size)                               FIVEWORDINLINE(0x2F3C, 0x0008, 0x0008, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportReadData          (GraphicsImportComponent  ci,
                                   void *                 dataPtr,
                                   unsigned long          dataOffset,
                                   unsigned long          dataSize)                           FIVEWORDINLINE(0x2F3C, 0x000C, 0x0009, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetClip           (GraphicsImportComponent  ci,
                                   RgnHandle              clipRgn)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x000A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetClip           (GraphicsImportComponent  ci,
                                   RgnHandle *            clipRgn)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x000B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetSourceRect     (GraphicsImportComponent  ci,
                                   const Rect *           sourceRect)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetSourceRect     (GraphicsImportComponent  ci,
                                   Rect *                 sourceRect)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetNaturalBounds  (GraphicsImportComponent  ci,
                                   Rect *                 naturalBounds)                      FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportDraw              (GraphicsImportComponent  ci)                               FIVEWORDINLINE(0x2F3C, 0x0000, 0x000F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetGWorld         (GraphicsImportComponent  ci,
                                   CGrafPtr               port,
                                   GDHandle               gd)                                 FIVEWORDINLINE(0x2F3C, 0x0008, 0x0010, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetGWorld         (GraphicsImportComponent  ci,
                                   CGrafPtr *             port,
                                   GDHandle *             gd)                                 FIVEWORDINLINE(0x2F3C, 0x0008, 0x0011, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetMatrix         (GraphicsImportComponent  ci,
                                   const MatrixRecord *   matrix)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetMatrix         (GraphicsImportComponent  ci,
                                   MatrixRecord *         matrix)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetBoundsRect     (GraphicsImportComponent  ci,
                                   const Rect *           bounds)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetBoundsRect     (GraphicsImportComponent  ci,
                                   Rect *                 bounds)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0015, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSaveAsPicture     (GraphicsImportComponent  ci,
                                   const FSSpec *         fss,
                                   ScriptCode             scriptTag)                          FIVEWORDINLINE(0x2F3C, 0x0006, 0x0016, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetGraphicsMode   (GraphicsImportComponent  ci,
                                   long                   graphicsMode,
                                   const RGBColor *       opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0017, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetGraphicsMode   (GraphicsImportComponent  ci,
                                   long *                 graphicsMode,
                                   RGBColor *             opColor)                            FIVEWORDINLINE(0x2F3C, 0x0008, 0x0018, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetQuality        (GraphicsImportComponent  ci,
                                   CodecQ                 quality)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0019, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetQuality        (GraphicsImportComponent  ci,
                                   CodecQ *               quality)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x001A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSaveAsQuickTimeImageFile (GraphicsImportComponent  ci,
                                   const FSSpec *         fss,
                                   ScriptCode             scriptTag)                          FIVEWORDINLINE(0x2F3C, 0x0006, 0x001B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetDataReferenceOffsetAndLimit (GraphicsImportComponent  ci,
                                   unsigned long          offset,
                                   unsigned long          limit)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDataReferenceOffsetAndLimit (GraphicsImportComponent  ci,
                                   unsigned long *        offset,
                                   unsigned long *        limit)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x001D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetAliasedDataReference (GraphicsImportComponent  ci,
                                   Handle *               dataRef,
                                   OSType *               dataRefType)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x001E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportValidate          (GraphicsImportComponent  ci,
                                   Boolean *              valid)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x001F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetMetaData       (GraphicsImportComponent  ci,
                                   void *                 userData)                           FIVEWORDINLINE(0x2F3C, 0x0004, 0x0020, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetMIMETypeList   (GraphicsImportComponent  ci,
                                   void *                 qtAtomContainerPtr)                 FIVEWORDINLINE(0x2F3C, 0x0004, 0x0021, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportDoesDrawAllPixels (GraphicsImportComponent  ci,
                                   short *                drawsAllPixels)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0022, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetAsPicture      (GraphicsImportComponent  ci,
                                   PicHandle *            picture)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0023, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportExportImageFile   (GraphicsImportComponent  ci,
                                   OSType                 fileType,
                                   OSType                 fileCreator,
                                   const FSSpec *         fss,
                                   ScriptCode             scriptTag)                          FIVEWORDINLINE(0x2F3C, 0x000E, 0x0024, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetExportImageTypeList (GraphicsImportComponent  ci,
                                   void *                 qtAtomContainerPtr)                 FIVEWORDINLINE(0x2F3C, 0x0004, 0x0025, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportDoExportImageFileDialog (GraphicsImportComponent  ci,
                                   const FSSpec *         inDefaultSpec,
                                   StringPtr              prompt,
                                   ModalFilterYDUPP       filterProc,
                                   OSType *               outExportedType,
                                   FSSpec *               outExportedSpec,
                                   ScriptCode *           outScriptTag)                       FIVEWORDINLINE(0x2F3C, 0x0018, 0x0026, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetExportSettingsAsAtomContainer (GraphicsImportComponent  ci,
                                   void *                 qtAtomContainerPtr)                 FIVEWORDINLINE(0x2F3C, 0x0004, 0x0027, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetExportSettingsFromAtomContainer (GraphicsImportComponent  ci,
                                   void *                 qtAtomContainer)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0028, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetProgressProc   (GraphicsImportComponent  ci,
                                   ICMProgressProcRecordPtr  progressProc)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0029, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetProgressProc   (GraphicsImportComponent  ci,
                                   ICMProgressProcRecordPtr  progressProc)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x002A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetImageCount     (GraphicsImportComponent  ci,
                                   unsigned long *        imageCount)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x002B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetImageIndex     (GraphicsImportComponent  ci,
                                   unsigned long          imageIndex)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x002C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetImageIndex     (GraphicsImportComponent  ci,
                                   unsigned long *        imageIndex)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x002D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDataOffsetAndSize64 (GraphicsImportComponent  ci,
                                   wide *                 offset,
                                   wide *                 size)                               FIVEWORDINLINE(0x2F3C, 0x0008, 0x002E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportReadData64        (GraphicsImportComponent  ci,
                                   void *                 dataPtr,
                                   const wide *           dataOffset,
                                   unsigned long          dataSize)                           FIVEWORDINLINE(0x2F3C, 0x000C, 0x002F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetDataReferenceOffsetAndLimit64 (GraphicsImportComponent  ci,
                                   const wide *           offset,
                                   const wide *           limit)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x0030, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDataReferenceOffsetAndLimit64 (GraphicsImportComponent  ci,
                                   wide *                 offset,
                                   wide *                 limit)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x0031, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDefaultMatrix  (GraphicsImportComponent  ci,
                                   MatrixRecord *         defaultMatrix)                      FIVEWORDINLINE(0x2F3C, 0x0004, 0x0032, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDefaultClip    (GraphicsImportComponent  ci,
                                   RgnHandle *            defaultRgn)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x0033, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDefaultGraphicsMode (GraphicsImportComponent  ci,
                                   long *                 defaultGraphicsMode,
                                   RGBColor *             defaultOpColor)                     FIVEWORDINLINE(0x2F3C, 0x0008, 0x0034, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDefaultSourceRect (GraphicsImportComponent  ci,
                                   Rect *                 defaultSourceRect)                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0035, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetColorSyncProfile (GraphicsImportComponent  ci,
                                   Handle *               profile)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0036, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetDestRect       (GraphicsImportComponent  ci,
                                   const Rect *           destRect)                           FIVEWORDINLINE(0x2F3C, 0x0004, 0x0037, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetDestRect       (GraphicsImportComponent  ci,
                                   Rect *                 destRect)                           FIVEWORDINLINE(0x2F3C, 0x0004, 0x0038, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetFlags          (GraphicsImportComponent  ci,
                                   long                   flags)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x0039, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportGetFlags          (GraphicsImportComponent  ci,
                                   long *                 flags)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x003A, 0x7000, 0xA82A);
  
  /* 2 private selectors */
  EXTERN_API( ComponentResult )
  GraphicsImportGetBaseDataOffsetAndSize64 (GraphicsImportComponent  ci,
                                   wide *                 offset,
                                   wide *                 size)                               FIVEWORDINLINE(0x2F3C, 0x0008, 0x003D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsImportSetImageIndexToThumbnail (GraphicsImportComponent  ci)                        FIVEWORDINLINE(0x2F3C, 0x0000, 0x003E, 0x7000, 0xA82A);
  
  typedef ComponentInstance               GraphicsExportComponent;
  enum {
      GraphicsExporterComponentType = FOUR_CHAR_CODE('grex'),
      kBaseGraphicsExporterSubType = FOUR_CHAR_CODE('base')
  };
  
  enum {
      graphicsExporterIsBaseExporter = 1L << 0,
      graphicsExporterCanTranscode = 1L << 1,
      graphicsExporterUsesImageCompressor = 1L << 2
  };
  
  struct QTResolutionSettings {
      Fixed                           horizontalResolution;
      Fixed                           verticalResolution;
  };
  typedef struct QTResolutionSettings     QTResolutionSettings;
  
  struct QTTargetDataSize {
      unsigned long                   targetDataSize;
  };
  typedef struct QTTargetDataSize         QTTargetDataSize;
  
  struct QTThumbnailSettings {
      long                            enableThumbnail;            /* a thoroughly padded Boolean*/
      long                            maxThumbnailWidth;          /* set to zero to let someone else decide*/
      long                            maxThumbnailHeight;         /* set to zero to let someone else decide*/
  };
  typedef struct QTThumbnailSettings      QTThumbnailSettings;
  enum {
      kQTResolutionSettings       = FOUR_CHAR_CODE('reso'),
      kQTTargetDataSize           = FOUR_CHAR_CODE('dasz'),
      kQTDontRecompress           = FOUR_CHAR_CODE('dntr'),
      kQTInterlaceStyle           = FOUR_CHAR_CODE('ilac'),
      kQTColorSyncProfile         = FOUR_CHAR_CODE('iccp'),
      kQTThumbnailSettings        = FOUR_CHAR_CODE('thum'),
      kQTEnableExif               = FOUR_CHAR_CODE('exif'),       /* UInt8 (boolean)*/
      kQTMetaData                 = FOUR_CHAR_CODE('meta')
  };
  
  enum {
      kQTTIFFCompressionMethod    = FOUR_CHAR_CODE('tifc'),       /* UInt32*/
      kQTTIFFCompression_None     = 1,
      kQTTIFFCompression_PackBits = 32773L,
      kQTTIFFLittleEndian         = FOUR_CHAR_CODE('tife')        /* UInt8 (boolean)*/
  };
  
  enum {
      kQTPNGFilterPreference      = FOUR_CHAR_CODE('pngf'),       /* UInt32*/
      kQTPNGFilterBestForColorType = FOUR_CHAR_CODE('bflt'),
      kQTPNGFilterNone            = 0,
      kQTPNGFilterSub             = 1,
      kQTPNGFilterUp              = 2,
      kQTPNGFilterAverage         = 3,
      kQTPNGFilterPaeth           = 4,
      kQTPNGFilterAdaptivePerRow  = FOUR_CHAR_CODE('aflt'),
      kQTPNGInterlaceStyle        = FOUR_CHAR_CODE('ilac'),       /* UInt32*/
      kQTPNGInterlaceNone         = 0,
      kQTPNGInterlaceAdam7        = 1
  };
  
  
These are GraphicsExport procedures *

  
  /* To use: set the input and output (and other settings as desired) and call GEDoExport. */
  EXTERN_API( ComponentResult )
  GraphicsExportDoExport          (GraphicsExportComponent  ci,
                                   unsigned long *        actualSizeWritten)                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0001, 0x7000, 0xA82A);
  
  /* Used for internal communication between the base and format-specific graphics exporter: */
  EXTERN_API( ComponentResult )
  GraphicsExportCanTranscode      (GraphicsExportComponent  ci,
                                   Boolean *              canTranscode)                       FIVEWORDINLINE(0x2F3C, 0x0004, 0x0002, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportDoTranscode       (GraphicsExportComponent  ci)                               FIVEWORDINLINE(0x2F3C, 0x0000, 0x0003, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportCanUseCompressor  (GraphicsExportComponent  ci,
                                   Boolean *              canUseCompressor,
                                   void *                 codecSettingsAtomContainerPtr)      FIVEWORDINLINE(0x2F3C, 0x0008, 0x0004, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportDoUseCompressor   (GraphicsExportComponent  ci,
                                   void *                 codecSettingsAtomContainer,
                                   ImageDescriptionHandle * outDesc)                          FIVEWORDINLINE(0x2F3C, 0x0008, 0x0005, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportDoStandaloneExport (GraphicsExportComponent  ci)                              FIVEWORDINLINE(0x2F3C, 0x0000, 0x0006, 0x7000, 0xA82A);
  
  /* Queries applications can make of a format-specific graphics exporter: */
  EXTERN_API( ComponentResult )
  GraphicsExportGetDefaultFileTypeAndCreator (GraphicsExportComponent  ci,
                                   OSType *               fileType,
                                   OSType *               fileCreator)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0007, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetDefaultFileNameExtension (GraphicsExportComponent  ci,
                                   OSType *               fileNameExtension)                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0008, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetMIMETypeList   (GraphicsExportComponent  ci,
                                   void *                 qtAtomContainerPtr)                 FIVEWORDINLINE(0x2F3C, 0x0004, 0x0009, 0x7000, 0xA82A);
  
  /* (1 unused selector) */
  /* Graphics exporter settings: */
  EXTERN_API( ComponentResult )
  GraphicsExportRequestSettings   (GraphicsExportComponent  ci,
                                   ModalFilterYDUPP       filterProc,
                                   void *                 yourDataProc)                       FIVEWORDINLINE(0x2F3C, 0x0008, 0x000B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetSettingsFromAtomContainer (GraphicsExportComponent  ci,
                                   void *                 qtAtomContainer)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x000C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetSettingsAsAtomContainer (GraphicsExportComponent  ci,
                                   void *                 qtAtomContainerPtr)                 FIVEWORDINLINE(0x2F3C, 0x0004, 0x000D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetSettingsAsText (GraphicsExportComponent  ci,
                                   Handle *               theText)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x000E, 0x7000, 0xA82A);
  
  /* Graphics exporters may implement some or none of the following: */
  EXTERN_API( ComponentResult )
  GraphicsExportSetDontRecompress (GraphicsExportComponent  ci,
                                   Boolean                dontRecompress)                     FIVEWORDINLINE(0x2F3C, 0x0002, 0x000F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetDontRecompress (GraphicsExportComponent  ci,
                                   Boolean *              dontRecompress)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0010, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInterlaceStyle (GraphicsExportComponent  ci,
                                   unsigned long          interlaceStyle)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0011, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInterlaceStyle (GraphicsExportComponent  ci,
                                   unsigned long *        interlaceStyle)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0012, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetMetaData       (GraphicsExportComponent  ci,
                                   void *                 userData)                           FIVEWORDINLINE(0x2F3C, 0x0004, 0x0013, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetMetaData       (GraphicsExportComponent  ci,
                                   void *                 userData)                           FIVEWORDINLINE(0x2F3C, 0x0004, 0x0014, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetTargetDataSize (GraphicsExportComponent  ci,
                                   unsigned long          targetDataSize)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0015, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetTargetDataSize (GraphicsExportComponent  ci,
                                   unsigned long *        targetDataSize)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0016, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetCompressionMethod (GraphicsExportComponent  ci,
                                   long                   compressionMethod)                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0017, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetCompressionMethod (GraphicsExportComponent  ci,
                                   long *                 compressionMethod)                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0018, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetCompressionQuality (GraphicsExportComponent  ci,
                                   CodecQ                 spatialQuality)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x0019, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetCompressionQuality (GraphicsExportComponent  ci,
                                   CodecQ *               spatialQuality)                     FIVEWORDINLINE(0x2F3C, 0x0004, 0x001A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetResolution     (GraphicsExportComponent  ci,
                                   Fixed                  horizontalResolution,
                                   Fixed                  verticalResolution)                 FIVEWORDINLINE(0x2F3C, 0x0008, 0x001B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetResolution     (GraphicsExportComponent  ci,
                                   Fixed *                horizontalResolution,
                                   Fixed *                verticalResolution)                 FIVEWORDINLINE(0x2F3C, 0x0008, 0x001C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetDepth          (GraphicsExportComponent  ci,
                                   long                   depth)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x001D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetDepth          (GraphicsExportComponent  ci,
                                   long *                 depth)                              FIVEWORDINLINE(0x2F3C, 0x0004, 0x001E, 0x7000, 0xA82A);
  
  /* (2 unused selectors) */
  EXTERN_API( ComponentResult )
  GraphicsExportSetColorSyncProfile (GraphicsExportComponent  ci,
                                   Handle                 colorSyncProfile)                   FIVEWORDINLINE(0x2F3C, 0x0004, 0x0021, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetColorSyncProfile (GraphicsExportComponent  ci,
                                   Handle *               colorSyncProfile)                   FIVEWORDINLINE(0x2F3C, 0x0004, 0x0022, 0x7000, 0xA82A);
  
  /* Always implemented by the base graphics exporter: */
  EXTERN_API( ComponentResult )
  GraphicsExportSetProgressProc   (GraphicsExportComponent  ci,
                                   ICMProgressProcRecordPtr  progressProc)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0023, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetProgressProc   (GraphicsExportComponent  ci,
                                   ICMProgressProcRecordPtr  progressProc)                    FIVEWORDINLINE(0x2F3C, 0x0004, 0x0024, 0x7000, 0xA82A);
  
  /* Sources for the input image: */
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputDataReference (GraphicsExportComponent  ci,
                                   Handle                 dataRef,
                                   OSType                 dataRefType,
                                   ImageDescriptionHandle  desc)                              FIVEWORDINLINE(0x2F3C, 0x000C, 0x0025, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputDataReference (GraphicsExportComponent  ci,
                                   Handle *               dataRef,
                                   OSType *               dataRefType)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0026, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputFile      (GraphicsExportComponent  ci,
                                   const FSSpec *         theFile,
                                   ImageDescriptionHandle  desc)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x0027, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputFile      (GraphicsExportComponent  ci,
                                   FSSpec *               theFile)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0028, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputHandle    (GraphicsExportComponent  ci,
                                   Handle                 h,
                                   ImageDescriptionHandle  desc)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x0029, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputHandle    (GraphicsExportComponent  ci,
                                   Handle *               h)                                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x002A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputPtr       (GraphicsExportComponent  ci,
                                   Ptr                    p,
                                   unsigned long          size,
                                   ImageDescriptionHandle  desc)                              FIVEWORDINLINE(0x2F3C, 0x000C, 0x002B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputPtr       (GraphicsExportComponent  ci,
                                   Ptr *                  p,
                                   unsigned long *        size)                               FIVEWORDINLINE(0x2F3C, 0x0008, 0x002C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputGraphicsImporter (GraphicsExportComponent  ci,
                                   GraphicsImportComponent  grip)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x002D, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputGraphicsImporter (GraphicsExportComponent  ci,
                                   GraphicsImportComponent * grip)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x002E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputPicture   (GraphicsExportComponent  ci,
                                   PicHandle              picture)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x002F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputPicture   (GraphicsExportComponent  ci,
                                   PicHandle *            picture)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0030, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputGWorld    (GraphicsExportComponent  ci,
                                   GWorldPtr              gworld)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0031, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputGWorld    (GraphicsExportComponent  ci,
                                   GWorldPtr *            gworld)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0032, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputPixmap    (GraphicsExportComponent  ci,
                                   PixMapHandle           pixmap)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0033, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputPixmap    (GraphicsExportComponent  ci,
                                   PixMapHandle *         pixmap)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x0034, 0x7000, 0xA82A);
  
  /* Only applicable when the input is a data reference, file, handle or ptr: */
  EXTERN_API( ComponentResult )
  GraphicsExportSetInputOffsetAndLimit (GraphicsExportComponent  ci,
                                   unsigned long          offset,
                                   unsigned long          limit)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x0035, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputOffsetAndLimit (GraphicsExportComponent  ci,
                                   unsigned long *        offset,
                                   unsigned long *        limit)                              FIVEWORDINLINE(0x2F3C, 0x0008, 0x0036, 0x7000, 0xA82A);
  
  /* Used by format-specific graphics exporters when transcoding: */
  EXTERN_API( ComponentResult )
  GraphicsExportMayExporterReadInputData (GraphicsExportComponent  ci,
                                   Boolean *              mayReadInputData)                   FIVEWORDINLINE(0x2F3C, 0x0004, 0x0037, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputDataSize  (GraphicsExportComponent  ci,
                                   unsigned long *        size)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0x0038, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportReadInputData     (GraphicsExportComponent  ci,
                                   void *                 dataPtr,
                                   unsigned long          dataOffset,
                                   unsigned long          dataSize)                           FIVEWORDINLINE(0x2F3C, 0x000C, 0x0039, 0x7000, 0xA82A);
  
  /* Used by format-specific graphics exporters, especially when doing standalone export: */
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputImageDescription (GraphicsExportComponent  ci,
                                   ImageDescriptionHandle * desc)                             FIVEWORDINLINE(0x2F3C, 0x0004, 0x003A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputImageDimensions (GraphicsExportComponent  ci,
                                   Rect *                 dimensions)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x003B, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetInputImageDepth (GraphicsExportComponent  ci,
                                   long *                 inputDepth)                         FIVEWORDINLINE(0x2F3C, 0x0004, 0x003C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportDrawInputImage    (GraphicsExportComponent  ci,
                                   CGrafPtr               gw,
                                   GDHandle               gd,
                                   const Rect *           srcRect,
                                   const Rect *           dstRect)                            FIVEWORDINLINE(0x2F3C, 0x0010, 0x003D, 0x7000, 0xA82A);
  
  /* Destinations for the output image: */
  EXTERN_API( ComponentResult )
  GraphicsExportSetOutputDataReference (GraphicsExportComponent  ci,
                                   Handle                 dataRef,
                                   OSType                 dataRefType)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x003E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetOutputDataReference (GraphicsExportComponent  ci,
                                   Handle *               dataRef,
                                   OSType *               dataRefType)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x003F, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetOutputFile     (GraphicsExportComponent  ci,
                                   const FSSpec *         theFile)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0040, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetOutputFile     (GraphicsExportComponent  ci,
                                   FSSpec *               theFile)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0041, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetOutputHandle   (GraphicsExportComponent  ci,
                                   Handle                 h)                                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0042, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetOutputHandle   (GraphicsExportComponent  ci,
                                   Handle *               h)                                  FIVEWORDINLINE(0x2F3C, 0x0004, 0x0043, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetOutputOffsetAndMaxSize (GraphicsExportComponent  ci,
                                   unsigned long          offset,
                                   unsigned long          maxSize,
                                   Boolean                truncateFile)                       FIVEWORDINLINE(0x2F3C, 0x000A, 0x0044, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetOutputOffsetAndMaxSize (GraphicsExportComponent  ci,
                                   unsigned long *        offset,
                                   unsigned long *        maxSize,
                                   Boolean *              truncateFile)                       FIVEWORDINLINE(0x2F3C, 0x000C, 0x0045, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetOutputFileTypeAndCreator (GraphicsExportComponent  ci,
                                   OSType                 fileType,
                                   OSType                 fileCreator)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0046, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetOutputFileTypeAndCreator (GraphicsExportComponent  ci,
                                   OSType *               fileType,
                                   OSType *               fileCreator)                        FIVEWORDINLINE(0x2F3C, 0x0008, 0x0047, 0x7000, 0xA82A);
  
  /* Used by format-specific graphics exporters: */
  EXTERN_API( ComponentResult )
  GraphicsExportWriteOutputData   (GraphicsExportComponent  ci,
                                   const void *           dataPtr,
                                   unsigned long          dataSize)                           FIVEWORDINLINE(0x2F3C, 0x0008, 0x0048, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportSetOutputMark     (GraphicsExportComponent  ci,
                                   unsigned long          mark)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0x0049, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetOutputMark     (GraphicsExportComponent  ci,
                                   unsigned long *        mark)                               FIVEWORDINLINE(0x2F3C, 0x0004, 0x004A, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportReadOutputData    (GraphicsExportComponent  ci,
                                   void *                 dataPtr,
                                   unsigned long          dataOffset,
                                   unsigned long          dataSize)                           FIVEWORDINLINE(0x2F3C, 0x000C, 0x004B, 0x7000, 0xA82A);
  
  /* Allows embedded thumbnail creation, if supported. */
  EXTERN_API( ComponentResult )
  GraphicsExportSetThumbnailEnabled (GraphicsExportComponent  ci,
                                   Boolean                enableThumbnail,
                                   long                   maxThumbnailWidth,
                                   long                   maxThumbnailHeight)                 FIVEWORDINLINE(0x2F3C, 0x000A, 0x004C, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetThumbnailEnabled (GraphicsExportComponent  ci,
                                   Boolean *              thumbnailEnabled,
                                   long *                 maxThumbnailWidth,
                                   long *                 maxThumbnailHeight)                 FIVEWORDINLINE(0x2F3C, 0x000C, 0x004D, 0x7000, 0xA82A);
  
  /* Allows export of Exif files, if supported.  This disables Exif-incompatible settings such as grayscale JPEG and compressed TIFF, and enables export of Exif metadata. */
  EXTERN_API( ComponentResult )
  GraphicsExportSetExifEnabled    (GraphicsExportComponent  ci,
                                   Boolean                enableExif)                         FIVEWORDINLINE(0x2F3C, 0x0002, 0x004E, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  GraphicsExportGetExifEnabled    (GraphicsExportComponent  ci,
                                   Boolean *              exifEnabled)                        FIVEWORDINLINE(0x2F3C, 0x0004, 0x004F, 0x7000, 0xA82A);
  
  typedef ComponentInstance               ImageTranscoderComponent;
  enum {
      ImageTranscodererComponentType = FOUR_CHAR_CODE('imtc')
  };
  
  
These are ImageTranscoder procedures *

  
  EXTERN_API( ComponentResult )
  ImageTranscoderBeginSequence    (ImageTranscoderComponent  itc,
                                   ImageDescriptionHandle  srcDesc,
                                   ImageDescriptionHandle * dstDesc,
                                   void *                 data,
                                   long                   dataSize)                           FIVEWORDINLINE(0x2F3C, 0x0010, 0x0001, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  ImageTranscoderConvert          (ImageTranscoderComponent  itc,
                                   void *                 srcData,
                                   long                   srcDataSize,
                                   void **                dstData,
                                   long *                 dstDataSize)                        FIVEWORDINLINE(0x2F3C, 0x0010, 0x0002, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  ImageTranscoderDisposeData      (ImageTranscoderComponent  itc,
                                   void *                 dstData)                            FIVEWORDINLINE(0x2F3C, 0x0004, 0x0003, 0x7000, 0xA82A);
  
  EXTERN_API( ComponentResult )
  ImageTranscoderEndSequence      (ImageTranscoderComponent  itc)                             FIVEWORDINLINE(0x2F3C, 0x0000, 0x0004, 0x7000, 0xA82A);
  
  /* UPP call backs */
  
  /* selectors for component calls */
  enum {
      kGraphicsImportSetDataReferenceSelect      = 0x0001,
      kGraphicsImportGetDataReferenceSelect      = 0x0002,
      kGraphicsImportSetDataFileSelect           = 0x0003,
      kGraphicsImportGetDataFileSelect           = 0x0004,
      kGraphicsImportSetDataHandleSelect         = 0x0005,
      kGraphicsImportGetDataHandleSelect         = 0x0006,
      kGraphicsImportGetImageDescriptionSelect   = 0x0007,
      kGraphicsImportGetDataOffsetAndSizeSelect  = 0x0008,
      kGraphicsImportReadDataSelect              = 0x0009,
      kGraphicsImportSetClipSelect               = 0x000A,
      kGraphicsImportGetClipSelect               = 0x000B,
      kGraphicsImportSetSourceRectSelect         = 0x000C,
      kGraphicsImportGetSourceRectSelect         = 0x000D,
      kGraphicsImportGetNaturalBoundsSelect      = 0x000E,
      kGraphicsImportDrawSelect                  = 0x000F,
      kGraphicsImportSetGWorldSelect             = 0x0010,
      kGraphicsImportGetGWorldSelect             = 0x0011,
      kGraphicsImportSetMatrixSelect             = 0x0012,
      kGraphicsImportGetMatrixSelect             = 0x0013,
      kGraphicsImportSetBoundsRectSelect         = 0x0014,
      kGraphicsImportGetBoundsRectSelect         = 0x0015,
      kGraphicsImportSaveAsPictureSelect         = 0x0016,
      kGraphicsImportSetGraphicsModeSelect       = 0x0017,
      kGraphicsImportGetGraphicsModeSelect       = 0x0018,
      kGraphicsImportSetQualitySelect            = 0x0019,
      kGraphicsImportGetQualitySelect            = 0x001A,
      kGraphicsImportSaveAsQuickTimeImageFileSelect = 0x001B,
      kGraphicsImportSetDataReferenceOffsetAndLimitSelect = 0x001C,
      kGraphicsImportGetDataReferenceOffsetAndLimitSelect = 0x001D,
      kGraphicsImportGetAliasedDataReferenceSelect = 0x001E,
      kGraphicsImportValidateSelect              = 0x001F,
      kGraphicsImportGetMetaDataSelect           = 0x0020,
      kGraphicsImportGetMIMETypeListSelect       = 0x0021,
      kGraphicsImportDoesDrawAllPixelsSelect     = 0x0022,
      kGraphicsImportGetAsPictureSelect          = 0x0023,
      kGraphicsImportExportImageFileSelect       = 0x0024,
      kGraphicsImportGetExportImageTypeListSelect = 0x0025,
      kGraphicsImportDoExportImageFileDialogSelect = 0x0026,
      kGraphicsImportGetExportSettingsAsAtomContainerSelect = 0x0027,
      kGraphicsImportSetExportSettingsFromAtomContainerSelect = 0x0028,
      kGraphicsImportSetProgressProcSelect       = 0x0029,
      kGraphicsImportGetProgressProcSelect       = 0x002A,
      kGraphicsImportGetImageCountSelect         = 0x002B,
      kGraphicsImportSetImageIndexSelect         = 0x002C,
      kGraphicsImportGetImageIndexSelect         = 0x002D,
      kGraphicsImportGetDataOffsetAndSize64Select = 0x002E,
      kGraphicsImportReadData64Select            = 0x002F,
      kGraphicsImportSetDataReferenceOffsetAndLimit64Select = 0x0030,
      kGraphicsImportGetDataReferenceOffsetAndLimit64Select = 0x0031,
      kGraphicsImportGetDefaultMatrixSelect      = 0x0032,
      kGraphicsImportGetDefaultClipSelect        = 0x0033,
      kGraphicsImportGetDefaultGraphicsModeSelect = 0x0034,
      kGraphicsImportGetDefaultSourceRectSelect  = 0x0035,
      kGraphicsImportGetColorSyncProfileSelect   = 0x0036,
      kGraphicsImportSetDestRectSelect           = 0x0037,
      kGraphicsImportGetDestRectSelect           = 0x0038,
      kGraphicsImportSetFlagsSelect              = 0x0039,
      kGraphicsImportGetFlagsSelect              = 0x003A,
      kGraphicsImportGetBaseDataOffsetAndSize64Select = 0x003D,
      kGraphicsImportSetImageIndexToThumbnailSelect = 0x003E,
      kGraphicsExportDoExportSelect              = 0x0001,
      kGraphicsExportCanTranscodeSelect          = 0x0002,
      kGraphicsExportDoTranscodeSelect           = 0x0003,
      kGraphicsExportCanUseCompressorSelect      = 0x0004,
      kGraphicsExportDoUseCompressorSelect       = 0x0005,
      kGraphicsExportDoStandaloneExportSelect    = 0x0006,
      kGraphicsExportGetDefaultFileTypeAndCreatorSelect = 0x0007,
      kGraphicsExportGetDefaultFileNameExtensionSelect = 0x0008,
      kGraphicsExportGetMIMETypeListSelect       = 0x0009,
      kGraphicsExportRequestSettingsSelect       = 0x000B,
      kGraphicsExportSetSettingsFromAtomContainerSelect = 0x000C,
      kGraphicsExportGetSettingsAsAtomContainerSelect = 0x000D,
      kGraphicsExportGetSettingsAsTextSelect     = 0x000E,
      kGraphicsExportSetDontRecompressSelect     = 0x000F,
      kGraphicsExportGetDontRecompressSelect     = 0x0010,
      kGraphicsExportSetInterlaceStyleSelect     = 0x0011,
      kGraphicsExportGetInterlaceStyleSelect     = 0x0012,
      kGraphicsExportSetMetaDataSelect           = 0x0013,
      kGraphicsExportGetMetaDataSelect           = 0x0014,
      kGraphicsExportSetTargetDataSizeSelect     = 0x0015,
      kGraphicsExportGetTargetDataSizeSelect     = 0x0016,
      kGraphicsExportSetCompressionMethodSelect  = 0x0017,
      kGraphicsExportGetCompressionMethodSelect  = 0x0018,
      kGraphicsExportSetCompressionQualitySelect = 0x0019,
      kGraphicsExportGetCompressionQualitySelect = 0x001A,
      kGraphicsExportSetResolutionSelect         = 0x001B,
      kGraphicsExportGetResolutionSelect         = 0x001C,
      kGraphicsExportSetDepthSelect              = 0x001D,
      kGraphicsExportGetDepthSelect              = 0x001E,
      kGraphicsExportSetColorSyncProfileSelect   = 0x0021,
      kGraphicsExportGetColorSyncProfileSelect   = 0x0022,
      kGraphicsExportSetProgressProcSelect       = 0x0023,
      kGraphicsExportGetProgressProcSelect       = 0x0024,
      kGraphicsExportSetInputDataReferenceSelect = 0x0025,
      kGraphicsExportGetInputDataReferenceSelect = 0x0026,
      kGraphicsExportSetInputFileSelect          = 0x0027,
      kGraphicsExportGetInputFileSelect          = 0x0028,
      kGraphicsExportSetInputHandleSelect        = 0x0029,
      kGraphicsExportGetInputHandleSelect        = 0x002A,
      kGraphicsExportSetInputPtrSelect           = 0x002B,
      kGraphicsExportGetInputPtrSelect           = 0x002C,
      kGraphicsExportSetInputGraphicsImporterSelect = 0x002D,
      kGraphicsExportGetInputGraphicsImporterSelect = 0x002E,
      kGraphicsExportSetInputPictureSelect       = 0x002F,
      kGraphicsExportGetInputPictureSelect       = 0x0030,
      kGraphicsExportSetInputGWorldSelect        = 0x0031,
      kGraphicsExportGetInputGWorldSelect        = 0x0032,
      kGraphicsExportSetInputPixmapSelect        = 0x0033,
      kGraphicsExportGetInputPixmapSelect        = 0x0034,
      kGraphicsExportSetInputOffsetAndLimitSelect = 0x0035,
      kGraphicsExportGetInputOffsetAndLimitSelect = 0x0036,
      kGraphicsExportMayExporterReadInputDataSelect = 0x0037,
      kGraphicsExportGetInputDataSizeSelect      = 0x0038,
      kGraphicsExportReadInputDataSelect         = 0x0039,
      kGraphicsExportGetInputImageDescriptionSelect = 0x003A,
      kGraphicsExportGetInputImageDimensionsSelect = 0x003B,
      kGraphicsExportGetInputImageDepthSelect    = 0x003C,
      kGraphicsExportDrawInputImageSelect        = 0x003D,
      kGraphicsExportSetOutputDataReferenceSelect = 0x003E,
      kGraphicsExportGetOutputDataReferenceSelect = 0x003F,
      kGraphicsExportSetOutputFileSelect         = 0x0040,
      kGraphicsExportGetOutputFileSelect         = 0x0041,
      kGraphicsExportSetOutputHandleSelect       = 0x0042,
      kGraphicsExportGetOutputHandleSelect       = 0x0043,
      kGraphicsExportSetOutputOffsetAndMaxSizeSelect = 0x0044,
      kGraphicsExportGetOutputOffsetAndMaxSizeSelect = 0x0045,
      kGraphicsExportSetOutputFileTypeAndCreatorSelect = 0x0046,
      kGraphicsExportGetOutputFileTypeAndCreatorSelect = 0x0047,
      kGraphicsExportWriteOutputDataSelect       = 0x0048,
      kGraphicsExportSetOutputMarkSelect         = 0x0049,
      kGraphicsExportGetOutputMarkSelect         = 0x004A,
      kGraphicsExportReadOutputDataSelect        = 0x004B,
      kGraphicsExportSetThumbnailEnabledSelect   = 0x004C,
      kGraphicsExportGetThumbnailEnabledSelect   = 0x004D,
      kGraphicsExportSetExifEnabledSelect        = 0x004E,
      kGraphicsExportGetExifEnabledSelect        = 0x004F,
      kImageTranscoderBeginSequenceSelect        = 0x0001,
      kImageTranscoderConvertSelect              = 0x0002,
      kImageTranscoderDisposeDataSelect          = 0x0003,
      kImageTranscoderEndSequenceSelect          = 0x0004
  };
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __IMAGECOMPRESSION__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.