cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1987, 1998 The Open Group
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, distribute, and sell this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose is hereby granted without fee, provided that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncthe above copyright notice appear in all copies and that both that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynccopyright notice and this permission notice appear in supporting
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncThe above copyright notice and this permission notice shall be included in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncall copies or substantial portions of the Software.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncExcept as contained in this notice, the name of The Open Group shall not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or otherwise to promote the sale, use or other dealings
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncin this Software without prior written authorization from The Open Group.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync All Rights Reserved
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncPermission to use, copy, modify, and distribute this software and its
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncdocumentation for any purpose and without fee is hereby granted,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncprovided that the above copyright notice appear in all copies and that
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncboth that copyright notice and this permission notice appear in
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsupporting documentation, and that the name of Digital not be
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncused in advertising or publicity pertaining to distribution of the
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncsoftware without specific, written prior permission.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsyncSOFTWARE.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync*/
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#ifndef CMAPSTRUCT_H
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#define CMAPSTRUCT_H 1
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include <X11/Xarch.h>
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "colormap.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "screenint.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#include "privates.h"
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* Shared color -- the color is used by AllocColorPlanes */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync{
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short color;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync short refcnt;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} SHAREDCOLOR;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* LOCO -- a local color for a PseudoColor cell. DirectColor maps always
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * use the first value (called red) in the structure. What channel they
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * are really talking about depends on which map they are in. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync{
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync unsigned short red, green, blue;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} LOCO;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* SHCO -- a shared color for a PseudoColor cell. Used with AllocColorPlanes.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * DirectColor maps always use the first value (called red) in the structure.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * What channel they are really talking about depends on which map they
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * are in. */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync{
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync SHAREDCOLOR *red, *green, *blue;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} SHCO;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/* color map entry */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _CMEntry
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync{
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync union
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync {
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync LOCO local;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync SHCO shco;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync } co;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync short refcnt;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Bool fShared;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} Entry;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync/*
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * COLORMAPs can be used for either Direct or Pseudo color. PseudoColor
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * only needs one cell table, we arbitrarily pick red. We keep track
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * of that table with freeRed, numPixelsRed, and clientPixelsRed
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync *
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * The padN variables are unfortunate ABI BC. See fdo bug #6924.
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsynctypedef struct _ColormapRec
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync{
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync VisualPtr pVisual;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync short class; /* PseudoColor or DirectColor */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(_XSERVER64)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync short pad0;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XID pad1;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XID mid; /* client's name for colormap */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#if defined(_XSERVER64) && (X_BYTE_ORDER == X_LITTLE_ENDIAN)
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync XID pad2;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync ScreenPtr pScreen; /* screen map is associated with */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync short flags; /* 1 = IsDefault
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync * 2 = AllAllocated */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int freeRed;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int freeGreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int freeBlue;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *numPixelsRed;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *numPixelsGreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync int *numPixelsBlue;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Pixel **clientPixelsRed;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Pixel **clientPixelsGreen;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Pixel **clientPixelsBlue;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Entry *red;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Entry *green;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync Entry *blue;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync pointer devPriv;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync PrivateRec *devPrivates; /* dynamic devPrivates added after devPriv
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync already existed - must keep devPriv */
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync} ColormapRec;
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync
cabde247f900dcf6e58d009bbdd15099c028c6fcvboxsync#endif /* COLORMAP_H */