a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync/*
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Copyright © 2000 SuSE, Inc.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Permission to use, copy, modify, distribute, and sell this software and its
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * documentation for any purpose is hereby granted without fee, provided that
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * the above copyright notice appear in all copies and that both that
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * copyright notice and this permission notice appear in supporting
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * documentation, and that the name of SuSE not be used in advertising or
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * publicity pertaining to distribution of the software without specific,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * written prior permission. SuSE makes no representations about the
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * suitability of this software for any purpose. It is provided "as is"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * without express or implied warranty.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync *
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync * Author: Keith Packard, SuSE, Inc.
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#ifndef _FBOVERLAY_H_
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define _FBOVERLAY_H_
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#include "privates.h"
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT DevPrivateKey fbOverlayGetScreenPrivateKey(void);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#ifndef FB_OVERLAY_MAX
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define FB_OVERLAY_MAX 2
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#endif
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef void (*fbOverlayPaintKeyProc) (DrawablePtr, RegionPtr, CARD32, int);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _fbOverlayLayer {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync union {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync struct {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *pbits;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int width;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int depth;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync } init;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync struct {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync PixmapPtr pixmap;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync RegionRec region;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync } run;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync } u;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync CARD32 key; /* special pixel value */
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} FbOverlayLayer;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsynctypedef struct _fbOverlayScrPriv {
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int nlayers;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync fbOverlayPaintKeyProc PaintKey;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync miCopyProc CopyWindow;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync FbOverlayLayer layer[FB_OVERLAY_MAX];
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync} FbOverlayScrPrivRec, *FbOverlayScrPrivPtr;
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#define fbOverlayGetScrPriv(s) \
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync dixLookupPrivate(&(s)->devPrivates, fbOverlayGetScreenPrivateKey())
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync fbOverlayCreateWindow(WindowPtr pWin);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync fbOverlayCloseScreen(ScreenPtr pScreen);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT int
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync fbOverlayWindowLayer(WindowPtr pWin);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync fbOverlayCreateScreenResources(ScreenPtr pScreen);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT void
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncfbOverlayPaintKey(DrawablePtr pDrawable,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync RegionPtr pRegion, CARD32 pixel, int layer);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT void
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync fbOverlayUpdateLayerRegion(ScreenPtr pScreen, int layer, RegionPtr prgn);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT void
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync fbOverlayCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT void
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncfbOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncfbOverlaySetupScreen(ScreenPtr pScreen,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *pbits1,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *pbits2,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int xsize,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int ysize,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int dpix,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int dpiy, int width1, int width2, int bpp1, int bpp2);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncextern _X_EXPORT Bool
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsyncfbOverlayFinishScreenInit(ScreenPtr pScreen,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *pbits1,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync void *pbits2,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int xsize,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int ysize,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int dpix,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int dpiy,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int width1,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int width2,
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync int bpp1, int bpp2, int depth1, int depth2);
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync
a5e7ae69e440f6816420fc99599f044e79e716b6vboxsync#endif /* _FBOVERLAY_H_ */