Windows Color System

Overview of the Windows Color System technology.

To develop Windows Color System, you need these headers:

For programming guidance for this technology, see:

Enumerations

 
BMFORMAT

The values of the BMFORMAT enumerated type are used by several WCS functions to indicate the format that particular bitmaps are in.
COLORDATATYPE

Used by WCS functions to indicate the data type of vector content.
COLORPROFILESUBTYPE

Specifies the subtype of the color profile.
COLORPROFILETYPE

Specifies the type of color profile.
COLORTYPE

The values of the COLORTYPE enumeration are used by several WCS functions. Variables of type COLOR are defined in the color spaces enumerated by the COLORTYPE enumeration.
WCS_PROFILE_MANAGEMENT_SCOPE

Specifies the scope of a profile management operation, such as associating a profile with a device.

Functions

 
AssociateColorProfileWithDeviceA

Associates a specified color profile with a specified device. (ANSI)
AssociateColorProfileWithDeviceW

Associates a specified color profile with a specified device. (Unicode)
CheckBitmapBits

Checks whether the pixels in a specified bitmap lie within the output gamut of a specified transform.
CheckColors

Determines whether the colors in an array lie within the output gamut of a specified transform.
CheckColorsInGamut

The CheckColorsInGamut function determines whether a specified set of RGB triples lies in the output gamut of a specified device. The RGB triples are interpreted in the input logical color space.
CloseColorProfile

Closes an open profile handle.
CMCheckColors

Determines whether given colors lie within the output gamut of a specified transform.
CMCheckColorsInGamut

Determines whether specified RGB triples lie in the output gamut of a specified transform.
CMCheckRGBs

Checks bitmap colors against an output gamut.
CMConvertColorNameToIndex

Converts color names in a named color space to index numbers in a color profile.
CMConvertIndexToColorName

Transforms indices in a color space to an array of names in a named color space. (CMConvertIndexToColorName)
CMCreateDeviceLinkProfile

Creates a device link profile in the format specified by the International Color Consortium in its ICC Profile Format Specification.
CMCreateMultiProfileTransform

Accepts an array of profiles or a single device link profile and creates a color transform. This transform is a mapping from the color space specified by the first profile to that of the second profile and so on to the last one.
CMCreateProfile

Creates a display color profile from a LOGCOLORSPACEA structure.
CMCreateProfileW

Creates a display color profile from a LOGCOLORSPACEW structure.
CMCreateTransform

Deprecated. There is no replacement API because this one was no longer being used. Developers of alternate CMM modules are not required to implement it. (CMCreateTransform)
CMCreateTransformExt

Creates a color transform that maps from an input LOGCOLORSPACEA to an optional target space and then to an output device, using a set of flags that define how the transform should be created.
CMCreateTransformExtW

Creates a color transform that maps from an input LOGCOLORSPACEW to an optional target space and then to an output device, using a set of flags that define how the transform should be created.
CMCreateTransformW

Deprecated. There is no replacement API because this one was no longer being used. Developers of alternate CMM modules are not required to implement it. (CMCreateTransformW)
CMDeleteTransform

Deletes a specified color transform, and frees any memory associated with it.
CMGetInfo

Retrieves various information about the color management module (CMM).
CMGetNamedProfileInfo

Retrieves information about the specified named color profile.
CMGetPS2ColorRenderingDictionary

CMGetPS2ColorRenderingDictionary and the additional parameters associated with it are to be determined.
CMGetPS2ColorRenderingIntent

Retrieves the PostScript Level 2 color rendering intent from a profile.
CMGetPS2ColorSpaceArray

CMGetPS2ColorSpaceArray and the parameters, returns, and remarks associated with it are to be determined.
CMIsProfileValid

Reports whether the given profile is a valid ICC profile that can be used for color management.
CMTranslateColors

Translates an array of colors from a source color space to a destination color space using a color transform.
CMTranslateRGB

Translates an application-supplied RGBQuad into the device color space.
CMTranslateRGBs

Translates a bitmap from one color space to another using a color transform.
CMTranslateRGBsExt

Translates a bitmap from one defined format into a different defined format and calls a callback function periodically, if one is specified, to report progress and permit the calling application to terminate the translation.
CMYK

The CMYK macro creates a CMYK color value by combining the specified cyan, magenta, yellow, and black values.
ColorCorrectPalette

The ColorCorrectPalette function corrects the entries of a palette using the WCS 1.0 parameters in the specified device context.
ColorimetricToDeviceColors

Returns the appropriate XYZ colors in response to the specified number of colors, channels, device colors and the proprietary plug-in algorithms. (IDeviceModelPlugIn.ColorimetricToDeviceColors)
ColorimetricToDeviceColorsWithBlack

Returns the appropriate device colors in response to the incoming number of colors, channels, black information, Commission Internationale l'Eclairge XYZ (CIEXYZ) colors and the proprietary plug-in algorithms.
ColorMatchToTarget

The ColorMatchToTarget function enables you to preview colors as they would appear on the target device.
ColorProfileAddDisplayAssociation

ColorProfileAddDisplayAssociation associates an installed color profile with a specified display in the given scope.
ColorProfileGetDisplayDefault

ColorProfileGetDisplayDefault gets the default color profile for a given display in the specified scope.
ColorProfileGetDisplayList

ColorProfileGetDisplayList retrieves the list of profiles associated with a given display in the specified scope.
ColorProfileGetDisplayUserScope

ColorProfileGetDisplayUserScope gets the currently selected color profile scope of the provided display - either user or system.
ColorProfileRemoveDisplayAssociation

ColorProfileRemoveDisplayAssociation disassociates an installed color profile from a specified display in the given scope.
ColorProfileSetDisplayDefaultAssociation

ColorProfileSetDisplayDefaultAssociation sets an installed color profile as the default profile for a specified display in the given scope.
ConvertColorNameToIndex

Converts color names in a named color space to index numbers in an International Color Consortium (ICC) color profile.
ConvertIndexToColorName

Transforms indices in a color space to an array of names in a named color space. (ConvertIndexToColorName)
CreateColorSpaceA

The CreateColorSpace function creates a logical color space. (ANSI)
CreateColorSpaceW

The CreateColorSpace function creates a logical color space. (Unicode)
CreateColorTransformA

Creates a color transform that applications can use to perform color management. (ANSI)
CreateColorTransformW

Creates a color transform that applications can use to perform color management. (Unicode)
CreateDeviceLinkProfile

Creates an International Color Consortium (ICC) device link profile from a set of color profiles, using the specified intents.
CreateMultiProfileTransform

Accepts an array of profiles or a single device link profile and creates a color transform that applications can use to perform color mapping.
CreateProfileFromLogColorSpaceA

Converts a logical color space to a device profile. (ANSI)
CreateProfileFromLogColorSpaceW

Converts a logical color space to a device profile. (Unicode)
DeleteColorSpace

The DeleteColorSpace function removes and destroys a specified color space.
DeleteColorTransform

Deletes a given color transform.
DeviceToColorimetricColors

Returns the appropriate XYZ colors in response to the specified number of colors, channels, device colors and the proprietary plug-in algorithms. (IDeviceModelPlugIn.DeviceToColorimetricColors)
DisassociateColorProfileFromDeviceA

Disassociates a specified color profile with a specified device on a specified computer. (ANSI)
DisassociateColorProfileFromDeviceW

Disassociates a specified color profile with a specified device on a specified computer. (Unicode)
EnumColorProfilesA

Enumerates all the profiles satisfying the given enumeration criteria. (ANSI)
EnumColorProfilesW

Enumerates all the profiles satisfying the given enumeration criteria. (Unicode)
EnumICMProfilesA

The EnumICMProfiles function enumerates the different output color profiles that the system supports for a given device context. (ANSI)
EnumICMProfilesW

The EnumICMProfiles function enumerates the different output color profiles that the system supports for a given device context. (Unicode)
GetCMMInfo

Retrieves various information about the color management module (CMM) that created the specified color transform.
GetColorDirectoryA

Retrieves the path of the Windows COLOR directory on a specified machine. (ANSI)
GetColorDirectoryW

Retrieves the path of the Windows COLOR directory on a specified machine. (Unicode)
GetColorProfileElement

Copies data from a specified tagged profile element of a specified color profile into a buffer.
GetColorProfileElementTag

Retrieves the tag name specified by dwIndex in the tag table of a given International Color Consortium (ICC) color profile, where dwIndex is a one-based index into that table.
GetColorProfileFromHandle

Given a handle to an open color profile, the GetColorProfileFromHandle function copies the contents of the profile into a buffer supplied by the application. If the handle is a Windows Color System (WCS) handle, then the DMP is returned and the CAMP and GMMP associated with the HPROFILE are ignored.
GetColorProfileHeader

Retrieves or derives ICC header structure from either ICC color profile or WCS XML profile. Drivers and applications should assume returning TRUE only indicates that a properly structured header is returned. Each tag will still need to be validated independently using either legacy ICM2 APIs or XML schema APIs.
GetColorSpace

The GetColorSpace function retrieves the handle to the input color space from a specified device context.
GetCountColorProfileElements

Retrieves the number of tagged elements in a given color profile.
GetCValue

The GetCValue macro retrieves the cyan color value from a CMYK color value.
GetDeviceGammaRamp

The GetDeviceGammaRamp function gets the gamma ramp on direct color display boards having drivers that support downloadable gamma ramps in hardware.
GetGamutBoundaryMesh

Returns the triangular mesh from the plug-in. This function is used to compute the GamutBoundaryDescription.
GetGamutBoundaryMeshSize

Returns the required data structure sizes for the GetGamutBoundaryMesh function.
GetICMProfileA

The GetICMProfile function retrieves the file name of the current output color profile for a specified device context. (ANSI)
GetICMProfileW

The GetICMProfile function retrieves the file name of the current output color profile for a specified device context. (Unicode)
GetKValue

The GetKValue macro retrieves the black color value from a CMYK color value.
GetLogColorSpaceA

The GetLogColorSpace function retrieves the color space definition identified by a specified handle. (ANSI)
GetLogColorSpaceW

The GetLogColorSpace function retrieves the color space definition identified by a specified handle. (Unicode)
GetMValue

The GetMValue macro retrieves the magenta color value from a CMYK color value.
GetNamedProfileInfo

Retrieves information about the International Color Consortium (ICC) named color profile that is specified in the first parameter.
GetNeutralAxis

The IDeviceModelPlugIn::GetNeutralAxis return the XYZ colorimetry of sample points along the device's neutral axis.
GetNeutralAxisSize

The IDeviceModelPlugIn::GetNeutralAxisSize function returns the number of data points along the neutral axis that are returned by the GetNeutralAxis function.
GetNumChannels

Returns the number of device channels in the parameter pNumChannels.
GetPrimarySamples

Returns the measurement color for the primary sample.
GetPS2ColorRenderingDictionary

Retrieves the PostScript Level 2 color rendering dictionary from the specified ICC color profile.
GetPS2ColorRenderingIntent

Retrieves the PostScript Level 2 color rendering intent from an ICC color profile.
GetPS2ColorSpaceArray

Retrieves the PostScript Level 2 color space array from an ICC color profile.
GetStandardColorSpaceProfileA

Retrieves the color profile registered for the specified standard color space. (ANSI)
GetStandardColorSpaceProfileW

Retrieves the color profile registered for the specified standard color space. (Unicode)
GetYValue

The GetYValue macro retrieves the yellow color value from a CMYK color value.
ICMENUMPROCA

The EnumICMProfilesProcCallback callback is an application-defined callback function that processes color profile data from EnumICMProfiles . (ANSI)
ICMENUMPROCW

The EnumICMProfilesProcCallback callback is an application-defined callback function that processes color profile data from EnumICMProfiles . (Unicode)
Initialize

Takes a pointer to a Stream that contains the whole device model plug-in as input, and initializes any internal parameters required by the plug-in.
Initialize

Initializes a gamut map model profile (GMMP) by using the specified source and destination gamut boundary descriptions and optional source and destination device model plug-ins.
InstallColorProfileA

Installs a given profile for use on a specified machine. The profile is also copied to the COLOR directory. (ANSI)
InstallColorProfileW

Installs a given profile for use on a specified machine. The profile is also copied to the COLOR directory. (Unicode)
IsColorProfileTagPresent

Reports whether a specified International Color Consortium (ICC) tag is present in the specified color profile.
IsColorProfileValid

Allows you to determine whether the specified profile is a valid International Color Consortium (ICC) profile, or a valid Windows Color System (WCS) profile handle that can be used for color management.
OpenColorProfileA

Creates a handle to a specified color profile. The handle can then be used in other profile management functions. (ANSI)
OpenColorProfileW

Creates a handle to a specified color profile. The handle can then be used in other profile management functions. (Unicode)
PBMCALLBACKFN

TBD (PBMCALLBACKFN)
PCMSCALLBACKA

*PCMSCALLBACKA* (or ApplyCallbackFunction) is a callback function that you implement that updates the WCS configuration data while the dialog box displayed by the SetupColorMatchingW function is executing.
PCMSCALLBACKW

*PCMSCALLBACKW* (or ApplyCallbackFunction) is a callback function that you implement that updates the WCS configuration data while the dialog box displayed by the SetupColorMatchingW function is executing.
RegisterCMMA

Associates a specified identification value with the specified color management module dynamic link library (CMM DLL). When this ID appears in a color profile, Windows can then locate the corresponding CMM so as to create a transform. (ANSI)
RegisterCMMW

Associates a specified identification value with the specified color management module dynamic link library (CMM DLL). When this ID appears in a color profile, Windows can then locate the corresponding CMM so as to create a transform. (Unicode)
SelectCMM

Allows you to select the preferred color management module (CMM) to use.
SetColorProfileElement

Sets the element data for a tagged profile element in an ICC color profile.
SetColorProfileElementReference

Creates in a specified ICC color profile a new tag that references the same data as an existing tag.
SetColorProfileElementSize

Sets the size of a tagged element in an ICC color profile.
SetColorProfileHeader

Sets the header data in a specified ICC color profile.
SetColorSpace

The SetColorSpace function defines the input color space for a given device context.
SetDeviceGammaRamp

The SetDeviceGammaRamp function sets the gamma ramp on direct color display boards having drivers that support downloadable gamma ramps in hardware.
SetICMMode

The SetICMMode function causes Image Color Management to be enabled, disabled, or queried on a given device context (DC).
SetICMProfileA

The SetICMProfile function sets a specified color profile as the output profile for a specified device context (DC). (ANSI)
SetICMProfileW

The SetICMProfile function sets a specified color profile as the output profile for a specified device context (DC). (Unicode)
SetStandardColorSpaceProfileA

Registers a specified profile for a given standard color space. The profile can be queried using GetStandardColorSpaceProfileW. (ANSI)
SetStandardColorSpaceProfileW

Registers a specified profile for a given standard color space. The profile can be queried using GetStandardColorSpaceProfileW. (Unicode)
SetTransformDeviceModelInfo

Provides the plug-in with parameters to determine where in the transform sequence the specific plug-in occurs.
SetupColorMatchingA

Creates a Color Management dialog box that lets the user choose whether to enable color management and, if so, provides control over the color profiles used and over the rendering intent. (ANSI)
SetupColorMatchingW

Creates a Color Management dialog box that lets the user choose whether to enable color management and, if so, provides control over the color profiles used and over the rendering intent. (Unicode)
SourceToDestinationAppearanceColors

Returns the appropriate gamut-mapped appearance colors in response to the specified number of colors and the CIEJCh colors.
TranslateBitmapBits

Translates the colors of a bitmap having a defined format so as to produce another bitmap in a requested format.
TranslateColors

Translates an array of colors from the source color space to the destination color space as defined by a color transform.
UninstallColorProfileA

Removes a specified color profile from a specified computer. Associated files are optionally deleted from the system. (ANSI)
UninstallColorProfileW

Removes a specified color profile from a specified computer. Associated files are optionally deleted from the system. (Unicode)
UnregisterCMMA

Dissociates a specified ID value from a given color management module dynamic-link library (CMM DLL). (ANSI)
UnregisterCMMW

Dissociates a specified ID value from a given color management module dynamic-link library (CMM DLL). (Unicode)
UpdateICMRegKeyA

The UpdateICMRegKey function manages color profiles and Color Management Modules in the system. (ANSI)
UpdateICMRegKeyW

The UpdateICMRegKey function manages color profiles and Color Management Modules in the system. (Unicode)
WcsAssociateColorProfileWithDevice

WcsAssociateColorProfileWithDevice associates a specified WCS color profile with a specified device.
WcsCheckColors

Determines whether the colors in an array are within the output gamut of a specified WCS color transform.
WcsCreateIccProfile

Converts a WCS profile into an International Color Consortium (ICC) profile.
WcsDisassociateColorProfileFromDevice

Disassociates a specified WCS color profile from a specified device on a computer.
WcsEnumColorProfiles

Enumerates all color profiles that satisfy the enumeration criteria in the specified profile management scope.
WcsEnumColorProfilesSize

Returns the size, in bytes, of the buffer that is required by the WcsEnumColorProfiles function to enumerate color profiles.
WcsGetCalibrationManagementState

Determines whether system management of the display calibration state is enabled.
WcsGetDefaultColorProfile

Retrieves the default color profile for a device, or for a device-independent default if the device is not specified.
WcsGetDefaultColorProfileSize

Returns the size, in bytes, of the default color profile name (including the NULL terminator), for a device.
WcsGetDefaultRenderingIntent

Retrieves the default rendering intent in the specified profile management scope.
WcsGetUsePerUserProfiles

Determines whether the user chose to use a per-user profile association list for the specified device.
WcsOpenColorProfileA

Creates a handle to a specified color profile. (ANSI)
WcsOpenColorProfileW

Creates a handle to a specified color profile. (Unicode)
WcsSetCalibrationManagementState

Enables or disables system management of the display calibration state.
WcsSetDefaultColorProfile

Sets the default color profile name for the specified profile type in the specified profile management scope.
WcsSetDefaultRenderingIntent

Sets the default rendering intent in the specified profile management scope.
WcsSetUsePerUserProfiles

Enables a user to specify whether or not to use a per-user profile association list for the specified device.
WcsTranslateColors

Translates an array of colors from the source color space to the destination color space as defined by a color transform.

Interfaces

 
IDeviceModelPlugIn

Describes the methods that are defined for the IDeviceModelPlugIn Component Object Model (COM) interface.
IGamutMapModelPlugIn

Describes the methods that are defined for the IGamutMapModelPlugIn Component Object Model (COM) interface.

Structures

 
BlackInformation

Contains information for device models that have a black color channel.
CIEXYZ

The CIEXYZ structure contains the x,y, and z coordinates of a specific color in a specified color space.
CIEXYZTRIPLE

The CIEXYZTRIPLE structure contains the x,y, and z coordinates of the three colors that correspond to the red, green, and blue endpoints for a specified logical color space.
CMYKCOLOR

Description of the CMYKCOLOR structure.
COLOR

Description of the COLOR union.
COLORMATCHSETUPA

The COLORMATCHSETUP structure contains information that the SetupColorMatchingW function uses to initialize the ColorManagement dialog box. (ANSI)
COLORMATCHSETUPW

The COLORMATCHSETUP structure contains information that the SetupColorMatchingW function uses to initialize the ColorManagement dialog box. (Unicode)
ENUMTYPEA

Contains information that defines the profile enumeration constraints. (ANSI)
ENUMTYPEW

Contains information that defines the profile enumeration constraints. (Unicode)
GamutBoundaryDescription

Defines a gamut boundary.
GamutShell

Contains information that defines a gamut shell, which is represented by a list of indexed triangles. The vertex buffer contains the vertices data.
GamutShellTriangle

Contains three vertex indices for accessing a vertex buffer.
GENERIC3CHANNEL

TBD (GENERIC3CHANNEL)
GRAYCOLOR

Description of the GRAYCOLOR structure.
HiFiCOLOR

Description of the HiFiCOLOR structure.
JabColorF

JabColorF (wcsplugin.h) is a structure.
JChColorF

JChColorF (wcsplugin.h) is a structure.
LabCOLOR

TBD (LabCOLOR)
LOGCOLORSPACEA

The LOGCOLORSPACE structure contains information that defines a logical color space. (ANSI)
LOGCOLORSPACEW

The LOGCOLORSPACE structure contains information that defines a logical color space. (Unicode)
NAMED_PROFILE_INFO

The NAMED_PROFILE_INFO structure is used to store information about a named color profile.
NAMEDCOLOR

TBD (NAMEDCOLOR)
PrimaryJabColors

This structure contains eight primary colors in Jab coordinates.
PrimaryXYZColors

This structure contains eight primary colors in XYZ coordinates.
PROFILE

Contains information that defines a color profile.
PROFILEHEADER

Contains information that describes the contents of a device profile file. This header occurs at the beginning of a device profile file.
RGBCOLOR

TBD (RGBCOLOR)
XYZCOLOR

TBD (XYZCOLOR)
XYZColorF

XYZColorF (wcsplugin.h) is a structure.
YxyCOLOR

TBD (YxyCOLOR)