ImageCodec.k.h

/*
     File:       ImageCodec.k.h
 
     Contains:   QuickTime Interfaces.
 
     Version:    Technology: QuickTime 5.0.1
                 Release:    Universal Interfaces 3.4
 
     Copyright:  © 1990-2001 by Apple Computer, Inc., all rights reserved
 
    Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple Computer, Inc.
                ("Apple") in consideration of your agreement to the following terms, and your
                use, installation, modification or redistribution of this Apple software
                constitutes acceptance of these terms.  If you do not agree with these terms,
                please do not use, install, modify or redistribute this Apple software.
 
                In consideration of your agreement to abide by the following terms, and subject
                to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs
                copyrights in this original Apple software (the "Apple Software"), to use,
                reproduce, modify and redistribute the Apple Software, with or without
                modifications, in source and/or binary forms; provided that if you redistribute
                the Apple Software in its entirety and without modifications, you must retain
                this notice and the following text and disclaimers in all such redistributions of
                the Apple Software.  Neither the name, trademarks, service marks or logos of
                Apple Computer, Inc. may be used to endorse or promote products derived from the
                Apple Software without specific prior written permission from Apple.  Except as
                expressly stated in this notice, no other rights or licenses, express or implied,
                are granted by Apple herein, including but not limited to any patent rights that
                may be infringed by your derivative works or by other works in which the Apple
                Software may be incorporated.
 
                The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO
                WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
                WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
                COMBINATION WITH YOUR PRODUCTS.
 
                IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
                CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
                GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION
                OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT
                (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN
                ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
     Bugs?:      For bug reports, consult the following page on
                 the World Wide Web:
 
                     http://developer.apple.com/bugreporter/
 
*/
#ifndef __IMAGECODEC_K__
#define __IMAGECODEC_K__
 
#include <QuickTime/QuickTime.h>
 
/*
    Example usage:
 
        #define IMAGECODEC_BASENAME()   Fred
        #define IMAGECODEC_GLOBALS()    FredGlobalsHandle
        #include <ImageCodec.k.h>
 
    To specify that your component implementation does not use globals, do not #define IMAGECODEC_GLOBALS
*/
#ifdef IMAGECODEC_BASENAME
    #ifndef IMAGECODEC_GLOBALS
        #define IMAGECODEC_GLOBALS() 
        #define ADD_IMAGECODEC_COMMA 
    #else
        #define ADD_IMAGECODEC_COMMA ,
    #endif
    #define IMAGECODEC_GLUE(a,b) a##b
    #define IMAGECODEC_STRCAT(a,b) IMAGECODEC_GLUE(a,b)
    #define ADD_IMAGECODEC_BASENAME(name) IMAGECODEC_STRCAT(IMAGECODEC_BASENAME(),name)
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetCodecInfo) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecInfo * info);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetCompressionTime) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA PixMapHandle  src, const Rect * srcRect, short  depth, CodecQ * spatialQuality, CodecQ * temporalQuality, unsigned long * time);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetMaxCompressionSize) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA PixMapHandle  src, const Rect * srcRect, short  depth, CodecQ  quality, long * size);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(PreCompress) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecCompressParams * params);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(BandCompress) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecCompressParams * params);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(PreDecompress) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * params);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(BandDecompress) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * params);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(Busy) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageSequence  seq);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetCompressedImageSize) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageDescriptionHandle  desc, Ptr  data, long  bufferSize, ICMDataProcRecordPtr  dataProc, long * dataSize);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetSimilarity) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA PixMapHandle  src, const Rect * srcRect, ImageDescriptionHandle  desc, Ptr  data, Fixed * similarity);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(TrimImage) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageDescriptionHandle  Desc, Ptr  inData, long  inBufferSize, ICMDataProcRecordPtr  dataProc, Ptr  outData, long  outBufferSize, ICMFlushProcRecordPtr  flushProc, Rect * trimRect, ICMProgressProcRecordPtr  progressProc);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(RequestSettings) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Handle  settings, Rect * rp, ModalFilterUPP  filterProc);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetSettings) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Handle  settings);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(SetSettings) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Handle  settings);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(Flush) (IMAGECODEC_GLOBALS());
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(SetTimeCode) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA void * timeCodeFormat, void * timeCodeTime);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(IsImageDescriptionEquivalent) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageDescriptionHandle  newDesc, Boolean * equivalent);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(NewMemory) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Ptr * data, Size  dataSize, long  dataUse, ICMMemoryDisposedUPP  memoryGoneProc, void * refCon);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(DisposeMemory) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Ptr  data);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(HitTestData) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageDescriptionHandle  desc, void * data, Size  dataSize, Point  where, Boolean * hit);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(NewImageBufferMemory) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * params, long  flags, ICMMemoryDisposedUPP  memoryGoneProc, void * refCon);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(ExtractAndCombineFields) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA long  fieldFlags, void * data1, long  dataSize1, ImageDescriptionHandle  desc1, void * data2, long  dataSize2, ImageDescriptionHandle  desc2, void * outputData, long * outDataSize, ImageDescriptionHandle  descOut);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetMaxCompressionSizeWithSources) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA PixMapHandle  src, const Rect * srcRect, short  depth, CodecQ  quality, CDSequenceDataSourcePtr  sourceData, long * size);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(SetTimeBase) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA void * base);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(SourceChanged) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA UInt32  majorSourceChangeSeed, UInt32  minorSourceChangeSeed, CDSequenceDataSourcePtr  sourceData, long * flagsOut);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(FlushFrame) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA UInt32  flags);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetSettingsAsText) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Handle * text);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetParameterListHandle) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Handle * parameterDescriptionHandle);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetParameterList) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA QTAtomContainer * parameterDescription);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(CreateStandardParameterDialog) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA QTAtomContainer  parameterDescription, QTAtomContainer  parameters, QTParameterDialogOptions  dialogOptions, DialogPtr  existingDialog, short  existingUserItem, QTParameterDialog * createdDialog);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(IsStandardParameterDialogEvent) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA EventRecord * pEvent, QTParameterDialog  createdDialog);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(DismissStandardParameterDialog) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA QTParameterDialog  createdDialog);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(StandardParameterDialogDoAction) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA QTParameterDialog  createdDialog, long  action, void * params);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(NewImageGWorld) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * params, GWorldPtr * newGW, long  flags);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(DisposeImageGWorld) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA GWorldPtr  theGW);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(HitTestDataWithFlags) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageDescriptionHandle  desc, void * data, Size  dataSize, Point  where, long * hit, long  hitFlags);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(ValidateParameters) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA QTAtomContainer  parameters, QTParameterValidationOptions  validationFlags, StringPtr  errorString);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetBaseMPWorkFunction) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ComponentMPWorkFunctionUPP * workFunction, void ** refCon, ImageCodecMPDrawBandUPP  drawProc, void * drawProcRefCon);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(RequestGammaLevel) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Fixed  srcGammaLevel, Fixed  dstGammaLevel, long * codecCanMatch);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetSourceDataGammaLevel) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA Fixed * sourceDataGammaLevel);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(GetDecompressLatency) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA TimeRecord * latency);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(Preflight) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * params);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(Initialize) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageSubCodecDecompressCapabilities * cap);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(BeginBand) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * params, ImageSubCodecDecompressRecord * drp, long  flags);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(DrawBand) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageSubCodecDecompressRecord * drp);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EndBand) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA ImageSubCodecDecompressRecord * drp, OSErr  result, long  flags);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(QueueStarting) (IMAGECODEC_GLOBALS());
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(QueueStopping) (IMAGECODEC_GLOBALS());
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(DroppingFrame) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA const ImageSubCodecDecompressRecord * drp);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(ScheduleFrame) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA const ImageSubCodecDecompressRecord * drp, ImageCodecTimeTriggerUPP  triggerProc, void * triggerProcRefCon);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(CancelTrigger) (IMAGECODEC_GLOBALS());
 
 
    /* MixedMode ProcInfo constants for component calls */
    enum {
        uppImageCodecGetCodecInfoProcInfo = 0x000003F0,
        uppImageCodecGetCompressionTimeProcInfo = 0x000FEFF0,
        uppImageCodecGetMaxCompressionSizeProcInfo = 0x0003EFF0,
        uppImageCodecPreCompressProcInfo = 0x000003F0,
        uppImageCodecBandCompressProcInfo = 0x000003F0,
        uppImageCodecPreDecompressProcInfo = 0x000003F0,
        uppImageCodecBandDecompressProcInfo = 0x000003F0,
        uppImageCodecBusyProcInfo = 0x000003F0,
        uppImageCodecGetCompressedImageSizeProcInfo = 0x0003FFF0,
        uppImageCodecGetSimilarityProcInfo = 0x0003FFF0,
        uppImageCodecTrimImageProcInfo = 0x03FFFFF0,
        uppImageCodecRequestSettingsProcInfo = 0x00003FF0,
        uppImageCodecGetSettingsProcInfo = 0x000003F0,
        uppImageCodecSetSettingsProcInfo = 0x000003F0,
        uppImageCodecFlushProcInfo = 0x000000F0,
        uppImageCodecSetTimeCodeProcInfo = 0x00000FF0,
        uppImageCodecIsImageDescriptionEquivalentProcInfo = 0x00000FF0,
        uppImageCodecNewMemoryProcInfo = 0x0003FFF0,
        uppImageCodecDisposeMemoryProcInfo = 0x000003F0,
        uppImageCodecHitTestDataProcInfo = 0x0003FFF0,
        uppImageCodecNewImageBufferMemoryProcInfo = 0x0000FFF0,
        uppImageCodecExtractAndCombineFieldsProcInfo = 0x0FFFFFF0,
        uppImageCodecGetMaxCompressionSizeWithSourcesProcInfo = 0x000FEFF0,
        uppImageCodecSetTimeBaseProcInfo = 0x000003F0,
        uppImageCodecSourceChangedProcInfo = 0x0000FFF0,
        uppImageCodecFlushFrameProcInfo = 0x000003F0,
        uppImageCodecGetSettingsAsTextProcInfo = 0x000003F0,
        uppImageCodecGetParameterListHandleProcInfo = 0x000003F0,
        uppImageCodecGetParameterListProcInfo = 0x000003F0,
        uppImageCodecCreateStandardParameterDialogProcInfo = 0x000EFFF0,
        uppImageCodecIsStandardParameterDialogEventProcInfo = 0x00000FF0,
        uppImageCodecDismissStandardParameterDialogProcInfo = 0x000003F0,
        uppImageCodecStandardParameterDialogDoActionProcInfo = 0x00003FF0,
        uppImageCodecNewImageGWorldProcInfo = 0x00003FF0,
        uppImageCodecDisposeImageGWorldProcInfo = 0x000003F0,
        uppImageCodecHitTestDataWithFlagsProcInfo = 0x000FFFF0,
        uppImageCodecValidateParametersProcInfo = 0x00003FF0,
        uppImageCodecGetBaseMPWorkFunctionProcInfo = 0x0000FFF0,
        uppImageCodecRequestGammaLevelProcInfo = 0x00003FF0,
        uppImageCodecGetSourceDataGammaLevelProcInfo = 0x000003F0,
        uppImageCodecGetDecompressLatencyProcInfo = 0x000003F0,
        uppImageCodecPreflightProcInfo = 0x000003F0,
        uppImageCodecInitializeProcInfo = 0x000003F0,
        uppImageCodecBeginBandProcInfo = 0x00003FF0,
        uppImageCodecDrawBandProcInfo = 0x000003F0,
        uppImageCodecEndBandProcInfo = 0x00003BF0,
        uppImageCodecQueueStartingProcInfo = 0x000000F0,
        uppImageCodecQueueStoppingProcInfo = 0x000000F0,
        uppImageCodecDroppingFrameProcInfo = 0x000003F0,
        uppImageCodecScheduleFrameProcInfo = 0x00003FF0,
        uppImageCodecCancelTriggerProcInfo = 0x000000F0
    };
 
#endif  /* IMAGECODEC_BASENAME */
 
/*
    Example usage:
 
        #define QTPHOTO_BASENAME()  Fred
        #define QTPHOTO_GLOBALS()   FredGlobalsHandle
        #include <ImageCodec.k.h>
 
    To specify that your component implementation does not use globals, do not #define QTPHOTO_GLOBALS
*/
#ifdef QTPHOTO_BASENAME
    #ifndef QTPHOTO_GLOBALS
        #define QTPHOTO_GLOBALS() 
        #define ADD_QTPHOTO_COMMA 
    #else
        #define ADD_QTPHOTO_COMMA ,
    #endif
    #define QTPHOTO_GLUE(a,b) a##b
    #define QTPHOTO_STRCAT(a,b) QTPHOTO_GLUE(a,b)
    #define ADD_QTPHOTO_BASENAME(name) QTPHOTO_STRCAT(QTPHOTO_BASENAME(),name)
 
    EXTERN_API( ComponentResult  ) ADD_QTPHOTO_BASENAME(SetSampling) (QTPHOTO_GLOBALS() ADD_QTPHOTO_COMMA short  yH, short  yV, short  cbH, short  cbV, short  crH, short  crV);
 
    EXTERN_API( ComponentResult  ) ADD_QTPHOTO_BASENAME(SetRestartInterval) (QTPHOTO_GLOBALS() ADD_QTPHOTO_COMMA unsigned short  restartInterval);
 
    EXTERN_API( ComponentResult  ) ADD_QTPHOTO_BASENAME(DefineHuffmanTable) (QTPHOTO_GLOBALS() ADD_QTPHOTO_COMMA short  componentNumber, Boolean  isDC, unsigned char * lengthCounts, unsigned char * values);
 
    EXTERN_API( ComponentResult  ) ADD_QTPHOTO_BASENAME(DefineQuantizationTable) (QTPHOTO_GLOBALS() ADD_QTPHOTO_COMMA short  componentNumber, unsigned char * table);
 
 
    /* MixedMode ProcInfo constants for component calls */
    enum {
        uppQTPhotoSetSamplingProcInfo = 0x000AAAF0,
        uppQTPhotoSetRestartIntervalProcInfo = 0x000002F0,
        uppQTPhotoDefineHuffmanTableProcInfo = 0x0000F6F0,
        uppQTPhotoDefineQuantizationTableProcInfo = 0x00000EF0
    };
 
#endif  /* QTPHOTO_BASENAME */
 
/*
    Example usage:
 
        #define IMAGECODEC_BASENAME()   Fred
        #define IMAGECODEC_GLOBALS()    FredGlobalsHandle
        #include <ImageCodec.k.h>
 
    To specify that your component implementation does not use globals, do not #define IMAGECODEC_GLOBALS
*/
#ifdef IMAGECODEC_BASENAME
    #ifndef IMAGECODEC_GLOBALS
        #define IMAGECODEC_GLOBALS() 
        #define ADD_IMAGECODEC_COMMA 
    #else
        #define ADD_IMAGECODEC_COMMA ,
    #endif
    #define IMAGECODEC_GLUE(a,b) a##b
    #define IMAGECODEC_STRCAT(a,b) IMAGECODEC_GLUE(a,b)
    #define ADD_IMAGECODEC_BASENAME(name) IMAGECODEC_STRCAT(IMAGECODEC_BASENAME(),name)
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectSetup) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * p);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectBegin) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA CodecDecompressParams * p, EffectsFrameParamsPtr  ePtr);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectRenderFrame) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA EffectsFrameParamsPtr  p);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectConvertEffectSourceToFormat) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA EffectSourcePtr  sourceToConvert, ImageDescriptionHandle  requestedDesc);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectCancel) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA EffectsFrameParamsPtr  p);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectGetSpeed) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA QTAtomContainer  parameters, Fixed * pFPS);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectPrepareSMPTEFrame) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA PixMapPtr  destPixMap, SMPTEFrameReference * returnValue);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectDisposeSMPTEFrame) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA SMPTEFrameReference  frameRef);
 
    EXTERN_API( ComponentResult  ) ADD_IMAGECODEC_BASENAME(EffectRenderSMPTEFrame) (IMAGECODEC_GLOBALS() ADD_IMAGECODEC_COMMA PixMapPtr  destPixMap, SMPTEFrameReference  frameRef, Fixed  effectPercentageEven, Fixed  effectPercentageOdd, Rect * pSourceRect, MatrixRecord * pMatrix, SMPTEWipeType  effectNumber, long  xRepeat, long  yRepeat, SMPTEFlags  flags, Fixed  penWidth, long  strokeValue);
 
 
    /* MixedMode ProcInfo constants for component calls */
    enum {
        uppImageCodecEffectSetupProcInfo = 0x000003F0,
        uppImageCodecEffectBeginProcInfo = 0x00000FF0,
        uppImageCodecEffectRenderFrameProcInfo = 0x000003F0,
        uppImageCodecEffectConvertEffectSourceToFormatProcInfo = 0x00000FF0,
        uppImageCodecEffectCancelProcInfo = 0x000003F0,
        uppImageCodecEffectGetSpeedProcInfo = 0x00000FF0,
        uppImageCodecEffectPrepareSMPTEFrameProcInfo = 0x00000FF0,
        uppImageCodecEffectDisposeSMPTEFrameProcInfo = 0x000003F0,
        uppImageCodecEffectRenderSMPTEFrameProcInfo = 0xFFFFFFF0
    };
 
#endif  /* IMAGECODEC_BASENAME */
 
/*
    Example usage:
 
        #define CURVE_BASENAME()    Fred
        #define CURVE_GLOBALS() FredGlobalsHandle
        #include <ImageCodec.k.h>
 
    To specify that your component implementation does not use globals, do not #define CURVE_GLOBALS
*/
#ifdef CURVE_BASENAME
    #ifndef CURVE_GLOBALS
        #define CURVE_GLOBALS() 
        #define ADD_CURVE_COMMA 
    #else
        #define ADD_CURVE_COMMA ,
    #endif
    #define CURVE_GLUE(a,b) a##b
    #define CURVE_STRCAT(a,b) CURVE_GLUE(a,b)
    #define ADD_CURVE_BASENAME(name) CURVE_STRCAT(CURVE_BASENAME(),name)
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(GetLength) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPaths * target, long  index, wide * wideLength);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(LengthToPoint) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPaths * target, long  index, Fixed  length, FixedPoint * location, FixedPoint * tangent);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(NewPath) (CURVE_GLOBALS() ADD_CURVE_COMMA Handle * pPath);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(CountPointsInPath) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPaths * aPath, unsigned long  contourIndex, unsigned long * pCount);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(GetPathPoint) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPaths * aPath, unsigned long  contourIndex, unsigned long  pointIndex, gxPoint * thePoint, Boolean * ptIsOnPath);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(InsertPointIntoPath) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPoint * aPoint, Handle  thePath, unsigned long  contourIndex, unsigned long  pointIndex, Boolean  ptIsOnPath);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(SetPathPoint) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPaths * aPath, unsigned long  contourIndex, unsigned long  pointIndex, gxPoint * thePoint, Boolean  ptIsOnPath);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(GetNearestPathPoint) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPaths * aPath, FixedPoint * thePoint, unsigned long * contourIndex, unsigned long * pointIndex, Fixed * theDelta);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(PathPointToLength) (CURVE_GLOBALS() ADD_CURVE_COMMA gxPaths * aPath, Fixed  startDist, Fixed  endDist, FixedPoint * thePoint, Fixed * pLength);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(CreateVectorStream) (CURVE_GLOBALS() ADD_CURVE_COMMA Handle * pStream);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(AddAtomToVectorStream) (CURVE_GLOBALS() ADD_CURVE_COMMA OSType  atomType, Size  atomSize, void * pAtomData, Handle  vectorStream);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(AddPathAtomToVectorStream) (CURVE_GLOBALS() ADD_CURVE_COMMA Handle  pathData, Handle  vectorStream);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(AddZeroAtomToVectorStream) (CURVE_GLOBALS() ADD_CURVE_COMMA Handle  vectorStream);
 
    EXTERN_API( ComponentResult  ) ADD_CURVE_BASENAME(GetAtomDataFromVectorStream) (CURVE_GLOBALS() ADD_CURVE_COMMA Handle  vectorStream, long  atomType, long * dataSize, Ptr * dataPtr);
 
 
    /* MixedMode ProcInfo constants for component calls */
    enum {
        uppCurveGetLengthProcInfo = 0x00003FF0,
        uppCurveLengthToPointProcInfo = 0x0003FFF0,
        uppCurveNewPathProcInfo = 0x000003F0,
        uppCurveCountPointsInPathProcInfo = 0x00003FF0,
        uppCurveGetPathPointProcInfo = 0x0003FFF0,
        uppCurveInsertPointIntoPathProcInfo = 0x0001FFF0,
        uppCurveSetPathPointProcInfo = 0x0001FFF0,
        uppCurveGetNearestPathPointProcInfo = 0x0003FFF0,
        uppCurvePathPointToLengthProcInfo = 0x0003FFF0,
        uppCurveCreateVectorStreamProcInfo = 0x000003F0,
        uppCurveAddAtomToVectorStreamProcInfo = 0x0000FFF0,
        uppCurveAddPathAtomToVectorStreamProcInfo = 0x00000FF0,
        uppCurveAddZeroAtomToVectorStreamProcInfo = 0x000003F0,
        uppCurveGetAtomDataFromVectorStreamProcInfo = 0x0000FFF0
    };
 
#endif  /* CURVE_BASENAME */
 
 
#endif /* __IMAGECODEC_K__ */