1706f2543Smrg/***********************************************************
2706f2543Smrg
3706f2543SmrgCopyright 1987, 1998  The Open Group
4706f2543Smrg
5706f2543SmrgPermission to use, copy, modify, distribute, and sell this software and its
6706f2543Smrgdocumentation for any purpose is hereby granted without fee, provided that
7706f2543Smrgthe above copyright notice appear in all copies and that both that
8706f2543Smrgcopyright notice and this permission notice appear in supporting
9706f2543Smrgdocumentation.
10706f2543Smrg
11706f2543SmrgThe above copyright notice and this permission notice shall be included in
12706f2543Smrgall copies or substantial portions of the Software.
13706f2543Smrg
14706f2543SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15706f2543SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16706f2543SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
17706f2543SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18706f2543SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19706f2543SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20706f2543Smrg
21706f2543SmrgExcept as contained in this notice, the name of The Open Group shall not be
22706f2543Smrgused in advertising or otherwise to promote the sale, use or other dealings
23706f2543Smrgin this Software without prior written authorization from The Open Group.
24706f2543Smrg
25706f2543Smrg
26706f2543SmrgCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
27706f2543Smrg
28706f2543Smrg                        All Rights Reserved
29706f2543Smrg
30706f2543SmrgPermission to use, copy, modify, and distribute this software and its
31706f2543Smrgdocumentation for any purpose and without fee is hereby granted,
32706f2543Smrgprovided that the above copyright notice appear in all copies and that
33706f2543Smrgboth that copyright notice and this permission notice appear in
34706f2543Smrgsupporting documentation, and that the name of Digital not be
35706f2543Smrgused in advertising or publicity pertaining to distribution of the
36706f2543Smrgsoftware without specific, written prior permission.
37706f2543Smrg
38706f2543SmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
39706f2543SmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
40706f2543SmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
41706f2543SmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
42706f2543SmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
43706f2543SmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
44706f2543SmrgSOFTWARE.
45706f2543Smrg
46706f2543Smrg******************************************************************/
47706f2543Smrg
48706f2543Smrg#ifndef SCREENINTSTRUCT_H
49706f2543Smrg#define SCREENINTSTRUCT_H
50706f2543Smrg
51706f2543Smrg#include "screenint.h"
52706f2543Smrg#include "regionstr.h"
53706f2543Smrg#include "colormap.h"
54706f2543Smrg#include "cursor.h"
55706f2543Smrg#include "validate.h"
56706f2543Smrg#include <X11/Xproto.h>
57706f2543Smrg#include "dix.h"
58706f2543Smrg#include "privates.h"
59706f2543Smrg
60706f2543Smrgtypedef struct _PixmapFormat {
61706f2543Smrg    unsigned char	depth;
62706f2543Smrg    unsigned char	bitsPerPixel;
63706f2543Smrg    unsigned char	scanlinePad;
64706f2543Smrg    } PixmapFormatRec;
65706f2543Smrg
66706f2543Smrgtypedef struct _Visual {
67706f2543Smrg    VisualID		vid;
68706f2543Smrg    short		class;
69706f2543Smrg    short		bitsPerRGBValue;
70706f2543Smrg    short		ColormapEntries;
71706f2543Smrg    short		nplanes;/* = log2 (ColormapEntries). This does not
72706f2543Smrg				 * imply that the screen has this many planes.
73706f2543Smrg				 * it may have more or fewer */
74706f2543Smrg    unsigned long	redMask, greenMask, blueMask;
75706f2543Smrg    int			offsetRed, offsetGreen, offsetBlue;
76706f2543Smrg  } VisualRec;
77706f2543Smrg
78706f2543Smrgtypedef struct _Depth {
79706f2543Smrg    unsigned char	depth;
80706f2543Smrg    short		numVids;
81706f2543Smrg    VisualID		*vids;    /* block of visual ids for this depth */
82706f2543Smrg  } DepthRec;
83706f2543Smrg
84706f2543Smrgtypedef struct _ScreenSaverStuff {
85706f2543Smrg    WindowPtr pWindow;
86706f2543Smrg    XID       wid;
87706f2543Smrg    char      blanked;
88706f2543Smrg    Bool      (*ExternalScreenSaver)(
89706f2543Smrg	ScreenPtr	/*pScreen*/,
90706f2543Smrg	int		/*xstate*/,
91706f2543Smrg	Bool		/*force*/);
92706f2543Smrg} ScreenSaverStuffRec;
93706f2543Smrg
94706f2543Smrg
95706f2543Smrg/*
96706f2543Smrg *  There is a typedef for each screen function pointer so that code that
97706f2543Smrg *  needs to declare a screen function pointer (e.g. in a screen private
98706f2543Smrg *  or as a local variable) can easily do so and retain full type checking.
99706f2543Smrg */
100706f2543Smrg
101706f2543Smrgtypedef    Bool (* CloseScreenProcPtr)(
102706f2543Smrg	int /*index*/,
103706f2543Smrg	ScreenPtr /*pScreen*/);
104706f2543Smrg
105706f2543Smrgtypedef    void (* QueryBestSizeProcPtr)(
106706f2543Smrg	int /*class*/,
107706f2543Smrg	unsigned short * /*pwidth*/,
108706f2543Smrg	unsigned short * /*pheight*/,
109706f2543Smrg	ScreenPtr /*pScreen*/);
110706f2543Smrg
111706f2543Smrgtypedef    Bool (* SaveScreenProcPtr)(
112706f2543Smrg	 ScreenPtr /*pScreen*/,
113706f2543Smrg	 int /*on*/);
114706f2543Smrg
115706f2543Smrgtypedef    void (* GetImageProcPtr)(
116706f2543Smrg	DrawablePtr /*pDrawable*/,
117706f2543Smrg	int /*sx*/,
118706f2543Smrg	int /*sy*/,
119706f2543Smrg	int /*w*/,
120706f2543Smrg	int /*h*/,
121706f2543Smrg	unsigned int /*format*/,
122706f2543Smrg	unsigned long /*planeMask*/,
123706f2543Smrg	char * /*pdstLine*/);
124706f2543Smrg
125706f2543Smrgtypedef    void (* GetSpansProcPtr)(
126706f2543Smrg	DrawablePtr /*pDrawable*/,
127706f2543Smrg	int /*wMax*/,
128706f2543Smrg	DDXPointPtr /*ppt*/,
129706f2543Smrg	int* /*pwidth*/,
130706f2543Smrg	int /*nspans*/,
131706f2543Smrg	char * /*pdstStart*/);
132706f2543Smrg
133706f2543Smrgtypedef    void (* SourceValidateProcPtr)(
134706f2543Smrg	DrawablePtr /*pDrawable*/,
135706f2543Smrg	int /*x*/,
136706f2543Smrg	int /*y*/,
137706f2543Smrg	int /*width*/,
138706f2543Smrg	int /*height*/,
139706f2543Smrg	unsigned int /*subWindowMode*/);
140706f2543Smrg
141706f2543Smrgtypedef    Bool (* CreateWindowProcPtr)(
142706f2543Smrg	WindowPtr /*pWindow*/);
143706f2543Smrg
144706f2543Smrgtypedef    Bool (* DestroyWindowProcPtr)(
145706f2543Smrg	WindowPtr /*pWindow*/);
146706f2543Smrg
147706f2543Smrgtypedef    Bool (* PositionWindowProcPtr)(
148706f2543Smrg	WindowPtr /*pWindow*/,
149706f2543Smrg	int /*x*/,
150706f2543Smrg	int /*y*/);
151706f2543Smrg
152706f2543Smrgtypedef    Bool (* ChangeWindowAttributesProcPtr)(
153706f2543Smrg	WindowPtr /*pWindow*/,
154706f2543Smrg	unsigned long /*mask*/);
155706f2543Smrg
156706f2543Smrgtypedef    Bool (* RealizeWindowProcPtr)(
157706f2543Smrg	WindowPtr /*pWindow*/);
158706f2543Smrg
159706f2543Smrgtypedef    Bool (* UnrealizeWindowProcPtr)(
160706f2543Smrg	WindowPtr /*pWindow*/);
161706f2543Smrg
162706f2543Smrgtypedef    void (* RestackWindowProcPtr)(
163706f2543Smrg	WindowPtr /*pWindow*/,
164706f2543Smrg	WindowPtr /*pOldNextSib*/);
165706f2543Smrg
166706f2543Smrgtypedef    int  (* ValidateTreeProcPtr)(
167706f2543Smrg	WindowPtr /*pParent*/,
168706f2543Smrg	WindowPtr /*pChild*/,
169706f2543Smrg	VTKind /*kind*/);
170706f2543Smrg
171706f2543Smrgtypedef    void (* PostValidateTreeProcPtr)(
172706f2543Smrg	WindowPtr /*pParent*/,
173706f2543Smrg	WindowPtr /*pChild*/,
174706f2543Smrg	VTKind /*kind*/);
175706f2543Smrg
176706f2543Smrgtypedef    void (* WindowExposuresProcPtr)(
177706f2543Smrg	WindowPtr /*pWindow*/,
178706f2543Smrg	RegionPtr /*prgn*/,
179706f2543Smrg	RegionPtr /*other_exposed*/);
180706f2543Smrg
181706f2543Smrgtypedef    void (* CopyWindowProcPtr)(
182706f2543Smrg	WindowPtr /*pWindow*/,
183706f2543Smrg	DDXPointRec /*ptOldOrg*/,
184706f2543Smrg	RegionPtr /*prgnSrc*/);
185706f2543Smrg
186706f2543Smrgtypedef    void (* ClearToBackgroundProcPtr)(
187706f2543Smrg	WindowPtr /*pWindow*/,
188706f2543Smrg	int /*x*/,
189706f2543Smrg	int /*y*/,
190706f2543Smrg	int /*w*/,
191706f2543Smrg	int /*h*/,
192706f2543Smrg	Bool /*generateExposures*/);
193706f2543Smrg
194706f2543Smrgtypedef    void (* ClipNotifyProcPtr)(
195706f2543Smrg	WindowPtr /*pWindow*/,
196706f2543Smrg	int /*dx*/,
197706f2543Smrg	int /*dy*/);
198706f2543Smrg
199706f2543Smrg/* pixmap will exist only for the duration of the current rendering operation */
200706f2543Smrg#define CREATE_PIXMAP_USAGE_SCRATCH                     1
201706f2543Smrg/* pixmap will be the backing pixmap for a redirected window */
202706f2543Smrg#define CREATE_PIXMAP_USAGE_BACKING_PIXMAP              2
203706f2543Smrg/* pixmap will contain a glyph */
204706f2543Smrg#define CREATE_PIXMAP_USAGE_GLYPH_PICTURE               3
205706f2543Smrg
206706f2543Smrgtypedef    PixmapPtr (* CreatePixmapProcPtr)(
207706f2543Smrg	ScreenPtr /*pScreen*/,
208706f2543Smrg	int /*width*/,
209706f2543Smrg	int /*height*/,
210706f2543Smrg	int /*depth*/,
211706f2543Smrg	unsigned /*usage_hint*/);
212706f2543Smrg
213706f2543Smrgtypedef    Bool (* DestroyPixmapProcPtr)(
214706f2543Smrg	PixmapPtr /*pPixmap*/);
215706f2543Smrg
216706f2543Smrgtypedef    Bool (* RealizeFontProcPtr)(
217706f2543Smrg	ScreenPtr /*pScreen*/,
218706f2543Smrg	FontPtr /*pFont*/);
219706f2543Smrg
220706f2543Smrgtypedef    Bool (* UnrealizeFontProcPtr)(
221706f2543Smrg	ScreenPtr /*pScreen*/,
222706f2543Smrg	FontPtr /*pFont*/);
223706f2543Smrg
224706f2543Smrgtypedef    void (* ConstrainCursorProcPtr)(
225706f2543Smrg        DeviceIntPtr /*pDev*/,
226706f2543Smrg	ScreenPtr /*pScreen*/,
227706f2543Smrg	BoxPtr /*pBox*/);
228706f2543Smrg
229706f2543Smrgtypedef    void (* CursorLimitsProcPtr)(
230706f2543Smrg        DeviceIntPtr /* pDev */,
231706f2543Smrg	ScreenPtr /*pScreen*/,
232706f2543Smrg	CursorPtr /*pCursor*/,
233706f2543Smrg	BoxPtr /*pHotBox*/,
234706f2543Smrg	BoxPtr /*pTopLeftBox*/);
235706f2543Smrg
236706f2543Smrgtypedef    Bool (* DisplayCursorProcPtr)(
237706f2543Smrg        DeviceIntPtr /* pDev */,
238706f2543Smrg	ScreenPtr /*pScreen*/,
239706f2543Smrg	CursorPtr /*pCursor*/);
240706f2543Smrg
241706f2543Smrgtypedef    Bool (* RealizeCursorProcPtr)(
242706f2543Smrg        DeviceIntPtr /* pDev */,
243706f2543Smrg	ScreenPtr /*pScreen*/,
244706f2543Smrg	CursorPtr /*pCursor*/);
245706f2543Smrg
246706f2543Smrgtypedef    Bool (* UnrealizeCursorProcPtr)(
247706f2543Smrg        DeviceIntPtr /* pDev */,
248706f2543Smrg	ScreenPtr /*pScreen*/,
249706f2543Smrg	CursorPtr /*pCursor*/);
250706f2543Smrg
251706f2543Smrgtypedef    void (* RecolorCursorProcPtr)(
252706f2543Smrg        DeviceIntPtr /* pDev */,
253706f2543Smrg	ScreenPtr /*pScreen*/,
254706f2543Smrg	CursorPtr /*pCursor*/,
255706f2543Smrg	Bool /*displayed*/);
256706f2543Smrg
257706f2543Smrgtypedef    Bool (* SetCursorPositionProcPtr)(
258706f2543Smrg        DeviceIntPtr /* pDev */,
259706f2543Smrg	ScreenPtr /*pScreen*/,
260706f2543Smrg	int /*x*/,
261706f2543Smrg	int /*y*/,
262706f2543Smrg	Bool /*generateEvent*/);
263706f2543Smrg
264706f2543Smrgtypedef    Bool (* CreateGCProcPtr)(
265706f2543Smrg	GCPtr /*pGC*/);
266706f2543Smrg
267706f2543Smrgtypedef    Bool (* CreateColormapProcPtr)(
268706f2543Smrg	ColormapPtr /*pColormap*/);
269706f2543Smrg
270706f2543Smrgtypedef    void (* DestroyColormapProcPtr)(
271706f2543Smrg	ColormapPtr /*pColormap*/);
272706f2543Smrg
273706f2543Smrgtypedef    void (* InstallColormapProcPtr)(
274706f2543Smrg	ColormapPtr /*pColormap*/);
275706f2543Smrg
276706f2543Smrgtypedef    void (* UninstallColormapProcPtr)(
277706f2543Smrg	ColormapPtr /*pColormap*/);
278706f2543Smrg
279706f2543Smrgtypedef    int (* ListInstalledColormapsProcPtr) (
280706f2543Smrg	ScreenPtr /*pScreen*/,
281706f2543Smrg	XID* /*pmaps */);
282706f2543Smrg
283706f2543Smrgtypedef    void (* StoreColorsProcPtr)(
284706f2543Smrg	ColormapPtr /*pColormap*/,
285706f2543Smrg	int /*ndef*/,
286706f2543Smrg	xColorItem * /*pdef*/);
287706f2543Smrg
288706f2543Smrgtypedef    void (* ResolveColorProcPtr)(
289706f2543Smrg	unsigned short* /*pred*/,
290706f2543Smrg	unsigned short* /*pgreen*/,
291706f2543Smrg	unsigned short* /*pblue*/,
292706f2543Smrg	VisualPtr /*pVisual*/);
293706f2543Smrg
294706f2543Smrgtypedef    RegionPtr (* BitmapToRegionProcPtr)(
295706f2543Smrg	PixmapPtr /*pPix*/);
296706f2543Smrg
297706f2543Smrgtypedef    void (* SendGraphicsExposeProcPtr)(
298706f2543Smrg	ClientPtr /*client*/,
299706f2543Smrg	RegionPtr /*pRgn*/,
300706f2543Smrg	XID /*drawable*/,
301706f2543Smrg	int /*major*/,
302706f2543Smrg	int /*minor*/);
303706f2543Smrg
304706f2543Smrgtypedef    void (* ScreenBlockHandlerProcPtr)(
305706f2543Smrg	int /*screenNum*/,
306706f2543Smrg	pointer /*blockData*/,
307706f2543Smrg	pointer /*pTimeout*/,
308706f2543Smrg	pointer /*pReadmask*/);
309706f2543Smrg
310706f2543Smrgtypedef    void (* ScreenWakeupHandlerProcPtr)(
311706f2543Smrg	 int /*screenNum*/,
312706f2543Smrg	 pointer /*wakeupData*/,
313706f2543Smrg	 unsigned long /*result*/,
314706f2543Smrg	 pointer /*pReadMask*/);
315706f2543Smrg
316706f2543Smrgtypedef    Bool (* CreateScreenResourcesProcPtr)(
317706f2543Smrg	ScreenPtr /*pScreen*/);
318706f2543Smrg
319706f2543Smrgtypedef    Bool (* ModifyPixmapHeaderProcPtr)(
320706f2543Smrg	PixmapPtr /*pPixmap*/,
321706f2543Smrg	int /*width*/,
322706f2543Smrg	int /*height*/,
323706f2543Smrg	int /*depth*/,
324706f2543Smrg	int /*bitsPerPixel*/,
325706f2543Smrg	int /*devKind*/,
326706f2543Smrg	pointer /*pPixData*/);
327706f2543Smrg
328706f2543Smrgtypedef    PixmapPtr (* GetWindowPixmapProcPtr)(
329706f2543Smrg	WindowPtr /*pWin*/);
330706f2543Smrg
331706f2543Smrgtypedef    void (* SetWindowPixmapProcPtr)(
332706f2543Smrg	WindowPtr /*pWin*/,
333706f2543Smrg	PixmapPtr /*pPix*/);
334706f2543Smrg
335706f2543Smrgtypedef    PixmapPtr (* GetScreenPixmapProcPtr)(
336706f2543Smrg	ScreenPtr /*pScreen*/);
337706f2543Smrg
338706f2543Smrgtypedef    void (* SetScreenPixmapProcPtr)(
339706f2543Smrg	PixmapPtr /*pPix*/);
340706f2543Smrg
341706f2543Smrgtypedef    void (* MarkWindowProcPtr)(
342706f2543Smrg	WindowPtr /*pWin*/);
343706f2543Smrg
344706f2543Smrgtypedef    Bool (* MarkOverlappedWindowsProcPtr)(
345706f2543Smrg	WindowPtr /*parent*/,
346706f2543Smrg	WindowPtr /*firstChild*/,
347706f2543Smrg	WindowPtr * /*pLayerWin*/);
348706f2543Smrg
349706f2543Smrgtypedef    int (* ConfigNotifyProcPtr)(
350706f2543Smrg	WindowPtr /*pWin*/,
351706f2543Smrg	int /*x*/,
352706f2543Smrg	int /*y*/,
353706f2543Smrg	int /*w*/,
354706f2543Smrg	int /*h*/,
355706f2543Smrg	int /*bw*/,
356706f2543Smrg	WindowPtr /*pSib*/);
357706f2543Smrg
358706f2543Smrgtypedef    void (* MoveWindowProcPtr)(
359706f2543Smrg	WindowPtr /*pWin*/,
360706f2543Smrg	int /*x*/,
361706f2543Smrg	int /*y*/,
362706f2543Smrg	WindowPtr /*pSib*/,
363706f2543Smrg	VTKind /*kind*/);
364706f2543Smrg
365706f2543Smrgtypedef    void (* ResizeWindowProcPtr)(
366706f2543Smrg    WindowPtr /*pWin*/,
367706f2543Smrg    int /*x*/,
368706f2543Smrg    int /*y*/,
369706f2543Smrg    unsigned int /*w*/,
370706f2543Smrg    unsigned int /*h*/,
371706f2543Smrg    WindowPtr /*pSib*/
372706f2543Smrg);
373706f2543Smrg
374706f2543Smrgtypedef    WindowPtr (* GetLayerWindowProcPtr)(
375706f2543Smrg    WindowPtr /*pWin*/
376706f2543Smrg);
377706f2543Smrg
378706f2543Smrgtypedef    void (* HandleExposuresProcPtr)(
379706f2543Smrg    WindowPtr /*pWin*/);
380706f2543Smrg
381706f2543Smrgtypedef    void (* ReparentWindowProcPtr)(
382706f2543Smrg    WindowPtr /*pWin*/,
383706f2543Smrg    WindowPtr /*pPriorParent*/);
384706f2543Smrg
385706f2543Smrgtypedef    void (* SetShapeProcPtr)(
386706f2543Smrg        WindowPtr /*pWin*/,
387706f2543Smrg        int /* kind */);
388706f2543Smrg
389706f2543Smrgtypedef    void (* ChangeBorderWidthProcPtr)(
390706f2543Smrg	WindowPtr /*pWin*/,
391706f2543Smrg	unsigned int /*width*/);
392706f2543Smrg
393706f2543Smrgtypedef    void (* MarkUnrealizedWindowProcPtr)(
394706f2543Smrg	WindowPtr /*pChild*/,
395706f2543Smrg	WindowPtr /*pWin*/,
396706f2543Smrg	Bool /*fromConfigure*/);
397706f2543Smrg
398706f2543Smrgtypedef    Bool (* DeviceCursorInitializeProcPtr)(
399706f2543Smrg        DeviceIntPtr /* pDev */,
400706f2543Smrg        ScreenPtr    /* pScreen */);
401706f2543Smrg
402706f2543Smrgtypedef    void (* DeviceCursorCleanupProcPtr)(
403706f2543Smrg        DeviceIntPtr /* pDev */,
404706f2543Smrg        ScreenPtr    /* pScreen */);
405706f2543Smrg
406706f2543Smrgtypedef void (*ConstrainCursorHarderProcPtr)(
407706f2543Smrg       DeviceIntPtr, ScreenPtr, int, int *, int *);
408706f2543Smrg
409706f2543Smrgtypedef struct _Screen {
410706f2543Smrg    int			myNum;	/* index of this instance in Screens[] */
411706f2543Smrg    ATOM		id;
412706f2543Smrg    short		x, y, width, height;
413706f2543Smrg    short		mmWidth, mmHeight;
414706f2543Smrg    short		numDepths;
415706f2543Smrg    unsigned char      	rootDepth;
416706f2543Smrg    DepthPtr       	allowedDepths;
417706f2543Smrg    unsigned long      	rootVisual;
418706f2543Smrg    unsigned long	defColormap;
419706f2543Smrg    short		minInstalledCmaps, maxInstalledCmaps;
420706f2543Smrg    char                backingStoreSupport, saveUnderSupport;
421706f2543Smrg    unsigned long	whitePixel, blackPixel;
422706f2543Smrg    GCPtr		GCperDepth[MAXFORMATS+1];
423706f2543Smrg			/* next field is a stipple to use as default in
424706f2543Smrg			   a GC.  we don't build default tiles of all depths
425706f2543Smrg			   because they are likely to be of a color
426706f2543Smrg			   different from the default fg pixel, so
427706f2543Smrg			   we don't win anything by building
428706f2543Smrg			   a standard one.
429706f2543Smrg			*/
430706f2543Smrg    PixmapPtr		PixmapPerDepth[1];
431706f2543Smrg    pointer		devPrivate;
432706f2543Smrg    short       	numVisuals;
433706f2543Smrg    VisualPtr		visuals;
434706f2543Smrg    WindowPtr		root;
435706f2543Smrg    ScreenSaverStuffRec screensaver;
436706f2543Smrg
437706f2543Smrg    /* Random screen procedures */
438706f2543Smrg
439706f2543Smrg    CloseScreenProcPtr		CloseScreen;
440706f2543Smrg    QueryBestSizeProcPtr	QueryBestSize;
441706f2543Smrg    SaveScreenProcPtr		SaveScreen;
442706f2543Smrg    GetImageProcPtr		GetImage;
443706f2543Smrg    GetSpansProcPtr		GetSpans;
444706f2543Smrg    SourceValidateProcPtr	SourceValidate;
445706f2543Smrg
446706f2543Smrg    /* Window Procedures */
447706f2543Smrg
448706f2543Smrg    CreateWindowProcPtr		CreateWindow;
449706f2543Smrg    DestroyWindowProcPtr	DestroyWindow;
450706f2543Smrg    PositionWindowProcPtr	PositionWindow;
451706f2543Smrg    ChangeWindowAttributesProcPtr ChangeWindowAttributes;
452706f2543Smrg    RealizeWindowProcPtr	RealizeWindow;
453706f2543Smrg    UnrealizeWindowProcPtr	UnrealizeWindow;
454706f2543Smrg    ValidateTreeProcPtr		ValidateTree;
455706f2543Smrg    PostValidateTreeProcPtr	PostValidateTree;
456706f2543Smrg    WindowExposuresProcPtr	WindowExposures;
457706f2543Smrg    CopyWindowProcPtr		CopyWindow;
458706f2543Smrg    ClearToBackgroundProcPtr	ClearToBackground;
459706f2543Smrg    ClipNotifyProcPtr		ClipNotify;
460706f2543Smrg    RestackWindowProcPtr	RestackWindow;
461706f2543Smrg
462706f2543Smrg    /* Pixmap procedures */
463706f2543Smrg
464706f2543Smrg    CreatePixmapProcPtr		CreatePixmap;
465706f2543Smrg    DestroyPixmapProcPtr	DestroyPixmap;
466706f2543Smrg
467706f2543Smrg    /* Font procedures */
468706f2543Smrg
469706f2543Smrg    RealizeFontProcPtr		RealizeFont;
470706f2543Smrg    UnrealizeFontProcPtr	UnrealizeFont;
471706f2543Smrg
472706f2543Smrg    /* Cursor Procedures */
473706f2543Smrg
474706f2543Smrg    ConstrainCursorProcPtr	ConstrainCursor;
475706f2543Smrg    ConstrainCursorHarderProcPtr ConstrainCursorHarder;
476706f2543Smrg    CursorLimitsProcPtr		CursorLimits;
477706f2543Smrg    DisplayCursorProcPtr	DisplayCursor;
478706f2543Smrg    RealizeCursorProcPtr	RealizeCursor;
479706f2543Smrg    UnrealizeCursorProcPtr	UnrealizeCursor;
480706f2543Smrg    RecolorCursorProcPtr	RecolorCursor;
481706f2543Smrg    SetCursorPositionProcPtr	SetCursorPosition;
482706f2543Smrg
483706f2543Smrg    /* GC procedures */
484706f2543Smrg
485706f2543Smrg    CreateGCProcPtr		CreateGC;
486706f2543Smrg
487706f2543Smrg    /* Colormap procedures */
488706f2543Smrg
489706f2543Smrg    CreateColormapProcPtr	CreateColormap;
490706f2543Smrg    DestroyColormapProcPtr	DestroyColormap;
491706f2543Smrg    InstallColormapProcPtr	InstallColormap;
492706f2543Smrg    UninstallColormapProcPtr	UninstallColormap;
493706f2543Smrg    ListInstalledColormapsProcPtr ListInstalledColormaps;
494706f2543Smrg    StoreColorsProcPtr		StoreColors;
495706f2543Smrg    ResolveColorProcPtr		ResolveColor;
496706f2543Smrg
497706f2543Smrg    /* Region procedures */
498706f2543Smrg
499706f2543Smrg    BitmapToRegionProcPtr	BitmapToRegion;
500706f2543Smrg    SendGraphicsExposeProcPtr	SendGraphicsExpose;
501706f2543Smrg
502706f2543Smrg    /* os layer procedures */
503706f2543Smrg
504706f2543Smrg    ScreenBlockHandlerProcPtr	BlockHandler;
505706f2543Smrg    ScreenWakeupHandlerProcPtr	WakeupHandler;
506706f2543Smrg
507706f2543Smrg    pointer blockData;
508706f2543Smrg    pointer wakeupData;
509706f2543Smrg
510706f2543Smrg    /* anybody can get a piece of this array */
511706f2543Smrg    PrivateRec	*devPrivates;
512706f2543Smrg
513706f2543Smrg    CreateScreenResourcesProcPtr CreateScreenResources;
514706f2543Smrg    ModifyPixmapHeaderProcPtr	ModifyPixmapHeader;
515706f2543Smrg
516706f2543Smrg    GetWindowPixmapProcPtr	GetWindowPixmap;
517706f2543Smrg    SetWindowPixmapProcPtr	SetWindowPixmap;
518706f2543Smrg    GetScreenPixmapProcPtr	GetScreenPixmap;
519706f2543Smrg    SetScreenPixmapProcPtr	SetScreenPixmap;
520706f2543Smrg
521706f2543Smrg    PixmapPtr pScratchPixmap;		/* scratch pixmap "pool" */
522706f2543Smrg
523706f2543Smrg    unsigned int		totalPixmapSize;
524706f2543Smrg
525706f2543Smrg    MarkWindowProcPtr		MarkWindow;
526706f2543Smrg    MarkOverlappedWindowsProcPtr MarkOverlappedWindows;
527706f2543Smrg    ConfigNotifyProcPtr		ConfigNotify;
528706f2543Smrg    MoveWindowProcPtr		MoveWindow;
529706f2543Smrg    ResizeWindowProcPtr		ResizeWindow;
530706f2543Smrg    GetLayerWindowProcPtr	GetLayerWindow;
531706f2543Smrg    HandleExposuresProcPtr	HandleExposures;
532706f2543Smrg    ReparentWindowProcPtr	ReparentWindow;
533706f2543Smrg
534706f2543Smrg    SetShapeProcPtr		SetShape;
535706f2543Smrg
536706f2543Smrg    ChangeBorderWidthProcPtr	ChangeBorderWidth;
537706f2543Smrg    MarkUnrealizedWindowProcPtr	MarkUnrealizedWindow;
538706f2543Smrg
539706f2543Smrg    /* Device cursor procedures */
540706f2543Smrg    DeviceCursorInitializeProcPtr DeviceCursorInitialize;
541706f2543Smrg    DeviceCursorCleanupProcPtr    DeviceCursorCleanup;
542706f2543Smrg
543706f2543Smrg    /* set it in driver side if X server can copy the framebuffer content.
544706f2543Smrg     * Meant to be used together with '-background none' option, avoiding
545706f2543Smrg     * malicious users to steal framebuffer's content if that would be the
546706f2543Smrg     * default */
547706f2543Smrg    Bool		canDoBGNoneRoot;
548706f2543Smrg} ScreenRec;
549706f2543Smrg
550706f2543Smrgstatic inline RegionPtr BitmapToRegion(ScreenPtr _pScreen, PixmapPtr pPix) {
551706f2543Smrg    return (*(_pScreen)->BitmapToRegion)(pPix); /* no mi version?! */
552706f2543Smrg}
553706f2543Smrg
554706f2543Smrgtypedef struct _ScreenInfo {
555706f2543Smrg    int		imageByteOrder;
556706f2543Smrg    int		bitmapScanlineUnit;
557706f2543Smrg    int		bitmapScanlinePad;
558706f2543Smrg    int		bitmapBitOrder;
559706f2543Smrg    int		numPixmapFormats;
560706f2543Smrg    PixmapFormatRec
561706f2543Smrg		formats[MAXFORMATS];
562706f2543Smrg    int		numScreens;
563706f2543Smrg    ScreenPtr	screens[MAXSCREENS];
564706f2543Smrg} ScreenInfo;
565706f2543Smrg
566706f2543Smrgextern _X_EXPORT ScreenInfo screenInfo;
567706f2543Smrg
568706f2543Smrgextern _X_EXPORT void InitOutput(
569706f2543Smrg    ScreenInfo 	* /*pScreenInfo*/,
570706f2543Smrg    int     	/*argc*/,
571706f2543Smrg    char    	** /*argv*/);
572706f2543Smrg
573706f2543Smrg#endif /* SCREENINTSTRUCT_H */
574