Files
BuildCubeE/BootableMPW/PInterfaces/ImageCodec.p
2018-11-06 13:05:08 +08:00

211 lines
6.1 KiB
OpenEdge ABL

{
Created: Tuesday, October 13, 1992
ImageCodec.p
Pascal Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1991, 1992
All rights reserved
}
{$IFC UNDEFINED UsingIncludes}
{$SETC UsingIncludes := 0}
{$ENDC}
{$IFC NOT UsingIncludes}
UNIT ImageCodec;
INTERFACE
{$ENDC}
{$IFC UNDEFINED UsingImageCodec}
{$SETC UsingImageCodec := 1}
{$I+}
{$SETC ImageCodecIncludes := UsingIncludes}
{$SETC UsingIncludes := 1}
{$IFC UNDEFINED UsingQuickDraw}
{$I $$Shell(PInterfaces)QuickDraw.p}
{$ENDC}
{$IFC UNDEFINED UsingQDOffscreen}
{$I $$Shell(PInterfaces)QDOffscreen.p}
{$ENDC}
{$IFC UNDEFINED UsingTypes}
{$I $$Shell(PInterfaces)Types.p}
{$ENDC}
{$IFC UNDEFINED UsingComponents}
{$I $$Shell(PInterfaces)Components.p}
{$ENDC}
{$IFC UNDEFINED UsingImageCompression}
{$I $$Shell(PInterfaces)ImageCompression.p}
{$ENDC}
{$SETC UsingIncludes := ImageCodecIncludes}
{ codec component selectors }
{ 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 reserved by Apple }
{ negative selectors are reserved by the Component Manager }
CONST
codecGetCodecInfo = $00;
codecGetCompressionTime = $01;
codecGetMaxCompressionSize = $02;
codecPreCompress = $03;
codecBandCompress = $04;
codecPreDecompress = $05;
codecBandDecompress = $06;
codecCDSequenceBusy = $07;
codecGetCompressedImageSize = $08;
codecGetSimilarity = $09;
codecTrimImage = $0a;
{ codec capabilities flags }
codecCanScale = $1;
codecCanMask = $2;
codecCanMatte = $4;
codecCanTransform = $8;
codecCanTransferMode = $10;
codecCanCopyPrev = $20;
codecCanSpool = $40;
codecCanClipVertical = $80;
codecCanClipRectangular = $100;
codecCanRemapColor = $200;
codecCanFastDither = $400;
codecCanSrcExtract = $800;
codecCanCopyPrevComp = $1000;
codecCanAsync = $2000;
codecCanMakeMask = $4000;
codecCanShift = $8000;
TYPE
CodecCapabilitiesPtr = ^CodecCapabilities;
CodecCapabilities = RECORD
flags: LONGINT;
wantedPixelSize: INTEGER;
extendWidth: INTEGER;
extendHeight: INTEGER;
bandMin: INTEGER;
bandInc: INTEGER;
pad: INTEGER;
time: INTEGER;
END;
CONST
codecConditionFirstBand = $1;
codecConditionLastBand = $2;
codecConditionFirstFrame = $4;
codecConditionNewDepth = $8;
codecConditionNewTransform = $10;
codecConditionNewSrcRect = $20;
codecConditionNewMask = $40;
codecConditionNewMatte = $80;
codecConditionNewTransferMode = $100;
codecConditionNewClut = $200;
codecConditionNewAccuracy = $400;
codecConditionNewDestination = $800;
codecConditionCodecChangedMask = $80000000;
codecInfoResourceType = 'cdci'; { codec info resource type }
codecInterfaceVersion = 1;
TYPE
CodecCompressParamsPtr = ^CodecCompressParams;
CodecCompressParams = RECORD
sequenceID :ImageSequence ; { precompress,bandcompress }
imageDescription: ImageDescriptionHandle; { precompress,bandcompress }
data : Ptr;
bufferSize : LONGINT;
frameNumber: LONGINT;
startLine: LONGINT;
stopLine: LONGINT;
conditionFlags: LONGINT;
callerFlags : CodecFlags;
capabilities : CodecCapabilitiesPtr; { precompress,bandcompress }
progressProcRecord : ProgressProcRecord;
completionProcRecord : CompletionProcRecord;
flushProcRecord : FlushProcRecord;
srcPixMap :PixMap; { precompress,bandcompress }
prevPixMap : PixMap;
spatialQuality : CodecQ;
temporalQuality : CodecQ;
similarity : fixed;
reserved: ARRAY [0..1] OF LONGINT;
END;
CodecDecompressParamsPtr = ^CodecDecompressParams;
CodecDecompressParams = RECORD
sequenceID : ImageSequence; { predecompress,banddecompress }
imageDescription : ImageDescriptionHandle; { predecompress,banddecompress }
data : Ptr;
bufferSize : LONGINT;
frameNumber : LONGINT;
startLine : LONGINT;
stopLine : LONGINT;
conditionFlags : LONGINT;
callerFlags : CodecFlags;
capabilities : CodecCapabilitiesPtr; { predecompress,banddecompress }
progressProcRecord : ProgressProcRecord;
completionProcRecord : CompletionProcRecord;
dataProcRecord : DataProcRecord;
port : CGrafPtr; { predecompress,banddecompress }
dstPixMap : PixMap; { predecompress,banddecompress }
maskBits : BitMapPtr;
mattePixMap : PixMapPtr;
srcRect : Rect; { predecompress,banddecompress }
matrix : MatrixRecordPtr; { predecompress,banddecompress }
accuracy : CodecQ; { predecompress,banddecompress }
transferMode : INTEGER; { predecompress,banddecompress }
reserved : ARRAY [0..1] OF LONGINT;
END;
FUNCTION CDGetCodecInfo(storage : Handle;VAR info: CodecInfo) : ComponentResult;
FUNCTION CDGetCompressionTime(storage : Handle; src: PixMapHandle; srcRect : Rect; depth :INTEGER ;
VAR spatialQuality: CodecQ; VAR temporalQuality: CodecQ;VAR time: LONGINT): ComponentResult;
FUNCTION CDGetMaxCompressionSize(storage : Handle; src : PixMapHandle; srcRect : Rect;
depth : INTEGER; quality : CodecQ;VAR size : LONGINT) : ComponentResult;
FUNCTION CDPreCompress(storage : Handle;params : CodecCompressParamsPtr) : ComponentResult;
FUNCTION CDBandCompress(storage : Handle;params: CodecCompressParamsPtr) : ComponentResult;
FUNCTION CDPreDecompress(storage : Handle;params: CodecDecompressParamsPtr) : ComponentResult;
FUNCTION CDBandDecompress(storage : Handle;params: CodecDecompressParamsPtr) : ComponentResult;
FUNCTION CDCodecBusy(storage : Handle;seq : ImageSequence) : ComponentResult;
FUNCTION CDGetCompressedImageSize(storage : Handle; desc : ImageDescriptionHandle;data : PTR;
bufferSize :LONGINT; dataProc : DataProcRecordPtr;VAR dataSize: LONGINT) : ComponentResult;
FUNCTION CDGetSimilarity(storage : Handle; src : PixMapHandle; srcRect : Rect;
desc : ImageDescriptionHandle; data : Ptr; VAR similarity : Fixed) : ComponentResult;
FUNCTION CDTrimImage(storage : Handle; desc : ImageDescriptionHandle; inData: Ptr; inBufferSize : LONGINT;
dataProc : DataProcRecordPtr; outData : Ptr; outBufferSize : LONGINT;
flushProc : FlushProcRecordPtr; VAR trimRect : Rect; progressProc : ProgressProcRecordPtr) : ComponentResult;
{$ENDC} { UsingImageCodec }
{$IFC NOT UsingIncludes}
END.
{$ENDC}