1The Commands menu should contain the following items:
2
3    Run                                                [the selected benchmark]
4    Benchmark Options.../Hide Benchmark Options                        [toggle]
5    Graphics Options.../Hide Graphics Options                          [toggle]
6    Describe Test.../Hide Test Description                             [toggle]
7    Start Recording/Stop Recording                                     [toggle]
8    Playback                        [pop up a dialogue box asking for filename]
9    --------
10    Quit                   [pop up a dialogue box asking if we are really done]
11
12
13The Benchmark Options sheet should contain the information shown below.  The
14list of graphics primitives was derived from the "Definition of the Porting
15Layer for the X v11 Sample Server" by Angebranndt et al. and from the Protocol
16document.
17
18
19			       Benchmark Options
20
21
22            +-----------------------+-----------------------+
23 Test       |      Copy Area        |      Copy Plane       |
24            +-----------------------+-----------------------+
25            |        Points         |        Lines          |
26            +-----------------------+-----------------------+
27            |       Segments        |      Rectangles       |
28            +-----------------------+-----------------------+
29            |         Arcs          |    Filled Polygons    |
30            +-----------------------+-----------------------+
31            |   Filled Rectangles   |      Filled Arcs      |
32            +-----------------------+-----------------------+
33            |       Put Image       |       Get Image       |
34            +-----------------------+-----------------------+
35            |        Text 8         |      Image Text 8     |
36            +-----------------------+-----------------------+
37            |        Text 16        |      Image Text 16    |
38            +-----------------------+-----------------------+
39
40            +---------+
41 Iterations |   10000 |
42            +---------+
43
44            +----+-----+                         +----+-----+
45 Record     | on | off |          Describe Test  | on | off |
46            +----+-----+                         +----+-----+
47
48            +-----------------------------------------------+
49 Filename   |                                  ./xbench.log |
50            +-----------------------------------------------+
51
52
53*******************************************************************************
54
55
56The Graphics Options area would contain the following entries:
57
58    Function - one-of { clear, and, andReverse, copy, andInverted, noop, xor,
59		        or, nor, equiv, invert, orReverse, copyInverted,
60		        orInverted, nand, set }
61    PlaneMask - unsigned value or many-of-n representing bits
62    Foreground - unsigned value in range 0..2^nplanes
63    Background - unsigned value in range 0..2^nplanes
64    ForegroundColor - set rgb value of Foreground
65    BackgroundColor - set rgb value of background
66    LineWidth - unsigned number in range 0..65535
67    LineStyle - oneof { Solid, OnOffDash, DoubleDash }
68    CapStyle - one-of { NotLast, Butt, Round, Projecting }
69    JoinStyle - one-of { Miter, Round, Bevel }
70    FillStyle - one-of { Solid, Tiled, OpaqueStippled, Stippled }
71    FillRule - one-of { EvenOdd, Winding }
72    ArcMode - one-of { Chord, PieSlice }
73    # Tile - pixmap [probably not edittable in first version]
74    # Stipple - pixmap [probably not edittable in first version]
75    TileStipXOrigin - signed number in range -32768..32767
76    TileStipYOrigin - signed number in range -32768..32767
77    Font - name of font
78    ClipXOrigin - signed number in range -32768..32767
79    ClipYOrigin - signed number in range -32768..32767
80    ClipMask - one-of { None, select } [user selects by clicking in work area]
81    DashOffset - unsigned number in range -32768..32767
82    DashList - many-of-n of 8 boxes for defining dashes
83
84
85
86
87			       Graphics Options
88
89
90             +--------------+--------------+--------------+--------------+
91 Function    |     clear    |      and     |  andReverse  |     copy     |
92             +--------------+--------------+--------------+--------------+
93             | andInverted  |     noop     |      xor     |      or      |
94             +--------------+--------------+--------------+--------------+
95             |      nor     |     equiv    |    invert    |   orReverse  |
96             +--------------+--------------+--------------+--------------+
97             | copyInverted |  orInverted  |     nand     |      set     |
98             +--------------+--------------+--------------+--------------+
99
100             +-----+---------+
101 Colormap    | new | default |
102             +-----+---------+
103
104             +----------+                     +--------+--------+--------+
105 Foreground  |        1 |    ForegroundColor  |  ffff  |  ffff  |  ffff  |
106             +----------+                     +--------+--------+--------+
107
108             +----------+                     +--------+--------+--------+
109 Background  |        0 |    BackgroundColor  |  0000  |  0000  |  0000  |
110             +----------+                     +--------+--------+--------+
111
112             +------+                   +-------+-----------+------------+
113 LineWidth   |    3 |        LineStyle  | Solid | OnOffDash | DoubleDash |
114             +------+                   +-------+-----------+------------+
115
116             +---------+------+-------+------------+
117 CapStyle    | NotLast | Butt | Round | Projecting |
118             +---------+------+-------+------------+
119
120             +-------+-------+-------+
121 JoinStyle   | Miter | Round | Bevel |
122             +-------+-------+-------+
123
124             +-------+-------+----------+----------------+
125 FillStyle   | Solid | Tiled | Stippled | OpaqueStippled |
126             +-------+-------+----------+----------------+
127
128             +---------+---------+
129 FillRule    | EvenOdd | Winding |
130             +---------+---------+
131
132             +-------+----------+
133 ArcMode     | Chord | PieSlice |
134             +-------+----------+
135
136             +--------------+
137 TStipOrigin | +####, +#### |
138             +--------------+
139
140             +-+-+-+-+-+-+-+-+                                   +-------+
141 DashList    | | |X|X| | |X|X|                       DashOffset  | +#### |
142             +-+-+-+-+-+-+-+-+                                   +-------+
143
144             +----+-----+-----+-------+                         +--------+
145 ClipMask    | on | off | set | clear |             PlaneMask   |  ffff  |
146             +----+-----+-----+-------+                         +--------+
147
148
149*******************************************************************************
150
151				    Grammar
152
153
154Both to support Record/Playback (used for debugging, demonstrations, and for
155creating benchmark scripts), there needs to be a command line language that
156can be used to set all options.  Although we won't be doing anything as
157sophisticated as what is provided in many UIMS's, it would be nice to keep
158the application section of the benchmark as separate as possible from the
159user interface.
160
161    test  { CopyArea, CopyPlane, PolyPoint, PolyLine, PolySegment,
162	    PolyRectangle, PolyArc, FillPolygon, PolyFillRect, PolyFillArc,
163	    PutImage, GetImage, ImageText8, PolyText8, ImageText16,
164	    PolyText16 }
165	-  selects the test to be performed.
166
167    colormap  { new, default }
168	-  selects which colormap should be used for test
169
170    iterations UNSIGNEDNUMBER
171	-  specifies the number of times that the test should be run.
172
173    record BOOLEAN
174	-  indicates whether or not to record commands into the record-file.
175
176    record-file  FILENAME
177	-  specifies the name of the file into which commands are recorded.
178
179    describe  BOOLEAN
180	-  indicates whether or not a description of the test should be
181	   displayed whenever a test is selected (or when this option is
182	   specified).
183
184    function  { clear, and, andReverse, copy, andInverted, noop, xor, or, nor,
185		equiv, invert, orReverse, copyInverted, orInverted, nand, set }
186	-  selects the alu function to use in the GC.
187
188    foreground UNSIGNEDNUMBER
189	-  selects the foreground pixel value to use in the GC; if a new
190	   colormap is being used, the RGB value for this slot may be changed.
191
192    background UNSIGNEDNUMBER
193	-  selects the background pixel value to use in the GC; if a new
194	   colormap is being used, the RGB value for this slot may be changed.
195
196    forecolor COLORNAME
197	-  specifies the RGB value or name of the color to be used for the
198	   foreground pixel, if settable.
199
200    backcolor COLORNAME
201	-  specifies the RGB value or name of the color to be used for the
202	   background pixel, if settable.
203
204    linewidth NUMBER
205	-  specifies width of lines to use in the GC.
206
207    linestyle  { Solid, OnOffDash, DoubleDash }
208	-  selects the type of lines to use in the GC.
209
210    capstyle  { NotLast, Butt, Round, Projecting }
211	-  selects the type of caps to use in the GC.
212
213    joinstyle  { Miter, Round, Bevel }
214	-  selects the type of joins to use in the GC.
215
216    fillstyle  { Solid, Tiled, Stippled, OpaqueStippled }
217	-  selects the type of fills to use in the GC.
218
219    fillrule  { EvenOdd, Winding }
220	-  selects the fill rule to be used in the GC.
221
222    arcmode  { Chord, PieSlice }
223	-  selects the type of arcs to be drawn in the GC.
224
225    tsorigin  NUMBER  NUMBER
226	-  specifies the X and Y values of the TileStippleOrigin in the GC.
227
228    dashlist  DASHPATTERN
229	-  specifies a pattern of 8 binary digits to use in the dashlist
230	   in the GC; the characters are given in big-endian order such that
231	   they may be read in binary to form a number between 0 and 255.
232
233    dashoffset  NUMBER
234	-  specifies the dashoffset to use in the GC.
235
236    cliporigin  NUMBER  NUMBER
237	-  specifies the X and Y values of the cliporigin in the GC.
238
239    clipmask  { on, off, set NUMBER NUMBER NUMBER NUMBER, clear }
240	-  selects a clipping mode.  If "on", then use the most recently
241	   defined set of clipping rectangles; if "off", then do not do
242	   any clipping but keep the clipping rectangles for future
243	   reference; if "set", then add the rectangle specified by
244	   the remaining numeric arguments as X1 Y1 X2 Y2 relative to the
245	   cliporigin.
246
247    planemask  NUMBER
248	-  specifies the set of planes on to which graphics may be drawn
249	   in the GC.
250
251    run
252	-  run the currently configured test.
253
254    quit
255	-  exit the program
256