1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
|
/*
* Copyright 1990, 1991 by the Massachusetts Institute of Technology and
* UniSoft Group Limited.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation, and that the names of MIT and UniSoft not be
* used in advertising or publicity pertaining to distribution of the
* software without specific, written prior permission. MIT and UniSoft
* make no representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
* $XConsortium$
*/
>>TITLE XClearWindow CH06
>>#SYNOPSIS
void
XClearWindow(display, w)
Display *display = Dsp;
Window w;
>>ASSERTION Good A
A call to xname
paints
the entire area
in the window specified by the
.A w
argument
with the window's background pixel or pixmap.
>>STRATEGY
Create window.
Set window's background pixel to 0.
Call XClearWindow.
Verify window is set.
Set window's background pixel to 1.
Call XClearWindow.
Verify window is set.
Set window background pixmap.
Verify that window is set.
>>CODE
Pixmap pm;
XVisualInfo *vp;
for (resetvinf(VI_WIN); nextvinf(&vp); ) {
w = makewin(display, vp);
XSetWindowBackground(display, w, W_FG);
XCALL;
if (checkarea(display, w, (struct area *)0, W_FG, W_BG, 0) == False) {
report("Clearing to W_FG failed");
tet_result(TET_FAIL);
} else {
CHECK;
}
XSetWindowBackground(display, w, W_BG);
XCALL;
if (checkarea(display, w, (struct area *)0, W_BG, W_BG, 0) == False) {
report("Clearing to W_BG failed");
tet_result(TET_FAIL);
} else
CHECK;
pm = maketile(display, w);
XSetWindowBackgroundPixmap(display, w, pm);
XCALL;
/*
* Check the tiled area first and then the outside.
*/
if (checktile(display, w, (struct area*)0, 0, 0, pm) == False) {
report("Failed with background pixmap");
FAIL;
} else
CHECK;
}
CHECKPASS(3*nvinf());
>>ASSERTION Good A
On a call to xname the subwindow-mode is
.S ClipByChildren .
>>STRATEGY
Create window
Create overlapping child window.
Call XClearWindow.
Verify that the child has not been drawn upon.
>>CODE
struct area carea;
Pixmap pm;
Window child;
XVisualInfo *vp;
for (resetvinf(VI_WIN); nextvinf(&vp); ) {
w = makewin(display, vp);
carea.x = 10;
carea.y = 0;
carea.width = carea.height = 0;
child = crechild(display, w, &carea);
pm = maketile(display, w);
XSetWindowBackgroundPixmap(display, w, pm);
XCALL;
carea.x = carea.y = carea.width = carea.height = 0;
if (checkarea(display, child, &carea, W_BG, W_BG, CHECK_ALL) == False) {
report("Child window was drawn upon by clear window");
FAIL;
} else {
CHECK;
}
}
CHECKPASS(nvinf());
>>ASSERTION def
>>#DEFINITION
When the window has a defined background tile, then the rectangle
is tiled with a plane-mask of all ones and the
.S GXCopy
function.
>>ASSERTION Good A
When the window has a
.M background_pixmap
of
.S None ,
>># It is the last thing that was set that matters.
>>#and an undefined
>>#.M background_pixel ,
then the contents of the window are not changed.
>>STRATEGY
Create window.
Set background pixel to W_FG.
Set background pixmap to None.
Call XClearWindow.
Check that the whole window is left alone.
>>CODE
struct area area;
XVisualInfo *vp;
for (resetvinf(VI_WIN); nextvinf(&vp); ) {
w = makewin(display, vp);
pattern(display, w);
XSetWindowBackground(display, w, W_FG);
XSetWindowBackgroundPixmap(display, w, None);
XCALL;
if (checkpattern(display, w, (struct area *)0) == False) {
report("Window was changed when background was None");
FAIL;
} else {
CHECK;
}
}
CHECKPASS(nvinf());
>>ASSERTION Good A
When the window has a
.M background_pixmap
of
.S ParentRelative
and the parent has a
.M background_pixmap
of
.S None ,
then the contents of the window are not changed.
>>STRATEGY
Create parent window.
Create a child window covering the parent.
Draw pattern on the child window.
Set parent window background to none.
Set child window background pixmap to ParentRelative.
Clear area of child
Verify that there was no change to the child window.
>>CODE
struct area area;
Window child;
Window win;
XVisualInfo *vp;
for (resetvinf(VI_WIN); nextvinf(&vp); ) {
win = makewin(display, vp);
area.x = area.y = area.width = area.height = 0;
child = crechild(display, win, &area);
pattern(display, child);
/*
* Set parent to None, child to Parent Relative.
*/
XSetWindowBackgroundPixmap(display, win, None);
XSetWindowBackgroundPixmap(display, child, ParentRelative);
w = child;
XCALL;
if (checkpattern(display, child, (struct area *)0) == False) {
report("Window was changed when background was ParentRelative");
FAIL;
} else {
CHECK;
}
}
CHECKPASS(nvinf());
>># Assertion removed because the situation is not possible.
>>#When the window does not have the same depth as its
>>#parent and has a background-pixmap of
>>#ParentRelative, then a BadMath error occurs.
>>ASSERTION Bad A
.ER Match inputonly
>>ASSERTION Bad A
.ER BadWindow
>># HISTORY steve Completed Written in new format and style
>># HISTORY kieron Completed Global and pixel checking to do - 19/11/90
>># HISTORY dave Completed Final checking to do - 21/11/90
|