105b261ecSmrg/*
205b261ecSmrg
305b261ecSmrgCopyright 1993 by Davor Matic
405b261ecSmrg
505b261ecSmrgPermission to use, copy, modify, distribute, and sell this software
605b261ecSmrgand its documentation for any purpose is hereby granted without fee,
705b261ecSmrgprovided that the above copyright notice appear in all copies and that
805b261ecSmrgboth that copyright notice and this permission notice appear in
905b261ecSmrgsupporting documentation.  Davor Matic makes no representations about
1005b261ecSmrgthe suitability of this software for any purpose.  It is provided "as
1105b261ecSmrgis" without express or implied warranty.
1205b261ecSmrg
1305b261ecSmrg*/
1405b261ecSmrg
1505b261ecSmrg#ifndef XNESTWINDOW_H
1605b261ecSmrg#define XNESTWINDOW_H
1705b261ecSmrg
1805b261ecSmrgtypedef struct {
1935c4bbdfSmrg    Window window;
2035c4bbdfSmrg    Window parent;
2135c4bbdfSmrg    int x;
2235c4bbdfSmrg    int y;
2335c4bbdfSmrg    unsigned int width;
2435c4bbdfSmrg    unsigned int height;
2535c4bbdfSmrg    unsigned int border_width;
2635c4bbdfSmrg    Window sibling_above;
2735c4bbdfSmrg    RegionPtr bounding_shape;
2835c4bbdfSmrg    RegionPtr clip_shape;
2905b261ecSmrg} xnestPrivWin;
3005b261ecSmrg
3105b261ecSmrgtypedef struct {
3235c4bbdfSmrg    WindowPtr pWin;
3335c4bbdfSmrg    Window window;
3405b261ecSmrg} xnestWindowMatch;
3505b261ecSmrg
366747b715Smrgextern DevPrivateKeyRec xnestWindowPrivateKeyRec;
3735c4bbdfSmrg
386747b715Smrg#define xnestWindowPrivateKey (&xnestWindowPrivateKeyRec)
3905b261ecSmrg
404642e01fSmrg#define xnestWindowPriv(pWin) ((xnestPrivWin *) \
414642e01fSmrg    dixLookupPrivate(&(pWin)->devPrivates, xnestWindowPrivateKey))
4205b261ecSmrg
4305b261ecSmrg#define xnestWindow(pWin) (xnestWindowPriv(pWin)->window)
4405b261ecSmrg
4505b261ecSmrg#define xnestWindowParent(pWin) \
4605b261ecSmrg  ((pWin)->parent ? \
4705b261ecSmrg   xnestWindow((pWin)->parent) : \
4805b261ecSmrg   xnestDefaultWindows[pWin->drawable.pScreen->myNum])
4905b261ecSmrg
5005b261ecSmrg#define xnestWindowSiblingAbove(pWin) \
5105b261ecSmrg  ((pWin)->prevSib ? xnestWindow((pWin)->prevSib) : None)
5205b261ecSmrg
5305b261ecSmrg#define xnestWindowSiblingBelow(pWin) \
5405b261ecSmrg  ((pWin)->nextSib ? xnestWindow((pWin)->nextSib) : None)
5505b261ecSmrg
5605b261ecSmrg#define CWParent CWSibling
5705b261ecSmrg#define CWStackingOrder CWStackMode
5805b261ecSmrg
5905b261ecSmrgWindowPtr xnestWindowPtr(Window window);
6005b261ecSmrgBool xnestCreateWindow(WindowPtr pWin);
6105b261ecSmrgBool xnestDestroyWindow(WindowPtr pWin);
6205b261ecSmrgBool xnestPositionWindow(WindowPtr pWin, int x, int y);
6305b261ecSmrgvoid xnestConfigureWindow(WindowPtr pWin, unsigned int mask);
6405b261ecSmrgBool xnestChangeWindowAttributes(WindowPtr pWin, unsigned long mask);
6505b261ecSmrgBool xnestRealizeWindow(WindowPtr pWin);
6605b261ecSmrgBool xnestUnrealizeWindow(WindowPtr pWin);
6705b261ecSmrgvoid xnestCopyWindow(WindowPtr pWin, xPoint oldOrigin, RegionPtr oldRegion);
6805b261ecSmrgvoid xnestClipNotify(WindowPtr pWin, int dx, int dy);
6935c4bbdfSmrgvoid xnestWindowExposures(WindowPtr pWin, RegionPtr pRgn);
706747b715Smrgvoid xnestSetShape(WindowPtr pWin, int kind);
7105b261ecSmrgvoid xnestShapeWindow(WindowPtr pWin);
7205b261ecSmrg
7335c4bbdfSmrg#endif                          /* XNESTWINDOW_H */
74