SetCCC.c revision 1ab64890
11ab64890Smrg/* $Xorg: SetCCC.c,v 1.3 2000/08/17 19:44:52 cpqbld Exp $ */ 21ab64890Smrg 31ab64890Smrg/* 41ab64890Smrg * Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc. 51ab64890Smrg * All Rights Reserved 61ab64890Smrg * 71ab64890Smrg * This file is a component of an X Window System-specific implementation 81ab64890Smrg * of Xcms based on the TekColor Color Management System. Permission is 91ab64890Smrg * hereby granted to use, copy, modify, sell, and otherwise distribute this 101ab64890Smrg * software and its documentation for any purpose and without fee, provided 111ab64890Smrg * that this copyright, permission, and disclaimer notice is reproduced in 121ab64890Smrg * all copies of this software and in supporting documentation. TekColor 131ab64890Smrg * is a trademark of Tektronix, Inc. 141ab64890Smrg * 151ab64890Smrg * Tektronix makes no representation about the suitability of this software 161ab64890Smrg * for any purpose. It is provided "as is" and with all faults. 171ab64890Smrg * 181ab64890Smrg * TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE, 191ab64890Smrg * INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 201ab64890Smrg * PARTICULAR PURPOSE. IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY 211ab64890Smrg * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER 221ab64890Smrg * RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF 231ab64890Smrg * CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 241ab64890Smrg * CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE. 251ab64890Smrg * 261ab64890Smrg * 271ab64890Smrg * NAME 281ab64890Smrg * XcmsSetCCC.c - Color Conversion Context Setting Routines 291ab64890Smrg * 301ab64890Smrg * DESCRIPTION 311ab64890Smrg * Routines to set components of a Color Conversion 321ab64890Smrg * Context structure. 331ab64890Smrg * 341ab64890Smrg * 351ab64890Smrg */ 361ab64890Smrg/* $XFree86$ */ 371ab64890Smrg 381ab64890Smrg#ifdef HAVE_CONFIG_H 391ab64890Smrg#include <config.h> 401ab64890Smrg#endif 411ab64890Smrg#include "Xlibint.h" 421ab64890Smrg#include "Xcms.h" 431ab64890Smrg 441ab64890Smrg 451ab64890Smrg 461ab64890Smrg/************************************************************************ 471ab64890Smrg * * 481ab64890Smrg * PUBLIC INTERFACES * 491ab64890Smrg * * 501ab64890Smrg ************************************************************************/ 511ab64890Smrg 521ab64890Smrg/* 531ab64890Smrg * NAME 541ab64890Smrg * XcmsSetWhitePoint 551ab64890Smrg * 561ab64890Smrg * SYNOPSIS 571ab64890Smrg */ 581ab64890Smrg 591ab64890SmrgStatus 601ab64890SmrgXcmsSetWhitePoint( 611ab64890Smrg XcmsCCC ccc, 621ab64890Smrg XcmsColor *pColor) 631ab64890Smrg/* 641ab64890Smrg * DESCRIPTION 651ab64890Smrg * Sets the Client White Point in the specified CCC. 661ab64890Smrg * 671ab64890Smrg * RETURNS 681ab64890Smrg * Returns XcmsSuccess if succeeded; otherwise XcmsFailure. 691ab64890Smrg * 701ab64890Smrg */ 711ab64890Smrg{ 721ab64890Smrg if (pColor == NULL || pColor->format == XcmsUndefinedFormat) { 731ab64890Smrg ccc->clientWhitePt.format = XcmsUndefinedFormat; 741ab64890Smrg } else if (pColor->format != XcmsCIEXYZFormat && 751ab64890Smrg pColor->format != XcmsCIEuvYFormat && 761ab64890Smrg pColor->format != XcmsCIExyYFormat) { 771ab64890Smrg return(XcmsFailure); 781ab64890Smrg } else { 791ab64890Smrg memcpy((char *)&ccc->clientWhitePt, (char *)pColor, sizeof(XcmsColor)); 801ab64890Smrg } 811ab64890Smrg return(XcmsSuccess); 821ab64890Smrg} 831ab64890Smrg 841ab64890Smrg 851ab64890Smrg/* 861ab64890Smrg * NAME 871ab64890Smrg * XcmsSetCompressionProc 881ab64890Smrg * 891ab64890Smrg * SYNOPSIS 901ab64890Smrg */ 911ab64890Smrg 921ab64890SmrgXcmsCompressionProc 931ab64890SmrgXcmsSetCompressionProc( 941ab64890Smrg XcmsCCC ccc, 951ab64890Smrg XcmsCompressionProc compression_proc, 961ab64890Smrg XPointer client_data) 971ab64890Smrg/* 981ab64890Smrg * DESCRIPTION 991ab64890Smrg * Set the specified CCC's compression function and client data. 1001ab64890Smrg * 1011ab64890Smrg * RETURNS 1021ab64890Smrg * Returns the old compression function. 1031ab64890Smrg * 1041ab64890Smrg */ 1051ab64890Smrg{ 1061ab64890Smrg XcmsCompressionProc old = ccc->gamutCompProc; 1071ab64890Smrg 1081ab64890Smrg ccc->gamutCompProc = compression_proc; 1091ab64890Smrg ccc->gamutCompClientData = client_data; 1101ab64890Smrg return(old); 1111ab64890Smrg} 1121ab64890Smrg 1131ab64890Smrg 1141ab64890Smrg/* 1151ab64890Smrg * NAME 1161ab64890Smrg * XcmsSetWhiteAdjustProc 1171ab64890Smrg * 1181ab64890Smrg * SYNOPSIS 1191ab64890Smrg */ 1201ab64890Smrg 1211ab64890SmrgXcmsWhiteAdjustProc 1221ab64890SmrgXcmsSetWhiteAdjustProc( 1231ab64890Smrg XcmsCCC ccc, 1241ab64890Smrg XcmsWhiteAdjustProc white_adjust_proc, 1251ab64890Smrg XPointer client_data ) 1261ab64890Smrg/* 1271ab64890Smrg * DESCRIPTION 1281ab64890Smrg * Set the specified CCC's white_adjust function and client data. 1291ab64890Smrg * 1301ab64890Smrg * RETURNS 1311ab64890Smrg * Returns the old white_adjust function. 1321ab64890Smrg * 1331ab64890Smrg */ 1341ab64890Smrg{ 1351ab64890Smrg XcmsWhiteAdjustProc old = ccc->whitePtAdjProc; 1361ab64890Smrg 1371ab64890Smrg ccc->whitePtAdjProc = white_adjust_proc; 1381ab64890Smrg ccc->whitePtAdjClientData = client_data; 1391ab64890Smrg return(old); 1401ab64890Smrg} 141