diff fuhtark_test/include/winapi/icm.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/winapi/icm.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,492 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef _ICM_H_
+#define _ICM_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  typedef char COLOR_NAME[32];
+  typedef COLOR_NAME *PCOLOR_NAME,*LPCOLOR_NAME;
+
+  typedef struct tagNAMED_PROFILE_INFO {
+    DWORD dwFlags;
+    DWORD dwCount;
+    DWORD dwCountDevCoordinates;
+    COLOR_NAME szPrefix;
+    COLOR_NAME szSuffix;
+  } NAMED_PROFILE_INFO;
+  typedef NAMED_PROFILE_INFO *PNAMED_PROFILE_INFO,*LPNAMED_PROFILE_INFO;
+
+#define MAX_COLOR_CHANNELS 8
+
+  struct GRAYCOLOR {
+    WORD gray;
+  };
+
+  struct RGBCOLOR {
+    WORD red;
+    WORD green;
+    WORD blue;
+  };
+
+  struct CMYKCOLOR {
+    WORD cyan;
+    WORD magenta;
+    WORD yellow;
+    WORD black;
+  };
+
+  struct XYZCOLOR {
+    WORD X;
+    WORD Y;
+    WORD Z;
+  };
+
+  struct YxyCOLOR {
+    WORD Y;
+    WORD x;
+    WORD y;
+  };
+
+  struct LabCOLOR {
+    WORD L;
+    WORD a;
+    WORD b;
+  };
+
+  struct GENERIC3CHANNEL {
+    WORD ch1;
+    WORD ch2;
+    WORD ch3;
+  };
+
+  struct NAMEDCOLOR {
+    DWORD dwIndex;
+  };
+
+  struct HiFiCOLOR {
+    BYTE channel[MAX_COLOR_CHANNELS];
+  };
+
+  typedef union tagCOLOR {
+    struct GRAYCOLOR gray;
+    struct RGBCOLOR rgb;
+    struct CMYKCOLOR cmyk;
+    struct XYZCOLOR XYZ;
+    struct YxyCOLOR Yxy;
+    struct LabCOLOR Lab;
+    struct GENERIC3CHANNEL gen3ch;
+    struct NAMEDCOLOR named;
+    struct HiFiCOLOR hifi;
+    struct {
+      DWORD reserved1;
+      VOID *reserved2;
+    };
+  } COLOR;
+  typedef COLOR *PCOLOR,*LPCOLOR;
+
+  typedef enum {
+    COLOR_GRAY = 1,COLOR_RGB,COLOR_XYZ,COLOR_Yxy,COLOR_Lab,COLOR_3_CHANNEL,COLOR_CMYK,COLOR_5_CHANNEL,COLOR_6_CHANNEL,COLOR_7_CHANNEL,
+    COLOR_8_CHANNEL,COLOR_NAMED
+  } COLORTYPE;
+  typedef COLORTYPE *PCOLORTYPE,*LPCOLORTYPE;
+
+  typedef enum {
+    BM_x555RGB = 0x0000,BM_x555XYZ = 0x0101,BM_x555Yxy,BM_x555Lab,BM_x555G3CH,BM_RGBTRIPLETS = 0x0002,BM_BGRTRIPLETS = 0x0004,BM_XYZTRIPLETS = 0x0201,
+    BM_YxyTRIPLETS,BM_LabTRIPLETS,BM_G3CHTRIPLETS,BM_5CHANNEL,BM_6CHANNEL,BM_7CHANNEL,BM_8CHANNEL,BM_GRAY,BM_xRGBQUADS = 0x0008,BM_xBGRQUADS = 0x0010,
+    BM_xG3CHQUADS = 0x0304,BM_KYMCQUADS,BM_CMYKQUADS = 0x0020,BM_10b_RGB = 0x0009,BM_10b_XYZ = 0x0401,BM_10b_Yxy,BM_10b_Lab,BM_10b_G3CH,BM_NAMED_INDEX,
+    BM_16b_RGB = 0x000A,BM_16b_XYZ = 0x0501,BM_16b_Yxy,BM_16b_Lab,BM_16b_G3CH,BM_16b_GRAY,BM_565RGB = 0x0001
+  } BMFORMAT;
+  typedef BMFORMAT *PBMFORMAT,*LPBMFORMAT;
+
+  typedef WINBOOL (WINAPI *PBMCALLBACKFN)(ULONG,ULONG,LPARAM);
+  typedef PBMCALLBACKFN LPBMCALLBACKFN;
+
+  typedef struct tagPROFILEHEADER {
+    DWORD phSize;
+    DWORD phCMMType;
+    DWORD phVersion;
+    DWORD phClass;
+    DWORD phDataColorSpace;
+    DWORD phConnectionSpace;
+    DWORD phDateTime[3];
+    DWORD phSignature;
+    DWORD phPlatform;
+    DWORD phProfileFlags;
+    DWORD phManufacturer;
+    DWORD phModel;
+    DWORD phAttributes[2];
+    DWORD phRenderingIntent;
+    CIEXYZ phIlluminant;
+    DWORD phCreator;
+    BYTE phReserved[44];
+  } PROFILEHEADER;
+  typedef PROFILEHEADER *PPROFILEHEADER,*LPPROFILEHEADER;
+
+#define CLASS_MONITOR 'mntr'
+#define CLASS_PRINTER 'prtr'
+#define CLASS_SCANNER 'scnr'
+#define CLASS_LINK 'link'
+#define CLASS_ABSTRACT 'abst'
+#define CLASS_COLORSPACE 'spac'
+#define CLASS_NAMED 'nmcl'
+
+#define SPACE_XYZ 'XYZ '
+#define SPACE_Lab 'Lab '
+#define SPACE_Luv 'Luv '
+#define SPACE_YCbCr 'YCbr'
+#define SPACE_Yxy 'Yxy '
+#define SPACE_RGB 'RGB '
+#define SPACE_GRAY 'GRAY'
+#define SPACE_HSV 'HSV '
+#define SPACE_HLS 'HLS '
+#define SPACE_CMYK 'CMYK'
+#define SPACE_CMY 'CMY '
+#define SPACE_2_CHANNEL '2CLR'
+#define SPACE_3_CHANNEL '3CLR'
+#define SPACE_4_CHANNEL '4CLR'
+#define SPACE_5_CHANNEL '5CLR'
+#define SPACE_6_CHANNEL '6CLR'
+#define SPACE_7_CHANNEL '7CLR'
+#define SPACE_8_CHANNEL '8CLR'
+
+#define FLAG_EMBEDDEDPROFILE 0x00000001
+#define FLAG_DEPENDENTONDATA 0x00000002
+
+#define ATTRIB_TRANSPARENCY 0x00000001
+#define ATTRIB_MATTE 0x00000002
+
+#define INTENT_PERCEPTUAL 0
+#define INTENT_RELATIVE_COLORIMETRIC 1
+#define INTENT_SATURATION 2
+#define INTENT_ABSOLUTE_COLORIMETRIC 3
+
+  typedef struct tagPROFILE {
+    DWORD dwType;
+    PVOID pProfileData;
+    DWORD cbDataSize;
+  } PROFILE;
+  typedef PROFILE *PPROFILE,*LPPROFILE;
+
+#define PROFILE_FILENAME 1
+#define PROFILE_MEMBUFFER 2
+
+#define PROFILE_READ 1
+#define PROFILE_READWRITE 2
+
+  typedef HANDLE HPROFILE;
+  typedef HPROFILE *PHPROFILE;
+  typedef HANDLE HTRANSFORM;
+
+#define INDEX_DONT_CARE 0
+
+#define CMM_FROM_PROFILE INDEX_DONT_CARE
+#define CMM_WINDOWS_DEFAULT 'Win '
+
+  typedef DWORD TAGTYPE;
+  typedef TAGTYPE *PTAGTYPE,*LPTAGTYPE;
+
+#define ENUM_TYPE_VERSION 0x0300
+
+  typedef struct tagENUMTYPEA {
+    DWORD dwSize;
+    DWORD dwVersion;
+    DWORD dwFields;
+    PCSTR pDeviceName;
+    DWORD dwMediaType;
+    DWORD dwDitheringMode;
+    DWORD dwResolution[2];
+    DWORD dwCMMType;
+    DWORD dwClass;
+    DWORD dwDataColorSpace;
+    DWORD dwConnectionSpace;
+    DWORD dwSignature;
+    DWORD dwPlatform;
+    DWORD dwProfileFlags;
+    DWORD dwManufacturer;
+    DWORD dwModel;
+    DWORD dwAttributes[2];
+    DWORD dwRenderingIntent;
+    DWORD dwCreator;
+    DWORD dwDeviceClass;
+  } ENUMTYPEA,*PENUMTYPEA,*LPENUMTYPEA;
+
+  typedef struct tagENUMTYPEW {
+    DWORD dwSize;
+    DWORD dwVersion;
+    DWORD dwFields;
+    PCWSTR pDeviceName;
+    DWORD dwMediaType;
+    DWORD dwDitheringMode;
+    DWORD dwResolution[2];
+    DWORD dwCMMType;
+    DWORD dwClass;
+    DWORD dwDataColorSpace;
+    DWORD dwConnectionSpace;
+    DWORD dwSignature;
+    DWORD dwPlatform;
+    DWORD dwProfileFlags;
+    DWORD dwManufacturer;
+    DWORD dwModel;
+    DWORD dwAttributes[2];
+    DWORD dwRenderingIntent;
+    DWORD dwCreator;
+    DWORD dwDeviceClass;
+  } ENUMTYPEW,*PENUMTYPEW,*LPENUMTYPEW;
+
+#define ET_DEVICENAME 0x00000001
+#define ET_MEDIATYPE 0x00000002
+#define ET_DITHERMODE 0x00000004
+#define ET_RESOLUTION 0x00000008
+#define ET_CMMTYPE 0x00000010
+#define ET_CLASS 0x00000020
+#define ET_DATACOLORSPACE 0x00000040
+#define ET_CONNECTIONSPACE 0x00000080
+#define ET_SIGNATURE 0x00000100
+#define ET_PLATFORM 0x00000200
+#define ET_PROFILEFLAGS 0x00000400
+#define ET_MANUFACTURER 0x00000800
+#define ET_MODEL 0x00001000
+#define ET_ATTRIBUTES 0x00002000
+#define ET_RENDERINGINTENT 0x00004000
+#define ET_CREATOR 0x00008000
+#define ET_DEVICECLASS 0x00010000
+
+#define PROOF_MODE 0x00000001
+#define NORMAL_MODE 0x00000002
+#define BEST_MODE 0x00000003
+#define ENABLE_GAMUT_CHECKING 0x00010000
+#define USE_RELATIVE_COLORIMETRIC 0x00020000
+#define FAST_TRANSLATE 0x00040000
+#define RESERVED 0x80000000
+
+#define CSA_A 1
+#define CSA_ABC 2
+#define CSA_DEF 3
+#define CSA_DEFG 4
+#define CSA_GRAY 5
+#define CSA_RGB 6
+#define CSA_CMYK 7
+#define CSA_Lab 8
+
+#define CMM_WIN_VERSION 0
+#define CMM_IDENT 1
+#define CMM_DRIVER_VERSION 2
+#define CMM_DLL_VERSION 3
+#define CMM_VERSION 4
+#define CMM_DESCRIPTION 5
+#define CMM_LOGOICON 6
+
+#define CMS_FORWARD 0
+#define CMS_BACKWARD 1
+
+#define COLOR_MATCH_VERSION 0x0200
+
+#define CMS_DISABLEICM 1
+#define CMS_ENABLEPROOFING 2
+
+#define CMS_SETRENDERINTENT 4
+#define CMS_SETPROOFINTENT 8
+#define CMS_SETMONITORPROFILE 0x10
+#define CMS_SETPRINTERPROFILE 0x20
+#define CMS_SETTARGETPROFILE 0x40
+
+#define CMS_USEHOOK 0x80
+#define CMS_USEAPPLYCALLBACK 0x100
+#define CMS_USEDESCRIPTION 0x200
+
+#define CMS_DISABLEINTENT 0x400
+#define CMS_DISABLERENDERINTENT 0x800
+
+#define CMS_MONITOROVERFLOW 0x80000000L
+#define CMS_PRINTEROVERFLOW 0x40000000L
+#define CMS_TARGETOVERFLOW 0x20000000L
+
+  struct _tagCOLORMATCHSETUPW;
+  struct _tagCOLORMATCHSETUPA;
+
+  typedef WINBOOL (WINAPI *PCMSCALLBACKW)(struct _tagCOLORMATCHSETUPW *,LPARAM);
+  typedef WINBOOL (WINAPI *PCMSCALLBACKA)(struct _tagCOLORMATCHSETUPA *,LPARAM);
+
+  typedef struct _tagCOLORMATCHSETUPW {
+    DWORD dwSize;
+    DWORD dwVersion;
+    DWORD dwFlags;
+    HWND hwndOwner;
+    PCWSTR pSourceName;
+    PCWSTR pDisplayName;
+    PCWSTR pPrinterName;
+    DWORD dwRenderIntent;
+    DWORD dwProofingIntent;
+    PWSTR pMonitorProfile;
+    DWORD ccMonitorProfile;
+    PWSTR pPrinterProfile;
+    DWORD ccPrinterProfile;
+    PWSTR pTargetProfile;
+    DWORD ccTargetProfile;
+    DLGPROC lpfnHook;
+    LPARAM lParam;
+    PCMSCALLBACKW lpfnApplyCallback;
+    LPARAM lParamApplyCallback;
+  } COLORMATCHSETUPW,*PCOLORMATCHSETUPW,*LPCOLORMATCHSETUPW;
+
+  typedef struct _tagCOLORMATCHSETUPA {
+    DWORD dwSize;
+    DWORD dwVersion;
+    DWORD dwFlags;
+    HWND hwndOwner;
+    PCSTR pSourceName;
+    PCSTR pDisplayName;
+    PCSTR pPrinterName;
+    DWORD dwRenderIntent;
+    DWORD dwProofingIntent;
+    PSTR pMonitorProfile;
+    DWORD ccMonitorProfile;
+    PSTR pPrinterProfile;
+    DWORD ccPrinterProfile;
+    PSTR pTargetProfile;
+    DWORD ccTargetProfile;
+    DLGPROC lpfnHook;
+    LPARAM lParam;
+    PCMSCALLBACKA lpfnApplyCallback;
+    LPARAM lParamApplyCallback;
+  } COLORMATCHSETUPA,*PCOLORMATCHSETUPA,*LPCOLORMATCHSETUPA;
+
+  HPROFILE WINAPI OpenColorProfileA(PPROFILE,DWORD,DWORD,DWORD);
+  HPROFILE WINAPI OpenColorProfileW(PPROFILE,DWORD,DWORD,DWORD);
+  WINBOOL WINAPI CloseColorProfile(HPROFILE);
+  WINBOOL WINAPI GetColorProfileFromHandle(HPROFILE,PBYTE,PDWORD);
+  WINBOOL WINAPI IsColorProfileValid(HPROFILE,PBOOL);
+  WINBOOL WINAPI CreateProfileFromLogColorSpaceA(LPLOGCOLORSPACEA,PBYTE*);
+  WINBOOL WINAPI CreateProfileFromLogColorSpaceW(LPLOGCOLORSPACEW,PBYTE*);
+  WINBOOL WINAPI GetCountColorProfileElements(HPROFILE,PDWORD);
+  WINBOOL WINAPI GetColorProfileHeader(HPROFILE,PPROFILEHEADER);
+  WINBOOL WINAPI GetColorProfileElementTag(HPROFILE,DWORD,PTAGTYPE);
+  WINBOOL WINAPI IsColorProfileTagPresent(HPROFILE,TAGTYPE,PBOOL);
+  WINBOOL WINAPI GetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID,PBOOL);
+  WINBOOL WINAPI SetColorProfileHeader(HPROFILE,PPROFILEHEADER);
+  WINBOOL WINAPI SetColorProfileElementSize(HPROFILE,TAGTYPE,DWORD);
+  WINBOOL WINAPI SetColorProfileElement(HPROFILE,TAGTYPE,DWORD,PDWORD,PVOID);
+  WINBOOL WINAPI SetColorProfileElementReference(HPROFILE,TAGTYPE,TAGTYPE);
+  WINBOOL WINAPI GetPS2ColorSpaceArray (HPROFILE,DWORD,DWORD,PBYTE,PDWORD,PBOOL);
+  WINBOOL WINAPI GetPS2ColorRenderingIntent(HPROFILE,DWORD,PBYTE,PDWORD);
+  WINBOOL WINAPI GetPS2ColorRenderingDictionary(HPROFILE,DWORD,PBYTE,PDWORD,PBOOL);
+  WINBOOL WINAPI GetNamedProfileInfo(HPROFILE,PNAMED_PROFILE_INFO);
+  WINBOOL WINAPI ConvertColorNameToIndex(HPROFILE,PCOLOR_NAME,PDWORD,DWORD);
+  WINBOOL WINAPI ConvertIndexToColorName(HPROFILE,PDWORD,PCOLOR_NAME,DWORD);
+  WINBOOL WINAPI CreateDeviceLinkProfile(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,PBYTE*,DWORD);
+  HTRANSFORM WINAPI CreateColorTransformA(LPLOGCOLORSPACEA,HPROFILE,HPROFILE,DWORD);
+  HTRANSFORM WINAPI CreateColorTransformW(LPLOGCOLORSPACEW,HPROFILE,HPROFILE,DWORD);
+  HTRANSFORM WINAPI CreateMultiProfileTransform(PHPROFILE,DWORD,PDWORD,DWORD,DWORD,DWORD);
+  WINBOOL WINAPI DeleteColorTransform(HTRANSFORM);
+  WINBOOL WINAPI TranslateBitmapBits(HTRANSFORM,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PVOID,BMFORMAT,DWORD,PBMCALLBACKFN,LPARAM);
+  WINBOOL WINAPI CheckBitmapBits(HTRANSFORM ,PVOID,BMFORMAT,DWORD,DWORD,DWORD,PBYTE,PBMCALLBACKFN,LPARAM);
+  WINBOOL WINAPI TranslateColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PCOLOR,COLORTYPE);
+  WINBOOL WINAPI CheckColors(HTRANSFORM,PCOLOR,DWORD,COLORTYPE,PBYTE);
+  DWORD WINAPI GetCMMInfo(HTRANSFORM,DWORD);
+  WINBOOL WINAPI RegisterCMMA(PCSTR,DWORD,PCSTR);
+  WINBOOL WINAPI RegisterCMMW(PCWSTR,DWORD,PCWSTR);
+  WINBOOL WINAPI UnregisterCMMA(PCSTR,DWORD);
+  WINBOOL WINAPI UnregisterCMMW(PCWSTR,DWORD);
+  WINBOOL WINAPI SelectCMM(DWORD);
+  WINBOOL WINAPI GetColorDirectoryA(PCSTR pMachineName,PSTR pBuffer,PDWORD pdwSize);
+  WINBOOL WINAPI GetColorDirectoryW(PCWSTR pMachineName,PWSTR pBuffer,PDWORD pdwSize);
+  WINBOOL WINAPI InstallColorProfileA(PCSTR,PCSTR);
+  WINBOOL WINAPI InstallColorProfileW(PCWSTR,PCWSTR);
+  WINBOOL WINAPI UninstallColorProfileA(PCSTR,PCSTR,WINBOOL);
+  WINBOOL WINAPI UninstallColorProfileW(PCWSTR,PCWSTR,WINBOOL);
+  WINBOOL WINAPI EnumColorProfilesA(PCSTR,PENUMTYPEA,PBYTE,PDWORD,PDWORD);
+  WINBOOL WINAPI EnumColorProfilesW(PCWSTR,PENUMTYPEW,PBYTE,PDWORD,PDWORD);
+  WINBOOL WINAPI SetStandardColorSpaceProfileA(PCSTR,DWORD,PCSTR);
+  WINBOOL WINAPI SetStandardColorSpaceProfileW(PCWSTR,DWORD,PCWSTR);
+  WINBOOL WINAPI GetStandardColorSpaceProfileA(PCSTR pMachineName,DWORD dwSCS,PSTR pBuffer,PDWORD pcbSize);
+  WINBOOL WINAPI GetStandardColorSpaceProfileW(PCWSTR pMachineName,DWORD dwSCS,PWSTR pBuffer,PDWORD pcbSize);
+  WINBOOL WINAPI AssociateColorProfileWithDeviceA(PCSTR,PCSTR,PCSTR);
+  WINBOOL WINAPI AssociateColorProfileWithDeviceW(PCWSTR,PCWSTR,PCWSTR);
+  WINBOOL WINAPI DisassociateColorProfileFromDeviceA(PCSTR,PCSTR,PCSTR);
+  WINBOOL WINAPI DisassociateColorProfileFromDeviceW(PCWSTR,PCWSTR,PCWSTR);
+  WINBOOL WINAPI SetupColorMatchingW(PCOLORMATCHSETUPW pcms);
+  WINBOOL WINAPI SetupColorMatchingA(PCOLORMATCHSETUPA pcms);
+
+#ifdef UNICODE
+#define ENUMTYPE ENUMTYPEW
+#define PENUMTYPE PENUMTYPEW
+#define COLORMATCHSETUP COLORMATCHSETUPW
+#define PCOLORMATCHSETUP PCOLORMATCHSETUPW
+#define LPCOLORMATCHSETUP LPCOLORMATCHSETUPW
+#define PCMSCALLBACK PCMSCALLBACKW
+#define CreateColorTransform CreateColorTransformW
+#define OpenColorProfile OpenColorProfileW
+#define CreateProfileFromLogColorSpace CreateProfileFromLogColorSpaceW
+#define RegisterCMM RegisterCMMW
+#define UnregisterCMM UnregisterCMMW
+#define GetColorDirectory GetColorDirectoryW
+#define InstallColorProfile InstallColorProfileW
+#define UninstallColorProfile UninstallColorProfileW
+#define AssociateColorProfileWithDevice AssociateColorProfileWithDeviceW
+#define DisassociateColorProfileFromDevice DisassociateColorProfileFromDeviceW
+#define EnumColorProfiles EnumColorProfilesW
+#define SetStandardColorSpaceProfile SetStandardColorSpaceProfileW
+#define GetStandardColorSpaceProfile GetStandardColorSpaceProfileW
+#define SetupColorMatching SetupColorMatchingW
+
+#else
+#define ENUMTYPE ENUMTYPEA
+#define PENUMTYPE PENUMTYPEA
+#define COLORMATCHSETUP COLORMATCHSETUPA
+#define PCOLORMATCHSETUP PCOLORMATCHSETUPA
+#define LPCOLORMATCHSETUP LPCOLORMATCHSETUPA
+#define PCMSCALLBACK PCMSCALLBACKA
+#define CreateColorTransform CreateColorTransformA
+#define OpenColorProfile OpenColorProfileA
+#define CreateProfileFromLogColorSpace CreateProfileFromLogColorSpaceA
+#define RegisterCMM RegisterCMMA
+#define UnregisterCMM UnregisterCMMA
+#define GetColorDirectory GetColorDirectoryA
+#define InstallColorProfile InstallColorProfileA
+#define UninstallColorProfile UninstallColorProfileA
+#define AssociateColorProfileWithDevice AssociateColorProfileWithDeviceA
+#define DisassociateColorProfileFromDevice DisassociateColorProfileFromDeviceA
+#define EnumColorProfiles EnumColorProfilesA
+#define SetStandardColorSpaceProfile SetStandardColorSpaceProfileA
+#define GetStandardColorSpaceProfile GetStandardColorSpaceProfileA
+#define SetupColorMatching SetupColorMatchingA
+#endif
+
+  typedef HANDLE HCMTRANSFORM;
+  typedef PVOID LPDEVCHARACTER;
+
+  WINBOOL WINAPI CMCheckColors(HCMTRANSFORM hcmTransform,LPCOLOR lpaInputColors,DWORD nColors,COLORTYPE ctInput,LPBYTE lpaResult);
+  WINBOOL WINAPI CMCheckColorsInGamut(HCMTRANSFORM hcmTransform,RGBTRIPLE *lpaRGBTriple,LPBYTE lpaResult,UINT nCount);
+  WINBOOL WINAPI CMCheckRGBs(HCMTRANSFORM hcmTransform,LPVOID lpSrcBits,BMFORMAT bmInput,DWORD dwWidth,DWORD dwHeight,DWORD dwStride,LPBYTE lpaResult,PBMCALLBACKFN pfnCallback,LPARAM ulCallbackData);
+  WINBOOL WINAPI CMConvertColorNameToIndex(HPROFILE hProfile,PCOLOR_NAME paColorName,PDWORD paIndex,DWORD dwCount);
+  WINBOOL WINAPI CMConvertIndexToColorName(HPROFILE hProfile,PDWORD paIndex,PCOLOR_NAME paColorName,DWORD dwCount);
+  WINBOOL WINAPI CMCreateDeviceLinkProfile(PHPROFILE pahProfiles,DWORD nProfiles,PDWORD padwIntents,DWORD nIntents,DWORD dwFlags,LPBYTE *lpProfileData);
+  HCMTRANSFORM WINAPI CMCreateMultiProfileTransform(PHPROFILE pahProfiles,DWORD nProfiles,PDWORD padwIntents,DWORD nIntents,DWORD dwFlags);
+  WINBOOL WINAPI CMCreateProfile(LPLOGCOLORSPACEA lpColorSpace,LPDEVCHARACTER *lpProfileData);
+  WINBOOL WINAPI CMCreateProfileW(LPLOGCOLORSPACEW lpColorSpace,LPDEVCHARACTER *lpProfileData);
+  HCMTRANSFORM WINAPI CMCreateTransform(LPLOGCOLORSPACEA lpColorSpace,LPDEVCHARACTER lpDevCharacter,LPDEVCHARACTER lpTargetDevCharacter);
+  HCMTRANSFORM WINAPI CMCreateTransformW(LPLOGCOLORSPACEW lpColorSpace,LPDEVCHARACTER lpDevCharacter,LPDEVCHARACTER lpTargetDevCharacter);
+  HCMTRANSFORM WINAPI CMCreateTransformExt(LPLOGCOLORSPACEA lpColorSpace,LPDEVCHARACTER lpDevCharacter,LPDEVCHARACTER lpTargetDevCharacter,DWORD dwFlags);
+  HCMTRANSFORM WINAPI CMCreateTransformExtW(LPLOGCOLORSPACEW lpColorSpace,LPDEVCHARACTER lpDevCharacter,LPDEVCHARACTER lpTargetDevCharacter,DWORD dwFlags);
+  WINBOOL WINAPI CMDeleteTransform(HCMTRANSFORM hcmTransform);
+  DWORD WINAPI CMGetInfo(DWORD dwInfo);
+  WINBOOL WINAPI CMGetNamedProfileInfo(HPROFILE hProfile,PNAMED_PROFILE_INFO pNamedProfileInfo);
+  WINBOOL WINAPI CMGetPS2ColorRenderingDictionary(HPROFILE hProfile,DWORD dwIntent,LPBYTE lpBuffer,LPDWORD lpcbSize,LPBOOL lpbBinary);
+  WINBOOL WINAPI CMGetPS2ColorRenderingIntent(HPROFILE hProfile,DWORD dwIntent,LPBYTE lpBuffer,LPDWORD lpcbSize);
+  WINBOOL WINAPI CMGetPS2ColorSpaceArray(HPROFILE hProfile,DWORD dwIntent,DWORD dwCSAType,LPBYTE lpBuffer,LPDWORD lpcbSize,LPBOOL lpbBinary);
+  WINBOOL WINAPI CMIsProfileValid(HPROFILE hProfile,LPBOOL lpbValid);
+  WINBOOL WINAPI CMTranslateColors(HCMTRANSFORM hcmTransform,LPCOLOR lpaInputColors,DWORD nColors,COLORTYPE ctInput,LPCOLOR lpaOutputColors,COLORTYPE ctOutput);
+  WINBOOL WINAPI CMTranslateRGB(HCMTRANSFORM hcmTransform,COLORREF ColorRef,LPCOLORREF lpColorRef,DWORD dwFlags);
+  WINBOOL WINAPI CMTranslateRGBs(HCMTRANSFORM hcmTransform,LPVOID lpSrcBits,BMFORMAT bmInput,DWORD dwWidth,DWORD dwHeight,DWORD dwStride,LPVOID lpDestBits,BMFORMAT bmOutput,DWORD dwTranslateDirection);
+  WINBOOL WINAPI CMTranslateRGBsExt(HCMTRANSFORM hcmTransform,LPVOID lpSrcBits,BMFORMAT bmInput,DWORD dwWidth,DWORD dwHeight,DWORD dwInputStride,LPVOID lpDestBits,BMFORMAT bmOutput,DWORD dwOutputStride,LPBMCALLBACKFN lpfnCallback,LPARAM ulCallbackData);
+
+#ifdef __cplusplus
+}
+#endif
+#endif