1706f2543Smrg/* 2706f2543Smrg * 3706f2543Smrg * Copyright © 2000 SuSE, Inc. 4706f2543Smrg * 5706f2543Smrg * Permission to use, copy, modify, distribute, and sell this software and its 6706f2543Smrg * documentation for any purpose is hereby granted without fee, provided that 7706f2543Smrg * the above copyright notice appear in all copies and that both that 8706f2543Smrg * copyright notice and this permission notice appear in supporting 9706f2543Smrg * documentation, and that the name of SuSE not be used in advertising or 10706f2543Smrg * publicity pertaining to distribution of the software without specific, 11706f2543Smrg * written prior permission. SuSE makes no representations about the 12706f2543Smrg * suitability of this software for any purpose. It is provided "as is" 13706f2543Smrg * without express or implied warranty. 14706f2543Smrg * 15706f2543Smrg * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL 16706f2543Smrg * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE 17706f2543Smrg * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 18706f2543Smrg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 19706f2543Smrg * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 20706f2543Smrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 21706f2543Smrg * 22706f2543Smrg * Author: Keith Packard, SuSE, Inc. 23706f2543Smrg */ 24706f2543Smrg 25706f2543Smrg#ifndef _FBOVERLAY_H_ 26706f2543Smrg#define _FBOVERLAY_H_ 27706f2543Smrg 28706f2543Smrg#include "privates.h" 29706f2543Smrg 30706f2543Smrgextern _X_EXPORT DevPrivateKey fbOverlayGetScreenPrivateKey(void); 31706f2543Smrg 32706f2543Smrg#ifndef FB_OVERLAY_MAX 33706f2543Smrg#define FB_OVERLAY_MAX 2 34706f2543Smrg#endif 35706f2543Smrg 36706f2543Smrgtypedef void (*fbOverlayPaintKeyProc) (DrawablePtr, RegionPtr, CARD32, int); 37706f2543Smrg 38706f2543Smrgtypedef struct _fbOverlayLayer { 39706f2543Smrg union { 40706f2543Smrg struct { 41706f2543Smrg pointer pbits; 42706f2543Smrg int width; 43706f2543Smrg int depth; 44706f2543Smrg } init; 45706f2543Smrg struct { 46706f2543Smrg PixmapPtr pixmap; 47706f2543Smrg RegionRec region; 48706f2543Smrg } run; 49706f2543Smrg } u; 50706f2543Smrg CARD32 key; /* special pixel value */ 51706f2543Smrg} FbOverlayLayer; 52706f2543Smrg 53706f2543Smrgtypedef struct _fbOverlayScrPriv { 54706f2543Smrg int nlayers; 55706f2543Smrg fbOverlayPaintKeyProc PaintKey; 56706f2543Smrg miCopyProc CopyWindow; 57706f2543Smrg FbOverlayLayer layer[FB_OVERLAY_MAX]; 58706f2543Smrg} FbOverlayScrPrivRec, *FbOverlayScrPrivPtr; 59706f2543Smrg 60706f2543Smrg#define fbOverlayGetScrPriv(s) \ 61706f2543Smrg dixLookupPrivate(&(s)->devPrivates, fbOverlayGetScreenPrivateKey()) 62706f2543Smrgextern _X_EXPORT Bool 63706f2543SmrgfbOverlayCreateWindow(WindowPtr pWin); 64706f2543Smrg 65706f2543Smrgextern _X_EXPORT Bool 66706f2543SmrgfbOverlayCloseScreen (int iScreen, ScreenPtr pScreen); 67706f2543Smrg 68706f2543Smrgextern _X_EXPORT int 69706f2543SmrgfbOverlayWindowLayer(WindowPtr pWin); 70706f2543Smrg 71706f2543Smrgextern _X_EXPORT Bool 72706f2543SmrgfbOverlayCreateScreenResources(ScreenPtr pScreen); 73706f2543Smrg 74706f2543Smrgextern _X_EXPORT void 75706f2543SmrgfbOverlayPaintKey (DrawablePtr pDrawable, 76706f2543Smrg RegionPtr pRegion, 77706f2543Smrg CARD32 pixel, 78706f2543Smrg int layer); 79706f2543Smrgextern _X_EXPORT void 80706f2543SmrgfbOverlayUpdateLayerRegion (ScreenPtr pScreen, 81706f2543Smrg int layer, 82706f2543Smrg RegionPtr prgn); 83706f2543Smrg 84706f2543Smrg 85706f2543Smrgextern _X_EXPORT void 86706f2543SmrgfbOverlayCopyWindow(WindowPtr pWin, 87706f2543Smrg DDXPointRec ptOldOrg, 88706f2543Smrg RegionPtr prgnSrc); 89706f2543Smrg 90706f2543Smrgextern _X_EXPORT void 91706f2543SmrgfbOverlayWindowExposures (WindowPtr pWin, 92706f2543Smrg RegionPtr prgn, 93706f2543Smrg RegionPtr other_exposed); 94706f2543Smrg 95706f2543Smrgextern _X_EXPORT Bool 96706f2543SmrgfbOverlaySetupScreen(ScreenPtr pScreen, 97706f2543Smrg pointer pbits1, 98706f2543Smrg pointer pbits2, 99706f2543Smrg int xsize, 100706f2543Smrg int ysize, 101706f2543Smrg int dpix, 102706f2543Smrg int dpiy, 103706f2543Smrg int width1, 104706f2543Smrg int width2, 105706f2543Smrg int bpp1, 106706f2543Smrg int bpp2); 107706f2543Smrg 108706f2543Smrgextern _X_EXPORT Bool 109706f2543SmrgfbOverlayFinishScreenInit(ScreenPtr pScreen, 110706f2543Smrg pointer pbits1, 111706f2543Smrg pointer pbits2, 112706f2543Smrg int xsize, 113706f2543Smrg int ysize, 114706f2543Smrg int dpix, 115706f2543Smrg int dpiy, 116706f2543Smrg int width1, 117706f2543Smrg int width2, 118706f2543Smrg int bpp1, 119706f2543Smrg int bpp2, 120706f2543Smrg int depth1, 121706f2543Smrg int depth2); 122706f2543Smrg 123706f2543Smrg#endif /* _FBOVERLAY_H_ */ 124