topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-PictUtils.h / h
/*
File: PictUtils.h
Contains: Picture Utilities Interfaces.
Version: Technology: Mac OS 8.5
Release: QuickTime 6.0.2
Copyright: (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;
if OPAQUE_UPP_TYPES
EXTERN_API(InitPickMethodUPP)
NewInitPickMethodUPP (InitPickMethodProcPtr userRoutine);
EXTERN_API(RecordColorsUPP)
NewRecordColorsUPP (RecordColorsProcPtr userRoutine);
EXTERN_API(CalcColorTableUPP)
NewCalcColorTableUPP (CalcColorTableProcPtr userRoutine);
EXTERN_API(DisposeColorPickMethodUPP)
NewDisposeColorPickMethodUPP (DisposeColorPickMethodProcPtr userRoutine);
EXTERN_API(void)
DisposeInitPickMethodUPP (InitPickMethodUPP userUPP);
EXTERN_API(void)
DisposeRecordColorsUPP (RecordColorsUPP userUPP);
EXTERN_API(void)
DisposeCalcColorTableUPP (CalcColorTableUPP userUPP);
EXTERN_API(void)
DisposeDisposeColorPickMethodUPP (DisposeColorPickMethodUPP userUPP);
EXTERN_API(OSErr)
InvokeInitPickMethodUPP (SInt16 colorsRequested,
UInt32 * dataRef,
SInt16 * colorBankType,
InitPickMethodUPP userUPP);
EXTERN_API(OSErr)
InvokeRecordColorsUPP (UInt32 dataRef,
RGBColor * colorsArray,
SInt32 colorCount,
SInt32 * uniqueColors,
RecordColorsUPP userUPP);
EXTERN_API(OSErr)
InvokeCalcColorTableUPP (UInt32 dataRef,
SInt16 colorsRequested,
void * colorBankPtr,
CSpecArray resultPtr,
CalcColorTableUPP userUPP);
EXTERN_API(OSErr)
InvokeDisposeColorPickMethodUPP (UInt32 dataRef,
DisposeColorPickMethodUPP userUPP);
else
enum { uppInitPickMethodProcInfo = 0x00000FA0 }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
enum { uppRecordColorsProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
enum { uppCalcColorTableProcInfo = 0x00003EE0 }; /* pascal 2_bytes Func(4_bytes, 2_bytes, 4_bytes, 4_bytes) */
enum { uppDisposeColorPickMethodProcInfo = 0x000000E0 }; /* pascal 2_bytes Func(4_bytes) */
#define NewInitPickMethodUPP(userRoutine) (InitPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppInitPickMethodProcInfo, GetCurrentArchitecture())
#define NewRecordColorsUPP(userRoutine) (RecordColorsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRecordColorsProcInfo, GetCurrentArchitecture())
#define NewCalcColorTableUPP(userRoutine) (CalcColorTableUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalcColorTableProcInfo, GetCurrentArchitecture())
#define NewDisposeColorPickMethodUPP(userRoutine) (DisposeColorPickMethodUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDisposeColorPickMethodProcInfo, GetCurrentArchitecture())
#define DisposeInitPickMethodUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeRecordColorsUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeCalcColorTableUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeDisposeColorPickMethodUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeInitPickMethodUPP(colorsRequested, dataRef, colorBankType, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppInitPickMethodProcInfo, (colorsRequested), (dataRef), (colorBankType))
#define InvokeRecordColorsUPP(dataRef, colorsArray, colorCount, uniqueColors, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppRecordColorsProcInfo, (dataRef), (colorsArray), (colorCount), (uniqueColors))
#define InvokeCalcColorTableUPP(dataRef, colorsRequested, colorBankPtr, resultPtr, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppCalcColorTableProcInfo, (dataRef), (colorsRequested), (colorBankPtr), (resultPtr))
#define InvokeDisposeColorPickMethodUPP(dataRef, userUPP) (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppDisposeColorPickMethodProcInfo, (dataRef))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
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)
EXTERN_API( OSErr )
GetPictInfo (PicHandle thePictHandle,
PictInfo * thePictInfo,
short verb,
short colorsRequested,
short colorPickMethod,
short version) THREEWORDINLINE(0x303C, 0x0800, 0xA831);
EXTERN_API( OSErr )
GetPixMapInfo (PixMapHandle thePixMapHandle,
PictInfo * thePictInfo,
short verb,
short colorsRequested,
short colorPickMethod,
short version) THREEWORDINLINE(0x303C, 0x0801, 0xA831);
EXTERN_API( OSErr )
NewPictInfo (PictInfoID * thePictInfoID,
short verb,
short colorsRequested,
short colorPickMethod,
short version) THREEWORDINLINE(0x303C, 0x0602, 0xA831);
EXTERN_API( OSErr )
RecordPictInfo (PictInfoID thePictInfoID,
PicHandle thePictHandle) THREEWORDINLINE(0x303C, 0x0403, 0xA831);
EXTERN_API( OSErr )
RecordPixMapInfo (PictInfoID thePictInfoID,
PixMapHandle thePixMapHandle) THREEWORDINLINE(0x303C, 0x0404, 0xA831);
EXTERN_API( OSErr )
RetrievePictInfo (PictInfoID thePictInfoID,
PictInfo * thePictInfo,
short colorsRequested) THREEWORDINLINE(0x303C, 0x0505, 0xA831);
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__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.