189 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C
		
	
	
	
/*
 | 
						|
 * $Id$
 | 
						|
 *
 | 
						|
 * Copyright © 2004 Keith Packard
 | 
						|
 *
 | 
						|
 * 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, and that the name of Keith Packard not be used in
 | 
						|
 * advertising or publicity pertaining to distribution of the software without
 | 
						|
 * specific, written prior permission.  Keith Packard makes no
 | 
						|
 * representations about the suitability of this software for any purpose.  It
 | 
						|
 * is provided "as is" without express or implied warranty.
 | 
						|
 *
 | 
						|
 * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 | 
						|
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
 | 
						|
 * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 | 
						|
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 | 
						|
 * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 | 
						|
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 | 
						|
 * PERFORMANCE OF THIS SOFTWARE.
 | 
						|
 */
 | 
						|
 | 
						|
#include "xgl.h"
 | 
						|
 | 
						|
typedef struct _xglDepths {
 | 
						|
    CARD8   depth;
 | 
						|
    CARD8   bpp;
 | 
						|
} XglDepths;
 | 
						|
 | 
						|
static XglDepths    xglDepths[] = {
 | 
						|
    { 1, 1 },
 | 
						|
    { 4, 4 },
 | 
						|
    { 8, 8 },
 | 
						|
    { 15, 16 },
 | 
						|
    { 16, 16 },
 | 
						|
    { 24, 32 },
 | 
						|
    { 32, 32 }
 | 
						|
};
 | 
						|
 | 
						|
#define NUM_XGL_DEPTHS (sizeof (xglDepths) / sizeof (xglDepths[0]))
 | 
						|
 | 
						|
static void
 | 
						|
xglSetPixmapFormats (ScreenInfo *pScreenInfo)
 | 
						|
{
 | 
						|
    int	    i;
 | 
						|
    
 | 
						|
    pScreenInfo->imageByteOrder     = IMAGE_BYTE_ORDER;
 | 
						|
    pScreenInfo->bitmapScanlineUnit = BITMAP_SCANLINE_UNIT;
 | 
						|
    pScreenInfo->bitmapScanlinePad  = BITMAP_SCANLINE_PAD;
 | 
						|
    pScreenInfo->bitmapBitOrder     = BITMAP_BIT_ORDER;
 | 
						|
    
 | 
						|
    pScreenInfo->numPixmapFormats = 0;
 | 
						|
    for (i = 0; i < NUM_XGL_DEPTHS; i++)
 | 
						|
    {
 | 
						|
	PixmapFormatRec *format = &pScreenInfo->formats[pScreenInfo->numPixmapFormats++];
 | 
						|
	format->depth = xglDepths[i].depth;
 | 
						|
	format->bitsPerPixel = xglDepths[i].bpp;
 | 
						|
        format->scanlinePad = BITMAP_SCANLINE_PAD;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
#define xglQueryBestSize	(void *) NoopDDA
 | 
						|
#define xglSaveScreen		(void *) NoopDDA
 | 
						|
#define miGetImage		(void *) NoopDDA
 | 
						|
#define xglCreateWindow		(void *) NoopDDA
 | 
						|
#define xglDestroyWindow	(void *) NoopDDA
 | 
						|
#define xglPositionWindow	(void *) NoopDDA
 | 
						|
#define xglChangeWindowAttributes	(void *) NoopDDA
 | 
						|
#define xglRealizeWindow	(void *) NoopDDA
 | 
						|
#define xglUnrealizeWindow	(void *) NoopDDA
 | 
						|
#define xglPaintWindowBackground	(void *) NoopDDA
 | 
						|
#define xglPaintWindowBorder	(void *) NoopDDA
 | 
						|
#define xglCopyWindow		(void *) NoopDDA
 | 
						|
#define xglRealizeFont		(void *) NoopDDA
 | 
						|
#define xglUnrealizeFont	(void *) NoopDDA
 | 
						|
 | 
						|
#define xglConstrainCursor 	(void *) NoopDDA
 | 
						|
#define xglCursorLimits 	(void *) NoopDDA
 | 
						|
#define xglDisplayCursor 	(void *) NoopDDA
 | 
						|
#define xglRealizeCursor 	(void *) NoopDDA
 | 
						|
#define xglUnrealizeCursor 	(void *) NoopDDA
 | 
						|
#define xglRecolorCursor 	(void *) NoopDDA
 | 
						|
#define xglSetCursorPosition 	(void *) NoopDDA
 | 
						|
 | 
						|
#define xglCreateColormap	(void *) NoopDDA
 | 
						|
#define xglDestroyColormap	(void *) NoopDDA
 | 
						|
#define xglInstallColormap	(void *) NoopDDA
 | 
						|
#define xglUninstallColormap	(void *) NoopDDA
 | 
						|
#define xglListInstalledColormaps	(void *) NoopDDA
 | 
						|
#define xglStoreColors		(void *) NoopDDA
 | 
						|
#define xglResolveColor		(void *) NoopDDA
 | 
						|
#define xglBitmapToRegion	(void *) NoopDDA
 | 
						|
 | 
						|
static PixmapPtr
 | 
						|
xglGetWindowPixmap (WindowPtr pWin)
 | 
						|
{
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 | 
						|
static void
 | 
						|
xglSetWindowPixmap (WindowPtr pWin, PixmapPtr pPixmap)
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
static void
 | 
						|
xglSetupScreen (ScreenPtr pScreen)
 | 
						|
{
 | 
						|
    pScreen->defColormap = FakeClientID (0);
 | 
						|
    pScreen->blackPixel = pScreen->whitePixel = (Pixel) 0;
 | 
						|
    
 | 
						|
    pScreen->QueryBestSize = xglQueryBestSize;
 | 
						|
    pScreen->SaveScreen = xglSaveScreen;
 | 
						|
    pScreen->GetImage = miGetImage;
 | 
						|
    pScreen->GetSpans = xglGetSpans;
 | 
						|
    
 | 
						|
    pScreen->CreateWindow = xglCreateWindow;
 | 
						|
    pScreen->DestroyWindow = xglDestroyWindow;
 | 
						|
    pScreen->PositionWindow = xglPositionWindow;
 | 
						|
    pScreen->ChangeWindowAttributes = xglChangeWindowAttributes;
 | 
						|
    pScreen->RealizeWindow = xglRealizeWindow;
 | 
						|
    pScreen->UnrealizeWindow = xglUnrealizeWindow;
 | 
						|
    pScreen->PaintWindowBackground = xglPaintWindowBackground;
 | 
						|
    pScreen->PaintWindowBorder = xglPaintWindowBorder;
 | 
						|
    pScreen->CopyWindow = xglCopyWindow;
 | 
						|
    
 | 
						|
    pScreen->CreatePixmap = xglCreatePixmap;
 | 
						|
    pScreen->DestroyPixmap = xglDestroyPixmap;
 | 
						|
    
 | 
						|
    pScreen->RealizeFont = xglRealizeFont;
 | 
						|
    pScreen->UnrealizeFont = xglUnrealizeFont;
 | 
						|
 | 
						|
    pScreen->ConstrainCursor = xglConstrainCursor;
 | 
						|
    pScreen->CursorLimits = xglCursorLimits;
 | 
						|
    pScreen->DisplayCursor = xglDisplayCursor;
 | 
						|
    pScreen->RealizeCursor = xglRealizeCursor;
 | 
						|
    pScreen->UnrealizeCursor = xglUnrealizeCursor;
 | 
						|
    pScreen->RecolorCursor = xglRecolorCursor;
 | 
						|
    pScreen->SetCursorPosition = xglSetCursorPosition;
 | 
						|
    
 | 
						|
    pScreen->CreateGC = xglCreateGC;
 | 
						|
    
 | 
						|
    pScreen->CreateColormap = miInitializeColormap;
 | 
						|
    pScreen->DestroyColormap = xglDestroyColormap;
 | 
						|
    pScreen->InstallColormap = miInstallColormap;
 | 
						|
    pScreen->UninstallColormap = miUninstallColormap;
 | 
						|
    pScreen->ListInstalledColormaps = miListInstalledColormaps;
 | 
						|
    pScreen->StoreColors = xglStoreColors;
 | 
						|
    pScreen->ResolveColor = miResolveColor;
 | 
						|
    
 | 
						|
    pScreen->BitmapToRegion = xglBitmapToRegion;
 | 
						|
 | 
						|
    pScreen->GetWindowPixmap = xglGetWindowPixmap;
 | 
						|
    pScreen->SetWindowPixmap = xglSetWindowPixmap;
 | 
						|
}
 | 
						|
 | 
						|
static Bool
 | 
						|
xglScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
 | 
						|
{
 | 
						|
    VisualPtr	visuals;
 | 
						|
    DepthPtr	depths;
 | 
						|
    int		nvisuals;
 | 
						|
    int		ndepth;
 | 
						|
    int		rootDepth;
 | 
						|
    VisualID	defaultVisual;
 | 
						|
    
 | 
						|
    rootDepth = 24;
 | 
						|
    miInitVisuals (&visuals, &depths, &nvisuals, 
 | 
						|
		   &ndepth, &rootDepth, &defaultVisual,
 | 
						|
		   1 << 31, 8, -1);
 | 
						|
    miScreenInit (pScreen, 0, 800, 600, 96, 96, 800, rootDepth,
 | 
						|
		  ndepth, depths, defaultVisual, nvisuals, visuals);
 | 
						|
    xglSetupScreen (pScreen);
 | 
						|
    if (!miCreateDefColormap (pScreen))
 | 
						|
	return FALSE;
 | 
						|
 | 
						|
    return TRUE;
 | 
						|
}
 | 
						|
    
 | 
						|
void
 | 
						|
InitOutput (ScreenInfo *pScreenInfo, int argc, char **argv)
 | 
						|
{
 | 
						|
    xglSetPixmapFormats (pScreenInfo);
 | 
						|
 | 
						|
    AddScreen (xglScreenInit, argc, argv);
 | 
						|
}
 | 
						|
 |