WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method of establishing constraints and links in a distribution frame between graphical elements and resolving the constaints    
United States Patent5437008   
Link to this pagehttp://www.wikipatents.com/5437008.html
Inventor(s)Gay; Jonathan L. (San Diego, CA); Tatsumi; Robert B. (Poway, CA)
AbstractA user interface (UI) may be used in specifying spatial relationships between graphical elements in a graphics environment with drawing or graphical element manipulating functions. The UI interacts with the operating system through an application shell. A document engine, a graphics engine, and a constraint engine are coupled between the UI and operating system. A user may create a distribution frame with an area on a page of a document and a set of elements may be specified to be automatically linked by the distribution frame. Graphical elements positioned within the distribution frame are governed by alignment and distribution criteria. The user may select alignment and distribution criteria to determine the spatial relationships between the elements in the set and the distribution frame. One or more dimensions of the graphical elements in the distribution frame are a function of the area encompassed by the distribution frame where a user's edits to one may affect the other. Spatial relationships between graphical elements are established using unidirectional and bidirectional links between pairs of graphical elements. With a unidirectional link, a master/slave relationship is established where attempts to edit the slave graphical element in a way that affects the constraint are inhibited.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Inventor     Gay; Jonathan L. (San Diego, CA); Tatsumi; Robert B. (Poway, CA)
Owner/Assignee     Adobe Systems Incorporated (Mountain View, CA)
Patent assignment
All assignments
Publication Date     July 25, 1995
Application Number     07/904,059
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     June 23, 1992
US Classification     715/502 345/677 715/961
Int'l Classification     G06F 003/00
Examiner     Powell; Mark R.
Assistant Examiner     Breene; John E.
Attorney/Law Firm     Christensen, O'Connor, Johnson & Kindness
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/155 395/156 395/157 395/158 395/159 395/160 395/161 395/133 395/139 395/138 345/131
Patent Tags     establishing constraints links distribution frame between graphical elements resolving constaints
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5333254
Robertson
715/853
Jul,1994

[0 after 0 votes]
5123087
Newell
715/862
Jun,1992

[0 after 0 votes]
4974174
Kleinman
345/678
Nov,1990

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


The embodiments of the invention in which an exclusive property or privilege is claimed are defined as follows:

1. A method of establishing spatial relationships between two or more graphical elements displayed on a page in response to a user's input, each graphical element having dimensional attributes and a position on the page, comprising:

(a) creating, in response to user input, a distribution frame defining an area on the page bordered by a boundary;

(b) automatically linking the graphical elements to the distribution frame, wherein the graphical elements are encompassed by the boundary;

(c) creating, in response to user input, alignment and distribution criteria that determine spatial relationships between the graphical elements placed within the distribution frame; and

(d) establishing, in response to user input, links between the attributes of each graphical element and the distribution frame wherein at least one dimension of each graphical element is a function of the area encompassed by the distribution frame.

2. The method of claim 1 wherein the step of creating alignment and distribution criteria includes the step of arranging the graphical elements in the distribution frame in an order.

3. The method of claim 2 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one vertical axis.

4. The method of claim 3 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

5. The method of claim 2 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

6. The method of claim 2, wherein the step of the step of arranging the graphical elements in the distribution frame in an order includes the step of locking the order of the graphical elements in the distribution frame so that the order of the graphical elements cannot be rearranged.

7. The method of claim 1, wherein the step of establishing links between the attributes of each graphical element and the distribution frame includes automatically resizing the area bounded by the distribution frame to just encompass the graphical elements in response to a change to the dimensions of the graphical elements.

8. The method of claim 7 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one vertical axis,

9. The method of claim 8 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

10. The method of claim 7 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

11. The method of claim 1, wherein the step of establishing links between the attributes of each graphical element and the distribution frame includes automatically resizing the graphical elements vertically to fit the area bordered by the boundary of the distribution frame in response to a change in the vertical dimensions of the distribution frame by the user.

12. The method of claim 11 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one vertical axis.

13. The method of claim 12 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

14. The method of claim 11 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

15. The method of claim 1, wherein the step of establishing links between the attributes of each graphical element and the distribution frame includes automatically resizing the graphical elements horizontally to fit the area bordered by the boundary of the distribution frame in response to a change in the horizontal dimensions of the distribution frame by the user.

16. The method of claim 15 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one vertical axis.

17. The method of claim 16 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

18. The method of claim 15 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

19. The method of claim 1 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one vertical axis.

20. The method of claim 19 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

21. The method of claim 1 wherein the step of creating alignment and distribution criteria includes the substep of creating spatial relationships for the graphical elements along at least one horizontal axis.

22. A method of establishing spatial relationships between a plurality of graphical elements displayed on a page in response to a user's input, each graphical element having dimensional attributes and a position on the page, comprising:

(a) creating, in response to user input, a distribution frame defining an area on the page bordered by a boundary;

(b) automatically linking the graphical elements to the distribution frame, wherein the graphical elements are encompassed by the boundary;

(c) establishing, in response to user input, a constraint relationship between the graphical elements in the distribution frame that specify spatial relationships between the graphical elements, wherein the constraint relationship between the graphical elements is maintained throughout editing of the graphical elements by the user; and

(d) automatically monitoring any attempts by the user to edit a graphical element; and if an edit contrary to the constraint is attempted, then inhibiting the attempt to edit the graphical element; otherwise, editing the graphical element.

23. The method of claim 22, wherein the constraint relationship includes spacing the graphical elements subject to the constraint along a vertical axis.

24. The method of claim 23, wherein the constraint relationship includes spacing the graphical elements subject to the constraint along a horizontal axis.

25. The method of claim 22, wherein the step of establishing a constraint relationship established between the graphical elements in the distribution frame includes the step of arranging the graphical elements in the distribution frame in an order.

26. The method of claim 25, wherein the step of arranging the graphical elements in the distribution frame in an order includes the step of locking the order of the graphical elements in the distribution frame so that the order of the graphical elements cannot be rearranged.

27. The method of claim 22, wherein the constraint relationship includes spacing the graphical elements subject to the constraint along a horizontal axis.

28. A method of maintaining constraints between graphical elements on a page, each graphical element including dimensional attributes and a position on the page, the method comprising:

(a) creating, in response to each constraint, a link indicative of the constraint between pairs of graphical elements that are subject to a constraint;

(b) automatically monitoring any editing of the graphical elements by a user;

(c) if an edit has taken place, determining if the constraint associated with each link is satisfied;

(d) storing in memory a dirty list of links whose constraints are not currently satisfied as a result of the edit;

(e) assigning each link in the dirty list a priority based upon criteria including whether the link is a bidirectional link or a unidirectional link; and

(f) resolving the constraints associated with the links in the dirty list beginning with links that have a higher priority and ending with links that have a lower priority by changing the attributes or position of one of the graphical elements attached to a link having a constraint that is currently being resolved in accordance with the constraint associated with that link.
 Description Submit all comments and votes
 


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