IPAD  Copyright (C) 1997  Sergio Masci, all rights reserved.

Email: ipad@titan.demon.co.uk

Primary distribution site for IPAD:
       http://www.demon.co.uk/titan


TERMS AND CONDITIONS
====================

THE COPYRIGHT HOLDERS AND THEIR AGENTS PROVIDE THE PROGRAM "AS IS"
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
CORRECTION.

IN NO EVENT WILL ANY COPYRIGHT HOLDER OR THEIR AGENTS BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.


USING MENUS
===========

Options within the menu can be selected in one of three ways:

	If the right mouse button is currently down, releasing it
	will select the option.

	Pressing either the left or right mouse button will select
	the option.

	Moving the mouse over the sub-menu indicator (an inset
	arrow on the right of the menu option) will select the
	option.

The menu will become deactivated when the mouse is moved off the menu
or a non-sub-menu option is selected.

The menu can be moved around on the screen by moving the mouse to its
title, pressing the left mouse button, and moving the mouse. The menu
will follow the mouse. The menu can be pinned down so that it does not
disappear when you move the mouse off it. This is done by moving the
mouse to the button on the left of the title and pressing the left
mouse button.


ACTIVATING THE DRAW WINDOW MENU
===============================

The draw window menu is activated by moving the mouse to the draw
window and pressing the right mouse button. All options within the
draw window menu pertain only to that draw window. If the draw window
menu is deactivated (disappears) while the right mouse button is down,
it will not be reactivated until the right mouse button is first
released and then pressed again. Moving the mouse around in the draw
window with the right mouse button down will cause an object menu to
be activated if the mouse comes close to an object drawn in the draw
window such as a line or circle.


ACTIVATING OBJECT MENUS
=======================

An object menu is activated by moving the mouse on or near to an object
(drawn in the draw window such as a line or circle) with the right mouse
button pressed, or pressing the right mouse button when the mouse is on
or near the object. An object menu for that object will appear and
become active. If the mouse is moved off the object menu while the right
mouse button is pressed, then the object menu of any other object which
the mouse comes into contact with will appear and become active.


CONFIRMING AN OBJECT EDIT OPERATION
===================================

All object edit operations must be confirmed or they will be undone
immediately. This is done by pressing and releasing the right mouse
button while the left mouse button is held down.

If the left mouse button is released before the edit is confirmed the
edit cannot be confirmed without first being re-done.

This greatly reduces the amount of time wasted undoing mistakes.


GRABBING AN OBJECT
==================

An object is grabbed by pressing the left mouse button while the mouse
is on the object or moving the mouse to the object while the left mouse
button is down and no other object is currently grabbed. To grab two or
more objects at the same time, the mouse should be brought to a point
where the objects are very close to each other (or meet) and grabbing at
that point.

Grabbing one object can lead to several objects being grabbed at the
same time, depending on where they touch. For example, if four lines are
connected at their ends such that they form a square, and one of the
lines is grabbed at its middle, moving the mouse will cause that line to
move, and the connected lines to follow its ends, thus preserving the
relationship between the lines.

Multiple objects can be grabbed very easily while in edit mode if the
mouse has a middle button. They can be grouped, grabbed then ungroup
(see grouping)


SELECTING AN OBJECT
===================

To select an object either double click on the object with the left
mouse button (i.e. press and release twice in quick succession), or
activate that objects menu and select the 'select object' option. The
object will be redrawn using a dashed outline.


LINES
=====

If a line is not selected it is aware of being grabbed at different
positions along its length. At either end, in the middle or off middle
(between the middle and the end). If it is grabbed at either of its
ends the other end will stay where it is and the grabbed end will move
to follow the mouse. If it is grabbed at its middle the whole line
will move to follow the mouse. The lines length and its angle to the
horizontal will not change. If the line is grabbed at any other point
(off middle) then both ends of the line will remain anchored to their
original positions and the line will behave like a rubber band (the
line will break into two parts connected at the mouse)

If the line is selected, grabbing it at any point will cause the whole
line to move to follow the mouse (exactly as if it had been grabbed in
the middle).


RECTANGLES
==========

A rectangle is aware of being grabbed from its inside or its outside.

A rectangle is resized if grabbed from the inside, or moved if grabbed
from the outside. When being moved, the rectangles size and shape will
remain constant while the whole rectangle will move to follow the
mouse.

It is possible to resize a rectangle in either one or two planes.

Grabbing the rectangle at one of its corners from the inside, causes
the rectangle to be resized in both the horizontal and vertical planes.

Grabbing the rectangle at the centre of one of its vertical lines from
the inside, allows the rectangle to be resized only in the horizontal
plane. 

Grabbing the rectangle at the centre of one of its horizontal lines
from the inside, allows the rectangle to be resized only in the
vertical plane. 

To grab the rectangle from the inside, approach the perimeter from
inside the rectangle. To grab it from the outside, approach the
perimeter from outside the rectangle.


CIRCLES
=======

A circle is aware of being grabbed from its inside or its outside.

A circle is resized if grabbed from the inside, or moved if grabbed
from the outside. When being resized, the circles centre will remain
put, while it changes size to keep its circumference under the mouse.
When being moved, the circles size will remain constant while the
whole circle will move to follow the mouse.

To grab the circle from the inside, approach the circumference from
inside the circle. To grab it from the outside, approach the
circumference from outside the circle.


ELLIPSES
========

An ellipse is aware of being grabbed from its inside or its outside.

An ellipse is resized if grabbed from the inside, or moved if grabbed
from the outside. When being resized, the ellipses centre will remain
put, while it changes size and aspect ratio to follow the mouse. When
being moved, the ellipses size and aspect ratio will remain constant
while the whole ellipse will move to follow the mouse.

To grab the ellipse from the inside, approach the perimeter from inside
the ellipse. To grab it from the outside, approach the perimeter from
outside the ellipse.


CURVES
======

Curves can be moved by moving the mouse to the curve, pressing the
left mouse button and then continuing to move the mouse with the left
mouse button still pressed. Releasing the left mouse button will drop
the curve and it will snap back to its original position. To make the
curve stay in its new position, the new position must be confirmed.
A curve can be moved in this way irrespective of whether or not its
control lines are currently visible (see below).

The shape of a curve is normally modified via its control vectors
(represented by two lines). These control 'lines' are normally not
visible. To access them, select the curve (see selecting an object).
The curve will be redrawn using a dashed outline and its control lines
will also be drawn using dashed outlines. To get rid of the control
lines, deselect the curve (see selecting an object), the control lines
will disappear and the curve will be redrawn with a solid outline.

The control lines can be grabbed at either end or in the middle. If
grabbed at one of the ends, the other end will remain where it is and
the end that is grabbed will follow the mouse. The line and its angle
to the horizontal are free to grow and shrink as the end follows the
mouse.

If the control line is grabbed at its middle, then the whole line will
follow the mouse. It or its angle to the horizontal will not change as
it follows the mouse.

It is possible to grab both lines at one end together.

Moving the mouse when a control line or control line end is
attached to the mouse will change the appearance of the curve.

For the changes to a curve (via its control lines) to be made
permanent, the changes must be confirmed, otherwise the curve will
snap back to its original shape when the left mouse button is
released.


ARCS
====

Arcs have a more complex behaviour than curves. They behave differently
depending on whether or not they have been selected (see selecting an
object). They also have end points, non-end points (a point on the arc
which is visible and not at either end of the arc), and an inside and
outside.

If the arc is selected the two end points are shown connected to the
arcs centre via two lines.

	while the arc is not selected:

		grabbing the arc at one of its ends changes the length
		of the arc and its centre point without changing its
		angle and rotates the arc about its other end point
		(i.e. the centre point will change)

	while the arc is selected:

		grabbing the arc at one of its ends changes the length
		of the arc and its angle without changing its centre
		point or other end.

		grabbing the centre of the arc (where the two lines
		meet at the centre), changes the size of the arc and
		its angle.

	whether the arc is selected or not:

		grabbing the arc from its outside moves the arc without
		changing its length or angle

		grabbing the arc from its inside keeps the end points
		in their current position and changes the size of the
		arc and its angle


TEXT BOXES
==========

Text boxes are used to display text in a drawing. They behave like
rectangles when they are being edited. When they are selected and the
mouse is in the draw window and the draw window has focus, the
currently selected text box has the keyboard focus. Only one text box
can be selected in any one given draw window.


DRAWING, EDITING AND MOVING OBJECTS IN GENERAL
==============================================

When an object is being drawn (i.e. not editing an existing object),
dragging the mouse past the edge of the draw window while the left
mouse button is being held down, will cause the draw window to scroll
in the opposite direction so that it is possible to draw an object on
a reduced draw window without first having to maximise the view of the
draw window. This also allows objects to be more easily drawn when the
drawing is being zoomed into.

While editing an object, the object can be easily moved to another
draw window (simply by dragging the object to the new window, remember
to confirm when you get there or it will snap back when you release
the left mouse button). Or it can be dragged to a new position not
visible in the current draw window (because the draw window is
reduced or the drawing is zoomed in) by using the middle mouse button.
This is done by grabbing the object, then while the left mouse button
is held down, press and hold the middle mouse button, then drag the
mouse past the edge of the draw window. The draw window will scroll in
the opposite direction.


PUTTING OBJECTS IN FRONT OR BEHIND OTHER OBJECTS
================================================

This is achieved by changing the level of the object. A level of 0
indicates the object is at the bottom of the pile, whereas a level equal
to the number of objects (less one) indicates the object is on the top
of the pile. To place an object behind another object, the level of that
object must be taken down below the level of the object it is to be
placed behind. To place an object in front of another object, the level
of that object must be taken up above the level of the object it is to
be placed in front of. If you only have three objects in the draw window,
then 0 is at the bottom, 1 is in the middle and 2 is at the top. Moving
an object forward from level 0 to level 1, changes the level of the object
that was originally at level 1 to level 0, and the object that was originally
at level 0 to level 1. This keeps the relationship intact with 0 at the
bottom, 1 in the middle and 2 on top (the bottom object has now moved
in front of the middle object).

To change an objects level, activate the objects menu and select the
level option, The level dialog will appear. Simply increment the level
using the spinner or type the level number in directly and press return.

As a short cut, it is possible to move the object right to the back or
right to the front by pressing the front or back buttons.

When a group is ungrouped, all the objects within the group are inserted
between the objects that were immediately in front of and bind the group.


CHANGE LEVEL MODE
=================

To enter level mode, activate the draw window menu and from it select
the 'object' option. Selecting either the 'Level up' or 'Level down'
option puts you into level mode. The difference between the 'Level up'
and 'Level down' options is that action of the right and middle mouse
buttons is swapped. This is a concession to two mouse button users.
Having entered level mode, press and hold down the left mouse button,
and move the mouse over the objects in the draw window. You will notice
that the objects become selected and deselected as the mouse passes over
them. When you have selected an object that you wish to move forward or
backward, while holding down the left mouse button, press and release
the right mouse button or the middle mouse button (if your mouse has
one). The selected object will become solid and move either forward or
backward relative to the other objects being displayed. You can continue
to select and change the level of other objects in the draw window by
simply moving the mouse to an object and repeating the right or middle
mouse button click. Now release the left mouse button and you have
finished. Remember that you are still in level mode however.

Throughout all of this you should have noticed that the mouse pointer
has a tag associated with it (it is part of the mouse pointer and
follows the mouse). This tag sometimes shows a number and sometimes is
blank. In fact it only shows a number when an object has been selected
and is only blank when no object has been selected. The number shown is
the current level of the selected object. If you change the level of the
object (as described above) the number will change. It will get smaller
if the object is being moved backwards, and bigger if it is being moved
forwards. The combination of this tag and the highlighting of selected
objects, allows you to check the level of objects near other objects and
quickly decide which objects should be moved backwards or forwards.
Keeping the level number on the mouse prevents you from having to
continually look away from the object and down to a status display. This
makes using it more comfortable.


SELECTING COLOURS, LINE WIDTHS, LINE ENDS, SOLID OR OUTLINE SHAPES
==================================================================

To change an objects colour, line width, line ends and whether or not
it is a solid or outline shape, activate the objects menu and select
the properties option, The properties dialog will appear.

Within the properties dialog you will see three combo boxes stacked
one above the other. The first two are used to select the type of line
ends required (one for each end). While the third one is used for line
thickness. 

Lines, curves and arcs can have line ends. Circles, ellipses,
rectangles and polygons can be filled or outline shapes. Lines,
curves, arcs and non-filled circles, ellipses, rectangles and polygons
can have their thickness set.

To fill an object, press the left mouse button on the empty beaker
(which will change to a full beaker). The object will be redrawn as a
filled object. To change the object back to an outline object, press
the left mouse button on the full beaker and this time it will change
to an empty beaker and the object will be redrawn as an outline
object.


GROUPS
======

While in edit mode, the middle mouse button (for those of us with three
button mice) is used to group and ungroup objects. To group several
objects, press the middle mouse button and drag a rectangle out such
that it encompasses the objects to be grouped. When all the objects to
be grouped are completely encompassed by the group rectangle, confirm
the operation (i.e press and release the right mouse button while the
middle button is still held down). A green bounding rectangle is left on
the draw window surrounding the new group. If you do not have a middle
mouse button, you can enter group mode by activating the draw window
menu, selecting the 'object' sub-menu from it and then selecting the
group option from that. In group mode, the left mouse button is used in
place of the middle button. The draw back is that you must explicitly
exit group mode and enter edit mode (once you have finished grouping) by
using the menus again. The bounding rectangle of a group object can be
edited in the same way as a normal rectangle object. However, when the
bounding rectangle of the group object is edited in only one plane (see
editing rectangles), the bounding rectangle changes size and shape, but
all the component objects within the group do not move or change size.
But, when the bounding rectangle is edited in both planes, then the
component objects within the group are resized, i.e. the edit
operation resizes the group. (see also rotation and mirroring below)

Objects can be added to or dropped from a group. To add an object to an
existing group, ensure that some part (or all) of the object to be
added is within the bounding rectangle of the group, then at that
point, activate the objects menu (the one to be added) and select the
add to group option. That's it you're done. The only tricky bit is if
you try to add one group to another. In this case the group to be added
must be unambiguously selectable or completely enclosed by the bounding
rectangle of the group to which it is to be added. This is because it
is not possible to tell which of the groups is to be added to the other
just by looking at two overlapping rectangles.

To drop an object from a group, move the mouse to the object to be
dropped, then activate the group menu. Select the drop from group
option, and you're done.

To ungroup a group (i.e. break it up into its component objects), double
click on the group object to be ungrouped with the middle button while
in edit mode, keeping the middle button down after the second click. The
group object will be redrawn with a dashed outline to indicate you have
selected it. If the group object is not redrawn with a dashed outline,
either the mouse was not close enough to the group or you were not in
edit mode when you double clicked on the middle mouse button or your
double click was too slow or you did not hold down the middle button at
the end of the double click. To double click and hold down the button,
means to press/release/press and hold the button down. Once you have
successfully selected a group to ungroup, you may either confirm that
this is the group you really want to ungroup, or you can move the mouse
around on the draw window looking for another group (while keeping the
middle mouse button down). As you move from group to group in this way
you will notice that groups become selected and deselected. To confirm
that a selected group should be ungroup, press the right mouse button
while still holding down the middle mouse button. You will notice that
the bounding group rectangle will disappear. All objects that were part
of this group will now be individually editable. If you do not have a
middle mouse button, you can enter ungroup mode by activating the draw
window menu, selecting the 'object' option, and then selecting the
'ungroup' option.

Groups can also be saved, exported, printed, read into and edited.

To save, export or print a group, select the file option in the group
objects menu. Then select the appropriate option.

Editing a group is accomplished by selecting the 'open window' option in
the group objects menu. This will throw up a re-sizeable moveable draw
window for the group. All objects within the group can then be edited.
Once the draw window is closed the original group object is updated.
This allows us to abort the edit by selecting the quite option of the
draw window menu. If the original group is deleted or ungrouped before
the group window is closed, then closing the group window will produce
a new group in the original window.

To load a file into a group, create an empty group in the draw window
(see grouping objects to create an empty group). Open a draw window for
this new group (see editing groups). Set the focus to the new draw
window, and select the file option in the draw window menu, then the
load option. Once the file has been loaded, close the window.


COPYING AND DELETING OBJECTS
=============================

Copying and deleting objects can be done by entering either the copy
mode or the delete mode. To enter either of these modes, activate the
draw window menu and from it select the 'object' option. Selecting the
'copy' option puts you into copy mode. Now press and hold down the left
mouse button, and move the mouse over an object in the draw window. You
will notice that the mouse seems to pick up a copy of the object you
passed over. Release the left mouse button and the object disappears. Try
this again with an object you would like to copy. Now move the copy of
the object to a new position in the draw window and while holding down
the left mouse button, press and release the right mouse button. This
will place a copy of the object where you wanted it. Notice that the
mouse still seems to have a copy of the original object attached to it.
This lets us make multiple copies of an object by simply moving the
mouse and clicking on the right mouse button over and over. Now release
the left mouse button and you have finished. Remember that you are still
in copy mode however. Objects can be copied to other draw windows as
easily as they can to the original draw window.

To enter delete mode, activate the draw window menu and from it select
the 'object' option. Selecting the 'delete' option puts you into delete
mode. Now press and hold down the left mouse button, and move the mouse
over the objects in the draw window. You will notice that the objects
become selected and deselected as the mouse passes over them. When you
have selected an object that you wish to delete, while holding down the
left mouse button, press and release the right mouse button. The
selected object will disappear. It has now been deleted. You can continue
to select and delete (or not) objects in the draw window by simply
moving the mouse to an object and repeating the right mouse button
click. Now release the left mouse button and you have finished. Remember
that you are still in delete mode however.


IMAGES
======

IPAD has a very basic set of bit mapped image handling facilities. It
can scale, load, save, export, print and edit an image. Printing is
currently only done in grey scale. When IPAD displays an image that is
not selected, it does so in grey scale, this allows multiple images to
be displayed simultaneously without palette conflicts. An image can be
rescaled by dragging the edge of the image in the same way that a
rectangle is edited. Currently the MSDOS version of IPAD can only load
.png and .ipd format images and can only save .ipd format images. The
export facility is intended for use with filters which are not available
for MSDOS yet.


ZOOM
====

The slider bar on the left of the draw window is used to zoom in and
out. Zooming in beyond a certain point causes parts of the drawing to
become inaccessible even with the use of the vertical (right) slider and
horizontal (bottom) slider. The locator allows us to view any part of
the drawing by moving the draw window over any part of the drawing. To
activate the locator, activate the menu for the draw window and select
the show locator option. To use the locator, simply move the mouse to
the locator and press the left mouse button. The cross hairs will follow
the mouse. If you zoom in and out using the zoom slider bar, you will
notice that the locator shows three rectangles, a white one within a
blue one (which change size) and an outer most white one (which does not
change size or move). The inner white one indicates the draw window,
while the blue one indicates the area covered by the draw window using
the horizontal and vertical sliders. The outer most white rectangle
represents the entire drawing.

When switching between draw windows, the locator will (if active) track
the draw window which currently has focus.


MOVING AND RESIZEING WINDOWS
============================

Any control (window, menu, etc.) that contains a title or has an active
border can be moved by grabbing the title or active border and dragging
it across the screen. Some active borders also allow a control to be
resized. This is done by grabbing the active border at a corner and then
dragging it to the desired shape across the screen.


OVERLAPPING WINDOWS
===================

All controls (window, menu, etc.) can overlap, to bring a control to the
top and so give it focus, click on it with the left mouse button. A
control such as a window or file selector dialog with an active border
is marked as having focus by the colour of the active border.


CHANGING FONTS
==============

The default bit mapped font may be too small to be viewed in comfort on
a small monitor in high resolution. It can be changed by the user by
selecting the 'bit mapped fonts' option of the main menu.


USER DEFINED CATEGORIES
=======================

All graphics objects can be assigned a set of predefined properties.
The properties determine the colour, outline thickness, line end types
and whether or not an object is filled.

All objects can also belong to multiple user defined categories.
e.g. several lines can belong to a window.

Categories can also be assigned a set of predefined properties.
When an object belongs to a category, it takes on the properties
of that category.

Categories can have complex user defined structures. If we were to
define a category called 'train' that has red lines, blue circles and
yellow rectangles. We could then mark several objects of a drawing as
belonging to that category, all the train lines would then be drawn as
red, the train circles as blue and the train rectangles as yellow. If we
then went on to modify the 'train' category so that all train lines were
green, the drawing would immediately change and all the lines marked as
belonging to the train would change to green.

From a drawing point of view, categories let us easily group several
components of a drawing together and conveniently manipulate some
properties of the group, e.g. line thickness or colour. However, if IPAD
is being used as a front end to some third party software such as a code
generator, categories have a different role. They let us mark objects
with user defined symbols and allow us to easily visualise which objects
have been marked by virtue of their properties when drawn on the screen
or to paper.

A simple example of this would be where we draw two circles connected by a
line. One of circles could be marked as belonging to the 'switch input'
category, the other to the 'lamp output' category and the connecting line
marked as belonging to the 'output follows input' category.

Categories also allow us to easily build components which can then be
used as building blocks from which more complex components can be built.
e.g. a group of lines could belong to the window category, the window
could itself belong to the door category and also the house category, the
colour of the window in the door can be different to the colour of the
window on the house simply be overriding the colour in the house or door
category. The colour of the window remains the same unless it is used
as a door window or a house window.

When specifying the categories to which an object belongs, it is not
necessary to list all the categories individually, since a category can
be built using other categories. The category dialog allows us to
quickly and easily edit the category list of an individual object or
group of objects and also change the properties of the categories.

The category dialog consists of:

	effective properties status display area
		this shows the result of applying the combination
		of properties and categories to a primitive object
		(e.g. a line, circle, curve etc.)

	route display area
		this shows the route taken to get to the current
		category. this is important when navigating
		categories since the route determines which category
		is derived from which other category, knowing only
		what the current category is meaningless.

	active category list display area
		this shows the list of categories for the current
		object, group of objects or derived category (the
		last category shown in the route display area).
		clicking on any of the category names displayed in
		the active category list display area will cause
		the property dialog for that category to become
		active, thus allowing that category's properties to
		be modified. it will also select that category name
		as the target of any 'delete', 'enter', 'up' or
		'down' operation (see relevant button descriptions
		below).

	available category list display area
		this shows the list of all available categories
		that can be added to the current object, group of
		objects or derived category. If a category name is
		displayed prefixed with either '+' or '-' in front
		of it, this indicates that the category is composed
		of a list of other categories. If it is prefixed
		with a '+', then clicking on the '+' will cause the
		list of component categories to be displayed
		beneath it and the '+' will change to '-'. if it is
		prefixed with '-' then the currently displayed
		component list will disappear and the '-' will
		change to a '+'. clicking on any of the category
		names displayed in the available category list
		display area will cause the property dialog for
		that category to become active, thus allowing that
		category's properties to be modified. double
		clicking on any of the category names displayed in
		the available category list display area will cause
		the category to be appended to the category list of
		the currently selected object, group of objects or
		selected category.

	property dialog
		this is exactly like a normal property dialog and
		allows us to change the properties of the current
		category.

	active property type selector
		this consists of eight buttons, one each for each
		of the primitive objects (e.g. a line, circle, curve
		etc.). It allows us to specify which of the primitive
		objects the property dialog currently applies. The
		property dialog can apply to any combination of the
		primitive objects shown.

	navigation buttons
		the enter button allows us to enter into the currently
		selected category so that we can navigate and possibly
		modify a category from which the current category is
		derived. the exit button allows us to return to where
		we were before we entered the category.

	edit buttons
		the add button allows us to add a new category name
		entered via the keyboard. The delete button allows us
		to delete the currently selected category from the
		current object, group of objects or selected category.

	modify priority buttons
		the effective properties of a category depend on the
		order of the category list from which it is composed.
		The nearer the start of the list, the more important
		the category is when trying to determine the effective
		properties of the derived category. to change the
		order of the list, use the up button to move the
		currently selected category towards the start of the
		list, and the down button to move it towards the end
		of the list.

	result button
		this forces the category dialog to refresh all draw
		windows with the new categories.

	ok and cancel buttons
		the ok and cancel buttons should have different
		functions, but at the time of this writing, they both
		perform the same dismiss function. in the future the
		cancel button will provide a mechanism for undoing
		all changes to the category system that were made
		since the category dialog was invoked.


HINTS ON USING CATEGORIES
=========================

The transparent colour is BLACK, which is colour 0x00. When this colour
is selected for a derived category, the effective colour is that of the
base category. To force black, use colour 0x10 which is distinct from
black but has the same hardware settings (i.e. it looks identical).

When the selected line ends are 'unknown' (indicated by a red circle with
a red diagonal), the effective line ends are those of the base category.

When the selected line thickness is 'unknown' (indicated by a red circle
with a red diagonal), the effective line thickness is that of the base
category.

Objects belonging to a particular category can be added to a group by
using the gather facility. To invoke this facility, an object belonging
to the category we are interested in must be selected at a point which
lies inside the bounding rectangle of the group we want the objects to
be added to. The objects menu must be brought up by using the right
mouse button to do the selection. Chose the 'gather' option in the
objects menu, and IPAD will add all objects that cut (or are completely
enclosed by) the groups bounding rectangle. If there is any ambiguity
about which group to add the objects to, then the operation will be
aborted and neither of the groups will be modified. 

When using the gather facility, the first category of the objects
category list is the one used for the selection.

When modifying the category of a group of objects, the category list of
the group will be the combined categories of all the objects contained
by the group. Adding a category to the group, will cause the category to
be added to all objects in the group. Removing a category from the
group, will cause the category to be removed from all objects in the
group.

When grouping by category, it is often useful to start with an empty
group. An empty group can be simply created by grouping a small blank
area of the drawing. The empty group can then be moved to the required
position and resized just like any other rectangle, without effecting
any other objects.

Examples of using categories are given in the drawings 'cat*_eg.ipd'

Where a large number of complex changes need to be made to the category
model of a drawing, it is possible to export the drawing, edit it
using a text editor or some other filtering program and then load it
again.


ROTATION AND MIRRORING
======================

Objects can be rotated in 90 degree steps or flipped top to bottom or
left to right. This is accomplished be grouping the object (or group of
objects) that are to be rotated or flipped. Then the group menu is
selected and from it the transform sub-menu is selected, from this the
desired operation is selected. Rotation and mirroring is performed
relative to the centre of the group, and the centre of the group can be
adjusted simply by editing the group bounding rectangle to keep the
contents of the group stationary and modifying the rectangle. The 90
degree rotation steps are a current limitation which will be removed as
soon as possible. The intension is to allow the user to arbitarily
rotate the the group in realtime using a rotation handle.


GLUE POINTS
===========

Glue points are markers that are applied to objects in a drawing
indicating positions on an object that should remain connected to other
objects even when the original object is modified. Normally, when a line
end is placed at the end of another line, IPAD is aware of the connection
such that when one of the lines is modified the other line will also be
modified to compensate for the first modification. Glue points allow you
to mark any part of the line for such special consideration. So that if
for example you wanted to connect three horizontal lines to one vertical
line (a small distance apart), then you would place three glue points on
the vertical line and place the end of each of the horizontal lines on
one of the glue points. Any chanes to the vertical line will consequently
be compensated for by changes in each of the horizontal lines.


ADDING GLUE POINTS TO AN OBJECT
===============================

To add a glue point to a object, simply enter glue mode by selecting the
draw window menu, then the object sub-menu, then the 'add glue points'
option. This puts IPAD into glue mode and allows you to select positions
on any object which should have a glue point. To place a glue point on
an object move the mouse to the position on the object that is to have a
glue point, then press the left mouse button and the object will become
highlighted by being redrawn in a dithered form. While still holding
down the left mouse button, confirm by clicking on the right mouse
button and a glue point will apear. It is not necessary to keep
releasing and pressing the left mouse button. The mouse can be
repositioned while the left mouse button is held down, as you do so you
will notice that objects become highlighted and un-highlighted as the
mouse touches then comes away from the object.

BEWARE:	glue points belonging to an object that belongs to a group
	follow the shape and size of the object as it is modified
	by the group. glue points belonging to the group follow the
	shape and size of group bounding rectangle. glue points
	belonging to a group are drawn as green to distinquish them
	from normal glue points.


EDITING GLUE POINTS
===================

Glue points that belong to any object can be moved about on that object
simply by selecting the glue point to be moved while in edit mode.
Follow the normal rules for editing other objects. The only differences
are that:
	1 ...	the glue point can only be selected if the mouse is
		actually placed on or very close to the glue point
		(there must be no ambiguity that the glue point is
		being selected)
	2 ...	the glue point cannot be moved off the object
	3 ...	the shape and size of the glue point cannot be changed

Remember that all edit operations must be confirmed when complete.
Editing glue points is no different.


Aligning and spacing objects
============================

Components of a drawing can be aligned such that all their left or right
edges touch a given vertical line, all their tops or bottoms touch a
given horizontal line, or they are centred either verticaly or
horizontaly. This is done be selecting a group of objects to be aligned
and then from the object menu of the group selecting the alignment
sub-menu. From this you can select the type of alignment to be done.

Components of a drawing can be equally spaced within a specified area.
They can be spaced either verticaly or horizontaly. This is done be
first selecting a group of objects to be spaced, then changing the
dimensions of the group so that they match the area over which the
objects are to be distributed and then from the object menu of the group
selecting the alignment sub-menu. From this you can select the type of
distribution to be done.

