|
Description  |
|
|
FIELD OF THE INVENTION
This invention generally relates to computer drawing programs and, more
specifically, to a system and method for specifying graphical alignment
and distribution criteria between graphical elements to be displayed
and/or printed.
BACKGROUND OF THE INVENTION
A number of currently available desktop publishing and other computer
programs allow a user to draw and manipulate graphical elements within a
document. The ability to draw and manipulate graphical elements has become
increasingly important because the use of organizational charts, data
tables, bar charts and other graphical aids continues to increase as
information purveyors attempt to communicate extensive and often detailed
facts, figures and other concepts. Examples of currently available
programs having graphical elements, drawing and manipulating capabilities
include SuperPaint.RTM. from Silicon Beach Software, MacDraw.TM. from
Claris Corporation, Canvas.TM. from the Deneba Corporation, and
PageMaker.RTM. from Aldus Corporation.
A primary goal of users of programs having drawing and manipulating
capabilities is to input, manipulate and present (on-screen or through an
output device) graphical elements as efficiently as possible. Currently
available programs generally include alignment features that allow
graphical elements to be precisely aligned and spaced relative to one
another. However, once the alignment command is executed, the user is free
to move the graphical elements out of alignment. This presents a
significant disadvantage during editing, because a user is required to
continually apply alignment commands to ensure that graphical elements
remain aligned and spaced as desired during editing. Thus, it would be
advantageous to have a way of establishing a presisent relationship
between graphical elements that keeps selected graphical elements aligned
and spaced despite further editing or modification of graphical or other
elements before a document is printed.
SUMMARY OF THE INVENTION
The present invention is a method of specifying spatial relationships of
elements in a graphics environment. The method includes the steps of (a)
creating a distribution frame; (b) specifying a set of elements to be
linked by the distribution frame; and (c) selecting alignment and
distribution criteria that determine spatial relationships between the
elements in the set and the distribution frame. In this manner the spatial
relationships specified between each element is maintained throughout
modification and editing of the elements.
In accordance with other aspects of the invention, the method of selecting
alignment and distribution criteria further includes selecting spatial
relationships for the set of elements along a vertical axis and selecting
spatial relationships for the set of elements along a horizontal axis.
In accordance with further aspects of the invention, the method further
includes selecting resizing options wherein the distribution frame is
sized to fit the set of elements. Other resizing options that may be
selected include sizing the elements within the set to fit the
distribution frame. The resizing options may be implemented both
vertically and horizontally. Further spacing criteria may be designated
between the elements. Another feature of the invention is that the order
of elements in the distribution frame may be locked such that they cannot
be rearranged within the frame.
In accordance with still further aspects of the invention, a method for
solving constraints between graphical elements includes (a) creating a
link between pairs of elements that are to be coupled by a constraint; (b)
creating a dirty list of links whose constraints are not currently
satisfied; (c) assigning a priority to each link in the dirty list that
indicates a link whose constraint is to be solved first; and (d) solving
the constraint associated with the link having the highest priority by
changing the attributes of one of the graphical elements attached to the
link.
BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing features and advantages of the invention will become better
understood by reference to the following detailed description, when taken
in conjunction with the accompanying drawings, wherein:
FIG. 1 is a block diagram of a graphical applications program formed in
accordance with the invention;
FIG. 2 is a hierarchical diagram depicting exemplary graphical elements;
FIG. 3 is a hierarchical diagram depicting exemplary constraints, referred
to as links throughout this disclosure;
FIG. 4A is a pictorial diagram illustrating examples of the constraints
that may be imposed on a set of graphical elements;
FIGS. 4B-4D are pictorial diagrams of the graphical elements depicted in
FIG. 4A showing what occurs as a result of the imposed constraints;
FIG. 5 is a pictorial representation of a link pull-down menu illustrating
exemplary constraint features that may be implemented in accordance with
the invention;
FIG. 6 is a pictorial representation of a Link Browser feature having the
constraint relationships set forth in FIG. 4A;
FIG. 7 is a pictorial representation of an Align/Distribute Frame dialog
tool that may be used to create constraint relationships between graphical
objects in accordance with the invention;
FIGS. 8A-8C illustrate a series of bar charts that may be created and
edited using a distribution frame in accordance with the invention;
FIG. 9 is a constraint graph illustrating the addition of links to a dirty
list after a graphical element has been edited;
FIG. 10 is a flow chart of a routine by which constraints are solved in
accordance with the invention;
FIG. 11 is a flow chart of a routine for determining a resolve direction
for any particular link;
FIG. 12 is a flow diagram of a routine for determining which of two
graphical elements coupled to a link should be modified to meet the link
constraint;
FIG. 13 is a flow diagram of a routine for adding graphical elements to the
dirty list;
FIG. 14 is a flow diagram of a routine for resolving links that are coupled
to a distribution frame;
FIG. 15 is a hierarchical diagram illustrating the data flow used to
arrange graphical elements that are linked to a distribution frame; and
FIG. 16 is a block diagram of a set of graphical elements for use in
explaining the operation of the constraint engine.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
A graphical applications program 20 for specifying alignment and
distribution criteria between graphical elements is shown generally in
FIG. 1. The graphical applications program 20 runs on a central processing
unit (CPU) 22 controlled by an operating system 24. A memory 26 is
connected to the CPU and generally comprises, for example, random access
memory (RAM), read only memory (ROM), and magnetic storage media such as a
hard drive, floppy disk, or magnetic tape. The CPU 22 may be housed within
a personal computer, minicomputer, or a mainframe (with one or more
users), as the benefits and functionality of the graphical applications
program 20 may be implemented on a number of types of computers. In order
to avoid unduly complicating this description, reference in the
specification and drawings is generally made to personal computers and
their operating systems. In this regard, a graphical applications program
formed in accordance with this invention may, for example, run on
Macintosh.TM., International Business Machine (IBM.TM.) and IBM.TM.
compatible personal computers. When used with IBM.TM. and IBM.TM.
compatible personal computers, the operating system 24 may utilize a
windowing environment such as Microsoft Windows.TM..
The graphical applications program 20 includes a user interface 28 that
interacts with the operating system 24 through an application shell 30.
Coupled between the user interface 28 and operating system 24 are a
document engine 32, a graphics engine 34 and a constraint engine 36.
Software program "engines" are generally defined as the portions of a
program that determine how the program manages and manipulates data. The
document engine 32 manages a display list that contains a list of all of
the graphical elements in a document. In addition, the document engine 34
saves and continually updates an element database that includes a set of
"values" for each graphical element. The values of a graphical element
determines attributes such as its shape, size, color, etc. Throughout the
specification and in the claims, the term "graphical element" is used to
generally refer to display objects and other objects, for example,
nonprinting objects, which may be manipulated by the graphical
applications program. The graphics engine 34 utilizes the values stored
within the element database of the document engine to render or display
the graphical elements on a cathode-ray tube or other output device.
Because the document engine 32 and graphics engine 34 can be implemented
using technology that is generally known to those skilled in the art, the
details of these engines are not described here.
FIG. 2 illustrates a subset of some of the graphical elements that may be
created using the graphical applications program 20. Included are a
rectangle 38, a circle 40, a line 42 and a distribution frame 44. The
rectangle, circle and line are all printable display objects. The
distribution frame 44 is a nonprintable graphical element that comprises
an area surrounded by a boundary which is preferably rectangular in shape.
A distribution frame is considered to be a nonprinting graphical element
because it will only appear when the user is editing a document but will
not appear when the document is sent to an output device. Graphical
elements positioned within the distribution frame are governed by
alignment and distribution criteria set up for the frame. The distribution
frame 44 and its attributes are discussed more fully below.
With reference again to FIG. 1, the constraint engine 36 utilizes "links"
to specify spatial relationships, i.e., constraints, between graphical
elements. Spatial relationships between graphical elements may take on a
variety of forms, and are specified by the user through the user
interface. Links are generally not seen by the user and act as message
carders among graphical elements. Links can, however, be displayed and
primed to allow the user to fully understand and control links that have
been established between graphical elements. The links provide persistence
between graphical elements, in that the constraint relationship imposed on
two graphical elements by a link must be maintained throughout editing of
the elements.
With reference to FIG. 3, a subset of four exemplary links are illustrated
from the various links available in the graphical applications program.
From left to right, the subset includes a distribute link 46, an align
link 48, a size link 50 and a keep-apart link 52. The distribute link 46
is used to link graphical elements to a distribution frame. The align link
48 specifies how two graphical elements are to be aligned relative to one
another. For example, the align link can be used to align two elements
vertically by their centers. The size link 50 may be used to establish a
size relationship such that if the size of one graphical element changes,
the linked graphical element follows suit. The keep-apart link 52 is a
constraint requiring that a specified distance be maintained between two
graphical elements, but outside of this distance the elements can be
freely moved relative to one another.
FIGS. 4A-4D illustrate an exemplary, three-element spatial arrangement
within a document showing some of the constraint features of the graphical
applications program 20. At the outset, it should be realized that the
minimum number of links needed to couple N elements together is generally
N-1, although a greater number of links may always be utilized, thereby
adding additional constraint relationships between pairs of graphical
elements.
With reference to FIG. 4A, a set of three graphical elements--a triangle
58, a rectangle 60, and an oval 62--are coupled together through the
spatial relationships specified with three links 56a, 56b and 56c. Each
link 56 is represented by a dashed rectangle and line extending between
the graphical elements. Link 56a couples the triangle 58 to the rectangle
60 by a constraint that requires that their centers remain vertically
aligned. Thus, during editing of the document, any horizontal movement of
the triangle 58 will be tracked by the rectangle 60, and vice versa.
However, vertical movement of either graphical element will not affect the
other because the centers remain aligned along the vertical axis. Links
56b and 56c couple the rectangle 60 to the oval 62. The constraint
provided by link 56b is that the bottom portions of the frames bounding
the rectangle and oval stay aligned with one another. The constraint
imposed by link 56c is that the height of the oval 62 remain the same as
that of the rectangle 60.
FIGS. 4B-4D depict three illustrative spatial configurations of the
elements 54 which meet the constraints set up by the links in FIG. 4A.
With reference to FIG. 4B, it is shown that all of the constraints of the
links 56 have been met in that (a) the centers of the triangle 58 and
rectangle 60 are aligned as shown by line l.sub.1, (b) the bottom of the
frame bounding each of the rectangle and oval 62 are aligned as indicated
by the line l.sub.2, and (c) the height h.sub.1 of the oval is the same as
that of the rectangle.
With reference to FIG. 4C, two changes by the user are assumed. First, the
height of the rectangle 60 has been increased from h.sub.1 to h.sub.2. As
a result of the constraint imposed by link 56c, the height of the oval 62
"tracks" the increase, and is thus also h.sub.2. Second, the user has
moved the triangle 58 away from the rectangle, as is indicated by the line
l.sub.3. Because this movement has no effect on the vertical constraint,
this movement has no effect on the other graphic elements.
In FIG. 4D, two of the graphical elements 58 and 62 have been moved in a
way that has no effect on the other elements. First, the triangle 58 has
been moved from below rectangle 60 to above the rectangle. Second, the
shape of the oval 62 has been altered by extending what used to be the
minor axis of the oval (axis a.sub.1) horizontally such that the minor
axis has become the major axis. The height h.sub.1 of the oval remains
constant due to the prohibition created by link 56c, assuming link 56c is
a unidirectional link (discussed below).
Throughout the changes specified in FIGS. 4B-4D, the alignment of the
graphical elements is maintained by the links 56 during the editing
process and without the need to continuously apply realignment commands
(as in prior art drawing programs). That is, while each of the changes
shown are available in typical prior art drawing programs, the process
required to make the changes is much more complicated. For example,
instead of just extending the height of rectangle 60 upwardly as was done
in FIG. 4C, and having the length of oval 62 change in a corresponding
manner, first one or the other of the elements would have to be set to the
desired height, second the nonset element would have to be set to the same
height, and third a realignment command would have to be executed to
ensure that the bottoms of the two elements were still aligned. Similarly,
moving pairs of elements closer together or farther apart would also
likely include more than one step, for example, the steps of first (a)
changing the distance and then (b) realigning the graphical elements. As
will be readily appreciated by those skilled in the art, the number of
steps and realignment commands required to perform editing functions can
become increasingly burdensome as additional graphical elements are added
to a document.
There are a number of other constraints provided by the invention that may
be utilized to aid a user in desktop publishing and other graphic-related
tasks that were not depicted in FIG. 3. It is desirable that the more
beneficial constraints be incorporated as menu items, thereby providing
ease of use and efficiency. In an actual embodiment of the invention, a
number of constraint relationships in accordance with the invention have
been implemented into a links pull-down menu 66 which is illustrated in
FIG. 5.
As an aid in understanding the invention, selected menu items are discussed
briefly. The align command in frame 68 is a feature of the graphical
applications program that provides alignment options based upon the
spatial relationships of two graphical elements that have been aligned by
a user. An example of an alignment suggestion is that a first graphical
element placed within a second graphical element should be centered in the
second graphical element. The auto align on option 70 directs the
graphical applications program to "snap" things into a perceived,
user-desired alignment during drawing and editing. For example, if a user
moves the edge of one graphical element to near vertical alignment with
the edge of another graphical element, the graphical applications program
will automatically align the edges vertically as long as they are within a
programmed tolerance. The keep aligned command 71 allows a user to "lock"
objects that have been aligned through the automatic alignment feature to
create a link between the graphical elements, thereby forming a persistent
constraint relationship that will remain throughout editing.
The clear links command 72 provides a means for removing established links.
The match command 73 is a method of setting up links between two or more
graphical elements by matching, for example, element width, height, size,
or text. The show links command 74 allows a user to see and subsequently
edit links that have been created between a set of graphical elements.
FIG. 6 (described below) illustrates what a user would actually see after
executing this command on the set of graphical elements illustrated in
FIGS. 4A-4D.
In FIG. 6, the triangle 58, rectangle 60, and oval 62 of FIGS. 4A-4D are
represented by icons 76, 78, and 80, respectively. Link 56a is represented
by an icon that includes two squares having their centers vertically
aligned. The icon for link 56b depicts two squares that are aligned along
their bottom edges. The icon for link 56c represents to the user that a
"numerical" relationship exists between two graphical elements, such that
the size of one element affects or controls the size of the other. In this
manner, the graphical applications program provides a concise way (the use
of icons) to communicate the links that have been established between
graphical elements. Further, when a mouse is used, changing the attributes
of a link is simply a matter of selecting (i.e., double clicking) the link
to bring up a dialog box (not shown) and inputting new constraint
criteria. Alternatively, suitable keyboard commands can be used.
Each link in the graphical applications program is either a unidirectional
link or a bidirectional link. A unidirectional link establishes a
constraint between two graphical elements such that the editing of a value
or position of a first "master" element connected to the link controls the
value or position, respectively, of the second "slave" element attached to
the link. Thus, any change to the master element that affects the linked
property (constraint) will change the slave element. Any attempt to change
the slave element in a way that would affect the linked property is
prohibited. An example of a unidirectional link is the link 56c shown in
FIG. 4A. Link 56c requires that the height of a first element (rectangle
60) dictate the height of a second element (oval 62). Thus, during
editing, as the height of rectangle 60 is varied by a user, the height of
the oval 62 will track the variance accordingly. However, any attempt to
change the height of the oval 62 will be blocked by the constraint.
A bidirectional link is a link in which the spatial relationship of two
elements is interdependent upon one another, i.e., if either element in
the relationship changes, the other element is modified to reflect that
change. The interdependence of the elements is based upon the specific
constraints set up by the link. In FIG. 4A, both links 56a and 56b are
examples of bidirectional links since they are independent of either one
of the graphical elements to which they relate. Considering link 56a, in
order to satisfy the constraint that the centers of the elements be
aligned, any movement of triangle 58 in a horizontal direction will also
move rectangle 60 in that same direction and vice versa. In contrast,
movement of triangle 58 in a vertical direction does not affect the
position of rectangle 60 because vertical movement of triangle 58 will not
affect the alignment of the centers of the elements. In other words, no
constraint exists on vertical movement, only on horizontal movement.
The above discussion was directed toward establishing links between pairs
of graphical elements. While large groups of graphical elements may be
interconnected at an element-link-element level, making multiple changes
to a group of elements that are linked at this level may become burdensome
if each link in the group must be individually edited. To avoid this, the
graphical applications program 20 includes a user interface tool that
allows the spatial relationships of numerous graphical elements to be
manipulated by changing the characteristics of a single, nonprinting
graphical element. This graphical element is the distribution frame, which
was discussed briefly in relation to FIG. 2.
A distribution frame defines a rectangularly-shaped area that may be used
to link graphical elements within the frame such that alignment and
distribution of the graphical elements are controlled by the distribution
frame. This avoids the need for a user to be concerned with graphical
elements on an element-link-element level. The size of the distribution
frame is selected by the user, and may be edited at any time. The frame
may be created and the graphical elements subsequently added to it, or the
frame may be created to enclose existing graphical elements. When a
distribution frame is created around a set of graphical elements, the
elements are located in the frame as close to their current location as
possible that will satisfy the alignment and distribution relationship
specified for the frame.
FIG. 7 depicts an Align/Distribute Frame (ADF) dialog box 84 from an actual
embodiment of the graphical applications program that is used to set
spatial criteria for graphical elements enclosed within a distribution
frame. The ADF dialog box 84 illustrates exemplary "alignment" and
"distribution" relationships that are available in the graphical
applications program. Alignment (Align) refers to a graphical relationship
between a set of elements that specifies how the elements are to be
arranged or ordered. Distribution (Distribute) refers to a graphical
relationship between a set of elements that specifies that the elements
should be evenly spaced apart.
The ADF dialog box 84 includes eight horizontal criteria for specifying
spatial relationships between graphical elements in the distribution
frame. The criteria are illustrated by icons, including a horizontal null
icon 85, an upper row 86 of horizontal alignment icons and a lower row 87
of horizontal distribution icons. There are also eight vertical criteria,
including a vertical null icon 88, a column 89 of vertical alignment icons
and a column 90 of vertical distribution icons. A preview box 91 within
the ADF dialog box 84 indicates the effect of alignment and distribution
selections. TABLE 1 presents an explanation of the icons in the ADF dialog
box 84.
TABLE 1
______________________________________
Explanation of Icons Depicting Spatial Relations in the
Align/Distribute Frame Dialog Box
______________________________________
Horizontal Spatial Relationships:
Null (icon 85)
no horizontal alignment or distribution
Align (row 86, left to right)
(1) align left sides of elements
(2) align centers of elements
(3) align right sides of elements
Distribute (row 87, left to right)
(1) uniform space between element edges
(2) uniform space between left element edges
(3) uniform space between centers of elements
(4) uniform space between right element edges
Vertical Spatial Relationships:
Null (icon 88)
no vertical alignment or distribution
Align (column 89, left to right)
(1) align tops of elements
(2) align centers of elements
(3) align bottoms of elements
Distribute (column 90, top to bottom)
(1) uniform space between element edges
(2) uniform space between top element edges
(3) uniform space between centers of elements
(4) uniform space between bottom element edges
______________________________________
The ADF dialog box 84 also includes vertical resizing 92 and horizontal
resizing 93 options. Each resizing option 92 and 93 includes three
mutually exclusive options: (1) none (no resizing desired in that
direction), (2) resize frame to fit objects (graphical elements), (3)
resize objects to fit frame. Under any of the resizing options, a distance
between the graphical elements in the frame may be input to provide
uniformity. The resizing options are advantageous from a number of
standpoints. For example, often a user will have a predefined area in
which graphical elements are to be placed. In this case, a user can adjust
the distribution frame to be equal to the predefined area and use the
resize objects command to have the graphical elements fill that area. The
ADF dialog box 84 also includes a lock order option 94 that, when
activated, prohibits the reordering of graphical elements.
FIGS. 8A-8C illustrate a bar chart created using a distribution frame 96 in
accordance with the invention. The distribution frame encloses six
rectangular elements 97, each representing a different month for the
months ranging from January to June. In FIG. 8A the resize frame to fit
objects option (horizontal) has been selected with a predetermined (for
example, one-quarter inch) spacing between graphical elements.
As with any of the spatial relationship criteria, the resizing options are
persistent in that they remain and automatically adjust the graphical
elements or distribution frame during document editing. FIG. 8B
illustrates this concept. Specifically, in FIG. 8B, the months of May and
June have been deleted. In response, the graphical applications program
has automatically resized the distribution frame 96 to enclose only the
remaining graphical elements. In FIG. 8C, it is assumed that the user
starts with the distribution frame 96 of FIG. 8A, only in this instance
the resize objects to fit frame option (horizontal) has been selected.
Thereafter, the months of May and June are once again deleted. In
response, the graphical applications program automatically resizes the
rectangular elements 97 to fill (horizontally) the distribution frame. It
should be noted that the predetermined spacing between the graphical
elements remains the same.
The distribution frame includes a number of inherent features that make it
extremely advantageous in a graphics environment. One feature of the
distribution frame is that it is very easy for a user to modify the
alignment/distribution relationship between graphical elements. For
example, in one embodiment all that is required is to double click on the
distribution frame (using a mouse), bringing up the ADF dialog box shown
in FIG. 7 and presenting options for redefining spatial relationships.
Also, when a distribution frame is moved or resized, all the elements
within the frame are moved or resized such that the elements maintain
their relationship to the distribution frame. Another feature of the
distribution frame is that a user can quickly change the order in which
graphical elements are distributed by simply clicking on an object in the
frame and dragging it to a new position. All of the elements are
rearranged to make room for the new position of the dragged element. This
feature can be defeated by choosing the lock order option.
With reference again to FIG. 1, the constraint engine 36 provides a means
for solving spatial relationships between graphical elements by
establishing and manipulating various links and/or distribution frames
within a document. The constraint engine used in the graphical
applications program 20 is preferably implemented using an object oriented
programming language. Object oriented programming languages have the
ability to efficiently define classes of objects and use these objects to
improve the efficiency with which applications are developed, run, and
maintained. In one actual embodiment, the constraint engine comprises a
number of C++ classes, although other programming languages can also be
used to implement the constraint engine.
There are three main classes of objects that comprise the constraint
engine. These are listed at the top of TABLE 2 and include: (1) a Solver
class, (2) a Link class, and (3) a Graphical Element class. Each class
includes class attributes and methods which are used to interact with the
remaining classes in the constraint engine. In TABLE 2, the attributes and
methods for each class are listed below the corresponding class.
TABLE 2
__________________________________________________________________________
Constraint Engine - Object Oriented Programming Classes,
Attributes and Methods
GRAPHICAL
SOLVER LINK ELEMENT
__________________________________________________________________________
Attributes: Attributes:
Attribute:
Dirty List Flags Element Distance
Priority Lists Source A
List 1 -
unidirectional links
Source B Methods:
List 2 -
bidirectional/forward
Link Direction
Set (Value)
links A.fwdarw.B
Get (Value)
List 3 -
bidirectional/
B.fwdarw.A
Element Set.sub.-- Dirty
backward links
A.revreaction.B
List 4 -
backward links
Resolve Direction
coupled to a source node
A.fwdarw.B
Current Distance
B.fwdarw.A
Method: Methods:
Solve Resolve.sub.-- Link
Link Set.sub.-- Dirty
__________________________________________________________________________
As an aid in understanding the foregoing discussion, the following
definitions are provided with respect to the terms of TABLE 2.
__________________________________________________________________________
Dirty List A list of all of the links whose constraints might not be
satisfied. A dirty list is created whenever a graphical
element is added, deleted, moved or otherwise edited.
See FIG. 9.
Priority Lists
A set of four lists (Lists 1-4) that indicate to the Solver
those links in the dirty list that should be satisfied first.
Links in List 1 have the highest priority and should be
solved first. Links in List 4 are to be solved only when
there are no remaining fits to be solved in Lists 1-3.
Unidirectional Link
A link in which the constraint imposed by the links
should always be resolved so that a specific graphical
element is changed. For example, an A.fwdarw.B link would
always change node B to satisfy the constraint.
Bidirectional Link
A link where either node may be changed to satisfy the
constraint imposed by that link.
Source Node
A graphical element that was changed by the user's
editing operation as opposed to one that was changed
by link resolution within the graphical applications
program.
Current Distance
A variable used in the Solve method to help determine
which links should be solved first.
Solve A method that (a) determines which links need to be
resolved, (b) determines the resolve direction and
(c) calls the Resolve.sub.-- Links method.
Flags Every link has a flag on each end labeled source A and
source B which are used to determine link direction.
The source A (B) flag is set if the graphical element at
A (B) caused the link to be added to the dirty list.
Link Direction
Specifies which graphical element connected to a link
can be changed to satisfy a constraint.
Resolve Direction
Specifies which graphical element should be changed to
specify the constraint of a link. The direction is set by
the Solve method.
Resolve.sub.-- Link
A method for modifying one of the graphical elements
attached to a link on the dirty fist so that the constraint
associated with the link is satisfied.
Link Set.sub.-- Dirty
A method for adding a link to the dirty list. This
method is called when the attributes of a link are edited.
Element Distance
The distance in graphical elements that an element is in
relation to a source node.
Set.sub.-- Value
The Set.sub.-- Value has two functions. First, it is a method
for modifying the value of an attribute of a graphical
element. Second, it calls the Element Set.sub.-- Dirty method
which will add any links coupled to the edited graphical
element to the dirty list.
Get.sub.-- Value
A method for finding the value of an attribute of a
graphical element. The Get and Set methods are the
only access the Resolve.sub.-- Link method has to the
internals of a graphical element. The separation allows
an application program to hide the internal
implementation of a graphical element from the
| | |