window.h revision 35c4bbdf
1/***********************************************************
2
3Copyright 1987, 1998  The Open Group
4
5Permission to use, copy, modify, distribute, and sell this software and its
6documentation for any purpose is hereby granted without fee, provided that
7the above copyright notice appear in all copies and that both that
8copyright notice and this permission notice appear in supporting
9documentation.
10
11The above copyright notice and this permission notice shall be included in
12all copies or substantial portions of the Software.
13
14THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
17OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
21Except as contained in this notice, the name of The Open Group shall not be
22used in advertising or otherwise to promote the sale, use or other dealings
23in this Software without prior written authorization from The Open Group.
24
25Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
26
27                        All Rights Reserved
28
29Permission to use, copy, modify, and distribute this software and its
30documentation for any purpose and without fee is hereby granted,
31provided that the above copyright notice appear in all copies and that
32both that copyright notice and this permission notice appear in
33supporting documentation, and that the name of Digital not be
34used in advertising or publicity pertaining to distribution of the
35software without specific, written prior permission.
36
37DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
38ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
39DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
40ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
41WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
42ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
43SOFTWARE.
44
45******************************************************************/
46
47#ifndef WINDOW_H
48#define WINDOW_H
49
50#include "misc.h"
51#include "region.h"
52#include "screenint.h"
53#include <X11/Xproto.h>
54
55#define TOTALLY_OBSCURED 0
56#define UNOBSCURED 1
57#define OBSCURED 2
58
59#define VisibilityNotViewable	3
60
61/* return values for tree-walking callback procedures */
62#define WT_STOPWALKING		0
63#define WT_WALKCHILDREN		1
64#define WT_DONTWALKCHILDREN	2
65#define WT_NOMATCH 3
66#define NullWindow ((WindowPtr) 0)
67
68/* Forward declaration, we can't include input.h here */
69struct _DeviceIntRec;
70struct _Cursor;
71
72typedef struct _BackingStore *BackingStorePtr;
73typedef struct _Window *WindowPtr;
74
75enum RootClipMode {
76    ROOT_CLIP_NONE = 0, /**< resize the root window to 0x0 */
77    ROOT_CLIP_FULL = 1, /**< resize the root window to fit screen */
78    ROOT_CLIP_INPUT_ONLY = 2, /**< as above, but no rendering to screen */
79};
80
81typedef int (*VisitWindowProcPtr) (WindowPtr pWin,
82                                   void *data);
83
84extern _X_EXPORT int TraverseTree(WindowPtr pWin,
85                                  VisitWindowProcPtr func,
86                                  void *data);
87
88extern _X_EXPORT int WalkTree(ScreenPtr pScreen,
89                              VisitWindowProcPtr func,
90                              void *data);
91
92extern _X_EXPORT Bool CreateRootWindow(ScreenPtr /*pScreen */ );
93
94extern _X_EXPORT void InitRootWindow(WindowPtr /*pWin */ );
95
96typedef WindowPtr (*RealChildHeadProc) (WindowPtr pWin);
97
98extern _X_EXPORT void RegisterRealChildHeadProc(RealChildHeadProc proc);
99
100extern _X_EXPORT WindowPtr RealChildHead(WindowPtr /*pWin */ );
101
102extern _X_EXPORT WindowPtr CreateWindow(Window /*wid */ ,
103                                        WindowPtr /*pParent */ ,
104                                        int /*x */ ,
105                                        int /*y */ ,
106                                        unsigned int /*w */ ,
107                                        unsigned int /*h */ ,
108                                        unsigned int /*bw */ ,
109                                        unsigned int /*class */ ,
110                                        Mask /*vmask */ ,
111                                        XID * /*vlist */ ,
112                                        int /*depth */ ,
113                                        ClientPtr /*client */ ,
114                                        VisualID /*visual */ ,
115                                        int * /*error */ );
116
117extern _X_EXPORT int DeleteWindow(void *pWin,
118                                  XID wid);
119
120extern _X_EXPORT int DestroySubwindows(WindowPtr /*pWin */ ,
121                                       ClientPtr /*client */ );
122
123/* Quartz support on Mac OS X uses the HIToolbox
124   framework whose ChangeWindowAttributes function conflicts here. */
125#ifdef __APPLE__
126#define ChangeWindowAttributes Darwin_X_ChangeWindowAttributes
127#endif
128extern _X_EXPORT int ChangeWindowAttributes(WindowPtr /*pWin */ ,
129                                            Mask /*vmask */ ,
130                                            XID * /*vlist */ ,
131                                            ClientPtr /*client */ );
132
133extern _X_EXPORT int ChangeWindowDeviceCursor(WindowPtr /*pWin */ ,
134                                              struct _DeviceIntRec * /*pDev */ ,
135                                              struct _Cursor * /*pCursor */ );
136
137extern _X_EXPORT struct _Cursor *WindowGetDeviceCursor(WindowPtr /*pWin */ ,
138                                                       struct _DeviceIntRec *
139                                                       /*pDev */ );
140
141/* Quartz support on Mac OS X uses the HIToolbox
142   framework whose GetWindowAttributes function conflicts here. */
143#ifdef __APPLE__
144#define GetWindowAttributes(w,c,x) Darwin_X_GetWindowAttributes(w,c,x)
145extern void Darwin_X_GetWindowAttributes(
146#else
147extern _X_EXPORT void GetWindowAttributes(
148#endif
149                                             WindowPtr /*pWin */ ,
150                                             ClientPtr /*client */ ,
151                                             xGetWindowAttributesReply *
152                                             /* wa */ );
153
154extern _X_EXPORT void GravityTranslate(int /*x */ ,
155                                       int /*y */ ,
156                                       int /*oldx */ ,
157                                       int /*oldy */ ,
158                                       int /*dw */ ,
159                                       int /*dh */ ,
160                                       unsigned /*gravity */ ,
161                                       int * /*destx */ ,
162                                       int * /*desty */ );
163
164extern _X_EXPORT int ConfigureWindow(WindowPtr /*pWin */ ,
165                                     Mask /*mask */ ,
166                                     XID * /*vlist */ ,
167                                     ClientPtr /*client */ );
168
169extern _X_EXPORT int CirculateWindow(WindowPtr /*pParent */ ,
170                                     int /*direction */ ,
171                                     ClientPtr /*client */ );
172
173extern _X_EXPORT int ReparentWindow(WindowPtr /*pWin */ ,
174                                    WindowPtr /*pParent */ ,
175                                    int /*x */ ,
176                                    int /*y */ ,
177                                    ClientPtr /*client */ );
178
179extern _X_EXPORT int MapWindow(WindowPtr /*pWin */ ,
180                               ClientPtr /*client */ );
181
182extern _X_EXPORT void MapSubwindows(WindowPtr /*pParent */ ,
183                                    ClientPtr /*client */ );
184
185extern _X_EXPORT int UnmapWindow(WindowPtr /*pWin */ ,
186                                 Bool /*fromConfigure */ );
187
188extern _X_EXPORT void UnmapSubwindows(WindowPtr /*pWin */ );
189
190extern _X_EXPORT void HandleSaveSet(ClientPtr /*client */ );
191
192extern _X_EXPORT Bool PointInWindowIsVisible(WindowPtr /*pWin */ ,
193                                             int /*x */ ,
194                                             int /*y */ );
195
196extern _X_EXPORT RegionPtr NotClippedByChildren(WindowPtr /*pWin */ );
197
198extern _X_EXPORT void SendVisibilityNotify(WindowPtr /*pWin */ );
199
200extern _X_EXPORT int dixSaveScreens(ClientPtr client, int on, int mode);
201
202extern _X_EXPORT int SaveScreens(int on, int mode);
203
204extern _X_EXPORT WindowPtr FindWindowWithOptional(WindowPtr /*w */ );
205
206extern _X_EXPORT void CheckWindowOptionalNeed(WindowPtr /*w */ );
207
208extern _X_EXPORT Bool MakeWindowOptional(WindowPtr /*pWin */ );
209
210extern _X_EXPORT WindowPtr MoveWindowInStack(WindowPtr /*pWin */ ,
211                                             WindowPtr /*pNextSib */ );
212
213extern _X_EXPORT void SetWinSize(WindowPtr /*pWin */ );
214
215extern _X_EXPORT void SetBorderSize(WindowPtr /*pWin */ );
216
217extern _X_EXPORT void ResizeChildrenWinSize(WindowPtr /*pWin */ ,
218                                            int /*dx */ ,
219                                            int /*dy */ ,
220                                            int /*dw */ ,
221                                            int /*dh */ );
222
223extern _X_EXPORT void SendShapeNotify(WindowPtr /* pWin */ ,
224                                      int /* which */);
225
226extern _X_EXPORT RegionPtr CreateBoundingShape(WindowPtr /* pWin */ );
227
228extern _X_EXPORT RegionPtr CreateClipShape(WindowPtr /* pWin */ );
229
230extern _X_EXPORT void SetRootClip(ScreenPtr pScreen, int enable);
231extern _X_EXPORT void PrintWindowTree(void);
232extern _X_EXPORT void PrintPassiveGrabs(void);
233
234extern _X_EXPORT VisualPtr WindowGetVisual(WindowPtr /*pWin*/);
235#endif                          /* WINDOW_H */
236