topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-CMApplication.h / h
/*
File: CMApplication.h
Contains: Color Matching Interfaces
Version: Technology: ColorSync 3.0
Release: QuickTime 6.0.2
Copyright: (c) 1992-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 __CMAPPLICATION__
define __CMAPPLICATION__
ifndef __MACTYPES__
include <MacTypes.h>
endif
ifndef __QUICKDRAW__
include <Quickdraw.h>
endif
ifndef __FILES__
include <Files.h>
endif
ifndef __CMICCPROFILE__
include <CMICCProfile.h>
endif
ifndef __DISPLAYS__
include <Displays.h>
endif
ifndef __MACERRORS__
include <MacErrors.h>
endif
if TARGET_API_MAC_OS8
ifndef __PRINTING__
include <Printing.h>
endif
endif /* TARGET_API_MAC_OS8 */
if TARGET_OS_WIN32
include <windows.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
enum {
kDefaultCMMSignature = FOUR_CHAR_CODE('appl')
};
/* Macintosh 68K trap word */
enum {
cmTrap = 0xABEE
};
/* PicComment IDs */
enum {
cmBeginProfile = 220,
cmEndProfile = 221,
cmEnableMatching = 222,
cmDisableMatching = 223,
cmComment = 224
};
/* PicComment selectors for cmComment */
enum {
cmBeginProfileSel = 0,
cmContinueProfileSel = 1,
cmEndProfileSel = 2,
cmProfileIdentifierSel = 3
};
/* Defines for version 1.0 CMProfileSearchRecord.fieldMask */
enum {
cmMatchCMMType = 0x00000001,
cmMatchApplProfileVersion = 0x00000002,
cmMatchDataType = 0x00000004,
cmMatchDeviceType = 0x00000008,
cmMatchDeviceManufacturer = 0x00000010,
cmMatchDeviceModel = 0x00000020,
cmMatchDeviceAttributes = 0x00000040,
cmMatchFlags = 0x00000080,
cmMatchOptions = 0x00000100,
cmMatchWhite = 0x00000200,
cmMatchBlack = 0x00000400
};
/* Defines for version 2.0 CMSearchRecord.searchMask */
enum {
cmMatchAnyProfile = 0x00000000,
cmMatchProfileCMMType = 0x00000001,
cmMatchProfileClass = 0x00000002,
cmMatchDataColorSpace = 0x00000004,
cmMatchProfileConnectionSpace = 0x00000008,
cmMatchManufacturer = 0x00000010,
cmMatchModel = 0x00000020,
cmMatchAttributes = 0x00000040,
cmMatchProfileFlags = 0x00000080
};
/* deviceType values for ColorSync 1.0 Device Profile access */
enum {
cmSystemDevice = FOUR_CHAR_CODE('sys '),
cmGDevice = FOUR_CHAR_CODE('gdev')
};
/* Commands for CMFlattenUPP(...) */
enum {
cmOpenReadSpool = 1,
cmOpenWriteSpool = 2,
cmReadSpool = 3,
cmWriteSpool = 4,
cmCloseSpool = 5
};
/* Flags for PostScript-related functions */
enum {
cmPS7bit = 1,
cmPS8bit = 2
};
/* Flags for profile embedding functions */
enum {
cmEmbedWholeProfile = 0x00000000,
cmEmbedProfileIdentifier = 0x00000001
};
/* Commands for CMAccessUPP(...) */
enum {
cmOpenReadAccess = 1,
cmOpenWriteAccess = 2,
cmReadAccess = 3,
cmWriteAccess = 4,
cmCloseAccess = 5,
cmCreateNewAccess = 6,
cmAbortWriteAccess = 7,
cmBeginAccess = 8,
cmEndAccess = 9
};
/* Abstract data type for memory-based Profile */
typedef struct OpaqueCMProfileRef* CMProfileRef;
/* Abstract data type for Profile search result */
typedef struct OpaqueCMProfileSearchRef* CMProfileSearchRef;
/* Abstract data type for BeginMatching(...) reference */
typedef struct OpaqueCMMatchRef* CMMatchRef;
/* Abstract data type for ColorWorld reference */
typedef struct OpaqueCMWorldRef* CMWorldRef;
/* Caller-supplied flatten function */
typedef CALLBACK_API( OSErr , CMFlattenProcPtr )(long command, long *size, void *data, void *refCon);
/* Caller-supplied progress function for Bitmap & PixMap matching routines */
typedef CALLBACK_API( Boolean , CMBitmapCallBackProcPtr )(long progress, void *refCon);
/* Caller-supplied progress function for NCMMConcatInit & NCMMNewLinkProfile routines */
typedef CALLBACK_API( Boolean , CMConcatCallBackProcPtr )(long progress, void *refCon);
/* Caller-supplied filter function for Profile search */
typedef CALLBACK_API( Boolean , CMProfileFilterProcPtr )(CMProfileRef prof, void *refCon);
/* Caller-supplied function for profile access */
typedef CALLBACK_API( OSErr , CMProfileAccessProcPtr )(long command, long offset, long *size, void *data, void *refCon);
typedef STACK_UPP_TYPE(CMFlattenProcPtr) CMFlattenUPP;
typedef STACK_UPP_TYPE(CMBitmapCallBackProcPtr) CMBitmapCallBackUPP;
typedef STACK_UPP_TYPE(CMConcatCallBackProcPtr) CMConcatCallBackUPP;
typedef STACK_UPP_TYPE(CMProfileFilterProcPtr) CMProfileFilterUPP;
typedef STACK_UPP_TYPE(CMProfileAccessProcPtr) CMProfileAccessUPP;
if OPAQUE_UPP_TYPES
EXTERN_API(CMFlattenUPP)
NewCMFlattenUPP (CMFlattenProcPtr userRoutine);
EXTERN_API(CMBitmapCallBackUPP)
NewCMBitmapCallBackUPP (CMBitmapCallBackProcPtr userRoutine);
EXTERN_API(CMConcatCallBackUPP)
NewCMConcatCallBackUPP (CMConcatCallBackProcPtr userRoutine);
EXTERN_API(CMProfileFilterUPP)
NewCMProfileFilterUPP (CMProfileFilterProcPtr userRoutine);
EXTERN_API(CMProfileAccessUPP)
NewCMProfileAccessUPP (CMProfileAccessProcPtr userRoutine);
EXTERN_API(void)
DisposeCMFlattenUPP (CMFlattenUPP userUPP);
EXTERN_API(void)
DisposeCMBitmapCallBackUPP (CMBitmapCallBackUPP userUPP);
EXTERN_API(void)
DisposeCMConcatCallBackUPP (CMConcatCallBackUPP userUPP);
EXTERN_API(void)
DisposeCMProfileFilterUPP (CMProfileFilterUPP userUPP);
EXTERN_API(void)
DisposeCMProfileAccessUPP (CMProfileAccessUPP userUPP);
EXTERN_API(OSErr)
InvokeCMFlattenUPP (long command,
long * size,
void * data,
void * refCon,
CMFlattenUPP userUPP);
EXTERN_API(Boolean)
InvokeCMBitmapCallBackUPP (long progress,
void * refCon,
CMBitmapCallBackUPP userUPP);
EXTERN_API(Boolean)
InvokeCMConcatCallBackUPP (long progress,
void * refCon,
CMConcatCallBackUPP userUPP);
EXTERN_API(Boolean)
InvokeCMProfileFilterUPP (CMProfileRef prof,
void * refCon,
CMProfileFilterUPP userUPP);
EXTERN_API(OSErr)
InvokeCMProfileAccessUPP (long command,
long offset,
long * size,
void * data,
void * refCon,
CMProfileAccessUPP userUPP);
else
enum { uppCMFlattenProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
enum { uppCMBitmapCallBackProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
enum { uppCMConcatCallBackProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
enum { uppCMProfileFilterProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
enum { uppCMProfileAccessProcInfo = 0x0000FFE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
#define NewCMFlattenUPP(userRoutine) (CMFlattenUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCMFlattenProcInfo, GetCurrentArchitecture())
#define NewCMBitmapCallBackUPP(userRoutine) (CMBitmapCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCMBitmapCallBackProcInfo, GetCurrentArchitecture())
#define NewCMConcatCallBackUPP(userRoutine) (CMConcatCallBackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCMConcatCallBackProcInfo, GetCurrentArchitecture())
#define NewCMProfileFilterUPP(userRoutine) (CMProfileFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCMProfileFilterProcInfo, GetCurrentArchitecture())
#define NewCMProfileAccessUPP(userRoutine) (CMProfileAccessUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCMProfileAccessProcInfo, GetCurrentArchitecture())
#define DisposeCMFlattenUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeCMBitmapCallBackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeCMConcatCallBackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeCMProfileFilterUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeCMProfileAccessUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeCMFlattenUPP(command, size, data, refCon, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppCMFlattenProcInfo, (command), (size), (data), (refCon))
#define InvokeCMBitmapCallBackUPP(progress, refCon, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppCMBitmapCallBackProcInfo, (progress), (refCon))
#define InvokeCMConcatCallBackUPP(progress, refCon, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppCMConcatCallBackProcInfo, (progress), (refCon))
#define InvokeCMProfileFilterUPP(prof, refCon, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppCMProfileFilterProcInfo, (prof), (refCon))
#define InvokeCMProfileAccessUPP(command, offset, size, data, refCon, userUPP) (OSErr)CALL_FIVE_PARAMETER_UPP((userUPP), uppCMProfileAccessProcInfo, (command), (offset), (size), (data), (refCon))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewCMFlattenProc(userRoutine) NewCMFlattenUPP(userRoutine)
define NewCMBitmapCallBackProc(userRoutine) NewCMBitmapCallBackUPP(userRoutine)
define NewCMConcatCallBackProc(userRoutine) NewCMConcatCallBackUPP(userRoutine)
define NewCMProfileFilterProc(userRoutine) NewCMProfileFilterUPP(userRoutine)
define NewCMProfileAccessProc(userRoutine) NewCMProfileAccessUPP(userRoutine)
define CallCMFlattenProc(userRoutine, command, size, data, refCon) InvokeCMFlattenUPP(command, size, data, refCon, userRoutine)
define CallCMBitmapCallBackProc(userRoutine, progress, refCon) InvokeCMBitmapCallBackUPP(progress, refCon, userRoutine)
define CallCMConcatCallBackProc(userRoutine, progress, refCon) InvokeCMConcatCallBackUPP(progress, refCon, userRoutine)
define CallCMProfileFilterProc(userRoutine, prof, refCon) InvokeCMProfileFilterUPP(prof, refCon, userRoutine)
define CallCMProfileAccessProc(userRoutine, command, offset, size, data, refCon) InvokeCMProfileAccessUPP(command, offset, size, data, refCon, userRoutine)
typedef long CMError;
/* For 1.0 and 2.0 profile header variants */
/* CMAppleProfileHeader */
union CMAppleProfileHeader {
CMHeader cm1;
CM2Header cm2;
};
typedef union CMAppleProfileHeader CMAppleProfileHeader;
/* Param for CWConcatColorWorld(...) */
struct CMConcatProfileSet {
UInt16 keyIndex; /* Zero-based */
UInt16 count; /* Min 1 */
CMProfileRef profileSet[1]; /* Variable. Ordered from Source -> Dest */
};
typedef struct CMConcatProfileSet CMConcatProfileSet;
/* NCMConcatProfileSpec Tags */
enum {
kNoTransform = 0, /* Not used */
kUseAtoB = 1, /* Use 'A2B*' tag from this profile or equivalent */
kUseBtoA = 2, /* Use 'B2A*' tag from this profile or equivalent */
kUseBtoB = 3, /* Use 'pre*' tag from this profile or equivalent */
/* For typical device profiles the following synonyms may be useful */
kDeviceToPCS = kUseAtoB, /* Device Dependent to Device Independent */
kPCSToDevice = kUseBtoA, /* Device Independent to Device Dependent */
kPCSToPCS = kUseBtoB, /* Independent, through device's gamut */
kUseProfileIntent = (long)0xFFFFFFFF /* For renderingIntent in NCMConcatProfileSpec */
};
/* NCMConcatProfileSpec */
struct NCMConcatProfileSpec {
UInt32 renderingIntent; /* renderingIntent override */
UInt32 transformTag; /* transformTag, defined above */
CMProfileRef profile; /* profile */
};
typedef struct NCMConcatProfileSpec NCMConcatProfileSpec;
/* NCMConcatProfileSet */
struct NCMConcatProfileSet {
OSType cmm; /* e.g. 'KCMS', 'appl', ... uniquely ids the cmm, or 0000 */
UInt32 flags; /* specify quality, lookup only, no gamut checking ... */
UInt32 flagsMask; /* which bits of 'flags' to use to override profile */
UInt32 profileCount; /* how many ProfileSpecs in the following set */
NCMConcatProfileSpec profileSpecs[1]; /* Variable. Ordered from Source -> Dest */
};
typedef struct NCMConcatProfileSet NCMConcatProfileSet;
/* ColorSync color data types */
struct CMRGBColor {
UInt16 red; /* 0..65535 */
UInt16 green;
UInt16 blue;
};
typedef struct CMRGBColor CMRGBColor;
struct CMCMYKColor {
UInt16 cyan; /* 0..65535 */
UInt16 magenta;
UInt16 yellow;
UInt16 black;
};
typedef struct CMCMYKColor CMCMYKColor;
struct CMCMYColor {
UInt16 cyan; /* 0..65535 */
UInt16 magenta;
UInt16 yellow;
};
typedef struct CMCMYColor CMCMYColor;
struct CMHLSColor {
UInt16 hue; /* 0..65535. Fraction of circle. Red at 0 */
UInt16 lightness; /* 0..65535 */
UInt16 saturation; /* 0..65535 */
};
typedef struct CMHLSColor CMHLSColor;
struct CMHSVColor {
UInt16 hue; /* 0..65535. Fraction of circle. Red at 0 */
UInt16 saturation; /* 0..65535 */
UInt16 value; /* 0..65535 */
};
typedef struct CMHSVColor CMHSVColor;
struct CMLabColor {
UInt16 L; /* 0..65535 maps to 0..100 */
UInt16 a; /* 0..65535 maps to -128..127.996 */
UInt16 b; /* 0..65535 maps to -128..127.996 */
};
typedef struct CMLabColor CMLabColor;
struct CMLuvColor {
UInt16 L; /* 0..65535 maps to 0..100 */
UInt16 u; /* 0..65535 maps to -128..127.996 */
UInt16 v; /* 0..65535 maps to -128..127.996 */
};
typedef struct CMLuvColor CMLuvColor;
struct CMYxyColor {
UInt16 capY; /* 0..65535 maps to 0..1 */
UInt16 x; /* 0..65535 maps to 0..1 */
UInt16 y; /* 0..65535 maps to 0..1 */
};
typedef struct CMYxyColor CMYxyColor;
struct CMGrayColor {
UInt16 gray; /* 0..65535 */
};
typedef struct CMGrayColor CMGrayColor;
struct CMMultichannel5Color {
UInt8 components[5]; /* 0..255 */
};
typedef struct CMMultichannel5Color CMMultichannel5Color;
struct CMMultichannel6Color {
UInt8 components[6]; /* 0..255 */
};
typedef struct CMMultichannel6Color CMMultichannel6Color;
struct CMMultichannel7Color {
UInt8 components[7]; /* 0..255 */
};
typedef struct CMMultichannel7Color CMMultichannel7Color;
struct CMMultichannel8Color {
UInt8 components[8]; /* 0..255 */
};
typedef struct CMMultichannel8Color CMMultichannel8Color;
struct CMNamedColor {
UInt32 namedColorIndex; /* 0..a lot */
};
typedef struct CMNamedColor CMNamedColor;
union CMColor {
CMRGBColor rgb;
CMHSVColor hsv;
CMHLSColor hls;
CMXYZColor XYZ;
CMLabColor Lab;
CMLuvColor Luv;
CMYxyColor Yxy;
CMCMYKColor cmyk;
CMCMYColor cmy;
CMGrayColor gray;
CMMultichannel5Color mc5;
CMMultichannel6Color mc6;
CMMultichannel7Color mc7;
CMMultichannel8Color mc8;
CMNamedColor namedColor;
};
typedef union CMColor CMColor;
struct CMProfileSearchRecord {
CMHeader header;
UInt32 fieldMask;
UInt32 reserved[2];
};
typedef struct CMProfileSearchRecord CMProfileSearchRecord;
typedef CMProfileSearchRecord * CMProfileSearchRecordPtr;
typedef CMProfileSearchRecordPtr * CMProfileSearchRecordHandle;
/* Search definition for 2.0 */
struct CMSearchRecord {
OSType CMMType;
OSType profileClass;
OSType dataColorSpace;
OSType profileConnectionSpace;
UInt32 deviceManufacturer;
UInt32 deviceModel;
UInt32 deviceAttributes[2];
UInt32 profileFlags;
UInt32 searchMask;
CMProfileFilterUPP filter;
};
typedef struct CMSearchRecord CMSearchRecord;
/* CMMInfo structure */
struct CMMInfo {
UInt32 dataSize; /* Size of this structure - compatibility*/
OSType CMMType; /* Signature, e.g. 'KCMS'*/
OSType CMMMfr; /* Vendor, e.g. 'appl'*/
UInt32 CMMVersion; /* cmm version number*/
unsigned char ASCIIName[32]; /* pascal string - name*/
unsigned char ASCIIDesc[256]; /* pascal string - description or copyright*/
UniCharCount UniCodeNameCount; /* count of UniChars in following array*/
UniChar UniCodeName[32]; /* the name in UniCode chars*/
UniCharCount UniCodeDescCount; /* count of UniChars in following array*/
UniChar UniCodeDesc[256]; /* the description in UniCode chars*/
};
typedef struct CMMInfo CMMInfo;
/* GetCWInfo structures */
struct CMMInfoRecord {
OSType CMMType;
long CMMVersion;
};
typedef struct CMMInfoRecord CMMInfoRecord;
struct CMCWInfoRecord {
UInt32 cmmCount;
CMMInfoRecord cmmInfo[2];
};
typedef struct CMCWInfoRecord CMCWInfoRecord;
/* profile identifier structures */
struct CMProfileIdentifier {
CM2Header profileHeader;
CMDateTime calibrationDate;
UInt32 ASCIIProfileDescriptionLen;
char ASCIIProfileDescription[1]; /* variable length */
};
typedef struct CMProfileIdentifier CMProfileIdentifier;
typedef CMProfileIdentifier * CMProfileIdentifierPtr;
/* packing formats */
enum {
cmNoColorPacking = 0x0000,
cmWord5ColorPacking = 0x0500,
cmWord565ColorPacking = 0x0600,
cmLong8ColorPacking = 0x0800,
cmLong10ColorPacking = 0x0A00,
cmAlphaFirstPacking = 0x1000,
cmOneBitDirectPacking = 0x0B00,
cmAlphaLastPacking = 0x0000,
cm8_8ColorPacking = 0x2800,
cm16_8ColorPacking = 0x2000,
cm24_8ColorPacking = 0x2100,
cm32_8ColorPacking = cmLong8ColorPacking,
cm40_8ColorPacking = 0x2200,
cm48_8ColorPacking = 0x2300,
cm56_8ColorPacking = 0x2400,
cm64_8ColorPacking = 0x2500,
cm32_16ColorPacking = 0x2600,
cm48_16ColorPacking = 0x2900,
cm64_16ColorPacking = 0x2A00,
cm32_32ColorPacking = 0x2700,
cmLittleEndianPacking = 0x4000,
cmReverseChannelPacking = 0x8000
};
/* colorspace masks */
enum {
cmColorSpaceSpaceMask = 0x0000007F,
cmColorSpaceAlphaMask = 0x00000080,
cmColorSpaceSpaceAndAlphaMask = 0x000000FF,
cmColorSpacePackingMask = 0x0000FF00,
cmColorSpaceReservedMask = (long)0xFFFF0000
};
/* general colorspaces */
enum {
cmNoSpace = 0,
cmRGBSpace = 1,
cmCMYKSpace = 2,
cmHSVSpace = 3,
cmHLSSpace = 4,
cmYXYSpace = 5,
cmXYZSpace = 6,
cmLUVSpace = 7,
cmLABSpace = 8,
cmReservedSpace1 = 9,
cmGraySpace = 10,
cmReservedSpace2 = 11,
cmGamutResultSpace = 12,
cmNamedIndexedSpace = 16,
cmMCFiveSpace = 17,
cmMCSixSpace = 18,
cmMCSevenSpace = 19,
cmMCEightSpace = 20,
cmAlphaSpace = 0x80,
cmRGBASpace = cmRGBSpace + cmAlphaSpace,
cmGrayASpace = cmGraySpace + cmAlphaSpace
};
/* supported CMBitmapColorSpaces - Each of the following is a */
/* combination of a general colospace and a packing formats. */
/* Each can also be or'd with cmReverseChannelPacking. */
enum {
cmGray8Space = cmGraySpace + cm8_8ColorPacking,
cmGrayA16Space = cmGrayASpace + cm16_8ColorPacking,
cmGray16Space = cmGraySpace,
cmGrayA32Space = cmGrayASpace,
cmGray16LSpace = cmGraySpace + cmLittleEndianPacking,
cmGrayA32LSpace = cmGrayASpace + cmLittleEndianPacking,
cmRGB16Space = cmRGBSpace + cmWord5ColorPacking,
cmRGB16LSpace = cmRGBSpace + cmWord5ColorPacking + cmLittleEndianPacking,
cmRGB565Space = cmRGBSpace + cmWord565ColorPacking,
cmRGB565LSpace = cmRGBSpace + cmWord565ColorPacking + cmLittleEndianPacking,
cmRGB24Space = cmRGBSpace + cm24_8ColorPacking,
cmRGB32Space = cmRGBSpace + cm32_8ColorPacking,
cmRGB48Space = cmRGBSpace + cm48_16ColorPacking,
cmRGB48LSpace = cmRGBSpace + cm48_16ColorPacking + cmLittleEndianPacking,
cmARGB32Space = cmRGBASpace + cm32_8ColorPacking + cmAlphaFirstPacking,
cmARGB64Space = cmRGBASpace + cm64_16ColorPacking + cmAlphaFirstPacking,
cmARGB64LSpace = cmRGBASpace + cm64_16ColorPacking + cmAlphaFirstPacking + cmLittleEndianPacking,
cmRGBA32Space = cmRGBASpace + cm32_8ColorPacking + cmAlphaLastPacking,
cmRGBA64Space = cmRGBASpace + cm64_16ColorPacking + cmAlphaLastPacking,
cmRGBA64LSpace = cmRGBASpace + cm64_16ColorPacking + cmAlphaLastPacking + cmLittleEndianPacking,
cmCMYK32Space = cmCMYKSpace + cm32_8ColorPacking,
cmCMYK64Space = cmCMYKSpace + cm64_16ColorPacking,
cmCMYK64LSpace = cmCMYKSpace + cm64_16ColorPacking + cmLittleEndianPacking,
cmHSV32Space = cmHSVSpace + cmLong10ColorPacking,
cmHLS32Space = cmHLSSpace + cmLong10ColorPacking,
cmYXY32Space = cmYXYSpace + cmLong10ColorPacking,
cmXYZ24Space = cmXYZSpace + cm24_8ColorPacking,
cmXYZ32Space = cmXYZSpace + cmLong10ColorPacking,
cmXYZ48Space = cmXYZSpace + cm48_16ColorPacking,
cmXYZ48LSpace = cmXYZSpace + cm48_16ColorPacking + cmLittleEndianPacking,
cmLUV32Space = cmLUVSpace + cmLong10ColorPacking,
cmLAB24Space = cmLABSpace + cm24_8ColorPacking,
cmLAB32Space = cmLABSpace + cmLong10ColorPacking,
cmLAB48Space = cmLABSpace + cm48_16ColorPacking,
cmLAB48LSpace = cmLABSpace + cm48_16ColorPacking + cmLittleEndianPacking,
cmGamutResult1Space = cmOneBitDirectPacking + cmGamutResultSpace,
cmNamedIndexed32Space = cm32_32ColorPacking + cmNamedIndexedSpace,
cmNamedIndexed32LSpace = cm32_32ColorPacking + cmNamedIndexedSpace + cmLittleEndianPacking,
cmMCFive8Space = cm40_8ColorPacking + cmMCFiveSpace,
cmMCSix8Space = cm48_8ColorPacking + cmMCSixSpace,
cmMCSeven8Space = cm56_8ColorPacking + cmMCSevenSpace,
cmMCEight8Space = cm64_8ColorPacking + cmMCEightSpace
};
typedef UInt32 CMBitmapColorSpace;
struct CMBitmap {
char * image;
long width;
long height;
long rowBytes;
long pixelSize;
CMBitmapColorSpace space;
long user1;
long user2;
};
typedef struct CMBitmap CMBitmap;
/* Classic Print Manager Stuff */
if TARGET_OS_MAC
enum {
enableColorMatchingOp = 12,
registerProfileOp = 13
};
endif /* TARGET_OS_MAC */
/* Profile Locations */
enum {
CS_MAX_PATH = 256
};
enum {
cmNoProfileBase = 0,
cmFileBasedProfile = 1,
cmHandleBasedProfile = 2,
cmPtrBasedProfile = 3,
cmProcedureBasedProfile = 4,
cmPathBasedProfile = 5,
cmBufferBasedProfile = 6
};
struct CMFileLocation {
FSSpec spec;
};
typedef struct CMFileLocation CMFileLocation;
struct CMHandleLocation {
Handle h;
};
typedef struct CMHandleLocation CMHandleLocation;
struct CMPtrLocation {
Ptr p;
};
typedef struct CMPtrLocation CMPtrLocation;
struct CMProcedureLocation {
CMProfileAccessUPP proc;
void * refCon;
};
typedef struct CMProcedureLocation CMProcedureLocation;
struct CMPathLocation {
char path[256];
};
typedef struct CMPathLocation CMPathLocation;
struct CMBufferLocation {
void * buffer;
UInt32 size;
};
typedef struct CMBufferLocation CMBufferLocation;
union CMProfLoc {
CMFileLocation fileLoc;
CMHandleLocation handleLoc;
CMPtrLocation ptrLoc;
CMProcedureLocation procLoc;
CMPathLocation pathLoc;
CMBufferLocation bufferLoc;
};
typedef union CMProfLoc CMProfLoc;
struct CMProfileLocation {
short locType;
CMProfLoc u;
};
typedef struct CMProfileLocation CMProfileLocation;
if TARGET_OS_MAC
enum {
cmOriginalProfileLocationSize = 72,
cmCurrentProfileLocationSize = 2 + CS_MAX_PATH
};
else
enum {
cmOriginalProfileLocationSize = 2 + CS_MAX_PATH,
cmCurrentProfileLocationSize = 2 + CS_MAX_PATH
};
endif /* TARGET_OS_MAC */
/* Struct and enums used for Profile iteration */
enum {
cmProfileIterateDataVersion1 = 0x00010000,
cmProfileIterateDataVersion2 = 0x00020000
};
struct CMProfileIterateData {
UInt32 dataVersion; /* cmProfileIterateDataVersion2 */
CM2Header header;
ScriptCode code;
Str255 name;
CMProfileLocation location;
UniCharCount uniCodeNameCount;
UniChar * uniCodeName;
unsigned char * asciiName;
CMMakeAndModel * makeAndModel;
};
typedef struct CMProfileIterateData CMProfileIterateData;
/* Caller-supplied callback function for Profile & CMM iteration */
typedef CALLBACK_API( OSErr , CMProfileIterateProcPtr )(CMProfileIterateData *iterateData, void *refCon);
typedef CALLBACK_API( OSErr , CMMIterateProcPtr )(CMMInfo *iterateData, void *refCon);
typedef STACK_UPP_TYPE(CMProfileIterateProcPtr) CMProfileIterateUPP;
typedef STACK_UPP_TYPE(CMMIterateProcPtr) CMMIterateUPP;
if OPAQUE_UPP_TYPES
EXTERN_API(CMProfileIterateUPP)
NewCMProfileIterateUPP (CMProfileIterateProcPtr userRoutine);
EXTERN_API(CMMIterateUPP)
NewCMMIterateUPP (CMMIterateProcPtr userRoutine);
EXTERN_API(void)
DisposeCMProfileIterateUPP (CMProfileIterateUPP userUPP);
EXTERN_API(void)
DisposeCMMIterateUPP (CMMIterateUPP userUPP);
EXTERN_API(OSErr)
InvokeCMProfileIterateUPP (CMProfileIterateData * iterateData,
void * refCon,
CMProfileIterateUPP userUPP);
EXTERN_API(OSErr)
InvokeCMMIterateUPP (CMMInfo * iterateData,
void * refCon,
CMMIterateUPP userUPP);
else
enum { uppCMProfileIterateProcInfo = 0x000003E0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes) */
enum { uppCMMIterateProcInfo = 0x000003E0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes) */
#define NewCMProfileIterateUPP(userRoutine) (CMProfileIterateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCMProfileIterateProcInfo, GetCurrentArchitecture())
#define NewCMMIterateUPP(userRoutine) (CMMIterateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCMMIterateProcInfo, GetCurrentArchitecture())
#define DisposeCMProfileIterateUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeCMMIterateUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeCMProfileIterateUPP(iterateData, refCon, userUPP) (OSErr)CALL_TWO_PARAMETER_UPP((userUPP), uppCMProfileIterateProcInfo, (iterateData), (refCon))
#define InvokeCMMIterateUPP(iterateData, refCon, userUPP) (OSErr)CALL_TWO_PARAMETER_UPP((userUPP), uppCMMIterateProcInfo, (iterateData), (refCon))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewCMProfileIterateProc(userRoutine) NewCMProfileIterateUPP(userRoutine)
define NewCMMIterateProc(userRoutine) NewCMMIterateUPP(userRoutine)
define CallCMProfileIterateProc(userRoutine, iterateData, refCon) InvokeCMProfileIterateUPP(iterateData, refCon, userRoutine)
define CallCMMIterateProc(userRoutine, iterateData, refCon) InvokeCMMIterateUPP(iterateData, refCon, userRoutine)
/* Profile file and element access */
EXTERN_API( CMError )
CMNewProfile (CMProfileRef * prof,
const CMProfileLocation * theProfile) FOURWORDINLINE(0x203C, 0x0008, 0x001B, 0xABEE);
EXTERN_API( CMError )
CMOpenProfile (CMProfileRef * prof,
const CMProfileLocation * theProfile) FOURWORDINLINE(0x203C, 0x0008, 0x001C, 0xABEE);
EXTERN_API( CMError )
CMCloseProfile (CMProfileRef prof) FOURWORDINLINE(0x203C, 0x0004, 0x001D, 0xABEE);
EXTERN_API( CMError )
CMUpdateProfile (CMProfileRef prof) FOURWORDINLINE(0x203C, 0x0004, 0x0034, 0xABEE);
EXTERN_API( CMError )
CMCopyProfile (CMProfileRef * targetProf,
const CMProfileLocation * targetLocation,
CMProfileRef srcProf) FOURWORDINLINE(0x203C, 0x000C, 0x0025, 0xABEE);
EXTERN_API( CMError )
CMValidateProfile (CMProfileRef prof,
Boolean * valid,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x000C, 0x0026, 0xABEE);
EXTERN_API( CMError )
CMGetProfileLocation (CMProfileRef prof,
CMProfileLocation * theProfile) FOURWORDINLINE(0x203C, 0x0008, 0x003C, 0xABEE);
EXTERN_API( CMError )
NCMGetProfileLocation (CMProfileRef prof,
CMProfileLocation * theProfile,
UInt32 * locationSize) FOURWORDINLINE(0x203C, 0x000C, 0x0059, 0xABEE);
EXTERN_API( CMError )
CMFlattenProfile (CMProfileRef prof,
UInt32 flags,
CMFlattenUPP proc,
void * refCon,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0014, 0x0031, 0xABEE);
if TARGET_OS_MAC
EXTERN_API( CMError )
CMUnflattenProfile (FSSpec * resultFileSpec,
CMFlattenUPP proc,
void * refCon,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0010, 0x0032, 0xABEE);
endif /* TARGET_OS_MAC */
EXTERN_API( CMError )
CMGetProfileHeader (CMProfileRef prof,
CMAppleProfileHeader * header) FOURWORDINLINE(0x203C, 0x0008, 0x0039, 0xABEE);
EXTERN_API( CMError )
CMSetProfileHeader (CMProfileRef prof,
const CMAppleProfileHeader * header) FOURWORDINLINE(0x203C, 0x0008, 0x003A, 0xABEE);
EXTERN_API( CMError )
CMProfileElementExists (CMProfileRef prof,
OSType tag,
Boolean * found) FOURWORDINLINE(0x203C, 0x000C, 0x001E, 0xABEE);
EXTERN_API( CMError )
CMCountProfileElements (CMProfileRef prof,
UInt32 * elementCount) FOURWORDINLINE(0x203C, 0x0008, 0x001F, 0xABEE);
EXTERN_API( CMError )
CMGetProfileElement (CMProfileRef prof,
OSType tag,
UInt32 * elementSize,
void * elementData) FOURWORDINLINE(0x203C, 0x0010, 0x0020, 0xABEE);
EXTERN_API( CMError )
CMSetProfileElement (CMProfileRef prof,
OSType tag,
UInt32 elementSize,
void * elementData) FOURWORDINLINE(0x203C, 0x0010, 0x0023, 0xABEE);
EXTERN_API( CMError )
CMSetProfileElementSize (CMProfileRef prof,
OSType tag,
UInt32 elementSize) FOURWORDINLINE(0x203C, 0x000C, 0x0038, 0xABEE);
EXTERN_API( CMError )
CMSetProfileElementReference (CMProfileRef prof,
OSType elementTag,
OSType referenceTag) FOURWORDINLINE(0x203C, 0x000C, 0x0035, 0xABEE);
EXTERN_API( CMError )
CMGetPartialProfileElement (CMProfileRef prof,
OSType tag,
UInt32 offset,
UInt32 * byteCount,
void * elementData) FOURWORDINLINE(0x203C, 0x0014, 0x0036, 0xABEE);
EXTERN_API( CMError )
CMSetPartialProfileElement (CMProfileRef prof,
OSType tag,
UInt32 offset,
UInt32 byteCount,
void * elementData) FOURWORDINLINE(0x203C, 0x0014, 0x0037, 0xABEE);
EXTERN_API( CMError )
CMGetIndProfileElementInfo (CMProfileRef prof,
UInt32 index,
OSType * tag,
UInt32 * elementSize,
Boolean * refs) FOURWORDINLINE(0x203C, 0x0014, 0x0021, 0xABEE);
EXTERN_API( CMError )
CMGetIndProfileElement (CMProfileRef prof,
UInt32 index,
UInt32 * elementSize,
void * elementData) FOURWORDINLINE(0x203C, 0x0010, 0x0022, 0xABEE);
EXTERN_API( CMError )
CMRemoveProfileElement (CMProfileRef prof,
OSType tag) FOURWORDINLINE(0x203C, 0x0008, 0x0024, 0xABEE);
EXTERN_API( CMError )
CMGetScriptProfileDescription (CMProfileRef prof,
Str255 name,
ScriptCode * code) FOURWORDINLINE(0x203C, 0x000C, 0x003E, 0xABEE);
EXTERN_API( CMError )
CMGetProfileDescriptions (CMProfileRef prof,
char * aName,
UInt32 * aCount,
Str255 mName,
ScriptCode * mCode,
UniChar * uName,
UniCharCount * uCount) FOURWORDINLINE(0x203C, 0x001A, 0x0067, 0xABEE);
EXTERN_API( CMError )
CMSetProfileDescriptions (CMProfileRef prof,
const char * aName,
UInt32 aCount,
ConstStr255Param mName,
ScriptCode mCode,
const UniChar * uName,
UniCharCount uCount) FOURWORDINLINE(0x203C, 0x001A, 0x0068, 0xABEE);
EXTERN_API( CMError )
CMCloneProfileRef (CMProfileRef prof) FOURWORDINLINE(0x203C, 0x0004, 0x0042, 0xABEE);
EXTERN_API( CMError )
CMGetProfileRefCount (CMProfileRef prof,
long * count) FOURWORDINLINE(0x203C, 0x0008, 0x0043, 0xABEE);
EXTERN_API( CMError )
CMProfileModified (CMProfileRef prof,
Boolean * modified) FOURWORDINLINE(0x203C, 0x0008, 0x0044, 0xABEE);
/* named Color access functions */
EXTERN_API( CMError )
CMGetNamedColorInfo (CMProfileRef prof,
UInt32 * deviceChannels,
OSType * deviceColorSpace,
OSType * PCSColorSpace,
UInt32 * count,
StringPtr prefix,
StringPtr suffix) FOURWORDINLINE(0x203C, 0x001C, 0x0046, 0xABEE);
EXTERN_API( CMError )
CMGetNamedColorValue (CMProfileRef prof,
StringPtr name,
CMColor * deviceColor,
CMColor * PCSColor) FOURWORDINLINE(0x203C, 0x0010, 0x0047, 0xABEE);
EXTERN_API( CMError )
CMGetIndNamedColorValue (CMProfileRef prof,
UInt32 index,
CMColor * deviceColor,
CMColor * PCSColor) FOURWORDINLINE(0x203C, 0x0010, 0x0048, 0xABEE);
EXTERN_API( CMError )
CMGetNamedColorIndex (CMProfileRef prof,
StringPtr name,
UInt32 * index) FOURWORDINLINE(0x203C, 0x000C, 0x0049, 0xABEE);
EXTERN_API( CMError )
CMGetNamedColorName (CMProfileRef prof,
UInt32 index,
StringPtr name) FOURWORDINLINE(0x203C, 0x000C, 0x004A, 0xABEE);
/* General-purpose matching functions */
EXTERN_API( CMError )
NCWNewColorWorld (CMWorldRef * cw,
CMProfileRef src,
CMProfileRef dst) FOURWORDINLINE(0x203C, 0x000C, 0x0014, 0xABEE);
EXTERN_API( CMError )
CWConcatColorWorld (CMWorldRef * cw,
CMConcatProfileSet * profileSet) FOURWORDINLINE(0x203C, 0x0008, 0x0015, 0xABEE);
EXTERN_API( CMError )
CWNewLinkProfile (CMProfileRef * prof,
const CMProfileLocation * targetLocation,
CMConcatProfileSet * profileSet) FOURWORDINLINE(0x203C, 0x000C, 0x0033, 0xABEE);
EXTERN_API( CMError )
NCWConcatColorWorld (CMWorldRef * cw,
NCMConcatProfileSet * profileSet,
CMConcatCallBackUPP proc,
void * refCon) FOURWORDINLINE(0x203C, 0x0008, 0x0061, 0xABEE);
EXTERN_API( CMError )
NCWNewLinkProfile (CMProfileRef * prof,
const CMProfileLocation * targetLocation,
NCMConcatProfileSet * profileSet,
CMConcatCallBackUPP proc,
void * refCon) FOURWORDINLINE(0x203C, 0x000C, 0x0062, 0xABEE);
EXTERN_API( void )
CWDisposeColorWorld (CMWorldRef cw) FOURWORDINLINE(0x203C, 0x0004, 0x0001, 0xABEE);
EXTERN_API( CMError )
CWMatchColors (CMWorldRef cw,
CMColor * myColors,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0002, 0xABEE);
EXTERN_API( CMError )
CWCheckColors (CMWorldRef cw,
CMColor * myColors,
UInt32 count,
UInt32 * result) FOURWORDINLINE(0x203C, 0x0010, 0x0003, 0xABEE);
EXTERN_API( CMError )
CWMatchBitmap (CMWorldRef cw,
CMBitmap * bitmap,
CMBitmapCallBackUPP progressProc,
void * refCon,
CMBitmap * matchedBitmap) FOURWORDINLINE(0x203C, 0x0010, 0x002C, 0xABEE);
EXTERN_API( CMError )
CWCheckBitmap (CMWorldRef cw,
const CMBitmap * bitmap,
CMBitmapCallBackUPP progressProc,
void * refCon,
CMBitmap * resultBitmap) FOURWORDINLINE(0x203C, 0x0014, 0x002D, 0xABEE);
/* Quickdraw-specific matching */
EXTERN_API( CMError )
CWMatchPixMap (CMWorldRef cw,
PixMap * myPixMap,
CMBitmapCallBackUPP progressProc,
void * refCon) FOURWORDINLINE(0x203C, 0x0010, 0x0004, 0xABEE);
EXTERN_API( CMError )
CWCheckPixMap (CMWorldRef cw,
PixMap * myPixMap,
CMBitmapCallBackUPP progressProc,
void * refCon,
BitMap * resultBitMap) FOURWORDINLINE(0x203C, 0x0014, 0x0007, 0xABEE);
if TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON
EXTERN_API( CMError )
NCMBeginMatching (CMProfileRef src,
CMProfileRef dst,
CMMatchRef * myRef) FOURWORDINLINE(0x203C, 0x000C, 0x0016, 0xABEE);
EXTERN_API( void )
CMEndMatching (CMMatchRef myRef) FOURWORDINLINE(0x203C, 0x0004, 0x000B, 0xABEE);
EXTERN_API( void )
NCMDrawMatchedPicture (PicHandle myPicture,
CMProfileRef dst,
Rect * myRect) FOURWORDINLINE(0x203C, 0x000C, 0x0017, 0xABEE);
EXTERN_API( void )
CMEnableMatchingComment (Boolean enableIt) FOURWORDINLINE(0x203C, 0x0002, 0x000D, 0xABEE);
EXTERN_API( CMError )
NCMUseProfileComment (CMProfileRef prof,
UInt32 flags) FOURWORDINLINE(0x203C, 0x0008, 0x003B, 0xABEE);
endif /* TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON */
if TARGET_OS_WIN32
if CALL_NOT_IN_CARBON
EXTERN_API( CMError )
CWMatchHBITMAP (CMWorldRef cw,
HBITMAP hBitmap,
CMBitmapCallBackUPP progressProc,
void * refCon);
endif /* CALL_NOT_IN_CARBON */
endif /* TARGET_OS_WIN32 */
EXTERN_API( CMError )
CMCreateProfileIdentifier (CMProfileRef prof,
CMProfileIdentifierPtr ident,
UInt32 * size) FOURWORDINLINE(0x203C, 0x000C, 0x0041, 0xABEE);
/* System Profile access */
EXTERN_API( CMError )
CMGetSystemProfile (CMProfileRef * prof) FOURWORDINLINE(0x203C, 0x0004, 0x0018, 0xABEE);
EXTERN_API( CMError )
CMSetSystemProfile (const FSSpec * profileFileSpec) FOURWORDINLINE(0x203C, 0x0004, 0x0019, 0xABEE);
EXTERN_API( CMError )
NCMSetSystemProfile (const CMProfileLocation * profLoc) FOURWORDINLINE(0x203C, 0x0004, 0x0064, 0xABEE);
EXTERN_API( CMError )
CMGetDefaultProfileBySpace (OSType dataColorSpace,
CMProfileRef * prof) FOURWORDINLINE(0x203C, 0x0008, 0x005A, 0xABEE);
EXTERN_API( CMError )
CMSetDefaultProfileBySpace (OSType dataColorSpace,
CMProfileRef prof) FOURWORDINLINE(0x203C, 0x0008, 0x005B, 0xABEE);
if TARGET_OS_MAC
EXTERN_API( CMError )
CMGetProfileByAVID (AVIDType theAVID,
CMProfileRef * prof) FOURWORDINLINE(0x203C, 0x0008, 0x005C, 0xABEE);
EXTERN_API( CMError )
CMSetProfileByAVID (AVIDType theAVID,
CMProfileRef prof) FOURWORDINLINE(0x203C, 0x0008, 0x005D, 0xABEE);
endif /* TARGET_OS_MAC */
/* Profile Use enumerations */
enum {
cmInputUse = FOUR_CHAR_CODE('inpt'),
cmOutputUse = FOUR_CHAR_CODE('outp'),
cmDisplayUse = FOUR_CHAR_CODE('dply'),
cmProofUse = FOUR_CHAR_CODE('pruf')
};
/* Profile access by Use */
EXTERN_API( CMError )
CMGetDefaultProfileByUse (OSType use,
CMProfileRef * prof) FOURWORDINLINE(0x203C, 0x0008, 0x0069, 0xABEE);
EXTERN_API( CMError )
CMSetDefaultProfileByUse (OSType use,
CMProfileRef prof) FOURWORDINLINE(0x203C, 0x0008, 0x0079, 0xABEE);
/* Profile Management */
EXTERN_API( CMError )
CMNewProfileSearch (CMSearchRecord * searchSpec,
void * refCon,
UInt32 * count,
CMProfileSearchRef * searchResult) FOURWORDINLINE(0x203C, 0x0010, 0x0027, 0xABEE);
EXTERN_API( CMError )
CMUpdateProfileSearch (CMProfileSearchRef search,
void * refCon,
UInt32 * count) FOURWORDINLINE(0x203C, 0x000C, 0x0028, 0xABEE);
EXTERN_API( void )
CMDisposeProfileSearch (CMProfileSearchRef search) FOURWORDINLINE(0x203C, 0x0004, 0x0029, 0xABEE);
EXTERN_API( CMError )
CMSearchGetIndProfile (CMProfileSearchRef search,
UInt32 index,
CMProfileRef * prof) FOURWORDINLINE(0x203C, 0x000C, 0x002A, 0xABEE);
EXTERN_API( CMError )
CMSearchGetIndProfileFileSpec (CMProfileSearchRef search,
UInt32 index,
FSSpec * profileFile) FOURWORDINLINE(0x203C, 0x000C, 0x002B, 0xABEE);
EXTERN_API( CMError )
CMProfileIdentifierFolderSearch (CMProfileIdentifierPtr ident,
UInt32 * matchedCount,
CMProfileSearchRef * searchResult) FOURWORDINLINE(0x203C, 0x000C, 0x003F, 0xABEE);
EXTERN_API( CMError )
CMProfileIdentifierListSearch (CMProfileIdentifierPtr ident,
CMProfileRef * profileList,
UInt32 listSize,
UInt32 * matchedCount,
CMProfileRef * matchedList) FOURWORDINLINE(0x203C, 0x0014, 0x0040, 0xABEE);
EXTERN_API( CMError )
CMIterateColorSyncFolder (CMProfileIterateUPP proc,
UInt32 * seed,
UInt32 * count,
void * refCon) FOURWORDINLINE(0x203C, 0x0010, 0x0058, 0xABEE);
EXTERN_API( CMError )
NCMUnflattenProfile (CMProfileLocation * targetLocation,
CMFlattenUPP proc,
void * refCon,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0010, 0x0065, 0xABEE);
/* Utilities */
if TARGET_OS_MAC
EXTERN_API( CMError )
CMGetColorSyncFolderSpec (short vRefNum,
Boolean createFolder,
short * foundVRefNum,
long * foundDirID) FOURWORDINLINE(0x203C, 0x000C, 0x0011, 0xABEE);
endif /* TARGET_OS_MAC */
if TARGET_OS_WIN32 || TARGET_OS_UNIX
if CALL_NOT_IN_CARBON
EXTERN_API( CMError )
CMGetColorSyncFolderPath (Boolean createFolder,
char * lpBuffer,
UInt32 uSize);
endif /* CALL_NOT_IN_CARBON */
endif /* TARGET_OS_WIN32 || TARGET_OS_UNIX */
EXTERN_API( CMError )
CMGetCWInfo (CMWorldRef cw,
CMCWInfoRecord * info) FOURWORDINLINE(0x203C, 0x0008, 0x001A, 0xABEE);
if TARGET_API_MAC_OS8
if CALL_NOT_IN_CARBON
EXTERN_API( CMError )
CMConvertProfile2to1 (CMProfileRef profv2,
CMProfileHandle * profv1) FOURWORDINLINE(0x203C, 0x0008, 0x0045, 0xABEE);
endif /* CALL_NOT_IN_CARBON */
endif /* TARGET_API_MAC_OS8 */
EXTERN_API( CMError )
CMGetPreferredCMM (OSType * cmmType,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0008, 0x005E, 0xABEE);
EXTERN_API( CMError )
CMIterateCMMInfo (CMMIterateUPP proc,
UInt32 * count,
void * refCon) FOURWORDINLINE(0x203C, 0x000C, 0x0063, 0xABEE);
EXTERN_API( CMError )
CMGetColorSyncVersion (UInt32 * version) FOURWORDINLINE(0x203C, 0x0004, 0x0066, 0xABEE);
EXTERN_API( CMError )
CMLaunchControlPanel (UInt32 flags);
/* ColorSpace conversion functions */
EXTERN_API( CMError )
CMConvertXYZToLab (const CMColor * src,
const CMXYZColor * white,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x0010, 0x004B, 0xABEE);
EXTERN_API( CMError )
CMConvertLabToXYZ (const CMColor * src,
const CMXYZColor * white,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x0010, 0x004C, 0xABEE);
EXTERN_API( CMError )
CMConvertXYZToLuv (const CMColor * src,
const CMXYZColor * white,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x0010, 0x004D, 0xABEE);
EXTERN_API( CMError )
CMConvertLuvToXYZ (const CMColor * src,
const CMXYZColor * white,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x0010, 0x004E, 0xABEE);
EXTERN_API( CMError )
CMConvertXYZToYxy (const CMColor * src,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x004F, 0xABEE);
EXTERN_API( CMError )
CMConvertYxyToXYZ (const CMColor * src,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0050, 0xABEE);
EXTERN_API( CMError )
CMConvertRGBToHLS (const CMColor * src,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0051, 0xABEE);
EXTERN_API( CMError )
CMConvertHLSToRGB (const CMColor * src,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0052, 0xABEE);
EXTERN_API( CMError )
CMConvertRGBToHSV (const CMColor * src,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0053, 0xABEE);
EXTERN_API( CMError )
CMConvertHSVToRGB (const CMColor * src,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0054, 0xABEE);
EXTERN_API( CMError )
CMConvertRGBToGray (const CMColor * src,
CMColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0055, 0xABEE);
EXTERN_API( CMError )
CMConvertXYZToFixedXYZ (const CMXYZColor * src,
CMFixedXYZColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0056, 0xABEE);
EXTERN_API( CMError )
CMConvertFixedXYZToXYZ (const CMFixedXYZColor * src,
CMXYZColor * dst,
UInt32 count) FOURWORDINLINE(0x203C, 0x000C, 0x0057, 0xABEE);
/* PS-related */
EXTERN_API( CMError )
CMGetPS2ColorSpace (CMProfileRef srcProf,
UInt32 flags,
CMFlattenUPP proc,
void * refCon,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0014, 0x002E, 0xABEE);
EXTERN_API( CMError )
CMGetPS2ColorRenderingIntent (CMProfileRef srcProf,
UInt32 flags,
CMFlattenUPP proc,
void * refCon,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0014, 0x002F, 0xABEE);
EXTERN_API( CMError )
CMGetPS2ColorRendering (CMProfileRef srcProf,
CMProfileRef dstProf,
UInt32 flags,
CMFlattenUPP proc,
void * refCon,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0018, 0x0030, 0xABEE);
EXTERN_API( CMError )
CMGetPS2ColorRenderingVMSize (CMProfileRef srcProf,
CMProfileRef dstProf,
UInt32 * vmSize,
Boolean * preferredCMMnotfound) FOURWORDINLINE(0x203C, 0x0010, 0x003D, 0xABEE);
/* ColorSync 1.0 functions which have parallel 2.0 counterparts */
if TARGET_API_MAC_OS8
if CALL_NOT_IN_CARBON
EXTERN_API( CMError )
CWNewColorWorld (CMWorldRef * cw,
CMProfileHandle src,
CMProfileHandle dst) FOURWORDINLINE(0x203C, 0x000C, 0x0000, 0xABEE);
EXTERN_API( CMError )
ConcatenateProfiles (CMProfileHandle thru,
CMProfileHandle dst,
CMProfileHandle * newDst) FOURWORDINLINE(0x203C, 0x000C, 0x000C, 0xABEE);
EXTERN_API( CMError )
CMBeginMatching (CMProfileHandle src,
CMProfileHandle dst,
CMMatchRef * myRef) FOURWORDINLINE(0x203C, 0x000C, 0x000A, 0xABEE);
EXTERN_API( void )
CMDrawMatchedPicture (PicHandle myPicture,
CMProfileHandle dst,
Rect * myRect) FOURWORDINLINE(0x203C, 0x000C, 0x0009, 0xABEE);
EXTERN_API( CMError )
CMUseProfileComment (CMProfileHandle profile) FOURWORDINLINE(0x203C, 0x0004, 0x0008, 0xABEE);
EXTERN_API( void )
CMGetProfileName (CMProfileHandle myProfile,
CMIString * IStringResult) FOURWORDINLINE(0x203C, 0x0008, 0x000E, 0xABEE);
EXTERN_API( long )
CMGetProfileAdditionalDataOffset (CMProfileHandle myProfile) FOURWORDINLINE(0x203C, 0x0004, 0x000F, 0xABEE);
/* ProfileResponder functions */
EXTERN_API( CMError )
GetProfile (OSType deviceType,
long refNum,
CMProfileHandle aProfile,
CMProfileHandle * returnedProfile) FOURWORDINLINE(0x203C, 0x0010, 0x0005, 0xABEE);
EXTERN_API( CMError )
SetProfile (OSType deviceType,
long refNum,
CMProfileHandle newProfile) FOURWORDINLINE(0x203C, 0x000C, 0x0006, 0xABEE);
EXTERN_API( CMError )
SetProfileDescription (OSType deviceType,
long refNum,
long deviceData,
CMProfileHandle hProfile) FOURWORDINLINE(0x203C, 0x0010, 0x0010, 0xABEE);
EXTERN_API( CMError )
GetIndexedProfile (OSType deviceType,
long refNum,
CMProfileSearchRecordHandle search,
CMProfileHandle * returnProfile,
long * index) FOURWORDINLINE(0x203C, 0x0014, 0x0012, 0xABEE);
EXTERN_API( CMError )
DeleteDeviceProfile (OSType deviceType,
long refNum,
CMProfileHandle deleteMe) FOURWORDINLINE(0x203C, 0x000C, 0x0013, 0xABEE);
endif /* CALL_NOT_IN_CARBON */
if OLDROUTINENAMES
/* constants */
typedef CMFlattenProcPtr CMFlattenProc;
typedef CMBitmapCallBackProcPtr CMBitmapCallBackProc;
typedef CMProfileFilterProcPtr CMProfileFilterProc;
enum {
CMTrap = cmTrap,
CMBeginProfile = cmBeginProfile,
CMEndProfile = cmEndProfile,
CMEnableMatching = cmEnableMatching,
CMDisableMatching = cmDisableMatching
};
/* 1.0 Error codes, for compatibility with older applications. 1.0 CMM's may return obsolete error codes */
enum {
CMNoError = 0, /* obsolete name, use noErr */
CMProfileError = cmProfileError,
CMMethodError = cmMethodError,
CMMemFullError = -172, /* obsolete, 2.0 uses memFullErr */
CMUnimplementedError = -173, /* obsolete, 2.0 uses unimpErr */
CMParamError = -174, /* obsolete, 2.0 uses paramErr */
CMMethodNotFound = cmMethodNotFound,
CMProfileNotFound = cmProfileNotFound,
CMProfilesIdentical = cmProfilesIdentical,
CMCantConcatenateError = cmCantConcatenateError,
CMCantXYZ = cmCantXYZ,
CMCantDeleteProfile = cmCantDeleteProfile,
CMUnsupportedDataType = cmUnsupportedDataType,
CMNoCurrentProfile = cmNoCurrentProfile
};
enum {
qdSystemDevice = cmSystemDevice,
qdGDevice = cmGDevice
};
enum {
kMatchCMMType = cmMatchCMMType,
kMatchApplProfileVersion = cmMatchApplProfileVersion,
kMatchDataType = cmMatchDataType,
kMatchDeviceType = cmMatchDeviceType,
kMatchDeviceManufacturer = cmMatchDeviceManufacturer,
kMatchDeviceModel = cmMatchDeviceModel,
kMatchDeviceAttributes = cmMatchDeviceAttributes,
kMatchFlags = cmMatchFlags,
kMatchOptions = cmMatchOptions,
kMatchWhite = cmMatchWhite,
kMatchBlack = cmMatchBlack
};
/* types */
typedef CMCMYKColor CMYKColor;
typedef CMWorldRef CWorld;
typedef long * CMGamutResult;
/* functions */
define EndMatching(myRef) CMEndMatching(myRef)
define EnableMatching(enableIt) CMEnableMatchingComment(enableIt)
define GetColorSyncFolderSpec(vRefNum, createFolder, foundVRefNum, foundDirID) CMGetColorSyncFolderSpec(vRefNum, createFolder, foundVRefNum, foundDirID)
define BeginMatching(src, dst, myRef) CMBeginMatching(src, dst, myRef)
define DrawMatchedPicture(myPicture, dst, myRect) CMDrawMatchedPicture(myPicture, dst, myRect)
define UseProfile(profile) CMUseProfileComment(profile)
define GetProfileName(myProfile, IStringResult) CMGetProfileName(myProfile, IStringResult)
define GetProfileAdditionalDataOffset(myProfile) CMGetProfileAdditionalDataOffset(myProfile)
endif /* OLDROUTINENAMES */
/* Deprecated stuff*/
/* PrGeneral parameter blocks */
struct TEnableColorMatchingBlk {
short iOpCode;
short iError;
long lReserved;
THPrint hPrint;
Boolean fEnableIt;
SInt8 filler;
};
typedef struct TEnableColorMatchingBlk TEnableColorMatchingBlk;
struct TRegisterProfileBlk {
short iOpCode;
short iError;
long lReserved;
THPrint hPrint;
Boolean fRegisterIt;
SInt8 filler;
};
typedef struct TRegisterProfileBlk TRegisterProfileBlk;
endif /* TARGET_API_MAC_OS8 */
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 /* __CMAPPLICATION__ */
(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.