/* $Xorg: do_tests.c,v 1.3 2000/08/17 19:54:10 cpqbld Exp $ */
/*****************************************************************************
Copyright 1988, 1989 by Digital Equipment Corporation, Maynard, Massachusetts.

                        All Rights Reserved

Permission to use, copy, modify, and distribute this software and its 
documentation for any purpose and without fee is hereby granted, 
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in 
supporting documentation, and that the name of Digital not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission.  

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.

******************************************************************************/
/* $XFree86: xc/programs/x11perf/do_tests.c,v 1.10 2002/05/13 06:23:35 keithp Exp $ */

#include "x11perf.h"

/*
 * some test must be done a certain multiple of times. That multiple is
 * in the second half of the products below. You can edit the multiplier,
 * just not the multiplicand.
 */

Test test[] = {
  {"-dot",      "Dot", NULL,
		InitDots, DoDots, NullProc, EndDots,
		V1_2FEATURE, ROP, 0,
		{POLY}},
  {"-rect1",    "1x1 rectangle", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 1, NULL, NULL, FillSolid}},
  {"-rect10",   "10x10 rectangle", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, NULL, NULL, FillSolid}},
  {"-rect100",  "100x100 rectangle", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{36, 100, NULL, NULL, FillSolid}},
  {"-rect500",  "500x500 rectangle", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{1, 500, NULL, NULL, FillSolid}},
  {"-srect1",  "1x1 stippled rectangle",
		"1x1 stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 1, NULL, NULL, FillStippled}},
  {"-srect10", "10x10 stippled rectangle",
		"10x10 stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, NULL, NULL, FillStippled}},
  {"-srect100", "100x100 stippled rectangle",
		"100x100 stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{36, 100, NULL, NULL, FillStippled}},
  {"-srect500", "500x500 stippled rectangle",
		"500x500 stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{1, 500, NULL, NULL, FillStippled}},
  {"-osrect1",  "1x1 opaque stippled rectangle",
		"1x1 opaque stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 1, NULL, NULL, FillOpaqueStippled}},
  {"-osrect10", "10x10 opaque stippled rectangle",
		"10x10 opaque stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, NULL, NULL, FillOpaqueStippled}},
  {"-osrect100", "100x100 opaque stippled rectangle",
		"100x100 opaque stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{36, 100, NULL, NULL, FillOpaqueStippled}},
  {"-osrect500", "500x500 opaque stippled rectangle",
		"500x500 opaque stippled rectangle (8x8 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{1, 500, NULL, NULL, FillOpaqueStippled}},
  {"-tilerect1", "1x1 4x4 tiled rectangle",
		"1x1 tiled rectangle (4x4 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 1, NULL, NULL, FillTiled}},
  {"-tilerect10", "10x10 4x4 tiled rectangle",
		"10x10 tiled rectangle (4x4 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, NULL, NULL, FillTiled}},
  {"-tilerect100", "100x100 4x4 tiled rectangle",
		"100x100 tiled rectangle (4x4 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{36, 100, NULL, NULL, FillTiled}},
  {"-tilerect500", "500x500 4x4 tiled rectangle",
		"500x500 tiled rectangle (4x4 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{1, 500, NULL, NULL, FillTiled}},
  {"-oddsrect1",  "1x1 stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "OddTile", NULL, FillStippled}},
  {"-oddsrect10", "10x10 stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, "OddTile", NULL, FillStippled}},
  {"-oddsrect100", "100x100 stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{36, 100, "OddTile", NULL, FillStippled}},
  {"-oddsrect500", "500x500 stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{1, 500, "OddTile", NULL, FillStippled}},
  {"-oddosrect1",  "1x1 opaque stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddosrect10", "10x10 opaque stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddosrect100", "100x100 opaque stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{36, 100, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddosrect500", "500x500 opaque stippled rectangle (17x15 stipple)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{1, 500, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddtilerect1", "1x1 tiled rectangle (17x15 tile)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "OddTile", NULL, FillTiled}},
  {"-oddtilerect10", "10x10 tiled rectangle (17x15 tile)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, "OddTile", NULL, FillTiled}},
  {"-oddtilerect100", "100x100 tiled rectangle (17x15 tile)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{36, 100, "OddTile", NULL, FillTiled}},
  {"-oddtilerect500", "500x500 tiled rectangle (17x15 tile)", NULL,
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_4FEATURE, ROP, 0,
		{1, 500, "OddTile", NULL, FillTiled}},
  {"-bigsrect1",  "1x1 161x145 stippled rectangle",
		"1x1 stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 1, "mensetmanus", NULL, FillStippled}},
  {"-bigsrect10", "10x10 161x145 stippled rectangle",
		"10x10 stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, "mensetmanus", NULL, FillStippled}},
  {"-bigsrect100", "100x100 161x145 stippled rectangle",
		"100x100 stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{36, 100, "mensetmanus", NULL, FillStippled}},
  {"-bigsrect500", "500x500 161x145 stippled rectangle",
		"500x500 stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{1, 500, "mensetmanus", NULL, FillStippled}},
  {"-bigosrect1",  "1x1 161x145 opaque stippled rectangle",
		"1x1 opaque stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 1, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigosrect10", "10x10 161x145 opaque stippled rectangle",
		"10x10 opaque stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigosrect100", "100x100 161x145 opaque stippled rectangle",
		"100x100 opaque stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{36, 100, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigosrect500", "500x500 161x145 opaque stippled rectangle",
		"500x500 opaque stippled rectangle (161x145 stipple)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{1, 500, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigtilerect1", "1x1 161x145 tiled rectangle",
		"1x1 tiled rectangle (161x145 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 1, "mensetmanus", NULL, FillTiled}},
  {"-bigtilerect10", "10x10 161x145 tiled rectangle",
		"10x10 tiled rectangle (161x145 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, "mensetmanus", NULL, FillTiled}},
  {"-bigtilerect100", "100x100 161x145 tiled rectangle",
		"100x100 tiled rectangle (161x145 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{36, 100, "mensetmanus", NULL, FillTiled}},
  {"-bigtilerect500", "500x500 161x145 tiled rectangle",
		"500x500 tiled rectangle (161x145 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_2FEATURE, ROP, 0,
		{1, 500, "mensetmanus", NULL, FillTiled}},
  {"-eschertilerect1", "1x1 216x208 tiled rectangle",
		"1x1 tiled rectangle (216x208 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 1, "escherknot", NULL, FillTiled}},
  {"-eschertilerect10", "10x10 216x208 tiled rectangle",
		"10x10 tiled rectangle (216x208 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, "escherknot", NULL, FillTiled}},
  {"-eschertilerect100", "100x100 216x208 tiled rectangle",
		"100x100 tiled rectangle (216x208 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{36, 100, "escherknot", NULL, FillTiled}},
  {"-eschertilerect500", "500x500 216x208 tiled rectangle",
		"500x500 tiled rectangle (216x208 tile)",
		InitRectangles, DoRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{1, 500, "escherknot", NULL, FillTiled}},
  {"-seg1",     "1-pixel line segment", NULL,
		InitSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 0,
		{POLY, 1}},
  {"-seg10",    "10-pixel line segment", NULL,
		InitSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-seg100",   "100-pixel line segment", NULL,
		InitSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 0,
		{POLY, 100}},
  {"-seg500",   "500-pixel line segment", NULL,
		InitSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 0,
		{POLY, 500}},
  {"-seg100c1", "100-pixel line segment (1 kid)", NULL,
		InitSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 1,
		{POLY, 100}},
  {"-seg100c2", "100-pixel line segment (2 kids)", NULL,
		InitSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 2,
		{POLY, 100}},
  {"-seg100c3", "100-pixel line segment (3 kids)", NULL,
		InitSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 3,
		{POLY, 100}},
  {"-dseg10",   "10-pixel dashed segment", NULL,
		InitDashedSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-dseg100", "100-pixel dashed segment", NULL,
		InitDashedSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 0,
		{POLY, 100}},
  {"-ddseg100", "100-pixel double-dashed segment", NULL,
		InitDoubleDashedSegments, DoSegments, NullProc, EndSegments,
		V1_2FEATURE, ROP, 0,
		{POLY, 100}},
  {"-hseg10",   "10-pixel horizontal line segment", NULL,
		InitHorizSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{POLY, 10}},
  {"-hseg100",  "100-pixel horizontal line segment", NULL,
		InitHorizSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{POLY, 100}},
  {"-hseg500",  "500-pixel horizontal line segment", NULL,
		InitHorizSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{POLY, 500}},
  {"-vseg10",   "10-pixel vertical line segment", NULL,
		InitVertSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{POLY, 10}},
  {"-vseg100",  "100-pixel vertical line segment", NULL,
		InitVertSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{POLY, 100}},
  {"-vseg500",  "500-pixel vertical line segment", NULL,
		InitVertSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{POLY, 500}},
  {"-whseg10",  "10x1 wide horizontal line segment", NULL,
		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{200, 10}},
  {"-whseg100", "100x10 wide horizontal line segment", NULL,
		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{100, 100}},
  {"-whseg500", "500x50 wide horizontal line segment", NULL,
		InitWideHorizSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{50, 500}},
  {"-wvseg10",  "10x1 wide vertical line segment", NULL,
		InitWideVertSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{200, 10}},
  {"-wvseg100", "100x10 wide vertical line segment", NULL,
		InitWideVertSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{100, 100}},
  {"-wvseg500", "500x50 wide vertical line segment", NULL,
		InitWideVertSegments, DoSegments, NullProc, EndSegments,
		V1_3FEATURE, ROP, 0,
		{50, 500}},
  {"-line1",   "1-pixel line", NULL,
		InitLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{POLY, 1}},
  {"-line10",   "10-pixel line", NULL,
		InitLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-line100",  "100-pixel line", NULL,
		InitLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{POLY, 100}},
  {"-line500", "500-pixel line", NULL,
		InitLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{POLY, 500}},
  {"-dline10",  "10-pixel dashed line", NULL,
		InitDashedLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-dline100", "100-pixel dashed line", NULL,
		InitDashedLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{POLY, 100}},
  {"-ddline100", "100-pixel double-dashed line", NULL,
		InitDoubleDashedLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{POLY, 100}},
  {"-wline10",  "10x1 wide line", NULL,
		InitWideLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{100, 10}},
  {"-wline100", "100x10 wide line", NULL,
		InitWideLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-wline500", "500x50 wide line", NULL,
		InitWideLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{50, 500}},
  {"-wdline100", "100x10 wide dashed line", NULL,
		InitWideDashedLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-wddline100",  "100x10 wide double-dashed line", NULL,
		InitWideDoubleDashedLines, DoLines, NullProc, EndLines,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-orect10",  "10x10 rectangle outline", NULL,
		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, NULL, "0", FillSolid}},
  {"-orect100", "100x100 rectangle outline", NULL,
		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{36, 100, NULL, "0", FillSolid}},
  {"-orect500",	"500x500 rectangle outline", NULL,
		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{1, 500, NULL, "0", FillSolid}},
  {"-worect10",	"10x10 wide rectangle outline", NULL,
		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, NULL, "1", FillSolid}},
  {"-worect100", "100x100 wide rectangle outline", NULL,
		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{36, 100, NULL, "10", FillSolid}},
  {"-worect500", "500x500 wide rectangle outline", NULL,
		InitRectangles, DoOutlineRectangles, NullProc, EndRectangles,
		V1_3FEATURE, ROP, 0,
		{1, 500, NULL, "50", FillSolid}},
  {"-circle1",  "1-pixel circle", NULL,
		InitCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 1}},
  {"-circle10", "10-pixel circle", NULL,
		InitCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-circle100", "100-pixel circle", NULL,
		InitCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{200, 100}},
  {"-circle500", "500-pixel circle", NULL,
		InitCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{50, 500}},
  {"-dcircle100", "100-pixel dashed circle", NULL,
		InitDashedCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-ddcircle100", "100-pixel double-dashed circle", NULL,
		InitDoubleDashedCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-wcircle10", "10-pixel wide circle", NULL,
		InitWideCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-wcircle100", "100-pixel wide circle", NULL,
		InitWideCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-wcircle500", "500-pixel wide circle", NULL,
		InitWideCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{25, 500}},
  {"-wdcircle100", "100-pixel wide dashed circle", NULL,
		InitWideDashedCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-wddcircle100", "100-pixel wide double-dashed circle", NULL,
		InitWideDoubleDashedCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-pcircle10", "10-pixel partial circle", NULL,
		InitPartCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-pcircle100", "100-pixel partial circle", NULL,
		InitPartCircles, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{198, 100}},
  {"-wpcircle10", "10-pixel wide partial circle", NULL,
		InitPartWideCircles, DoArcs, NullProc, EndArcs,
		V1_3FEATURE, ROP, 0,
		{POLY, 10}},
  {"-wpcircle100", "100-pixel wide partial circle", NULL,
		InitPartWideCircles, DoArcs, NullProc, EndArcs,
		V1_3FEATURE, ROP, 0,
		{198, 100}},
  {"-fcircle1",  "1-pixel solid circle", NULL,
		InitCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 1}},
  {"-fcircle10", "10-pixel solid circle", NULL,
		InitCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-fcircle100", "100-pixel solid circle", NULL,
		InitCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{100, 100}},
  {"-fcircle500", "500-pixel solid circle", NULL,
		InitCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{20, 500}},
  {"-fcpcircle10", "10-pixel fill chord partial circle", NULL,
		InitChordPartCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-fcpcircle100", "100-pixel fill chord partial circle", NULL,
		InitChordPartCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{108, 100}},
  {"-fspcircle10", "10-pixel fill slice partial circle", NULL,
		InitSlicePartCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-fspcircle100", "100-pixel fill slice partial circle", NULL,
		InitSlicePartCircles, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{108, 100}},
  {"-ellipse10", "10-pixel ellipse", NULL,
		InitEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{500, 10}},
  {"-ellipse100", "100-pixel ellipse", NULL,
		InitEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{300, 100}},
  {"-ellipse500", "500-pixel ellipse", NULL,
		InitEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{100, 500}},
  {"-dellipse100", "100-pixel dashed ellipse", NULL,
		InitDashedEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{25, 100}},
  {"-ddellipse100", "100-pixel double-dashed ellipse", NULL,
		InitDoubleDashedEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{25, 100}},
  {"-wellipse10", "10-pixel wide ellipse", NULL,
		InitWideEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{200, 10}},
  {"-wellipse100", "100-pixel wide ellipse", NULL,
		InitWideEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{25, 100}},
  {"-wellipse500", "500-pixel wide ellipse", NULL,
		InitWideEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{20, 500}},
  {"-wdellipse100", "100-pixel wide dashed ellipse", NULL,
		InitWideDashedEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{25, 100}},
  {"-wddellipse100", "100-pixel wide double-dashed ellipse", NULL,
		InitWideDoubleDashedEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{25, 100}},
  {"-pellipse10", "10-pixel partial ellipse", NULL,
		InitPartEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{540, 10}},
  {"-pellipse100", "100-pixel partial ellipse", NULL,
		InitPartEllipses, DoArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{360, 100}},
  {"-wpellipse10", "10-pixel wide partial ellipse", NULL,
		InitPartWideEllipses, DoArcs, NullProc, EndArcs,
		V1_3FEATURE, ROP, 0,
		{540, 10}},
  {"-wpellipse100", "100-pixel wide partial ellipse", NULL,
		InitPartWideEllipses, DoArcs, NullProc, EndArcs,
		V1_3FEATURE, ROP, 0,
		{360, 100}},
  {"-fellipse10", "10-pixel filled ellipse", NULL,
		InitEllipses, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{200, 10}},
  {"-fellipse100", "100-pixel filled ellipse", NULL,
		InitEllipses, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{25, 100}},
  {"-fellipse500", "500-pixel filled ellipse", NULL,
		InitEllipses, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{10, 500}},
  {"-fcpellipse10", "10-pixel fill chord partial ellipse", NULL,
		InitChordPartEllipses, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{270, 10}},
  {"-fcpellipse100", "100-pixel fill chord partial ellipse", NULL,
		InitChordPartEllipses, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{36, 100}},
  {"-fspellipse10", "10-pixel fill slice partial ellipse", NULL,
		InitSlicePartEllipses, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{270, 10}},
  {"-fspellipse100", "100-pixel fill slice partial ellipse", NULL,
		InitSlicePartEllipses, DoFilledArcs, NullProc, EndArcs,
		V1_2FEATURE, ROP, 0,
		{36, 100}},
  {"-triangle1", "Fill 1-pixel/side triangle", NULL,
		InitTriangles, DoTriangles, NullProc, EndTriangles,
		V1_2ONLY, ROP, 0,
		{POLY, 1}},
  {"-triangle10", "Fill 10-pixel/side triangle", NULL,
		InitTriangles, DoTriangles, NullProc, EndTriangles,
		V1_2ONLY, ROP, 0,
		{POLY, 10}},
  {"-triangle100", "Fill 100-pixel/side triangle", NULL,
		InitTriangles, DoTriangles, NullProc, EndTriangles,
		V1_2ONLY, ROP, 0,
		{100, 100}},
  {"-triangle1", "Fill 1x1 equivalent triangle", NULL,
		InitTriangles, DoTriangles, NullProc, EndTriangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 1}},
  {"-triangle10", "Fill 10x10 equivalent triangle", NULL,
		InitTriangles, DoTriangles, NullProc, EndTriangles,
		V1_3FEATURE, ROP, 0,
		{POLY, 10}},
  {"-triangle100", "Fill 100x100 equivalent triangle", NULL,
		InitTriangles, DoTriangles, NullProc, EndTriangles,
		V1_3FEATURE, ROP, 0,
		{100, 100}},
  {"-trap1", "Fill 1x1 trapezoid", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1}},
  {"-trap10", "Fill 10x10 trapezoid", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{POLY, 10}},
  {"-trap100", "Fill 100x100 trapezoid", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{POLY/10, 100}},
  {"-trap300", "Fill 300x300 trapezoid", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300}},
  {"-strap1", "Fill 1x1 stippled trapezoid (8x8 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, NULL, NULL, FillStippled}},
  {"-strap10", "Fill 10x10 stippled trapezoid",
		"Fill 10x10 stippled trapezoid (8x8 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, NULL, NULL, FillStippled}},
  {"-strap100", "Fill 100x100 stippled trapezoid",
		"Fill 100x100 stippled trapezoid (8x8 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{100, 100, NULL, NULL, FillStippled}},
  {"-strap300", "Fill 300x300 stippled trapezoid (8x8 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, NULL, NULL, FillStippled}},
  {"-ostrap1", "Fill 1x1 opaque stippled trapezoid (8x8 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, NULL, NULL, FillOpaqueStippled}},
  {"-ostrap10", "Fill 10x10 opaque stippled trapezoid",
		"Fill 10x10 opaque stippled trapezoid (8x8 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, NULL, NULL, FillOpaqueStippled}},
  {"-ostrap100", "Fill 100x100 opaque stippled trapezoid",
		"Fill 100x100 opaque stippled trapezoid (8x8 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{100, 100, NULL, NULL, FillOpaqueStippled}},
  {"-ostrap300", "Fill 300x300 opaque stippled trapezoid (8x8 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, NULL, NULL, FillOpaqueStippled}},
  {"-tiletrap1", "Fill 1x1 tiled trapezoid (4x4 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, NULL, NULL, FillTiled}},
  {"-tiletrap10", "Fill 10x10 tiled trapezoid",
		"Fill 10x10 tiled trapezoid (4x4 tile)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{POLY, 10, NULL, NULL, FillTiled}},
  {"-tiletrap100", "Fill 100x100 tiled trapezoid",
		"Fill 100x100 tiled trapezoid (4x4 tile)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_2FEATURE, ROP, 0,
		{100, 100, NULL, NULL, FillTiled}},
  {"-tiletrap300", "Fill 300x300 tiled trapezoid (4x4 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, NULL, NULL, FillTiled}},
  {"-oddstrap1", "Fill 1x1 stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "OddTile", NULL, FillStippled}},
  {"-oddstrap10", "Fill 10x10 stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, "OddTile", NULL, FillStippled}},
  {"-oddstrap100", "Fill 100x100 stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{100, 100, "OddTile", NULL, FillStippled}},
  {"-oddstrap300", "Fill 300x300 stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, "OddTile", NULL, FillStippled}},
  {"-oddostrap1", "Fill 1x1 opaque stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddostrap10", "Fill 10x10 opaque stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddostrap100", "Fill 100x100 opaque stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{100, 100, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddostrap300", "Fill 300x300 opaque stippled trapezoid (17x15 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, "OddTile", NULL, FillOpaqueStippled}},
  {"-oddtiletrap1", "Fill 1x1 tiled trapezoid (17x15 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "OddTile", NULL, FillTiled}},
  {"-oddtiletrap10", "Fill 10x10 tiled trapezoid (17x15 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, "OddTile", NULL, FillTiled}},
  {"-oddtiletrap100", "Fill 100x100 tiled trapezoid (17x15 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{100, 100, "OddTile", NULL, FillTiled}},
  {"-oddtiletrap300", "Fill 300x300 tiled trapezoid (17x15 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, "OddTile", NULL, FillTiled}},
  {"-bigstrap1", "Fill 1x1 stippled trapezoid (161x145 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "mensetmanus", NULL, FillStippled}},
  {"-bigstrap10", "Fill 10x10 161x145 stippled trapezoid",
		"Fill 10x10 stippled trapezoid (161x145 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, "mensetmanus", NULL, FillStippled}},
  {"-bigstrap100", "Fill 100x100 161x145 stippled trapezoid",
		"Fill 100x100 stippled trapezoid (161x145 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{100, 100, "mensetmanus", NULL, FillStippled}},
  {"-bigstrap300", "Fill 300x300 stippled trapezoid (161x145 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, "mensetmanus", NULL, FillStippled}},
  {"-bigostrap1", "Fill 1x1 opaque stippled trapezoid (161x145 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigostrap10", "Fill 10x10 161x145 opaque stippled trapezoid",
		"Fill 10x10 opaque stippled trapezoid (161x145 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigostrap100", "Fill 100x100 161x145 opaque stippled trapezoid",
		"Fill 100x100 opaque stippled trapezoid (161x145 stipple)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{100, 100, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigostrap300", "Fill 300x300 opaque stippled trapezoid (161x145 stipple)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, "mensetmanus", NULL, FillOpaqueStippled}},
  {"-bigtiletrap1", "Fill 1x1 tiled trapezoid (161x145 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "mensetmanus", NULL, FillTiled}},
  {"-bigtiletrap10", "Fill 10x10 161x145 tiled trapezoid",
		"Fill 10x10 tiled trapezoid (161x145 tile)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, "mensetmanus", NULL, FillTiled}},
  {"-bigtiletrap100", "Fill 100x100 161x145 tiled trapezoid",
		"Fill 100x100 tiled trapezoid (161x145 tile)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{100, 100, "mensetmanus", NULL, FillTiled}},
  {"-bigtiletrap300", "Fill 300x300 tiled trapezoid (161x145 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, "mensetmanus", NULL, FillTiled}},
  {"-eschertiletrap1", "Fill 1x1 tiled trapezoid (216x208 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{POLY, 1, "escherknot", NULL, FillTiled}},
  {"-eschertiletrap10", "Fill 10x10 216x208 tiled trapezoid",
		"Fill 10x10 tiled trapezoid (216x208 tile)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{POLY, 10, "escherknot", NULL, FillTiled}},
  {"-eschertiletrap100", "Fill 100x100 216x208 tiled trapezoid",
		"Fill 100x100 tiled trapezoid (216x208 tile)",
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_3FEATURE, ROP, 0,
		{36, 100, "escherknot", NULL, FillTiled}},
  {"-eschertiletrap300", "Fill 300x300 tiled trapezoid (216x208 tile)", NULL,
		InitTrapezoids, DoTrapezoids, NullProc, EndTrapezoids,
		V1_4FEATURE, ROP, 0,
		{2, 300, "escherknot", NULL, FillTiled}},
#ifdef XRENDER
  {"-aatrap1", "Fill 1x1 aa trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 1 }},
  {"-aatrap10", "Fill 10x10 aa trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 10 }},
  {"-aatrap100", "Fill 100x100 aa trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 100 }},
  {"-aatrap300", "Fill 300x300 aa trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 300 }},
  {"-addaatrap1", "Fill 1x1 aa pre-added trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 1, "add" }},
  {"-addaatrap10", "Fill 10x10 aa pre-added trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 10, "add" }},
  {"-addaatrap100", "Fill 100x100 aa pre-added trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 100, "add" }},
  {"-addaatrap300", "Fill 300x300 aa pre-added trapezoid", NULL,
		InitFixedTrapezoids, DoFixedTrapezoids, NullProc, EndFixedTrapezoids,
		V1_5FEATURE, NONROP, 0,
		{POLY, 300, "add" }},
#endif
  {"-complex10", "Fill 10-pixel/side complex polygon", NULL,
		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
		V1_2ONLY, ROP, 0,
		{POLY, 10}},
  {"-complex100", "Fill 100-pixel/side complex polygons", NULL,
		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
		V1_2ONLY, ROP, 0,
		{POLY/10, 100}},
  {"-complex10", "Fill 10x10 equivalent complex polygon", NULL,
		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
		V1_3FEATURE, ROP, 0,
		{POLY, 10}},
  {"-complex100", "Fill 100x100 equivalent complex polygons", NULL,
		InitComplexPoly, DoComplexPoly, NullProc, EndComplexPoly,
		V1_3FEATURE, ROP, 0,
		{POLY/10, 100}},
  {"-64poly10convex", "Fill 10x10 64-gon (Convex)", NULL,
		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, (char *) 64, (char *) Convex}},
  {"-64poly100convex", "Fill 100x100 64-gon (Convex)", NULL,
		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
		V1_4FEATURE, ROP, 0,
		{POLY/10, 100, (char *) 64, (char *) Convex}},
  {"-64poly10complex", "Fill 10x10 64-gon (Complex)", NULL,
		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
		V1_4FEATURE, ROP, 0,
		{POLY, 10, (char *) 64, (char *) Complex}},
  {"-64poly100complex", "Fill 100x100 64-gon (Complex)", NULL,
		InitGeneralPoly, DoGeneralPoly, NullProc, EndComplexPoly,
		V1_4FEATURE, ROP, 0,
		{POLY/10, 100, (char *) 64, (char *) Complex}},
  {"-ftext",    "Char in 80-char line (6x13)", NULL,
		InitText, DoText, ClearTextWin, EndText,
		V1_2FEATURE, ROP, 0,
		{80, False, "6x13", NULL}},
  {"-f8text",    "Char in 70-char line (8x13)", NULL,
		InitText, DoText, ClearTextWin, EndText,
		V1_3FEATURE, ROP, 0,
		{70, False, "8x13", NULL}},
  {"-f9text",    "Char in 60-char line (9x15)", NULL,
		InitText, DoText, ClearTextWin, EndText,
		V1_3FEATURE, ROP, 0,
		{60, False, "9x15", NULL}},
  {"-f14text16",  "Char16 in 40-char line (k14)", NULL,
		InitText16, DoText16, ClearTextWin, EndText16,
		V1_3FEATURE, ROP, 0,
		{40, False,
	      "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
		NULL}},
  {"-f24text16",  "Char16 in 23-char line (k24)", NULL,
		InitText16, DoText16, ClearTextWin, EndText16,
		V1_3FEATURE, ROP, 0,
		{23, False, 
	      "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*",
		NULL}},
  {"-tr10text", "Char in 80-char line (TR 10)", NULL,
		InitText, DoText, ClearTextWin, EndText,
		V1_2FEATURE, ROP, 0,
		{80, False, 
		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1", 
		NULL}},
  {"-tr24text", "Char in 30-char line (TR 24)", NULL,
		InitText, DoText, ClearTextWin, EndText,
		V1_2FEATURE, ROP, 0,
		{30, False, 
		"-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
 		NULL}},
  {"-polytext", "Char in 20/40/20 line (6x13, TR 10)", NULL,
		InitText, DoPolyText, ClearTextWin, EndText,
		V1_2FEATURE, ROP, 0,
		{80, True, "6x13", 
		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1"}},
  {"-polytext16", "Char16 in 7/14/7 line (k14, k24)", NULL,
		InitText16, DoPolyText16, ClearTextWin, EndText16,
		V1_3FEATURE, ROP, 0,
		{28, True, 
	     "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
             "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*"}},
  {"-fitext",   "Char in 80-char image line (6x13)", NULL,
		InitText, DoImageText, ClearTextWin, EndText,
		V1_2FEATURE, PLANEMASK, 0,
		{80, False, "6x13", NULL}},
  {"-f8itext",   "Char in 70-char image line (8x13)", NULL,
		InitText, DoImageText, ClearTextWin, EndText,
		V1_3FEATURE, PLANEMASK, 0,
		{70, False, "8x13", NULL}},
  {"-f9itext",   "Char in 60-char image line (9x15)", NULL,
		InitText, DoImageText, ClearTextWin, EndText,
		V1_3FEATURE, PLANEMASK, 0,
		{60, False, "9x15", NULL}},
  {"-f14itext16", "Char16 in 40-char image line (k14)", NULL,
		InitText16, DoImageText16, ClearTextWin, EndText16,
		V1_3FEATURE, PLANEMASK, 0,
		{40, False,
	      "-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-*",
		NULL}},
  {"-f24itext16", "Char16 in 23-char image line (k24)", NULL,
		InitText16, DoImageText16, ClearTextWin, EndText16,
		V1_3FEATURE, PLANEMASK, 0,
		{23, False, 
	      "-jis-fixed-medium-r-normal--24-230-75-75-c-240-jisx0208.1983-*",
		NULL}},
  {"-tr10itext", "Char in 80-char image line (TR 10)", NULL,
		InitText, DoImageText, ClearTextWin, EndText,
		V1_2FEATURE, PLANEMASK, 0,
		{80, False, 
		"-adobe-times-medium-r-normal--10-100-75-75-p-54-iso8859-1", 
		NULL}},
  {"-tr24itext", "Char in 30-char image line (TR 24)", NULL,
		InitText, DoImageText, ClearTextWin, EndText,
		V1_2FEATURE, PLANEMASK, 0,
		{30, False, 
		"-adobe-times-medium-r-normal--24-240-75-75-p-124-iso8859-1",
 		NULL}},
#ifdef XFT
  {"-aa10text", "Char in 80-char aa line (Charter 10)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 10, "charter:antialias=true:rgba=0:pixelsize=10", NULL}},
  {"-aa24text", "Char in 30-char aa line (Charter 24)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{30, 24, "charter:antialias=true:rgba=0:pixelsize=24", NULL}},
  {"-aaftext", "Char in 80-char aa line (Courier 12)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 12, "courier:antialias=true:rgba=0:pixelsize=12", NULL}},
  {"-a10text", "Char in 80-char a line (Charter 10)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 10, "charter:antialias=false:rgba=0:pixelsize=10", NULL}},
  {"-a24text", "Char in 30-char a line (Charter 24)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{30, 24, "charter:antialias=false:rgba=0:pixelsize=24", NULL}},
  {"-aftext", "Char in 80-char a line (Courier 12)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 12, "courier:antialias=false:rgba=0:pixelsize=12", NULL}},
  {"-rgb10text", "Char in 80-char rgb line (Charter 10)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 10, "charter:antialias=true:rgba=rgb:pixelsize=10", NULL}},
  {"-rgb24text", "Char in 30-char rgb line (Charter 24)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{30, 24, "charter:antialias=true:rgba=rgb:pixelsize=24", NULL}},
  {"-rgbftext", "Char in 80-char rgb line (Courier 12)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 12, "courier:antialias=true:rgba=rgb:pixelsize=12", NULL}},
  {"-caa10text", "Char in 80-char aa core line (Charter 10)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 10, "charter:antialias=true:render=false:rgba=0:pixelsize=10", NULL}},
  {"-caa24text", "Char in 30-char aa core line (Charter 24)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{30, 24, "charter:antialias=true:render=false:rgba=0:pixelsize=24", NULL}},
  {"-caaftext", "Char in 80-char aa core line (Courier 12)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 12, "courier:antialias=true:render=false:rgba=0:pixelsize=12", NULL}},
  {"-ca10text", "Char in 80-char a core line (Charter 10)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 10, "charter:antialias=false:render=false:rgba=0:pixelsize=10", NULL}},
  {"-ca24text", "Char in 30-char a core line (Charter 24)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{30, 24, "charter:antialias=false:render=false:rgba=0:pixelsize=24", NULL}},
  {"-caftext", "Char in 80-char a core line (Courier 12)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 12, "courier:antialias=false:render=false:rgba=0:pixelsize=12", NULL}},
  {"-rgb10text", "Char in 80-char rgb core line (Charter 10)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 10, "charter:antialias=true:render=false:rgba=rgb:pixelsize=10", NULL}},
  {"-rgb24text", "Char in 30-char rgb core line (Charter 24)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{30, 24, "charter:antialias=true:render=false:rgba=rgb:pixelsize=24", NULL}},
  {"-rgbftext", "Char in 80-char rgb core line (Courier 12)", NULL,
	        InitAAText, DoAAText, ClearTextWin, EndAAText,
		V1_5FEATURE, NONROP, 0,
		{80, 12, "courier:antialias=true:render=false:rgba=rgb:pixelsize=12", NULL}},
#endif
  {"-scroll10", "Scroll 10x10 pixels", NULL,
		InitScroll, DoScroll, MidScroll, EndScroll,
		V1_2FEATURE, ROP, 0,
		{1, 10}},
  {"-scroll100", "Scroll 100x100 pixels", NULL,
		InitScroll, DoScroll, MidScroll, EndScroll,
		V1_2FEATURE, ROP, 0,
		{1, 100}},
  {"-scroll500", "Scroll 500x500 pixels", NULL,
		InitScroll, DoScroll, MidScroll, EndScroll,
		V1_2FEATURE, ROP, 0,
		{1, 500}},
  {"-copywinwin10", "Copy 10x10 from window to window", NULL,
		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
		V1_2FEATURE, ROP, 0,
		{4, 10}},
  {"-copywinwin100", "Copy 100x100 from window to window", NULL,
		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
		V1_2FEATURE, ROP, 0,
		{4, 100}},
  {"-copywinwin500", "Copy 500x500 from window to window", NULL,
		InitCopyWin, DoCopyWinWin, MidScroll, EndCopyWin,
		V1_2FEATURE, ROP, 0,
		{4, 500}},
  {"-copypixwin10", "Copy 10x10 from pixmap to window", NULL,
		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 10}},
  {"-copypixwin100", "Copy 100x100 from pixmap to window", NULL,
		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix, 
		V1_2FEATURE, ROP, 0,
		{4, 100}},
  {"-copypixwin500", "Copy 500x500 from pixmap to window", NULL,
		InitCopyPix, DoCopyPixWin, MidCopyPix, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 500}},
  {"-copywinpix10", "Copy 10x10 from window to pixmap", NULL,
		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 10}},
  {"-copywinpix100", "Copy 100x100 from window to pixmap", NULL,
		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix, 
		V1_2FEATURE, ROP, 0,
		{4, 100}},
  {"-copywinpix500", "Copy 500x500 from window to pixmap", NULL,
		InitCopyPix, DoCopyWinPix, MidScroll, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 500}},
  {"-copypixpix10", "Copy 10x10 from pixmap to pixmap", NULL,
		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 10}},
  {"-copypixpix100", "Copy 100x100 from pixmap to pixmap", NULL,
		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix, 
		V1_2FEATURE, ROP, 0,
		{4, 100}},
  {"-copypixpix500", "Copy 500x500 from pixmap to pixmap", NULL,
		InitCopyPix, DoCopyPixPix, NullProc, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 500}},
  {"-copyplane10", "Copy 10x10 1-bit deep plane", NULL,
		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 10}},
  {"-copyplane100", "Copy 100x100 1-bit deep plane", NULL,
		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 100}},
  {"-copyplane500", "Copy 500x500 1-bit deep plane", NULL,
		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
		V1_2FEATURE, ROP, 0,
		{4, 500}},
  {"-deepcopyplane10", "Copy 10x10 n-bit deep plane", NULL,
		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
		V1_5FEATURE, ROP, 0,
		{4, 10, "Deep"}},
  {"-deepcopyplane100", "Copy 100x100 n-bit deep plane", NULL,
		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
		V1_5FEATURE, ROP, 0,
		{4, 100, "Deep"}},
  {"-deepcopyplane500", "Copy 500x500 n-bit deep plane", NULL,
		InitCopyPlane, DoCopyPlane, MidCopyPix, EndCopyPix,
		V1_5FEATURE, ROP, 0,
		{4, 500, "Deep"}},
  {"-putimage10", "PutImage 10x10 square", NULL,
		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
		V1_2FEATURE, ROP, 0,
		{4, 10}},
  {"-putimage100", "PutImage 100x100 square", NULL,
		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
		V1_2FEATURE, ROP, 0,
		{4, 100}},
  {"-putimage500", "PutImage 500x500 square", NULL,
		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
		V1_2FEATURE, ROP, 0,
		{4, 500}},
  {"-putimagexy10", "PutImage XY 10x10 square", NULL,
		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
		V1_4FEATURE, ROP, 0,
		{4, 10, "XY"}},
  {"-putimagexy100", "PutImage XY 100x100 square", NULL,
		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
		V1_4FEATURE, ROP, 0,
		{4, 100, "XY"}},
  {"-putimagexy500", "PutImage XY 500x500 square", NULL,
		InitPutImage, DoPutImage, MidCopyPix, EndGetImage,
		V1_4FEATURE, ROP, 0,
		{4, 500, "XY"}},
#ifdef MITSHM
  {"-shmput10", "ShmPutImage 10x10 square", NULL,
		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
		V1_2FEATURE, ROP, 0,
		{4, 10}},
  {"-shmput100", "ShmPutImage 100x100 square", NULL,
		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
		V1_2FEATURE, ROP, 0,
		{4, 100}},
  {"-shmput500", "ShmPutImage 500x500 square", NULL,
		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
		V1_2FEATURE, ROP, 0,
		{4, 500}},
  {"-shmputxy10", "ShmPutImage XY 10x10 square", NULL,
		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
		V1_4FEATURE, ROP, 0,
		{4, 10, "XY"}},
  {"-shmputxy100", "ShmPutImage XY 100x100 square", NULL,
		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
		V1_4FEATURE, ROP, 0,
		{4, 100, "XY"}},
  {"-shmputxy500", "ShmPutImage XY 500x500 square", NULL,
		InitShmPutImage, DoShmPutImage, MidCopyPix, EndShmPutImage,
		V1_4FEATURE, ROP, 0,
		{4, 500, "XY"}},
#endif
  {"-getimage10", "GetImage 10x10 square", NULL,
		InitGetImage, DoGetImage, NullProc, EndGetImage,
		V1_2FEATURE, PLANEMASK, 0,
		{4, 10}},
  {"-getimage100", "GetImage 100x100 square", NULL,
		InitGetImage, DoGetImage, NullProc, EndGetImage,
		V1_2FEATURE, PLANEMASK, 0,
		{4, 100}},
  {"-getimage500", "GetImage 500x500 square", NULL,
		InitGetImage, DoGetImage, NullProc, EndGetImage,
		V1_2FEATURE, PLANEMASK, 0,
		{4, 500}},
  {"-getimagexy10", "GetImage XY 10x10 square", NULL,
		InitGetImage, DoGetImage, NullProc, EndGetImage,
		V1_4FEATURE, PLANEMASK, 0,
		{4, 10, "XY"}},
  {"-getimagexy100", "GetImage XY 100x100 square", NULL,
		InitGetImage, DoGetImage, NullProc, EndGetImage,
		V1_4FEATURE, PLANEMASK, 0,
		{4, 100, "XY"}},
  {"-getimagexy500", "GetImage XY 500x500 square", NULL,
		InitGetImage, DoGetImage, NullProc, EndGetImage,
		V1_4FEATURE, PLANEMASK, 0,
		{4, 500, "XY"}},
  {"-noop",     "X protocol NoOperation", NULL,
		NullInitProc, DoNoOp, NullProc, NullProc,
		V1_2FEATURE, PLANEMASK, 0,
		{1}},
  {"-atom",     "GetAtomName", NULL,
		NullInitProc, DoGetAtom, NullProc, NullProc,
		VERSION1_2 | VERSION1_3, NONROP, 0,
		{1}},
  {"-pointer",  "QueryPointer", NULL,
		NullInitProc, DoQueryPointer, NullProc, NullProc,
		V1_4FEATURE, NONROP, 0,
		{1}},
  {"-prop",     "GetProperty", NULL,
		InitGetProperty, DoGetProperty, NullProc, NullProc,
		V1_2FEATURE, NONROP, 0,
		{1}},
  {"-gc",       "Change graphics context", NULL,
		InitGC, DoChangeGC, NullProc, EndGC,
		V1_2FEATURE, NONROP, 0,
		{4}},
  {"-create",   "Create and map subwindows", NULL,
		InitCreate, CreateChildren, DestroyChildren, EndCreate,
		V1_2FEATURE, WINDOW, 0,
		{0, True}},
  {"-ucreate",  "Create unmapped window", NULL,
		InitCreate, CreateChildren, DestroyChildren, EndCreate,
		V1_2FEATURE, WINDOW, 0,
		{0, False}},
  {"-map",      "Map window via parent", NULL,
		InitMap, MapParents, UnmapParentsCleanup, EndCreate,
		V1_2FEATURE, WINDOW, 0,
		{0, True}},
  {"-unmap",    "Unmap window via parent", NULL,
		InitDestroy, UnmapParents, MapParentsCleanup, EndCreate,
		V1_2FEATURE, WINDOW, 0,
		{0, True}},
  {"-destroy",  "Destroy window via parent", NULL,
		InitDestroy, DestroyParents, RenewParents, EndCreate,
		V1_2FEATURE, WINDOW, 0,
		{0, True}},
  {"-popup",    "Hide/expose window via popup", NULL,
		InitPopups, DoPopUps, NullProc, EndPopups,
		V1_2FEATURE, WINDOW, 0,
		{0, True}},
  {"-move",     "Move window", NULL,
		InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
		V1_2FEATURE, WINDOW, 0,
		{0, True}},
  {"-umove",    "Moved unmapped window", NULL,
		InitMoveWindows, DoMoveWindows, NullProc, EndMoveWindows,
		V1_2FEATURE, WINDOW, 0,
		{0, False}},
  {"-movetree", "Move window via parent", NULL,
		InitMoveTree, DoMoveTree, NullProc, EndMoveTree,
		V1_2FEATURE, WINDOW, 0,
		{4, True}},
  {"-resize",   "Resize window", NULL,
		InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
		V1_2FEATURE, WINDOW, 0,
		{4, True}},
  {"-uresize",  "Resize unmapped window", NULL,
		InitMoveWindows, DoResizeWindows, NullProc, EndMoveWindows,
		V1_2FEATURE, WINDOW, 0,
		{4, False}},
  {"-circulate", "Circulate window", NULL,
		InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
		V1_2FEATURE, WINDOW, 0,
		{4, True}},
  {"-ucirculate", "Circulate Unmapped window", NULL,
		InitCircWindows, DoCircWindows, NullProc, EndCircWindows,
		V1_2FEATURE, WINDOW, 0,
		{4, False}},
  { NULL, NULL, NULL,
		NULL, NULL, NULL, NULL,
		0, NONROP, 0,
		{0, False}}
};
