Skip to main content
Skip table of contents

(v13) How the alternate CMM will be used

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

When the RIP processes an ICC transform and discovers that it should be handled by an alternate CMM, the RIP will make calls into the CMM Interface to satisfy the required color conversions. The calls will follow the pattern in this pseudo-code calling CMM API functions:

for (all profiles in the transform) open_profile()


for (all uncached color conversions) invoke_transform()


for (all profiles in the transform)


The precise timing of the calls may vary widely due to caching strategies employed by the RIP.

The open_transform2 function will be passed all relevant information for creating the transform, the profiles, rendering intent, BPC, a flag indicating a transform between transparency groups, and object-based info.

For performance reasons, if a color is in the RIP’s color cache, invoke_transform will not be called. The color cache will be cleared at the end of each page. It is, therefore, important that invoke_transform always returns the same color for the same input color within the same page. Back-channel information must not be used within any CMM API function if it might cause invoke_transform to break this rule.

The open_profile call has access to the whole of the ICC profile, and is free to parse the header, the tag list, or any tag, before accepting the profile. Similarly, the open_transform2 call knows the profiles and is also free to ensure that the alternate CMM can handle them. A failure to return in either of these functions will cause the RIP to retry the ICC transform using the RIP’s built-in CMM.

While an ICC alternate CMM has full access to the profiles involved in an ICC transform, it is not required to use these profiles. Special applications may choose to replace or ignore them.

Note: The open_transform2 function has been used in the pseudo-code. It has replaced the deprecated open_transform function.

JavaScript errors detected

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

If this problem persists, please contact our support.