home *** CD-ROM | disk | FTP | other *** search
-
- Outline for Xbench
- ------------------
-
- GENERAL
- -------
-
- Stuff starting with '-' are callbacks for that widget.
- '<>' means whatever is appropriate.
-
- Choice widgets will either be implemented as a new type of widget or a
- form containing a bunch of Command widgets. The automatic callbacks for
- the commands are:
- - set all children of parent to normal colors
- - set oneself to reverse colors
- There will be a
- - put <> in buffer, specified by the parent widget
- There will also be a
- - put <>\n in buffer
- specific to each command.
-
- In general, the buffer does not need to be looked at until the test is
- actually run; however, if we decide to "gray out" choices in the Graphics
- Options window that have nothing to do with the benchmark, then choosing
- a benchmark must flush also.
-
- Widgets - we need to decide whether the windows that are turn-on-and-offable
- should be children of Form, or of TopLevel. If they're children of Form,
- then the user won't be able to stack them or have a say in where they go.
- We also might run out of space. If they're children of TopLevel, the user
- can decide where they go, but he's going to have to choose their location
- (with the wm) every time they come up. I would vote for the latter approach.
- (Uh oh... I don't think that the TopLevel widget can have more than one
- child...)
-
- All choosing Widgets should write strings in the Xbench language to some
- buffer, where the actual testing thing can pull them out.
-
-
-
- HIERARCHY OF WIDGETS
- --------------------
-
- Form (form) surrounding the whole thing (owned by TopLevel)
- Title (label) on top describing version & current test (owned by Form)
- MenuLine (form) under Title giving top level choices (owned by Form)
- MenuLine contains these Commands:
- Run
- - flush the buffer
- - run benchmark
- BenchmarkOptionsOn
- - map benchmark options window (BenchmarkOptions)
- BenchmarkOptionsOff
- - unmap benchmark options window
- GraphicsOptionsOn
- - map graphics options window (GraphicsOptions)
- GraphicsOptionsOff
- - unmap graphics options window
- DescriptionOn
- - map description window (Description)
- DescriptionOff
- - unmap description window
- RecordingOn
- - bring up dialog box for name of file
- - start saving commands into file (set a global boolean TRUE)
- RecordingOff
- - stop saving commands into file (set the global boolean FALSE)
- Playback
- - bring up dialog box for name of file
- - read from file until EOF
- Quit
- - quit
-
- The toggling command buttons exist in pairs, of which only one is visible at
- any one point. This makes callbacks/names of buttons easier to implement.
-
- ---
-
- BenchmarkOptions (form) describing benchmark options (owned by Toplevel?)
- BenchmarkOptions contains:
- TestChoice (choice) the 16 different test choices.
- - put "test <>" in buffer
- - put description of test in Description window
- - call disable_gc_choices() with the GC field flags
- Iterations (text) the number of times to run.
- - put "iterations <>" in buffer
-
- ---
-
- GraphicsOptions (form) describing graphics options (owned by Toplevel?)
- GraphicsOptions contains:
- ChooseFunction (choice)
- - put "function <>" in buffer
- ChooseColormap (choice)
- - put "colormap <>" in buffer
- Foreground (text)
- - put "foreground <>" in buffer
- Background (text)
- - put "background <>" in buffer
- LineWidth (text)
- - put "linewidth <>" in buffer
- LineStyle (choice)
- - put "linestyle <>" in buffer
- CapStyle (choice)
- - put "capstyle <>" in buffer
- JoinStyle (choice)
- - put "joinstyle <>" in buffer
- FillStyle (choice)
- - put "fillstyle <>" in buffer
- FillRule (choice)
- - put "fillrule <>" in buffer
- ArcMode (choice)
- - put "arcmode <>" in buffer
- TStipOrigin (text * 2)
- - put "tsorigin <>" in buffer
- DashList (???)
- - put "dashlist <>" in buffer
- DashOffset (text?)
- - put "dashoffset <>" in buffer
- ClipMask (choice)
- - put "clipmask <>" in buffer
- Planemask (text)
- - put "planemask <>" in buffer
-
- We need specialized widgets for DashList, possibly TStipOrigin and DashOffset.
-
- Still to be decided: can one choose GC options that have no meaning for that
- particular benchmark? I don't think it should be a problem.
-
- ---
-
- Description (text) describing the current test (owned by Toplevel?)
-
- I really need to find out how to use sources and sinks for Text widgets -
- the documentation does not say how to do it.
-
- Every test will have a block of text associated with it. When a new
- benchmark is chosen, its associated text will become the source for the
- Description widget. Note that we don't have to worry about whether
- Description is mapped or not; we're just setting a source.
-
- ---
-
- Analysis (text) describing the results of the current test (owned by Form -
- we always want this to be around)
-
- This will display the name of the test, the important values of the GC,
- the results of the test, and a short analysis thereof. If more than
- one test of a particular benchmark is performed, it will be appended to
- the analysis source (not replacing it). This will allow for comparing
- results obtained with different GC's.
-
- ---
-
- Test (core + expose event handler) for doing the test.
-
- All this really needs to do, besides actually doing the test, is to
- time it and make sure the Analysis part knows about it.
-
- ---
-
- RecordingOn / RecordingOff / Playback
-
- When the user presses Playback, pretty much all we have to do is to
- 1) change the buffer to the file that he wants, and 2) start reading.
- The rest should be taken care of the buffer-interpreting module.
-
- RecordingOn changes the output buffer _and_ the input buffer to the
- desired file.
-
- RecordingOff changes them both back to the usual.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-