1
2/*
3 * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
4 * 	All Rights Reserved
5 *
6 * This file is a component of an X Window System-specific implementation
7 * of Xcms based on the TekColor Color Management System.  TekColor is a
8 * trademark of Tektronix, Inc.  The term "TekHVC" designates a particular
9 * color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
10 * foreign patents pending).  Permission is hereby granted to use, copy,
11 * modify, sell, and otherwise distribute this software and its
12 * documentation for any purpose and without fee, provided that:
13 *
14 * 1. This copyright, permission, and disclaimer notice is reproduced in
15 *    all copies of this software and any modification thereof and in
16 *    supporting documentation;
17 * 2. Any color-handling application which displays TekHVC color
18 *    cooordinates identifies these as TekHVC color coordinates in any
19 *    interface that displays these coordinates and in any associated
20 *    documentation;
21 * 3. The term "TekHVC" is always used, and is only used, in association
22 *    with the mathematical derivations of the TekHVC Color Space,
23 *    including those provided in this file and any equivalent pathways and
24 *    mathematical derivations, regardless of digital (e.g., floating point
25 *    or integer) representation.
26 *
27 * Tektronix makes no representation about the suitability of this software
28 * for any purpose.  It is provided "as is" and with all faults.
29 *
30 * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
31 * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
32 * PARTICULAR PURPOSE.  IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
33 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
34 * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
35 * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
36 * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
37 *
38 *	DESCRIPTION
39 *		TekHVCWpAj.c
40 *
41 *	DESCRIPTION
42 *		This file contains routine(s) that support white point
43 *		adjustment of color specifications in the TekHVC color
44 *		space.
45 */
46
47#ifdef HAVE_CONFIG_H
48#include <config.h>
49#endif
50#include "Xlibint.h"
51#include "Xcmsint.h"
52#include "Cv.h"
53
54
55/************************************************************************
56 *									*
57 *			 PUBLIC ROUTINES				*
58 *									*
59 ************************************************************************/
60
61/*
62 *	NAME
63 *		XcmsTekHVCWhiteShiftColors
64 *
65 *	SYNOPSIS
66 */
67Status
68XcmsTekHVCWhiteShiftColors(
69    XcmsCCC ccc,
70    XcmsColor *pWhitePtFrom,
71    XcmsColor *pWhitePtTo,
72    XcmsColorFormat destSpecFmt,
73    XcmsColor *pColors_in_out,
74    unsigned int nColors,
75    Bool *pCompressed)
76/*
77 *	DESCRIPTION
78 *		Convert color specifications in an array of XcmsColor structures
79 *		for differences in white points.
80 *
81 *	RETURNS
82 *		XcmsFailure if failed,
83 *		XcmsSuccess if succeeded without gamut compression,
84 *		XcmsSuccessWithCompression if succeeded with
85 *			gamut compression.
86 */
87{
88    if (pWhitePtFrom == NULL || pWhitePtTo == NULL || pColors_in_out == NULL) {
89	return(XcmsFailure);
90    }
91
92    /*
93     * Insure TekHVC installed
94     */
95    if (XcmsAddColorSpace(&XcmsTekHVCColorSpace) == XcmsFailure) {
96	return(XcmsFailure);
97    }
98
99    /*
100     * Convert to TekHVC using pWhitePtFrom
101     *    We can ignore return value for compression because we are converting
102     *    to XcmsTekHVCFormat which is device-independent, not device-dependent.
103     */
104    if (_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtFrom,
105	    nColors, XcmsTekHVCFormat, pCompressed) == XcmsFailure) {
106	return(XcmsFailure);
107    }
108
109    /*
110     * Convert from TekHVC to destSpecFmt using pWhitePtTo
111     */
112    return(_XcmsConvertColorsWithWhitePt(ccc, pColors_in_out, pWhitePtTo,
113	    nColors, destSpecFmt, pCompressed));
114}
115