1 /*
2  *
3  * Copyright © 2000 SuSE, Inc.
4  *
5  * Permission to use, copy, modify, distribute, and sell this software and its
6  * documentation for any purpose is hereby granted without fee, provided that
7  * the above copyright notice appear in all copies and that both that
8  * copyright notice and this permission notice appear in supporting
9  * documentation, and that the name of SuSE not be used in advertising or
10  * publicity pertaining to distribution of the software without specific,
11  * written prior permission.  SuSE makes no representations about the
12  * suitability of this software for any purpose.  It is provided "as is"
13  * without express or implied warranty.
14  *
15  * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
17  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
19  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
20  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21  *
22  * Author:  Keith Packard, SuSE, Inc.
23  */
24 
25 #ifndef _FBOVERLAY_H_
26 #define _FBOVERLAY_H_
27 
28 #include "privates.h"
29 
30 extern _X_EXPORT DevPrivateKey fbOverlayGetScreenPrivateKey(void);
31 
32 #ifndef FB_OVERLAY_MAX
33 #define FB_OVERLAY_MAX	2
34 #endif
35 
36 typedef void (*fbOverlayPaintKeyProc) (DrawablePtr, RegionPtr, CARD32, int);
37 
38 typedef struct _fbOverlayLayer {
39     union {
40         struct {
41             void *pbits;
42             int width;
43             int depth;
44         } init;
45         struct {
46             PixmapPtr pixmap;
47             RegionRec region;
48         } run;
49     } u;
50     CARD32 key;                 /* special pixel value */
51 } FbOverlayLayer;
52 
53 typedef struct _fbOverlayScrPriv {
54     int nlayers;
55     fbOverlayPaintKeyProc PaintKey;
56     miCopyProc CopyWindow;
57     FbOverlayLayer layer[FB_OVERLAY_MAX];
58 } FbOverlayScrPrivRec, *FbOverlayScrPrivPtr;
59 
60 #define fbOverlayGetScrPriv(s) \
61     dixLookupPrivate(&(s)->devPrivates, fbOverlayGetScreenPrivateKey())
62 extern _X_EXPORT Bool
63  fbOverlayCreateWindow(WindowPtr pWin);
64 
65 extern _X_EXPORT Bool
66  fbOverlayCloseScreen(ScreenPtr pScreen);
67 
68 extern _X_EXPORT int
69  fbOverlayWindowLayer(WindowPtr pWin);
70 
71 extern _X_EXPORT Bool
72  fbOverlayCreateScreenResources(ScreenPtr pScreen);
73 
74 extern _X_EXPORT void
75 
76 fbOverlayPaintKey(DrawablePtr pDrawable,
77                   RegionPtr pRegion, CARD32 pixel, int layer);
78 extern _X_EXPORT void
79  fbOverlayUpdateLayerRegion(ScreenPtr pScreen, int layer, RegionPtr prgn);
80 
81 extern _X_EXPORT void
82  fbOverlayCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
83 
84 extern _X_EXPORT void
85 fbOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn);
86 
87 extern _X_EXPORT Bool
88 
89 fbOverlaySetupScreen(ScreenPtr pScreen,
90                      void *pbits1,
91                      void *pbits2,
92                      int xsize,
93                      int ysize,
94                      int dpix,
95                      int dpiy, int width1, int width2, int bpp1, int bpp2);
96 
97 extern _X_EXPORT Bool
98 
99 fbOverlayFinishScreenInit(ScreenPtr pScreen,
100                           void *pbits1,
101                           void *pbits2,
102                           int xsize,
103                           int ysize,
104                           int dpix,
105                           int dpiy,
106                           int width1,
107                           int width2,
108                           int bpp1, int bpp2, int depth1, int depth2);
109 
110 #endif                          /* _FBOVERLAY_H_ */
111