do_tests.c revision dfac8f13
1/*****************************************************************************
2Copyright 1988, 1989 by Digital Equipment Corporation, Maynard, Massachusetts.
3
4                        All Rights Reserved
5
6Permission to use, copy, modify, and distribute this software and its
7documentation for any purpose and without fee is hereby granted,
8provided that the above copyright notice appear in all copies and that
9both that copyright notice and this permission notice appear in
10supporting documentation, and that the name of Digital not be
11used in advertising or publicity pertaining to distribution of the
12software without specific, written prior permission.
13
14DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20SOFTWARE.
21
22******************************************************************************/
23
24#include "x11perf.h"
25
26/*
27 * some test must be done a certain multiple of times. That multiple is
28 * in the second half of the products below. You can edit the multiplier,
29 * just not the multiplicand.
30 */
31
32Test test[] = {
33  {"-dot",      "Dot", NULL,
34		InitDots, DoDots, NullProc, EndDots,
35		V1_2FEATURE, ROP, 0,
36		{POLY}},
37  {"-rect1",    "1x1 rectangle", NULL,
38		InitRectangles, DoRectangles, NullProc, EndRectangles,
39		V1_2FEATURE, ROP, 0,
40		{POLY, 1, NULL, NULL, FillSolid}},
41  {"-rect10",   "10x10 rectangle", NULL,
42		InitRectangles, DoRectangles, NullProc, EndRectangles,
43		V1_2FEATURE, ROP, 0,
44		{POLY, 10, NULL, NULL, FillSolid}},
45  {"-rect100",  "100x100 rectangle", NULL,
46		InitRectangles, DoRectangles, NullProc, EndRectangles,
47		V1_2FEATURE, ROP, 0,
48		{25, 100, NULL, NULL, FillSolid}},
49  {"-rect500",  "500x500 rectangle", NULL,
50		InitRectangles, DoRectangles, NullProc, EndRectangles,
51		V1_2FEATURE, ROP, 0,
52		{1, 500, NULL, NULL, FillSolid}},
53  {"-srect1",  "1x1 stippled rectangle",
54		"1x1 stippled rectangle (8x8 stipple)",
55		InitRectangles, DoRectangles, NullProc, EndRectangles,
56		V1_2FEATURE, ROP, 0,
57		{POLY, 1, NULL, NULL, FillStippled}},
58  {"-srect10", "10x10 stippled rectangle",
59		"10x10 stippled rectangle (8x8 stipple)",
60		InitRectangles, DoRectangles, NullProc, EndRectangles,
61		V1_2FEATURE, ROP, 0,
62		{POLY, 10, NULL, NULL, FillStippled}},
63  {"-srect100", "100x100 stippled rectangle",
64		"100x100 stippled rectangle (8x8 stipple)",
65		InitRectangles, DoRectangles, NullProc, EndRectangles,
66		V1_2FEATURE, ROP, 0,
67		{25, 100, NULL, NULL, FillStippled}},
68  {"-srect500", "500x500 stippled rectangle",
69		"500x500 stippled rectangle (8x8 stipple)",
70		InitRectangles, DoRectangles, NullProc, EndRectangles,
71		V1_2FEATURE, ROP, 0,
72		{1, 500, NULL, NULL, FillStippled}},
73  {"-osrect1",  "1x1 opaque stippled rectangle",
74		"1x1 opaque stippled rectangle (8x8 stipple)",
75		InitRectangles, DoRectangles, NullProc, EndRectangles,
76		V1_2FEATURE, ROP, 0,
77		{POLY, 1, NULL, NULL, FillOpaqueStippled}},
78  {"-osrect10", "10x10 opaque stippled rectangle",
79		"10x10 opaque stippled rectangle (8x8 stipple)",
80		InitRectangles, DoRectangles, NullProc, EndRectangles,
81		V1_2FEATURE, ROP, 0,
82		{POLY, 10, NULL, NULL, FillOpaqueStippled}},
83  {"-osrect100", "100x100 opaque stippled rectangle",
84		"100x100 opaque stippled rectangle (8x8 stipple)",
85		InitRectangles, DoRectangles, NullProc, EndRectangles,
86		V1_2FEATURE, ROP, 0,
87		{25, 100, NULL, NULL, FillOpaqueStippled}},
88  {"-osrect500", "500x500 opaque stippled rectangle",
89		"500x500 opaque stippled rectangle (8x8 stipple)",
90		InitRectangles, DoRectangles, NullProc, EndRectangles,
91		V1_2FEATURE, ROP, 0,
92		{1, 500, NULL, NULL, FillOpaqueStippled}},
93  {"-tilerect1", "1x1 4x4 tiled rectangle",
94		"1x1 tiled rectangle (4x4 tile)",
95		InitRectangles, DoRectangles, NullProc, EndRectangles,
96		V1_2FEATURE, ROP, 0,
97		{POLY, 1, NULL, NULL, FillTiled}},
98  {"-tilerect10", "10x10 4x4 tiled rectangle",
99		"10x10 tiled rectangle (4x4 tile)",
100		InitRectangles, DoRectangles, NullProc, EndRectangles,
101		V1_2FEATURE, ROP, 0,
102		{POLY, 10, NULL, NULL, FillTiled}},
103  {"-tilerect100", "100x100 4x4 tiled rectangle",
104		"100x100 tiled rectangle (4x4 tile)",
105		InitRectangles, DoRectangles, NullProc, EndRectangles,
106		V1_2FEATURE, ROP, 0,
107		{25, 100, NULL, NULL, FillTiled}},
108  {"-tilerect500", "500x500 4x4 tiled rectangle",
109		"500x500 tiled rectangle (4x4 tile)",
110		InitRectangles, DoRectangles, NullProc, EndRectangles,
111		V1_2FEATURE, ROP, 0,
112		{1, 500, NULL, NULL, FillTiled}},
113  {"-oddsrect1",  "1x1 stippled rectangle (17x15 stipple)", NULL,
114		InitRectangles, DoRectangles, NullProc, EndRectangles,
115		V1_4FEATURE, ROP, 0,
116		{POLY, 1, "OddTile", NULL, FillStippled}},
117  {"-oddsrect10", "10x10 stippled rectangle (17x15 stipple)", NULL,
118		InitRectangles, DoRectangles, NullProc, EndRectangles,
119		V1_4FEATURE, ROP, 0,
120		{POLY, 10, "OddTile", NULL, FillStippled}},
121  {"-oddsrect100", "100x100 stippled rectangle (17x15 stipple)", NULL,
122		InitRectangles, DoRectangles, NullProc, EndRectangles,
123		V1_4FEATURE, ROP, 0,
124		{25, 100, "OddTile", NULL, FillStippled}},
125  {"-oddsrect500", "500x500 stippled rectangle (17x15 stipple)", NULL,
126		InitRectangles, DoRectangles, NullProc, EndRectangles,
127		V1_4FEATURE, ROP, 0,
128		{1, 500, "OddTile", NULL, FillStippled}},
129  {"-oddosrect1",  "1x1 opaque stippled rectangle (17x15 stipple)", NULL,
130		InitRectangles, DoRectangles, NullProc, EndRectangles,
131		V1_4FEATURE, ROP, 0,
132		{POLY, 1, "OddTile", NULL, FillOpaqueStippled}},
133  {"-oddosrect10", "10x10 opaque stippled rectangle (17x15 stipple)", NULL,
134		InitRectangles, DoRectangles, NullProc, EndRectangles,
135		V1_4FEATURE, ROP, 0,
136		{POLY, 10, "OddTile", NULL, FillOpaqueStippled}},
137  {"-oddosrect100", "100x100 opaque stippled rectangle (17x15 stipple)", NULL,
138		InitRectangles, DoRectangles, NullProc, EndRectangles,
139		V1_4FEATURE, ROP, 0,
140		{25, 100, "OddTile", NULL, FillOpaqueStippled}},
141  {"-oddosrect500", "500x500 opaque stippled rectangle (17x15 stipple)", NULL,
142		InitRectangles, DoRectangles, NullProc, EndRectangles,
143		V1_4FEATURE, ROP, 0,
144		{1, 500, "OddTile", NULL, FillOpaqueStippled}},
145  {"-oddtilerect1", "1x1 tiled rectangle (17x15 tile)", NULL,
146		InitRectangles, DoRectangles, NullProc, EndRectangles,
147		V1_4FEATURE, ROP, 0,
148		{POLY, 1, "OddTile", NULL, FillTiled}},
149  {"-oddtilerect10", "10x10 tiled rectangle (17x15 tile)", NULL,
150		InitRectangles, DoRectangles, NullProc, EndRectangles,
151		V1_4FEATURE, ROP, 0,
152		{POLY, 10, "OddTile", NULL, FillTiled}},
153  {"-oddtilerect100", "100x100 tiled rectangle (17x15 tile)", NULL,
154		InitRectangles, DoRectangles, NullProc, EndRectangles,
155		V1_4FEATURE, ROP, 0,
156		{25, 100, "OddTile", NULL, FillTiled}},
157  {"-oddtilerect500", "500x500 tiled rectangle (17x15 tile)", NULL,
158		InitRectangles, DoRectangles, NullProc, EndRectangles,
159		V1_4FEATURE, ROP, 0,
160		{1, 500, "OddTile", NULL, FillTiled}},
161  {"-bigsrect1",  "1x1 161x145 stippled rectangle",
162		"1x1 stippled rectangle (161x145 stipple)",
163		InitRectangles, DoRectangles, NullProc, EndRectangles,
164		V1_3FEATURE, ROP, 0,
165		{POLY, 1, "mensetmanus", NULL, FillStippled}},
166  {"-bigsrect10", "10x10 161x145 stippled rectangle",
167		"10x10 stippled rectangle (161x145 stipple)",
168		InitRectangles, DoRectangles, NullProc, EndRectangles,
169		V1_3FEATURE, ROP, 0,
170		{POLY, 10, "mensetmanus", NULL, FillStippled}},
171  {"-bigsrect100", "100x100 161x145 stippled rectangle",
172		"100x100 stippled rectangle (161x145 stipple)",
173		InitRectangles, DoRectangles, NullProc, EndRectangles,
174		V1_3FEATURE, ROP, 0,
175		{25, 100, "mensetmanus", NULL, FillStippled}},
176  {"-bigsrect500", "500x500 161x145 stippled rectangle",
177		"500x500 stippled rectangle (161x145 stipple)",
178		InitRectangles, DoRectangles, NullProc, EndRectangles,
179		V1_3FEATURE, ROP, 0,
180		{1, 500, "mensetmanus", NULL, FillStippled}},
181  {"-bigosrect1",  "1x1 161x145 opaque stippled rectangle",
182		"1x1 opaque stippled rectangle (161x145 stipple)",
183		InitRectangles, DoRectangles, NullProc, EndRectangles,
184		V1_3FEATURE, ROP, 0,
185		{POLY, 1, "mensetmanus", NULL, FillOpaqueStippled}},
186  {"-bigosrect10", "10x10 161x145 opaque stippled rectangle",
187		"10x10 opaque stippled rectangle (161x145 stipple)",
188		InitRectangles, DoRectangles, NullProc, EndRectangles,
189		V1_3FEATURE, ROP, 0,
190		{POLY, 10, "mensetmanus", NULL, FillOpaqueStippled}},
191  {"-bigosrect100", "100x100 161x145 opaque stippled rectangle",
192		"100x100 opaque stippled rectangle (161x145 stipple)",
193		InitRectangles, DoRectangles, NullProc, EndRectangles,
194		V1_3FEATURE, ROP, 0,
195		{25, 100, "mensetmanus", NULL, FillOpaqueStippled}},
196  {"-bigosrect500", "500x500 161x145 opaque stippled rectangle",
197		"500x500 opaque stippled rectangle (161x145 stipple)",
198		InitRectangles, DoRectangles, NullProc, EndRectangles,
199		V1_3FEATURE, ROP, 0,
200		{1, 500, "mensetmanus", NULL, FillOpaqueStippled}},
201  {"-bigtilerect1", "1x1 161x145 tiled rectangle",
202		"1x1 tiled rectangle (161x145 tile)",
203		InitRectangles, DoRectangles, NullProc, EndRectangles,
204		V1_2FEATURE, ROP, 0,
205		{POLY, 1, "mensetmanus", NULL, FillTiled}},
206  {"-bigtilerect10", "10x10 161x145 tiled rectangle",
207		"10x10 tiled rectangle (161x145 tile)",
208		InitRectangles, DoRectangles, NullProc, EndRectangles,
209		V1_2FEATURE, ROP, 0,
210		{POLY, 10, "mensetmanus", NULL, FillTiled}},
211  {"-bigtilerect100", "100x100 161x145 tiled rectangle",
212		"100x100 tiled rectangle (161x145 tile)",
213		InitRectangles, DoRectangles, NullProc, EndRectangles,
214		V1_2FEATURE, ROP, 0,
215		{25, 100, "mensetmanus", NULL, FillTiled}},
216  {"-bigtilerect500", "500x500 161x145 tiled rectangle",
217		"500x500 tiled rectangle (161x145 tile)",
218		InitRectangles, DoRectangles, NullProc, EndRectangles,
219		V1_2FEATURE, ROP, 0,
220		{1, 500, "mensetmanus", NULL, FillTiled}},
221  {"-eschertilerect1", "1x1 216x208 tiled rectangle",
222		"1x1 tiled rectangle (216x208 tile)",
223		InitRectangles, DoRectangles, NullProc, EndRectangles,
224		V1_3FEATURE, ROP, 0,
225		{POLY, 1, "escherknot", NULL, FillTiled}},
226  {"-eschertilerect10", "10x10 216x208 tiled rectangle",
227		"10x10 tiled rectangle (216x208 tile)",
228		InitRectangles, DoRectangles, NullProc, EndRectangles,
229		V1_3FEATURE, ROP, 0,
230		{POLY, 10, "escherknot", NULL, FillTiled}},
231  {"-eschertilerect100", "100x100 216x208 tiled rectangle",
232		"100x100 tiled rectangle (216x208 tile)",
233		InitRectangles, DoRectangles, NullProc, EndRectangles,
234		V1_3FEATURE, ROP, 0,
235		{25, 100, "escherknot", NULL, FillTiled}},
236  {"-eschertilerect500", "500x500 216x208 tiled rectangle",
237		"500x500 tiled rectangle (216x208 tile)",
238		InitRectangles, DoRectangles, NullProc, EndRectangles,
239		V1_3FEATURE, ROP, 0,
240		{1, 500, "escherknot", NULL, FillTiled}},
241  {"-seg1",     "1-pixel line segment", NULL,
242		InitSegments, DoSegments, NullProc, EndSegments,
243		V1_2FEATURE, ROP, 0,
244		{POLY, 1}},
245  {"-seg10",    "10-pixel line segment", NULL,
246		InitSegments, DoSegments, NullProc, EndSegments,
247		V1_2FEATURE, ROP, 0,
248		{POLY, 10}},
249  {"-seg100",   "100-pixel line segment", NULL,
250		InitSegments, DoSegments, NullProc, EndSegments,
251		V1_2FEATURE, ROP, 0,
252		{POLY, 100}},
253  {"-seg500",   "500-pixel line segment", NULL,
254		InitSegments, DoSegments, NullProc, EndSegments,
255		V1_2FEATURE, ROP, 0,
256		{POLY, 500}},
257  {"-seg100c1", "100-pixel line segment (1 kid)", NULL,
258		InitSegments, DoSegments, NullProc, EndSegments,
259		V1_2FEATURE, ROP, 1,
260		{POLY, 100}},
261  {"-seg100c2", "100-pixel line segment (2 kids)", NULL,
262		InitSegments, DoSegments, NullProc, EndSegments,
263		V1_2FEATURE, ROP, 2,
264		{POLY, 100}},
265  {"-seg100c3", "100-pixel line segment (3 kids)", NULL,
266		InitSegments, DoSegments, NullProc, EndSegments,
267		V1_2FEATURE, ROP, 3,
268		{POLY, 100}},
269  {"-dseg10",   "10-pixel dashed segment", NULL,
270		InitDashedSegments, DoSegments, NullProc, EndSegments,
271		V1_2FEATURE, ROP, 0,
272		{POLY, 10}},
273  {"-dseg100", "100-pixel dashed segment", NULL,
274		InitDashedSegments, DoSegments, NullProc, EndSegments,
275		V1_2FEATURE, ROP, 0,
276		{POLY, 100}},
277  {"-ddseg100", "100-pixel double-dashed segment", NULL,
278		InitDoubleDashedSegments, DoSegments, NullProc, EndSegments,
279		V1_2FEATURE, ROP, 0,
280		{POLY, 100}},
281  {"-hseg10",   "10-pixel horizontal line segment", NULL,
282		InitHorizSegments, DoSegments, NullProc, EndSegments,
283		V1_3FEATURE, ROP, 0,
284		{POLY, 10}},
285  {"-hseg100",  "100-pixel horizontal line segment", NULL,
286		InitHorizSegments, DoSegments, NullProc, EndSegments,
287		V1_3FEATURE, ROP, 0,
288		{POLY, 100}},
289  {"-hseg500",  "500-pixel horizontal line segment", NULL,
290		InitHorizSegments, DoSegments, NullProc, EndSegments,
291		V1_3FEATURE, ROP, 0,
292		{300, 500}},
293  {"-vseg10",   "10-pixel vertical line segment", NULL,
294		InitVertSegments, DoSegments, NullProc, EndSegments,
295		V1_3FEATURE, ROP, 0,
296		{POLY, 10}},
297  {"-vseg100",  "100-pixel vertical line segment", NULL,
298		InitVertSegments, DoSegments, NullProc, EndSegments,
299		V1_3FEATURE, ROP, 0,
300		{POLY, 100}},
301  {"-vseg500",  "500-pixel vertical line segment", NULL,
302		InitVertSegments, DoSegments, NullProc, EndSegments,
303		V1_3FEATURE, ROP, 0,
304		{300, 500}},
305  {"-whseg10",  "10x1 wide horizontal line segment", NULL,
306		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
307		V1_3FEATURE, ROP, 0,
308		{POLY, 10}},
309  {"-whseg100", "100x10 wide horizontal line segment", NULL,
310		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
311		V1_3FEATURE, ROP, 0,
312		{270, 100}},
313  {"-whseg500", "500x50 wide horizontal line segment", NULL,
314		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
315		V1_3FEATURE, ROP, 0,
316		{10, 500}},
317  {"-wvseg10",  "10x1 wide vertical line segment", NULL,
318		InitWideVertSegments, DoSegments, NullProc, EndSegments,
319		V1_3FEATURE, ROP, 0,
320		{POLY, 10}},
321  {"-wvseg100", "100x10 wide vertical line segment", NULL,
322		InitWideVertSegments, DoSegments, NullProc, EndSegments,
323		V1_3FEATURE, ROP, 0,
324		{270, 100}},
325  {"-wvseg500", "500x50 wide vertical line segment", NULL,
326		InitWideVertSegments, DoSegments, NullProc, EndSegments,
327		V1_3FEATURE, ROP, 0,
328		{10, 500}},
329  {"-line1",   "1-pixel line", NULL,
330		InitLines, DoLines, NullProc, EndLines,
331		V1_2FEATURE, ROP, 0,
332		{POLY, 1}},
333  {"-line10",   "10-pixel line", NULL,
334		InitLines, DoLines, NullProc, EndLines,
335		V1_2FEATURE, ROP, 0,
336		{POLY, 10}},
337  {"-line100",  "100-pixel line", NULL,
338		InitLines, DoLines, NullProc, EndLines,
339		V1_2FEATURE, ROP, 0,
340		{POLY, 100}},
341  {"-line500", "500-pixel line", NULL,
342		InitLines, DoLines, NullProc, EndLines,
343		V1_2FEATURE, ROP, 0,
344		{POLY, 500}},
345  {"-dline10",  "10-pixel dashed line", NULL,
346		InitDashedLines, DoLines, NullProc, EndLines,
347		V1_2FEATURE, ROP, 0,
348		{POLY, 10}},
349  {"-dline100", "100-pixel dashed line", NULL,
350		InitDashedLines, DoLines, NullProc, EndLines,
351		V1_2FEATURE, ROP, 0,
352		{POLY, 100}},
353  {"-ddline100", "100-pixel double-dashed line", NULL,
354		InitDoubleDashedLines, DoLines, NullProc, EndLines,
355		V1_2FEATURE, ROP, 0,
356		{POLY, 100}},
357  {"-wline10",  "10x1 wide line", NULL,
358		InitWideLines, DoLines, NullProc, EndLines,
359		V1_2FEATURE, ROP, 0,
360		{100, 10}},
361  {"-wline100", "100x10 wide line", NULL,
362		InitWideLines, DoLines, NullProc, EndLines,
363		V1_2FEATURE, ROP, 0,
364		{100, 100}},
365  {"-wline500", "500x50 wide line", NULL,
366		InitWideLines, DoLines, NullProc, EndLines,
367		V1_2FEATURE, ROP, 0,
368		{50, 500}},
369  {"-wdline100", "100x10 wide dashed line", NULL,
370		InitWideDashedLines, DoLines, NullProc, EndLines,
371		V1_2FEATURE, ROP, 0,
372		{100, 100}},
373  {"-wddline100",  "100x10 wide double-dashed line", NULL,
374		InitWideDoubleDashedLines, DoLines, NullProc, EndLines,
375		V1_2FEATURE, ROP, 0,
376		{100, 100}},
377  {"-orect10",  "10x10 rectangle outline", NULL,
378		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
379		V1_3FEATURE, ROP, 0,
380		{POLY, 10, NULL, "0", FillSolid}},
381  {"-orect100", "100x100 rectangle outline", NULL,
382		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
383		V1_3FEATURE, ROP, 0,
384		{25, 100, NULL, "0", FillSolid}},
385  {"-orect500",	"500x500 rectangle outline", NULL,
386		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
387		V1_3FEATURE, ROP, 0,
388		{1, 500, NULL, "0", FillSolid}},
389  {"-worect10",	"10x10 wide rectangle outline", NULL,
390		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
391		V1_3FEATURE, ROP, 0,
392		{POLY, 10, NULL, "1", FillSolid}},
393  {"-worect100", "100x100 wide rectangle outline", NULL,
394		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
395		V1_3FEATURE, ROP, 0,
396		{25, 100, NULL, "10", FillSolid}},
397  {"-worect500", "500x500 wide rectangle outline", NULL,
398		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
399		V1_3FEATURE, ROP, 0,
400		{1, 500, NULL, "50", FillSolid}},
401  {"-circle1",  "1-pixel circle", NULL,
402		InitCircles, DoArcs, NullProc, EndArcs,
403		V1_2FEATURE, ROP, 0,
404		{POLY, 1}},
405  {"-circle10", "10-pixel circle", NULL,
406		InitCircles, DoArcs, NullProc, EndArcs,
407		V1_2FEATURE, ROP, 0,
408		{POLY, 10}},
409  {"-circle100", "100-pixel circle", NULL,
410		InitCircles, DoArcs, NullProc, EndArcs,
411		V1_2FEATURE, ROP, 0,
412		{200, 100}},
413  {"-circle500", "500-pixel circle", NULL,
414		InitCircles, DoArcs, NullProc, EndArcs,
415		V1_2FEATURE, ROP, 0,
416		{50, 500}},
417  {"-dcircle100", "100-pixel dashed circle", NULL,
418		InitDashedCircles, DoArcs, NullProc, EndArcs,
419		V1_2FEATURE, ROP, 0,
420		{100, 100}},
421  {"-ddcircle100", "100-pixel double-dashed circle", NULL,
422		InitDoubleDashedCircles, DoArcs, NullProc, EndArcs,
423		V1_2FEATURE, ROP, 0,
424		{100, 100}},
425  {"-wcircle10", "10-pixel wide circle", NULL,
426		InitWideCircles, DoArcs, NullProc, EndArcs,
427		V1_2FEATURE, ROP, 0,
428		{POLY, 10}},
429  {"-wcircle100", "100-pixel wide circle", NULL,
430		InitWideCircles, DoArcs, NullProc, EndArcs,
431		V1_2FEATURE, ROP, 0,
432		{100, 100}},
433  {"-wcircle500", "500-pixel wide circle", NULL,
434		InitWideCircles, DoArcs, NullProc, EndArcs,
435		V1_2FEATURE, ROP, 0,
436		{25, 500}},
437  {"-wdcircle100", "100-pixel wide dashed circle", NULL,
438		InitWideDashedCircles, DoArcs, NullProc, EndArcs,
439		V1_2FEATURE, ROP, 0,
440		{100, 100}},
441  {"-wddcircle100", "100-pixel wide double-dashed circle", NULL,
442		InitWideDoubleDashedCircles, DoArcs, NullProc, EndArcs,
443		V1_2FEATURE, ROP, 0,
444		{100, 100}},
445  {"-pcircle10", "10-pixel partial circle", NULL,
446		InitPartCircles, DoArcs, NullProc, EndArcs,
447		V1_2FEATURE, ROP, 0,
448		{POLY, 10}},
449  {"-pcircle100", "100-pixel partial circle", NULL,
450		InitPartCircles, DoArcs, NullProc, EndArcs,
451		V1_2FEATURE, ROP, 0,
452		{198, 100}},
453  {"-wpcircle10", "10-pixel wide partial circle", NULL,
454		InitPartWideCircles, DoArcs, NullProc, EndArcs,
455		V1_3FEATURE, ROP, 0,
456		{POLY, 10}},
457  {"-wpcircle100", "100-pixel wide partial circle", NULL,
458		InitPartWideCircles, DoArcs, NullProc, EndArcs,
459		V1_3FEATURE, ROP, 0,
460		{198, 100}},
461  {"-fcircle1",  "1-pixel solid circle", NULL,
462		InitCircles, DoFilledArcs, NullProc, EndArcs,
463		V1_2FEATURE, ROP, 0,
464		{POLY, 1}},
465  {"-fcircle10", "10-pixel solid circle", NULL,
466		InitCircles, DoFilledArcs, NullProc, EndArcs,
467		V1_2FEATURE, ROP, 0,
468		{POLY, 10}},
469  {"-fcircle100", "100-pixel solid circle", NULL,
470		InitCircles, DoFilledArcs, NullProc, EndArcs,
471		V1_2FEATURE, ROP, 0,
472		{100, 100}},
473  {"-fcircle500", "500-pixel solid circle", NULL,
474		InitCircles, DoFilledArcs, NullProc, EndArcs,
475		V1_2FEATURE, ROP, 0,
476		{20, 500}},
477  {"-fcpcircle10", "10-pixel fill chord partial circle", NULL,
478		InitChordPartCircles, DoFilledArcs, NullProc, EndArcs,
479		V1_2FEATURE, ROP, 0,
480		{POLY, 10}},
481  {"-fcpcircle100", "100-pixel fill chord partial circle", NULL,
482		InitChordPartCircles, DoFilledArcs, NullProc, EndArcs,
483		V1_2FEATURE, ROP, 0,
484		{108, 100}},
485  {"-fspcircle10", "10-pixel fill slice partial circle", NULL,
486		InitSlicePartCircles, DoFilledArcs, NullProc, EndArcs,
487		V1_2FEATURE, ROP, 0,
488		{POLY, 10}},
489  {"-fspcircle100", "100-pixel fill slice partial circle", NULL,
490		InitSlicePartCircles, DoFilledArcs, NullProc, EndArcs,
491		V1_2FEATURE, ROP, 0,
492		{108, 100}},
493  {"-ellipse10", "10-pixel ellipse", NULL,
494		InitEllipses, DoArcs, NullProc, EndArcs,
495		V1_2FEATURE, ROP, 0,
496		{500, 10}},
497  {"-ellipse100", "100-pixel ellipse", NULL,
498		InitEllipses, DoArcs, NullProc, EndArcs,
499		V1_2FEATURE, ROP, 0,
500		{300, 100}},
501  {"-ellipse500", "500-pixel ellipse", NULL,
502		InitEllipses, DoArcs, NullProc, EndArcs,
503		V1_2FEATURE, ROP, 0,
504		{100, 500}},
505  {"-dellipse100", "100-pixel dashed ellipse", NULL,
506		InitDashedEllipses, DoArcs, NullProc, EndArcs,
507		V1_2FEATURE, ROP, 0,
508		{25, 100}},
509  {"-ddellipse100", "100-pixel double-dashed ellipse", NULL,
510		InitDoubleDashedEllipses, DoArcs, NullProc, EndArcs,
511		V1_2FEATURE, ROP, 0,
512		{25, 100}},
513  {"-wellipse10", "10-pixel wide ellipse", NULL,
514		InitWideEllipses, DoArcs, NullProc, EndArcs,
515		V1_2FEATURE, ROP, 0,
516		{200, 10}},
517  {"-wellipse100", "100-pixel wide ellipse", NULL,
518		InitWideEllipses, DoArcs, NullProc, EndArcs,
519		V1_2FEATURE, ROP, 0,
520		{25, 100}},
521  {"-wellipse500", "500-pixel wide ellipse", NULL,
522		InitWideEllipses, DoArcs, NullProc, EndArcs,
523		V1_2FEATURE, ROP, 0,
524		{20, 500}},
525  {"-wdellipse100", "100-pixel wide dashed ellipse", NULL,
526		InitWideDashedEllipses, DoArcs, NullProc, EndArcs,
527		V1_2FEATURE, ROP, 0,
528		{25, 100}},
529  {"-wddellipse100", "100-pixel wide double-dashed ellipse", NULL,
530		InitWideDoubleDashedEllipses, DoArcs, NullProc, EndArcs,
531		V1_2FEATURE, ROP, 0,
532		{25, 100}},
533  {"-pellipse10", "10-pixel partial ellipse", NULL,
534		InitPartEllipses, DoArcs, NullProc, EndArcs,
535		V1_2FEATURE, ROP, 0,
536		{540, 10}},
537  {"-pellipse100", "100-pixel partial ellipse", NULL,
538		InitPartEllipses, DoArcs, NullProc, EndArcs,
539		V1_2FEATURE, ROP, 0,
540		{360, 100}},
541  {"-wpellipse10", "10-pixel wide partial ellipse", NULL,
542		InitPartWideEllipses, DoArcs, NullProc, EndArcs,
543		V1_3FEATURE, ROP, 0,
544		{540, 10}},
545  {"-wpellipse100", "100-pixel wide partial ellipse", NULL,
546		InitPartWideEllipses, DoArcs, NullProc, EndArcs,
547		V1_3FEATURE, ROP, 0,
548		{360, 100}},
549  {"-fellipse10", "10-pixel filled ellipse", NULL,
550		InitEllipses, DoFilledArcs, NullProc, EndArcs,
551		V1_2FEATURE, ROP, 0,
552		{200, 10}},
553  {"-fellipse100", "100-pixel filled ellipse", NULL,
554		InitEllipses, DoFilledArcs, NullProc, EndArcs,
555		V1_2FEATURE, ROP, 0,
556		{25, 100}},
557  {"-fellipse500", "500-pixel filled ellipse", NULL,
558		InitEllipses, DoFilledArcs, NullProc, EndArcs,
559		V1_2FEATURE, ROP, 0,
560		{10, 500}},
561  {"-fcpellipse10", "10-pixel fill chord partial ellipse", NULL,
562		InitChordPartEllipses, DoFilledArcs, NullProc, EndArcs,
563		V1_2FEATURE, ROP, 0,
564		{270, 10}},
565  {"-fcpellipse100", "100-pixel fill chord partial ellipse", NULL,
566		InitChordPartEllipses, DoFilledArcs, NullProc, EndArcs,
567		V1_2FEATURE, ROP, 0,
568		{36, 100}},
569  {"-fspellipse10", "10-pixel fill slice partial ellipse", NULL,
570		InitSlicePartEllipses, DoFilledArcs, NullProc, EndArcs,
571		V1_2FEATURE, ROP, 0,
572		{270, 10}},
573  {"-fspellipse100", "100-pixel fill slice partial ellipse", NULL,
574		InitSlicePartEllipses, DoFilledArcs, NullProc, EndArcs,
575		V1_2FEATURE, ROP, 0,
576		{36, 100}},
577  {"-triangle1", "Fill 1-pixel/side triangle", NULL,
578		InitTriangles, DoTriangles, NullProc, EndTriangles,
579		V1_2ONLY, ROP, 0,
580		{POLY, 1}},
581  {"-triangle10", "Fill 10-pixel/side triangle", NULL,
582		InitTriangles, DoTriangles, NullProc, EndTriangles,
583		V1_2ONLY, ROP, 0,
584		{POLY, 10}},
585  {"-triangle100", "Fill 100-pixel/side triangle", NULL,
586		InitTriangles, DoTriangles, NullProc, EndTriangles,
587		V1_2ONLY, ROP, 0,
588		{100, 100}},
589  {"-triangle1", "Fill 1x1 equivalent triangle", NULL,
590		InitTriangles, DoTriangles, NullProc, EndTriangles,
591		V1_3FEATURE, ROP, 0,
592		{POLY, 1}},
593  {"-triangle10", "Fill 10x10 equivalent triangle", NULL,
594		InitTriangles, DoTriangles, NullProc, EndTriangles,
595		V1_3FEATURE, ROP, 0,
596		{POLY, 10}},
597  {"-triangle100", "Fill 100x100 equivalent triangle", NULL,
598		InitTriangles, DoTriangles, NullProc, EndTriangles,
599		V1_3FEATURE, ROP, 0,
600		{100, 100}},
601  {"-trap1", "Fill 1x1 trapezoid", NULL,
602		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
603		V1_4FEATURE, ROP, 0,
604		{POLY, 1}},
605  {"-trap10", "Fill 10x10 trapezoid", NULL,
606		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
607		V1_2FEATURE, ROP, 0,
608		{POLY, 10}},
609  {"-trap100", "Fill 100x100 trapezoid", NULL,
610		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
611		V1_2FEATURE, ROP, 0,
612		{POLY/10, 100}},
613  {"-trap300", "Fill 300x300 trapezoid", NULL,
614		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
615		V1_4FEATURE, ROP, 0,
616		{2, 300}},
617  {"-strap1", "Fill 1x1 stippled trapezoid (8x8 stipple)", NULL,
618		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
619		V1_4FEATURE, ROP, 0,
620		{POLY, 1, NULL, NULL, FillStippled}},
621  {"-strap10", "Fill 10x10 stippled trapezoid",
622		"Fill 10x10 stippled trapezoid (8x8 stipple)",
623		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
624		V1_2FEATURE, ROP, 0,
625		{POLY, 10, NULL, NULL, FillStippled}},
626  {"-strap100", "Fill 100x100 stippled trapezoid",
627		"Fill 100x100 stippled trapezoid (8x8 stipple)",
628		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
629		V1_2FEATURE, ROP, 0,
630		{100, 100, NULL, NULL, FillStippled}},
631  {"-strap300", "Fill 300x300 stippled trapezoid (8x8 stipple)", NULL,
632		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
633		V1_4FEATURE, ROP, 0,
634		{2, 300, NULL, NULL, FillStippled}},
635  {"-ostrap1", "Fill 1x1 opaque stippled trapezoid (8x8 stipple)", NULL,
636		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
637		V1_4FEATURE, ROP, 0,
638		{POLY, 1, NULL, NULL, FillOpaqueStippled}},
639  {"-ostrap10", "Fill 10x10 opaque stippled trapezoid",
640		"Fill 10x10 opaque stippled trapezoid (8x8 stipple)",
641		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
642		V1_2FEATURE, ROP, 0,
643		{POLY, 10, NULL, NULL, FillOpaqueStippled}},
644  {"-ostrap100", "Fill 100x100 opaque stippled trapezoid",
645		"Fill 100x100 opaque stippled trapezoid (8x8 stipple)",
646		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
647		V1_2FEATURE, ROP, 0,
648		{100, 100, NULL, NULL, FillOpaqueStippled}},
649  {"-ostrap300", "Fill 300x300 opaque stippled trapezoid (8x8 stipple)", NULL,
650		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
651		V1_4FEATURE, ROP, 0,
652		{2, 300, NULL, NULL, FillOpaqueStippled}},
653  {"-tiletrap1", "Fill 1x1 tiled trapezoid (4x4 tile)", NULL,
654		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
655		V1_4FEATURE, ROP, 0,
656		{POLY, 1, NULL, NULL, FillTiled}},
657  {"-tiletrap10", "Fill 10x10 tiled trapezoid",
658		"Fill 10x10 tiled trapezoid (4x4 tile)",
659		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
660		V1_2FEATURE, ROP, 0,
661		{POLY, 10, NULL, NULL, FillTiled}},
662  {"-tiletrap100", "Fill 100x100 tiled trapezoid",
663		"Fill 100x100 tiled trapezoid (4x4 tile)",
664		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
665		V1_2FEATURE, ROP, 0,
666		{100, 100, NULL, NULL, FillTiled}},
667  {"-tiletrap300", "Fill 300x300 tiled trapezoid (4x4 tile)", NULL,
668		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
669		V1_4FEATURE, ROP, 0,
670		{2, 300, NULL, NULL, FillTiled}},
671  {"-oddstrap1", "Fill 1x1 stippled trapezoid (17x15 stipple)", NULL,
672		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
673		V1_4FEATURE, ROP, 0,
674		{POLY, 1, "OddTile", NULL, FillStippled}},
675  {"-oddstrap10", "Fill 10x10 stippled trapezoid (17x15 stipple)", NULL,
676		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
677		V1_4FEATURE, ROP, 0,
678		{POLY, 10, "OddTile", NULL, FillStippled}},
679  {"-oddstrap100", "Fill 100x100 stippled trapezoid (17x15 stipple)", NULL,
680		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
681		V1_4FEATURE, ROP, 0,
682		{100, 100, "OddTile", NULL, FillStippled}},
683  {"-oddstrap300", "Fill 300x300 stippled trapezoid (17x15 stipple)", NULL,
684		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
685		V1_4FEATURE, ROP, 0,
686		{2, 300, "OddTile", NULL, FillStippled}},
687  {"-oddostrap1", "Fill 1x1 opaque stippled trapezoid (17x15 stipple)", NULL,
688		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
689		V1_4FEATURE, ROP, 0,
690		{POLY, 1, "OddTile", NULL, FillOpaqueStippled}},
691  {"-oddostrap10", "Fill 10x10 opaque stippled trapezoid (17x15 stipple)", NULL,
692		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
693		V1_4FEATURE, ROP, 0,
694		{POLY, 10, "OddTile", NULL, FillOpaqueStippled}},
695  {"-oddostrap100", "Fill 100x100 opaque stippled trapezoid (17x15 stipple)", NULL,
696		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
697		V1_4FEATURE, ROP, 0,
698		{100, 100, "OddTile", NULL, FillOpaqueStippled}},
699  {"-oddostrap300", "Fill 300x300 opaque stippled trapezoid (17x15 stipple)", NULL,
700		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
701		V1_4FEATURE, ROP, 0,
702		{2, 300, "OddTile", NULL, FillOpaqueStippled}},
703  {"-oddtiletrap1", "Fill 1x1 tiled trapezoid (17x15 tile)", NULL,
704		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
705		V1_4FEATURE, ROP, 0,
706		{POLY, 1, "OddTile", NULL, FillTiled}},
707  {"-oddtiletrap10", "Fill 10x10 tiled trapezoid (17x15 tile)", NULL,
708		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
709		V1_4FEATURE, ROP, 0,
710		{POLY, 10, "OddTile", NULL, FillTiled}},
711  {"-oddtiletrap100", "Fill 100x100 tiled trapezoid (17x15 tile)", NULL,
712		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
713		V1_4FEATURE, ROP, 0,
714		{100, 100, "OddTile", NULL, FillTiled}},
715  {"-oddtiletrap300", "Fill 300x300 tiled trapezoid (17x15 tile)", NULL,
716		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
717		V1_4FEATURE, ROP, 0,
718		{2, 300, "OddTile", NULL, FillTiled}},
719  {"-bigstrap1", "Fill 1x1 stippled trapezoid (161x145 stipple)", NULL,
720		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
721		V1_4FEATURE, ROP, 0,
722		{POLY, 1, "mensetmanus", NULL, FillStippled}},
723  {"-bigstrap10", "Fill 10x10 161x145 stippled trapezoid",
724		"Fill 10x10 stippled trapezoid (161x145 stipple)",
725		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
726		V1_3FEATURE, ROP, 0,
727		{POLY, 10, "mensetmanus", NULL, FillStippled}},
728  {"-bigstrap100", "Fill 100x100 161x145 stippled trapezoid",
729		"Fill 100x100 stippled trapezoid (161x145 stipple)",
730		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
731		V1_3FEATURE, ROP, 0,
732		{100, 100, "mensetmanus", NULL, FillStippled}},
733  {"-bigstrap300", "Fill 300x300 stippled trapezoid (161x145 stipple)", NULL,
734		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
735		V1_4FEATURE, ROP, 0,
736		{2, 300, "mensetmanus", NULL, FillStippled}},
737  {"-bigostrap1", "Fill 1x1 opaque stippled trapezoid (161x145 stipple)", NULL,
738		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
739		V1_4FEATURE, ROP, 0,
740		{POLY, 1, "mensetmanus", NULL, FillOpaqueStippled}},
741  {"-bigostrap10", "Fill 10x10 161x145 opaque stippled trapezoid",
742		"Fill 10x10 opaque stippled trapezoid (161x145 stipple)",
743		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
744		V1_3FEATURE, ROP, 0,
745		{POLY, 10, "mensetmanus", NULL, FillOpaqueStippled}},
746  {"-bigostrap100", "Fill 100x100 161x145 opaque stippled trapezoid",
747		"Fill 100x100 opaque stippled trapezoid (161x145 stipple)",
748		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
749		V1_3FEATURE, ROP, 0,
750		{100, 100, "mensetmanus", NULL, FillOpaqueStippled}},
751  {"-bigostrap300", "Fill 300x300 opaque stippled trapezoid (161x145 stipple)", NULL,
752		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
753		V1_4FEATURE, ROP, 0,
754		{2, 300, "mensetmanus", NULL, FillOpaqueStippled}},
755  {"-bigtiletrap1", "Fill 1x1 tiled trapezoid (161x145 tile)", NULL,
756		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
757		V1_4FEATURE, ROP, 0,
758		{POLY, 1, "mensetmanus", NULL, FillTiled}},
759  {"-bigtiletrap10", "Fill 10x10 161x145 tiled trapezoid",
760		"Fill 10x10 tiled trapezoid (161x145 tile)",
761		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
762		V1_3FEATURE, ROP, 0,
763		{POLY, 10, "mensetmanus", NULL, FillTiled}},
764  {"-bigtiletrap100", "Fill 100x100 161x145 tiled trapezoid",
765		"Fill 100x100 tiled trapezoid (161x145 tile)",
766		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
767		V1_3FEATURE, ROP, 0,
768		{100, 100, "mensetmanus", NULL, FillTiled}},
769  {"-bigtiletrap300", "Fill 300x300 tiled trapezoid (161x145 tile)", NULL,
770		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
771		V1_4FEATURE, ROP, 0,
772		{2, 300, "mensetmanus", NULL, FillTiled}},
773  {"-eschertiletrap1", "Fill 1x1 tiled trapezoid (216x208 tile)", NULL,
774		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
775		V1_4FEATURE, ROP, 0,
776		{POLY, 1, "escherknot", NULL, FillTiled}},
777  {"-eschertiletrap10", "Fill 10x10 216x208 tiled trapezoid",
778		"Fill 10x10 tiled trapezoid (216x208 tile)",
779		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
780		V1_3FEATURE, ROP, 0,
781		{POLY, 10, "escherknot", NULL, FillTiled}},
782  {"-eschertiletrap100", "Fill 100x100 216x208 tiled trapezoid",
783		"Fill 100x100 tiled trapezoid (216x208 tile)",
784		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
785		V1_3FEATURE, ROP, 0,
786		{25, 100, "escherknot", NULL, FillTiled}},
787  {"-eschertiletrap300", "Fill 300x300 tiled trapezoid (216x208 tile)", NULL,
788		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
789		V1_4FEATURE, ROP, 0,
790		{2, 300, "escherknot", NULL, FillTiled}},
791#if defined(XRENDER) && defined(XFT)
792  {"-aatrap1", "Fill 1x1 aa trap", NULL,
793		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
794		V1_5FEATURE, NONROP, 0,
795		{POLY, 1 }},
796  {"-aatrap10", "Fill 10x10 aa trap", NULL,
797		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
798		V1_5FEATURE, NONROP, 0,
799		{POLY, 10 }},
800  {"-aatrap100", "Fill 100x100 aa trap", NULL,
801		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
802		V1_5FEATURE, NONROP, 0,
803		{POLY, 100 }},
804  {"-aatrap300", "Fill 300x300 aa trap", NULL,
805		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
806		V1_5FEATURE, NONROP, 0,
807		{POLY, 300 }},
808  {"-aa4trap1", "Fill 1x1 aa trap with 4 bit alpha", NULL,
809		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
810		V1_5FEATURE, NONROP, 0,
811		{POLY, 1, "4" }},
812  {"-aa4trap10", "Fill 10x10 aa trap with 4 bit alpha", NULL,
813		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
814		V1_5FEATURE, NONROP, 0,
815		{POLY, 10, "4" }},
816  {"-aa4trap100", "Fill 100x100 aa trap with 4 bit alpha", NULL,
817		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
818		V1_5FEATURE, NONROP, 0,
819		{25, 100, "4" }},
820  {"-aa4trap300", "Fill 300x300 aa trap with 4 bit alpha", NULL,
821		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
822		V1_5FEATURE, NONROP, 0,
823		{POLY, 300, "4" }},
824  {"-aa1trap1", "Fill 1x1 aa trap with 1 bit alpha", NULL,
825		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
826		V1_5FEATURE, NONROP, 0,
827		{POLY, 1, "1" }},
828  {"-aa1trap10", "Fill 10x10 aa trap with 1 bit alpha", NULL,
829		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
830		V1_5FEATURE, NONROP, 0,
831		{POLY, 10, "1" }},
832  {"-aa1trap100", "Fill 100x100 aa trap with 1 bit alpha", NULL,
833		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
834		V1_5FEATURE, NONROP, 0,
835		{25, 100, "1" }},
836  {"-aa1trap300", "Fill 300x300 aa trap with 1 bit alpha", NULL,
837		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
838		V1_5FEATURE, NONROP, 0,
839		{2, 300, "1" }},
840
841  {"-aatrap2x1", "Fill 2x1 aa trap", NULL,
842		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
843		V1_5FEATURE, NONROP, 0,
844		{POLY, 1, "8,2" }},
845  {"-aatrap2x10", "Fill 2x10 aa trap", NULL,
846		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
847		V1_5FEATURE, NONROP, 0,
848		{POLY, 10, "8,2" }},
849  {"-aatrap2x100", "Fill 2x100 aa trap", NULL,
850		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
851		V1_5FEATURE, NONROP, 0,
852		{25, 100, "8,2" }},
853  {"-aatrap2x300", "Fill 2x300 aa trap", NULL,
854		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
855		V1_5FEATURE, NONROP, 0,
856		{2, 300, "8,2" }},
857
858  {"-aatrapezoid1", "Fill 1x1 aa trapezoid", NULL,
859		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
860		V1_5FEATURE, NONROP, 0,
861		{POLY, 1 }},
862  {"-aatrapezoid10", "Fill 10x10 aa trapezoid", NULL,
863		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
864		V1_5FEATURE, NONROP, 0,
865		{POLY, 10 }},
866  {"-aatrapezoid100", "Fill 100x100 aa trapezoid", NULL,
867		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
868		V1_5FEATURE, NONROP, 0,
869		{25, 100 }},
870  {"-aatrapezoid300", "Fill 300x300 aa trapezoid", NULL,
871		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
872		V1_5FEATURE, NONROP, 0,
873		{2, 300 }},
874  {"-addaatrapezoid1", "Fill 1x1 aa pre-added trapezoid", NULL,
875		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
876		V1_5FEATURE, NONROP, 0,
877		{POLY, 1, "add" }},
878  {"-addaatrapezoid10", "Fill 10x10 aa pre-added trapezoid", NULL,
879		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
880		V1_5FEATURE, NONROP, 0,
881		{POLY, 10, "add" }},
882  {"-addaatrapezoid100", "Fill 100x100 aa pre-added trapezoid", NULL,
883		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
884		V1_5FEATURE, NONROP, 0,
885		{25, 100, "add" }},
886  {"-addaatrapezoid300", "Fill 300x300 aa pre-added trapezoid", NULL,
887		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
888		V1_5FEATURE, NONROP, 0,
889		{2, 300, "add" }},
890#endif
891  {"-complex10", "Fill 10-pixel/side complex polygon", NULL,
892		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
893		V1_2ONLY, ROP, 0,
894		{POLY, 10}},
895  {"-complex100", "Fill 100-pixel/side complex polygons", NULL,
896		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
897		V1_2ONLY, ROP, 0,
898		{POLY/10, 100}},
899  {"-complex10", "Fill 10x10 equivalent complex polygon", NULL,
900		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
901		V1_3FEATURE, ROP, 0,
902		{POLY, 10}},
903  {"-complex100", "Fill 100x100 equivalent complex polygons", NULL,
904		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
905		V1_3FEATURE, ROP, 0,
906		{POLY/10, 100}},
907  {"-64poly10convex", "Fill 10x10 64-gon (Convex)", NULL,
908		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
909		V1_4FEATURE, ROP, 0,
910		{POLY, 10, (char *) 64, (char *) Convex}},
911  {"-64poly100convex", "Fill 100x100 64-gon (Convex)", NULL,
912		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
913		V1_4FEATURE, ROP, 0,
914		{POLY/10, 100, (char *) 64, (char *) Convex}},
915  {"-64poly10complex", "Fill 10x10 64-gon (Complex)", NULL,
916		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
917		V1_4FEATURE, ROP, 0,
918		{POLY, 10, (char *) 64, (char *) Complex}},
919  {"-64poly100complex", "Fill 100x100 64-gon (Complex)", NULL,
920		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
921		V1_4FEATURE, ROP, 0,
922		{POLY/10, 100, (char *) 64, (char *) Complex}},
923  {"-ftext",    "Char in 80-char line (6x13)", NULL,
924		InitText, DoText, ClearTextWin, EndText,
925		V1_2FEATURE, ROP, 0,
926		{80, False, "6x13", NULL}},
927  {"-tileftext","Char in 80-char line tiled (6x13)", NULL,
928		InitText, DoText, ClearTextWin, EndText,
929		V1_7FEATURE, ROP, 0,
930		{80, False, "6x13", NULL, FillTiled}},
931  {"-f8text",    "Char in 70-char line (8x13)", NULL,
932		InitText, DoText, ClearTextWin, EndText,
933		V1_3FEATURE, ROP, 0,
934		{70, False, "8x13", NULL}},
935  {"-f9text",    "Char in 60-char line (9x15)", NULL,
936		InitText, DoText, ClearTextWin, EndText,
937		V1_3FEATURE, ROP, 0,
938		{60, False, "9x15", NULL}},
939  {"-f14text16",  "Char16 in 40-char line (k14)", NULL,
940		InitText16, DoText16, ClearTextWin, EndText16,
941		V1_3FEATURE, ROP, 0,
942		{40, False,
943	      "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
944		NULL}},
945  {"-f24text16",  "Char16 in 23-char line (k24)", NULL,
946		InitText16, DoText16, ClearTextWin, EndText16,
947		V1_3FEATURE, ROP, 0,
948		{23, False,
949	      "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*",
950		NULL}},
951  {"-tr10text", "Char in 80-char line (TR 10)", NULL,
952		InitText, DoText, ClearTextWin, EndText,
953		V1_2FEATURE, ROP, 0,
954		{80, False,
955		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
956		NULL}},
957  {"-tr24text", "Char in 30-char line (TR 24)", NULL,
958		InitText, DoText, ClearTextWin, EndText,
959		V1_2FEATURE, ROP, 0,
960		{30, False,
961		"-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
962 		NULL}},
963  {"-polytext", "Char in 20/40/20 line (6x13, TR 10)", NULL,
964		InitText, DoPolyText, ClearTextWin, EndText,
965		V1_2FEATURE, ROP, 0,
966		{80, True, "6x13",
967		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1"}},
968  {"-polytext16", "Char16 in 7/14/7 line (k14, k24)", NULL,
969		InitText16, DoPolyText16, ClearTextWin, EndText16,
970		V1_3FEATURE, ROP, 0,
971		{28, True,
972	     "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
973             "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*"}},
974  {"-fitext",   "Char in 80-char image line (6x13)", NULL,
975		InitText, DoImageText, ClearTextWin, EndText,
976		V1_2FEATURE, PLANEMASK, 0,
977		{80, False, "6x13", NULL}},
978  {"-f8itext",   "Char in 70-char image line (8x13)", NULL,
979		InitText, DoImageText, ClearTextWin, EndText,
980		V1_3FEATURE, PLANEMASK, 0,
981		{70, False, "8x13", NULL}},
982  {"-f9itext",   "Char in 60-char image line (9x15)", NULL,
983		InitText, DoImageText, ClearTextWin, EndText,
984		V1_3FEATURE, PLANEMASK, 0,
985		{60, False, "9x15", NULL}},
986  {"-f14itext16", "Char16 in 40-char image line (k14)", NULL,
987		InitText16, DoImageText16, ClearTextWin, EndText16,
988		V1_3FEATURE, PLANEMASK, 0,
989		{40, False,
990	      "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
991		NULL}},
992  {"-f24itext16", "Char16 in 23-char image line (k24)", NULL,
993		InitText16, DoImageText16, ClearTextWin, EndText16,
994		V1_3FEATURE, PLANEMASK, 0,
995		{23, False,
996	      "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*",
997		NULL}},
998  {"-tr10itext", "Char in 80-char image line (TR 10)", NULL,
999		InitText, DoImageText, ClearTextWin, EndText,
1000		V1_2FEATURE, PLANEMASK, 0,
1001		{80, False,
1002		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
1003		NULL}},
1004  {"-tr24itext", "Char in 30-char image line (TR 24)", NULL,
1005		InitText, DoImageText, ClearTextWin, EndText,
1006		V1_2FEATURE, PLANEMASK, 0,
1007		{30, False,
1008		"-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
1009 		NULL}},
1010#ifdef XFT
1011  {"-aa10text", "Char in 80-char aa line (DejaVu Sans 10)", NULL,
1012	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1013		V1_5FEATURE, NONROP, 0,
1014		{80, 10, "DejaVu Sans:antialias=true:rgba=0:pixelsize=10", NULL}},
1015  {"-aa24text", "Char in 30-char aa line (DejaVu Sans 24)", NULL,
1016	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1017		V1_5FEATURE, NONROP, 0,
1018		{30, 24, "DejaVu Sans:antialias=true:rgba=0:pixelsize=24", NULL}},
1019  {"-aaftext", "Char in 80-char aa line (Courier 12)", NULL,
1020	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1021		V1_5FEATURE, NONROP, 0,
1022		{80, 12, "Courier:antialias=true:rgba=0:pixelsize=12", NULL}},
1023  {"-a10text", "Char in 80-char a line (DejaVu Sans 10)", NULL,
1024	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1025		V1_5FEATURE, NONROP, 0,
1026		{80, 10, "DejaVu Sans:antialias=false:rgba=0:pixelsize=10", NULL}},
1027  {"-a24text", "Char in 30-char a line (DejaVu Sans 24)", NULL,
1028	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1029		V1_5FEATURE, NONROP, 0,
1030		{30, 24, "DejaVu Sans:antialias=false:rgba=0:pixelsize=24", NULL}},
1031  {"-aftext", "Char in 80-char a line (Courier 12)", NULL,
1032	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1033		V1_5FEATURE, NONROP, 0,
1034		{80, 12, "Courier:antialias=false:rgba=0:pixelsize=12", NULL}},
1035  {"-rgb10text", "Char in 80-char rgb line (DejaVu Sans 10)", NULL,
1036	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1037		V1_5FEATURE, NONROP, 0,
1038		{80, 10, "DejaVu Sans:antialias=true:rgba=rgb:pixelsize=10", NULL}},
1039  {"-rgb24text", "Char in 30-char rgb line (DejaVu Sans 24)", NULL,
1040	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1041		V1_5FEATURE, NONROP, 0,
1042		{30, 24, "DejaVu Sans:antialias=true:rgba=rgb:pixelsize=24", NULL}},
1043  {"-rgbftext", "Char in 80-char rgb line (Courier 12)", NULL,
1044	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1045		V1_5FEATURE, NONROP, 0,
1046		{80, 12, "Courier:antialias=true:rgba=rgb:pixelsize=12", NULL}},
1047  {"-caa10text", "Char in 80-char aa core line (DejaVu Sans 10)", NULL,
1048	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1049		V1_5FEATURE, NONROP, 0,
1050		{80, 10, "DejaVu Sans:antialias=true:rgba=0:pixelsize=10", "render=false"}},
1051  {"-caa24text", "Char in 30-char aa core line (DejaVu Sans 24)", NULL,
1052	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1053		V1_5FEATURE, NONROP, 0,
1054		{30, 24, "DejaVu Sans:antialias=true:rgba=0:pixelsize=24", "render=false"}},
1055  {"-caaftext", "Char in 80-char aa core line (Courier 12)", NULL,
1056	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1057		V1_5FEATURE, NONROP, 0,
1058		{80, 12, "Courier:antialias=true:rgba=0:pixelsize=12", "render=false"}},
1059  {"-ca10text", "Char in 80-char a core line (DejaVu Sans 10)", NULL,
1060	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1061		V1_5FEATURE, NONROP, 0,
1062		{80, 10, "DejaVu Sans:antialias=false:rgba=0:pixelsize=10", "render=false"}},
1063  {"-ca24text", "Char in 30-char a core line (DejaVu Sans 24)", NULL,
1064	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1065		V1_5FEATURE, NONROP, 0,
1066		{30, 24, "DejaVu Sans:antialias=false:rgba=0:pixelsize=24", "render=false"}},
1067  {"-caftext", "Char in 80-char a core line (Courier 12)", NULL,
1068	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1069		V1_5FEATURE, NONROP, 0,
1070		{80, 12, "Courier:antialias=false:rgba=0:pixelsize=12", "render=false"}},
1071  {"-crgb10text", "Char in 80-char rgb core line (DejaVu Sans 10)", NULL,
1072	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1073		V1_5FEATURE, NONROP, 0,
1074		{80, 10, "DejaVu Sans:antialias=true:rgba=rgb:pixelsize=10", "render=false"}},
1075  {"-crgb24text", "Char in 30-char rgb core line (DejaVu Sans 24)", NULL,
1076	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1077		V1_5FEATURE, NONROP, 0,
1078		{30, 24, "DejaVu Sans:antialias=true:rgba=rgb:pixelsize=24", "render=false"}},
1079  {"-crgbftext", "Char in 80-char rgb core line (Courier 12)", NULL,
1080	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1081		V1_5FEATURE, NONROP, 0,
1082		{80, 12, "Courier:antialias=true:rgba=rgb:pixelsize=12", "render=false"}},
1083#endif
1084  {"-scroll10", "Scroll 10x10 pixels", NULL,
1085		InitScroll, DoScroll, MidScroll, EndScroll,
1086		V1_2FEATURE, ROP, 0,
1087		{1, 10}},
1088  {"-scroll100", "Scroll 100x100 pixels", NULL,
1089		InitScroll, DoScroll, MidScroll, EndScroll,
1090		V1_2FEATURE, ROP, 0,
1091		{1, 100}},
1092  {"-scroll500", "Scroll 500x500 pixels", NULL,
1093		InitScroll, DoScroll, MidScroll, EndScroll,
1094		V1_2FEATURE, ROP, 0,
1095		{1, 500}},
1096  {"-copywinwin10", "Copy 10x10 from window to window", NULL,
1097		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
1098		V1_2FEATURE, ROP, 0,
1099		{4, 10}},
1100  {"-copywinwin100", "Copy 100x100 from window to window", NULL,
1101		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
1102		V1_2FEATURE, ROP, 0,
1103		{4, 100}},
1104  {"-copywinwin500", "Copy 500x500 from window to window", NULL,
1105		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
1106		V1_2FEATURE, ROP, 0,
1107		{4, 500}},
1108  {"-copypixwin10", "Copy 10x10 from pixmap to window", NULL,
1109		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
1110		V1_2FEATURE, ROP, 0,
1111		{4, 10}},
1112  {"-copypixwin100", "Copy 100x100 from pixmap to window", NULL,
1113		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
1114		V1_2FEATURE, ROP, 0,
1115		{4, 100}},
1116  {"-copypixwin500", "Copy 500x500 from pixmap to window", NULL,
1117		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
1118		V1_2FEATURE, ROP, 0,
1119		{4, 500}},
1120  {"-copywinpix10", "Copy 10x10 from window to pixmap", NULL,
1121		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
1122		V1_2FEATURE, ROP, 0,
1123		{4, 10}},
1124  {"-copywinpix100", "Copy 100x100 from window to pixmap", NULL,
1125		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
1126		V1_2FEATURE, ROP, 0,
1127		{4, 100}},
1128  {"-copywinpix500", "Copy 500x500 from window to pixmap", NULL,
1129		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
1130		V1_2FEATURE, ROP, 0,
1131		{4, 500}},
1132  {"-copypixpix10", "Copy 10x10 from pixmap to pixmap", NULL,
1133		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
1134		V1_2FEATURE, ROP, 0,
1135		{4, 10}},
1136  {"-copypixpix100", "Copy 100x100 from pixmap to pixmap", NULL,
1137		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
1138		V1_2FEATURE, ROP, 0,
1139		{4, 100}},
1140  {"-copypixpix500", "Copy 500x500 from pixmap to pixmap", NULL,
1141		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
1142		V1_2FEATURE, ROP, 0,
1143		{4, 500}},
1144  {"-copyplane10", "Copy 10x10 1-bit deep plane", NULL,
1145		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1146		V1_2FEATURE, ROP, 0,
1147		{4, 10}},
1148  {"-copyplane100", "Copy 100x100 1-bit deep plane", NULL,
1149		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1150		V1_2FEATURE, ROP, 0,
1151		{4, 100}},
1152  {"-copyplane500", "Copy 500x500 1-bit deep plane", NULL,
1153		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1154		V1_2FEATURE, ROP, 0,
1155		{4, 500}},
1156  {"-deepcopyplane10", "Copy 10x10 n-bit deep plane", NULL,
1157		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1158		V1_5FEATURE, ROP, 0,
1159		{4, 10, "Deep"}},
1160  {"-deepcopyplane100", "Copy 100x100 n-bit deep plane", NULL,
1161		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1162		V1_5FEATURE, ROP, 0,
1163		{4, 100, "Deep"}},
1164  {"-deepcopyplane500", "Copy 500x500 n-bit deep plane", NULL,
1165		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1166		V1_5FEATURE, ROP, 0,
1167		{4, 500, "Deep"}},
1168  {"-putimage10", "PutImage 10x10 square", NULL,
1169		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1170		V1_2FEATURE, ROP, 0,
1171		{4, 10}},
1172  {"-putimage100", "PutImage 100x100 square", NULL,
1173		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1174		V1_2FEATURE, ROP, 0,
1175		{4, 100}},
1176  {"-putimage500", "PutImage 500x500 square", NULL,
1177		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1178		V1_2FEATURE, ROP, 0,
1179		{4, 500}},
1180  {"-putimagexy10", "PutImage XY 10x10 square", NULL,
1181		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1182		V1_4FEATURE, ROP, 0,
1183		{4, 10, "XY"}},
1184  {"-putimagexy100", "PutImage XY 100x100 square", NULL,
1185		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1186		V1_4FEATURE, ROP, 0,
1187		{4, 100, "XY"}},
1188  {"-putimagexy500", "PutImage XY 500x500 square", NULL,
1189		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1190		V1_4FEATURE, ROP, 0,
1191		{4, 500, "XY"}},
1192  {"-putimagexybitmap10", "PutImage XYBitmap 10x10 square", NULL,
1193		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1194		V1_7FEATURE, ROP, 0,
1195		{4, 10, "XYBitmap"}},
1196  {"-putimagexybitmap100", "PutImage XYBitmap 100x100 square", NULL,
1197		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1198		V1_7FEATURE, ROP, 0,
1199		{4, 100, "XYBitmap"}},
1200  {"-putimagexybitmap500", "PutImage XYBitmap 500x500 square", NULL,
1201		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1202		V1_7FEATURE, ROP, 0,
1203		{4, 500, "XYBitmap"}},
1204#ifdef MITSHM
1205  {"-shmput10", "ShmPutImage 10x10 square", NULL,
1206		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1207		V1_2FEATURE, ROP, 0,
1208		{4, 10}},
1209  {"-shmput100", "ShmPutImage 100x100 square", NULL,
1210		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1211		V1_2FEATURE, ROP, 0,
1212		{4, 100}},
1213  {"-shmput500", "ShmPutImage 500x500 square", NULL,
1214		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1215		V1_2FEATURE, ROP, 0,
1216		{4, 500}},
1217  {"-shmputxy10", "ShmPutImage XY 10x10 square", NULL,
1218		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1219		V1_4FEATURE, ROP, 0,
1220		{4, 10, "XY"}},
1221  {"-shmputxy100", "ShmPutImage XY 100x100 square", NULL,
1222		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1223		V1_4FEATURE, ROP, 0,
1224		{4, 100, "XY"}},
1225  {"-shmputxy500", "ShmPutImage XY 500x500 square", NULL,
1226		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1227		V1_4FEATURE, ROP, 0,
1228		{4, 500, "XY"}},
1229  {"-shmputxybitmap10", "ShmPutImage XYBitmap 10x10 square", NULL,
1230		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1231		V1_7FEATURE, ROP, 0,
1232		{4, 10, "XYBitmap"}},
1233  {"-shmputxybitmap100", "ShmPutImage XYBitmap 100x100 square", NULL,
1234		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1235		V1_7FEATURE, ROP, 0,
1236		{4, 100, "XYBitmap"}},
1237  {"-shmputxybitmap500", "ShmPutImage XYBitmap 500x500 square", NULL,
1238		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1239		V1_7FEATURE, ROP, 0,
1240		{4, 500, "XYBitmap"}},
1241  {"-shmget10", "ShmGetImage 10x10 square", NULL,
1242		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1243		V1_2FEATURE, ROP, 0,
1244		{4, 10}},
1245  {"-shmget100", "ShmGetImage 100x100 square", NULL,
1246		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1247		V1_2FEATURE, ROP, 0,
1248		{4, 100}},
1249  {"-shmget500", "ShmGetImage 500x500 square", NULL,
1250		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1251		V1_2FEATURE, ROP, 0,
1252		{4, 500}},
1253  {"-shmgetxy10", "ShmGetImage XY 10x10 square", NULL,
1254		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1255		V1_4FEATURE, ROP, 0,
1256		{4, 10, "XY"}},
1257  {"-shmgetxy100", "ShmGetImage XY 100x100 square", NULL,
1258		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1259		V1_4FEATURE, ROP, 0,
1260		{4, 100, "XY"}},
1261  {"-shmgetxy500", "ShmGetImage XY 500x500 square", NULL,
1262		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1263		V1_4FEATURE, ROP, 0,
1264		{4, 500, "XY"}},
1265#endif
1266  {"-getimage10", "GetImage 10x10 square", NULL,
1267		InitGetImage, DoGetImage, NullProc, EndGetImage,
1268		V1_2FEATURE, PLANEMASK, 0,
1269		{4, 10}},
1270  {"-getimage100", "GetImage 100x100 square", NULL,
1271		InitGetImage, DoGetImage, NullProc, EndGetImage,
1272		V1_2FEATURE, PLANEMASK, 0,
1273		{4, 100}},
1274  {"-getimage500", "GetImage 500x500 square", NULL,
1275		InitGetImage, DoGetImage, NullProc, EndGetImage,
1276		V1_2FEATURE, PLANEMASK, 0,
1277		{4, 500}},
1278  {"-getimagexy10", "GetImage XY 10x10 square", NULL,
1279		InitGetImage, DoGetImage, NullProc, EndGetImage,
1280		V1_4FEATURE, PLANEMASK, 0,
1281		{4, 10, "XY"}},
1282  {"-getimagexy100", "GetImage XY 100x100 square", NULL,
1283		InitGetImage, DoGetImage, NullProc, EndGetImage,
1284		V1_4FEATURE, PLANEMASK, 0,
1285		{4, 100, "XY"}},
1286  {"-getimagexy500", "GetImage XY 500x500 square", NULL,
1287		InitGetImage, DoGetImage, NullProc, EndGetImage,
1288		V1_4FEATURE, PLANEMASK, 0,
1289		{4, 500, "XY"}},
1290  {"-compwinwin10", "Composite 10x10 from window to window", NULL,
1291		InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1292		V1_6FEATURE, COMP, 0,
1293		{4, 10}},
1294  {"-compwinwin100", "Composite 100x100 from window to window", NULL,
1295		InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1296		V1_6FEATURE, COMP, 0,
1297		{4, 100}},
1298  {"-compwinwin500", "Composite 500x500 from window to window", NULL,
1299		InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1300		V1_6FEATURE, COMP, 0,
1301		{4, 500}},
1302  {"-comppixwin10", "Composite 10x10 from pixmap to window", NULL,
1303		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1304		V1_6FEATURE, COMP, 0,
1305		{4, 10}},
1306  {"-comppixwin100", "Composite 100x100 from pixmap to window", NULL,
1307		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1308		V1_6FEATURE, COMP, 0,
1309		{4, 100}},
1310  {"-comppixwin500", "Composite 500x500 from pixmap to window", NULL,
1311		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1312		V1_6FEATURE, COMP, 0,
1313		{4, 500}},
1314  {"-magpixwin10", "Scale 5x5 from pixmap to 10x10 window", NULL,
1315		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1316		V1_6FEATURE, COMP, 0,
1317		{4, 10, NULL, NULL, 0x20000}},
1318  {"-magpixwin100", "Scale 50x50 from pixmap to 100x100 window", NULL,
1319		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1320		V1_6FEATURE, COMP, 0,
1321		{4, 100, NULL, NULL, 0x20000}},
1322  {"-magpixwin500", "Scale 250x250 from pixmap to 500x500 window", NULL,
1323		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1324		V1_6FEATURE, COMP, 0,
1325		{4, 500, NULL, NULL, 0x20000}},
1326  {"-minpixwin10", "Scale 10x10 from pixmap to 5x5 window", NULL,
1327		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1328		V1_6FEATURE, COMP, 0,
1329		{4, 5, NULL, NULL, 0x8000}},
1330  {"-minpixwin100", "Scale 100x100 from pixmap to 50x50 window", NULL,
1331		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1332		V1_6FEATURE, COMP, 0,
1333		{4, 50, NULL, NULL, 0x8000}},
1334  {"-minpixwin500", "Scale 500x500 from pixmap to 250x250 window", NULL,
1335		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1336		V1_6FEATURE, COMP, 0,
1337		{4, 250, NULL, NULL, 0x8000}},
1338  {"-noop",     "X protocol NoOperation", NULL,
1339		NullInitProc, DoNoOp, NullProc, NullProc,
1340		V1_2FEATURE, PLANEMASK, 0,
1341		{1}},
1342  {"-atom",     "GetAtomName", NULL,
1343		NullInitProc, DoGetAtom, NullProc, NullProc,
1344		VERSION1_2 | VERSION1_3, NONROP, 0,
1345		{1}},
1346  {"-pointer",  "QueryPointer", NULL,
1347		NullInitProc, DoQueryPointer, NullProc, NullProc,
1348		V1_4FEATURE, NONROP, 0,
1349		{1}},
1350  {"-prop",     "GetProperty", NULL,
1351		InitGetProperty, DoGetProperty, NullProc, NullProc,
1352		V1_2FEATURE, NONROP, 0,
1353		{1}},
1354  {"-gc",       "Change graphics context", NULL,
1355		InitGC, DoChangeGC, NullProc, EndGC,
1356		V1_2FEATURE, NONROP, 0,
1357		{4}},
1358  {"-create",   "Create and map subwindows", NULL,
1359		InitCreate, CreateChildren, DestroyChildren, EndCreate,
1360		V1_2FEATURE, WINDOW, 0,
1361		{0, True}},
1362  {"-ucreate",  "Create unmapped window", NULL,
1363		InitCreate, CreateChildren, DestroyChildren, EndCreate,
1364		V1_2FEATURE, WINDOW, 0,
1365		{0, False}},
1366  {"-map",      "Map window via parent", NULL,
1367		InitMap, MapParents, UnmapParentsCleanup, EndCreate,
1368		V1_2FEATURE, WINDOW, 0,
1369		{0, True}},
1370  {"-unmap",    "Unmap window via parent", NULL,
1371		InitDestroy, UnmapParents, MapParentsCleanup, EndCreate,
1372		V1_2FEATURE, WINDOW, 0,
1373		{0, True}},
1374  {"-destroy",  "Destroy window via parent", NULL,
1375		InitDestroy, DestroyParents, RenewParents, EndCreate,
1376		V1_2FEATURE, WINDOW, 0,
1377		{0, True}},
1378  {"-popup",    "Hide/expose window via popup", NULL,
1379		InitPopups, DoPopUps, NullProc, EndPopups,
1380		V1_2FEATURE, WINDOW, 0,
1381		{0, True}},
1382  {"-move",     "Move window", NULL,
1383		InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
1384		V1_2FEATURE, WINDOW, 0,
1385		{0, True}},
1386  {"-umove",    "Moved unmapped window", NULL,
1387		InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
1388		V1_2FEATURE, WINDOW, 0,
1389		{0, False}},
1390  {"-movetree", "Move window via parent", NULL,
1391		InitMoveTree, DoMoveTree, NullProc, EndMoveTree,
1392		V1_2FEATURE, WINDOW, 0,
1393		{4, True}},
1394  {"-resize",   "Resize window", NULL,
1395		InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
1396		V1_2FEATURE, WINDOW, 0,
1397		{4, True}},
1398  {"-uresize",  "Resize unmapped window", NULL,
1399		InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
1400		V1_2FEATURE, WINDOW, 0,
1401		{4, False}},
1402  {"-circulate", "Circulate window", NULL,
1403		InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
1404		V1_2FEATURE, WINDOW, 0,
1405		{4, True}},
1406  {"-ucirculate", "Circulate Unmapped window", NULL,
1407		InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
1408		V1_2FEATURE, WINDOW, 0,
1409		{4, False}},
1410  { NULL, NULL, NULL,
1411		NULL, NULL, NULL, NULL,
1412		0, NONROP, 0,
1413		{0, False}}
1414};
1415