open-src/app/xcolor/sun-src/XCrDynCmap.c
author Alan Coopersmith <Alan.Coopersmith@Sun.COM>
Thu, 18 Feb 2010 16:03:08 -0800
changeset 907 3c35d611cdaa
parent 509 9469d4c6010a
child 919 425233ae7236
permissions -rw-r--r--
6927784 Remove SCCS ident tags from X gate
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
509
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     1
/*-
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     2
 * XCrDynCmap.c - X11 library routine to create dynamic colormaps.
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     3
 *
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     4
 * Copyright 1995 Sun Microsystems, Inc.  All rights reserved.
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     5
 *
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     6
 * Permission is hereby granted, free of charge, to any person obtaining a
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     7
 * copy of this software and associated documentation files (the
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     8
 * "Software"), to deal in the Software without restriction, including
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     9
 * without limitation the rights to use, copy, modify, merge, publish,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    10
 * distribute, and/or sell copies of the Software, and to permit persons
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    11
 * to whom the Software is furnished to do so, provided that the above
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    12
 * copyright notice(s) and this permission notice appear in all copies of
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    13
 * the Software and that both the above copyright notice(s) and this
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    14
 * permission notice appear in supporting documentation.
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    15
 *
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    16
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    17
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    18
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    19
 * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    20
 * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    21
 * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    22
 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    23
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    24
 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    25
 *
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    26
 * Except as contained in this notice, the name of a copyright holder
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    27
 * shall not be used in advertising or otherwise to promote the sale, use
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    28
 * or other dealings in this Software without prior written authorization
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    29
 * of the copyright holder.
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    30
 *
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    31
 * Author: Patrick J. Naughton
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    32
 * [email protected]
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    33
 */
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    34
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    35
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    36
#include <X11/X.h>
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    37
#include <X11/Xos.h>
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    38
#include <X11/Xlib.h>
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    39
#include <X11/Xutil.h>
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    40
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    41
Status
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    42
XCreateDynamicColormap(dsp, screen, cmap, visual, colors,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    43
		       count, red, green, blue)
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    44
    Display    *dsp;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    45
    int		screen;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    46
    Colormap   *cmap;		/* return */
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    47
    Visual    **visual;		/* return */
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    48
    XColor     *colors;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    49
    int 	count;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    50
    u_char     *red,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    51
	       *green,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    52
	       *blue;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    53
{
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    54
    XVisualInfo vinfo;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    55
    int		pixels[256];
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    56
    int		i,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    57
		ncolors,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    58
		planes;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    59
    unsigned long pmasks;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    60
    Status	allocReturn;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    61
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    62
    planes = DisplayPlanes(dsp, screen);
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    63
    if (!XMatchVisualInfo(dsp, screen, planes, PseudoColor, &vinfo)) 
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    64
        if (!XMatchVisualInfo(dsp, screen, planes, GrayScale, &vinfo)) 
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    65
            if (!XMatchVisualInfo(dsp, screen, planes, DirectColor, &vinfo)) 
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    66
	        return BadMatch;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    67
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    68
    {
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    69
	*visual = vinfo.visual;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    70
	*cmap = XCreateColormap(dsp, RootWindow(dsp, screen),
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    71
				*visual, AllocNone);
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    72
	ncolors = vinfo.colormap_size;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    73
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    74
	if (count > ncolors)
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    75
	    return BadValue;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    76
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    77
	allocReturn = XAllocColorCells(dsp, *cmap,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    78
				       False, &pmasks, 0,
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    79
				       pixels, ncolors);
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    80
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    81
/*	This should return Success, but it doesn't... Xlib bug?
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    82
 *	(I'll ignore the return value for now...)
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    83
 */
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    84
#ifdef NOTDEF
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    85
	if (allocReturn != Success)
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    86
	    return allocReturn;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    87
#endif				/* NOTDEF */
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    88
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    89
	for (i = 0; i < ncolors - count; i++) {
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    90
	    colors[i].pixel = pixels[i];
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    91
	    XQueryColor(dsp, DefaultColormap(dsp, screen), &colors[i]);
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    92
	}
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    93
	for (i = ncolors - count; i < ncolors; i++) {
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    94
	    colors[i].pixel = pixels[i];
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    95
	    colors[i].red = *red++ << 8;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    96
	    colors[i].green = *green++ << 8;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    97
	    colors[i].blue = *blue++ << 8;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    98
	    colors[i].flags = DoRed | DoGreen | DoBlue;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    99
	}
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   100
	XStoreColors(dsp, *cmap, colors, ncolors);
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   101
	return Success;
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   102
    }
9469d4c6010a 6736024 Replace xcolor with open src version
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   103
}