do_tests.c revision 533545b5
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		{36, 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		{36, 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		{36, 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		{36, 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		{36, 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		{36, 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		{36, 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		{36, 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		{36, 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		{36, 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		{36, 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		{POLY, 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		{POLY, 500}},
305  {"-whseg10",  "10x1 wide horizontal line segment", NULL,
306		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
307		V1_3FEATURE, ROP, 0,
308		{200, 10}},
309  {"-whseg100", "100x10 wide horizontal line segment", NULL,
310		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
311		V1_3FEATURE, ROP, 0,
312		{100, 100}},
313  {"-whseg500", "500x50 wide horizontal line segment", NULL,
314		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
315		V1_3FEATURE, ROP, 0,
316		{50, 500}},
317  {"-wvseg10",  "10x1 wide vertical line segment", NULL,
318		InitWideVertSegments, DoSegments, NullProc, EndSegments,
319		V1_3FEATURE, ROP, 0,
320		{200, 10}},
321  {"-wvseg100", "100x10 wide vertical line segment", NULL,
322		InitWideVertSegments, DoSegments, NullProc, EndSegments,
323		V1_3FEATURE, ROP, 0,
324		{100, 100}},
325  {"-wvseg500", "500x50 wide vertical line segment", NULL,
326		InitWideVertSegments, DoSegments, NullProc, EndSegments,
327		V1_3FEATURE, ROP, 0,
328		{50, 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		{36, 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		{36, 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		{36, 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		{POLY, 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		{POLY, 100, "1" }},
836  {"-aa1trap300", "Fill 300x300 aa trap with 1 bit alpha", NULL,
837		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
838		V1_5FEATURE, NONROP, 0,
839		{POLY, 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		{POLY, 100, "8,2" }},
853  {"-aatrap2x300", "Fill 2x300 aa trap", NULL,
854		InitFixedTraps, DoFixedTraps, NullProc, EndFixedTraps,
855		V1_5FEATURE, NONROP, 0,
856		{POLY, 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		{POLY, 100 }},
870  {"-aatrapezoid300", "Fill 300x300 aa trapezoid", NULL,
871		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
872		V1_5FEATURE, NONROP, 0,
873		{POLY, 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		{POLY, 100, "add" }},
886  {"-addaatrapezoid300", "Fill 300x300 aa pre-added trapezoid", NULL,
887		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
888		V1_5FEATURE, NONROP, 0,
889		{POLY, 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  {"-f8text",    "Char in 70-char line (8x13)", NULL,
928		InitText, DoText, ClearTextWin, EndText,
929		V1_3FEATURE, ROP, 0,
930		{70, False, "8x13", NULL}},
931  {"-f9text",    "Char in 60-char line (9x15)", NULL,
932		InitText, DoText, ClearTextWin, EndText,
933		V1_3FEATURE, ROP, 0,
934		{60, False, "9x15", NULL}},
935  {"-f14text16",  "Char16 in 40-char line (k14)", NULL,
936		InitText16, DoText16, ClearTextWin, EndText16,
937		V1_3FEATURE, ROP, 0,
938		{40, False,
939	      "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
940		NULL}},
941  {"-f24text16",  "Char16 in 23-char line (k24)", NULL,
942		InitText16, DoText16, ClearTextWin, EndText16,
943		V1_3FEATURE, ROP, 0,
944		{23, False,
945	      "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*",
946		NULL}},
947  {"-tr10text", "Char in 80-char line (TR 10)", NULL,
948		InitText, DoText, ClearTextWin, EndText,
949		V1_2FEATURE, ROP, 0,
950		{80, False,
951		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
952		NULL}},
953  {"-tr24text", "Char in 30-char line (TR 24)", NULL,
954		InitText, DoText, ClearTextWin, EndText,
955		V1_2FEATURE, ROP, 0,
956		{30, False,
957		"-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
958 		NULL}},
959  {"-polytext", "Char in 20/40/20 line (6x13, TR 10)", NULL,
960		InitText, DoPolyText, ClearTextWin, EndText,
961		V1_2FEATURE, ROP, 0,
962		{80, True, "6x13",
963		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1"}},
964  {"-polytext16", "Char16 in 7/14/7 line (k14, k24)", NULL,
965		InitText16, DoPolyText16, ClearTextWin, EndText16,
966		V1_3FEATURE, ROP, 0,
967		{28, True,
968	     "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
969             "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*"}},
970  {"-fitext",   "Char in 80-char image line (6x13)", NULL,
971		InitText, DoImageText, ClearTextWin, EndText,
972		V1_2FEATURE, PLANEMASK, 0,
973		{80, False, "6x13", NULL}},
974  {"-f8itext",   "Char in 70-char image line (8x13)", NULL,
975		InitText, DoImageText, ClearTextWin, EndText,
976		V1_3FEATURE, PLANEMASK, 0,
977		{70, False, "8x13", NULL}},
978  {"-f9itext",   "Char in 60-char image line (9x15)", NULL,
979		InitText, DoImageText, ClearTextWin, EndText,
980		V1_3FEATURE, PLANEMASK, 0,
981		{60, False, "9x15", NULL}},
982  {"-f14itext16", "Char16 in 40-char image line (k14)", NULL,
983		InitText16, DoImageText16, ClearTextWin, EndText16,
984		V1_3FEATURE, PLANEMASK, 0,
985		{40, False,
986	      "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
987		NULL}},
988  {"-f24itext16", "Char16 in 23-char image line (k24)", NULL,
989		InitText16, DoImageText16, ClearTextWin, EndText16,
990		V1_3FEATURE, PLANEMASK, 0,
991		{23, False,
992	      "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*",
993		NULL}},
994  {"-tr10itext", "Char in 80-char image line (TR 10)", NULL,
995		InitText, DoImageText, ClearTextWin, EndText,
996		V1_2FEATURE, PLANEMASK, 0,
997		{80, False,
998		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1",
999		NULL}},
1000  {"-tr24itext", "Char in 30-char image line (TR 24)", NULL,
1001		InitText, DoImageText, ClearTextWin, EndText,
1002		V1_2FEATURE, PLANEMASK, 0,
1003		{30, False,
1004		"-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
1005 		NULL}},
1006#ifdef XFT
1007  {"-aa10text", "Char in 80-char aa line (Charter 10)", NULL,
1008	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1009		V1_5FEATURE, NONROP, 0,
1010		{80, 10, "charter:antialias=true:rgba=0:pixelsize=10", NULL}},
1011  {"-aa24text", "Char in 30-char aa line (Charter 24)", NULL,
1012	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1013		V1_5FEATURE, NONROP, 0,
1014		{30, 24, "charter:antialias=true:rgba=0:pixelsize=24", NULL}},
1015  {"-aaftext", "Char in 80-char aa line (Courier 12)", NULL,
1016	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1017		V1_5FEATURE, NONROP, 0,
1018		{80, 12, "courier:antialias=true:rgba=0:pixelsize=12", NULL}},
1019  {"-a10text", "Char in 80-char a line (Charter 10)", NULL,
1020	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1021		V1_5FEATURE, NONROP, 0,
1022		{80, 10, "charter:antialias=false:rgba=0:pixelsize=10", NULL}},
1023  {"-a24text", "Char in 30-char a line (Charter 24)", NULL,
1024	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1025		V1_5FEATURE, NONROP, 0,
1026		{30, 24, "charter:antialias=false:rgba=0:pixelsize=24", NULL}},
1027  {"-aftext", "Char in 80-char a line (Courier 12)", NULL,
1028	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1029		V1_5FEATURE, NONROP, 0,
1030		{80, 12, "courier:antialias=false:rgba=0:pixelsize=12", NULL}},
1031  {"-rgb10text", "Char in 80-char rgb line (Charter 10)", NULL,
1032	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1033		V1_5FEATURE, NONROP, 0,
1034		{80, 10, "charter:antialias=true:rgba=rgb:pixelsize=10", NULL}},
1035  {"-rgb24text", "Char in 30-char rgb line (Charter 24)", NULL,
1036	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1037		V1_5FEATURE, NONROP, 0,
1038		{30, 24, "charter:antialias=true:rgba=rgb:pixelsize=24", NULL}},
1039  {"-rgbftext", "Char in 80-char rgb line (Courier 12)", NULL,
1040	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1041		V1_5FEATURE, NONROP, 0,
1042		{80, 12, "courier:antialias=true:rgba=rgb:pixelsize=12", NULL}},
1043  {"-caa10text", "Char in 80-char aa core line (Charter 10)", NULL,
1044	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1045		V1_5FEATURE, NONROP, 0,
1046		{80, 10, "charter:antialias=true:render=false:rgba=0:pixelsize=10", NULL}},
1047  {"-caa24text", "Char in 30-char aa core line (Charter 24)", NULL,
1048	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1049		V1_5FEATURE, NONROP, 0,
1050		{30, 24, "charter:antialias=true:render=false:rgba=0:pixelsize=24", NULL}},
1051  {"-caaftext", "Char in 80-char aa core line (Courier 12)", NULL,
1052	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1053		V1_5FEATURE, NONROP, 0,
1054		{80, 12, "courier:antialias=true:render=false:rgba=0:pixelsize=12", NULL}},
1055  {"-ca10text", "Char in 80-char a core line (Charter 10)", NULL,
1056	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1057		V1_5FEATURE, NONROP, 0,
1058		{80, 10, "charter:antialias=false:render=false:rgba=0:pixelsize=10", NULL}},
1059  {"-ca24text", "Char in 30-char a core line (Charter 24)", NULL,
1060	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1061		V1_5FEATURE, NONROP, 0,
1062		{30, 24, "charter:antialias=false:render=false:rgba=0:pixelsize=24", NULL}},
1063  {"-caftext", "Char in 80-char a core line (Courier 12)", NULL,
1064	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1065		V1_5FEATURE, NONROP, 0,
1066		{80, 12, "courier:antialias=false:render=false:rgba=0:pixelsize=12", NULL}},
1067  {"-crgb10text", "Char in 80-char rgb core line (Charter 10)", NULL,
1068	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1069		V1_5FEATURE, NONROP, 0,
1070		{80, 10, "charter:antialias=true:render=false:rgba=rgb:pixelsize=10", NULL}},
1071  {"-crgb24text", "Char in 30-char rgb core line (Charter 24)", NULL,
1072	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1073		V1_5FEATURE, NONROP, 0,
1074		{30, 24, "charter:antialias=true:render=false:rgba=rgb:pixelsize=24", NULL}},
1075  {"-crgbftext", "Char in 80-char rgb core line (Courier 12)", NULL,
1076	        InitAAText, DoAAText, ClearTextWin, EndAAText,
1077		V1_5FEATURE, NONROP, 0,
1078		{80, 12, "courier:antialias=true:render=false:rgba=rgb:pixelsize=12", NULL}},
1079#endif
1080  {"-scroll10", "Scroll 10x10 pixels", NULL,
1081		InitScroll, DoScroll, MidScroll, EndScroll,
1082		V1_2FEATURE, ROP, 0,
1083		{1, 10}},
1084  {"-scroll100", "Scroll 100x100 pixels", NULL,
1085		InitScroll, DoScroll, MidScroll, EndScroll,
1086		V1_2FEATURE, ROP, 0,
1087		{1, 100}},
1088  {"-scroll500", "Scroll 500x500 pixels", NULL,
1089		InitScroll, DoScroll, MidScroll, EndScroll,
1090		V1_2FEATURE, ROP, 0,
1091		{1, 500}},
1092  {"-copywinwin10", "Copy 10x10 from window to window", NULL,
1093		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
1094		V1_2FEATURE, ROP, 0,
1095		{4, 10}},
1096  {"-copywinwin100", "Copy 100x100 from window to window", NULL,
1097		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
1098		V1_2FEATURE, ROP, 0,
1099		{4, 100}},
1100  {"-copywinwin500", "Copy 500x500 from window to window", NULL,
1101		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
1102		V1_2FEATURE, ROP, 0,
1103		{4, 500}},
1104  {"-copypixwin10", "Copy 10x10 from pixmap to window", NULL,
1105		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
1106		V1_2FEATURE, ROP, 0,
1107		{4, 10}},
1108  {"-copypixwin100", "Copy 100x100 from pixmap to window", NULL,
1109		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
1110		V1_2FEATURE, ROP, 0,
1111		{4, 100}},
1112  {"-copypixwin500", "Copy 500x500 from pixmap to window", NULL,
1113		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
1114		V1_2FEATURE, ROP, 0,
1115		{4, 500}},
1116  {"-copywinpix10", "Copy 10x10 from window to pixmap", NULL,
1117		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
1118		V1_2FEATURE, ROP, 0,
1119		{4, 10}},
1120  {"-copywinpix100", "Copy 100x100 from window to pixmap", NULL,
1121		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
1122		V1_2FEATURE, ROP, 0,
1123		{4, 100}},
1124  {"-copywinpix500", "Copy 500x500 from window to pixmap", NULL,
1125		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
1126		V1_2FEATURE, ROP, 0,
1127		{4, 500}},
1128  {"-copypixpix10", "Copy 10x10 from pixmap to pixmap", NULL,
1129		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
1130		V1_2FEATURE, ROP, 0,
1131		{4, 10}},
1132  {"-copypixpix100", "Copy 100x100 from pixmap to pixmap", NULL,
1133		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
1134		V1_2FEATURE, ROP, 0,
1135		{4, 100}},
1136  {"-copypixpix500", "Copy 500x500 from pixmap to pixmap", NULL,
1137		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
1138		V1_2FEATURE, ROP, 0,
1139		{4, 500}},
1140  {"-copyplane10", "Copy 10x10 1-bit deep plane", NULL,
1141		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1142		V1_2FEATURE, ROP, 0,
1143		{4, 10}},
1144  {"-copyplane100", "Copy 100x100 1-bit deep plane", NULL,
1145		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1146		V1_2FEATURE, ROP, 0,
1147		{4, 100}},
1148  {"-copyplane500", "Copy 500x500 1-bit deep plane", NULL,
1149		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1150		V1_2FEATURE, ROP, 0,
1151		{4, 500}},
1152  {"-deepcopyplane10", "Copy 10x10 n-bit deep plane", NULL,
1153		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1154		V1_5FEATURE, ROP, 0,
1155		{4, 10, "Deep"}},
1156  {"-deepcopyplane100", "Copy 100x100 n-bit deep plane", NULL,
1157		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1158		V1_5FEATURE, ROP, 0,
1159		{4, 100, "Deep"}},
1160  {"-deepcopyplane500", "Copy 500x500 n-bit deep plane", NULL,
1161		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
1162		V1_5FEATURE, ROP, 0,
1163		{4, 500, "Deep"}},
1164  {"-putimage10", "PutImage 10x10 square", NULL,
1165		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1166		V1_2FEATURE, ROP, 0,
1167		{4, 10}},
1168  {"-putimage100", "PutImage 100x100 square", NULL,
1169		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1170		V1_2FEATURE, ROP, 0,
1171		{4, 100}},
1172  {"-putimage500", "PutImage 500x500 square", NULL,
1173		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1174		V1_2FEATURE, ROP, 0,
1175		{4, 500}},
1176  {"-putimagexy10", "PutImage XY 10x10 square", NULL,
1177		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1178		V1_4FEATURE, ROP, 0,
1179		{4, 10, "XY"}},
1180  {"-putimagexy100", "PutImage XY 100x100 square", NULL,
1181		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1182		V1_4FEATURE, ROP, 0,
1183		{4, 100, "XY"}},
1184  {"-putimagexy500", "PutImage XY 500x500 square", NULL,
1185		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
1186		V1_4FEATURE, ROP, 0,
1187		{4, 500, "XY"}},
1188#ifdef MITSHM
1189  {"-shmput10", "ShmPutImage 10x10 square", NULL,
1190		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1191		V1_2FEATURE, ROP, 0,
1192		{4, 10}},
1193  {"-shmput100", "ShmPutImage 100x100 square", NULL,
1194		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1195		V1_2FEATURE, ROP, 0,
1196		{4, 100}},
1197  {"-shmput500", "ShmPutImage 500x500 square", NULL,
1198		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1199		V1_2FEATURE, ROP, 0,
1200		{4, 500}},
1201  {"-shmputxy10", "ShmPutImage XY 10x10 square", NULL,
1202		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1203		V1_4FEATURE, ROP, 0,
1204		{4, 10, "XY"}},
1205  {"-shmputxy100", "ShmPutImage XY 100x100 square", NULL,
1206		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1207		V1_4FEATURE, ROP, 0,
1208		{4, 100, "XY"}},
1209  {"-shmputxy500", "ShmPutImage XY 500x500 square", NULL,
1210		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
1211		V1_4FEATURE, ROP, 0,
1212		{4, 500, "XY"}},
1213  {"-shmget10", "ShmGetImage 10x10 square", NULL,
1214		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1215		V1_2FEATURE, ROP, 0,
1216		{4, 10}},
1217  {"-shmget100", "ShmGetImage 100x100 square", NULL,
1218		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1219		V1_2FEATURE, ROP, 0,
1220		{4, 100}},
1221  {"-shmget500", "ShmGetImage 500x500 square", NULL,
1222		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1223		V1_2FEATURE, ROP, 0,
1224		{4, 500}},
1225  {"-shmgetxy10", "ShmGetImage XY 10x10 square", NULL,
1226		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1227		V1_4FEATURE, ROP, 0,
1228		{4, 10, "XY"}},
1229  {"-shmgetxy100", "ShmGetImage XY 100x100 square", NULL,
1230		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1231		V1_4FEATURE, ROP, 0,
1232		{4, 100, "XY"}},
1233  {"-shmgetxy500", "ShmGetImage XY 500x500 square", NULL,
1234		InitShmGetImage, DoShmGetImage, NullProc, EndShmGetImage,
1235		V1_4FEATURE, ROP, 0,
1236		{4, 500, "XY"}},
1237#endif
1238  {"-getimage10", "GetImage 10x10 square", NULL,
1239		InitGetImage, DoGetImage, NullProc, EndGetImage,
1240		V1_2FEATURE, PLANEMASK, 0,
1241		{4, 10}},
1242  {"-getimage100", "GetImage 100x100 square", NULL,
1243		InitGetImage, DoGetImage, NullProc, EndGetImage,
1244		V1_2FEATURE, PLANEMASK, 0,
1245		{4, 100}},
1246  {"-getimage500", "GetImage 500x500 square", NULL,
1247		InitGetImage, DoGetImage, NullProc, EndGetImage,
1248		V1_2FEATURE, PLANEMASK, 0,
1249		{4, 500}},
1250  {"-getimagexy10", "GetImage XY 10x10 square", NULL,
1251		InitGetImage, DoGetImage, NullProc, EndGetImage,
1252		V1_4FEATURE, PLANEMASK, 0,
1253		{4, 10, "XY"}},
1254  {"-getimagexy100", "GetImage XY 100x100 square", NULL,
1255		InitGetImage, DoGetImage, NullProc, EndGetImage,
1256		V1_4FEATURE, PLANEMASK, 0,
1257		{4, 100, "XY"}},
1258  {"-getimagexy500", "GetImage XY 500x500 square", NULL,
1259		InitGetImage, DoGetImage, NullProc, EndGetImage,
1260		V1_4FEATURE, PLANEMASK, 0,
1261		{4, 500, "XY"}},
1262  {"-compwinwin10", "Composite 10x10 from window to window", NULL,
1263		InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1264		VERSION1_6, COMP, 0,
1265		{4, 10}},
1266  {"-compwinwin100", "Composite 100x100 from window to window", NULL,
1267		InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1268		VERSION1_6, COMP, 0,
1269		{4, 100}},
1270  {"-compwinwin500", "Composite 500x500 from window to window", NULL,
1271		InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1272		VERSION1_6, COMP, 0,
1273		{4, 500}},
1274  {"-comppixwin10", "Composite 10x10 from pixmap to window", NULL,
1275		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1276		VERSION1_6, COMP, 0,
1277		{4, 10}},
1278  {"-comppixwin100", "Composite 100x100 from pixmap to window", NULL,
1279		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1280		VERSION1_6, COMP, 0,
1281		{4, 100}},
1282  {"-comppixwin500", "Composite 500x500 from pixmap to window", NULL,
1283		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1284		VERSION1_6, COMP, 0,
1285		{4, 500}},
1286  {"-magpixwin10", "Scale 5x5 from pixmap to 10x10 window", NULL,
1287		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1288		VERSION1_6, COMP, 0,
1289		{4, 10, NULL, NULL, 0x20000}},
1290  {"-magpixwin100", "Scale 50x50 from pixmap to 100x100 window", NULL,
1291		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1292		VERSION1_6, COMP, 0,
1293		{4, 100, NULL, NULL, 0x20000}},
1294  {"-magpixwin500", "Scale 250x250 from pixmap to 500x500 window", NULL,
1295		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1296		VERSION1_6, COMP, 0,
1297		{4, 500, NULL, NULL, 0x20000}},
1298  {"-minpixwin10", "Scale 10x10 from pixmap to 5x5 window", NULL,
1299		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1300		VERSION1_6, COMP, 0,
1301		{4, 5, NULL, NULL, 0x8000}},
1302  {"-minpixwin100", "Scale 100x100 from pixmap to 5x5 window", NULL,
1303		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1304		VERSION1_6, COMP, 0,
1305		{4, 5, NULL, NULL, 0x8000}},
1306  {"-minpixwin500", "Scale 500x500 from pixmap to 250x250 window", NULL,
1307		InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1308		VERSION1_6, COMP, 0,
1309		{4, 250, NULL, NULL, 0x8000}},
1310  {"-noop",     "X protocol NoOperation", NULL,
1311		NullInitProc, DoNoOp, NullProc, NullProc,
1312		V1_2FEATURE, PLANEMASK, 0,
1313		{1}},
1314  {"-atom",     "GetAtomName", NULL,
1315		NullInitProc, DoGetAtom, NullProc, NullProc,
1316		VERSION1_2 | VERSION1_3, NONROP, 0,
1317		{1}},
1318  {"-pointer",  "QueryPointer", NULL,
1319		NullInitProc, DoQueryPointer, NullProc, NullProc,
1320		V1_4FEATURE, NONROP, 0,
1321		{1}},
1322  {"-prop",     "GetProperty", NULL,
1323		InitGetProperty, DoGetProperty, NullProc, NullProc,
1324		V1_2FEATURE, NONROP, 0,
1325		{1}},
1326  {"-gc",       "Change graphics context", NULL,
1327		InitGC, DoChangeGC, NullProc, EndGC,
1328		V1_2FEATURE, NONROP, 0,
1329		{4}},
1330  {"-create",   "Create and map subwindows", NULL,
1331		InitCreate, CreateChildren, DestroyChildren, EndCreate,
1332		V1_2FEATURE, WINDOW, 0,
1333		{0, True}},
1334  {"-ucreate",  "Create unmapped window", NULL,
1335		InitCreate, CreateChildren, DestroyChildren, EndCreate,
1336		V1_2FEATURE, WINDOW, 0,
1337		{0, False}},
1338  {"-map",      "Map window via parent", NULL,
1339		InitMap, MapParents, UnmapParentsCleanup, EndCreate,
1340		V1_2FEATURE, WINDOW, 0,
1341		{0, True}},
1342  {"-unmap",    "Unmap window via parent", NULL,
1343		InitDestroy, UnmapParents, MapParentsCleanup, EndCreate,
1344		V1_2FEATURE, WINDOW, 0,
1345		{0, True}},
1346  {"-destroy",  "Destroy window via parent", NULL,
1347		InitDestroy, DestroyParents, RenewParents, EndCreate,
1348		V1_2FEATURE, WINDOW, 0,
1349		{0, True}},
1350  {"-popup",    "Hide/expose window via popup", NULL,
1351		InitPopups, DoPopUps, NullProc, EndPopups,
1352		V1_2FEATURE, WINDOW, 0,
1353		{0, True}},
1354  {"-move",     "Move window", NULL,
1355		InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
1356		V1_2FEATURE, WINDOW, 0,
1357		{0, True}},
1358  {"-umove",    "Moved unmapped window", NULL,
1359		InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
1360		V1_2FEATURE, WINDOW, 0,
1361		{0, False}},
1362  {"-movetree", "Move window via parent", NULL,
1363		InitMoveTree, DoMoveTree, NullProc, EndMoveTree,
1364		V1_2FEATURE, WINDOW, 0,
1365		{4, True}},
1366  {"-resize",   "Resize window", NULL,
1367		InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
1368		V1_2FEATURE, WINDOW, 0,
1369		{4, True}},
1370  {"-uresize",  "Resize unmapped window", NULL,
1371		InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
1372		V1_2FEATURE, WINDOW, 0,
1373		{4, False}},
1374  {"-circulate", "Circulate window", NULL,
1375		InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
1376		V1_2FEATURE, WINDOW, 0,
1377		{4, True}},
1378  {"-ucirculate", "Circulate Unmapped window", NULL,
1379		InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
1380		V1_2FEATURE, WINDOW, 0,
1381		{4, False}},
1382  { NULL, NULL, NULL,
1383		NULL, NULL, NULL, NULL,
1384		0, NONROP, 0,
1385		{0, False}}
1386};
1387