diff dstep/applicationservices/colorsync/CMICCProfile.d @ 12:9f0b49a2f64e

Added the ApplicationServices frameworks: ATS, ColorSync and CoreGraphics
author Jacob Carlborg <doob@me.com>
date Mon, 03 Aug 2009 14:00:21 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dstep/applicationservices/colorsync/CMICCProfile.d	Mon Aug 03 14:00:21 2009 +0200
@@ -0,0 +1,1024 @@
+/**
+ * Copyright: Copyright (c) 2009 Jacob Carlborg.
+ * Authors: Jacob Carlborg
+ * Version: Initial created: Aug 1, 2009 
+ * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
+ */
+module dstep.applicationservices.colorsync.CMICCProfile;
+
+//import dstep.AvailabilityMacros;
+import dstep.applicationservices.colorsync.CMBase;
+import dstep.coreservices.CoreServices;
+import dstep.objc.bridge.TypeEncoding;
+
+alias ushort CMXYZComponent;
+alias ubyte[16] CMProfileMD5;
+alias CMProfileMD5* CMProfileMD5Ptr;
+alias uint CMMatchOption;
+alias uint CMMatchFlag;
+
+// This is needed otherwise the enums will fail compiling with gdc
+version (GNU)
+{
+	private
+	{
+		const __cmMagicNumber = getOSType!("acsp");
+		const __cmAToB0Tag = getOSType!("A2B0");
+		const __cmAToB1Tag = getOSType!("A2B1");
+		const __cmAToB2Tag = getOSType!("A2B2");
+		const __cmBlueColorantTag = getOSType!("bXYZ");
+		const __cmBlueTRCTag = getOSType!("bTRC");
+		const __cmBToA0Tag = getOSType!("B2A0");
+		const __cmBToA1Tag = getOSType!("B2A1");
+		const __cmBToA2Tag = getOSType!("B2A2");
+		const __cmCalibrationDateTimeTag = getOSType!("calt");
+		const __cmChromaticAdaptationTag = getOSType!("chad");
+		const __cmCharTargetTag = getOSType!("targ");
+		const __cmCopyrightTag = getOSType!("cprt");
+		const __cmDeviceMfgDescTag = getOSType!("dmnd");
+		const __cmDeviceModelDescTag = getOSType!("dmdd");
+		const __cmGamutTag = getOSType!("gamt");
+		const __cmGrayTRCTag = getOSType!("kTRC");
+		const __cmGreenColorantTag = getOSType!("gXYZ");
+		const __cmGreenTRCTag = getOSType!("gTRC");
+		const __cmLuminanceTag = getOSType!("lumi");
+		const __cmMeasurementTag = getOSType!("meas");
+		const __cmMediaBlackPointTag = getOSType!("bkpt");
+		const __cmMediaWhitePointTag = getOSType!("wtpt");
+		const __cmNamedColorTag = getOSType!("ncol");
+		const __cmNamedColor2Tag = getOSType!("ncl2");
+		const __cmPreview0Tag = getOSType!("pre0");
+		const __cmPreview1Tag = getOSType!("pre1");
+		const __cmPreview2Tag = getOSType!("pre2");
+		const __cmProfileDescriptionTag = getOSType!("desc");
+		const __cmProfileSequenceDescTag = getOSType!("pseq");
+		const __cmPS2CRD0Tag = getOSType!("psd0");
+		const __cmPS2CRD1Tag = getOSType!("psd1");
+		const __cmPS2CRD2Tag = getOSType!("psd2");
+		const __cmPS2CRD3Tag = getOSType!("psd3");
+		const __cmPS2CSATag = getOSType!("ps2s");
+		const __cmPS2RenderingIntentTag = getOSType!("ps2i");
+		const __cmRedColorantTag = getOSType!("rXYZ");
+		const __cmRedTRCTag = getOSType!("rTRC");
+		const __cmScreeningDescTag = getOSType!("scrd");
+		const __cmScreeningTag = getOSType!("scrn");
+		const __cmTechnologyTag = getOSType!("tech");
+		const __cmUcrBgTag = getOSType!("bfd ");
+		const __cmViewingConditionsDescTag = getOSType!("vued");
+		const __cmViewingConditionsTag = getOSType!("view");
+		const __cmPS2CRDVMSizeTag = getOSType!("psvm");
+		const __cmVideoCardGammaTag = getOSType!("vcgt");
+		const __cmMakeAndModelTag = getOSType!("mmod");
+		const __cmProfileDescriptionMLTag = getOSType!("dscm");
+		const __cmNativeDisplayInfoTag = getOSType!("ndin");
+		const __cmSigCrdInfoType = getOSType!("crdi");
+		const __cmSigCurveType = getOSType!("curv");
+		const __cmSigDataType = getOSType!("data");
+		const __cmSigDateTimeType = getOSType!("dtim");
+		const __cmSigLut16Type = getOSType!("mft2");
+		const __cmSigLut8Type = getOSType!("mft1");
+		const __cmSigMeasurementType = getOSType!("meas");
+		const __cmSigMultiFunctA2BType = getOSType!("mAB ");
+		const __cmSigMultiFunctB2AType = getOSType!("mBA ");
+		const __cmSigNamedColorType = getOSType!("ncol");
+		const __cmSigNamedColor2Type = getOSType!("ncl2");
+		const __cmSigParametricCurveType = getOSType!("para");
+		const __cmSigProfileDescriptionType = getOSType!("desc");
+		const __cmSigProfileSequenceDescType = getOSType!("pseq");
+		const __cmSigScreeningType = getOSType!("scrn");
+		const __cmSigS15Fixed16Type = getOSType!("sf32");
+		const __cmSigSignatureType = getOSType!("sig ");
+		const __cmSigTextType = getOSType!("text");
+		const __cmSigU16Fixed16Type = getOSType!("uf32");
+		const __cmSigU1Fixed15Type = getOSType!("uf16");
+		const __cmSigUInt8Type = getOSType!("ui08");
+		const __cmSigUInt16Type = getOSType!("ui16");
+		const __cmSigUInt32Type = getOSType!("ui32");
+		const __cmSigUInt64Type = getOSType!("ui64");
+		const __cmSigUcrBgType = getOSType!("bfd ");
+		const __cmSigUnicodeTextType = getOSType!("utxt");
+		const __cmSigViewingConditionsType = getOSType!("view");
+		const __cmSigXYZType = getOSType!("XYZ ");
+		const __cmSigPS2CRDVMSizeType = getOSType!("psvm");
+		const __cmSigVideoCardGammaType = getOSType!("vcgt");
+		const __cmSigMakeAndModelType = getOSType!("mmod");
+		const __cmSigNativeDisplayInfoType = getOSType!("ndin");
+		const __cmSigMultiLocalizedUniCodeType = getOSType!("mluc");
+		const __cmTechnologyDigitalCamera = getOSType!("dcam");
+		const __cmTechnologyFilmScanner = getOSType!("fscn");
+		const __cmTechnologyReflectiveScanner = getOSType!("rscn");
+		const __cmTechnologyInkJetPrinter = getOSType!("ijet");
+		const __cmTechnologyThermalWaxPrinter = getOSType!("twax");
+		const __cmTechnologyElectrophotographicPrinter = getOSType!("epho");
+		const __cmTechnologyElectrostaticPrinter = getOSType!("esta");
+		const __cmTechnologyDyeSublimationPrinter = getOSType!("dsub");
+		const __cmTechnologyPhotographicPaperPrinter = getOSType!("rpho");
+		const __cmTechnologyFilmWriter = getOSType!("fprn");
+		const __cmTechnologyVideoMonitor = getOSType!("vidm");
+		const __cmTechnologyVideoCamera = getOSType!("vidc");
+		const __cmTechnologyProjectionTelevision = getOSType!("pjtv");
+		const __cmTechnologyCRTDisplay = getOSType!("CRT ");
+		const __cmTechnologyPMDisplay = getOSType!("PMD ");
+		const __cmTechnologyAMDisplay = getOSType!("AMD ");
+		const __cmTechnologyPhotoCD = getOSType!("KPCD");
+		const __cmTechnologyPhotoImageSetter = getOSType!("imgs");
+		const __cmTechnologyGravure = getOSType!("grav");
+		const __cmTechnologyOffsetLithography = getOSType!("offs");
+		const __cmTechnologySilkscreen = getOSType!("silk");
+		const __cmTechnologyFlexography = getOSType!("flex");
+		const __cmXYZData = getOSType!("XYZ ");
+		const __cmLabData = getOSType!("Lab ");
+		const __cmLuvData = getOSType!("Luv ");
+		const __cmYCbCrData = getOSType!("YCbr");
+		const __cmYxyData = getOSType!("Yxy ");
+		const __cmRGBData = getOSType!("RGB ");
+		const __cmSRGBData = getOSType!("sRGB");
+		const __cmGrayData = getOSType!("GRAY");
+		const __cmHSVData = getOSType!("HSV ");
+		const __cmHLSData = getOSType!("HLS ");
+		const __cmCMYKData = getOSType!("CMYK");
+		const __cmCMYData = getOSType!("CMY ");
+		const __cmMCH5Data = getOSType!("MCH5");
+		const __cmMCH6Data = getOSType!("MCH6");
+		const __cmMCH7Data = getOSType!("MCH7");
+		const __cmMCH8Data = getOSType!("MCH8");
+		const __cm3CLRData = getOSType!("3CLR");
+		const __cm4CLRData = getOSType!("4CLR");
+		const __cm5CLRData = getOSType!("5CLR");
+		const __cm6CLRData = getOSType!("6CLR");
+		const __cm7CLRData = getOSType!("7CLR");
+		const __cm8CLRData = getOSType!("8CLR");
+		const __cm9CLRData = getOSType!("9CLR");
+		const __cm10CLRData = getOSType!("ACLR");
+		const __cm11CLRData = getOSType!("BCLR");
+		const __cm12CLRData = getOSType!("CCLR");
+		const __cm13CLRData = getOSType!("DCLR");
+		const __cm14CLRData = getOSType!("ECLR");
+		const __cm15CLRData = getOSType!("FCLR");
+		const __cmNamedData = getOSType!("NAME");
+		const __cmInputClass = getOSType!("scnr");
+		const __cmDisplayClass = getOSType!("mntr");
+		const __cmOutputClass = getOSType!("prtr");
+		const __cmLinkClass = getOSType!("link");
+		const __cmAbstractClass = getOSType!("abst");
+		const __cmColorSpaceClass = getOSType!("spac");
+		const __cmNamedColorClass = getOSType!("nmcl");
+		const __cmMacintosh = getOSType!("APPL");
+		const __cmMicrosoft = getOSType!("MSFT");
+		const __cmSolaris = getOSType!("SUNW");
+		const __cmSiliconGraphics = getOSType!("SGI ");
+		const __cmTaligent = getOSType!("TGNT");
+		const __cmCS1ChromTag = getOSType!("chrm");
+		const __cmCS1TRCTag = getOSType!("trc ");
+		const __cmCS1NameTag = getOSType!("name");
+		const __cmCS1CustTag = getOSType!("cust");
+	}
+}
+
+enum
+{
+	cmICCProfileVersion4 = 0x04000000,
+	cmICCProfileVersion2 = 0x02000000,
+	cmICCProfileVersion21 = 0x02100000,
+	cmCS2ProfileVersion = cmICCProfileVersion2,
+	cmCS1ProfileVersion = 0x00000100
+}
+
+enum
+{
+	cmProfileMajorVersionMask = cast(int)0xFF000000,
+	cmCurrentProfileMajorVersion = 0x02000000
+}
+
+enum
+{
+	cmMagicNumber = getOSType!("acsp")
+}
+
+enum
+{
+	cmICCReservedFlagsMask = 0x0000FFFF,
+	cmEmbeddedMask = 0x00000001,
+	cmEmbeddedUseMask = 0x00000002,
+	cmBlackPointCompensationMask = 0x00000004,
+	cmCMSReservedFlagsMask = cast(int)0xFFFF0000,
+	cmQualityMask = 0x00030000,
+	cmInterpolationMask = 0x00040000,
+	cmGamutCheckingMask = 0x00080000
+}
+
+enum
+{
+	cmEmbeddedProfile = 0,
+	cmEmbeddedUse = 1
+}
+
+enum
+{
+	cmNormalMode = 0,
+	cmDraftMode = 1,
+	cmBestMode = 2
+}
+
+enum
+{
+	cmBlackPointCompensation = 1
+}
+
+enum
+{
+	cmReflectiveTransparentMask = 0x00000001,
+	cmGlossyMatteMask = 0x00000002
+}
+
+enum
+{
+	cmReflective = 0,
+	cmGlossy = 1
+}
+
+enum
+{
+	cmPerceptual = 0,
+	cmRelativeColorimetric = 1,
+	cmSaturation = 2,
+	cmAbsoluteColorimetric = 3
+}
+
+enum
+{
+	cmAsciiData = 0,
+	cmBinaryData = 1
+}
+
+enum
+{
+	cmPrtrDefaultScreens = 0,
+	cmLinesPer = 1
+}
+
+enum
+{
+	cmNumHeaderElements = 10
+}
+
+enum
+{
+	cmAToB0Tag = getOSType!("A2B0"),
+	cmAToB1Tag = getOSType!("A2B1"),
+	cmAToB2Tag = getOSType!("A2B2"),
+	cmBlueColorantTag = getOSType!("bXYZ"),
+	cmBlueTRCTag = getOSType!("bTRC"),
+	cmBToA0Tag = getOSType!("B2A0"),
+	cmBToA1Tag = getOSType!("B2A1"),
+	cmBToA2Tag = getOSType!("B2A2"),
+	cmCalibrationDateTimeTag = getOSType!("calt"),
+	cmChromaticAdaptationTag = getOSType!("chad"),
+	cmCharTargetTag = getOSType!("targ"),
+	cmCopyrightTag = getOSType!("cprt"),
+	cmDeviceMfgDescTag = getOSType!("dmnd"),
+	cmDeviceModelDescTag = getOSType!("dmdd"),
+	cmGamutTag = getOSType!("gamt"),
+	cmGrayTRCTag = getOSType!("kTRC"),
+	cmGreenColorantTag = getOSType!("gXYZ"),
+	cmGreenTRCTag = getOSType!("gTRC"),
+	cmLuminanceTag = getOSType!("lumi"),
+	cmMeasurementTag = getOSType!("meas"),
+	cmMediaBlackPointTag = getOSType!("bkpt"),
+	cmMediaWhitePointTag = getOSType!("wtpt"),
+	cmNamedColorTag = getOSType!("ncol"),
+	cmNamedColor2Tag = getOSType!("ncl2"),
+	cmPreview0Tag = getOSType!("pre0"),
+	cmPreview1Tag = getOSType!("pre1"),
+	cmPreview2Tag = getOSType!("pre2"),
+	cmProfileDescriptionTag = getOSType!("desc"),
+	cmProfileSequenceDescTag = getOSType!("pseq"),
+	cmPS2CRD0Tag = getOSType!("psd0"),
+	cmPS2CRD1Tag = getOSType!("psd1"),
+	cmPS2CRD2Tag = getOSType!("psd2"),
+	cmPS2CRD3Tag = getOSType!("psd3"),
+	cmPS2CSATag = getOSType!("ps2s"),
+	cmPS2RenderingIntentTag = getOSType!("ps2i"),
+	cmRedColorantTag = getOSType!("rXYZ"),
+	cmRedTRCTag = getOSType!("rTRC"),
+	cmScreeningDescTag = getOSType!("scrd"),
+	cmScreeningTag = getOSType!("scrn"),
+	cmTechnologyTag = getOSType!("tech"),
+	cmUcrBgTag = getOSType!("bfd "),
+	cmViewingConditionsDescTag = getOSType!("vued"),
+	cmViewingConditionsTag = getOSType!("view")
+}
+
+enum
+{
+	cmPS2CRDVMSizeTag = getOSType!("psvm"),
+	cmVideoCardGammaTag = getOSType!("vcgt"),
+	cmMakeAndModelTag = getOSType!("mmod"),
+	cmProfileDescriptionMLTag = getOSType!("dscm"),
+	cmNativeDisplayInfoTag = getOSType!("ndin")
+}
+
+enum
+{
+	cmSigCrdInfoType = getOSType!("crdi"),
+	cmSigCurveType = getOSType!("curv"),
+	cmSigDataType = getOSType!("data"),
+	cmSigDateTimeType = getOSType!("dtim"),
+	cmSigLut16Type = getOSType!("mft2"),
+	cmSigLut8Type = getOSType!("mft1"),
+	cmSigMeasurementType = getOSType!("meas"),
+	cmSigMultiFunctA2BType = getOSType!("mAB "),
+	cmSigMultiFunctB2AType = getOSType!("mBA "),
+	cmSigNamedColorType = getOSType!("ncol"),
+	cmSigNamedColor2Type = getOSType!("ncl2"),
+	cmSigParametricCurveType = getOSType!("para"),
+	cmSigProfileDescriptionType = getOSType!("desc"),
+	cmSigProfileSequenceDescType = getOSType!("pseq"),
+	cmSigScreeningType = getOSType!("scrn"),
+	cmSigS15Fixed16Type = getOSType!("sf32"),
+	cmSigSignatureType = getOSType!("sig "),
+	cmSigTextType = getOSType!("text"),
+	cmSigU16Fixed16Type = getOSType!("uf32"),
+	cmSigU1Fixed15Type = getOSType!("uf16"),
+	cmSigUInt8Type = getOSType!("ui08"),
+	cmSigUInt16Type = getOSType!("ui16"),
+	cmSigUInt32Type = getOSType!("ui32"),
+	cmSigUInt64Type = getOSType!("ui64"),
+	cmSigUcrBgType = getOSType!("bfd "),
+	cmSigUnicodeTextType = getOSType!("utxt"),
+	cmSigViewingConditionsType = getOSType!("view"),
+	cmSigXYZType = getOSType!("XYZ ")
+}
+
+enum
+{
+	cmSigPS2CRDVMSizeType = getOSType!("psvm"),
+	cmSigVideoCardGammaType = getOSType!("vcgt"),
+	cmSigMakeAndModelType = getOSType!("mmod"),
+	cmSigNativeDisplayInfoType = getOSType!("ndin"),
+	cmSigMultiLocalizedUniCodeType = getOSType!("mluc")
+}
+
+enum
+{
+	cmTechnologyDigitalCamera = getOSType!("dcam"),
+	cmTechnologyFilmScanner = getOSType!("fscn"),
+	cmTechnologyReflectiveScanner = getOSType!("rscn"),
+	cmTechnologyInkJetPrinter = getOSType!("ijet"),
+	cmTechnologyThermalWaxPrinter = getOSType!("twax"),
+	cmTechnologyElectrophotographicPrinter = getOSType!("epho"),
+	cmTechnologyElectrostaticPrinter = getOSType!("esta"),
+	cmTechnologyDyeSublimationPrinter = getOSType!("dsub"),
+	cmTechnologyPhotographicPaperPrinter = getOSType!("rpho"),
+	cmTechnologyFilmWriter = getOSType!("fprn"),
+	cmTechnologyVideoMonitor = getOSType!("vidm"),
+	cmTechnologyVideoCamera = getOSType!("vidc"),
+	cmTechnologyProjectionTelevision = getOSType!("pjtv"),
+	cmTechnologyCRTDisplay = getOSType!("CRT "),
+	cmTechnologyPMDisplay = getOSType!("PMD "),
+	cmTechnologyAMDisplay = getOSType!("AMD "),
+	cmTechnologyPhotoCD = getOSType!("KPCD"),
+	cmTechnologyPhotoImageSetter = getOSType!("imgs"),
+	cmTechnologyGravure = getOSType!("grav"),
+	cmTechnologyOffsetLithography = getOSType!("offs"),
+	cmTechnologySilkscreen = getOSType!("silk"),
+	cmTechnologyFlexography = getOSType!("flex")
+}
+
+enum
+{
+	cmFlare0 = 0x00000000,
+	cmFlare100 = 0x00000001
+}
+
+enum
+{
+	cmGeometryUnknown = 0x00000000,
+	cmGeometry045or450 = 0x00000001,
+	cmGeometry0dord0 = 0x00000002
+}
+
+enum
+{
+	cmStdobsUnknown = 0x00000000,
+	cmStdobs1931TwoDegrees = 0x00000001,
+	cmStdobs1964TenDegrees = 0x00000002
+}
+
+enum
+{
+	cmIlluminantUnknown = 0x00000000,
+	cmIlluminantD50 = 0x00000001,
+	cmIlluminantD65 = 0x00000002,
+	cmIlluminantD93 = 0x00000003,
+	cmIlluminantF2 = 0x00000004,
+	cmIlluminantD55 = 0x00000005,
+	cmIlluminantA = 0x00000006,
+	cmIlluminantEquiPower = 0x00000007,
+	cmIlluminantF8 = 0x00000008
+}
+
+enum
+{
+	cmSpotFunctionUnknown = 0,
+	cmSpotFunctionDefault = 1,
+	cmSpotFunctionRound = 2,
+	cmSpotFunctionDiamond = 3,
+	cmSpotFunctionEllipse = 4,
+	cmSpotFunctionLine = 5,
+	cmSpotFunctionSquare = 6,
+	cmSpotFunctionCross = 7
+}
+
+enum
+{
+	cmXYZData = getOSType!("XYZ "),
+	cmLabData = getOSType!("Lab "),
+	cmLuvData = getOSType!("Luv "),
+	cmYCbCrData = getOSType!("YCbr"),
+	cmYxyData = getOSType!("Yxy "),
+	cmRGBData = getOSType!("RGB "),
+	cmSRGBData = getOSType!("sRGB"),
+	cmGrayData = getOSType!("GRAY"),
+	cmHSVData = getOSType!("HSV "),
+	cmHLSData = getOSType!("HLS "),
+	cmCMYKData = getOSType!("CMYK"),
+	cmCMYData = getOSType!("CMY "),
+	cmMCH5Data = getOSType!("MCH5"),
+	cmMCH6Data = getOSType!("MCH6"),
+	cmMCH7Data = getOSType!("MCH7"),
+	cmMCH8Data = getOSType!("MCH8"),
+	cm3CLRData = getOSType!("3CLR"),
+	cm4CLRData = getOSType!("4CLR"),
+	cm5CLRData = getOSType!("5CLR"),
+	cm6CLRData = getOSType!("6CLR"),
+	cm7CLRData = getOSType!("7CLR"),
+	cm8CLRData = getOSType!("8CLR"),
+	cm9CLRData = getOSType!("9CLR"),
+	cm10CLRData = getOSType!("ACLR"),
+	cm11CLRData = getOSType!("BCLR"),
+	cm12CLRData = getOSType!("CCLR"),
+	cm13CLRData = getOSType!("DCLR"),
+	cm14CLRData = getOSType!("ECLR"),
+	cm15CLRData = getOSType!("FCLR"),
+	cmNamedData = getOSType!("NAME")
+}
+
+enum
+{
+	cmInputClass = getOSType!("scnr"),
+	cmDisplayClass = getOSType!("mntr"),
+	cmOutputClass = getOSType!("prtr"),
+	cmLinkClass = getOSType!("link"),
+	cmAbstractClass = getOSType!("abst"),
+	cmColorSpaceClass = getOSType!("spac"),
+	cmNamedColorClass = getOSType!("nmcl")
+}
+
+enum
+{
+	cmMacintosh = getOSType!("APPL"),
+	cmMicrosoft = getOSType!("MSFT"),
+	cmSolaris = getOSType!("SUNW"),
+	cmSiliconGraphics = getOSType!("SGI "),
+	cmTaligent = getOSType!("TGNT")
+}
+
+enum
+{
+	cmParametricType0 = 0,
+	cmParametricType1 = 1,
+	cmParametricType2 = 2,
+	cmParametricType3 = 3,
+	cmParametricType4 = 4
+}
+
+enum
+{
+	cmCS1ChromTag = getOSType!("chrm"),
+	cmCS1TRCTag = getOSType!("trc "),
+	cmCS1NameTag = getOSType!("name"),
+	cmCS1CustTag = getOSType!("cust")
+}
+
+enum
+{
+	cmVideoCardGammaTableType = 0,
+	cmVideoCardGammaFormulaType = 1
+}
+
+struct CMDateTime
+{
+	ushort year;
+	ushort month;
+	ushort dayOfTheMonth;
+	ushort hours;
+	ushort minutes;
+	ushort seconds;
+}
+
+
+struct CMFixedXYColor
+{
+	int x;
+	int y;
+}
+
+
+struct CMFixedXYZColor
+{
+	int X;
+	int Y;
+	int Z;
+}
+
+
+struct CMXYZColor
+{
+	ushort X;
+	ushort Y;
+	ushort Z;
+}
+
+struct CMHeader
+{
+	uint size;
+	OSType CMMType;
+	uint applProfileVersion;
+	OSType dataType;
+	OSType deviceType;
+	OSType deviceManufacturer;
+	uint deviceModel;
+	uint[2] deviceAttributes;
+	uint profileNameOffset;
+	uint customDataOffset;
+	CMMatchFlag flags;
+	CMMatchOption options;
+	CMXYZColor white;
+	CMXYZColor black;
+}
+
+struct CM2Header
+{
+	uint size;
+	uint CMMType;
+	uint profileVersion;
+	uint profileClass;
+	uint dataColorSpace;
+	uint profileConnectionSpace;
+	CMDateTime dateTime;
+	uint CS2profileSignature;
+	uint platform;
+	uint flags;
+	uint deviceManufacturer;
+	uint deviceModel;
+	UInt32* deviceAttributes;
+	uint renderingIntent;
+	CMFixedXYZColor white;
+	uint creator;
+	char* reserved;
+}
+
+
+struct CM4Header
+{
+	uint size;
+	uint CMMType;
+	uint profileVersion;
+	uint profileClass;
+	uint dataColorSpace;
+	uint profileConnectionSpace;
+	CMDateTime dateTime;
+	uint CS2profileSignature;
+	uint platform;
+	uint flags;
+	uint deviceManufacturer;
+	uint deviceModel;
+	UInt32* deviceAttributes;
+	uint renderingIntent;
+	CMFixedXYZColor white;
+	uint creator;
+	ubyte[16] digest;
+	char* reserved;
+}
+
+
+struct CMTagRecord
+{
+	uint tag;
+	uint elementOffset;
+	uint elementSize;
+}
+
+
+struct CMTagElemTable
+{
+	uint count;
+	CMTagRecord* tagList;
+}
+
+
+struct CM2Profile
+{
+	CM2Header header;
+	CMTagElemTable tagTable;
+	char* elemData;
+}
+
+
+struct CMAdaptationMatrixType
+{
+	uint typeDescriptor;
+	uint reserved;
+	Fixed* adaptationMatrix;
+}
+
+
+struct CMCurveType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint countValue;
+	UInt16* data;
+}
+
+
+struct CMDataType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint dataFlag;
+	char* data;
+}
+
+
+struct CMDateTimeType
+{
+	uint typeDescriptor;
+	uint reserved;
+	CMDateTime dateTime;
+}
+
+
+struct CMLut16Type
+{
+	uint typeDescriptor;
+	uint reserved;
+	ubyte inputChannels;
+	ubyte outputChannels;
+	ubyte gridPoints;
+	ubyte reserved2;
+	Fixed* matrix;
+	ushort inputTableEntries;
+	ushort outputTableEntries;
+	UInt16* inputTable;
+}
+
+
+struct CMLut8Type
+{
+	uint typeDescriptor;
+	uint reserved;
+	ubyte inputChannels;
+	ubyte outputChannels;
+	ubyte gridPoints;
+	ubyte reserved2;
+	Fixed* matrix;
+	char* inputTable;
+}
+
+
+struct CMMultiFunctLutType
+{
+	uint typeDescriptor;
+	uint reserved;
+	ubyte inputChannels;
+	ubyte outputChannels;
+	ushort reserved2;
+	uint offsetBcurves;
+	uint offsetMatrix;
+	uint offsetMcurves;
+	uint offsetCLUT;
+	uint offsetAcurves;
+	char* data;
+}
+
+
+struct CMMultiFunctCLUTType
+{
+	char* gridPoints;
+	ubyte entrySize;
+	char* reserved;
+	char* data;
+}
+
+
+struct CMMeasurementType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint standardObserver;
+	CMFixedXYZColor backingXYZ;
+	uint geometry;
+	uint flare;
+	uint illuminant;
+}
+
+
+struct CMNamedColorType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint vendorFlag;
+	uint count;
+	char* prefixName;
+}
+
+
+struct CMNamedColor2EntryType
+{
+	char* rootName;
+	UInt16* PCSColorCoords;
+	UInt16* DeviceColorCoords;
+}
+
+
+struct CMNamedColor2Type
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint vendorFlag;
+	uint count;
+	uint deviceChannelCount;
+	char* prefixName;
+	char* suffixName;
+	char* data;
+}
+
+
+struct CMNativeDisplayInfo
+{
+	uint dataSize;
+	CMFixedXYColor redPhosphor;
+	CMFixedXYColor greenPhosphor;
+	CMFixedXYColor bluePhosphor;
+	CMFixedXYColor whitePoint;
+	int redGammaValue;
+	int greenGammaValue;
+	int blueGammaValue;
+	ushort gammaChannels;
+	ushort gammaEntryCount;
+	ushort gammaEntrySize;
+	char* gammaData;
+}
+
+
+struct CMNativeDisplayInfoType
+{
+	uint typeDescriptor;
+	uint reserved;
+	CMNativeDisplayInfo nativeDisplayInfo;
+}
+
+
+struct CMParametricCurveType
+{
+	uint typeDescriptor;
+	uint reserved;
+	ushort functionType;
+	ushort reserved2;
+	Fixed* value;
+}
+
+
+struct CMTextDescriptionType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint ASCIICount;
+	char* ASCIIName;
+}
+
+
+struct CMTextType
+{
+	uint typeDescriptor;
+	uint reserved;
+	char* text;
+}
+
+
+struct CMUnicodeTextType
+{
+	uint typeDescriptor;
+	uint reserved;
+	wchar* text;
+}
+
+
+struct CMScreeningChannelRec
+{
+	int frequency;
+	int angle;
+	uint spotFunction;
+}
+
+
+struct CMScreeningType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint screeningFlag;
+	uint channelCount;
+	CMScreeningChannelRec* channelInfo;
+}
+
+
+struct CMSignatureType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint signature;
+}
+
+
+struct CMS15Fixed16ArrayType
+{
+	uint typeDescriptor;
+	uint reserved;
+	Fixed* value;
+}
+
+
+struct CMU16Fixed16ArrayType
+{
+	uint typeDescriptor;
+	uint reserved;
+	UInt32* value;
+}
+
+
+struct CMUInt8ArrayType
+{
+	uint typeDescriptor;
+	uint reserved;
+	char* value;
+}
+
+
+struct CMUInt16ArrayType
+{
+	uint typeDescriptor;
+	uint reserved;
+	UInt16* value;
+}
+
+
+struct CMUInt32ArrayType
+{
+	uint typeDescriptor;
+	uint reserved;
+	UInt32* value;
+}
+
+
+struct CMUInt64ArrayType
+{
+	uint typeDescriptor;
+	uint reserved;
+	UInt32* value;
+}
+
+
+struct CMViewingConditionsType
+{
+	uint typeDescriptor;
+	uint reserved;
+	CMFixedXYZColor illuminant;
+	CMFixedXYZColor surround;
+	uint stdIlluminant;
+}
+
+
+struct CMXYZType
+{
+	uint typeDescriptor;
+	uint reserved;
+	CMFixedXYZColor* XYZ;
+}
+
+
+struct CMProfileSequenceDescType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint count;
+	char* data;
+}
+
+
+struct CMUcrBgType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint ucrCount;
+	UInt16* ucrValues;
+}
+
+
+struct CMIntentCRDVMSize
+{
+	uint renderingIntent;
+	uint VMSize;
+}
+
+
+struct CMPS2CRDVMSizeType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint count;
+	CMIntentCRDVMSize* intentCRD;
+}
+
+
+struct CMVideoCardGammaTable
+{
+	ushort channels;
+	ushort entryCount;
+	ushort entrySize;
+	char* data;
+}
+
+
+struct CMVideoCardGammaFormula
+{
+	int redGamma;
+	int redMin;
+	int redMax;
+	int greenGamma;
+	int greenMin;
+	int greenMax;
+	int blueGamma;
+	int blueMin;
+	int blueMax;
+}
+
+
+struct CMVideoCardGamma
+{
+	 uint tagType;
+	 
+	 union
+	 {
+		 CMVideoCardGammaTable table;
+		 CMVideoCardGammaFormula formula;
+	 }
+}
+
+struct CMVideoCardGammaType
+{
+	uint typeDescriptor;
+	UInt32 reserved;
+	CMVideoCardGamma gamma;
+}
+
+
+struct CMMakeAndModel
+{
+	uint manufacturer;
+	uint model;
+	uint serialNumber;
+	uint manufactureDate;
+	uint reserved1;
+	uint reserved2;
+	uint reserved3;
+	UInt32 reserved4;
+}
+
+
+struct CMMakeAndModelType
+{
+	uint typeDescriptor;
+	UInt32 reserved;
+	CMMakeAndModel makeAndModel;
+}
+
+
+struct CMMultiLocalizedUniCodeEntryRec
+{
+	char* languageCode;
+	uint regionCode;
+	uint textLength;
+	UInt32 textOffset;
+}
+
+
+struct CMMultiLocalizedUniCodeType
+{
+	uint typeDescriptor;
+	uint reserved;
+	uint entryCount;
+	UInt32 entrySize;
+}
+