The KCMS architecture provides a way to encapsulate specific color management functions in color profiles. Figure 1-1 illustrates the architecture of the KCMS environment. Each segment filled with gray is supplied by Sun. These are the default components. The other segments, filled with white, are components that you can add to your development environment.
Each component is discussed further in the following sections.
Sun supplies the XILTM imaging library. KCMS is integrated into this library.
At the top of the hierarchy are applications. Using the KCMS "C" API to the KCMS framework, you can write an application that:
Uses color data
Prints
Is an imaging tool
Uses PhotoCD
Applications connect color profiles to provide a variety of new forms, thus minimizing the task of predefining all possibilities. With the 14 available KCMS API functions, your application can load, create, and update profiles, connect and optimize profiles, and then process data through the result. (For a summary description of each KCMS API function, see "KCMS API Functional Overview".)
The KCMS "C" API provides functions for your application to communicate with the KCMS framework and color management modules (CMMs). The API is a portable programming interface that allows applications to manipulate color profiles and to use them to correct color data.
The SDK API is sometimes referred to as the "C" API to distinguish it from the DDK "C++" framework interface used to develop CMMs.
The "C" API consists of:
A set of callable functions
Header files
A shared library and dynamically loaded code modules required for the Solaris environment
The KCMS framework loads and saves profiles, gets and sets KCMS profile attributes, and directs requests for color management to the right CMM at the right time. It is particularly vital in calls that involve more than one CMM. The KCMS framework also maintains attributes and executes certain default behaviors and functionality.
Color management is performed by the framework and the CMMs. You can concentrate on dealing with profiles because the KCMS framework makes color management details transparent to the caller.
Profiles are files that tell the KCMS framework how to convert input color data to the appropriate color-corrected output color data. They are the focus of your programming efforts. For example, your application might load profiles, read profile attributes, connect profiles, optimize profiles, and apply profiles to color data.
See Chapter 2, Profiles for detailed information.
Table 1-1 lists some of the imaging and graphics libraries available to use with the KCMS framework.
Table 1-1 Optional Imaging and Graphics Libraries
Library |
Description |
---|---|
PEXlib |
PHIGS Extensions to the X Library |
XIElib |
X Imaging Extension Library |
XIL |
Solaris Foundation Imaging Library |
Xlib |
X11 Window System Library |
You can mix KCMS calls with any calls from these libraries. If the library you choose supports color management, your application may not need to make direct calls to the KCMS framework. The library may already make those direct KCMS calls. The XIL Imaging Library, for example, supports color management and includes integrated KCMS functions.
Refer to the documentation for the imaging and graphics library of your choice to determine if that library already supports color management.
A color management module (CMM) is the component that ultimately does the color correction. Different CMMs use different techniques for evaluating color data, which can result in differences in quality, profile size, and speed of color manipulation.
Because CMMs are loaded at run-time and CMM interfaces are extendable, an application that uses the "C" API can take advantage of the improvements in existing technologies and the latest color-correction technology, along with hardware acceleration. To do so, you just change or adding new CMMs, profiles, or both. You can do this without changing the code or rebuilding your application.
The default CMM is Kodak-supplied. You can write your own CMM (third-party CMM) or override portions of the default CMM. To write your own CMM you must purchase the Solaris Device Developer's Kit (DDK) that includes the following KCMS CMM manuals: