home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / CodeWarrior Lite / Metrowerks C⁄C++ Lite / Headers / Universal Headers 2.0.1f / ImageCompression.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-22  |  32.9 KB  |  687 lines  |  [TEXT/MMCC]

  1. /*
  2.      File:        ImageCompression.h
  3.  
  4.      Contains:    QuickTime Image Compression Interfaces.
  5.  
  6.      Version:    Technology:    QuickTime 2.0
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __IMAGECOMPRESSION__
  21. #define __IMAGECOMPRESSION__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifndef __QUICKDRAW__
  30. #include <Quickdraw.h>
  31. #endif
  32. /*    #include <MixedMode.h>                                        */
  33. /*    #include <QuickdrawText.h>                                    */
  34.  
  35. #ifndef __QDOFFSCREEN__
  36. #include <QDOffscreen.h>
  37. #endif
  38. /*    #include <Errors.h>                                            */
  39.  
  40. #ifndef __COMPONENTS__
  41. #include <Components.h>
  42. #endif
  43.  
  44. #ifndef __WINDOWS__
  45. #include <Windows.h>
  46. #endif
  47. /*    #include <Memory.h>                                            */
  48. /*    #include <Events.h>                                            */
  49. /*        #include <OSUtils.h>                                    */
  50. /*    #include <Controls.h>                                        */
  51. /*        #include <Menus.h>                                        */
  52.  
  53. #ifndef __STANDARDFILE__
  54. #include <StandardFile.h>
  55. #endif
  56. /*    #include <Dialogs.h>                                        */
  57. /*        #include <TextEdit.h>                                    */
  58. /*    #include <Files.h>                                            */
  59.  
  60. #ifdef __cplusplus
  61. extern "C" {
  62. #endif
  63.  
  64. #if PRAGMA_ALIGN_SUPPORTED
  65. #pragma options align=mac68k
  66. #endif
  67.  
  68. #if PRAGMA_IMPORT_SUPPORTED
  69. #pragma import on
  70. #endif
  71.  
  72. struct MatrixRecord {
  73.     Fixed                            matrix[3][3];
  74. };
  75. typedef struct MatrixRecord MatrixRecord, *MatrixRecordPtr;
  76.  
  77. struct FixedPoint {
  78.     Fixed                            x;
  79.     Fixed                            y;
  80. };
  81. typedef struct FixedPoint FixedPoint;
  82.  
  83. struct FixedRect {
  84.     Fixed                            left;
  85.     Fixed                            top;
  86.     Fixed                            right;
  87.     Fixed                            bottom;
  88. };
  89. typedef struct FixedRect FixedRect;
  90.  
  91. /* These are the bits that are set in the Component flags, and also in the codecInfo struct. */
  92.  
  93. enum {
  94.     codecInfoDoes1                = (1L << 0),
  95.     codecInfoDoes2                = (1L << 1),
  96.     codecInfoDoes4                = (1L << 2),
  97.     codecInfoDoes8                = (1L << 3),
  98.     codecInfoDoes16                = (1L << 4),
  99.     codecInfoDoes32                = (1L << 5),
  100.     codecInfoDoesDither            = (1L << 6),
  101.     codecInfoDoesStretch        = (1L << 7),
  102.     codecInfoDoesShrink            = (1L << 8),
  103.     codecInfoDoesMask            = (1L << 9),
  104.     codecInfoDoesTemporal        = (1L << 10),
  105.     codecInfoDoesDouble            = (1L << 11),
  106.     codecInfoDoesQuad            = (1L << 12),
  107.     codecInfoDoesHalf            = (1L << 13),
  108.     codecInfoDoesQuarter        = (1L << 14),
  109.     codecInfoDoesRotate            = (1L << 15),
  110.     codecInfoDoesHorizFlip        = (1L << 16),
  111.     codecInfoDoesVertFlip        = (1L << 17),
  112.     codecInfoDoesSkew            = (1L << 18),
  113.     codecInfoDoesBlend            = (1L << 19),
  114.     codecInfoDoesWarp            = (1L << 20),
  115.     codecInfoDoesRecompress        = (1L << 21),
  116.     codecInfoDoesSpool            = (1L << 22),
  117.     codecInfoDoesRateConstrain    = (1L << 23)
  118. };
  119.  
  120. enum {
  121.     codecInfoDepth1                = (1L << 0),
  122.     codecInfoDepth2                = (1L << 1),
  123.     codecInfoDepth4                = (1L << 2),
  124.     codecInfoDepth8                = (1L << 3),
  125.     codecInfoDepth16            = (1L << 4),
  126.     codecInfoDepth32            = (1L << 5),
  127.     codecInfoDepth24            = (1L << 6),
  128.     codecInfoDepth33            = (1L << 7),
  129.     codecInfoDepth34            = (1L << 8),
  130.     codecInfoDepth36            = (1L << 9),
  131.     codecInfoDepth40            = (1L << 10),
  132.     codecInfoStoresClut            = (1L << 11),
  133.     codecInfoDoesLossless        = (1L << 12),
  134.     codecInfoSequenceSensitive    = (1L << 13)
  135. };
  136.  
  137. enum {
  138.     codecFlagUseImageBuffer        = (1L << 0),
  139.     codecFlagUseScreenBuffer    = (1L << 1),
  140.     codecFlagUpdatePrevious        = (1L << 2),
  141.     codecFlagNoScreenUpdate        = (1L << 3),
  142.     codecFlagWasCompressed        = (1L << 4),
  143.     codecFlagDontOffscreen        = (1L << 5),
  144.     codecFlagUpdatePreviousComp    = (1L << 6),
  145.     codecFlagForceKeyFrame        = (1L << 7),
  146.     codecFlagOnlyScreenUpdate    = (1L << 8),
  147.     codecFlagLiveGrab            = (1L << 9),
  148.     codecFlagDontUseNewImageBuffer = (1L << 10),
  149.     codecFlagInterlaceUpdate    = (1L << 11),
  150.     codecFlagCatchUpDiff        = (1L << 12),
  151.     codecFlagUsedNewImageBuffer    = (1L << 14),
  152.     codecFlagUsedImageBuffer    = (1L << 15)
  153. };
  154.  
  155. enum {
  156. /* The minimum data size for spooling in or out data */
  157.     codecMinimumDataSize        = 32768
  158. };
  159.  
  160. enum {
  161.     compressorComponentType        = 'imco',                        /* the type for "Components" which compress images */
  162.     decompressorComponentType    = 'imdc'
  163. };
  164.  
  165. typedef Component CompressorComponent;
  166.  
  167. typedef Component DecompressorComponent;
  168.  
  169. typedef Component CodecComponent;
  170.  
  171. #define anyCodec ((CodecComponent)0)
  172. #define bestSpeedCodec ((CodecComponent)-1)
  173. #define bestFidelityCodec ((CodecComponent)-2)
  174. #define bestCompressionCodec ((CodecComponent)-3)
  175. typedef long CodecType;
  176.  
  177. typedef unsigned short CodecFlags;
  178.  
  179. typedef unsigned long CodecQ;
  180.  
  181.  
  182. enum {
  183.     codecLosslessQuality        = 0x400L,
  184.     codecMaxQuality                = 0x3ffL,
  185.     codecMinQuality                = 0x000L,
  186.     codecLowQuality                = 0x100L,
  187.     codecNormalQuality            = 0x200L,
  188.     codecHighQuality            = 0x300L
  189. };
  190.  
  191. enum {
  192.     codecCompletionSource        = (1 << 0),                        /* asynchronous codec is done with source data */
  193.     codecCompletionDest            = (1 << 1)                        /* asynchronous codec is done with destination data */
  194. };
  195.  
  196. enum {
  197.     codecProgressOpen            = 0,
  198.     codecProgressUpdatePercent    = 1,
  199.     codecProgressClose            = 2
  200. };
  201.  
  202. typedef pascal OSErr (*ICMDataProcPtr)(Ptr *dataP, long bytesNeeded, long refcon);
  203. typedef pascal OSErr (*ICMFlushProcPtr)(Ptr data, long bytesAdded, long refcon);
  204. typedef pascal void (*ICMCompletionProcPtr)(OSErr result, short flags, long refcon);
  205. typedef pascal OSErr (*ICMProgressProcPtr)(short message, Fixed completeness, long refcon);
  206. typedef pascal void (*StdPixProcPtr)(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  207. typedef pascal void (*ICMAlignmentProcPtr)(Rect *rp, long refcon);
  208.  
  209. #if GENERATINGCFM
  210. typedef UniversalProcPtr ICMDataUPP;
  211. typedef UniversalProcPtr ICMFlushUPP;
  212. typedef UniversalProcPtr ICMCompletionUPP;
  213. typedef UniversalProcPtr ICMProgressUPP;
  214. typedef UniversalProcPtr StdPixUPP;
  215. typedef UniversalProcPtr ICMAlignmentUPP;
  216. #else
  217. typedef ICMDataProcPtr ICMDataUPP;
  218. typedef ICMFlushProcPtr ICMFlushUPP;
  219. typedef ICMCompletionProcPtr ICMCompletionUPP;
  220. typedef ICMProgressProcPtr ICMProgressUPP;
  221. typedef StdPixProcPtr StdPixUPP;
  222. typedef ICMAlignmentProcPtr ICMAlignmentUPP;
  223. #endif
  224.  
  225. typedef long ImageSequence;
  226.  
  227. struct ICMProgressProcRecord {
  228.     ICMProgressUPP                    progressProc;
  229.     long                            progressRefCon;
  230. };
  231. typedef struct ICMProgressProcRecord ICMProgressProcRecord, *ICMProgressProcRecordPtr;
  232.  
  233. struct ICMCompletionProcRecord {
  234.     ICMCompletionUPP                completionProc;
  235.     long                            completionRefCon;
  236. };
  237. typedef struct ICMCompletionProcRecord ICMCompletionProcRecord, *ICMCompletionProcRecordPtr;
  238.  
  239. struct ICMDataProcRecord {
  240.     ICMDataUPP                        dataProc;
  241.     long                            dataRefCon;
  242. };
  243. typedef struct ICMDataProcRecord ICMDataProcRecord, *ICMDataProcRecordPtr;
  244.  
  245. struct ICMFlushProcRecord {
  246.     ICMFlushUPP                        flushProc;
  247.     long                            flushRefCon;
  248. };
  249. typedef struct ICMFlushProcRecord ICMFlushProcRecord, *ICMFlushProcRecordPtr;
  250.  
  251. struct ICMAlignmentProcRecord {
  252.     ICMAlignmentUPP                    alignmentProc;
  253.     long                            alignmentRefCon;
  254. };
  255. typedef struct ICMAlignmentProcRecord ICMAlignmentProcRecord, *ICMAlignmentProcRecordPtr;
  256.  
  257. struct DataRateParams {
  258.     long                            dataRate;
  259.     long                            dataOverrun;
  260.     long                            frameDuration;
  261.     long                            keyFrameRate;
  262.     CodecQ                            minSpatialQuality;
  263.     CodecQ                            minTemporalQuality;
  264. };
  265. typedef struct DataRateParams DataRateParams, *DataRateParamsPtr;
  266.  
  267. struct ImageDescription {
  268.     long                            idSize;                        /* total size of ImageDescription including extra data ( CLUTs and other per sequence data */
  269.     CodecType                        cType;                        /* what kind of codec compressed this data */
  270.     long                            resvd1;                        /* reserved for Apple use */
  271.     short                            resvd2;                        /* reserved for Apple use */
  272.     short                            dataRefIndex;                /* set to zero  */
  273.     short                            version;                    /* which version is this data */
  274.     short                            revisionLevel;                /* what version of that codec did this */
  275.     long                            vendor;                        /* whose  codec compressed this data */
  276.     CodecQ                            temporalQuality;            /* what was the temporal quality factor  */
  277.     CodecQ                            spatialQuality;                /* what was the spatial quality factor */
  278.     short                            width;                        /* how many pixels wide is this data */
  279.     short                            height;                        /* how many pixels high is this data */
  280.     Fixed                            hRes;                        /* horizontal resolution */
  281.     Fixed                            vRes;                        /* vertical resolution */
  282.     long                            dataSize;                    /* if known, the size of data for this image descriptor */
  283.     short                            frameCount;                    /* number of frames this description applies to */
  284.     Str31                            name;                        /* name of codec ( in case not installed )  */
  285.     short                            depth;                        /* what depth is this data (1-32) or ( 33-40 grayscale ) */
  286.     short                            clutID;                        /* clut id or if 0 clut follows  or -1 if no clut */
  287. };
  288. typedef struct ImageDescription ImageDescription, *ImageDescriptionPtr, **ImageDescriptionHandle;
  289.  
  290. struct CodecInfo {
  291.     Str31                            typeName;                    /* name of the codec type i.e.: 'Apple Image Compression' */
  292.     short                            version;                    /* version of the codec data that this codec knows about */
  293.     short                            revisionLevel;                /* revision level of this codec i.e: 0x00010001 (1.0.1) */
  294.     long                            vendor;                        /* Maker of this codec i.e: 'appl' */
  295.     long                            decompressFlags;            /* codecInfo flags for decompression capabilities */
  296.     long                            compressFlags;                /* codecInfo flags for compression capabilities */
  297.     long                            formatFlags;                /* codecInfo flags for compression format details */
  298.     UInt8                            compressionAccuracy;        /* measure (1-255) of accuracy of this codec for compress (0 if unknown) */
  299.     UInt8                            decompressionAccuracy;        /* measure (1-255) of accuracy of this codec for decompress (0 if unknown) */
  300.     unsigned short                    compressionSpeed;            /* ( millisecs for compressing 320x240 on base mac II) (0 if unknown)  */
  301.     unsigned short                    decompressionSpeed;            /* ( millisecs for decompressing 320x240 on mac II)(0 if unknown)  */
  302.     UInt8                            compressionLevel;            /* measure (1-255) of compression level of this codec (0 if unknown)  */
  303.     UInt8                            resvd;                        /* pad */
  304.     short                            minimumHeight;                /* minimum height of image (block size) */
  305.     short                            minimumWidth;                /* minimum width of image (block size) */
  306.     short                            decompressPipelineLatency;    /* in milliseconds ( for asynchronous codecs ) */
  307.     short                            compressPipelineLatency;    /* in milliseconds ( for asynchronous codecs ) */
  308.     long                            privateData;
  309. };
  310. typedef struct CodecInfo CodecInfo;
  311.  
  312. struct CodecNameSpec {
  313.     CodecComponent                    codec;
  314.     CodecType                        cType;
  315.     Str31                            typeName;
  316.     Handle                            name;
  317. };
  318. typedef struct CodecNameSpec CodecNameSpec;
  319.  
  320. struct CodecNameSpecList {
  321.     short                            count;
  322.     CodecNameSpec                    list[1];
  323. };
  324. typedef struct CodecNameSpecList CodecNameSpecList, *CodecNameSpecListPtr;
  325.  
  326.  
  327. enum {
  328.     defaultDither                = 0,
  329.     forceDither                    = 1,
  330.     suppressDither                = 2,
  331.     useColorMatching            = 4
  332. };
  333.  
  334. struct ICMFrameTimeRecord {
  335.     wide                            value;                        /* frame time*/
  336.     long                            scale;                        /* timescale of value/duration fields*/
  337.     void                            *base;                        /* timebase*/
  338.     long                            duration;                    /* duration frame is to be displayed (0 if unknown)*/
  339.     Fixed                            rate;                        /* rate of timebase relative to wall-time*/
  340. };
  341. typedef struct ICMFrameTimeRecord ICMFrameTimeRecord, *ICMFrameTimePtr;
  342.  
  343.  
  344. #if GENERATINGCFM
  345. #else
  346. #endif
  347.  
  348. enum {
  349.     uppICMDataProcInfo = kPascalStackBased
  350.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  351.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr*)))
  352.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  353.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  354.     uppICMFlushProcInfo = kPascalStackBased
  355.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  356.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  357.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  358.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  359.     uppICMCompletionProcInfo = kPascalStackBased
  360.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSErr)))
  361.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  362.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  363.     uppICMProgressProcInfo = kPascalStackBased
  364.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  365.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  366.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Fixed)))
  367.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
  368.     uppStdPixProcInfo = kPascalStackBased
  369.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(PixMap*)))
  370.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  371.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(MatrixRecord*)))
  372.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  373.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle)))
  374.          | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(PixMap*)))
  375.          | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(Rect*)))
  376.          | STACK_ROUTINE_PARAMETER(8, SIZE_CODE(sizeof(short))),
  377.     uppICMAlignmentProcInfo = kPascalStackBased
  378.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect*)))
  379.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  380. };
  381.  
  382. #if GENERATINGCFM
  383. #define NewICMDataProc(userRoutine)        \
  384.         (ICMDataUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentArchitecture())
  385. #define NewICMFlushProc(userRoutine)        \
  386.         (ICMFlushUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentArchitecture())
  387. #define NewICMCompletionProc(userRoutine)        \
  388.         (ICMCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentArchitecture())
  389. #define NewICMProgressProc(userRoutine)        \
  390.         (ICMProgressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentArchitecture())
  391. #define NewStdPixProc(userRoutine)        \
  392.         (StdPixUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentArchitecture())
  393. #define NewICMAlignmentProc(userRoutine)        \
  394.         (ICMAlignmentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentArchitecture())
  395. #else
  396. #define NewICMDataProc(userRoutine)        \
  397.         ((ICMDataUPP) (userRoutine))
  398. #define NewICMFlushProc(userRoutine)        \
  399.         ((ICMFlushUPP) (userRoutine))
  400. #define NewICMCompletionProc(userRoutine)        \
  401.         ((ICMCompletionUPP) (userRoutine))
  402. #define NewICMProgressProc(userRoutine)        \
  403.         ((ICMProgressUPP) (userRoutine))
  404. #define NewStdPixProc(userRoutine)        \
  405.         ((StdPixUPP) (userRoutine))
  406. #define NewICMAlignmentProc(userRoutine)        \
  407.         ((ICMAlignmentUPP) (userRoutine))
  408. #endif
  409.  
  410. #if GENERATINGCFM
  411. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  412.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMDataProcInfo, (dataP), (bytesNeeded), (refcon))
  413. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  414.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMFlushProcInfo, (data), (bytesAdded), (refcon))
  415. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  416.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMCompletionProcInfo, (result), (flags), (refcon))
  417. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  418.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMProgressProcInfo, (message), (completeness), (refcon))
  419. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  420.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppStdPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  421. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  422.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMAlignmentProcInfo, (rp), (refcon))
  423. #else
  424. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  425.         (*(userRoutine))((dataP), (bytesNeeded), (refcon))
  426. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  427.         (*(userRoutine))((data), (bytesAdded), (refcon))
  428. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  429.         (*(userRoutine))((result), (flags), (refcon))
  430. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  431.         (*(userRoutine))((message), (completeness), (refcon))
  432. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  433.         (*(userRoutine))((src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  434. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  435.         (*(userRoutine))((rp), (refcon))
  436. #endif
  437.  
  438. extern pascal OSErr CodecManagerVersion(long *version)
  439.  TWOWORDINLINE(0x7000, 0xAAA3);
  440. extern pascal OSErr GetCodecNameList(CodecNameSpecListPtr *list, short showAll)
  441.  TWOWORDINLINE(0x7001, 0xAAA3);
  442. extern pascal OSErr DisposeCodecNameList(CodecNameSpecListPtr list)
  443.  TWOWORDINLINE(0x700F, 0xAAA3);
  444. extern pascal OSErr GetCodecInfo(CodecInfo *info, CodecType cType, CodecComponent codec)
  445.  TWOWORDINLINE(0x7003, 0xAAA3);
  446. extern pascal OSErr GetMaxCompressionSize(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, long *size)
  447.  TWOWORDINLINE(0x7004, 0xAAA3);
  448. extern pascal OSErr GetCompressionTime(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecType cType, CompressorComponent codec, CodecQ *spatialQuality, CodecQ *temporalQuality, unsigned long *compressTime)
  449.  TWOWORDINLINE(0x7005, 0xAAA3);
  450. extern pascal OSErr CompressImage(PixMapHandle src, const Rect *srcRect, CodecQ quality, CodecType cType, ImageDescriptionHandle desc, Ptr data)
  451.  TWOWORDINLINE(0x7006, 0xAAA3);
  452. extern pascal OSErr FCompressImage(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, CTabHandle clut, CodecFlags flags, long bufferSize, ICMFlushProcRecordPtr flushProc, ICMProgressProcRecordPtr progressProc, ImageDescriptionHandle desc, Ptr data)
  453.  TWOWORDINLINE(0x7007, 0xAAA3);
  454. extern pascal OSErr DecompressImage(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle mask)
  455.  TWOWORDINLINE(0x7008, 0xAAA3);
  456. extern pascal 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)
  457.  TWOWORDINLINE(0x7009, 0xAAA3);
  458. extern pascal 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 clut, CodecFlags flags, ImageDescriptionHandle desc)
  459.  TWOWORDINLINE(0x700A, 0xAAA3);
  460. extern pascal OSErr CompressSequenceFrame(ImageSequence seqID, PixMapHandle src, const Rect *srcRect, CodecFlags flags, Ptr data, long *dataSize, UInt8 *similarity, ICMCompletionProcRecordPtr asyncCompletionProc)
  461.  TWOWORDINLINE(0x700B, 0xAAA3);
  462. extern pascal 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)
  463.  TWOWORDINLINE(0x700D, 0xAAA3);
  464. extern pascal 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)
  465.  FOURWORDINLINE(0x203C, 0x30, 0x5D, 0xAAA3);
  466. extern pascal OSErr DecompressSequenceFrame(ImageSequence seqID, Ptr data, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  467.  TWOWORDINLINE(0x700E, 0xAAA3);
  468. extern pascal OSErr DecompressSequenceFrameS(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  469.  FOURWORDINLINE(0x203C, 0x16, 0x47, 0xAAA3);
  470. extern pascal OSErr DecompressSequenceFrameWhen(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc, const ICMFrameTimeRecord *frameTime)
  471.  FOURWORDINLINE(0x203C, 0x1A, 0x5E, 0xAAA3);
  472. extern pascal OSErr CDSequenceFlush(ImageSequence seqID)
  473.  FOURWORDINLINE(0x203C, 0x4, 0x5F, 0xAAA3);
  474. extern pascal OSErr SetDSequenceMatrix(ImageSequence seqID, MatrixRecordPtr matrix)
  475.  TWOWORDINLINE(0x7010, 0xAAA3);
  476. extern pascal OSErr SetDSequenceMatte(ImageSequence seqID, PixMapHandle matte, const Rect *matteRect)
  477.  TWOWORDINLINE(0x7011, 0xAAA3);
  478. extern pascal OSErr SetDSequenceMask(ImageSequence seqID, RgnHandle mask)
  479.  TWOWORDINLINE(0x7012, 0xAAA3);
  480. extern pascal OSErr SetDSequenceTransferMode(ImageSequence seqID, short mode, const RGBColor *opColor)
  481.  TWOWORDINLINE(0x7013, 0xAAA3);
  482. extern pascal OSErr SetDSequenceDataProc(ImageSequence seqID, ICMDataProcRecordPtr dataProc, long bufferSize)
  483.  TWOWORDINLINE(0x7014, 0xAAA3);
  484. extern pascal OSErr SetDSequenceAccuracy(ImageSequence seqID, CodecQ accuracy)
  485.  TWOWORDINLINE(0x7034, 0xAAA3);
  486. extern pascal OSErr SetDSequenceSrcRect(ImageSequence seqID, const Rect *srcRect)
  487.  TWOWORDINLINE(0x7035, 0xAAA3);
  488. extern pascal OSErr GetDSequenceImageBuffer(ImageSequence seqID, GWorldPtr *gworld)
  489.  TWOWORDINLINE(0x7015, 0xAAA3);
  490. extern pascal OSErr GetDSequenceScreenBuffer(ImageSequence seqID, GWorldPtr *gworld)
  491.  TWOWORDINLINE(0x7016, 0xAAA3);
  492. extern pascal OSErr SetCSequenceQuality(ImageSequence seqID, CodecQ spatialQuality, CodecQ temporalQuality)
  493.  TWOWORDINLINE(0x7017, 0xAAA3);
  494. extern pascal OSErr SetCSequencePrev(ImageSequence seqID, PixMapHandle prev, const Rect *prevRect)
  495.  TWOWORDINLINE(0x7018, 0xAAA3);
  496. extern pascal OSErr SetCSequenceFlushProc(ImageSequence seqID, ICMFlushProcRecordPtr flushProc, long bufferSize)
  497.  TWOWORDINLINE(0x7033, 0xAAA3);
  498. extern pascal OSErr SetCSequenceKeyFrameRate(ImageSequence seqID, long keyframerate)
  499.  TWOWORDINLINE(0x7036, 0xAAA3);
  500. extern pascal OSErr GetCSequenceKeyFrameRate(ImageSequence seqID, long *keyframerate)
  501.  FOURWORDINLINE(0x203C, 0x8, 0x4B, 0xAAA3);
  502. extern pascal OSErr GetCSequencePrevBuffer(ImageSequence seqID, GWorldPtr *gworld)
  503.  TWOWORDINLINE(0x7019, 0xAAA3);
  504. extern pascal OSErr CDSequenceBusy(ImageSequence seqID)
  505.  TWOWORDINLINE(0x701A, 0xAAA3);
  506. extern pascal OSErr CDSequenceEnd(ImageSequence seqID)
  507.  TWOWORDINLINE(0x701B, 0xAAA3);
  508. extern pascal OSErr GetCompressedImageSize(ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, long *dataSize)
  509.  TWOWORDINLINE(0x701C, 0xAAA3);
  510. extern pascal OSErr GetSimilarity(PixMapHandle src, const Rect *srcRect, ImageDescriptionHandle desc, Ptr data, Fixed *similarity)
  511.  TWOWORDINLINE(0x701D, 0xAAA3);
  512. extern pascal OSErr GetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle *ctable)
  513.  TWOWORDINLINE(0x701E, 0xAAA3);
  514. extern pascal OSErr SetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle ctable)
  515.  TWOWORDINLINE(0x701F, 0xAAA3);
  516. extern pascal OSErr GetImageDescriptionExtension(ImageDescriptionHandle desc, Handle *extension, long idType, long index)
  517.  TWOWORDINLINE(0x7020, 0xAAA3);
  518. extern pascal OSErr SetImageDescriptionExtension(ImageDescriptionHandle desc, Handle extension, long idType)
  519.  TWOWORDINLINE(0x7021, 0xAAA3);
  520. extern pascal OSErr RemoveImageDescriptionExtension(ImageDescription **desc, long idType, long index)
  521.  FOURWORDINLINE(0x203C, 0xC, 0x3A, 0xAAA3);
  522. extern pascal OSErr CountImageDescriptionExtensionType(ImageDescription **desc, long idType, long *count)
  523.  FOURWORDINLINE(0x203C, 0xC, 0x3B, 0xAAA3);
  524. extern pascal OSErr GetNextImageDescriptionExtensionType(ImageDescription **desc, long *idType)
  525.  FOURWORDINLINE(0x203C, 0x8, 0x3C, 0xAAA3);
  526. extern pascal OSErr FindCodec(CodecType cType, CodecComponent specCodec, CompressorComponent *compressor, DecompressorComponent *decompressor)
  527.  TWOWORDINLINE(0x7023, 0xAAA3);
  528. extern pascal OSErr CompressPicture(PicHandle srcPicture, PicHandle dstPicture, CodecQ quality, CodecType cType)
  529.  TWOWORDINLINE(0x7024, 0xAAA3);
  530. extern pascal OSErr FCompressPicture(PicHandle srcPicture, PicHandle dstPicture, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  531.  TWOWORDINLINE(0x7025, 0xAAA3);
  532. extern pascal OSErr CompressPictureFile(short srcRefNum, short dstRefNum, CodecQ quality, CodecType cType)
  533.  TWOWORDINLINE(0x7026, 0xAAA3);
  534. extern pascal OSErr FCompressPictureFile(short srcRefNum, short dstRefNum, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  535.  TWOWORDINLINE(0x7027, 0xAAA3);
  536. extern pascal OSErr GetPictureFileHeader(short refNum, Rect *frame, OpenCPicParams *header)
  537.  TWOWORDINLINE(0x7028, 0xAAA3);
  538. extern pascal OSErr DrawPictureFile(short refNum, const Rect *frame, ICMProgressProcRecordPtr progressProc)
  539.  TWOWORDINLINE(0x7029, 0xAAA3);
  540. extern pascal OSErr DrawTrimmedPicture(PicHandle srcPicture, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  541.  TWOWORDINLINE(0x702E, 0xAAA3);
  542. extern pascal OSErr DrawTrimmedPictureFile(short srcRefnum, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  543.  TWOWORDINLINE(0x702F, 0xAAA3);
  544. extern pascal OSErr MakeThumbnailFromPicture(PicHandle picture, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  545.  TWOWORDINLINE(0x702A, 0xAAA3);
  546. extern pascal OSErr MakeThumbnailFromPictureFile(short refNum, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  547.  TWOWORDINLINE(0x702B, 0xAAA3);
  548. extern pascal OSErr MakeThumbnailFromPixMap(PixMapHandle src, const Rect *srcRect, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  549.  TWOWORDINLINE(0x702C, 0xAAA3);
  550. extern pascal OSErr TrimImage(ImageDescriptionHandle desc, Ptr inData, long inBufferSize, ICMDataProcRecordPtr dataProc, Ptr outData, long outBufferSize, ICMFlushProcRecordPtr flushProc, Rect *trimRect, ICMProgressProcRecordPtr progressProc)
  551.  TWOWORDINLINE(0x702D, 0xAAA3);
  552. extern pascal OSErr ConvertImage(ImageDescriptionHandle srcDD, Ptr srcData, short colorDepth, CTabHandle clut, CodecQ accuracy, CodecQ quality, CodecType cType, CodecComponent codec, ImageDescriptionHandle dstDD, Ptr dstData)
  553.  TWOWORDINLINE(0x7030, 0xAAA3);
  554. extern pascal OSErr GetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle *desc, Ptr *data, long *bufferSize, ICMDataProcRecord *dataProc, ICMProgressProcRecord *progressProc)
  555.  TWOWORDINLINE(0x7037, 0xAAA3);
  556. extern pascal OSErr SetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, ICMProgressProcRecordPtr progressProc)
  557.  TWOWORDINLINE(0x7038, 0xAAA3);
  558. extern pascal void StdPix(PixMapPtr src, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, PixMapPtr matte, const Rect *matteRect, short flags)
  559.  TWOWORDINLINE(0x700C, 0xAAA3);
  560. extern pascal OSErr TransformRgn(MatrixRecordPtr matrix, RgnHandle rgn)
  561.  TWOWORDINLINE(0x7039, 0xAAA3);
  562. /***********
  563.     preview stuff
  564. ***********/
  565. extern pascal void SFGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, DlgHookUPP dlgHook, SFReply *reply)
  566.  TWOWORDINLINE(0x7041, 0xAAA3);
  567. extern pascal void SFPGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc)
  568.  TWOWORDINLINE(0x7042, 0xAAA3);
  569. extern pascal void StandardGetFilePreview(FileFilterUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, StandardFileReply *reply)
  570.  TWOWORDINLINE(0x7043, 0xAAA3);
  571. extern pascal void CustomGetFilePreview(FileFilterYDUPP fileFilter, short numTypes, ConstSFTypeListPtr typeList, StandardFileReply *reply, short dlgID, Point where, DlgHookYDUPP dlgHook, ModalFilterYDUPP filterProc, ActivationOrderListPtr activeList, ActivateYDUPP activateProc, void *yourDataPtr)
  572.  TWOWORDINLINE(0x7044, 0xAAA3);
  573. extern pascal OSErr MakeFilePreview(short resRefNum, ICMProgressProcRecordPtr progress)
  574.  TWOWORDINLINE(0x7045, 0xAAA3);
  575. extern pascal OSErr AddFilePreview(short resRefNum, OSType previewType, Handle previewData)
  576.  TWOWORDINLINE(0x7046, 0xAAA3);
  577.  
  578. enum {
  579.     sfpItemPreviewAreaUser        = 11,
  580.     sfpItemPreviewStaticText    = 12,
  581.     sfpItemPreviewDividerUser    = 13,
  582.     sfpItemCreatePreviewButton    = 14,
  583.     sfpItemShowPreviewButton    = 15
  584. };
  585.  
  586. struct PreviewResourceRecord {
  587.     unsigned long                    modDate;
  588.     short                            version;
  589.     OSType                            resType;
  590.     short                            resID;
  591. };
  592. typedef struct PreviewResourceRecord PreviewResourceRecord, *PreviewResourcePtr, **PreviewResource;
  593.  
  594. extern pascal void AlignScreenRect(Rect *rp, ICMAlignmentProcRecordPtr alignmentProc)
  595.  FOURWORDINLINE(0x203C, 0x8, 0x4C, 0xAAA3);
  596. extern pascal void AlignWindow(WindowPtr wp, Boolean front, const Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  597.  FOURWORDINLINE(0x203C, 0xE, 0x4D, 0xAAA3);
  598. extern pascal void DragAlignedWindow(WindowPtr wp, Point startPt, Rect *boundsRect, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  599.  FOURWORDINLINE(0x203C, 0x14, 0x4E, 0xAAA3);
  600. extern pascal long DragAlignedGrayRgn(RgnHandle theRgn, Point startPt, Rect *boundsRect, Rect *slopRect, short axis, UniversalProcPtr actionProc, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  601.  FOURWORDINLINE(0x203C, 0x1E, 0x4F, 0xAAA3);
  602. extern pascal OSErr SetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  603.  FOURWORDINLINE(0x203C, 0x8, 0x50, 0xAAA3);
  604. extern pascal OSErr SetCSequenceFrameNumber(ImageSequence seqID, long frameNumber)
  605.  FOURWORDINLINE(0x203C, 0x8, 0x51, 0xAAA3);
  606. extern pascal QDErr NewImageGWorld(GWorldPtr *gworld, ImageDescriptionHandle idh, GWorldFlags flags)
  607.  FOURWORDINLINE(0x203C, 0xC, 0x52, 0xAAA3);
  608. extern pascal OSErr GetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  609.  FOURWORDINLINE(0x203C, 0x8, 0x53, 0xAAA3);
  610. extern pascal OSErr GetCSequenceFrameNumber(ImageSequence seqID, long *frameNumber)
  611.  FOURWORDINLINE(0x203C, 0x8, 0x54, 0xAAA3);
  612. extern pascal OSErr GetBestDeviceRect(GDHandle *gdh, Rect *rp)
  613.  FOURWORDINLINE(0x203C, 0x8, 0x55, 0xAAA3);
  614. extern pascal OSErr SetSequenceProgressProc(ImageSequence seqID, ICMProgressProcRecord *progressProc)
  615.  FOURWORDINLINE(0x203C, 0x8, 0x56, 0xAAA3);
  616. extern pascal OSErr GDHasScale(GDHandle gdh, short depth, Fixed *scale)
  617.  FOURWORDINLINE(0x203C, 0xA, 0x5A, 0xAAA3);
  618. extern pascal OSErr GDGetScale(GDHandle gdh, Fixed *scale, short *flags)
  619.  FOURWORDINLINE(0x203C, 0xC, 0x5B, 0xAAA3);
  620. extern pascal OSErr GDSetScale(GDHandle gdh, Fixed scale, short flags)
  621.  FOURWORDINLINE(0x203C, 0xA, 0x5C, 0xAAA3);
  622. extern pascal OSErr ICMShieldSequenceCursor(ImageSequence seqID)
  623.  FOURWORDINLINE(0x203C, 0x4, 0x62, 0xAAA3);
  624. extern pascal void ICMDecompressComplete(ImageSequence seqID, OSErr err, short flag, ICMCompletionProcRecordPtr completionRtn)
  625.  FOURWORDINLINE(0x203C, 0xC, 0x63, 0xAAA3);
  626. extern pascal OSErr SetDSequenceTimeCode(ImageSequence seqID, void *timeCodeFormat, void *timeCodeTime)
  627.  FOURWORDINLINE(0x203C, 0xC, 0x64, 0xAAA3);
  628.  
  629. enum {
  630.     identityMatrixType            = 0x00,                            /* result if matrix is identity */
  631.     translateMatrixType            = 0x01,                            /* result if matrix translates */
  632.     scaleMatrixType                = 0x02,                            /* result if matrix scales */
  633.     scaleTranslateMatrixType    = 0x03,                            /* result if matrix scales and translates */
  634.     linearMatrixType            = 0x04,                            /* result if matrix is general 2 x 2 */
  635.     linearTranslateMatrixType    = 0x05,                            /* result if matrix is general 2 x 2 and translates */
  636.     perspectiveMatrixType        = 0x06                            /* result if matrix is general 3 x 3 */
  637. };
  638.  
  639. typedef unsigned short MatrixFlags;
  640.  
  641. extern pascal short GetMatrixType(const MatrixRecord *m)
  642.  TWOWORDINLINE(0x7014, 0xABC2);
  643. extern pascal void CopyMatrix(const MatrixRecord *m1, MatrixRecord *m2)
  644.  TWOWORDINLINE(0x7020, 0xABC2);
  645. extern pascal Boolean EqualMatrix(const MatrixRecord *m1, const MatrixRecord *m2)
  646.  TWOWORDINLINE(0x7021, 0xABC2);
  647. extern pascal void SetIdentityMatrix(MatrixRecord *matrix)
  648.  TWOWORDINLINE(0x7015, 0xABC2);
  649. extern pascal void TranslateMatrix(MatrixRecord *m, Fixed deltaH, Fixed deltaV)
  650.  TWOWORDINLINE(0x7019, 0xABC2);
  651. extern pascal void RotateMatrix(MatrixRecord *m, Fixed degrees, Fixed aboutX, Fixed aboutY)
  652.  TWOWORDINLINE(0x7016, 0xABC2);
  653. extern pascal void ScaleMatrix(MatrixRecord *m, Fixed scaleX, Fixed scaleY, Fixed aboutX, Fixed aboutY)
  654.  TWOWORDINLINE(0x7017, 0xABC2);
  655. extern pascal void SkewMatrix(MatrixRecord *m, Fixed skewX, Fixed skewY, Fixed aboutX, Fixed aboutY)
  656.  TWOWORDINLINE(0x7018, 0xABC2);
  657. extern pascal OSErr TransformFixedPoints(const MatrixRecord *m, FixedPoint *fpt, long count)
  658.  TWOWORDINLINE(0x7022, 0xABC2);
  659. extern pascal OSErr TransformPoints(const MatrixRecord *mp, Point *pt1, long count)
  660.  TWOWORDINLINE(0x7023, 0xABC2);
  661. extern pascal Boolean TransformFixedRect(const MatrixRecord *m, FixedRect *fr, FixedPoint *fpp)
  662.  TWOWORDINLINE(0x7024, 0xABC2);
  663. extern pascal Boolean TransformRect(const MatrixRecord *m, Rect *r, FixedPoint *fpp)
  664.  TWOWORDINLINE(0x7025, 0xABC2);
  665. extern pascal Boolean InverseMatrix(const MatrixRecord *m, MatrixRecord *im)
  666.  TWOWORDINLINE(0x701C, 0xABC2);
  667. extern pascal void ConcatMatrix(const MatrixRecord *a, MatrixRecord *b)
  668.  TWOWORDINLINE(0x701B, 0xABC2);
  669. extern pascal void RectMatrix(MatrixRecord *matrix, const Rect *srcRect, const Rect *dstRect)
  670.  TWOWORDINLINE(0x701E, 0xABC2);
  671. extern pascal void MapMatrix(MatrixRecord *matrix, const Rect *fromRect, const Rect *toRect)
  672.  TWOWORDINLINE(0x701D, 0xABC2);
  673.  
  674. #if PRAGMA_IMPORT_SUPPORTED
  675. #pragma import off
  676. #endif
  677.  
  678. #if PRAGMA_ALIGN_SUPPORTED
  679. #pragma options align=reset
  680. #endif
  681.  
  682. #ifdef __cplusplus
  683. }
  684. #endif
  685.  
  686. #endif /* __IMAGECOMPRESSION__ */
  687.