scrnintstr.h revision 4642e01f
105b261ecSmrg/***********************************************************
205b261ecSmrg
305b261ecSmrgCopyright 1987, 1998  The Open Group
405b261ecSmrg
505b261ecSmrgPermission to use, copy, modify, distribute, and sell this software and its
605b261ecSmrgdocumentation for any purpose is hereby granted without fee, provided that
705b261ecSmrgthe above copyright notice appear in all copies and that both that
805b261ecSmrgcopyright notice and this permission notice appear in supporting
905b261ecSmrgdocumentation.
1005b261ecSmrg
1105b261ecSmrgThe above copyright notice and this permission notice shall be included in
1205b261ecSmrgall copies or substantial portions of the Software.
1305b261ecSmrg
1405b261ecSmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1505b261ecSmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1605b261ecSmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
1705b261ecSmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
1805b261ecSmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
1905b261ecSmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2005b261ecSmrg
2105b261ecSmrgExcept as contained in this notice, the name of The Open Group shall not be
2205b261ecSmrgused in advertising or otherwise to promote the sale, use or other dealings
2305b261ecSmrgin this Software without prior written authorization from The Open Group.
2405b261ecSmrg
2505b261ecSmrg
2605b261ecSmrgCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
2705b261ecSmrg
2805b261ecSmrg                        All Rights Reserved
2905b261ecSmrg
3005b261ecSmrgPermission to use, copy, modify, and distribute this software and its
3105b261ecSmrgdocumentation for any purpose and without fee is hereby granted,
3205b261ecSmrgprovided that the above copyright notice appear in all copies and that
3305b261ecSmrgboth that copyright notice and this permission notice appear in
3405b261ecSmrgsupporting documentation, and that the name of Digital not be
3505b261ecSmrgused in advertising or publicity pertaining to distribution of the
3605b261ecSmrgsoftware without specific, written prior permission.
3705b261ecSmrg
3805b261ecSmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
3905b261ecSmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
4005b261ecSmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
4105b261ecSmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
4205b261ecSmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
4305b261ecSmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
4405b261ecSmrgSOFTWARE.
4505b261ecSmrg
4605b261ecSmrg******************************************************************/
4705b261ecSmrg
4805b261ecSmrg#ifndef SCREENINTSTRUCT_H
4905b261ecSmrg#define SCREENINTSTRUCT_H
5005b261ecSmrg
5105b261ecSmrg#include "screenint.h"
5205b261ecSmrg#include "regionstr.h"
5305b261ecSmrg#include "bstore.h"
5405b261ecSmrg#include "colormap.h"
5505b261ecSmrg#include "cursor.h"
5605b261ecSmrg#include "validate.h"
5705b261ecSmrg#include <X11/Xproto.h>
5805b261ecSmrg#include "dix.h"
594642e01fSmrg#include "privates.h"
6005b261ecSmrg
6105b261ecSmrgtypedef struct _PixmapFormat {
6205b261ecSmrg    unsigned char	depth;
6305b261ecSmrg    unsigned char	bitsPerPixel;
6405b261ecSmrg    unsigned char	scanlinePad;
6505b261ecSmrg    } PixmapFormatRec;
6605b261ecSmrg
6705b261ecSmrgtypedef struct _Visual {
6805b261ecSmrg    VisualID		vid;
6905b261ecSmrg    short		class;
7005b261ecSmrg    short		bitsPerRGBValue;
7105b261ecSmrg    short		ColormapEntries;
7205b261ecSmrg    short		nplanes;/* = log2 (ColormapEntries). This does not
7305b261ecSmrg				 * imply that the screen has this many planes.
7405b261ecSmrg				 * it may have more or fewer */
7505b261ecSmrg    unsigned long	redMask, greenMask, blueMask;
7605b261ecSmrg    int			offsetRed, offsetGreen, offsetBlue;
7705b261ecSmrg  } VisualRec;
7805b261ecSmrg
7905b261ecSmrgtypedef struct _Depth {
8005b261ecSmrg    unsigned char	depth;
8105b261ecSmrg    short		numVids;
8205b261ecSmrg    VisualID		*vids;    /* block of visual ids for this depth */
8305b261ecSmrg  } DepthRec;
8405b261ecSmrg
8505b261ecSmrg
8605b261ecSmrg/*
8705b261ecSmrg *  There is a typedef for each screen function pointer so that code that
8805b261ecSmrg *  needs to declare a screen function pointer (e.g. in a screen private
8905b261ecSmrg *  or as a local variable) can easily do so and retain full type checking.
9005b261ecSmrg */
9105b261ecSmrg
9205b261ecSmrgtypedef    Bool (* CloseScreenProcPtr)(
9305b261ecSmrg	int /*index*/,
9405b261ecSmrg	ScreenPtr /*pScreen*/);
9505b261ecSmrg
9605b261ecSmrgtypedef    void (* QueryBestSizeProcPtr)(
9705b261ecSmrg	int /*class*/,
9805b261ecSmrg	unsigned short * /*pwidth*/,
9905b261ecSmrg	unsigned short * /*pheight*/,
10005b261ecSmrg	ScreenPtr /*pScreen*/);
10105b261ecSmrg
10205b261ecSmrgtypedef    Bool (* SaveScreenProcPtr)(
10305b261ecSmrg	 ScreenPtr /*pScreen*/,
10405b261ecSmrg	 int /*on*/);
10505b261ecSmrg
10605b261ecSmrgtypedef    void (* GetImageProcPtr)(
10705b261ecSmrg	DrawablePtr /*pDrawable*/,
10805b261ecSmrg	int /*sx*/,
10905b261ecSmrg	int /*sy*/,
11005b261ecSmrg	int /*w*/,
11105b261ecSmrg	int /*h*/,
11205b261ecSmrg	unsigned int /*format*/,
11305b261ecSmrg	unsigned long /*planeMask*/,
11405b261ecSmrg	char * /*pdstLine*/);
11505b261ecSmrg
11605b261ecSmrgtypedef    void (* GetSpansProcPtr)(
11705b261ecSmrg	DrawablePtr /*pDrawable*/,
11805b261ecSmrg	int /*wMax*/,
11905b261ecSmrg	DDXPointPtr /*ppt*/,
12005b261ecSmrg	int* /*pwidth*/,
12105b261ecSmrg	int /*nspans*/,
12205b261ecSmrg	char * /*pdstStart*/);
12305b261ecSmrg
12405b261ecSmrgtypedef    void (* PointerNonInterestBoxProcPtr)(
1254642e01fSmrg        DeviceIntPtr /*pDev*/,
12605b261ecSmrg	ScreenPtr /*pScreen*/,
12705b261ecSmrg	BoxPtr /*pBox*/);
12805b261ecSmrg
12905b261ecSmrgtypedef    void (* SourceValidateProcPtr)(
13005b261ecSmrg	DrawablePtr /*pDrawable*/,
13105b261ecSmrg	int /*x*/,
13205b261ecSmrg	int /*y*/,
13305b261ecSmrg	int /*width*/,
13405b261ecSmrg	int /*height*/);
13505b261ecSmrg
13605b261ecSmrgtypedef    Bool (* CreateWindowProcPtr)(
13705b261ecSmrg	WindowPtr /*pWindow*/);
13805b261ecSmrg
13905b261ecSmrgtypedef    Bool (* DestroyWindowProcPtr)(
14005b261ecSmrg	WindowPtr /*pWindow*/);
14105b261ecSmrg
14205b261ecSmrgtypedef    Bool (* PositionWindowProcPtr)(
14305b261ecSmrg	WindowPtr /*pWindow*/,
14405b261ecSmrg	int /*x*/,
14505b261ecSmrg	int /*y*/);
14605b261ecSmrg
14705b261ecSmrgtypedef    Bool (* ChangeWindowAttributesProcPtr)(
14805b261ecSmrg	WindowPtr /*pWindow*/,
14905b261ecSmrg	unsigned long /*mask*/);
15005b261ecSmrg
15105b261ecSmrgtypedef    Bool (* RealizeWindowProcPtr)(
15205b261ecSmrg	WindowPtr /*pWindow*/);
15305b261ecSmrg
15405b261ecSmrgtypedef    Bool (* UnrealizeWindowProcPtr)(
15505b261ecSmrg	WindowPtr /*pWindow*/);
15605b261ecSmrg
15705b261ecSmrgtypedef    void (* RestackWindowProcPtr)(
15805b261ecSmrg	WindowPtr /*pWindow*/,
15905b261ecSmrg	WindowPtr /*pOldNextSib*/);
16005b261ecSmrg
16105b261ecSmrgtypedef    int  (* ValidateTreeProcPtr)(
16205b261ecSmrg	WindowPtr /*pParent*/,
16305b261ecSmrg	WindowPtr /*pChild*/,
16405b261ecSmrg	VTKind /*kind*/);
16505b261ecSmrg
16605b261ecSmrgtypedef    void (* PostValidateTreeProcPtr)(
16705b261ecSmrg	WindowPtr /*pParent*/,
16805b261ecSmrg	WindowPtr /*pChild*/,
16905b261ecSmrg	VTKind /*kind*/);
17005b261ecSmrg
17105b261ecSmrgtypedef    void (* WindowExposuresProcPtr)(
17205b261ecSmrg	WindowPtr /*pWindow*/,
17305b261ecSmrg	RegionPtr /*prgn*/,
17405b261ecSmrg	RegionPtr /*other_exposed*/);
17505b261ecSmrg
17605b261ecSmrgtypedef    void (* PaintWindowProcPtr)(
17705b261ecSmrg	WindowPtr /*pWindow*/,
17805b261ecSmrg	RegionPtr /*pRegion*/,
17905b261ecSmrg	int /*what*/);
18005b261ecSmrg
18105b261ecSmrgtypedef PaintWindowProcPtr PaintWindowBackgroundProcPtr;
18205b261ecSmrgtypedef PaintWindowProcPtr PaintWindowBorderProcPtr;
18305b261ecSmrg
18405b261ecSmrgtypedef    void (* CopyWindowProcPtr)(
18505b261ecSmrg	WindowPtr /*pWindow*/,
18605b261ecSmrg	DDXPointRec /*ptOldOrg*/,
18705b261ecSmrg	RegionPtr /*prgnSrc*/);
18805b261ecSmrg
18905b261ecSmrgtypedef    void (* ClearToBackgroundProcPtr)(
19005b261ecSmrg	WindowPtr /*pWindow*/,
19105b261ecSmrg	int /*x*/,
19205b261ecSmrg	int /*y*/,
19305b261ecSmrg	int /*w*/,
19405b261ecSmrg	int /*h*/,
19505b261ecSmrg	Bool /*generateExposures*/);
19605b261ecSmrg
19705b261ecSmrgtypedef    void (* ClipNotifyProcPtr)(
19805b261ecSmrg	WindowPtr /*pWindow*/,
19905b261ecSmrg	int /*dx*/,
20005b261ecSmrg	int /*dy*/);
20105b261ecSmrg
2024642e01fSmrg/* pixmap will exist only for the duration of the current rendering operation */
2034642e01fSmrg#define CREATE_PIXMAP_USAGE_SCRATCH                     1
2044642e01fSmrg/* pixmap will be the backing pixmap for a redirected window */
2054642e01fSmrg#define CREATE_PIXMAP_USAGE_BACKING_PIXMAP              2
2064642e01fSmrg/* pixmap will contain a glyph */
2074642e01fSmrg#define CREATE_PIXMAP_USAGE_GLYPH_PICTURE               3
2084642e01fSmrg
20905b261ecSmrgtypedef    PixmapPtr (* CreatePixmapProcPtr)(
21005b261ecSmrg	ScreenPtr /*pScreen*/,
21105b261ecSmrg	int /*width*/,
21205b261ecSmrg	int /*height*/,
2134642e01fSmrg	int /*depth*/,
2144642e01fSmrg	unsigned /*usage_hint*/);
21505b261ecSmrg
21605b261ecSmrgtypedef    Bool (* DestroyPixmapProcPtr)(
21705b261ecSmrg	PixmapPtr /*pPixmap*/);
21805b261ecSmrg
21905b261ecSmrgtypedef    void (* SaveDoomedAreasProcPtr)(
22005b261ecSmrg	WindowPtr /*pWindow*/,
22105b261ecSmrg	RegionPtr /*prgnSave*/,
22205b261ecSmrg	int /*xorg*/,
22305b261ecSmrg	int /*yorg*/);
22405b261ecSmrg
22505b261ecSmrgtypedef    RegionPtr (* RestoreAreasProcPtr)(
22605b261ecSmrg	WindowPtr /*pWindow*/,
22705b261ecSmrg	RegionPtr /*prgnRestore*/);
22805b261ecSmrg
22905b261ecSmrgtypedef    void (* ExposeCopyProcPtr)(
23005b261ecSmrg	WindowPtr /*pSrc*/,
23105b261ecSmrg	DrawablePtr /*pDst*/,
23205b261ecSmrg	GCPtr /*pGC*/,
23305b261ecSmrg	RegionPtr /*prgnExposed*/,
23405b261ecSmrg	int /*srcx*/,
23505b261ecSmrg	int /*srcy*/,
23605b261ecSmrg	int /*dstx*/,
23705b261ecSmrg	int /*dsty*/,
23805b261ecSmrg	unsigned long /*plane*/);
23905b261ecSmrg
24005b261ecSmrgtypedef    RegionPtr (* TranslateBackingStoreProcPtr)(
24105b261ecSmrg	WindowPtr /*pWindow*/,
24205b261ecSmrg	int /*windx*/,
24305b261ecSmrg	int /*windy*/,
24405b261ecSmrg	RegionPtr /*oldClip*/,
24505b261ecSmrg	int /*oldx*/,
24605b261ecSmrg	int /*oldy*/);
24705b261ecSmrg
24805b261ecSmrgtypedef    RegionPtr (* ClearBackingStoreProcPtr)(
24905b261ecSmrg	WindowPtr /*pWindow*/,
25005b261ecSmrg	int /*x*/,
25105b261ecSmrg	int /*y*/,
25205b261ecSmrg	int /*w*/,
25305b261ecSmrg	int /*h*/,
25405b261ecSmrg	Bool /*generateExposures*/);
25505b261ecSmrg
25605b261ecSmrgtypedef    void (* DrawGuaranteeProcPtr)(
25705b261ecSmrg	WindowPtr /*pWindow*/,
25805b261ecSmrg	GCPtr /*pGC*/,
25905b261ecSmrg	int /*guarantee*/);
26005b261ecSmrg
26105b261ecSmrgtypedef    Bool (* RealizeFontProcPtr)(
26205b261ecSmrg	ScreenPtr /*pScreen*/,
26305b261ecSmrg	FontPtr /*pFont*/);
26405b261ecSmrg
26505b261ecSmrgtypedef    Bool (* UnrealizeFontProcPtr)(
26605b261ecSmrg	ScreenPtr /*pScreen*/,
26705b261ecSmrg	FontPtr /*pFont*/);
26805b261ecSmrg
26905b261ecSmrgtypedef    void (* ConstrainCursorProcPtr)(
2704642e01fSmrg        DeviceIntPtr /*pDev*/,
27105b261ecSmrg	ScreenPtr /*pScreen*/,
27205b261ecSmrg	BoxPtr /*pBox*/);
27305b261ecSmrg
27405b261ecSmrgtypedef    void (* CursorLimitsProcPtr)(
2754642e01fSmrg        DeviceIntPtr /* pDev */,
27605b261ecSmrg	ScreenPtr /*pScreen*/,
27705b261ecSmrg	CursorPtr /*pCursor*/,
27805b261ecSmrg	BoxPtr /*pHotBox*/,
27905b261ecSmrg	BoxPtr /*pTopLeftBox*/);
28005b261ecSmrg
28105b261ecSmrgtypedef    Bool (* DisplayCursorProcPtr)(
2824642e01fSmrg        DeviceIntPtr /* pDev */,
28305b261ecSmrg	ScreenPtr /*pScreen*/,
28405b261ecSmrg	CursorPtr /*pCursor*/);
28505b261ecSmrg
28605b261ecSmrgtypedef    Bool (* RealizeCursorProcPtr)(
2874642e01fSmrg        DeviceIntPtr /* pDev */,
28805b261ecSmrg	ScreenPtr /*pScreen*/,
28905b261ecSmrg	CursorPtr /*pCursor*/);
29005b261ecSmrg
29105b261ecSmrgtypedef    Bool (* UnrealizeCursorProcPtr)(
2924642e01fSmrg        DeviceIntPtr /* pDev */,
29305b261ecSmrg	ScreenPtr /*pScreen*/,
29405b261ecSmrg	CursorPtr /*pCursor*/);
29505b261ecSmrg
29605b261ecSmrgtypedef    void (* RecolorCursorProcPtr)(
2974642e01fSmrg        DeviceIntPtr /* pDev */,
29805b261ecSmrg	ScreenPtr /*pScreen*/,
29905b261ecSmrg	CursorPtr /*pCursor*/,
30005b261ecSmrg	Bool /*displayed*/);
30105b261ecSmrg
30205b261ecSmrgtypedef    Bool (* SetCursorPositionProcPtr)(
3034642e01fSmrg        DeviceIntPtr /* pDev */,
30405b261ecSmrg	ScreenPtr /*pScreen*/,
30505b261ecSmrg	int /*x*/,
30605b261ecSmrg	int /*y*/,
30705b261ecSmrg	Bool /*generateEvent*/);
30805b261ecSmrg
30905b261ecSmrgtypedef    Bool (* CreateGCProcPtr)(
31005b261ecSmrg	GCPtr /*pGC*/);
31105b261ecSmrg
31205b261ecSmrgtypedef    Bool (* CreateColormapProcPtr)(
31305b261ecSmrg	ColormapPtr /*pColormap*/);
31405b261ecSmrg
31505b261ecSmrgtypedef    void (* DestroyColormapProcPtr)(
31605b261ecSmrg	ColormapPtr /*pColormap*/);
31705b261ecSmrg
31805b261ecSmrgtypedef    void (* InstallColormapProcPtr)(
31905b261ecSmrg	ColormapPtr /*pColormap*/);
32005b261ecSmrg
32105b261ecSmrgtypedef    void (* UninstallColormapProcPtr)(
32205b261ecSmrg	ColormapPtr /*pColormap*/);
32305b261ecSmrg
32405b261ecSmrgtypedef    int (* ListInstalledColormapsProcPtr) (
32505b261ecSmrg	ScreenPtr /*pScreen*/,
32605b261ecSmrg	XID* /*pmaps */);
32705b261ecSmrg
32805b261ecSmrgtypedef    void (* StoreColorsProcPtr)(
32905b261ecSmrg	ColormapPtr /*pColormap*/,
33005b261ecSmrg	int /*ndef*/,
33105b261ecSmrg	xColorItem * /*pdef*/);
33205b261ecSmrg
33305b261ecSmrgtypedef    void (* ResolveColorProcPtr)(
33405b261ecSmrg	unsigned short* /*pred*/,
33505b261ecSmrg	unsigned short* /*pgreen*/,
33605b261ecSmrg	unsigned short* /*pblue*/,
33705b261ecSmrg	VisualPtr /*pVisual*/);
33805b261ecSmrg
33905b261ecSmrgtypedef    RegionPtr (* BitmapToRegionProcPtr)(
34005b261ecSmrg	PixmapPtr /*pPix*/);
34105b261ecSmrg
34205b261ecSmrgtypedef    void (* SendGraphicsExposeProcPtr)(
34305b261ecSmrg	ClientPtr /*client*/,
34405b261ecSmrg	RegionPtr /*pRgn*/,
34505b261ecSmrg	XID /*drawable*/,
34605b261ecSmrg	int /*major*/,
34705b261ecSmrg	int /*minor*/);
34805b261ecSmrg
34905b261ecSmrgtypedef    void (* ScreenBlockHandlerProcPtr)(
35005b261ecSmrg	int /*screenNum*/,
35105b261ecSmrg	pointer /*blockData*/,
35205b261ecSmrg	pointer /*pTimeout*/,
35305b261ecSmrg	pointer /*pReadmask*/);
35405b261ecSmrg
35505b261ecSmrgtypedef    void (* ScreenWakeupHandlerProcPtr)(
35605b261ecSmrg	 int /*screenNum*/,
35705b261ecSmrg	 pointer /*wakeupData*/,
35805b261ecSmrg	 unsigned long /*result*/,
35905b261ecSmrg	 pointer /*pReadMask*/);
36005b261ecSmrg
36105b261ecSmrgtypedef    Bool (* CreateScreenResourcesProcPtr)(
36205b261ecSmrg	ScreenPtr /*pScreen*/);
36305b261ecSmrg
36405b261ecSmrgtypedef    Bool (* ModifyPixmapHeaderProcPtr)(
36505b261ecSmrg	PixmapPtr /*pPixmap*/,
36605b261ecSmrg	int /*width*/,
36705b261ecSmrg	int /*height*/,
36805b261ecSmrg	int /*depth*/,
36905b261ecSmrg	int /*bitsPerPixel*/,
37005b261ecSmrg	int /*devKind*/,
37105b261ecSmrg	pointer /*pPixData*/);
37205b261ecSmrg
37305b261ecSmrgtypedef    PixmapPtr (* GetWindowPixmapProcPtr)(
37405b261ecSmrg	WindowPtr /*pWin*/);
37505b261ecSmrg
37605b261ecSmrgtypedef    void (* SetWindowPixmapProcPtr)(
37705b261ecSmrg	WindowPtr /*pWin*/,
37805b261ecSmrg	PixmapPtr /*pPix*/);
37905b261ecSmrg
38005b261ecSmrgtypedef    PixmapPtr (* GetScreenPixmapProcPtr)(
38105b261ecSmrg	ScreenPtr /*pScreen*/);
38205b261ecSmrg
38305b261ecSmrgtypedef    void (* SetScreenPixmapProcPtr)(
38405b261ecSmrg	PixmapPtr /*pPix*/);
38505b261ecSmrg
38605b261ecSmrgtypedef    void (* MarkWindowProcPtr)(
38705b261ecSmrg	WindowPtr /*pWin*/);
38805b261ecSmrg
38905b261ecSmrgtypedef    Bool (* MarkOverlappedWindowsProcPtr)(
39005b261ecSmrg	WindowPtr /*parent*/,
39105b261ecSmrg	WindowPtr /*firstChild*/,
39205b261ecSmrg	WindowPtr * /*pLayerWin*/);
39305b261ecSmrg
39405b261ecSmrgtypedef    Bool (* ChangeSaveUnderProcPtr)(
39505b261ecSmrg	WindowPtr /*pLayerWin*/,
39605b261ecSmrg	WindowPtr /*firstChild*/);
39705b261ecSmrg
39805b261ecSmrgtypedef    void (* PostChangeSaveUnderProcPtr)(
39905b261ecSmrg	WindowPtr /*pLayerWin*/,
40005b261ecSmrg	WindowPtr /*firstChild*/);
40105b261ecSmrg
40205b261ecSmrgtypedef    void (* MoveWindowProcPtr)(
40305b261ecSmrg	WindowPtr /*pWin*/,
40405b261ecSmrg	int /*x*/,
40505b261ecSmrg	int /*y*/,
40605b261ecSmrg	WindowPtr /*pSib*/,
40705b261ecSmrg	VTKind /*kind*/);
40805b261ecSmrg
40905b261ecSmrgtypedef    void (* ResizeWindowProcPtr)(
41005b261ecSmrg    WindowPtr /*pWin*/,
41105b261ecSmrg    int /*x*/,
41205b261ecSmrg    int /*y*/,
41305b261ecSmrg    unsigned int /*w*/,
41405b261ecSmrg    unsigned int /*h*/,
41505b261ecSmrg    WindowPtr /*pSib*/
41605b261ecSmrg);
41705b261ecSmrg
41805b261ecSmrgtypedef    WindowPtr (* GetLayerWindowProcPtr)(
41905b261ecSmrg    WindowPtr /*pWin*/
42005b261ecSmrg);
42105b261ecSmrg
42205b261ecSmrgtypedef    void (* HandleExposuresProcPtr)(
42305b261ecSmrg    WindowPtr /*pWin*/);
42405b261ecSmrg
42505b261ecSmrgtypedef    void (* ReparentWindowProcPtr)(
42605b261ecSmrg    WindowPtr /*pWin*/,
42705b261ecSmrg    WindowPtr /*pPriorParent*/);
42805b261ecSmrg
42905b261ecSmrgtypedef    void (* SetShapeProcPtr)(
43005b261ecSmrg	WindowPtr /*pWin*/);
43105b261ecSmrg
43205b261ecSmrgtypedef    void (* ChangeBorderWidthProcPtr)(
43305b261ecSmrg	WindowPtr /*pWin*/,
43405b261ecSmrg	unsigned int /*width*/);
43505b261ecSmrg
43605b261ecSmrgtypedef    void (* MarkUnrealizedWindowProcPtr)(
43705b261ecSmrg	WindowPtr /*pChild*/,
43805b261ecSmrg	WindowPtr /*pWin*/,
43905b261ecSmrg	Bool /*fromConfigure*/);
44005b261ecSmrg
4414642e01fSmrgtypedef    Bool (* DeviceCursorInitializeProcPtr)(
4424642e01fSmrg        DeviceIntPtr /* pDev */,
4434642e01fSmrg        ScreenPtr    /* pScreen */);
4444642e01fSmrg
4454642e01fSmrgtypedef    void (* DeviceCursorCleanupProcPtr)(
4464642e01fSmrg        DeviceIntPtr /* pDev */,
4474642e01fSmrg        ScreenPtr    /* pScreen */);
4484642e01fSmrg
44905b261ecSmrgtypedef struct _Screen {
45005b261ecSmrg    int			myNum;	/* index of this instance in Screens[] */
45105b261ecSmrg    ATOM		id;
45205b261ecSmrg    short		width, height;
45305b261ecSmrg    short		mmWidth, mmHeight;
45405b261ecSmrg    short		numDepths;
45505b261ecSmrg    unsigned char      	rootDepth;
45605b261ecSmrg    DepthPtr       	allowedDepths;
45705b261ecSmrg    unsigned long      	rootVisual;
45805b261ecSmrg    unsigned long	defColormap;
45905b261ecSmrg    short		minInstalledCmaps, maxInstalledCmaps;
46005b261ecSmrg    char                backingStoreSupport, saveUnderSupport;
46105b261ecSmrg    unsigned long	whitePixel, blackPixel;
46205b261ecSmrg    unsigned long	rgf;	/* array of flags; she's -- HUNGARIAN */
46305b261ecSmrg    GCPtr		GCperDepth[MAXFORMATS+1];
46405b261ecSmrg			/* next field is a stipple to use as default in
46505b261ecSmrg			   a GC.  we don't build default tiles of all depths
46605b261ecSmrg			   because they are likely to be of a color
46705b261ecSmrg			   different from the default fg pixel, so
46805b261ecSmrg			   we don't win anything by building
46905b261ecSmrg			   a standard one.
47005b261ecSmrg			*/
47105b261ecSmrg    PixmapPtr		PixmapPerDepth[1];
47205b261ecSmrg    pointer		devPrivate;
47305b261ecSmrg    short       	numVisuals;
47405b261ecSmrg    VisualPtr		visuals;
47505b261ecSmrg
47605b261ecSmrg    /* Random screen procedures */
47705b261ecSmrg
47805b261ecSmrg    CloseScreenProcPtr		CloseScreen;
47905b261ecSmrg    QueryBestSizeProcPtr	QueryBestSize;
48005b261ecSmrg    SaveScreenProcPtr		SaveScreen;
48105b261ecSmrg    GetImageProcPtr		GetImage;
48205b261ecSmrg    GetSpansProcPtr		GetSpans;
48305b261ecSmrg    PointerNonInterestBoxProcPtr PointerNonInterestBox;
48405b261ecSmrg    SourceValidateProcPtr	SourceValidate;
48505b261ecSmrg
48605b261ecSmrg    /* Window Procedures */
48705b261ecSmrg
48805b261ecSmrg    CreateWindowProcPtr		CreateWindow;
48905b261ecSmrg    DestroyWindowProcPtr	DestroyWindow;
49005b261ecSmrg    PositionWindowProcPtr	PositionWindow;
49105b261ecSmrg    ChangeWindowAttributesProcPtr ChangeWindowAttributes;
49205b261ecSmrg    RealizeWindowProcPtr	RealizeWindow;
49305b261ecSmrg    UnrealizeWindowProcPtr	UnrealizeWindow;
49405b261ecSmrg    ValidateTreeProcPtr		ValidateTree;
49505b261ecSmrg    PostValidateTreeProcPtr	PostValidateTree;
49605b261ecSmrg    WindowExposuresProcPtr	WindowExposures;
4974642e01fSmrg    PaintWindowBackgroundProcPtr PaintWindowBackground; /** unused */
4984642e01fSmrg    PaintWindowBorderProcPtr	PaintWindowBorder; /** unused */
49905b261ecSmrg    CopyWindowProcPtr		CopyWindow;
50005b261ecSmrg    ClearToBackgroundProcPtr	ClearToBackground;
50105b261ecSmrg    ClipNotifyProcPtr		ClipNotify;
50205b261ecSmrg    RestackWindowProcPtr	RestackWindow;
50305b261ecSmrg
50405b261ecSmrg    /* Pixmap procedures */
50505b261ecSmrg
50605b261ecSmrg    CreatePixmapProcPtr		CreatePixmap;
50705b261ecSmrg    DestroyPixmapProcPtr	DestroyPixmap;
50805b261ecSmrg
50905b261ecSmrg    /* Backing store procedures */
51005b261ecSmrg
51105b261ecSmrg    SaveDoomedAreasProcPtr	SaveDoomedAreas;
51205b261ecSmrg    RestoreAreasProcPtr		RestoreAreas;
51305b261ecSmrg    ExposeCopyProcPtr		ExposeCopy;
51405b261ecSmrg    TranslateBackingStoreProcPtr TranslateBackingStore;
51505b261ecSmrg    ClearBackingStoreProcPtr	ClearBackingStore;
51605b261ecSmrg    DrawGuaranteeProcPtr	DrawGuarantee;
51705b261ecSmrg    /*
51805b261ecSmrg     * A read/write copy of the lower level backing store vector is needed now
51905b261ecSmrg     * that the functions can be wrapped.
52005b261ecSmrg     */
52105b261ecSmrg    BSFuncRec			BackingStoreFuncs;
52205b261ecSmrg
52305b261ecSmrg    /* Font procedures */
52405b261ecSmrg
52505b261ecSmrg    RealizeFontProcPtr		RealizeFont;
52605b261ecSmrg    UnrealizeFontProcPtr	UnrealizeFont;
52705b261ecSmrg
52805b261ecSmrg    /* Cursor Procedures */
52905b261ecSmrg
53005b261ecSmrg    ConstrainCursorProcPtr	ConstrainCursor;
53105b261ecSmrg    CursorLimitsProcPtr		CursorLimits;
53205b261ecSmrg    DisplayCursorProcPtr	DisplayCursor;
53305b261ecSmrg    RealizeCursorProcPtr	RealizeCursor;
53405b261ecSmrg    UnrealizeCursorProcPtr	UnrealizeCursor;
53505b261ecSmrg    RecolorCursorProcPtr	RecolorCursor;
53605b261ecSmrg    SetCursorPositionProcPtr	SetCursorPosition;
53705b261ecSmrg
53805b261ecSmrg    /* GC procedures */
53905b261ecSmrg
54005b261ecSmrg    CreateGCProcPtr		CreateGC;
54105b261ecSmrg
54205b261ecSmrg    /* Colormap procedures */
54305b261ecSmrg
54405b261ecSmrg    CreateColormapProcPtr	CreateColormap;
54505b261ecSmrg    DestroyColormapProcPtr	DestroyColormap;
54605b261ecSmrg    InstallColormapProcPtr	InstallColormap;
54705b261ecSmrg    UninstallColormapProcPtr	UninstallColormap;
54805b261ecSmrg    ListInstalledColormapsProcPtr ListInstalledColormaps;
54905b261ecSmrg    StoreColorsProcPtr		StoreColors;
55005b261ecSmrg    ResolveColorProcPtr		ResolveColor;
55105b261ecSmrg
55205b261ecSmrg    /* Region procedures */
55305b261ecSmrg
55405b261ecSmrg    BitmapToRegionProcPtr	BitmapToRegion;
55505b261ecSmrg    SendGraphicsExposeProcPtr	SendGraphicsExpose;
55605b261ecSmrg
55705b261ecSmrg    /* os layer procedures */
55805b261ecSmrg
55905b261ecSmrg    ScreenBlockHandlerProcPtr	BlockHandler;
56005b261ecSmrg    ScreenWakeupHandlerProcPtr	WakeupHandler;
56105b261ecSmrg
56205b261ecSmrg    pointer blockData;
56305b261ecSmrg    pointer wakeupData;
56405b261ecSmrg
56505b261ecSmrg    /* anybody can get a piece of this array */
5664642e01fSmrg    PrivateRec	*devPrivates;
56705b261ecSmrg
56805b261ecSmrg    CreateScreenResourcesProcPtr CreateScreenResources;
56905b261ecSmrg    ModifyPixmapHeaderProcPtr	ModifyPixmapHeader;
57005b261ecSmrg
57105b261ecSmrg    GetWindowPixmapProcPtr	GetWindowPixmap;
57205b261ecSmrg    SetWindowPixmapProcPtr	SetWindowPixmap;
57305b261ecSmrg    GetScreenPixmapProcPtr	GetScreenPixmap;
57405b261ecSmrg    SetScreenPixmapProcPtr	SetScreenPixmap;
57505b261ecSmrg
57605b261ecSmrg    PixmapPtr pScratchPixmap;		/* scratch pixmap "pool" */
57705b261ecSmrg
57805b261ecSmrg    unsigned int		totalPixmapSize;
57905b261ecSmrg
58005b261ecSmrg    MarkWindowProcPtr		MarkWindow;
58105b261ecSmrg    MarkOverlappedWindowsProcPtr MarkOverlappedWindows;
58205b261ecSmrg    ChangeSaveUnderProcPtr	ChangeSaveUnder;
58305b261ecSmrg    PostChangeSaveUnderProcPtr	PostChangeSaveUnder;
58405b261ecSmrg    MoveWindowProcPtr		MoveWindow;
58505b261ecSmrg    ResizeWindowProcPtr		ResizeWindow;
58605b261ecSmrg    GetLayerWindowProcPtr	GetLayerWindow;
58705b261ecSmrg    HandleExposuresProcPtr	HandleExposures;
58805b261ecSmrg    ReparentWindowProcPtr	ReparentWindow;
58905b261ecSmrg
59005b261ecSmrg    SetShapeProcPtr		SetShape;
59105b261ecSmrg
59205b261ecSmrg    ChangeBorderWidthProcPtr	ChangeBorderWidth;
59305b261ecSmrg    MarkUnrealizedWindowProcPtr	MarkUnrealizedWindow;
59405b261ecSmrg
5954642e01fSmrg    /* Device cursor procedures */
5964642e01fSmrg    DeviceCursorInitializeProcPtr DeviceCursorInitialize;
5974642e01fSmrg    DeviceCursorCleanupProcPtr    DeviceCursorCleanup;
59805b261ecSmrg} ScreenRec;
59905b261ecSmrg
60005b261ecSmrgtypedef struct _ScreenInfo {
60105b261ecSmrg    int		imageByteOrder;
60205b261ecSmrg    int		bitmapScanlineUnit;
60305b261ecSmrg    int		bitmapScanlinePad;
60405b261ecSmrg    int		bitmapBitOrder;
60505b261ecSmrg    int		numPixmapFormats;
60605b261ecSmrg    PixmapFormatRec
60705b261ecSmrg		formats[MAXFORMATS];
60805b261ecSmrg    int		arraySize;
60905b261ecSmrg    int		numScreens;
61005b261ecSmrg    ScreenPtr	screens[MAXSCREENS];
6114642e01fSmrg    int		unused;
61205b261ecSmrg} ScreenInfo;
61305b261ecSmrg
61405b261ecSmrgextern ScreenInfo screenInfo;
61505b261ecSmrg
61605b261ecSmrgextern void InitOutput(
61705b261ecSmrg    ScreenInfo 	* /*pScreenInfo*/,
61805b261ecSmrg    int     	/*argc*/,
61905b261ecSmrg    char    	** /*argv*/);
62005b261ecSmrg
62105b261ecSmrg#endif /* SCREENINTSTRUCT_H */
622