Important: The information in this document is obsolete and should not be used for new development.
Chapter 5 - Developing Color Management Modules
This chapter describes how to create a component called a color management module (CMM) to use with the ColorSync Manager instead of or in conjunction with the Apple-supplied default CMM. At a minimum, a CMM created for use with the ColorSync Manager must be able to match colors across color spaces belonging to different base families and check colors expressed in the color gamut of one device against the color gamut of another device.In addition to the minimum set of requests a CMM must service, a CMM can also implement support for other requests a ColorSync-supportive application or device driver might make. Among the optional services a CMM might provide are verifying if a particular profile contains the base set of required elements for a profile of its type and directing the process of converting profile data embedded in a graphics file to data in an external profile file accessed through a profile reference and vice versa. A CMM can also provide services for PostScript
\x89 printers by obtaining or deriving from a profile specific data required by PostScript printers for color-matching processes and returning the data in a format that can be sent to the PostScript printer. You should read this chapter if you are a third-party developer who creates CMMs for use with version 2.x of the ColorSync Manager.
This chapter gives a brief overview of what a CMM is and the role a CMM plays in the ColorSync Manager color management system (CMS). Before reading this chapter, you should read "Introduction to the ColorSync Manager" (page 3-3) for a more complete conceptual explanation of how a CMM fits within the ColorSync Manager CMS.
This chapter provides a basic structure you can follow in creating a CMM. It provides a high-level discussion of the required and optional ColorSync Manager request codes your CMM might be called to handle, and also describes the Component Manager required request codes to which every component must respond.
For complete details on components and their structure, see the chapter "Component Manager" in Inside Macintosh: More Macintosh Toolbox.
Chapter Contents
- About Color Management Modules
- Creating a Color Management Module
- Creating a Component Resource for a CMM
- How Your CMM Is Called by the Component Manager
- Required Component Manager Request Codes
- Required ColorSync Manager Request Codes
- Optional ColorSync Manager Request Codes
- Handling Request Codes
- Responding to Required Component Manager Request Codes
- Establishing the Environment for a New Component Instance
- Releasing Private Storage and Closing the Component Instance
- Determining Whether Your CMM Supports a Request
- Providing Your CMM Version Number
- Responding to ColorSync Manager Required Request Codes
- Initializing the Current Component Instance for a Session Involving Two Profiles
- Matching a List of Colors to the Destination Profile's Color Space
- Checking a List of Colors
- Responding to ColorSync Manager Optional Request Codes
- Validating That a Profile Meets the Base Content Requirements
- Matching the Colors of a Bitmap
- Checking the Colors of a Bitmap
- Matching the Colors of a Pixel Map Image
- Checking the Colors of a Pixel Map Image
- Initializing the Component Instance for a Session Using Concatenated Profiles
- Creating a Device-Linked Profile and Opening a Reference to It
- Obtaining PostScript-Related Data From a Profile
- Obtaining the Size of the Color Rendering Dictionary for PostScript Printers
- Flattening a Profile for Embedding in a Graphics File
- Unflattening a Profile
- Supplying Named Color Space Information
- Summary of the Color Management Modules