BuildCubeE/BootableMPW/Interfaces/CIncludes/ImageCodec.h
2018-11-16 09:50:16 +08:00

222 lines
5.9 KiB
C

/************************************************************
Created: Wednesday, October 21, 1992 at 2:55 PM
ImageCodec.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1991, 1992
All rights reserved
************************************************************/
#ifndef __IMAGECODEC__
#define __IMAGECODEC__
#ifndef __QUICKDRAW__
#include <QuickDraw.h>
#endif
#ifndef __QDOFFSCREEN__
#include <QDOffscreen.h>
#endif
#ifndef __TYPES__
#include <Types.h>
#endif
#ifndef __COMPONENTS__
#include <Components.h>
#endif
#ifndef __IMAGECOMPRESSION__
#include <ImageCompression.h>
#endif
/* codec component selectors */
#define codecGetCodecInfo 0x00
#define codecGetCompressionTime 0x01
#define codecGetMaxCompressionSize 0x02
#define codecPreCompress 0x03
#define codecBandCompress 0x04
#define codecPreDecompress 0x05
#define codecBandDecompress 0x06
#define codecCDSequenceBusy 0x07
#define codecGetCompressedImageSize 0x08
#define codecGetSimilarity 0x09
#define codecTrimImage 0x0a
/* codec selectors 0-127 are reserved by Apple */
/* codec selectors 128-191 are subtype specific */
/* codec selectors 192-255 are vendor specific */
/* codec selectors 256-32767 are available for general use */
/* negative selectors are reserved by the Component Manager */
/* codec capabilities flags */
#define codecCanScale (1L<<0)
#define codecCanMask (1L<<1)
#define codecCanMatte (1L<<2)
#define codecCanTransform (1L<<3)
#define codecCanTransferMode (1L<<4)
#define codecCanCopyPrev (1L<<5)
#define codecCanSpool (1L<<6)
#define codecCanClipVertical (1L<<7)
#define codecCanClipRectangular (1L<<8)
#define codecCanRemapColor (1L<<9)
#define codecCanFastDither (1L<<10)
#define codecCanSrcExtract (1L<<11)
#define codecCanCopyPrevComp (1L<<12)
#define codecCanAsync (1L<<13)
#define codecCanMakeMask (1L<<14)
#define codecCanShift (1L<<15)
typedef struct {
long flags;
short wantedPixelSize;
short extendWidth;
short extendHeight;
short bandMin;
short bandInc;
short pad;
unsigned long time;
} CodecCapabilities;
/* codec condition flags */
#define codecConditionFirstBand (1L<<0)
#define codecConditionLastBand (1L<<1)
#define codecConditionFirstFrame (1L<<2)
#define codecConditionNewDepth (1L<<3)
#define codecConditionNewTransform (1L<<4)
#define codecConditionNewSrcRect (1L<<5)
#define codecConditionNewMask (1L<<6)
#define codecConditionNewMatte (1L<<7)
#define codecConditionNewTransferMode (1L<<8)
#define codecConditionNewClut (1L<<9)
#define codecConditionNewAccuracy (1L<<10)
#define codecConditionNewDestination (1L<<11)
#define codecConditionCodecChangedMask (1L<<31)
#define codecInfoResourceType 'cdci' /* codec info resource type */
#define codecInterfaceVersion 1 /* high word returned in component GetVersion */
typedef struct {
ImageSequence sequenceID; /* precompress,bandcompress */
ImageDescriptionHandle imageDescription; /* precompress,bandcompress */
Ptr data;
long bufferSize;
long frameNumber;
long startLine;
long stopLine;
long conditionFlags;
CodecFlags callerFlags;
CodecCapabilities *capabilities; /* precompress,bandcompress */
ProgressProcRecord progressProcRecord;
CompletionProcRecord completionProcRecord;
FlushProcRecord flushProcRecord;
PixMap srcPixMap; /* precompress,bandcompress */
PixMap prevPixMap;
CodecQ spatialQuality;
CodecQ temporalQuality;
Fixed similarity;
DataRateParamsPtr dataRateParams;
long reserved;
} CodecCompressParams;
typedef struct {
ImageSequence sequenceID; /* predecompress,banddecompress */
ImageDescriptionHandle imageDescription; /* predecompress,banddecompress */
Ptr data;
long bufferSize;
long frameNumber;
long startLine;
long stopLine;
long conditionFlags;
CodecFlags callerFlags;
CodecCapabilities *capabilities; /* predecompress,banddecompress */
ProgressProcRecord progressProcRecord;
CompletionProcRecord completionProcRecord;
DataProcRecord dataProcRecord;
CGrafPtr port; /* predecompress,banddecompress */
PixMap dstPixMap; /* predecompress,banddecompress */
BitMapPtr maskBits;
PixMapPtr mattePixMap;
Rect srcRect; /* predecompress,banddecompress */
MatrixRecord *matrix; /* predecompress,banddecompress */
CodecQ accuracy; /* predecompress,banddecompress */
short transferMode; /* predecompress,banddecompress */
long reserved[2];
} CodecDecompressParams;
#define PREAMBLE Handle storage
pascal ComponentResult
CDGetCodecInfo(PREAMBLE,CodecInfo *info)
;
pascal ComponentResult
CDGetCompressionTime(PREAMBLE,PixMapHandle src,Rect *srcRect, short depth,CodecQ *spatialQuality,
CodecQ *temporalQuality,unsigned long *time)
;
pascal ComponentResult
CDGetMaxCompressionSize(PREAMBLE,PixMapHandle src,Rect *srcRect, short depth,CodecQ quality,long *size)
;
pascal ComponentResult
CDPreCompress(PREAMBLE,CodecCompressParams *params)
;
pascal ComponentResult
CDBandCompress(PREAMBLE,CodecCompressParams *params)
;
pascal ComponentResult
CDPreDecompress(PREAMBLE,CodecDecompressParams *params)
;
pascal ComponentResult
CDBandDecompress(PREAMBLE,CodecDecompressParams *params)
;
pascal ComponentResult
CDCodecBusy(PREAMBLE,ImageSequence seq)
;
pascal ComponentResult
CDGetCompressedImageSize(PREAMBLE,ImageDescriptionHandle desc,Ptr data,long bufferSize,
DataProcRecordPtr dataProc,long *dataSize)
;
pascal ComponentResult
CDGetSimilarity(PREAMBLE,PixMapHandle src,Rect *srcRect,ImageDescriptionHandle desc,Ptr data,Fixed *similarity)
;
pascal ComponentResult
CDTrimImage(PREAMBLE,ImageDescriptionHandle Desc,Ptr inData,long inBufferSize, DataProcRecordPtr dataProc,
Ptr outData,long outBufferSize,FlushProcRecordPtr flushProc,Rect *trimRect,ProgressProcRecordPtr progressProc)
;
#endif __IMAGECODEC__