This is great! FYI, The existing ImageMagick package could also be
linked against LCMS.
On Jan 31, 2008, at 7:24 PM, John Fischer wrote:
> PSARC,
>
> I am sponsoring this fast track for Stefan Teleman from the SFW group.
> The case materials contain this proposal. I have set the timeout for
> Thursday, February 7th, 2008.
>
> This project proposes to integrate the LCMS [ Little Color Management
> System ] within a Patch release of Solaris. It implements the
> International Color Consortium's ICC.1:2004-10 Specification.
>
> Thanks,
>
> John
>
> Including LCMS [ Little Color Management System ] with Solaris
>
> Stefan Teleman <Stefan.Teleman at Sun.COM>
> 29 January 2008
>
> 1. Summary and motivation
>
> LCMS [Little CMS] [1] is a Color Management System implementing
> the International Color Consortium's ICC.1:2004-10 Specification.
> [2]
>
> LCMS implements fast and efficient colorspace transforms between
> different ICC Profiles. Its features include full multicolor
> support, Black color preservation in CMYK <-> CMYK transforms,
> Virtual Gray <-> RGB Profiles, built-in ICC Profiles support,
> ICC Profile writing, Specialized Virtual Profiles, and Ink
> Limiting.
>
> An ICC Profile is a standardized means of encoding color definitions
> and calibrations. Conversion between different ICC Profiles is
> usually achieved by means of a Profile Connection Space. A Profile
> Connection Space is a mapping between two Colorspaces [ for
> example, RGB and CMYK ]. An ICC Profile may define several
> Colorspace mappings, thereby allowing for the closest possible
> color match.
>
> A competing alternative to the ICC.1:2004-10 Specification has
> been proposed by OpenEXR. [5]
>
> ICC Profile [6] and Colorspace information may be encoded within
> each graphics file. This approach is currently in use by some of
> the most popular graphics file formats: TIFF, JPEG, PNG, MNG, EPS,
> PDF, SVG.
>
> The inclusion of LCMS in Solaris will add ICC Profile and Color
> Management capabilities to those graphics file formats supporting
> such facilities.
>
> The "Little" in LCMS stands for "small overhead".
>
> This case seeks Micro/Patch release Binding.
>
> 2. Technical issues
>
> 2.1. Key objects
>
> /usr/bin/icctrans
> /usr/bin/icc2ps
> /usr/bin/icclink
> /usr/bin/jpegicc
> /usr/bin/tifficc
> /usr/bin/tiffdiff
> /usr/bin/wtpt
>
> /usr/include/lcms/icc34.h
> /usr/include/lcms/lcms.h
>
> /usr/lib/liblcms.so.1.0.16
> /usr/lib/liblcms.so.1 -> /usr/lib/liblcms.so.1.0.16
> /usr/lib/liblcms.so -> /usr/lib/liblcms.so.1.0.16
> /usr/lib/pkgconfig/lcms.pc
>
> /usr/lib/${MACH64}/liblcms.so.1.0.16
> /usr/lib/${MACH64}/liblcms.so.1 -> /usr/lib/${MACH64}/liblcms.so.
> 1.0.16
> /usr/lib/${MACH64}/liblcms.so -> /usr/lib/${MACH64}/liblcms.so.1.0.16
> /usr/lib/${MACH64}/pkgconfig/lcms.pc
>
> /usr/share/man/man1/icc2ps.1
> /usr/share/man/man1/icclink.1
> /usr/share/man/man1/icctrans.1
> /usr/share/man/man1/jpegicc.1
> /usr/share/man/man1/tifficc.1
> /usr/share/man/man1/wtpt.1
>
> This case proposes the integration of LCMS Version 1.17.
>
> This version of LCMS [1.17] is thread-safe, 64-bit clean and
> largefile aware. The 64-bit LCMS library will be delivered
> with this Integration.
>
> By default, LCMS installs its header files under /usr/include.
> We propose changing this default installation location to a more
> suitable /usr/include/lcms, for the purpose of avoiding namespace
> pollution in /usr/include.
>
> LCMS provides documentation in UNIX Manual format for Section 1
> (User Commands) of the Manual only. It does not provide a
> Section 3 Manual page for the LCMS API; the documentation for
> the LCMS API is provided in plaintext format.
>
> The plaintext documentation will be used as basis for a new
> lcms.3 Manual Page, which will be added to, and included with,
> this Integration.
>
> 2.2. Programmatic facilities
>
> Access to LCMS' API is provided by one header file, lcms.h:
>
> #include <lcms.h>
>
> A basic application using the LCMS API will, generally, perform
> the following steps:
>
> /* 1. declare an input CMS Profile and an output CMS Profile */
>
> cmsHPROFILE hInProfile;
> cmsHPROFILE hOutProfile;
>
> /* 2. declare a Colorspace Transform */
>
> cmsHTRANSFORM hTransform;
>
> /* 3. Initialize the input and output CMS Profiles */
>
> hInProfile = cmsOpenProfileFromFile("HPSJTW.ICM", "r");
> hOutProfile = cmsOpenProfileFromFile("sRGBColorSpace.ICM", "r");
>
> /* 4. Initialize the Colorspace Transform */
>
> hTransform = cmsCreateTransform(hInProfile,
> TYPE_BGR_8,
> hOutProfile,
> TYPE_BGR_8,
> INTENT_PERCEPTUAL, 0);
>
> /* 5. Perform Colorspace Transformations */
>
> int i;
>
> for (i = 0; i < SOME_MAX_VALUE_WE_HAVE_DETERMINED; i++) {
> cmsDoTransform(hTransform,
> YourInputBuffer,
> YourOutputBuffer,
> YourBuffersSizeInPixels);
> }
>
> /* 6. Cleanup Colorspace Transform */
>
> cmsDeleteTransform(hTransform);
>
> /* 7. Cleanup Input and Output Profiles */
>
> cmsCloseProfile(hInProfile);
> cmsCloseProfile(hOutProfile);
>
> 2.3. Language Bindings
>
> LCMS is written in ANSI C. The canonical LCMS distribution
> also includes Python bindings for LCMS, written in C++. The
> Python LCMS bindings will be included with this Integration,
> and will be installed in the canonical Python 'site-packages'
> directory location.
>
> 2.4. Documentation
>
> The canonical LCMS release contains documentation in UNIX
> Manual format, for the User Commands Section (1) only. This
> documentation set will be included with this Integration.
> In addition, a Section 3 Manual page [ lcms.3 ], detailing
> LCMS's API will be provided with this Integration.
>
> 3. Interfaces
>
> 3.1. Interface stability
>
> LCMS's development and release schedules are controlled by
> a group of developers external to SMI. [1] Although LCMS
> attempts to maintain API and ABI compatibility between Major
> releases, no explicit guarantee of compatibility is provided
> by the LCMS developers.
>
> 3.2. Imported interfaces
>
> LCMS imports interfaces from the Standard C Library, Standard
> Math Library and the POSIX Threads Library. The Python LCMS
> shared module imports Interfaces from the C++ run-time Library
> [ libCrun.so.1 ]. In addition, the Python Binding shared module
> also imports interfaces from the Python Library:
>
> NAME STABILITY NOTES
>
> SUNWPython External PSARC/2005/532
>
> 3.3. Exported interfaces
>
> NAME STABILITY NOTES
>
> SUNWlcms Uncommitted Package Name
>
> /usr/bin/icctrans Uncommitted Executable Location
> /usr/bin/icc2ps Uncommitted Executable Location
> /usr/bin/icclink Uncommitted Executable Location
> /usr/bin/jpegicc Uncommitted Executable Location
> /usr/bin/tifficc Uncommitted Executable Location
> /usr/bin/tiffdiff Uncommitted Executable Location
> /usr/bin/wtpt Uncommitted Executable Location
>
> /usr/include/lcms Uncommitted Include Directory
> /usr/include/lcms/icc34.h Uncommitted Header file
> /usr/include/lcms/lcms.h Uncommitted Header file
>
> /usr/lib/liblcms.so.1.0.16 Uncommitted Shared Library
> /usr/lib/liblcms.so.1 Uncommitted Symbolic Link
> /usr/lib/liblcms.so Uncommitted Symbolic Link
>
> /usr/lib/pkgconfig/lcms.pc Uncommitted Pkg-config Entry
>
> /usr/lib/${MACH64}/liblcms.so.1.0.16 Uncommitted Shared Library
> /usr/lib/${MACH64}/liblcms.so.1 Uncommitted Symbolic Link
> /usr/lib/${MACH64}/liblcms.so Uncommitted Symbolic Link
>
> /usr/lib/${MACH64}/pkgconfig/lcms.pc Uncommitted Pkg-config Entry
>
> /usr/share/man/man1/icc2ps.1 Uncommitted Manual Page
> /usr/share/man/man1/icclink.1 Uncommitted Manual Page
> /usr/share/man/man1/icctrans.1 Uncommitted Manual Page
> /usr/share/man/man1/jpegicc.1 Uncommitted Manual Page
> /usr/share/man/man1/tifficc.1 Uncommitted Manual Page
> /usr/share/man/man1/wtpt.1 Uncommitted Manual Page
> /usr/share/man/man3/lcms.3 Uncommitted Manual Page
>
> 4. References
>
> [1] http://www.littlecms.com/
> [2] http://www.color.org/ICC1V42.pdf
> http://www.color.org/icc_specs2.xalter
> [3] http://www.libmng.com/
> [4] http://sourceforge.net/project/showfiles.php?group_id=12272
> [5] http://www.openexr.com/
> [6] http://www.srgb.com/
>
>
> _______________________________________________
> opensolaris-arc mailing list
> opensolaris-arc at opensolaris.org