/* * $XFree86: xc/programs/Xserver/randr/randrstr.h,v 1.4 2001/06/03 21:52:44 keithp Exp $ * * Copyright © 2000 Compaq Computer Corporation * * 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 Compaq not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Compaq makes no * representations about the suitability of this software for any purpose. It * is provided "as is" without express or implied warranty. * * COMPAQ DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL COMPAQ 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. */ #ifndef _RANDRSTR_H_ #define _RANDRSTR_H_ #include "randr.h" typedef struct _rrVisualGroup { int id; int nvisuals; VisualPtr *visuals; Bool referenced; Bool oldReferenced; } RRVisualGroup, *RRVisualGroupPtr; typedef struct _rrGroupOfVisualGroup { int id; int ngroups; int *groups; Bool referenced; Bool oldReferenced; } RRGroupOfVisualGroup, *RRGroupOfVisualGroupPtr; typedef struct _rrScreenSize { int id; short width, height; short mmWidth, mmHeight; int groupOfVisualGroups; Bool referenced; Bool oldReferenced; } RRScreenSize, *RRScreenSizePtr; typedef Bool (*RRSetConfigProcPtr) (ScreenPtr pScreen, Rotation rotation, RRScreenSizePtr pSize, RRVisualGroupPtr pVisualGroup); typedef Bool (*RRGetInfoProcPtr) (ScreenPtr pScreen, Rotation *rotations); typedef Bool (*RRCloseScreenProcPtr) ( int i, ScreenPtr pscreen); typedef struct _rrScrPriv { RRSetConfigProcPtr rrSetConfig; RRGetInfoProcPtr rrGetInfo; TimeStamp lastSetTime; /* last changed by client */ TimeStamp lastConfigTime; /* possible configs changed */ RRCloseScreenProcPtr CloseScreen; /* * Configuration information */ Rotation rotations; int swaps; int nVisualGroups; int nVisualGroupsInUse; RRVisualGroupPtr pVisualGroups; int nGroupsOfVisualGroups; int nGroupsOfVisualGroupsInUse; RRGroupOfVisualGroupPtr pGroupsOfVisualGroups; int nSizes; int nSizesInUse; RRScreenSizePtr pSizes; /* * Current state */ Rotation rotation; RRScreenSizePtr pSize; RRVisualGroupPtr pVisualGroup; } rrScrPrivRec, *rrScrPrivPtr; extern int rrPrivIndex; #define rrGetScrPriv(pScr) ((rrScrPrivPtr) (pScr)->devPrivates[rrPrivIndex].ptr) #define rrScrPriv(pScr) rrScrPrivPtr pScrPriv = rrGetScrPriv(pScr) #define SetRRScreen(s,p) ((s)->devPrivates[rrPrivIndex].ptr = (pointer) (p)) /* * First, create the visual groups and register them with the screen */ RRVisualGroupPtr RRCreateVisualGroup (ScreenPtr pScreen); void RRDestroyVisualGroup (ScreenPtr pScreen, RRVisualGroupPtr pVisualGroup); Bool RRAddVisualToVisualGroup (ScreenPtr pScreen, RRVisualGroupPtr pVisualGroup, VisualPtr pVisual); Bool RRAddDepthToVisualGroup (ScreenPtr pScreen, RRVisualGroupPtr pVisualGroup, DepthPtr pDepth); RRVisualGroupPtr RRRegisterVisualGroup (ScreenPtr pScreen, RRVisualGroupPtr pVisualGroup); /* * Next, create the group of visual groups and register that with the screen */ RRGroupOfVisualGroupPtr RRCreateGroupOfVisualGroup (ScreenPtr pScreen); void RRDestroyGroupOfVisualGroup (ScreenPtr pScreen, RRGroupOfVisualGroupPtr pGroupOfVisualGroup); Bool RRAddVisualGroupToGroupOfVisualGroup (ScreenPtr pScreen, RRGroupOfVisualGroupPtr pGroupOfVisualGroup, RRVisualGroupPtr pVisualGroup); RRGroupOfVisualGroupPtr RRRegisterGroupOfVisualGroup (ScreenPtr pScreen, RRGroupOfVisualGroupPtr pGroupOfVisualGroup); /* * Then, register the specific size with the screen */ RRScreenSizePtr RRRegisterSize (ScreenPtr pScreen, short width, short height, short mmWidth, short mmHeight, RRGroupOfVisualGroup *visualgroups); /* * Finally, set the current configuration of the screen */ void RRSetCurrentConfig (ScreenPtr pScreen, Rotation rotation, RRScreenSizePtr pSize, RRVisualGroupPtr pVisualGroup); Bool miRandRInit (ScreenPtr pScreen); Bool miRRSetConfig (ScreenPtr pScreen, Rotation rotation, RRScreenSizePtr size, RRVisualGroupPtr pVisualGroup); Bool miRRGetScreenInfo (ScreenPtr pScreen); #endif /* _RANDRSTR_H_ */