upload tizen2.0 source
[framework/uifw/xorg/lib/libx11.git] / src / xcms / StCols.c
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  *              XcmsStCols.c
28  *
29  *      DESCRIPTION
30  *              Source for XcmsStoreColors
31  *
32  *
33  */
34
35 #ifdef HAVE_CONFIG_H
36 #include <config.h>
37 #endif
38 #include "Xlibint.h"
39 #include "Xcmsint.h"
40 #include "Cv.h"
41
42 \f
43 /************************************************************************
44  *                                                                      *
45  *                      PUBLIC ROUTINES                                 *
46  *                                                                      *
47  ************************************************************************/
48
49 /*
50  *      NAME
51  *              XcmsStoreColors - Store Colors
52  *
53  *      SYNOPSIS
54  */
55 Status
56 XcmsStoreColors(
57     Display *dpy,
58     Colormap colormap,
59     XcmsColor *pColors_in,
60     unsigned int nColors,
61     Bool *pCompressed)
62 /*
63  *      DESCRIPTION
64  *              Given device-dependent or device-independent color
65  *              specifications, this routine will convert them to X RGB
66  *              values then use it in a call to XStoreColors.
67  *
68  *      RETURNS
69  *              XcmsFailure if failed;
70  *              XcmsSuccess if it succeeded without gamut compression;
71  *              XcmsSuccessWithCompression if it succeeded with gamut
72  *                      compression;
73  *
74  *              Since XStoreColors has no return value, this routine
75  *              does not return color specifications of the colors actually
76  *              stored.
77  */
78 {
79     XcmsColor Color1;
80     XcmsColor *pColors_tmp;
81     Status retval;
82
83     /*
84      * Make copy of array of color specifications so we don't
85      * overwrite the contents.
86      */
87     if (nColors > 1) {
88         pColors_tmp = (XcmsColor *) Xmalloc(nColors * sizeof(XcmsColor));
89     } else {
90         pColors_tmp = &Color1;
91     }
92     memcpy((char *)pColors_tmp, (char *)pColors_in,
93             nColors * sizeof(XcmsColor));
94
95     /*
96      * Call routine to store colors using the copied color structures
97      */
98     retval = _XcmsSetGetColors (XStoreColors, dpy, colormap,
99             pColors_tmp, nColors, XcmsRGBFormat, pCompressed);
100
101     /*
102      * Free copies as needed.
103      */
104     if (nColors > 1) {
105         Xfree((char *)pColors_tmp);
106     }
107
108     /*
109      * Ah, finally return.
110      */
111     return(retval);
112 }