Initial commit
[xorg_rtime.git] / xorg-server-1.4 / mfb / mfbcmap.c
blob4dabcae1a4390d42955fb703cbf9137bc6882d2d
1 /***********************************************************
3 Copyright 1987, 1998 The Open Group
5 Permission to use, copy, modify, distribute, and sell this software and its
6 documentation for any purpose is hereby granted without fee, provided that
7 the above copyright notice appear in all copies and that both that
8 copyright notice and this permission notice appear in supporting
9 documentation.
11 The above copyright notice and this permission notice shall be included in
12 all copies or substantial portions of the Software.
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 Except as contained in this notice, the name of The Open Group shall not be
22 used in advertising or otherwise to promote the sale, use or other dealings
23 in this Software without prior written authorization from The Open Group.
26 Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
28 All Rights Reserved
30 Permission to use, copy, modify, and distribute this software and its
31 documentation for any purpose and without fee is hereby granted,
32 provided that the above copyright notice appear in all copies and that
33 both that copyright notice and this permission notice appear in
34 supporting documentation, and that the name of Digital not be
35 used in advertising or publicity pertaining to distribution of the
36 software without specific, written prior permission.
38 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
39 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
40 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
41 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
42 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
43 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
44 SOFTWARE.
46 ******************************************************************/
47 #ifdef HAVE_DIX_CONFIG_H
48 #include <dix-config.h>
49 #endif
51 #include <X11/X.h>
52 #include "scrnintstr.h"
53 #include "colormapst.h"
54 #include "resource.h"
55 #include "micmap.h"
56 #include "mfb.h"
58 /* A monochrome frame buffer is a static gray colormap with two entries.
59 * We have a "required list" of length 1. Because we can only support 1
60 * colormap, we never have to change it, but we may have to change the
61 * name we call it. If someone installs a new colormap, we know it must
62 * look just like the old one (because we've checked in dispatch that it was
63 * a valid colormap identifier, and all the colormap IDs for this device
64 * look the same). Nevertheless, we still have to uninstall the old colormap
65 * and install the new one. Similarly, if someone uninstalls a colormap,
66 * we have to install the default map, even though we know those two looked
67 * alike.
68 * The required list concept is pretty much irrelevant when you can only
69 * have one map installed at a time.
72 int
73 mfbListInstalledColormaps(pScreen, pmaps)
74 ScreenPtr pScreen;
75 Colormap *pmaps;
77 return miListInstalledColormaps(pScreen, pmaps);
81 void
82 mfbInstallColormap(pmap)
83 ColormapPtr pmap;
85 miInstallColormap(pmap);
88 void
89 mfbUninstallColormap(pmap)
90 ColormapPtr pmap;
92 miUninstallColormap(pmap);
95 /*ARGSUSED*/
96 void
97 mfbResolveColor (pred, pgreen, pblue, pVisual)
98 unsigned short *pred;
99 unsigned short *pgreen;
100 unsigned short *pblue;
101 VisualPtr pVisual;
104 * Gets intensity from RGB. If intensity is >= half, pick white, else
105 * pick black. This may well be more trouble than it's worth.
107 *pred = *pgreen = *pblue =
108 (((30L * *pred +
109 59L * *pgreen +
110 11L * *pblue) >> 8) >= (((1<<8)-1)*50)) ? ~0 : 0;
113 Bool
114 mfbCreateColormap(pMap)
115 ColormapPtr pMap;
117 ScreenPtr pScreen;
118 unsigned short red0, green0, blue0;
119 unsigned short red1, green1, blue1;
120 Pixel pix;
122 pScreen = pMap->pScreen;
123 if (pScreen->whitePixel == 0)
125 red0 = green0 = blue0 = ~0;
126 red1 = green1 = blue1 = 0;
128 else
130 red0 = green0 = blue0 = 0;
131 red1 = green1 = blue1 = ~0;
134 /* this is a monochrome colormap, it only has two entries, just fill
135 * them in by hand. If it were a more complex static map, it would be
136 * worth writing a for loop or three to initialize it */
138 /* this will be pixel 0 */
139 pix = 0;
140 if (AllocColor(pMap, &red0, &green0, &blue0, &pix, 0) != Success)
141 return FALSE;
143 /* this will be pixel 1 */
144 if (AllocColor(pMap, &red1, &green1, &blue1, &pix, 0) != Success)
145 return FALSE;
146 return TRUE;
149 /*ARGSUSED*/
150 void
151 mfbDestroyColormap (pMap)
152 ColormapPtr pMap;
154 return;
157 Bool
158 mfbCreateDefColormap (pScreen)
159 ScreenPtr pScreen;
161 return miCreateDefColormap(pScreen);