ce3026b436dce499e033243f6c1a0912d6e02f53
[framework/uifw/xorg/app/x11-apps.git] / x11perf / do_tests.c
1 /*****************************************************************************
2 Copyright 1988, 1989 by Digital Equipment Corporation, Maynard, Massachusetts.
3
4                         All Rights Reserved
5
6 Permission to use, copy, modify, and distribute this software and its 
7 documentation for any purpose and without fee is hereby granted, 
8 provided that the above copyright notice appear in all copies and that
9 both that copyright notice and this permission notice appear in 
10 supporting documentation, and that the name of Digital not be
11 used in advertising or publicity pertaining to distribution of the
12 software without specific, written prior permission.  
13
14 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20 SOFTWARE.
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
32 Test 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 #ifdef XRENDER
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   {"-rgb10text", "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   {"-rgb24text", "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   {"-rgbftext", "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 #endif
1214   {"-getimage10", "GetImage 10x10 square", NULL,
1215                 InitGetImage, DoGetImage, NullProc, EndGetImage,
1216                 V1_2FEATURE, PLANEMASK, 0,
1217                 {4, 10}},
1218   {"-getimage100", "GetImage 100x100 square", NULL,
1219                 InitGetImage, DoGetImage, NullProc, EndGetImage,
1220                 V1_2FEATURE, PLANEMASK, 0,
1221                 {4, 100}},
1222   {"-getimage500", "GetImage 500x500 square", NULL,
1223                 InitGetImage, DoGetImage, NullProc, EndGetImage,
1224                 V1_2FEATURE, PLANEMASK, 0,
1225                 {4, 500}},
1226   {"-getimagexy10", "GetImage XY 10x10 square", NULL,
1227                 InitGetImage, DoGetImage, NullProc, EndGetImage,
1228                 V1_4FEATURE, PLANEMASK, 0,
1229                 {4, 10, "XY"}},
1230   {"-getimagexy100", "GetImage XY 100x100 square", NULL,
1231                 InitGetImage, DoGetImage, NullProc, EndGetImage,
1232                 V1_4FEATURE, PLANEMASK, 0,
1233                 {4, 100, "XY"}},
1234   {"-getimagexy500", "GetImage XY 500x500 square", NULL,
1235                 InitGetImage, DoGetImage, NullProc, EndGetImage,
1236                 V1_4FEATURE, PLANEMASK, 0,
1237                 {4, 500, "XY"}},
1238   {"-compwinwin10", "Composite 10x10 from window to window", NULL,
1239                 InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1240                 VERSION1_6, COMP, 0,
1241                 {4, 10}},
1242   {"-compwinwin100", "Composite 100x100 from window to window", NULL,
1243                 InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1244                 VERSION1_6, COMP, 0,
1245                 {4, 100}},
1246   {"-compwinwin500", "Composite 500x500 from window to window", NULL,
1247                 InitCompositeWin, DoCompositeWinWin, MidScroll, EndCompositeWin,
1248                 VERSION1_6, COMP, 0,
1249                 {4, 500}},
1250   {"-comppixwin10", "Composite 10x10 from pixmap to window", NULL,
1251                 InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1252                 VERSION1_6, COMP, 0,
1253                 {4, 10}},
1254   {"-comppixwin100", "Composite 100x100 from pixmap to window", NULL,
1255                 InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1256                 VERSION1_6, COMP, 0,
1257                 {4, 100}},
1258   {"-comppixwin500", "Composite 500x500 from pixmap to window", NULL,
1259                 InitCompositePix, DoCompositePixWin, MidScroll, EndCompositeWin,
1260                 VERSION1_6, COMP, 0,
1261                 {4, 500}},
1262   {"-noop",     "X protocol NoOperation", NULL,
1263                 NullInitProc, DoNoOp, NullProc, NullProc,
1264                 V1_2FEATURE, PLANEMASK, 0,
1265                 {1}},
1266   {"-atom",     "GetAtomName", NULL,
1267                 NullInitProc, DoGetAtom, NullProc, NullProc,
1268                 VERSION1_2 | VERSION1_3, NONROP, 0,
1269                 {1}},
1270   {"-pointer",  "QueryPointer", NULL,
1271                 NullInitProc, DoQueryPointer, NullProc, NullProc,
1272                 V1_4FEATURE, NONROP, 0,
1273                 {1}},
1274   {"-prop",     "GetProperty", NULL,
1275                 InitGetProperty, DoGetProperty, NullProc, NullProc,
1276                 V1_2FEATURE, NONROP, 0,
1277                 {1}},
1278   {"-gc",       "Change graphics context", NULL,
1279                 InitGC, DoChangeGC, NullProc, EndGC,
1280                 V1_2FEATURE, NONROP, 0,
1281                 {4}},
1282   {"-create",   "Create and map subwindows", NULL,
1283                 InitCreate, CreateChildren, DestroyChildren, EndCreate,
1284                 V1_2FEATURE, WINDOW, 0,
1285                 {0, True}},
1286   {"-ucreate",  "Create unmapped window", NULL,
1287                 InitCreate, CreateChildren, DestroyChildren, EndCreate,
1288                 V1_2FEATURE, WINDOW, 0,
1289                 {0, False}},
1290   {"-map",      "Map window via parent", NULL,
1291                 InitMap, MapParents, UnmapParentsCleanup, EndCreate,
1292                 V1_2FEATURE, WINDOW, 0,
1293                 {0, True}},
1294   {"-unmap",    "Unmap window via parent", NULL,
1295                 InitDestroy, UnmapParents, MapParentsCleanup, EndCreate,
1296                 V1_2FEATURE, WINDOW, 0,
1297                 {0, True}},
1298   {"-destroy",  "Destroy window via parent", NULL,
1299                 InitDestroy, DestroyParents, RenewParents, EndCreate,
1300                 V1_2FEATURE, WINDOW, 0,
1301                 {0, True}},
1302   {"-popup",    "Hide/expose window via popup", NULL,
1303                 InitPopups, DoPopUps, NullProc, EndPopups,
1304                 V1_2FEATURE, WINDOW, 0,
1305                 {0, True}},
1306   {"-move",     "Move window", NULL,
1307                 InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
1308                 V1_2FEATURE, WINDOW, 0,
1309                 {0, True}},
1310   {"-umove",    "Moved unmapped window", NULL,
1311                 InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
1312                 V1_2FEATURE, WINDOW, 0,
1313                 {0, False}},
1314   {"-movetree", "Move window via parent", NULL,
1315                 InitMoveTree, DoMoveTree, NullProc, EndMoveTree,
1316                 V1_2FEATURE, WINDOW, 0,
1317                 {4, True}},
1318   {"-resize",   "Resize window", NULL,
1319                 InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
1320                 V1_2FEATURE, WINDOW, 0,
1321                 {4, True}},
1322   {"-uresize",  "Resize unmapped window", NULL,
1323                 InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
1324                 V1_2FEATURE, WINDOW, 0,
1325                 {4, False}},
1326   {"-circulate", "Circulate window", NULL,
1327                 InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
1328                 V1_2FEATURE, WINDOW, 0,
1329                 {4, True}},
1330   {"-ucirculate", "Circulate Unmapped window", NULL,
1331                 InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
1332                 V1_2FEATURE, WINDOW, 0,
1333                 {4, False}},
1334   { NULL, NULL, NULL,
1335                 NULL, NULL, NULL, NULL,
1336                 0, NONROP, 0,
1337                 {0, False}}
1338 };