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