The KCMS CMM Developer's Guide describes how to create a Kodak Color Management System (KCMSTM) color management module (CMM). It provides information on how to use the KCMS foundation library, which is a graphics porting interface (GPI) implemented in C++. These C++ interfaces link the device-independent layer of the KCMS library with the CMM and enable the flow of data from the application to the CMM.
Use this manual with the KCMS CMM Reference Manual, which provides detailed information on all C++ classes in the KCMS foundation library.
Use this guide if you are a C++ programmer interested in:
Writing your own color management module (CMM)
Creating your own profile format
Adding attributes or tags to the ICC profile format
Overriding various class methods
Check all of the following for any KCMS-specific or system release-specific information that you might need:
You should be familiar with the Kodak Color Management System (KCMS) API, which is part of the Software Developer's Kit (SDK). See the following manual:
You should also have an understanding of C++ and SolarisTM dynamic loading technology. Solaris dynamic loading is discussed in the Linker and Libraries Guideand in the following manual pages:
ld()(1)
dlopen(3)
dlclose()(3)
dlerror()(3)
dlsym()(3)
A basic understanding of color science is also assumed. Color science references are included in the Bibliography of the KCMS Application Developer's Guide.
See the on-line SUNWrdm packages for information on bugs and issues, engineering news, and patches. For Solaris installation bugs and for late-breaking bugs, news, and patch information, see the Solaris 7 (SPARC Platform Edition) Installation Library and the Solaris 7 (Intel Platform Edition) Installation Library manuals.
For SPARC systems, consult the updates your hardware manufacturer may have provided.
Chapter 1, Class Descriptions briefly describes each of the relevant classes in the KCMS CMM class hierarchy.
Chapter 2, CMM : A Runtime Derivative describes how to create a CMM that is a runtime derivative. It also discusses each of the KCMS classes from which you can derive or extend.
Chapter 3, KCMS Framework Operations provides examples of how some of the C++ methods interface with the KCMS framework API.
Chapter 4, KcsIO Derivative describes how to derive from the KcsIO base class.
Chapter 5, KcsProfile Derivative describes how to derive from the KcsProfile base class.
Chapter 6, KcsProfileFormat Derivative describes how to derive from the KcsProfileFormat base class.
Chapter 7, KcsXform Derivative describes how to derive from the KcsXform base class.
Chapter 8, KcsStatus Extension describes how to extend the KcsStatus base class.
Appendix A, Supported Devices describes how to name and install your own profile.
The following is a list of recommended books that can help you accomplish the tasks described in this guide:
KCMS CMM Reference Manual (part of DDK)
KCMS Calibrator Tool Loadable Interface Guide(part of SDK)
ICC Profile Format Specification (located on-line in /usr/openwin/demo/kcms/docs/icc.ps). For the most current version of the ICC specification, see the web site at http://www.color.org.
Fatbrain.com, an Internet professional bookstore, stocks select product documentation from Sun Microsystems, Inc.
For a list of documents and how to order them, visit the Sun Documentation Center on Fatbrain.com at http://www1.fatbrain.com/documentation/sun.
The docs.sun.comSM Web site enables you to access Sun technical documentation online. You can browse the docs.sun.com archive or search for a specific book title or subject. The URL is http://docs.sun.com.
The following table describes the typographic changes used in this book.
Table P-1 Typographic Conventions
Typeface or Symbol |
Meaning |
Example |
---|---|---|
AaBbCc123 | The names of commands, files, and directories; on-screen computer output |
Edit your .login file. Use ls -a to list all files. machine_name% you have mail. |
AaBbCc123 | What you type, contrasted with on-screen computer output |
machine_name% su Password: |
AaBbCc123 | Command-line placeholder: replace with a real name or value |
To delete a file, type rm filename. |
AaBbCc123 |
Book titles, new words, or terms, or words to be emphasized. |
Read Chapter 6 in User's Guide. These are called class options. You must be root to do this. |
The following table shows the default system prompt and superuser prompt for the C shell, Bourne shell, and Korn shell.
Table P-2 Shell Prompts
Shell |
Prompt |
---|---|
C shell prompt | machine_name% |
C shell superuser prompt | machine_name# |
Bourne shell and Korn shell prompt | $ |
Bourne shell and Korn shell superuser prompt | # |
For historic reasons, this guide uses several equivalent Kodak and ICC terms. The terms evolved at different times. Development of the ICC specification introduced new ICC terms with meanings the same as (or similar to) already existing Kodak terms.
You should be familiar with the terms listed in the table below, as you will encounter them in the ICC specification and KCMS color management documentation, as well as in the KCMS header files and example programs. The terms are defined as they are introduced in this guide.
Table P-3 Equivalent ICC and Kodak Terms
Kodak Term |
ICC Term |
---|---|
attribute |
tag |
device color profile (DCP) |
input, display, or output profile |
effects color profile (ECP) |
abstract profile |
complete color profile (CCP) |
device link profile |
profile format Id or magic number |
profile file signature |
reference color space (RCS) |
profile connection space (PCS) |
The text in this guide uses the term attribute instead of tag, (but code examples and header files may use tag for the historic reasons previously mentioned.