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