diff options
Diffstat (limited to 'common/quicktime_win32/PictUtils.h')
| -rw-r--r-- | common/quicktime_win32/PictUtils.h | 513 |
1 files changed, 513 insertions, 0 deletions
diff --git a/common/quicktime_win32/PictUtils.h b/common/quicktime_win32/PictUtils.h new file mode 100644 index 0000000..f33072c --- /dev/null +++ b/common/quicktime_win32/PictUtils.h @@ -0,0 +1,513 @@ +/* + File: PictUtils.h + + Contains: Picture Utilities Interfaces. + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1990-2001 by Apple Computer, Inc., all rights reserved + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __PICTUTILS__ +#define __PICTUTILS__ + +#ifndef __MACTYPES__ +#include <MacTypes.h> +#endif + +#ifndef __PALETTES__ +#include <Palettes.h> +#endif + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + +/* verbs for the GetPictInfo, GetPixMapInfo, and NewPictInfo calls */ +enum { + returnColorTable = 0x0001, + returnPalette = 0x0002, + recordComments = 0x0004, + recordFontInfo = 0x0008, + suppressBlackAndWhite = 0x0010 +}; + +enum { + /* color pick methods */ + systemMethod = 0, /* system color pick method */ + popularMethod = 1, /* method that chooses the most popular set of colors */ + medianMethod = 2 /* method that chooses a good average mix of colors */ +}; + +enum { + /* color bank types */ + ColorBankIsCustom = -1, + ColorBankIsExactAnd555 = 0, + ColorBankIs555 = 1 +}; + +typedef long PictInfoID; +struct CommentSpec { + short count; /* number of occurrances of this comment ID */ + short ID; /* ID for the comment in the picture */ +}; +typedef struct CommentSpec CommentSpec; +typedef CommentSpec * CommentSpecPtr; +typedef CommentSpecPtr * CommentSpecHandle; +struct FontSpec { + short pictFontID; /* ID of the font in the picture */ + short sysFontID; /* ID of the same font in the current system file */ + long size[4]; /* bit array of all the sizes found (1..127) (bit 0 means > 127) */ + short style; /* combined style of all occurrances of the font */ + long nameOffset; /* offset into the fontNamesHdl handle for the font's name */ +}; +typedef struct FontSpec FontSpec; +typedef FontSpec * FontSpecPtr; +typedef FontSpecPtr * FontSpecHandle; +struct PictInfo { + short version; /* this is always zero, for now */ + long uniqueColors; /* the number of actual colors in the picture(s)/pixmap(s) */ + PaletteHandle thePalette; /* handle to the palette information */ + CTabHandle theColorTable; /* handle to the color table */ + Fixed hRes; /* maximum horizontal resolution for all the pixmaps */ + Fixed vRes; /* maximum vertical resolution for all the pixmaps */ + short depth; /* maximum depth for all the pixmaps (in the picture) */ + Rect sourceRect; /* the picture frame rectangle (this contains the entire picture) */ + long textCount; /* total number of text strings in the picture */ + long lineCount; /* total number of lines in the picture */ + long rectCount; /* total number of rectangles in the picture */ + long rRectCount; /* total number of round rectangles in the picture */ + long ovalCount; /* total number of ovals in the picture */ + long arcCount; /* total number of arcs in the picture */ + long polyCount; /* total number of polygons in the picture */ + long regionCount; /* total number of regions in the picture */ + long bitMapCount; /* total number of bitmaps in the picture */ + long pixMapCount; /* total number of pixmaps in the picture */ + long commentCount; /* total number of comments in the picture */ + long uniqueComments; /* the number of unique comments in the picture */ + CommentSpecHandle commentHandle; /* handle to all the comment information */ + long uniqueFonts; /* the number of unique fonts in the picture */ + FontSpecHandle fontHandle; /* handle to the FontSpec information */ + Handle fontNamesHandle; /* handle to the font names */ + long reserved1; + long reserved2; +}; +typedef struct PictInfo PictInfo; +typedef PictInfo * PictInfoPtr; +typedef PictInfoPtr * PictInfoHandle; +typedef CALLBACK_API( OSErr , InitPickMethodProcPtr )(SInt16 colorsRequested, UInt32 *dataRef, SInt16 *colorBankType); +typedef CALLBACK_API( OSErr , RecordColorsProcPtr )(UInt32 dataRef, RGBColor *colorsArray, SInt32 colorCount, SInt32 *uniqueColors); +typedef CALLBACK_API( OSErr , CalcColorTableProcPtr )(UInt32 dataRef, SInt16 colorsRequested, void *colorBankPtr, CSpecArray resultPtr); +typedef CALLBACK_API( OSErr , DisposeColorPickMethodProcPtr )(UInt32 dataRef); +typedef STACK_UPP_TYPE(InitPickMethodProcPtr) InitPickMethodUPP; +typedef STACK_UPP_TYPE(RecordColorsProcPtr) RecordColorsUPP; +typedef STACK_UPP_TYPE(CalcColorTableProcPtr) CalcColorTableUPP; +typedef STACK_UPP_TYPE(DisposeColorPickMethodProcPtr) DisposeColorPickMethodUPP; +/* + * NewInitPickMethodUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( InitPickMethodUPP ) +NewInitPickMethodUPP(InitPickMethodProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppInitPickMethodProcInfo = 0x00000FA0 }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(InitPickMethodUPP) NewInitPickMethodUPP(InitPickMethodProcPtr userRoutine) { return (InitPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppInitPickMethodProcInfo, GetCurrentArchitecture()); } + #else + #define NewInitPickMethodUPP(userRoutine) (InitPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppInitPickMethodProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewRecordColorsUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( RecordColorsUPP ) +NewRecordColorsUPP(RecordColorsProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppRecordColorsProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(RecordColorsUPP) NewRecordColorsUPP(RecordColorsProcPtr userRoutine) { return (RecordColorsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRecordColorsProcInfo, GetCurrentArchitecture()); } + #else + #define NewRecordColorsUPP(userRoutine) (RecordColorsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRecordColorsProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewCalcColorTableUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( CalcColorTableUPP ) +NewCalcColorTableUPP(CalcColorTableProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppCalcColorTableProcInfo = 0x00003EE0 }; /* pascal 2_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(CalcColorTableUPP) NewCalcColorTableUPP(CalcColorTableProcPtr userRoutine) { return (CalcColorTableUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalcColorTableProcInfo, GetCurrentArchitecture()); } + #else + #define NewCalcColorTableUPP(userRoutine) (CalcColorTableUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalcColorTableProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewDisposeColorPickMethodUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DisposeColorPickMethodUPP ) +NewDisposeColorPickMethodUPP(DisposeColorPickMethodProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppDisposeColorPickMethodProcInfo = 0x000000E0 }; /* pascal 2_bytes Func(4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(DisposeColorPickMethodUPP) NewDisposeColorPickMethodUPP(DisposeColorPickMethodProcPtr userRoutine) { return (DisposeColorPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDisposeColorPickMethodProcInfo, GetCurrentArchitecture()); } + #else + #define NewDisposeColorPickMethodUPP(userRoutine) (DisposeColorPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDisposeColorPickMethodProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeInitPickMethodUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeInitPickMethodUPP(InitPickMethodUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeInitPickMethodUPP(InitPickMethodUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeInitPickMethodUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeRecordColorsUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeRecordColorsUPP(RecordColorsUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeRecordColorsUPP(RecordColorsUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeRecordColorsUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeCalcColorTableUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeCalcColorTableUPP(CalcColorTableUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeCalcColorTableUPP(CalcColorTableUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeCalcColorTableUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeDisposeColorPickMethodUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDisposeColorPickMethodUPP(DisposeColorPickMethodUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeDisposeColorPickMethodUPP(DisposeColorPickMethodUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeDisposeColorPickMethodUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeInitPickMethodUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeInitPickMethodUPP( + SInt16 colorsRequested, + UInt32 * dataRef, + SInt16 * colorBankType, + InitPickMethodUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeInitPickMethodUPP(SInt16 colorsRequested, UInt32 * dataRef, SInt16 * colorBankType, InitPickMethodUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppInitPickMethodProcInfo, colorsRequested, dataRef, colorBankType); } + #else + #define InvokeInitPickMethodUPP(colorsRequested, dataRef, colorBankType, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppInitPickMethodProcInfo, (colorsRequested), (dataRef), (colorBankType)) + #endif +#endif + +/* + * InvokeRecordColorsUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeRecordColorsUPP( + UInt32 dataRef, + RGBColor * colorsArray, + SInt32 colorCount, + SInt32 * uniqueColors, + RecordColorsUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeRecordColorsUPP(UInt32 dataRef, RGBColor * colorsArray, SInt32 colorCount, SInt32 * uniqueColors, RecordColorsUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppRecordColorsProcInfo, dataRef, colorsArray, colorCount, uniqueColors); } + #else + #define InvokeRecordColorsUPP(dataRef, colorsArray, colorCount, uniqueColors, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppRecordColorsProcInfo, (dataRef), (colorsArray), (colorCount), (uniqueColors)) + #endif +#endif + +/* + * InvokeCalcColorTableUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeCalcColorTableUPP( + UInt32 dataRef, + SInt16 colorsRequested, + void * colorBankPtr, + CSpecArray resultPtr, + CalcColorTableUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeCalcColorTableUPP(UInt32 dataRef, SInt16 colorsRequested, void * colorBankPtr, CSpecArray resultPtr, CalcColorTableUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppCalcColorTableProcInfo, dataRef, colorsRequested, colorBankPtr, resultPtr); } + #else + #define InvokeCalcColorTableUPP(dataRef, colorsRequested, colorBankPtr, resultPtr, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppCalcColorTableProcInfo, (dataRef), (colorsRequested), (colorBankPtr), (resultPtr)) + #endif +#endif + +/* + * InvokeDisposeColorPickMethodUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +InvokeDisposeColorPickMethodUPP( + UInt32 dataRef, + DisposeColorPickMethodUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSErr) InvokeDisposeColorPickMethodUPP(UInt32 dataRef, DisposeColorPickMethodUPP userUPP) { return (OSErr)CALL_ONE_PARAMETER_UPP(userUPP, uppDisposeColorPickMethodProcInfo, dataRef); } + #else + #define InvokeDisposeColorPickMethodUPP(dataRef, userUPP) (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppDisposeColorPickMethodProcInfo, (dataRef)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewInitPickMethodProc(userRoutine) NewInitPickMethodUPP(userRoutine) + #define NewRecordColorsProc(userRoutine) NewRecordColorsUPP(userRoutine) + #define NewCalcColorTableProc(userRoutine) NewCalcColorTableUPP(userRoutine) + #define NewDisposeColorPickMethodProc(userRoutine) NewDisposeColorPickMethodUPP(userRoutine) + #define CallInitPickMethodProc(userRoutine, colorsRequested, dataRef, colorBankType) InvokeInitPickMethodUPP(colorsRequested, dataRef, colorBankType, userRoutine) + #define CallRecordColorsProc(userRoutine, dataRef, colorsArray, colorCount, uniqueColors) InvokeRecordColorsUPP(dataRef, colorsArray, colorCount, uniqueColors, userRoutine) + #define CallCalcColorTableProc(userRoutine, dataRef, colorsRequested, colorBankPtr, resultPtr) InvokeCalcColorTableUPP(dataRef, colorsRequested, colorBankPtr, resultPtr, userRoutine) + #define CallDisposeColorPickMethodProc(userRoutine, dataRef) InvokeDisposeColorPickMethodUPP(dataRef, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + +/* + * GetPictInfo() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetPictInfo( + PicHandle thePictHandle, + PictInfo * thePictInfo, + short verb, + short colorsRequested, + short colorPickMethod, + short version) THREEWORDINLINE(0x303C, 0x0800, 0xA831); + + +/* + * GetPixMapInfo() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetPixMapInfo( + PixMapHandle thePixMapHandle, + PictInfo * thePictInfo, + short verb, + short colorsRequested, + short colorPickMethod, + short version) THREEWORDINLINE(0x303C, 0x0801, 0xA831); + + +/* + * NewPictInfo() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +NewPictInfo( + PictInfoID * thePictInfoID, + short verb, + short colorsRequested, + short colorPickMethod, + short version) THREEWORDINLINE(0x303C, 0x0602, 0xA831); + + +/* + * RecordPictInfo() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +RecordPictInfo( + PictInfoID thePictInfoID, + PicHandle thePictHandle) THREEWORDINLINE(0x303C, 0x0403, 0xA831); + + +/* + * RecordPixMapInfo() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +RecordPixMapInfo( + PictInfoID thePictInfoID, + PixMapHandle thePixMapHandle) THREEWORDINLINE(0x303C, 0x0404, 0xA831); + + +/* + * RetrievePictInfo() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +RetrievePictInfo( + PictInfoID thePictInfoID, + PictInfo * thePictInfo, + short colorsRequested) THREEWORDINLINE(0x303C, 0x0505, 0xA831); + + +/* + * DisposePictInfo() + * + * Availability: + * Non-Carbon CFM: in InterfaceLib 7.1 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +DisposePictInfo(PictInfoID thePictInfoID) THREEWORDINLINE(0x303C, 0x0206, 0xA831); + + +#if OLDROUTINENAMES +#define DisposPictInfo(thePictInfoID) DisposePictInfo(thePictInfoID) +#endif /* OLDROUTINENAMES */ + + + + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __PICTUTILS__ */ + |