105b261ecSmrg/*
205b261ecSmrg *
305b261ecSmrg * Copyright © 2000 SuSE, Inc.
405b261ecSmrg *
505b261ecSmrg * Permission to use, copy, modify, distribute, and sell this software and its
605b261ecSmrg * documentation for any purpose is hereby granted without fee, provided that
705b261ecSmrg * the above copyright notice appear in all copies and that both that
805b261ecSmrg * copyright notice and this permission notice appear in supporting
905b261ecSmrg * documentation, and that the name of SuSE not be used in advertising or
1005b261ecSmrg * publicity pertaining to distribution of the software without specific,
1105b261ecSmrg * written prior permission.  SuSE makes no representations about the
1205b261ecSmrg * suitability of this software for any purpose.  It is provided "as is"
1305b261ecSmrg * without express or implied warranty.
1405b261ecSmrg *
1505b261ecSmrg * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
1605b261ecSmrg * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
1705b261ecSmrg * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1805b261ecSmrg * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
1935c4bbdfSmrg * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
2005b261ecSmrg * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
2105b261ecSmrg *
2205b261ecSmrg * Author:  Keith Packard, SuSE, Inc.
2305b261ecSmrg */
2405b261ecSmrg
2505b261ecSmrg#ifndef _FBOVERLAY_H_
2605b261ecSmrg#define _FBOVERLAY_H_
2705b261ecSmrg
284642e01fSmrg#include "privates.h"
294642e01fSmrg
306747b715Smrgextern _X_EXPORT DevPrivateKey fbOverlayGetScreenPrivateKey(void);
3105b261ecSmrg
3205b261ecSmrg#ifndef FB_OVERLAY_MAX
3305b261ecSmrg#define FB_OVERLAY_MAX	2
3405b261ecSmrg#endif
3505b261ecSmrg
3635c4bbdfSmrgtypedef void (*fbOverlayPaintKeyProc) (DrawablePtr, RegionPtr, CARD32, int);
3705b261ecSmrg
3805b261ecSmrgtypedef struct _fbOverlayLayer {
3905b261ecSmrg    union {
4035c4bbdfSmrg        struct {
4135c4bbdfSmrg            void *pbits;
4235c4bbdfSmrg            int width;
4335c4bbdfSmrg            int depth;
4435c4bbdfSmrg        } init;
4535c4bbdfSmrg        struct {
4635c4bbdfSmrg            PixmapPtr pixmap;
4735c4bbdfSmrg            RegionRec region;
4835c4bbdfSmrg        } run;
4905b261ecSmrg    } u;
5035c4bbdfSmrg    CARD32 key;                 /* special pixel value */
5105b261ecSmrg} FbOverlayLayer;
5205b261ecSmrg
5305b261ecSmrgtypedef struct _fbOverlayScrPriv {
5435c4bbdfSmrg    int nlayers;
5535c4bbdfSmrg    fbOverlayPaintKeyProc PaintKey;
5635c4bbdfSmrg    miCopyProc CopyWindow;
5735c4bbdfSmrg    FbOverlayLayer layer[FB_OVERLAY_MAX];
5805b261ecSmrg} FbOverlayScrPrivRec, *FbOverlayScrPrivPtr;
5905b261ecSmrg
6005b261ecSmrg#define fbOverlayGetScrPriv(s) \
614642e01fSmrg    dixLookupPrivate(&(s)->devPrivates, fbOverlayGetScreenPrivateKey())
626747b715Smrgextern _X_EXPORT Bool
6335c4bbdfSmrg fbOverlayCreateWindow(WindowPtr pWin);
6405b261ecSmrg
656747b715Smrgextern _X_EXPORT Bool
6635c4bbdfSmrg fbOverlayCloseScreen(ScreenPtr pScreen);
6705b261ecSmrg
686747b715Smrgextern _X_EXPORT int
6935c4bbdfSmrg fbOverlayWindowLayer(WindowPtr pWin);
7005b261ecSmrg
716747b715Smrgextern _X_EXPORT Bool
7235c4bbdfSmrg fbOverlayCreateScreenResources(ScreenPtr pScreen);
7305b261ecSmrg
746747b715Smrgextern _X_EXPORT void
7535c4bbdfSmrg
7635c4bbdfSmrgfbOverlayPaintKey(DrawablePtr pDrawable,
7735c4bbdfSmrg                  RegionPtr pRegion, CARD32 pixel, int layer);
786747b715Smrgextern _X_EXPORT void
7935c4bbdfSmrg fbOverlayUpdateLayerRegion(ScreenPtr pScreen, int layer, RegionPtr prgn);
8005b261ecSmrg
816747b715Smrgextern _X_EXPORT void
8235c4bbdfSmrg fbOverlayCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
8335c4bbdfSmrg
846747b715Smrgextern _X_EXPORT void
8535c4bbdfSmrgfbOverlayWindowExposures(WindowPtr pWin, RegionPtr prgn);
8605b261ecSmrg
876747b715Smrgextern _X_EXPORT Bool
8835c4bbdfSmrg
8935c4bbdfSmrgfbOverlaySetupScreen(ScreenPtr pScreen,
9035c4bbdfSmrg                     void *pbits1,
9135c4bbdfSmrg                     void *pbits2,
9235c4bbdfSmrg                     int xsize,
9335c4bbdfSmrg                     int ysize,
9435c4bbdfSmrg                     int dpix,
9535c4bbdfSmrg                     int dpiy, int width1, int width2, int bpp1, int bpp2);
9605b261ecSmrg
976747b715Smrgextern _X_EXPORT Bool
9835c4bbdfSmrg
9935c4bbdfSmrgfbOverlayFinishScreenInit(ScreenPtr pScreen,
10035c4bbdfSmrg                          void *pbits1,
10135c4bbdfSmrg                          void *pbits2,
10235c4bbdfSmrg                          int xsize,
10335c4bbdfSmrg                          int ysize,
10435c4bbdfSmrg                          int dpix,
10535c4bbdfSmrg                          int dpiy,
10635c4bbdfSmrg                          int width1,
10735c4bbdfSmrg                          int width2,
10835c4bbdfSmrg                          int bpp1, int bpp2, int depth1, int depth2);
10935c4bbdfSmrg
11035c4bbdfSmrg#endif                          /* _FBOVERLAY_H_ */
111