home *** CD-ROM | disk | FTP | other *** search
/ Mac Mania 2 / MacMania 2.toast / Demo's / Tools&Utilities / Updaters / Symantec C++⁄MPW 6.0.1 / SCpp 6.0.1 Update / SCIncludes / ImageCodec.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-27  |  5.9 KB  |  222 lines  |  [TEXT/MPS ]

  1. /************************************************************
  2.  
  3. Created: Wednesday, October 21, 1992 at 2:55 PM
  4.  ImageCodec.h
  5.  C Interface to the Macintosh Libraries
  6.  
  7.  
  8.  Copyright Apple Computer, Inc. 1991, 1992
  9.  All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #ifndef    __IMAGECODEC__
  14.  
  15. #define    __IMAGECODEC__
  16.  
  17. #ifndef __QUICKDRAW__
  18. #include <QuickDraw.h>
  19. #endif
  20.  
  21. #ifndef __QDOFFSCREEN__
  22. #include <QDOffscreen.h>
  23. #endif
  24.  
  25. #ifndef __TYPES__
  26. #include <Types.h>
  27. #endif
  28.  
  29. #ifndef __COMPONENTS__
  30. #include <Components.h>
  31. #endif
  32.  
  33. #ifndef    __IMAGECOMPRESSION__
  34. #include <ImageCompression.h>
  35. #endif
  36.  
  37.  
  38.  
  39.  
  40. /*    codec component selectors    */
  41.  
  42. #define    codecGetCodecInfo                    0x00
  43. #define    codecGetCompressionTime                0x01
  44. #define    codecGetMaxCompressionSize            0x02
  45. #define    codecPreCompress                    0x03
  46. #define    codecBandCompress                    0x04
  47. #define    codecPreDecompress                    0x05
  48. #define    codecBandDecompress                    0x06
  49. #define    codecCDSequenceBusy                    0x07
  50. #define    codecGetCompressedImageSize            0x08
  51. #define    codecGetSimilarity                    0x09
  52. #define    codecTrimImage                        0x0a
  53.  
  54. /*    codec selectors 0-127 are reserved by Apple */
  55. /*    codec selectors 128-191 are subtype specific */
  56. /*    codec selectors 192-255 are vendor specific */
  57. /*    codec selectors 256-32767 are available for general use */
  58. /*    negative selectors are reserved by the Component Manager */
  59.  
  60.  
  61.  
  62. /*    codec capabilities flags    */
  63.  
  64. #define    codecCanScale                        (1L<<0)
  65. #define    codecCanMask                        (1L<<1)
  66. #define    codecCanMatte                        (1L<<2)
  67. #define    codecCanTransform                    (1L<<3)
  68. #define    codecCanTransferMode                (1L<<4)
  69. #define    codecCanCopyPrev                    (1L<<5)
  70. #define    codecCanSpool                        (1L<<6)
  71. #define    codecCanClipVertical                (1L<<7)
  72. #define    codecCanClipRectangular                (1L<<8)
  73. #define    codecCanRemapColor                    (1L<<9)
  74. #define    codecCanFastDither                    (1L<<10)
  75. #define    codecCanSrcExtract                    (1L<<11)
  76. #define    codecCanCopyPrevComp                (1L<<12)
  77. #define    codecCanAsync                        (1L<<13)
  78. #define    codecCanMakeMask                    (1L<<14)
  79. #define codecCanShift                        (1L<<15)
  80.  
  81.  
  82. typedef    struct {
  83.     long    flags;
  84.     short    wantedPixelSize;
  85.     short    extendWidth;
  86.     short    extendHeight;
  87.     short    bandMin;
  88.     short    bandInc;
  89.     short    pad;
  90.     unsigned long    time;
  91. } CodecCapabilities;
  92.  
  93.  
  94.  
  95. /*    codec condition flags    */
  96.  
  97. #define    codecConditionFirstBand                (1L<<0)    
  98. #define    codecConditionLastBand                (1L<<1)    
  99. #define    codecConditionFirstFrame            (1L<<2)
  100. #define    codecConditionNewDepth                (1L<<3)
  101. #define    codecConditionNewTransform            (1L<<4)
  102. #define    codecConditionNewSrcRect            (1L<<5)
  103. #define    codecConditionNewMask                (1L<<6)
  104. #define    codecConditionNewMatte                (1L<<7)
  105. #define    codecConditionNewTransferMode        (1L<<8)
  106. #define    codecConditionNewClut                (1L<<9)
  107. #define    codecConditionNewAccuracy            (1L<<10)
  108. #define    codecConditionNewDestination        (1L<<11)
  109. #define    codecConditionCodecChangedMask        (1L<<31)    
  110.  
  111.  
  112. #define    codecInfoResourceType        'cdci'            /* codec info resource type */
  113.  
  114. #define    codecInterfaceVersion        1                /* high word returned in component GetVersion */
  115.  
  116.  
  117. typedef    struct {    
  118.     ImageSequence             sequenceID;                /* precompress,bandcompress */
  119.     ImageDescriptionHandle     imageDescription;        /* precompress,bandcompress */
  120.     Ptr                     data;
  121.     long                     bufferSize;
  122.     long                     frameNumber;
  123.     long                     startLine;
  124.     long                     stopLine;
  125.     long                    conditionFlags;
  126.     CodecFlags                 callerFlags;
  127.     CodecCapabilities        *capabilities;            /* precompress,bandcompress */
  128.     ProgressProcRecord        progressProcRecord;
  129.     CompletionProcRecord    completionProcRecord;    
  130.     FlushProcRecord         flushProcRecord;
  131.  
  132.     PixMap                     srcPixMap;                /* precompress,bandcompress */
  133.     PixMap                     prevPixMap;
  134.     CodecQ                     spatialQuality;
  135.     CodecQ                     temporalQuality;
  136.     Fixed                     similarity;
  137.     DataRateParamsPtr        dataRateParams;
  138.     long                    reserved;
  139. } CodecCompressParams;
  140.  
  141. typedef    struct {    
  142.     ImageSequence             sequenceID;                /* predecompress,banddecompress */
  143.     ImageDescriptionHandle     imageDescription;        /* predecompress,banddecompress */
  144.     Ptr                     data;
  145.     long                     bufferSize;
  146.     long                     frameNumber;
  147.     long                     startLine;
  148.     long                     stopLine;
  149.     long                    conditionFlags;
  150.     CodecFlags                 callerFlags;
  151.     CodecCapabilities         *capabilities;            /* predecompress,banddecompress */
  152.     ProgressProcRecord        progressProcRecord;
  153.     CompletionProcRecord    completionProcRecord;
  154.     DataProcRecord            dataProcRecord;
  155.  
  156.     CGrafPtr                 port;                    /* predecompress,banddecompress */
  157.     PixMap                     dstPixMap;                /* predecompress,banddecompress */
  158.     BitMapPtr                 maskBits;
  159.     PixMapPtr                 mattePixMap;
  160.     Rect                     srcRect;                /* predecompress,banddecompress */
  161.     MatrixRecord             *matrix;                /* predecompress,banddecompress */
  162.     CodecQ                     accuracy;                /* predecompress,banddecompress */
  163.     short                     transferMode;            /* predecompress,banddecompress */
  164.     long                    reserved[2];
  165. } CodecDecompressParams;
  166.  
  167.  
  168.  
  169. #define    PREAMBLE    Handle    storage
  170.  
  171. pascal ComponentResult
  172. CDGetCodecInfo(PREAMBLE,CodecInfo *info)
  173. ;
  174.  
  175. pascal ComponentResult
  176. CDGetCompressionTime(PREAMBLE,PixMapHandle src,Rect *srcRect, short depth,CodecQ *spatialQuality,
  177.     CodecQ *temporalQuality,unsigned long *time)
  178. ;
  179.  
  180. pascal ComponentResult
  181. CDGetMaxCompressionSize(PREAMBLE,PixMapHandle src,Rect *srcRect, short depth,CodecQ quality,long *size)
  182. ;
  183.  
  184.  
  185. pascal ComponentResult
  186. CDPreCompress(PREAMBLE,CodecCompressParams *params)
  187. ;
  188.  
  189. pascal ComponentResult
  190. CDBandCompress(PREAMBLE,CodecCompressParams *params)
  191. ;
  192.  
  193. pascal ComponentResult
  194. CDPreDecompress(PREAMBLE,CodecDecompressParams *params)
  195. ;
  196.  
  197. pascal ComponentResult
  198. CDBandDecompress(PREAMBLE,CodecDecompressParams *params)
  199. ;
  200.  
  201. pascal ComponentResult
  202. CDCodecBusy(PREAMBLE,ImageSequence seq)
  203. ;
  204.  
  205.  
  206. pascal ComponentResult
  207. CDGetCompressedImageSize(PREAMBLE,ImageDescriptionHandle desc,Ptr data,long bufferSize, 
  208.     DataProcRecordPtr dataProc,long *dataSize)
  209. ;
  210.  
  211. pascal ComponentResult
  212. CDGetSimilarity(PREAMBLE,PixMapHandle src,Rect *srcRect,ImageDescriptionHandle desc,Ptr data,Fixed *similarity)
  213. ;
  214.  
  215. pascal ComponentResult
  216. CDTrimImage(PREAMBLE,ImageDescriptionHandle Desc,Ptr inData,long inBufferSize, DataProcRecordPtr dataProc,
  217.     Ptr outData,long outBufferSize,FlushProcRecordPtr flushProc,Rect *trimRect,ProgressProcRecordPtr progressProc)
  218. ;
  219.  
  220.  
  221. #endif    __IMAGECODEC__
  222.