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