Skip to main content
Skip table of contents

(v13) Custom color space management

This page applies to Harlequin v13.1r0 and later; both Harlequin Core and Harlequin MultiRIP

Independent of ICC profiles, the alternate CMM can declare custom color spaces that perform proprietary conversions. Once they are declared to the RIP, they can be used in the same way as other PostScript language color spaces when configuring the RIP.


Declares a custom color space to the RIP which is returned in a structure.

                      sw_cmm_custom_colorspace *(RIPCALL *declare_custom_colorspace)
                                          (sw_cmm_instance *instance, uint32 index);

The alternate CMM is expected to maintain an array of sw_cmm_custom_colorspace structures. The RIP will query the alternate CMM for this list, obtaining a pointer to one structure within the array with each call.


This is a zero-based index in the array of structures maintained by the alternate CMM. The return value should be a pointer to the index element within the array. If index is out of the range of the array, then NULL should be returned.

The declare_custom_colorspace() method returns a pointer to a custom colorspace structure.

The fields in the custom colorspace definitions are:


This is a zero-terminated string within the alternate CMMs memory that identifies the custom color space. This same string is used in the PostScript language color space in the RIP configuration, see (v13) PostScript language configuration of custom color spaces


This is the number of input channels. This is not directly used by the RIP, but it must correspond to the input color space used in the PostScript language configuration. See Chapter 17 of [HQNEXTN].

num_output_channels in custom color spaces

This is the number of output channels. This is not directly used by the RIP, but it must correspond to the output color space used in the PostScript language configuration. See Chapter 17 of [HQNEXTN].

The RIP may call declare_custom_colorspace at unpredictable times and for any value of index.

Alternate CMMs that do not support custom color spaces must return NULL for all values of index.

open_custom_colorspace in custom color spaces

As with open_profile() above, open_custom_colorspace() returns a sw_cmm_result , and stores a CMM profile handle in the output handle parameter.

NOTE:  close_profile() will be called for custom colorspace profiles as well as ICC profiles.

                                    sw_cmm_result (RIPCALL *open_custom_colorspace) (sw_cmm_instance *instance,
                                      uint32 index, sw_cmm_profile *handle);

The RIP does not interpret the profile handle returned by this call. The profile handle is passed back to the alternate CMM implementation as a means of identifying the custom colorspace when creating a transform, or closing the profile.


An alternate CMM instance which previously declared support for the custom colorspace through a call to declare_custom_colorspace().


A zero-based index used to identify the custom colorspace defined by the alternate CMM instance.


A pointer in which a CMM profile handle is stored. This handle will be used to refer to the profile by close_profile() and open_transform ().

It returns SW_CMM_SUCCESS if the profile was successfully opened, in which case a nonNULL profile pointer should have been stored in handle. If the profile could not be opened, one of the sw_cmm_result error codes is returned. If a valid profile handle is returned, the close_profile() method will be called to destroy the profile later.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.