\begindata{text,538553884}
\textdsversion{12}
\template{help}
\define{global
}
\define{footnote

attr:[Flags OverBar Int Set]
attr:[FontSize PreviousFontSize Point -2]}
\chapter{Figure: a Drawing Editor

}
\section{What Figure is

}
\leftindent{Figure is a program for creating and viewing drawings.  A 
Figure document is a field on which you can place lines, circles, boxes, 
and other insets, and then move them around, reshape them, etc. (That is, 
Figure is the same sort of program as MacDraw, xfig, idraw, etc. For a 
painting program (like MacPaint, dxpaint, etc) in ATK, see 
\italic{\helptopic{raster}}.)

You can use Figure as a stand-alone program or you can include Figure 
insets in text documents or tables.   For more information on creating and 
editing Figure as an inset, see the  \italic{\helptopic{insets}}  help 
document.   \


}
\section{Starting Figure

}\leftindent{
\subsection{Starting Figure in its own window.}  To start Figure as a 
stand-alone program in its own window, type \



\leftindent{\bold{ez}  \italic{filename.\bold{fi}}}


at the command prompt, and press Enter.  Using the \bold{.}\italic{fi} 
extension automatically tells EZ to create a Figure document. }\



\leftindent{You can also type \



\leftindent{\bold{figure} \italic{filename.\bold{fi}}}


and press Enter to get a Figure window.}


\leftindent{If you type \bold{figure} without specifying a filename, the 
Figure program prompts you on the message line for a filename; you cannot 
begin editing until you provide one. The filename you enter should have a 
 \italic{.fi} extension.}


\leftindent{\subsection{Starting Figure as a inset.}  You can create a 
figure drawing as an inset in an EZ text document by moving to the desired 
location for the drawing, typing Esc-Tab and specifying "figure" at the 
"Data object to insert here:" prompt. \



To create a Figure drawing as an inset in a table, select a cell and then 
either type Esc-Tab or choose \bold{Imbed} from Table's \italic{Cells} menu 
card.  Type "figure" at the "Data object to enter here:" prompt.  (See the 
 \italic{\helptopic{insets} }and\italic{ \helptopic{table} }help documents 
for details about adding insets.)  \


}
\section{Browsing a Figure document}

\leftindent{
When you first open a Figure document, you are in "browse mode". In this 
mode you can scroll around in the document, and zoom in and out; however, 
you cannot add or change objects in it. \


If you are browsing a document you just created, it will be empty. Browsing 
an empty document, as you might expect, is less than exciting. See the 
section "Editing a Figure Document" if you want to start adding and 
changing things.


\subsection{Panning and scrolling}


In browse mode, you can "pan" around the document using the mouse. Press 
the left or right mouse button; panning crosshairs will appear at the mouse 
position. Then drag the mouse to another location, and release the mouse 
button. The document will shift position, as if you had grabbed it at the 
first location and slid it sideways to the second location.


You can also use the scroll bars to pan around the document. See the 
\italic{\helptopic{scrolling}} help document.


The "Pan to Origin" menu option, on the \italic{Figure} menu card, will 
return the document to its standard position in the window. This is how the 
document appears when it is loaded, and when it is printed out.


\subsection{Zooming}


The "Zoom In" and "Zoom Out" menu options, on the \italic{Figure} menu 
card, can be used to change the size that the document appears in the 
window. You can also type Escape-Z to zoom in, or Escape-z to zoom out. 
(That's an upper-case and lower-case Z, respectively.)


The "Normal Size" menu option, on the \italic{Figure} menu card, will 
return the document to its standard size. This is how the document appears 
when it is loaded, and when it is printed out.


\subsection{Editing insets}


Browse mode is also used for editing the contents of insets placed in the 
document. (This is not a particularly good place to put this function, but 
nowhere else is really any better.) See the section on "Insets" in the 
"Using Tools and Creating Objects" section of this document.


}
\section{Editing a Figure document: the Toolset Window}

\leftindent{
The first thing you must do if you want to edit a Figure document is to 
call up the toolset. To do this, select "Toolset" on the \italic{Figure} 
menu card. Lo! You now have a large window full of editing tools. Use the 
"Remove Toolset" menu option to get rid of it; the toolset will disappear 
and you will be returned to browse mode.


Let us take a closer look at the toolset. \smaller{\smaller{(Oh, let's!)}}


The toolset window is divided into several panels: Tools, Commands, Grid 
Snap, Shades, Colors, Line Width, Round Corner, and four Font panels.


\subsection{Tools}

This panel lists the various Figure editing tools, and displays which one 
is active. Notice that, since you are still in Browse mode, the "Browse" 
tool is highlighted. Click on different tools to activate them. \


See the "Using Tools and Creating Objects" section of this document to see 
what they do.


\subsection{Commands}

This panel shows various commands.


\leftindent{\paragraph{Select all}: Select every object in the document. 
(See "Select" in the "Using Tools and Creating Objects" section of this 
document.)


\paragraph{Zoom in, Zoom out, Normal size}: These are the same as the 
zooming menu options in the Figure menu cards. See "Zooming" in the 
previous section of this document.


\paragraph{Pan to origin}: This is the same as the "Pan to Origin" option 
in the Figure menu cards. See "Panning and Scrolling" in the previous 
section of this document.


\paragraph{Refresh}: Redraw the document window, in case it's gotten 
trashed somehow. You can also do this by hitting control-L in the document 
window.


\paragraph{Group selection}: Create a group containing all selected 
objects. See the "Working with Groups of Objects" section later in this 
document.


\paragraph{Move to front, move to back}: These move all selected objects to 
the front or back of the Figure document. \



\paragraph{Keep creating}: This command is used if you want to create 
several objects in a row without continually clicking on the object tool in 
the Tools panel. See the "Using Tools and Creating Objects" section of this 
document.

}
\subsection{Grid Snap}

This panel lets you constrain the mouse coordinates to points on a grid. 
This makes it easier to create precisely-sized objects.

The panel shows three choices for grid size, plus the "snap off" option (no 
mouse constraint.) Click on a measurement to select it. \


By default, the grid measurements are in inches (1/8 inch, 1/4 inch, 1/2 
inch.) You can also display measurements in centimeters and points. (A 
point is 1/72 inch, the size of a pixel on most computer screens.) Click on 
"inches", "cms", or "points" to select a measurement unit.

If you want a grid size other than 0.5, 0.25, or 0.125 inches, you can 
click on "<other>". Enter the desired grid size in the message line, in the 
currently selected unit of measurement. \



\subsection{Shades, Colors, Linewidths, Round Corners, Fonts}

These panels display object attributes. They all work about the same. Click 
on an attribute to select it. When you create an object, all the selected 
attributes apply to it. If you select a single object, its attributes 
appear in the toolset panels, and you can change the object's attributes by 
selecting new ones in the toolset. \


Many of the attribute panels have "<other>" options. You can click on these 
to enter new values.

All of the attribute panels have "<default>" options. If you are a novice 
user, or only want to create simple documents, don't worry about them; 
giving an object a <default> attribute will be the same as actually setting 
attribute to it's default value. For the more devious uses of this option, 
see the "Working with Groups of Objects" section of this document.


\leftindent{\paragraph{Shades}: This sets a gray-scale value for filling 
closed objects such as rectangles and polygons. "Clear" means to leave the 
object transparent; "white", "black", or the "grey" options mean to fill it 
with white, black, or a shade of grey. (Higher numbers mean darker shades.) 
The default shade is "clear".


\paragraph{Colors}: This sets the color of objects. It affects both the 
border and (if the object is filled) the interior. Colors are given by 
name; you can use the "<other>" option to enter new ones. (If you are 
running ATK under the X window system, X color names are used.) The default 
color is "black". \


If you have a monochrome monitor, colored objects will be displayed in 
shades of grey. Similarly, if you print colored objects to a black and 
white printer, they will come out in shades of grey.

If you set the shade of a filled object which is also colored, what 
happens? Well, the same thing as when you set the shade of an object whose 
color is black, only not in black. Say you have a red rectangle. Setting 
its shade to "black" will make it solid red. Setting the shade to "white" 
will make the interior white. Selecting one of the "grey" shades will make 
the interior a shade of red, somewhere between red and white. Got that? No? 
Go experiment.


\paragraph{Line widths}: This sets the width of lines, polylines, the 
borders of rectangles, etc. The widths are measured in points (1/72 inch, 
the size of a pixel.) (Of course, if you zoom in, a 1-point-wide line will 
look wider.) You can use the "<other>" option to enter new values. The 
default width is 0.

A line width of 0 means that the line is a hairline; it will be drawn as 
thin as possible, no matter how much you zoom in. On a high-resolution 
printer, this can be awfully thin.


\paragraph{Round corners}: This sets the radius of the round corners on 
rounded rectangles. The radii are measured in points (1/72 inch, the size 
of a pixel.) You can use the "<other>" option to enter new values. The 
default value is 10.


\paragraph{Text position}: This sets the justification of text objects -- 
left-justified, right-justified, or centered. The default is centered.


\paragraph{Fonts}: This panel is divided into four subpanels; three are 
font attribute panels, and the fourth displays a sample of the selected 
font.

\paragraph{Font size}: The size of the font, in points. You can use the 
"<other>" option to enter new values. The default is 12.

\paragraph{Font family}: The font family. You have the usual diverse ATK 
list of fonts: "Andy" (Times), "AndySans" (Helvetica), and "AndyType" 
(Courier). The default is "Andy".

\paragraph{Font styles}: The style of the font. Bold, italic, both, or 
plain (none of the above). The default is plain.

}}
\section{Selecting Objects}


\leftindent{Several of the tools in the "Tools" panel allow you to select 
objects; specifically, the Reshape, Add Points, and Delete Points tools. 
You select objects in order to copy them, cut them, update their 
attributes, or otherwise edit them. You can tell when objects are selected 
because they have little spots drawn on their edges and corners. These 
spots are called handles; they are used to reshape and resize the objects.


In Reshape, Add Points, or Delete Points, you select objects using these 
mouse actions:


If you click on an unselected object with the left button, that object will 
be selected (and all others will be unselected.) The click should be on the 
edge of the object, not in the interior. \


If you press the left button, drag the mouse, and then release the button, 
you will drag out a rectangle. Any objects that are entirely within the 
rectangle will be selected, and all others will be deselected.

Pressing the left button on an already-selected object will do something to 
the object, depending on what tool you are using.

If you click on an object with the right button, that object will be 
selected if it was not selected, or unselected if it was. Other objects are 
not affected. This allows you to select several objects by right-clicking 
on each one in turn.

If you press the right button, drag the mouse, and then release the button, 
you will drag out a rectangle. Any objects entirely within the rectangle 
will be selected if they were not selected, or unselected if they were.


If exactly one object is selected, its attributes (color, line width, etc.) 
will be highlighted in the toolset window. You can then change the 
attributes by clicking on new values.

If you select several objects, you can force them to all have the 
attributes shown in the toolset by selecting the "Apply to Selection" menu 
option in the toolset menu cards.

}
\section{Using Tools and Creating Objects

}\leftindent{
The "Tools" panel contains two types of tools: tools to modify objects or 
the document (Browse, Reshape, Add Points, Delete Points) and tools to 
create new objects (everything else.)


\subsection{Browse}: Selecting this tool switches back into Browse mode, as 
described in the "Browsing a Figure Document" section above. Clicking and 
dragging on the document in this mode will pan around.


\subsection{Reshape}: \


This tool lets you move and reshape objects. \


You select objects as described in the previous section.

If you press the left button on a handle of a selected object, you can drag 
that handle around the window. The object will change shape accordingly.

If you press the left button on a selected object, but not on one of its 
handles, you can drag \italic{all} selected objects around the window. The 
objects will not change shape, only move around.


\subsection{Add Points}:

This tool lets you add points to a line, polyline, polygon, or spline. \


You select objects as described in the previous section.

If you press the left button on a handle of a selected object, a new handle 
will be added at that location. You can drag the new handle around the 
screen, and then place it by releasing the mouse button.

If you press the left button on the edge of a selected object, between 
handles, a new handle will be added there. Drag and release the mouse 
button to place it.


\subsection{Delete Points}:

This tool lets you add points to a line, polyline, polygon, or spline. \


You select objects as described in the previous section.

If you press the left button on a handle of a selected object, that handle 
will be deleted. Two handles is the minimum for lines, polylines, polygons, 
and splines; if the object has only two handles left, you cannot delete 
either.


\subsection{\italic{The Object Creation Tools}}:

When you select one of these tools, the next click on the document begins 
to build it. Some objects, like rectangles, are built in one mouse action; 
others can take several mouse clicks. The created object will have all the 
attributes (color, line width, etc) that are selected in the toolset.

In general, when you finish creating an object, the object is selected and 
you are immediately switched into Reshape mode, so that you can move it 
around or do whatever to it. \


This makes it somewhat annoying to create several objects in a row, since 
you keep getting kicked out of object-creation mode. If you want to keep 
creating objects, select an object-creation tool and click on the "Keep 
creating" command in the toolset "Commands" panel. You will then stay in 
that tool until you select a different one.

This is all somewhat arbitrary, especially since you are \italic{not} 
kicked back to Reshape mode if the object you are creating fails or is 
cancelled for some reason. So, in general, you should keep an eye on the 
toolset, and pay attention to which mode you're in. Otherwise you may find 
yourself doing the wrong thing.


\subsection{Rectangle}:

To build a rectangle, left-click where you want one corner to be, drag the 
mouse to the other corner, and release the button. Pop -- a rectangle. (If 
you click and release the mouse button in one place, the program will 
complain about zero-size rectangles, and not create anything.)

A rectangle has nine handles: four at the corners, four on the edges, and 
one in the center. Dragging them with the "Reshape" tool does the obvious 
thing to the rectangle. (The one in the center moves the whole rectangle.)

The "Add Points" and "Delete Points" tools do not affect rectangles (or 
ellipses, or rounded rectangles, or text, or insets).

Rectangles use the color, shade, and line width attributes.


\subsection{Ellipse}:

Ellipses are built the same way rectangles are, and have the same nine 
handles. They also use the color, shade, and line width attributes.


\subsection{Round Rect}:

Rounded rectangles are built the same way rectangles are, and have the same 
nine handles. They use the round-corner, color, shade, and line width 
attributes.


\subsection{Line}:

To build a line, left-click where you want one end to be, drag the mouse to 
the other end, and release the button. If you click and release the mouse 
button in one place, the program will assume that is one endpoint, and ask 
you to click again elsewhere for the other endpoint.

A line has two handles, one at each end. You can add more using the "Add 
Points" tool; the line then becomes a polyline.

Lines use the color and line width attributes.


\subsection{Polyline}:

To build a polyline, left-click at where you want one endpoint to be. You 
then left-click at each successive point. When you press the right button 
or type control-G, the object is finished. (Finishing the object does not 
add a final point, even if you do it by right-clicking. The final endpoint 
of the polyline is the last place you released the left mouse button.)

A polyline has one handle at each endpoint and internal point. You can drag 
them around independently with the "Reshape" tool. You can add more points 
with the "Add Points" tool, or delete them with the "Delete Points" tool. 
If you delete points until there are only two left, the polyline becomes a 
line. \


A polyline also has four extra handles, at the four corners of a rectangle 
enclosing the polyline. These handles are shown as open spots, rather than 
solid ones. If you click on one of these with the "Reshape" tool, you can 
drag it around, scaling or reversing the entire polyline proportionally. If 
you don't understand what the heck I mean, try it.

Polylines use the color and line width attributes.


\subsection{Polygon}:

Polygons are built the same way polylines are; the only difference is that 
they are automatically closed (the first and last points are joined) and 
they can be filled in by setting the shade attribute. Polygons have the 
same handles as polylines do, and are affected by tools the same way. They 
use the color, shade, and line width attributes.


\subsection{Regular N-gon}:

This tool allows you to create regular polygons more easily. Left-click 
where you want the center to be, drag to where you want a vertex, and 
release the mouse button. By default, this creates hexagons, but you can 
change the shape by clicking a second time on the "Regular N-gon" tool and 
typing a number at the prompt.

Note that once the polygon is created, it's just like any other polygon; if 
you go to the "Reshape" tool and drag a vertex, only that vertex will move.


\subsection{Spline}:

Splines are just like polylines, except that they curve smoothly from point 
to point. They use the color and line width attributes.


\subsection{Closed Spline}:

Closed splines are just like polygons, except that they curve smoothly. To 
put it another way, they are just like splines, except that they are 
automatically closed and can be filled 
in.\footnote{\
\begindata{fnote,538477312}
\textdsversion{12}
To put it another way, they are just like woolly mammoths, except that 
they're not.\
\enddata{fnote,538477312}
\view{fnotev,538477312,2,0,0}} They use the color, shade, and line width 
attributes.


\subsection{Text}:

To build a text object, click where you want the text to be centered. Then 
start typing. You can use the basic Emacs cursor movement keys -- delete, 
arrow keys, ctrl-A, ctrl-E, ctrl-B, ctrl-F, ctrl-D, ctrl-K, ctrl-T. Hitting 
return will start a new line in the text object. To complete the text 
object, hit escape-return or ctrl-G, or right-click, or switch to a 
different tool.

Text objects have four handles, one at each corner. They use the color 
attribute, the text position attribute, and the three font attributes 
(family, size, and style.)


\subsection{Inset}:

To build an inset, left-click where you want one corner to be, drag the 
mouse to the other corner, and release the button. Then enter the name of 
an inset at the prompt in the message line.

Insets have the same nine handles as rectangles. They are not affected by 
any attributes (they are always opaque, and control their own colors and 
fonts. See the \italic{\helptopic{insets}} help file, and the help files on 
that various inset types.)

To edit an inset, you must select the "Browse" tool. In browse mode, if you 
click on an inset, it will receive the input focus; you can then use its 
keyboard and menu commands, as described in its help file. Click outside 
the inset or select a different toolset tool to go back to editing the main 
Figure document.

If you click on the inset with the "Reshape" tool, you can drag it around 
or reshape it, but not edit it. The "Add Points" and "Delete Points" tools 
will do nothing.


}\section{Cutting, Copying, Pasting

}
\leftindent{This works about the same as copying and pasting in any other 
ATK application. To copy, select an object (or a bunch of objects) and 
select "Copy" on the front menu card, or type Escape-w. To cut, select 
"Cut" or type ctrl-w. To paste back, select "Paste" or type ctrl-y. You can 
paste Figure objects back into the Figure document, or into another Figure 
document; you can also paste them into a text or table window, in which 
case they'll appear inside a Figure inset.


You cannot paste other kinds of data (text, rasters, etc) directly into a 
Figure document. First create an inset of the appropriate type, switch into 
Browse mode, click on the inset, and paste the data into it.


If you select an inset, you can also use the "Copy Inset Contents" menu 
option. This copies the contents of the inset, but not the Figure inset 
object itself. What difference does this make? Well, say you have a raster 
inset in your Figure document, and you want to copy the raster out and 
paste it into a text file. If you select the inset and "Copy" and "Paste" 
that, you'll get a Figure inset containing a raster inset, rather than a 
raster inset alone. If  you use "Copy Inset Contents", it'll do what you 
want.

}
\section{Working with Groups of Objects

}\leftindent{
Figure allows you to create several objects and then link them into a 
group, which can then be moved around or copied as a unit. To do this, 
create the objects, select them all using one of the selection tools, and 
click on the "Group Selection" command. The document will look nearly the 
same, but the objects will no longer be individually selected; instead, an 
invisible group surrounding all of them will be selected, with a handle 
visible at each corner.


A group acts like a single object. You can select or deselect it by 
clicking on any object inside it; the whole group will be selected or 
deselected. If selected, you can drag it around with the "Reshape" tool. 
(Click inside the group to do this; dragging the handles will have no 
effect.)


The objects in a group are always stacked right next to each other. You 
cannot have an ungrouped object which is in front of some objects in a 
particular group but behind other objects in that group.


If you want, you can put groups within other groups. Whee!


\subsection{Setting the attributes of objects in groups}


You can set the attributes (color, line width, etc.) of a group, but this 
will not normally affect the objects inside it. Since you cannot select 
individual objects in a group, there is no simple way to set their 
attributes, so you should set all the objects' attributes before you group 
them together.

However, there is a way to set up a group so that all of its objects can be 
altered together. This involves setting various object attributes to 
"<default>". For ungrouped objects, "<default>" means to use the usual 
default value for that attribute; but for an object in a group, "<default>" 
means to use the \italic{group}'s attribute value. \


An example: create several objects, and set the line width attribute of 
each one to "<default>". Then group them together. The group will then be 
selected, so try selecting various line widths in the toolset; the objects 
will all inherit the line width you set.


Of course, you need not set every object in a group to "<default>". You can 
set some objects to inherit line width from the group, and others to have 
specific line widths. Any attributes can be set to "<default>", including 
the font attributes. \



You can also set the group itself to have a "<default>" attribute. You can 
then nest that group in another group along with other groups and objects. 
This lets you set up complicated hierarchies of groups and objects, where 
whole sections of the document can be easily changed to the attributes you 
desire. In fact, this whole inheritance thing is amazingly powerful and 
complicated, especially considering that nobody will ever use it all that 
much.


}\section{Figure Menu Commands

}
\leftindent{\subsection{Zoom In, Zoom Out, Normal Size, Pan to Origin}: See 
the section on "Browsing a Figure document".


\subsection{Toolset, Remove Toolset}: See the section on "Editing a Figure 
document".


\subsection{Expert Mode}: See the "Expert Mode" section.


\subsection{Set Print Scale}:

This allows you to determine how large the Figure document will be when 
printed. The default is 1.000 (print out at the same size the document 
appears on the screen.) \


A print scale of 2.000 would cause the document to be twice as large on 
paper as on the screen, 0.500 would print it out at half-size, and so 
forth. \


You can specify different width and height scale factors, if you want.

The print scale only affects the size of printed output and PostScript file 
output. It never affects what you see on the screen.


\subsection{Write as PostScript}:

This option writes the Figure document out to a PostScript file. \



\subsection{Show / Hide Print Area}

This option shows the position that the page boundaries will be when the 
document is printed. Anything outside these boundaries will not be visible. 
If your document is too large, you can use the "Set Print Scale" menu 
option to set a smaller print scale; the page boundaries will then be 
larger in comparison to your document.


}
\section{Toolset Menu Commands

}\leftindent{
\subsection{Apply to Selection}:

This applies all of the attributes shown in the toolset to every selected 
object.


\subsection{Smooth / Unsmooth}:

This option turns any selected polygons into closed splines, and polylines 
into splines, and vice versa. The control points and attributes of the 
objects stay the same; they just go from straight lines to curves, or from 
curves to lines.


\subsection{Cancel Object}:

This finishes or cancels any object currently being built. In general, the 
object is finished and left in the document if there is enough of it there. 
If there isn't (say, a line with only one endpoint, or a text object with 
no text in it) it is aborted and removed.


\subsection{Quit}:

This removes the toolset and returns Figure to browse mode, just like the 
"Remove Toolset" menu option in the document window.


}\section{Expert Mode}


\leftindent{This section is about the complicated bits. (Yes, more 
complicated than the attribute inheritance tree.) The things described 
herein are sufficiently complicated to confuse the casual user. Therefore, 
they are not accessible at all until you select the "Expert Mode" menu 
option on the "Figure" menu card. If you don't understand expert mode, 
don't use it. If you want to experiment with expert mode, don't experiment 
on the Computer Architecture diagram you spent four hours creating. \



If you do understand these tools, you can set a preference so that Figure 
always runs in expert mode. See the "Preferences" section.


\subsection{The Focus Group}


The first neat thing you can do in expert mode is to play around with the 
contents of groups without breaking them apart. The idea is that one group 
in the document is the "focus" group. You can select objects in the focus 
group, edit them, add new objects to the focus group, etc; but you cannot 
do anything to objects not in the focus group.

Most of the time, the focus "group" is the entire document. (This is why 
you normally can't select or edit objects nested inside groups; they're not 
in the focus.)

However, in expert mode, you can change that. You do this with the arrow 
keys. When the focus is on the whole document, it is not shown; when the 
focus is on some group, that group is highlighted with a rectangular 
outline.


\paragraph{Down-arrow}: shift the focus group "down"; one group in the 
current focus group will be highlighted. \


\paragraph{Left and right-arrow}: shift the focus "sideways"; another group 
in the same group as the current focus will be highlighted. \


\paragraph{Up-arrow}: move the focus "up", to the group containing the 
current focus. If you hit up-arrow enough, the focus will return to the 
whole document.


When a group has the focus, many Figure commands behave differently:


Any objects created or pasted will be placed in the focus group.

You can only select objects in the focus group.

If you select several objects and group them, the new group will be placed 
in the focus group.

If you select objects and use the "Move to front/back" commands, they will 
move to the front or back of the focus group, not the entire document.


\subsection{Deep Selection}


Remember what you were just told, that there was no way to select objects 
not in the current focus group? It's a lie.

In expert mode, if you click on the "Reshape" tool when you're already in 
reshape mode, you'll see a message "Deep selection mode on." In this mode, 
you can select an object in a group without changing the focus to that 
group. (The object still has to be nested somewhere in the focus group -- 
you can't select something above the current focus -- but it can be nested 
under as many groups as you like.)

This enables you to do spot modifications to deeply-buried objects without 
hunting around the group tree. It also allows you to select several objects 
that are not all in the same group.


\subsection{Anchors and Resizing}


When you are in expert mode, several new tools and commands appear in the 
toolset, dealing with "anchors" and "resizing". They are described in the 
next section.


\subsection{Warnings}:


You can cause some strange effects with deep selection. Avoid dragging 
objects around if they're in different groups. Especially avoid dragging a 
group around if some of its contents are also selected; the objects will 
drift. Don't use the "Move to front" or "Move to back" commands when you 
have objects from other groups selected; they'll get pulled from wherever 
they are and stuffed into the focus group. "Group selection" can behave 
oddly too.


Also, it's quite easy to delete all the objects from a group, leaving an 
empty group. This can be confusing, because when the focus is on an empty 
group, the focus highlight is invisible. However, the arrow keys will still 
work normally. When you move the focus to an empty group, a warning will 
appear in the message line. \


You can create new objects in an empty group, but that's about all you can 
do with it -- you can't select it or delete it, unless you put something in 
it first. \


Since it's easy to overlook empty groups, Figure automatically filters them 
out when saving to a file or copying or cutting a selection. The easiest 
way to get rid of all empty groups in a document is to save it, quit, and 
load it back up.

}
\section{Anchors and Automatic Resizing}

\leftindent{
Figure provides a facility for making documents that will automatically 
adjust themselves to the window size. This is particularly helpful if the 
document is intended to be a graphical interface.

These tools are only available under expert mode. Be careful; the tools in 
this section can distort your document suddenly and without warning, if you 
don't understand what they're doing.


\subsection{An Introduction to Anchors}


Automatic resizing is done by attaching anchors to the various handles of 
the objects in your document. Whenever a group is moved or resized, the 
anchors on the objects in it are dragged around; this drags the object 
handles, and so the object changes shape. The anchors always move 
proportionally with the group. That is, if an anchor is created in the 
center of a group, it will stay in the center no matter how the group is 
scaled; if an anchor is created one-third of the way down the left edge, it 
will always be one-third of the way down that edge.


What makes this complicated is that a handle does not have to be right on 
its anchor. You can, for example, have a handle which is one inch to the 
left of its anchor; the handle will always stay one inch to the left of the 
anchor, no matter how the anchor moves. \



When an object with anchors is selected, the anchors are visible as large 
squares connected to their handles with straight lines. (If an anchor is 
right underneath its handle, the large square will surround the handle 
spot.) If it makes things easier to visualize, think of that straight line 
as rigid and unrotating; when the group resizes, that line will remain the 
same length and direction. The anchor end (the large square) will be moved 
to the proportionally correct position in the group; the handle will be 
dragged wherever it winds up, given the length and direction of the rod.


Note that it is quite legal to have anchors or handles (or both) outside 
the boundaries of a group. If an anchor is positioned above the top edge of 
a group by a distance of half the group's height, it will stay at that 
proportional position; and if its handle is a half-inch above that, that 
will stay fixed also.


Anchors cannot force an object to resize if it doesn't want to. For 
example, the minimum size of a text object is determined by the font and 
the text in it; it cannot be resized smaller than this. A non-resizable 
group (see below) cannot be resized at all. The nine handles of a rectangle 
or ellipse will always form a rectangle or square, even if anchors are 
trying to pull them in other directions. \



So what happens if you set anchors that try to do impossible things, or set 
too many anchors on an object, so that they work against each other? Well, 
it's hard to say. All the anchors will try to move; either some of them 
will win, or they'll come to some compromise. It probably won't be the 
compromise you want, though. \


Moral: don't use too many anchors. A non-resizable object should only have 
one; a resizable object should have four in the centers of the edges, or 
two on opposite corners. Polylines or splines can have one on each internal 
handle, since those can move freely, but if you try to use the corner 
handles as well, you may run into trouble. Experiment.


\subsection{Non-Resizable Groups and Resizable Groups}


How is it that you can drag groups around in a normal document without 
worrying about expert mode or what's anchored where? Well, by default all 
of this anchor stuff is ignored. Every group (including the root group) is 
either resizable or non-resizable; by default, non-resizable. This allows 
the document to behave sensibly for non-experts, while still being flexible 
for experts. The two kinds of groups behave very differently.


\leftindent{\paragraph{Non-Resizable Groups:}


The group is always exactly big enough to surround all its contents. If you 
add, delete or move an object, the group's size adjusts accordingly.

If you grab and drag a handle of the group, the whole group moves; it does 
not change size.

When you move the group, all objects within it are dragged that distance; 
their sizes and relative positions are not changed.

The anchors of objects in the group are ignored.

If the focus group is non-resizable, it is indicated by a highlighted 
rectangle surrounding it (unless the root group is the focus, in which case 
no highlight is drawn.)


\paragraph{Resizable Groups:}


The group's size is constant, unless you resize it yourself or create 
anchors to do it. If you add or move an object, it may be partially or 
entirely outside the group boundaries. If you delete or move an object, the 
group boundaries may be left sticking out.

If you grab and drag a handle of the group, the group changes size, in the 
same way that a rectangle object is.

When the group is moved or resized, the objects in it respond according to 
their anchors. An object with \italic{no} anchors will not move or change 
at all! This can be disconcerting. All the objects in a resizable group 
should have at least one anchor, or the group will go winging off without 
them.

If the root group is resizable, it will always be exactly the size of the 
Figure window (or Figure inset, if it's an inset in a larger document.)

If the focus group is resizable, the focus highlight is drawn to surround 
the group boundaries and all the group contents. In addition, the group 
handles are drawn; this indicates where the group boundaries are. (This 
makes the focus group look like it is selected, even though it is not. Just 
remember that the focus group's handles are visible when it is resizable, 
and invisible when it is not.)

}
Note that it is quite possible to have resizable and non-resizable groups 
in the same document. If you have a resizable root group containing a 
non-resizable subgroup, for example, the subgroup will always be the same 
size, but it will be dragged around by its anchors if the window is 
resized. Since the subgroup is non-resizable, when it is dragged around, 
all its contents will be too.


\subsection{New Commands}


\paragraph{Resizing on}: This makes the focus group resizable. (The focus 
group, \italic{not} a selected group -- this is an easy mistake to make.) 
The group handles will become visible, to indicate that it is resizable. \


If you do this when the root group is the focus -- that is, when the focus 
rectangle is not visible -- the root group will immediately resize to fit 
the window or inset. (The group handles will be visible at the corners and 
edges of the window.) If any objects in the root group have anchors, they 
will resize also. Therefore, if you are laying out objects in the root 
group, you should make it resizable before you start creating anchors.


\paragraph{Resizing off}: This makes the focus group non-resizable. The 
group handles will become invisible again.

Again, if you make the root group non-resizable, it will shrink down so 
that it surrounds the objects inside it. However, because the group has 
become non-resizable, its contents will not resize, even if they have 
anchors. \



\paragraph{Clear anchors}: All selected objects will have all their anchors 
removed.


\paragraph{Standard anchors}: All selected objects will have anchors set, 
according to a rather simplistic standard. The rule is that each part of 
each object will be anchored to be a constant distance from the nearest 
edge of a group. This means that a small object near one edge of the group 
will remain the same size and the same distance from that edge. A larger 
object that straddles the center of a group will change size when the group 
does, since its opposite sides will be remaining a constant distance from 
the opposite sides of the group.


\paragraph{Propor. anchors}: All selected objects will have anchors set 
directly under their handles. This means that they will resize 
proportionally with the group, as best they can.


\subsection{New Tools}


\paragraph{Set Anchors}: This tool lets you set anchors yourself. You 
select and deselect objects as described in the section on "Selecting 
Objects". To set an anchor, move the mouse to any handle of a selected 
object and press the left mouse button. Then drag the mouse to the desired 
location, and release the button to place the anchor. If you just press and 
release the button on a handle, the anchor will be set underneath the 
handle.

You can also move an already-set anchor, by clicking and dragging the large 
square that marks the anchor end.

In this tool (unlike the Reshape, Add Points, and Delete Points tools) you 
can resize the focus group to test the effects of your anchors. To do this, 
left-click and drag the handles of the focus group (which will be visible 
if the focus group is resizable.) You may not resize the root group this 
way, since the root group is always fills the window (if it's resizable at 
all.) To test resizing of the root group, resize the window using your 
standard window manager tools.


\paragraph{Delete Anchors}: This tools lets you unset anchors. You select 
and deselect objects as usual. If you left-click on a handle of a selected 
object, or on the end of the anchor attached to that handle, the anchor 
will disappear.

This tool allows you to resize the root group, like the Set Anchors tool.



}\section{Converting Zip Documents to Figure

}\leftindent{
Figure includes a command to read in a Zip document, converting it to 
Figure format as cleanly as possible. Since Zip is rarely used, this 
command is not normally bound to a keystroke or menu option.


To make it available, add the following line to your .atkinit:

\typewriter{\smaller{addmenu figview-read-zip-file "File,Read Zip File~18"}}


You can also run the procedure directly if you are using the \italic{metax} 
package (see the help file on \italic{\helptopic{metax}}.) To do this, type 
Esc-x, and then enter \typewriter{\smaller{figview-read-zip-file}} at the 
"Function:" prompt.


When you run the conversion procedure, you will be prompted for the name of 
a file to convert. (It must be a straight Zip file; text or table documents 
with Zip insets will not be converted.) When that has been entered, you 
will be prompted for a ratio to scale the Zip document by. This allows you 
to choose an appropriate size, since Zip documents resize automatically and 
have no default scale.


The Zip file will then be read in, and appropriate Figure objects will be 
created in the document. (If you are in expert mode, and the focus is on a 
group, the objects read in will be put in that group.) All the objects that 
are read in will appear selected, so that you may group them all or drag 
them with the "Reshape" tool.


\subsection{Warnings:}

Zip symbols will be ignored in the conversion process.

Zip arcs will become complete circles or ellipses.

Shades of grey will not look exactly the same after conversion.

Rounded rectangles may have incorrect corner arc radii. You should go back 
and adjust them with the toolset.

Zip freehand curves will be converted into polylines with lots of segments. 
It may be more efficient to delete most of the points, and then convert it 
to a spline.

Text objects will lose any vertical positioning (whether the text is 
aligned by top, baseline, center, or bottom) when converted.

Text objects and insets will sometimes be inappropriate sizes. This can be 
adjusted by deleting the objects and converting the Zip document again with 
a different scale ratio.

All objects will appear, regardless of their Zip zoom level.


}\section{Preferences

}\leftindent{
\bold{*.FigureExpertMode: \italic{no}}


If this preference is set to \italic{yes}, Figure will be in expert mode as 
soon as you run it. This is not recommended until you understand all the 
functionality of expert mode.


\bold{*.FigureMatteColor: \italic{white}}


This preference controls the background color of Figure documents. The 
default \


is white, even if your *.BackgroundColor is something else. 
FigureMatteColor \


should only be set to white or a light color, since A) most Figure drawings 

contain black objects, and B) when you print it out, it's going to be on 
white paper. \



\bold{*.FigureScrollClass: \italic{<default is taken from the *.ScrollClass 
preference>}}


This determines what widget is used to scroll your Figure documents. The 
choices currently available are: \


\indent{scroll: the standard scrollbars.

panner: a panner box.

scpanner: both scrollbars and panner.

oscroll: old-style scrollbars.

}See the \helptopic{scrolling}, \helptopic{oscroll}, and \helptopic{panner} 
help files for more information.\indent{

}
}\section{Program Author}

\leftindent{
Andrew Plotkin, ap1i+@andrew.cmu.edu.}


\section{Recent changes to Figure

}\leftindent{
Recently, Figure was written.

Originally, it was called Vel, but we don't talk about that any more. \


}
\section{Related tools}  \



Select (highlight) one of the italicized names and choose "Show Help on 
Selected Word" from the pop-up menu to see the help file for:

\leftindent{
\helptopic{\italic{Andrew}}	(the tour)\helptopic{\italic{

insets

scrolling

raster

}}}

\begindata{bp,538534656}
\enddata{bp,538534656}
\view{bpv,538534656,3,0,0}
Copyright 1992 Carnegie Mellon University and IBM.  All rights reserved.

\smaller{\smaller{$Disclaimer: 

Permission to use, copy, modify, and distribute this software and its 

documentation for any purpose is hereby granted without fee, 

provided that the above copyright notice appear in all copies and that 

both that copyright notice, this permission notice, and the following 

disclaimer appear in supporting documentation, and that the names of 

IBM, Carnegie Mellon University, and other copyright holders, not be 

used in advertising or publicity pertaining to distribution of the software 

without specific, written prior permission.



IBM, CARNEGIE MELLON UNIVERSITY, AND THE OTHER COPYRIGHT HOLDERS 

DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 

ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO EVENT 

SHALL IBM, CARNEGIE MELLON UNIVERSITY, OR ANY OTHER COPYRIGHT HOLDER 

BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 

DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 

WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS 

ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 

OF THIS SOFTWARE.

 $

}}\enddata{text,538553884}
