KCMS Application Developer's Guide

Chapter 1 Introduction

In This Chapter

This chapter introduces you to the Kodak Color Management System (KCMS) product. It describes each of the components of the KCMS architecture and tells you about programming requirements and hints when writing your KCMS application.

KCMS Architecture

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.

Note -

Sun supplies the XILTM imaging library. KCMS is integrated into this library.

Figure 1-1 KCMS Architecture



At the top of the hierarchy are applications. Using the KCMS "C" API to the KCMS framework, you can write an application that:

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.

Note -

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:

KCMS Framework

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.

Graphics and Imaging Libraries

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




PHIGS Extensions to the X Library 


X Imaging Extension Library 


Solaris Foundation Imaging Library 


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.

Color Management Modules

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:

KCMS File System

The software product's directory structure indicates the types and locations of files. Table 1-2shows you the top-level directories.

Table 1-2 KCMS Directories






Configuration and networking binaries 


KCMS demonstration programs 


Sample TIFF images 


KCMS user white papers 


libkcs.so; main KCMS library


CMM libraries 


Dynamically loadable modules and third-party CMMs 


Device profiles provided with KCMS 


Various library header files 


KCMS command/utility manual pages