CSL Notebook Entry
ToFrom
CSLMaureen Stone, Eric Bier
 CSL
SubjectDate
Gargoyle November 11, 1985
Release asTargetFileName
Came from
 /cyan/imaging/gargoyle/csln/Gargoyle-CSLN.tioga
Last editedby Maureen Stone November 11, 1985 1:04:23 pm PST
AbstractThis is the first Gargoyle design CSL notebook entry. It describes the project goals and the current state. Further documentation will be available on /cyan/gargoyle/documentation/GargoyleDesign.df
Attributes informal, technical, Imaging, Illustrators
What is Gargoyle?
Gargoyle will be an synthetic graphics illustrator in the tradition of Draw, Griffin, Gremlin (U. C. Berkeley) and Unicorn (University of East Anglia) and MacDraw. Our orientation is systems that enable a designer to achieve graphic art quality output using an interactive workstation and a digital printer. Each part of the design will be defined in a device independent manner, typically as an analytic outline. The designer works principally to produce a visual effect on the target device, but the image can also be rendered usefully on a set of devices for proofing, etc. In our systems, design elements consist of line and curve bounded regions. The boundary is a continuous function, such as a line or cubic splines. A region can be colored with either a constant or a sampled color, following the model defined by Interpress. The user thinks of the regions as shapes or objects that can be copied and transformed. The objects overlap opaquely (always?) in a defined order. This approach is in contrast to "painting" systems where the designer works directly with the pixels on the display.
Our current illustrator of this form is Griffin [Griffin]. Griffin supports line and curve bounded areas, a primitive form of graphical style, and one-line captions in a limited number of rotations. Griffin was designed as an Alto Mesa program in 1978 and was carefully crafted to match the imaging model of the printing format Press. Gargoyle is designed to match the imaging model in Interpress. We intend to fully exploit the advances we have made in device independent graphics, printing and computing environments. Gargoyle will use the full power of the Imager, Interpress and Cedar.
Like Griffin, Gargoyle will be a single page illustrator and will be useful for making illustrations, posters and slides. The size of the page is not limited except, of course, when you actually print it. The point is, we are not investigating issues of pagination or large document management except in the use of graphical style. In this project we will focus on making a single, complex page. If you take Griffin as a starting point, Gargoyle will advance from it in several different areas. First, the objects themselves will be more complex and the relationship between the objects in the scene will be more complex. This wlll require a richer editing model . Second, Gargoyle will cooporate with the other imaging tools in the Cedar enviornment such as Tioga. Third, Gargoyle will support graphical style.
To work on these goals we tend to think of Gargoyle as a collection of experiments. These experiments can be grouped into the following areas: manipulating complex structured objects, integration and graphical style. We intend for the agregation of these experiments to be useful to the members of CSL for producing slides and illustrations because we believe that only a user community can truely demonstrate effectiveness. Making a collection of experiments a useful tool is an experiment in itself.
Manipulating complex structured objects
A single object in Gargoyle is geometrically equivalent to an Interpress mask. Informally, this means that Gargoyle will support two dimensional shapes with holes. A single shape is called an outline. Each closed loop in the outline is called a trajectory. Each trajectory is defined as a sequence of segments. Each segment is a straight line or curve, where the curves can be defined as circular arcs, conics or cubics. We want to support multi-level clustering of outlines. We have not yet decided whether to include any instancing.
The editing model will need to support all the different segment types and a range of continuity constraints between segments. We would like to allow users to break trajectories at (nearly) arbitrary points and insert pieces of other trajectories. We need to be able to easily select clusters, outlines, trajectories, segments and control points (or whatever mechanism we come up with for editing curves).
Gargoyle will employ intelligent dragging as the mechanism for controlling object placement. Intelligent dragging is the combination of the following three techniques: 1) A "gravity function" to snap a cursor to points and curves of interest. 2) The points and curves of interest include not only the objects in the scene, but also points and curves which can be derived from these by a simple rule, e.g. "the circle of radius 25 centered on that vertex," or "the intersection point of those two curves." 3) Objects are translated, rotated, or scaled from place to place in a smooth motion, which is coupled to the motion of the same cursor that snaps to points and curves. Hence, all of the motions can be performed with precision. Intelligent dragging is designed to provide more precision than grids without the complexity and uncontrollibility of constraint systems.
We intend eventually to have special tools for creating objects with symmetry and other structure. We would like to include the full set of Boolean point set operations on outlines (e.g. union, intersection, and difference) for constructing shapes. We would like also to explore the use of curve-fitting algorithms [Plass and Stone] to experiment with a combined painting and construction model for defining shapes.
Integration
For text editing, Gargoyle will attempt to leverage off of Tioga as much as possible. Actual integration with Tioga will have to be driven by Tioga development. As a minimum position, Gargoyle will interactively "paste-up" text from the Tioga formatter by using TiogaImager. Placement points for text will integrate with the shape editing point control mechanisms. Gargoyle style will support Tioga-like style for text.
We hope to make a system that is useful and "feels good" to members of the Cedar community and serves as an example of the kind of application that Cedar makes "easy". We intend to leverage as much as possible off of the Cedar environment, in contrast to Griffin which had to build everything above BitBLT from scratch. We want to make full use of our research on device independent graphics and quality printing to give the user the ability to predict the printed version of their illustration from the displayed one.
Graphical Style
Graphical style describes a set of named formulas for rendering illustrations from their raw "geometry" [Beach and Stone]. Work with Griffin, Tioga and TiogaArtwork convince us that there is merit (and many hard problems) in trying to separate the basic "skeleton" of the figure from such issues as font, color and line weight. This separation provides a mechanism for ensuring consistancy across a number of related illustrations, gives a way to codify some esthetic decisions, such as the relationship between font, line weight and arrowheads, in a manner that can be used by the esthetically naive, and leads us to consider defining "meta-illustrations" that can be rendered for significantly different viewing environments simply by changing style. An example of this last point is the illustrations for a conference paper and the acompanying talk. The "style" for slides and the "style" for the procedings are very different, but the same illustration needs to appear in both. We can imagine designing a meta-illustration that is rendered with two different styles, a bold, multi-colored "slide style" and an elegant, monochrome "procedings style".
Gargoyle Status
The current Gargoyle implementation is principally the work of Eric Bier. The current system is available for experimentation by the hardy. Eric's goals are in the area of manipulating complex structured objects so this is the area that is most mature. The rest of this section discusses our progress on each of the four experiments.
Manipulating complex structured objects
Intelligent dragging
Lines, circles, gravity, gravity control, dragging. Siggraph paper in progress
Tioga-like selection
Start-extend selection for points. Control-shift for copy (no copy and delete—that's just a move).
Integration
No real integration yet except for its open architecture
Object implementation at the segment level. Needs object level "objects".
The Gargoyle implementation currently produces Interpress masters and will interpret Interpress to produce Gargoyle objects. Not idempotent because of outlined objects. Displays control points.
Graphical Style
No work has been done here yet.
Useful illustration
less random splines
surpress the appearance of joints in interpress files
simple file format
undo
priority order
color
text
performance
Next Steps
References