Artwork.tioga Picture making systems Illustrator: related to drawing; making shapes Compostion: related to formating; combining shapes to make pages Artwork operations TiogaArtwork Tioga artwork is a tree structure of nodes. Each level in the tree has a transformation associated with it. The leaves of the tree are: paths, images and arbitrary JaM programs. Each node has a format which encodes the style. The style properties for paths are: filled, outlined or both linewidth line color area color Text is represented as a regular Tioga node. However, the style properties for text have been extended to include: centered, left-flush, right-flush with respect to a point top-aligned, base-line-aligned, or bottom-aligned rotated You can change the style, change the nesting, or edit the text. You can include arbitrary pictures through the JaM program facility. (Note that JaM programs can call Cedar programs. ie. the parametric mapping stuff). Graphical Style I want to use the Tioga mechanism, so Artwork nodes will have format names. Besides the existing line parameters we could consider: arrowheads dash patterns Interpress end conditions general mapped patterns ... Besides the existing area parameters we could consider: shaded colors computed textures sampled textures ... The existing text styles barely work. Besides making them more robust we could consider: condensed expanded backslant oblique circular? curves? ... There are currently no image styles. We could consider: screens tints (duotones) Miscellaneous drop shadows offset shadows Composition Composition operations are Move, Copy, Delete, Crop, Scale. These simple names hide a number of more complicated issues. Delete: Selection, objects and instances. Move and Copy: Positioning, coordinate systems, semantics such as "center, left edge, etc." Crop: Clipping region. Rectangles only? How big is the graphics "frame". If you change the frame size, what moves? Scale: Optical or geometric (ie, do the line width scale). What moves? Artwork structure Tioga Nodes and Items A place in a document where pictures occure is called a graphics frame. The first node in the frame is a box item node with a $Graphics ItemClass. Such and item node has the following structure: item.next --Ref to next node at this level. Probably the following paragraph item.date --frame related data item.contents --Ref to objects in the frame. Usually basic nodes. May be items or branches. Item Data The data for a graphics frame includes: frame size, clipping region (if other than frame size). Other global information. Contents The contents field of a graphics frame points to a tree of nodes. Basic nodes are graphics objects such as paths, images, and clipping regions. Basic nodes may be nested. Basic nodes have the following structure: basic.next --Ref to next node at this level. Another object in the frame basic.contents --Ref to "children" of this basic node, if any basic.data --actual representation for the graphics The basic.data for all objects includes a bounding box and a transformation. All objects are defined relative to their bounding box. I can think of the following basic classes. This will undoubtedly expand as I work on this project Simple objects: paths, images, and clipping regions. Data is primitive types, contents is NIL. Symbols: nested objects. Data is list of instances, contents is objects in the symbol Symbol instances: Contents is NIL. Data is a ref to a symbol The contents of a graphics frame may include text items. I assume that text may include branches, so I should deal with that as well. Artwork representation To solve the problem of laying out arbitrary graphics in a tioga document, an interpreted text representation is probably the way to go. JaMGraphics is one such representation, and I'm inclined to start with it. It has all the advantages mentioned above in the TiogaArtwork section. I would use GraphicsLists as accelerators for the display of interpreted objects. A GraphicsList is a list of encoded calls to Graphics. It is optimised for fast refresh. It is now easy to generate a GraphicsList from JaMGraphics. Interpress is another interpreted representation. It can be either text or encoded. An Interpress master is a sequence of bodies. A body is a list of operators. All the style properties are bound. Since there are operators for linear transformations in Interpress, it would be possible to use the Artwork structure to provide an interactive "InterpressEdit" facility. There is no clipping defined in the current version of Interpress, so cropping is a problem. It may be possible to break out the common operators, such as MASKSTROKE, MASKFILL and SHOW, as objects so it would be possible to manipulate pieces of the picture. Interpress also has a symbol facility. Illustrators Path editor SIL Star Graphics Griffin