diff options
Diffstat (limited to 'nx-X11/programs/Xserver/hw/sun/sunCfb24.c')
-rw-r--r-- | nx-X11/programs/Xserver/hw/sun/sunCfb24.c | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/nx-X11/programs/Xserver/hw/sun/sunCfb24.c b/nx-X11/programs/Xserver/hw/sun/sunCfb24.c deleted file mode 100644 index fa3a58e85..000000000 --- a/nx-X11/programs/Xserver/hw/sun/sunCfb24.c +++ /dev/null @@ -1,139 +0,0 @@ -/* $Xorg: sunCfb24.c,v 1.4 2001/02/09 02:04:43 xorgcvs Exp $ */ - -/* - -Copyright 1994, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X -CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings in -this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/programs/Xserver/hw/sun/sunCfb24.c,v 1.2 2001/10/28 03:33:10 tsi Exp $ */ - -/* - * The CG8 is similar to the CG4 in that it has a mono plane, an enable - * plane, and a color plane. While the CG4 only has an 8-bit color - * plane the CG8 has a 24-bit color plane. - * - * If you have a CG4 you know that you can switch between the mono and - * the color screens merely by dragging the pointer off the edge of the - * screen, causing the other screen to be switched in. However this is - * the cause of some consternation on the part of those people who have - * both a CG4 and another frame buffer. - * - * Because of this problem, and some other considerations, I have chosen - * to ignore the mono plane of the CG8 in this code. - */ - -#define PSZ 32 -#include "sun.h" -#include "cfb/cfb.h" - -#define PIXPG_24BIT_COLOR 5 -#define PIXPG_24BIT_COLOR_INDEX (PIXPG_24BIT_COLOR << 25) -#define PR_FORCE_UPDATE (1 << 24) - -static void CG24UpdateColormap(pScreen, index, count, rmap, gmap, bmap) - ScreenPtr pScreen; - int index, count; - u_char *rmap, *gmap, *bmap; -{ - struct fbcmap sunCmap; - - sunCmap.index = index | PIXPG_24BIT_COLOR_INDEX | PR_FORCE_UPDATE; - sunCmap.count = count; - sunCmap.red = &rmap[index]; - sunCmap.green = &gmap[index]; - sunCmap.blue = &bmap[index]; - - if (ioctl(sunFbs[pScreen->myNum].fd, FBIOPUTCMAP, &sunCmap) == -1) - FatalError( "CG24UpdateColormap: FBIOPUTCMAP failed\n"); -} - -static void CG24StoreColors (pmap, ndef, pdefs) - ColormapPtr pmap; - int ndef; - xColorItem* pdefs; -{ - u_char rmap[256], gmap[256], bmap[256]; - SetupScreen (pmap->pScreen); - VisualPtr pVisual = pmap->pVisual; - int i; - - if (pPrivate->installedMap != NULL && pPrivate->installedMap != pmap) - return; - for (i = 0; i < 256; i++) { - rmap[i] = pmap->red[i].co.local.red >> 8; - gmap[i] = pmap->green[i].co.local.green >> 8; - bmap[i] = pmap->blue[i].co.local.blue >> 8; - } - while (ndef--) { - i = pdefs->pixel; - if (pdefs->flags & DoRed) - rmap[(i & pVisual->redMask) >> pVisual->offsetRed] = (pdefs->red >> 8); - if (pdefs->flags & DoGreen) - gmap[(i & pVisual->greenMask) >> pVisual->offsetGreen] = (pdefs->green >> 8); - if (pdefs->flags & DoBlue) - bmap[(i & pVisual->blueMask) >> pVisual->offsetBlue] = (pdefs->blue >> 8); - pdefs++; - } - CG24UpdateColormap (pmap->pScreen, 0, 256, rmap, gmap, bmap); -} - -#define CG8_COLOR_OFFSET 0x40000 - -static void CG24ScreenInit (pScreen) - ScreenPtr pScreen; -{ -#ifndef STATIC_COLOR - SetupScreen (pScreen); -#endif - int i; - - /* Make sure the overlay plane is disabled */ - for (i = 0; i < CG8_COLOR_OFFSET; i++) - sunFbs[pScreen->myNum].fb[i] = 0; - -#ifndef STATIC_COLOR - pScreen->InstallColormap = sunInstallColormap; - pScreen->UninstallColormap = sunUninstallColormap; - pScreen->ListInstalledColormaps = sunListInstalledColormaps; - pScreen->StoreColors = CG24StoreColors; - pPrivate->UpdateColormap = CG24UpdateColormap; - if (sunFlipPixels) { - Pixel pixel = pScreen->whitePixel; - pScreen->whitePixel = pScreen->blackPixel; - pScreen->blackPixel = pixel; - } -#endif -} - -Bool sunCG8Init (screen, pScreen, argc, argv) - int screen; /* what screen am I going to be */ - ScreenPtr pScreen; /* The Screen to initialize */ - int argc; /* The number of the Server's arguments. */ - char **argv; /* The arguments themselves. Don't change! */ -{ - sunFbs[screen].EnterLeave = (void (*)())NoopDDA; - return sunInitCommon (screen, pScreen, (off_t) 0, - cfb32ScreenInit, CG24ScreenInit, - cfbCreateDefColormap, sunSaveScreen, CG8_COLOR_OFFSET); -} - |