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.  Permission is
8 * hereby granted to use, copy, modify, sell, and otherwise distribute this
9 * software and its documentation for any purpose and without fee, provided
10 * that this copyright, permission, and disclaimer notice is reproduced in
11 * all copies of this software and in supporting documentation.  TekColor
12 * is a trademark of Tektronix, Inc.
13 *
14 * Tektronix makes no representation about the suitability of this software
15 * for any purpose.  It is provided "as is" and with all faults.
16 *
17 * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
18 * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
19 * PARTICULAR PURPOSE.  IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
20 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
21 * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
22 * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
23 * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
24 *
25 *
26 *	NAME
27 *		XcmsSetCCC.c - Color Conversion Context Setting Routines
28 *
29 *	DESCRIPTION
30 *		Routines to set components of a Color Conversion
31 *		Context structure.
32 *
33 *
34 */
35
36#ifdef HAVE_CONFIG_H
37#include <config.h>
38#endif
39#include "Xlibint.h"
40#include "Xcms.h"
41
42
43
44/************************************************************************
45 *									*
46 *			PUBLIC INTERFACES				*
47 *									*
48 ************************************************************************/
49
50/*
51 *	NAME
52 *		XcmsSetWhitePoint
53 *
54 *	SYNOPSIS
55 */
56
57Status
58XcmsSetWhitePoint(
59    XcmsCCC ccc,
60    XcmsColor *pColor)
61/*
62 *	DESCRIPTION
63 *		Sets the Client White Point in the specified CCC.
64 *
65 *	RETURNS
66 *		Returns XcmsSuccess if succeeded; otherwise XcmsFailure.
67 *
68 */
69{
70    if (pColor == NULL || pColor->format == XcmsUndefinedFormat) {
71	ccc->clientWhitePt.format = XcmsUndefinedFormat;
72    } else if (pColor->format != XcmsCIEXYZFormat &&
73	    pColor->format != XcmsCIEuvYFormat &&
74	    pColor->format != XcmsCIExyYFormat) {
75	return(XcmsFailure);
76    } else {
77	memcpy((char *)&ccc->clientWhitePt, (char *)pColor, sizeof(XcmsColor));
78    }
79    return(XcmsSuccess);
80}
81
82
83/*
84 *	NAME
85 *		XcmsSetCompressionProc
86 *
87 *	SYNOPSIS
88 */
89
90XcmsCompressionProc
91XcmsSetCompressionProc(
92    XcmsCCC ccc,
93    XcmsCompressionProc compression_proc,
94    XPointer client_data)
95/*
96 *	DESCRIPTION
97 *		Set the specified CCC's compression function and client data.
98 *
99 *	RETURNS
100 *		Returns the old compression function.
101 *
102 */
103{
104    XcmsCompressionProc old = ccc->gamutCompProc;
105
106    ccc->gamutCompProc = compression_proc;
107    ccc->gamutCompClientData = client_data;
108    return(old);
109}
110
111
112/*
113 *	NAME
114 *		XcmsSetWhiteAdjustProc
115 *
116 *	SYNOPSIS
117 */
118
119XcmsWhiteAdjustProc
120XcmsSetWhiteAdjustProc(
121    XcmsCCC ccc,
122    XcmsWhiteAdjustProc white_adjust_proc,
123    XPointer client_data )
124/*
125 *	DESCRIPTION
126 *		Set the specified CCC's white_adjust function and client data.
127 *
128 *	RETURNS
129 *		Returns the old white_adjust function.
130 *
131 */
132{
133    XcmsWhiteAdjustProc old = ccc->whitePtAdjProc;
134
135    ccc->whitePtAdjProc = white_adjust_proc;
136    ccc->whitePtAdjClientData = client_data;
137    return(old);
138}
139