ControlsDoc.tioga
Bloomenthal, October 8, 1990 12:08 pm PDT
PCEDAR 2.0 —
Controls
Jules Bloomenthal
© Copyright 1988, 1990 Xerox Corporation. All rights reserved.
Abstract: An interface is provided for the creation of menu buttons, vertical or horizontal sliders, circular dials, a typescript, functions, and a graphics display within a viewer. Placement and sizing of these is semi-automatic. Attention has been paid to ease of interaction. A test program is provided to demonstrate some of the control capabilities.
Created by: Jules Bloomenthal
Maintained by: Jules Bloomenthal <Bloomenthal.pa>
Keywords: controls, sliders, dials, functions, contours, sketches, viewers, interaction.
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

1. Introduction
Generally, Controls is used to produce a top level viewer within which are a number of optional viewers. These optional viewers are of the following types:
Button:  a menu button.
Typescript: a viewer for messages to/from the user.
Graphics: a viewer for drawing pictures.
Control:  an interactive viewer of one of the following types:
  
  a circular dial or horizontal or vertical slider:
  The sliders or dials may contain optional detent positions, marked by thin
  lines within the control. The control will become detented if the mouse is
  close to the detent position. When detented, the center of the dial or slider
  will display a small circle or square.
  The current value of the control is, optionally, displayed. This displayed
  value may be mouse-selected, and a new value typed; upon a carriage-return,
  the control is set to the typed value, and any proc associated with the control
  is called.
  
  If the control key is depressed while mousing in a dial or slider, the mouse
  input is "fine-tuned;" that is, the resolution of the control is improved by
  approximately ten times.
  
  In its default mode, a dial or slider "traps" mouse actions once a mouse-down
  occurs within the dial or slider. This assists the user in using the control
  without the need to look at to ensure he or she remains within it. The default
  mode is defeated with the UserProfile option: ControlsMouseTrap: FALSE.
  
  a function:
  The user may sketch a function; the left or middle mouse buttons produce a
  freehand curve; the right button connects positions with straight lines. The
  last input value is, optionally, displayed.
  
  a contour:
  The user may sketch a freehand contour; if the end of the contour is close to
  its beginning, then the contour is closed. The contour may be edited by
  redrawing parts of it. Unpredictable results may occur if the direction of
  drawing is reversed while editing the contour.
  
  a sketch:
  The user may make a freehand sketch.
A convenience procedure, OuterViewer, permits an arbitrary number of buttons and controls to be placed within a top level viewer, but only one typescript and one graphics viewer are supported. All subviewers are optional. Generally, OuterViewer positions the buttons at the top, followed in vertically descending order by the typescript, the graphics viewer, and the controls. The controls may be arbitrarily positioned by the client or default positioned by OuterViewer.
The test program, ControlsExamples, demonstrates most of the above features.
2. Software Environment
Bringover -p /Cedar/CedarChest7.0/Top/Controls.df.
3. The Interface
The best description of the procedures and data structures is in Controls.mesa. ControlsCommandsImpl.mesa provides programming examples.
4. Commands
ControlsExamples: A demonstration of all the various control types.
ControlsMouseTest: A test of the mouse functionality.
ControlsSketcher: A program for free-style, by hand, sketching. This is a simple program that does
  not permit adjustment of color or line thickness, but it allows the user to place
  free-hand strokes into a viewer, as an alternative to the more formal, editable
  and repeatable style of Gargoyle. One may delete backwards, one at a time, the
  accumulated strokes. ControlsSketcher doesn't produce the prettiest artwork,
  but it may be of use now and then. The results may be sent to an Interpress file,
  and subsequently incorporated into a document, like this:
[Artwork node; type 'Artwork on' to command tool]
ControlsSimpleViewer: Just like SimpleViewer command.
ControlsTopLevel: An example of a top level control.
ControlsVernier: A separate viewer containing a fine-tuning control for the most recently moused
  control, if the control is a dial or slider. The vernier will adjust the value of the
  control and, if NOT control.truncate, call any proc associated with the control.