b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $TOG: panoramiX.h /main/4 1998/03/17 06:51:02 kaleb $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XdotOrg: xserver/xorg/Xext/panoramiX.h,v 1.5 2005/07/03 07:01:04 daniels Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*****************************************************************
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncCopyright (c) 1991, 1997 Digital Equipment Corporation, Maynard, Massachusetts.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncPermission is hereby granted, free of charge, to any person obtaining a copy
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncof this software and associated documentation files (the "Software"), to deal
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncin the Software without restriction, including without limitation the rights
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncto use, copy, modify, merge, publish, distribute, sublicense, and/or sell
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynccopies of the Software.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncThe above copyright notice and this permission notice shall be included in
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncall copies or substantial portions of the Software.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncDIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY CLAIM, DAMAGES, INCLUDING,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncBUT NOT LIMITED TO CONSEQUENTIAL OR INCIDENTAL DAMAGES, OR OTHER LIABILITY,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncIN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncExcept as contained in this notice, the name of Digital Equipment Corporation
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncshall not be used in advertising or otherwise to promote the sale, use or other
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncdealings in this Software without prior written authorization from Digital
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncEquipment Corporation.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync******************************************************************/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XFree86: xc/programs/Xserver/Xext/panoramiX.h,v 1.5 2001/01/03 02:54:17 keithp Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* THIS IS NOT AN X PROJECT TEAM SPECIFICATION */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * PanoramiX definitions
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef HAVE_DIX_CONFIG_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <dix-config.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifndef _PANORAMIX_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define _PANORAMIX_H_
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <X11/extensions/panoramiXext.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "gcstruct.h"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _PanoramiXData {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int x;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int y;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int width;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int height;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} PanoramiXData;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct _PanoramiXInfo {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync XID id ;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} PanoramiXInfo;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync PanoramiXInfo info[MAXSCREENS];
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync RESTYPE type;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync union {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync char visibility;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync char class;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync char root;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } win;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool shared;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } pix;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef RENDER
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync struct {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync Bool root;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } pict;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync char raw_data[4];
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } u;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync} PanoramiXRes;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FOR_NSCREENS_FORWARD(j) for(j = 0; j < PanoramiXNumScreens; j++)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FOR_NSCREENS_BACKWARD(j) for(j = PanoramiXNumScreens - 1; j >= 0; j--)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FOR_NSCREENS(j) FOR_NSCREENS_FORWARD(j)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define BREAK_IF(a) if ((a)) break
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define IF_RETURN(a,b) if ((a)) return (b)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FORCE_ROOT(a) { \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync int _j; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync for (_j = PanoramiXNumScreens - 1; _j; _j--) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if ((a).root == WindowTable[_j]->drawable.id) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync break; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (a).rootX += panoramiXdataPtr[_j].x; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (a).rootY += panoramiXdataPtr[_j].y; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (a).root = WindowTable[0]->drawable.id; \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FORCE_WIN(a) { \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if ((win = PanoramiXFindIDOnAnyScreen(XRT_WINDOW, a))) { \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (a) = win->info[0].id; /* Real ID */ \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define FORCE_CMAP(a) { \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if ((win = PanoramiXFindIDOnAnyScreen(XRT_COLORMAP, a))) { \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (a) = win->info[0].id; /* Real ID */ \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync } \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define IS_SHARED_PIXMAP(r) (((r)->type == XRT_PIXMAP) && (r)->u.pix.shared)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SKIP_FAKE_WINDOW(a) if(!LookupIDByType(a, XRT_WINDOW)) return
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif /* _PANORAMIX_H_ */