CA1330123C - Method and apparatus for generic form generation - Google Patents

Method and apparatus for generic form generation

Info

Publication number
CA1330123C
CA1330123C CA000615075A CA615075A CA1330123C CA 1330123 C CA1330123 C CA 1330123C CA 000615075 A CA000615075 A CA 000615075A CA 615075 A CA615075 A CA 615075A CA 1330123 C CA1330123 C CA 1330123C
Authority
CA
Canada
Prior art keywords
bordered
block
bordered area
routine
text
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CA000615075A
Other languages
French (fr)
Inventor
Michael William Morgan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intuit Inc
Original Assignee
ChipSoft CA Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ChipSoft CA Corp filed Critical ChipSoft CA Corp
Priority to CA000616728A priority Critical patent/CA1340593C/en
Priority to CA000616691A priority patent/CA1339754C/en
Application granted granted Critical
Publication of CA1330123C publication Critical patent/CA1330123C/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging

Abstract

METHOD AND APPARATUS FOR
GENERIC FORMS GENERATION

ABSTRACT OF THE DISCLOSURE
An apparatus and method are disclosed for incorporating a topological two-dimensional partitioning procedure for dynamically creating, revising, storing, displaying and printing generic forms. The generic form comprises a plurality of bordered areas. Each of the bordered areas may be included within a larger bordered area, and each of the bordered areas may contain a plurality of nonoverlappinq smaller bordered areas, text or graphics. The text includes none, one or more lines of characters and the smaller bordered areas are arranged either vertically or horizontally with relation to each other.

Description

-l- 133~123 ;i ~

METEIOD AND APPARATUS FOR
GENER $ C FORM GENERAT I ON

F I E LD OF TH~; I NVENT I ON
An apparatus and method are disclosed for incorporating a topological two dimensional partitioning procedure for dynamically creating, revising, storing, printing and displaying generic forms.

i.
BACKGROUND OF THE I NVENT I ON ; ~ ~-In the past decade a growing interest has evolved for using computers for generating forms. Forms have been and always will represent a communications metaphor that document many different types of transactions. -~- -Whether transactions happen with or without computers, forms are everywhere. Most forms are preprinted, created and supplied by external form suppliers. The Business Forms Management Association estimates that businesses spend between S6 and S8 billion dollars a year to create and print preprinted forms. Industry pundits estimate that businesses spend as much as twenty times that amount storing, managing and printing forms.
- , The process for generating a form is typically a tedious one. When the form finally receives final approval and goes on to an outside printer, it gets printed, distributed and hundreds of thousands of copies of the form are inventoried into a paper storage. Each RoST073L8 . 26 133~123 time the form undergoes modification, the process of approval and storage starts all over again.
In an effort to economize the process of generating forms, electronic form software has been developed. Such software is another example of the personal computer's rapid displacement of functions previously done on expensive, dedicated, single-purpose types of business equipment, such as electronic publishing and business presentation graphics. Electronic forms are defined as computer-generated forms that incorporate graphics which exist independent of variable data and can be generated on demand. ~lectronic form software provides individuals with an alternative to using expensive phototypesetting equipment, with the additional benefit of adding speed and accuracy.
Electronic forms represent significant cost savings to businesses. When compared to the costs of designing and completing preprinted forms, electronic forms save businesses money; they require no physical space, they are easily revised (reducing waste of obsolete forms), and they often are printed on cut sheet paper. The costs of using computer-generated forms on cut sheet paper i5 less than purchasing preprinted forms. The cost of completing forms, estimated to be as much as twenty times the cost of the form, will be reduced by having built-in calculations and logic checking.
Although electronic forms are stored in computers, the user can do many things with electronic forms that are now done on preprinted forms; they can be filled in, approvedr filed, and printed. The current packages, however, are limited in their application because these packages are really just typing programs for enabling a user to efficiently fill in a~d have neatly typed up a form.

.~
"::
..
-.~

133~1~3 Another type of form package enables a designer to design a form on screen and save it for reuse, or to scan in an existing paper form, which is then displayed on screen for completion, The advantage of these form packages is the ability to produce the electronic form to ~he exact specifications of the preprinted form, easing the user transition to the electronic form by providing the same "look~ to the electronic form. Many of these form packages result in intelligent forms or smart forms.
Intelligent forms generally imply forms that are interactive in numerical intelligence. In contrast to "dead forms~, these forms will accept user entries, compute values and may even link values or amounts to other forms. The sophistication of the user entry acceptance (i.e. formatting, error checking, etc.) and the sophis~ication of computation and linking may vary ~-considerably across different form packages. -~
A significant design issue in form generation with regard to these existing packages is the level of flexibility that the package has in editing or revising the form after a layout has been created. Stated differently, even if a form packase has tackled the complex issues of computations, linking, interfacing with the database, etc., the ability of the package to edit or revise the layout of the form is a pressing issue in ;~
determining the value of an electronic form generation packase. The issue boils down to whether a form once created can be easily changed, for example, by deleting a field, making a field smaller, making a field larger, moving a field, all while the rest of the form automatically adjusts to accommodate the change. ~ -To date, no package has incorporated a concept of "graphics intelligence~ to enable a system to-dynamically -adjust and accommodate for changes in the form. Graphics intelligence is a type of intelligence in form creation _4_ 133~3 which enables all of the elements within a form to nunderstand~ their positional relationships vis-a-vis each other. Hence, changes made to element size, text font, text size, placement, shape, etc., may cause other portions of the form to readjust, stretch, move over, or realign to positionally accommodate the change while maintaining the overall integrity or ~basic look~ of the form. By contrast, in existing form packages, when certain changes in layout are made, subsequent manual adjustments of other individual elements in the form to fit the new design may be required. Without incorporating graphics intelligence, such changes to the graphic layout of the form require a designer to redraw portions of the form and in some circumstances to redraw the entire form.

E
.
',',,, ~

_5_ 133~123 SUMMARY OF THE I NVENT I ON
The present invention provides a method and apparatus that reduces or eliminates the disadvantages referred to above.
, Briefly the present invention includes an apparatus and method for incorporating a topological two dimensional partitioning procedure for dynamically creating, revising, storing, displaying and printing generic forms. For the first time, changes to the graphical layout of a form, particularly a complex form, do not necessarily require designer intervention in order ~ -to redraw portions of the form and, in some circumstances, the entire form. Particularly, the ;
present invention provides a me~hod and apparatus for maintaining the integrity of the form (i.e. information integrity and structural integrity) by readjusting, stretching, realigning, etc. bordered areas within the form in order to accommodate changes made to bordered ~-~
area size, ~ext font, text size, placement, shape, 2tc.
The preferred embodiment of the invention includes an apparatus and method for dynamically altering a generic form in a computer. The form can be characterized as a two-dimensional space partitioned in~o a plurality of bordered areas. One or more bordered areas include text. The text includes none, one or more -lines of characters and each character of the text has adjustable font attributes. The adjustable font attributes include font type, font style, and font size. -The method of the preferred embodiment for dynamically altering the form occurs in the following two steps.
First, for one or more bordered areas of the form, the size of the one or more bordered areas is altered by changing the adjustable height and/or the adjustable ...-~ 6- 133~123 :.
width of the one or more bordered areas so that the adjusted one or more bordered areas overlap one or more other bordered areas of the form. For the bordered areas havin~ one or more lines of text, the font attributes of the text may also be changed so that the text overlaps into one or more other bordered areas of the form.
Second, for one or more bordered areas of the form, the adjustable height and/or the adjustable width and/or the adjustable font attributes of the text are dynamically altered (i.e. increased or decreased) in order to ensure that overlapping does not occur.
In the preferred embodiment the step of dynamically altering the adjustable height and/or the adjust~ble width and/or the adjustable font attributes includes the step of aligning the borders of at least two of the bordered areas so that the borders maintain alignment regardless of what happens as a result of the step of dynamically altering. This step typic ,ly includes aligning the borders of the at least two bordered areas in a vertical direction or a horizontal direction.
The present invention also includes an apparatus and method for representing a generic form in a computer.
~he form comprises a plurality of bordered areas. The bordered area is considered to be the fundamental structural unit within the form and it contains other smaller bordered areas, text or graphics. Text consists of one or more characters, and graphics includes two dimensional drawings (i.e. lines, arrows, circles, poly~ons, fills, pictures, etc.). For purposes of describing the preferred embodiment of the present invention, bordered areas shall be limited to containing text or other bordered areas, but it should not be limited thereto. Each of the bordered areas may also be included within a larger bordered area. Each of the ;-~
."~
, ~

13~2~

bordered areas of the form is associated with a record which defines the characteristics of the associated bordered area. The method for representing a generic form comprises the following two steps. For each of the associated records of the bordered areas of the form, the first step includes indicating the larger ~ordered area, if any, which contains the bordered area, and the second step includes indicating the plurality of smaller ~-bordered areas, if any, which are included within the bordered area. ~-~
Furthermore, the method may also include the step of indicating within the associated record of the bordered area whether the included smaller bordered areas are arranged horizontally or vertically within the bordered area. The orientation of the bordered areas is important for enabling the preferred embodiment to properly accommodate changes in the size of each bordered area.
The preferred embodiment also includes a method and apparatus in a computer for calculating the size of one or more bordered areas within a generic form. The size of each of the bordered areas is represented by a width and a height. ~ach of the bordered areas may be included -~
in a larger bordered area and each bordered area includes a plurality of smaller nonoverlapping bordered areas or -~-text. Text consists of none, one or more lines of -~-characters, The method for calculating the size of the bordered area occurs in the following steps.
The width of one of the bordered areas (the -~
currently processed bordered area) of the generic form is obtained. Then a determination is made as to whether the bordered area includes a plurality of smaller bordered areas or whether the bordered area includes text. When the bordered area includes text, the next step includes determining the heiqht of the bordered area by D

.... ~ .. .. ~ , . . , . . `

133~23 determining the cumulative height of the none, one or more lines characters. When the bordered area includes the plurality of smaller bordered areas, the next step includes determining whether the included smaller bordered areas are arranged within the bordered area horizontally or vertically. When the included smaller bordered areas are arranged horizontally, the next steps includes determining the height of each of the included smaller bordered areas, determinin~ which of the determined heights is the maximum height and determining the width of each of the included smaller bordered areas.
When the included smaller bordered areas are arranged vertically, the next step includes determining the height of each of the included bordered areas and determining the cumulative height of all of the included bordered areas. The widths of the vertically arranged included smaller border areas are equal to less than the width obtained for the currently processed bordered area.
The steps for determining the height of each of the included smaller bordered areas further include the step of performing one or more of the steps of the above method one or more times to determine the size of each of these smaller bordered areas. This process continues until all of the bordered areas within the form and their descendants have been sized.
Additionally, the preferred embodiment of the invention includes a method and an apparatus in a computer for determining the location of the contents of a bordered area. The contents of the bordered area includes a plurality of nonoverlapping smaller bordered areas or none, one or more lines of text. The bordered area has top, bottom, left and right boundary locations and the bordered area may be included within a larger bordered area. The smaller included bordered areas also have top, bottom, left and right boundary locat;ons. The . . . . . . .

~ 9 133~1~3 method for determining the location of the contents occurs in the following steps.
The locations of the top, bottom, left and right boundaries of the bordered area whose contents need to be located are obtained. Then a determination is made on whether the bordered area includes the plurality of smaller bordered areas or text. When the bordered area includes text, then a determination is made on whether the text is aligned to the top, middle or bottom boundaries of the bordered area. When the bordered area includes smaller bordered areas, then a determination is made as to whether the smaller bordered areas are arranged within the bordered area horizontally or vertically. Assuming that the bordered area contains horizontally arranged smaller bordered areas, the location of the left and right boundaries for each of the ~;
included smaller bordered areas are determined. The location of the top boundary for each of the included smaller bordered areas are aligned to the top boundary of the bordered area. The location of the bottom ~oundary for each of the included smaller bordered areas are aligned to the bottom boundary of the bordered area.
When the bordered area contains vertically arranged bordered areas, the location of the top and bottom boundaries for each of the included smaller bordered areas are determined. The location of the left boundary of each of the included smaller bordered areas ~re aligned to the lef~ boundary of the bordered area, and the location of the right boundary for each of the included smaller bordered areas are aligned to the right boundary of the bordered area.
The displayed form is represented by a plurality of pixels which are selectively enabled or disabled on a display. Each pixel identifies an X,Y coordinate address. In the preferred embodiment, each of the -lo- 133~2~

bordered areas within the generic form is rectangular in shape and each of the bordered areas is representéd by two pairs of X,Y coordinate addresses. One of the pairs of the X,Y coordinate addresses represents the location of one corner of the rectangular bordered area and the other one of the pairs of the X,Y coordinate addresses represents the opposite corner of the rectangular bordered area. The method for locating a bordered area further contains the step of, for each bordered area of the generic form, assigning the locations of the bordered areas of the generic form their X,Y coordinate addresses.
In this way, the locations of the top, bot~om, left and right boundaries for the bordered areas are defined.
Lastly, the preferred embodiment of the invention also includes an apparatus and method for displaying and printing the generic form according to the locations determined for each of the bordered areas of the generic form.

L~
,.

!;`. ` ~ :
,':' . : ` ' ' '' ' . `~ ~' .'`"'~' ' 133~ ~l23 gRIEF DESCRIPTION OF ~HE DRAWINGS
Fig. 1 is a block diagram representation of a computer base system 2 for creating, revising, storing, displaying and printing generic forms in accordance with the present invention; ; -~
Fig. 2 depicts a bordered area having three elements and demonstrates reconfiguration without sraphics intelligence;
Fig. 3 depicts the same bordered area having three elements as shown in Fig. 2 and demonstrates reconfiguration with graphics intelligence and without horizontal constraints -Fig. 4 depicts the bordered area h ving three elements as shown in Fig. ~ and Fig. 3 and demonstrates reconfiguration with graphics intelligence and with horizontal constraints;
Fig. 5A depicts a typical form as displayed on the screen display means S (Fig. 1) of the computer based system 2 (Fig. l);
Fig. SB depicts a menu item requested by a user of system 2 (Fig. 1) for changing font size of a portion of the form t~xt (the "Caption Text~ i.e., columns 44 and 46, Fig. SA) from 9 points to lS points;
Fig. 6A depicts the form as shown in Figs. SA and 5 with the font size increased to lS points resulting in rewrapping of text and the verti~al length of the resulting form scrolled off the top and bottom of the screen;
Fig. 63 depicts the form of Fig. 6A with the numbering field moved to the left, forcing text to the ? .
~'.-.' ,. .

-12- ~ 3 ~ 3 left of it to rewrap again and vertical length to readjust in order to accommodate for the reduced horizontal width Fig. 7A depicts the form of Fig. 6B with the right border of the numbering field moved to the right, extending the horizontal width of the numbering field and causing the numbers to recenter themselves;
Fig. 7B depicts the form of Fig. 7A with the left border of the numbering field moved further to the right, causing text to automatically rewrap to fill the additional horizontal space and causing the form to shrink vertically, Fig. aA depicts a form similar to Figs. 5A-7B, which is further divided into rectangular bordered areas:
Fig. 8B shows a hierarchial tree structure representation of the top portion of the form as shown in Fig. 8A
Fig. ~C is a table representation of the top portion of the form as shown in Fig. 8A and 8B, indicating whether the bordered area includes children or text Fig. 9 depicts a flow block diagram of the RESIZE/REDRA~ Routine performed by the computer base system 2 (Fig. 1) for resizin~ and redrawing generic forms;
Fig. 10 depicts a flow block diagram of the ~ITFORM
Routine referenced during the RESIZE/REFORM Routine (Fig.
9) for determining the size and placement of the root bordered area of the form and all of its descendants:
Fig. 11 i5 a flow block diagram of the DRAWFORM
Routine referenced during the RESIZE/REFORM Routine (Fig.

L~ ' -13 1 3 3 ~ 1 2 3 9) for displaying the resized form and all of its descendant ~ordered areas on display screen 5 (Fig. l); ~-Fig. 12 is a flow block diagram of the PLACEFORM
Routine referenced during the FITFORM Routine (Fig. 10) for determining the location or placement of the root -bordered area of the form and all of its descendants;
Fig. 13A is a flow block diagram of the FITCELL
Routine referenced during the FITFORM Routine (Fig. 10) for resizing a bordered area of a form;
Fig. 13B is a flow block diagram of the COM~UTE SIZE
FOR TEXT CELL Routine referenced during the FITCELL
Routine (Fig. 13A) for calculating the size of a bordered area containinq text;
Fig. 13C is a flow block diagram of the COMPUT~ SIZE
FOR VERTICAL CELL Routine referenced during the FITCELL
Routine (Fig. 13A) for determining the size of a bordered area which contains vertically arranged children and all of its descendants:
Fig. 13D is a flow block diagram of the COMPU~E SIZE
FOR HORIZONTAL CELL Routine referenced during the FITCELL
Routine (Fig. 13A) for determining the size of a bordered area which contains horizontally arranged children and all of its descendants;
Fig. 13~ is a flow block diagram of the REAPPORTION
CHILDRENS' WIDT~ Routine referenced during the COMPUTE
SIZE FOR HORIZONTAL CELL Routine (Fig. 13D) for apportioning the total width available among each of the children and all of its descendants;
Fig. 14~ depicts a "blown-up" version of the upper lefthand corner of the form shown in Fig. 8A;-' ;' ~ .

-14- 133~123 Eig. 143 is a table representation of the form shown in Fiq. 14A along with old and new widths, height, rectangular coordinates and the contents of each bordered area;
Figs. 15A, lSB and 15C depict a results table for showing the contents of a stack and the currently processed bordered area according a detailed example of FITCFLr Routine Set (Figs. 13A-F);
Fig. 16A is a flow block diagram of the PLACECELL
Routine referenced by the PLACEFORM Routine (Fig. 12) for calculating the boundary locations for the contents of the bordered area currently processed;
Fig. 16B is a flow block diagram of the PLACE TEXT
CELL Routine referenced during the PLACECELL Routine (Fig. 16A) for determining the displayable area and the text drawing area for the text of the currently processed bordered area;
Fig. 16C is a flow block diagram of the PLACE
HORIZONTAL CELL Routine referenced during the PLACECELL
ROUTINE (Fig. 16A) for determining the left and right boundary locations for each of the horizontally arranged children associated with the currently processed bordered area and determining placement of all of its descendants;
Fi~, 16D is a flow block diagram of the PLACE
VERTICAL CELL Routine referenced during the PLACECELL
ROUTINE (Fig. 16A) for determining the top and bottom locations for each vertically arranged child within the currently processed bordered area and determining placement of all of its descendants;
Fig. 16E is a flow block diagram of the DETERMINE
VERTICAL ALIGNMENT Routine referenced during the PLACE
VERTICAL CELL Routine (Fiq. 16E) for determining the ~.

"
'~,~. ': . . .

~,,.. ; ~, , ~33~3 . ::
vertical location of the top-most border of the first vertically arranged child within the currently processed bordered area and determining placement of all of its descendants:
Fig. 16F is a flow block diagram of the JUST~FIED
Routine referenced during the DETERMINE VE~TICAL
ALIGNMENT Routine (Fig. 16E) and the PLACE ~EXT CELL
Routine (Fig. 16B) for calculating the starting location of which the contents are to be drawn (i.e., border of first child for the DETERMINE VERTICAL ALIGNMENT Routine (Fig. 16E), or the first line of text, for the PLACE TEXT
CELL Routine (Fig. 16B)) within the currently processed bordered area;
Fig. 17A, 17B, 17C and 17D depict a results table for showing the contents of the stack and the pointer to the currently processed bordered area according a detailed example to the PLACECELL Routine Set (Fig.
16A-F);
Fig. 18A is a flow block diagram of the DRAWC~L
Routine referenced during the DRAWFORM Routine (~ig. 11) for displaying each of the bordered areas of a form, their descendants and ~text;
Fig. l~B is a flow block diagram of the DRAW BORDERS
Routine referenced durinq the DRAWCELL ~outine (Fig. 18A) for displaying each nonprintable and/or printable border of the currently processed bordered area;
Fig, i~C is a flow block diagram of the DRAW
CONTENTS Routine referenced during the DRAWCEL~ Routine (Fig. laA) for displaying the contents (i.e. all descendant bordered areas and text) of the currently processed bordered area. ~--16- 133~1 23 TA8LE OF CONTENTS TO THE DET~ILED DESCRIPT~ON
DETAILED DESCRIPTION
A) INTRODUCTION
B) DETAILED DESCRIPTION OF THE PREFERRED
EMBODIMENT
1) Introduction to ~Graphics Intelligence"
2) Bordered Area Record and Text Record 3) RESIZE/REFORM Routine tFig, 9) 4) FITFORM Routine (Fig. 10) S) DRAWFORM Routine ~Fig. 11) 6) PLACEFORM Routine (Fig. 12) 7J FITCELL Routine Set (Figs. 13A-F) a) FITCELL Routine (Fig. 13A) b) COMPUTE CELL FOR TEXT OE LL ~outine (Fig. 13B) c) COMPUTE SIZE FOR VERTICAL CELL
Routine (Fig. 13C) d) COMPUTE SIZE FOR HORIZONTAL CELL
Routine (Fig. 13D) e) R~APPORTIONED CHILDRENS' WIDTH
Routine (Fig. 13E) 8) DETAILED EXAMPLE of the FITCELL Routine Set (Figs. 13A-E) 9) PLACECELL Routine Set (Figs. 16A-F) a) PLACECELL Routine (Fig. 16A) b) PLACE TEXT CELL Routine (Fig. 16B) c) PLACE HORIZONTAL CELL Routine (Fig. 16C) d) PLACE VERTICAL CELL Routine (Fig. 16D) e) DETERMINE VERTICAL ALIGNMENT Routine .~ ' ~ ~, , , i 1 3 ~ 3 (Fig. 16E) f) JUSTIFIED Routine (Fig. 16F) 10) DETAILED EXAMPLE OF THE PLACECELL Routine Set (Figs. 16A-F) 11) DRAWCELL Routine Set (Figs. 18A-D) ~:
a~ DRAWCELL Routine (Fig. 18A) b) DRAW BORDERS Routine (Figs. 18B) c) DRAW CONTENTS Routine (Fig. 18C~

~'~

-18- 133~123 DETAILED DESCRIPTION
~ .
A ) I NTRODUCT I ON
The following description of the present invention is largely in terms of algorithms and symbolic representations of operations on data (Fig. 9 through Fig. 18C), received by and stored within a computer Fig.
1. These representations are the means used by those skilled in data processing to most effectively convey the nature of their conceptions to others skilled in the art.
An algorithm, as defined in the context of this invention, is a self-consistent sequence of steps leading to a desired result. Such steps are those requiring physical manipulation of physical quantities. ~hese quantities are typically in the form of electromagnetic signals capable of being stored, transformed, combined, compared, and otherwise manipulated. The signals are typically referred to as bits, values, elements, symbols, characters, terms, memory cells~ display elements, or the like. It should be kept in mipd, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to such quantities.
Although the manipulations performed by the algorithms may be associated with mental operations performed by human operators, there is no human operator necessary or, in fact desirable, in any of the operations described herein which form the present invention.
Useful machines for performing the operations of the present invention include general purpose digital computers or other similar devices.
The present invention also relates to an apparatus for performing these operations. This apparatus may be specially constructed for the required purpose or may comprise a general purpose computer (i.e., IBM PC-AT
*Trademark x',, ~
,~, . . . .
~............. .

., :.. ,, .. . ... ,, , .- . ~ .

-l9- 133~1 23 .
Apple Macintosh, Compac-386, etc.i; However, it should be noted that the algorithms presented herein are not necessarily related to any particular computer. Various general purpose machines may be used with the teachings discussed herein, or it may prove more convenient to construct a more specialized apparatus to perform the required method steps of operation.
It should be noted that no particular program language is indicated for performing the various operations described herein. This omission is deliberate, for there are no universally accepted programming languages available for all machines or procedures. Due to the complexity of the present invention, it would be tedious and difficult to follow a computer listing on the same. Therefore, the operations and procedures described herein are illustrated in the accompanying figures which sufficiently depict to one ordinarily skilled in the art the methodology for performing the present invention. It should also be apparent to those skilled in the art that although the present invention may be depicted in the form of algorithms shown in the figure herein, well known circuits and structures may also be used to implement the present invention in a ~hard-wired~ form.
Figure 1 depicts a computer based system 2 for generating generic forms according to the present invention. Computer 8 contains controller board 6 for performing three major operations of the computer. They are, one -- input/output operations for communicating information in the properly structured form to and from other parts of the computer 8, two -- a central processing unit ~CPU) (not shown) for performing all arithmetic operations, and three -- a memory for storing data. The generation of generic forms according to the present invention may be carried out by software programs ;
.V

~1~

-20- 133~l 23 processed by microprocesssor chips 7 c,n controller board 6 or in the form of special purpose hard-wired microprocessor chips 9 which would also be located on the controller board 6. ~hen the software programs for generating the generic forms are stored on controller board 6 or when the microprocessor chips having the proper hard-wire logic are implemented via the controller board 6, a platform or card for generating generic forms is created. This card may then interface with any one of a variety of computers presently available on the market.
Figure 1 also shows two forms of input devices, including keyboard 10 and mouse 12. It should be understood that the input devices may actually include card readers, magnetic or paper tape readers, or other well-known input devices, including other computers.
Computer system 2 also contains a memory device 14 for storing object code, for representing the generic forms.
The mouse 12-permits the user to input graphic information to the computer 8 through its input circuitry in a well-known manner, Generally mouse 12 provides cursor control to identify positions of the cursor on a display screen 5 within display mean 4. The display screen 5 is used to display the generic forms being generated by the present invention. The display mean 4 may be any one of several systems well-known to those skilled in the art. Another form of output device for displaying the form is printer 11. There are also many different and well known printers which are suitable for printing forms.
The cathode ray tube (CRT) of the display screen 5 comprises a plurality of pixels or picture elements which are selectively enabled or disabled in order to define desired images on the display screen 5. The pixels form a grid disposed over the CRT and the pixels are identified by a bit map. More particularly, the pixels -21- 13~123 are organized such that they can be identified according to unique X,Y coordinates in a 2-dimensional array. The 0, 0 coordinate of the bit map has been typically picked to reside in the upper left-hand corner of the CRT. The 0, 0 coordinate also represents the first poin~ of any -generic form. The pixels elements of the CRT are enabled and disabled accordinq to the object code stored in memory 14. Although the bit map may be present on the CRT, it is not completely stored in the memory 14 instead a compressed encoded version of the form is stored in memory 14. The compressed encoded version consists of only enough information to produce ~he form on the CRT. A more detailed discussion on the encoding scheme for rectangular bordered areas will be presented.

B) DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
1) Introduction to ~Gra~hics Intelliqencen A typical form has many rectangular components filled with text, for example, the familiar I.R.S. 1040 form. The main distinction between forms and word processing documents is that forms have much more structure. Forms are characteristic in that they provide a lot of information in small bordered areas or cells.
In the preferred embodiment, the form is characterized as a two dimensional space partitioned into a plurality of cells or bordered areas. The bordered area is the fundamental structural unit within a form. It must be noted that the bordered areas can be of any shape;
however, for purposes of simplifying the description of the preferred embodiment, the bordered areas are assumed to be rectangularly shaped. Bordered areas are not entirely independent of one another, rather they correspond to one another by various graphieal, spacial or topological relationships. Therefore, changes made to the spacing or relative sizes of the one or more bordered ~,. ..
~.'~'; .

, ,? , -, :~:
`~

13~123 areas within the form may effect portions of the rest of _ the form. In order to maintain these relationships the entire form may need to be altered or reconfigured when resizing occurs to any one of the bordered areas within the form.
There are several principles which are unique to the processing of forms and unique to the present invention. In order to maintain the integrity of a form (i.e. information integrity, structural integrity, etc.) certain topological relationships of the form must be maintained. The first and most important topological relationship in a form is that the bordered areas do not overlap one another. The bordered areas are considered overlapping one another when: (1) the text of one bordered area overlaps the text of another bordered area, (2) the text of one bordered area overlaps a border of another bordered area or (3) the border of one bordered area overlaps a border of another bordered area. In order to ensure that such overlapping does not occur, the system of the present invention controls one, two or all three variables which dictate the size of a bordered area and the size of the text of the bordered area. The three variables are: (1) horizontal width of the ~ordered area; (2) vertical length of the bordered area; and (3) fon~ attributes of each character of text in bordered area. The attributes consist of font style, font size and font type, etc.
More particularly, the nonoverlapping principle as controlled by these three variables (i.e. width, height and font attributes) is illustrated by the following examples. If a bordered area is widened s~ch that the bordered area overlaps one or more adjacent bordered areas, then the adjacent bordered arèas' width could be increased in an appropriate amount and the text shifted over in order to avoid such overlapping. ~

:- -~ 3~ 2~

Likewise, if the height of a particular bordered area of a form were increased such that the bordered area overlapped into another one or more adjacent bordered areas, then the adjacent bordered areas could have their heights increased in an appropriate amount and-text shifted up or down in an appropriate amount in order to avoid such overlapping. ~lso, if the text of a particular bordered area were to ~spill over" the bori~ers ~ -of the bordered area such that the text overlapped other adjacent bordered areas, then the font size of the text could be reduced and the text shifted in an appropriate amount to ensure ~hat the text did not spill over the borders of the bordered area. Lastly, to avoid overlapping into the adjacent ~ordered areas as discussed above, one or more of the variables (i.e. width, height and font size) in any combination could be altered (i.e.
increased, decreased or shifted (text) in the appropriate amount) in order to ensure that overlapping does not occur. Also any such adjustment to avoid overlapping may cause new overlapping in other adjacent bordered areas.
This will re~uire further adjustment until all bordered areas do not overlap. Although the preferred embodiment disclosed herein is directed to a specific apparatus and procedure for ensuring that overlapping bordered areas do not occur, it should not be limited thereto, for it is envisioned that a number of different embodiments could be implemented which could all successfully ensure the integrity of the form.
A second important topological relationship for a form is that certain borders of more than one bordered area of the form maintain alignment, either horizontal or vertical vis-a-vis each other, so as to create a contiguous line. For example, a column of bordered areas vertically arranged will re~uire that the left and/or right borders of each bordered area align with one another in order to remain a column. Another example of ;~ ' .
." ... ,..

~!,- ', - . .
. ~ , .
',. ".: , r~

~ -24- 133~

such alignment would be the outer boundary of the form which is made up of several bordered areas.
Additionally, the need for alignment may occur when the bordered areas of the form are aranged as a table, a grid, etc. The requirement to a~ign particular bordered areas adds additional constraint to the way in which the three variables (i.e., width, height, and font attributes), can be used in order to maintain overlapping within the form.
The procedures for maintaining the topological relationships discussed thus far are hereinafter referred to as "graphics intelligencen. Because the concept of graphics intelligence is rather abstract and difficult to grasp in a few sentences, it is best to start with a basic example of how the concept works visually. To provide "snap shots~ of graphics intelligence in action, figures 2 throuqh 7b demonstrate how it may be applied.
Referring to Figure 2 a particular bordered area 16 having three elements or smaller bordered areas lB, 20 and 22 is shown. 3Ordered area 16 may be a row of a larger for~ not shown. In order to adjust ~he ~sizing"
of the first element 18 of the bordered area 16 without using graphical intelligence, the vertical bar separating element 18 from element 20 must first be shifted to the right and the information within element 20 must then be manually reconfigured to fit in the reduced area of element 20. Bordered area 24 (Fig. 2) shows the result of shifting to the right the vertical separator between elements 18 and 20.
If graphics intelligence were applied and there were no constraints on the horizontal width of bordered area 16, then Figure 3 shows the resulting bordered area 28. The width of bordered area 18 expanded horizontally and the widths of bordered ~reas 20 and 22 .''; ''~:~'~

133~1~3 remain the same but are physically shifted over to the right of the newly positioned separator. In many situations however, horizontal constraints are placed on the form which forces the total horizontal width of the bordered area 16 to remain constant. Figure 4 represents a result of shifting to the right the vertical separa~or ~-between elemen~s 18 and 20, yet maintaining the total horizontal width of bordered area 16 constant. Note, to accommodate the horizontal width constraint, the bordered area 32 had to stretch vertically downward. In addition, the text in second element 20 rewrapped in order to accommodate the smaller horizontal width within element 20. Although this example only demonstrates changes to bordered area 16, if bordered area 16 were part of a larger form then the orientation of the rest of the form could be affected.
Figure 5A depicts a typical I.R.S. Form 3800.
The form is displayed at normal width and text font size.
Form 3800 is broken up into a series of rows and columns where each of the rows 17 - 42 provide particular information. Parts 1 and 2 of the form entitled "Tentative Credit~ and ~Tax Limit~tions~ are broken into three columns, 44, 46 and 48. Column 44 includes text regarding questions and information, column 46 is a numbering field having numbers 1 through 10, and column 48 lists monetary fiqures. Figure 5B depicts a menu item selected by a user of system 2 (Fig. 1) to change the font size of some of the form text (the ~caption text"
i.e. 44 and 46 (Figs. 5A, 5B and 6A)) from 9 points to 15 points. Figure 6A depicts Form 3800 where the font size has increased to 15 points. in this example, the form has been constrained horizontally so that it does not expand or scroll off to the right or left of the screen display 5. In this way the horizontal width of the form has been preserved and the lar~er font size forces the text to rewrap where necessary. For example, referring ~ , ~, ,-, "~

-26- 1 3 3 ~ ~ ~s~
.

to Figure 5A and 5B under Part 1, text lines 24, 26r 30 and 32 which only occupied one line, wrap to the following line as shown in Figure 6A. The result is that the Form 3800 stretches in the vertical direction in order to accommodate for the chan~es in font size. In one sense, the form ~800 acts like a rubber sheet that can be pulled and tugged in any direction (in this case, the vertical direction).
Note that horizontal and vertical dimensions of a bordered area can be graphically manipulated independent of one another. In Figure 6B the numbering field (col~mn 46) has been moved to the left, forcing the text under part l (column 4~) to further wrap and readjust to accommodate for the reduced horizontal space.
Note in Figure 6B that text lines either wrap for the first time (i.e., 20 and 28) or further wrapping occurs on lines 24, 26, 30 and 32.
Referring to Figure 7A, the right border of the numbering field in column 46 has been moved to the right, extendinq the horizontal width of the numbering field 46 and causing the numbers to recenter themselves.
Referring to Figure 7~, the left border of the numbering field ~6 moved further to the right, causing the numbers in column 46 to move over and recenter, and the text in column 44 to automatically rewrap to fill up the increased horizontal space in the column and causing the form to shrink (replace) ver~ically. Note that line 17 is now visible in Figure 7B, whereas in Figure 7A, line 17 scrolled off the top of screen.
Several observations can be made regarding the changes to IRS form 3800 in Figures 5A, 5~, 6A, 6B, 7A
and 7B. Namely, changes made to bordered area size, text -font, text size, placement, shape, etc., may cause all -~
the other bordered areas to read;ust, stretch, move over ':

--,:' '. , , '. . . ,, , . , , " ' ' ' ~ . : . , -27- 13~123 or realign to positionally accommodate the change while maintaining ~he overall intesrity or basic look sf the form. A preferred embodiment for fulfilling these operatio~s is depicted in fi~ures 9 through l~C.
Additional observations include the following points. A bordered area containing text can have different widths by ~rewrapping" text. To make a bordered area narrower (or wider), the text is broken at certain points in order to allow it to fit inside the new specified re~ion. To make a bordered area narrower requires more lines of text, c~using the bordered area to stretch or become vertically taller. Alternatively, making a border wider requires fewer lines of text, causing the bordered area to shrink or become shorter.
A form can also have different widths by adjusting the boundaries of several bordered areas contained within the form. To make a form narrower or wider, the widths of one or more bordered areas containing text are reduced or increased in appropriate amounts. The appropriate amount for each bordered area may be calculated by determining the total amoun~ the widths increases or decreases for each row of ~ordered areas of a form, and then apportioning the increase or decrease among each of the bordered areas in the same row. The text within the bordered area is rewrapped to fit the new widths. The heights of all of the bordered areas are increased (or decreased) in appropriate amounts to include the rewrapped text. Finally, the positions of all of the bordered area are adjusted so that no bordered areas overlap. In this way the height of the form as a whole will increase (or decrease).
Referrinq to Figure 8A, I.~.S. Form 3800 is shown further divided into rectangular bordered areas.
Particularly, the top portion of the I.R.S. Form 3800 ., ~

,~
.

133~123 -2~-(52, Fig. 8A) is shown subdivided into several smaller bordered areas. The IRS form 3800 may be considered a hierarchical tree with the top level or highest node of the hierarchical tree representing the largest bordered area of the form and lower level nodes which branch from the top level representing smaller bordered areas which are included within the largest bordered area. The top level bordered area can be considered to be the "parent"
to the lower level children bordered areas, "siblings.~
A sibling may also be a parent to lower level children as well, Eventually, all branches stemming from the top level bordered area end with a bordered area having text.
For each level of siblings (children who have the same parent), the present invention assumes that none of ~he siblings overlap regardless of the content ~i.e.
descendant bordered areas or text) of each sibling bordered area. Figure 8B shows the hierarchical tree structure representation of the portion of the form shown in Figure 8A. The tree structure representation emphasizes which bordered areas are included in other -bordered areas, Figure 8C is a table representation of the form shown in Figs. 8A and 8B. The table indicates whether the contents of each bordered area include children (horizontally or vertically arranged) or text;
(i.e. whether the bordered area contains sibling bordered areas which are horizontally or vertically arranged with -relation to one another or whether the contents include text.) Referring to figures 8A, 8B, and 8C, each bordered area 54, 56 and 58 is included within the larger bordered area 52. Each bordered area contains a plurality of smaller bordered areas or text; for example, border area 60 within bordered area 54 contains smaller bordered areas 61 and 63 and bordered area 62 also within bordered area 54 contains text, "Department of the Treasuryn, The top portion 52 of the IRS Form 3~00 (50, 13~123 Fig. ~A) may also be considered a hierarchical tree structure as shown in Figure 8B. The largest bordered area or "parent" bordered area 52 is shown at the top or first level of the tree structure. The parent bordered area 52 is subdivided into "children~ or nsibl~ng"
bordered areas 54, 56 and 58. Bordered areas 54, 56 and 58 are shown at the second level of the tree structure and they are arranged horizontally with relation to one -another (as shown in Fig. 8A and are indicated in Fig.
8C) within the bordered area 52.
Each bordered area 54, 56 and 58 contains further smaller bordered areas and is, therefore, considered to be the parent of the smaller bordered areas. Specifically, bordered area 5~ is the parent bordered area for the children bordered areas 60, 62 and 64. Likewise, bordered area 56 is the parent bordered area for children bordered areas 66 and 68. ~ordered area 58 is the parent bordered area ~or the children bordered areas 70, 72 and 74. The children bordered areas of each bordered area 54, 56 and 58 are arranged vertically (as indicated Fig 8B). At the third level of the tree structure, many of the bordered areas are bottom nodes 62, 64, 66, 68 and 70. Referring to Figure 8A, note that all bottom nodes to the tree contain text.
Looking to the fourth level of the tree structure, bordered area 60 is the parent for child bordered areas 61 and 63. Child bordered areas 61 and 63 are arranged horizontally to one another within bordered area 60.
Because bordered areas 61 and 63 are bottom nodes, they contain text. Specifically, bordered area 61 contains the word n IRS No.~ and bordered area 63 contains the number "3800n.

r~ -F~ .
'"
.... ..
.~. . .

~ 3 ~

2) Bordered Area Record and Text Record Each bordered area of the form is associated with a record of data which defines the characteristics of that bordered area. The total set of records defines the hierarchical tree structure of the form (as shown in Figs. 8A and 8B). The records interlink each of the borders within the generic form. The system (Fis. 1) incorporating the invention provides the necessary information to the records associated with each of the bordered areas of the form. The record for each bordered area contains an indication of the larger (parent) bordered area, if any, which includes the bordered area.
The record also indicates whether the bordered area contains a plurality of smaller bordered areas (children). For example the record associated with bordered area 60 would indicate that it contains a plurality of bordered areas (i.e. children ~ordered areas 61 and 63).
The record indicates whether the smaller included bordered areas (i.e. 61 of 63) are arranged -~
vertically or horizontally within the bordered area 60. -~-For example, the record for bordered area 52 would indicate that bordered areas 54, 56 and 5~ are horizontally arranged within bordered area 52. However, the record for bordered area 54 would indicate that the bordered areas 60, 62 and 64 are vertically arranged -~
within bordered area 54. Also, the record for bordered area 58 would indicate tha bordered areas 70, 72 and 74 are vertically arranged within bordered area 58. The orientation of the bordered areas is important for ~-enabling the preferred embodiment of the invention to properly accommodate changes to the generic form (to be discussed further shortly).

1 33~ 23 The record for the bordered area indicates which of any other bordered areas, are ordinally adjacent (previous and next for horizontally arranged bordered areas, above and below for vertically arranqed bordered areas) to the bordered area and are included within the same parent bordered area (nsiblings~). For example, bordered area 56 is adjacent to both bordered areas 54 and 58. Additionally, bordered area 62 is adjacent to bordered areas 60 and 64, which are above and below bordered area 62. The record indicates the quantity of smaller bordered areas (children) contained in the bordered area. For example, bordered area 54 contains three bordered areas -- 60, 62 and 64. The record indicates the size of the bordered area by ~width~ and ~height" of the bordered area. In the preferred embodiment width and heiqht are measured in units of pixel elements.
In the preferred embodiment, the placement or location of the bordered area within the form is also indicated in the record associa~ed with the bordered area. The location is represented by at least one pair of X,Y coordinates designated in units of pixel elements.
When the bordered areas are rectangular in shape, each bordered area is defined by two pairs of coordinates; one of the pairs of coordinates identifies the location of the top left corner of the bordered area and the other pair of coordinates identifies the location of the bottom right corner of the bordered area. In this way only two pairs of coordinate values need to be stored in memory in order to identify the location of the bordered area.
This representation of the bordered area is considered an encoded version of the bordered area. Alternaeively, the rectangular area could also be identified by two pairs of coordinates which indicate the locations of the opposite corners of the bordered area. The record also indicates ordinal values of children bordered areas within the r~ -.
.~ ., ~ . ~
., ~
., ." i.". ~ . ~ .

-32- 133a~23 parent bordered area. For examplé, child bordered areas 54, 56 and 52 are included in the parent bordered area 52 and child bordered area 54 can be designated to be in the first ordinal position, child bordered area 56 in the second ordinal position, and bordered area 58 in the last ordinal position. The record may only contain a subset of this information. The ordinal positions of the child bordered areas enables the present invention to point to the children bordered areas one at a time for processing purposes.
Each bordered area within the generic form has a certain boundary defined by a border line (visible or invisible). The boundary defines the exterior limit of each bordered area of a particular form regardless of the ;
shape of the bordered area. In the example shown in Figure 8A, the borders for the bordered areas are shown as dotted lines. The border can have unlimited variety attributes which define its thickness, color, roundness, pattern (solid, dotted, dashed etc.), etc. The attributes associated with the border are also stored in the record associated with the bordered area.
In the preferred embodiment, each bordered area record is pointed to by another data structure called a record pointer. The record pointer contains the address to the data structure which contains the record data. If ~-a bordered area does not contain ch;ld bordered areas, th~ record for the bordered area will contain a data structure called a text pointer. The text pointer -~
contains the address of another data structure or text record which includes record information describing the characteristics of the text included within the bordered area.
To edit text in a bordered area the text editing capability of a computer needs to know where and "

_33_ 133~3 how to display the text, where to store the text, etc.
The display, storage and editing information is contained in the text record, which defines the complete editing environment. For example, in the Apple Macintosh environment, one prepares to edit text by specifying a "destination rectangle" in which to draw the text and a "view rectangle" in which the text will be visible. The text record contains both the destination rectangle and the view rectangle areas. Information in the text record also indicates the heiqht of each line of characters which make up the text, the total number of characters which form the text, the number of lines of text within the bordered area, the character style, font type and font size. Each character can have a font independent of any o~her character. The font includes the font family (Helvetica, Courier etc.), stylistic variations (such as boldness and slant) and event special effects (such as shadows). This information is critical for determining the vertical length a particular bordered area must have in order to accommodate the wrapping of the text within the horizontal width and the accumulated height of each line of text. Those skilled in art are familiar with various procedures for determining the wrapping requirements of text in a particular area.
In order to determine where the characters begin in each line of text, the posi~ion of the ~irst character is stored in the text record. The record also contains an indicator indicating whether the text is justified to the right, left, top, bottom or center of the bordered area. For example, the words "General 3usiness Credit" are justified to the center (vertically and horizontally) of the bordered area 66. ~hereas the words "Tentative Credit~ are justified to the left of the bordered area 80 (ho~izontally).

,.

'':: ' .. . . ..

' - :., 3) RESIZE/REFORM Routine (Fiq. 9~
Figure 9 is a flow diagram of the RESIZE/REFORM
Routine for recomputing and drawing forms. Essentially this routine is the highest level program for calling other programs for sizing and drawing a particular form. e~
Specifically, at block 84, the FITFORM Routine (~Fig.
10"~ is called for sizing the bordered areas within a form which may have just undergone modifications. Then at block 86, the DRAWFORM Routine (nFig~ lln) is called ~-~
to display the newly sized form on the display screen 5 ~Fig. 1~). Then during block 88 the routine completes ~-its operation.
4) FITFORM Routine (Fiq. 10) Referring now to Figure 10, a more detailed discussion of the FITFORM Routine is now presented. At block 92 the FITCELL Routine Set (Fiqs. 13A-E) is called -~
for computing the size (i.e., width and height) of all of the bordered areas and their descendants (chiltren) within a form which is modified. Widths are computed first and then heights according to the operation of the ~ -FITCELL Routine Set. The FITFORM Routine (Fig. 9) passes the width of the bordered area to be sized, typ;cally window display width of the largest bordered area of the forms called the root bordered area. It should be carefully noted that the FITCELL Routine Set (Fig. 13A-E) -is a ~recursive" return which sizes the entire tree (all descendants of the called bordered area). During block 94 the PLACEFORM Routine (Fig. 12~ is called for computing the placement or location of the generic form and all of its descendant bordered areas on the bit map of the CRT. During block g6 processing returns to the RESIZE/REFORM Routine (Fig. 9~ at Block 86.

_35_ 13~12~
5~ DRAWFORM Routine (F_q. li) Referring to Figure 11, a flow chart depicting the DRAWFORM Routine is shown. The purpose of the DRAWFORM Routine is for displaying the resized ~orm and all of its descendant bordered areas on display screen 5 according to the placement determined by the PLACEFORM
Routine (Fig. lO). At block 100 a determination is made on whether the border of the form (root bordered area) are visible or invisible (not shown on the display). If the borders of the form are invisible, processing I continues at block 104 during which the routine DRAWCELL
(Figs. l~A) is called. The DRAWCELL Routine displays the boundaries and contents for each of bordered areas of the ~ form. If the border of the form is determined to be I visible then processing continues at block 102 during ¦ which the border surrounding the form is drawn. Then during block 104 the DRAWCELL Routine (Fig. l5A-E) is ! called for displaying the borders and contents of each of ¦ the bordered areas of the form. Then during block 106 l processing returns to the RESIZE/REFORM Routine (FIG 9) ¦ at block 88.
l 6) PLACEFORM Routine (Fiq. 12 L
¦ Figure 12 is a flow diagram of the PLACE FORM
¦ Routine which determines the location or placement of the ¦ border surroundin~ the form (root bordered area). The ¦ root bordered area is typically the largest bordered area ¦ of a form and it has initial coordinate values of 0, 0 at the upper left corner of the display window. At block 110, the PLACECELL Routine Set (Figs. 16A-F) is called for locating all of the descendant bordered area contained within the root bordered area. Then during I block 112 processing returns to the FITFORM Routine (Fig.
10) at block 96.

~i ~.,' '"~

36 13~123 :;
7) FITCEL~ Routine Set (Fiqs. 13A-F) ~ igures 13A, 13B, 13C, 13D and 13E are flow diagrams which depict the FITCE~.L Routine Set. The following discussion provides a summary of the-operation and philosophy of the FITCELL Routine Set. For a detailed example of how the FITCELL Routine operates refer to section B(8). ~he purpose of the FITCELL
Routine Set, as stated above, is for computing the size (i.e., width and height) of earh bordered area of a form.
The FITCELL Routine Set is the most important set of routines of the preferred embodiment because it determines the space requirements for each bordered area relative to one another in order to accommodate for -changes in the form. The width of the root bordered area, which is typically constrained in the horizontal direction by the available horizontal window on the display screen, is initially passed to the FITCELL -~
Routine Set (Figs. 13A-13E) from the FITFORM Routine (Fig. 10). If the next level of child bordered areas within the root bordered area do not contain text, then the FITCELL Routine determines whether these children bordered areas are arranged horizontally or vertically.
The actual determination of the height for the root border area will depend on the orientation of children bordered areas. However, regardless of the orientation of the children, the first child bordered area within the root bordered area will be pointed to and the width of this child will be determined. Then the FITCELL Routine (Fis. 13A) calls itself ~recursively", with the pointer to the ~irst child, and computes width, determining the widths of the descendant bordered areas on ~he way down ~ -the structure to the bottom nodes. ~-When a bottom node (i.e., a bordered area containing text) is encountered, the height of the bordered area containing text i~ determined as a function 133~ ^2~

of the number of lines of text and the height of each text line. Once the height of the bottom node bordered area is calculated, it is stored along with the width previously calculated in an associated record fQr the bordered area. The size for each of its siblings and their descendants, if any, associated with the bordered area are similarly computed and stored. When all of the children of a particular parent bordered area have been sized, the height of that parent bordered area can be computed. 30th the height and width of the parent bordered area are then stored in a record associated with the parent bordered area. This recursive process continues down, back and across etc., until all bordered areas of the root or descendant bordered area have been computed. The last step i5 computing the height of the original root or descendant bordered area.
The height of a parent bordered area containing children is determined differently for children vertically arranged ~han for children horizontally arranged. For bordered areas containing vertically arranged children, the height of each child is accumulated, and the space between the children, and margins (interior blank space of the bordered area), and border are added as well. If the children are arranged horizontally, then the child having the maximum height (plus the mar~in and border) is determined t~ be the height of the parent. In this way, the parent bordered area is guaranteed to be able to fit around the children.
The maximum height is also used for alignment purposes by the PI,ACEC~LL Routine to be discussed.
In the preferred embodiment, the width of a child which is vertically arranged with respect to its siblings is determined to be equal to the width of its parent less the boundary, On the other hand, the width of horizontally arranged children are determined by .q.~

, ; - , . , !,' ~
' '~
,,''-~' ."~' ,, ' 133~1 ~3 reapportioning (increasing or decréasing) the width of each child in the same proportion as its p~rent's bordered area's total width increased or decreased. In sum, the width of each bordered area in any branch of the tree representation of the form is oomputed when the child bordered area is encountered on the way down the branch (i.e., before the bottom nodes of the branch are reached). The height of each bordered area, however, is computed on the way back up the branch (i.e., after the bottom nodes of the branch have been reached)O Both height and width are stored in the rec~rd associated with the bordered area) when the height is computed.
a) FITCELL Routine (Fiq. 13A) Referring to Figures 13A, 13B, 13C, 13D, and 13E, a detailed discussion of the FITCELL Routine is now presented. Specifically Figure 13A depicts the top level routine for processing the FITCELL Routine. Initially, a pointer to the root bordered area is passed to the FITCELL Routine (Fig. 13A). At block 116 (Fig. 13A) the total space remaining for the children in this root bordered area (or currently processed bordered area) is determined by subtracting two boundaries (2x (border margins)) (top and bottom boundaries for vertically arranged bordered areas or left and right boundaries for horizontally arranged bordered areas inside the currently processed bordered area from the total ~idth. Then during block 118 the total space between the children is determined by calculating the number of children less one, multiplied by a space constant between the children.
As an example, the space constant is defined to be one-pixel wide. Then, during block 120 a determination -is made on whether the contents of the bordered area include text or a plurality of child bordered-areas.
Assuming that the bordered area contains text, then during block 122 the routine COMPUTE SIZE OF TEXT CELL

133~1~3 (Fig. 138) is called. The size of the child containing text is determined by the COMPUTE SIZE OF TEXT CELL
ROUTINE (Fig. 13B), and processing returns at block 128 to the FITFORM Routine (Fig. 10) at block 9~ or processing returns to the loca~ion of the last-recursive call to the FITCELL Routine (Fig. 13A) at either block 150 of the COMPUTE S~ZE FOR VERTICAL CELL Routine (Fig.
13C) or at block 190 of the REAPPORTION CHILDREN'S WIDTH
Routine (Fig. 13C).
Returning to block 120, if the determination of the contents of the bordered area results in a plurality of smaller included bordered areas, then a further determination is made on whe~her the children are arranged horizontally or vertically. If the children are arranged vertically, then processing continues at block 126. During block 126, the routine COMPUTE SIZE OF
VERTICAL CELL (Fig. 13C) is called. The COMPUTE S~ZE OF
VERTIC~L CELL (Fig. 13C) determines the height of the currently processed bordered area and processing continues at block 128 and returns to the FITFORM Routine (Fig. 10) at block 96 or processing returns to the location of the last recursive call to the FITCELL
Routine (Fig. 13A) at either block 150 of the COMPUTE
SIZE FOR VERTICAL C~LL Routine (Fig. 13C) or at block 190 of the REAPPORTION CHILDREN'S WIDTH Routine (Fig. 13E).
However, if the included children are determined to be horizontally arranged, then durinq block 124 the COMPUTE
SIZE FOR HORIZONTAL CELL (Fig. 13D) is called. When the size of the bordered area is determined, processing returns at block 128 to the FITFORM Routine (Fig. 10) at block 96 or processing returns ~o the location of the recursive call to the FITCE~L Routine (Fig. 13A) at either block 150 of the COMPUT~ SI~E FOR VERTICAL CELL
Routine (Fig. 13C) or at block 190 of the REAPPORTION
CHILDREN'S WIDTH Routine (Fig. 13E) .~ ' 133~1~3 --~o .
b) COMPUT~ SIZE FOR TEXT CELL Routine (Fiq. 138) Referring to Figure 133, the COMPUTE SIZE FOR
TEXT ~ELL Routine is depicted. At block 132 a routine is called for calculating the layout parameters for the text. Such parameters include the location for wrapping of text, justification of text, the number of lines, and the height of each line, etc. An example of the wrapping of text is shown in connection with Figures 6A and 6B.
~Wrapping~ is considered to be a word processing capability typically provided with the operating system of standard computers or it could be specially designed by those skilled in the art. Recall that when the horizontal lensth of-a text line decreased, the text was forced to wrap onto the next text line. The wrapping routine is designed such that the routine knows the beginning and end of each word of the text and the length of the text line. In the example shown, wrapping did not occur to split words in half; however, it could be ~;~
designed such that hyphens could be added at the wrapping point. After the text parameters have been determined processing continues to block 133 (nT~XHlTE" function) to determine the height of the text cell. During block 134 a determination is made on whether there are any lines of characters within the bordered area containing text. If there are no text lines in the bordered area, then processing continues at block 136 during which a height -~
accumulator is set equal to the height of one line as a default. This procedure guarantees that the height of the empty bordered area will be at least one line tall.
Assuminq that there are lines of text within the bordered area, processing continues at block 138, during which the height accumulator is set equal to the number of lines times the height of each line of text.
$n the preferred embodiment each line of text has the ~ `

D

-41- 133~12~

same constant height, however, in an alternate embodiment of the invention each line of text has a variable height and the heights are accumulated to determine the total height. ~egardless of whether there is text or no text within a cell, processing continues at block 140. During block 140 the width of the bordered area is stored in the record associated with the bordered area, and then during block 142 the height of the bordered area is also stored.
In the preferred embodiment the included margins of the bordered area are also added to the computed height.
Processin~ continues at block 143 during which processing returns to the FITCFLL Routine (Fig. 13A) a~ block 128.
c) COMPUTE SIZE FOR VERTICAL CELL Routine (Fia. 13C) Figure 13C depicts a flow diagram of the COMPUTE SIZE FOR VERTICAL CELL Routine. The purpose of this routine is for determining the total height of a bordered area which contains vertically arranged children. Specifically, at block 146 the height accumulator is set equal to the space used between the children cells. Then during block 148 a pointer is set to the first child bordered area of the parent cell.
Recall that the record associated with the parent bordered area contains a pointer of the ordinal p~sitions of the children included within the parent bordered area.
Then during bloc~ 150 a recursive call is made to the `~
FITCELL Routine (Fig. 13A). The purpose of this recursive call is to determine the size of the first child bordered area. In the preferred embodiment a s~ack arrangement is maintained for temporarily storing a pointer to the currently processed bordered area for which the size is being determined. In addition, a pointer to the last call, before the FITCELL Routine is performed is stored on a LIFO (Last In First Out) stack.

3~:
.~

, ~ . -.; - . ...
. ~.
..'.~

-42- 133~1~3 ... ;:
Assuming that the size of the child bordered area (and all of its descendants, if any) has been determined by the FITCE~L Routine called, processing continues at block 152. When processing returns to block 152, from the recursive call, the pointer to tne currently processed bordered area is "popped off n the stack. During block 152l the child's height calculated in block 150 is added to the height accumulator for the vertical bordered area. Then during block 154 the pointer is moved to the next ordinal position within the parent bordered area. During block 156, a determination .s made as to whether all of the children of the parent bordered area have had their size determined. Assuming that not all of the children have had their size determined, processing continues during blocks 150, 152, 154 and 156 until the size for each of the children are determined. Assuming that the size of all the children have been determined, processing continues at block 158.
During block 158 the width of the parent ~ordered area is stored in its associated record, and then durins block 160 the newly calculated height of the parent bordered area is also stored in the associated record. In the preferred embodiment the margins included within the parent bordered area are added to the accumulated children's height and spacing between the children.
Process returns during block 162 to the FITCELL Routine (Fig. 13A) at block 128.
d) COMPUTE SIZE FOR HORIZONTAL CEL~ Routine (Fiq. 13D) Figure 13D depicts the COMPUTE SIZE FOR ~ `
HORIZONTAL CELL Routine. The purpose of this rou~ine is for determining the size of a parent bordered area which includes children arranged horizontally. Specifically, during block 166 the maximum height is set equal to zero.
Then during block 168 the old widths for each of the _43_ 133~23 children (before they have been resized) are accumulated and the accumulated (total) old width is stored. Then during block 170 the space between the children (calculated in Fig. 13A at block 118) is deducted from the total new space left for the children. Then, during block 172 a pointer is set equal to the first child bordered area within the parent bordered area and during block 174 the routine REAPPORTION CHILDREN' S WIDTHS (Fiq.
13E) is called. The purpose of this routine is for apportioning the total new width among each of the individual children. Additionally, the routine determines the size of all descendants of the currently processed child, and also determines which child has the greatest height. Processing continues to block 176, during which the pointer is moved to the next child bordered area, and then during block 178 a determination is made as to whether there are any other children within the parent bordered area to be reapportioned. Assuming that there are still more children to reapportion, processing continues at blocks 174, 176 and 178 until all of the children have been reapportioned. Assuming that all of the children are reapportioned, processing continues at blocks 180 and 182. During block 180 the width of the parent bordered area is stored in the record corresponding to that bordered area, and in block 182, the height for the parent is also stored in the record for that bordered area. As stated earlier the height of the bordered area is calculated during the REAPPORTION
CHILDREN'S WIDTH Routine ~Fig. 13E) to be discussed. In the preferred embodiment ~he height is also adjusted to include ~he margins within the parent bordered area.
Proces~ing returns during bloc~ lB4 to the FITCELL
Routine (Fig. 13A) at block 128.

~- .

~ ~44~ 13~123 e) REAPPORTIONED CHILDREN WIDTH Routine (Fiq, 13E) Figure 13E depicts a flow chart for the REAPPORTIONED CHILDREN WIDTH Routine. As s~ated above, the purpose of this routine is for apportioning the total width available to all of the children (parent width less margins) among each of the individual children bordered areas. During block 188 the new width of the currently pointed to child bordered area is determined by multiplying the old wid~h of the child bordered area by the ratio of the new total width of the parent bordered area, (as previously calculated at block 170 (Fig. 13D)), to the old total width of the parent bordered area (as previously calculated at block 168 (Fig. 13D). Then during block 190 the FITCELL Routine (Fig. 13A) is called to calculate size of all descendant children, and the height of the currently processed child bordered area.
Then the call returns to the currently processed bordered area along with the location of the last instruction and this same information is ~popped off" the stack.
Processing continues at block 192, during which a determination is made as to whether the currently processed child contains a larger height then all of the previous children within the parent bordered area which were processed at this time. Assuming that the currently ~-~
processed child has a larger height, processing continues at block 194 during which the child's height (maximum -~
height) is stored in place of previously determined maximum height. Processinq continues to block 196, during which processing returns to the COMPUTE SIZE OF
HORIZONTAL CELL Routine (Fig. 13D) at block 176.
Returning to block 192 of the REAPPORTION CHILDRENS WIDTH
Routine, if the new processed child does not have a larqer height than the previous maximum, processing continues to block 196, during which processing returns - ~

~`

-45- 1 3 3 ~ 1 2 3 to the COMPUTE SIZE FOR HORIZONTAL CELL Routine (Fig.
13D) at block 176.
~) Detailed ExamPle of the FITCELL Routine Set (Fics. 13A-E?
Referring to Figures 13A, 13B, 13C, 13D, 13E, 14A, 14B, 15A, lSB, and 15C a detailed example of the FITCELL Routine-operation is now disclosed. Figure l~A
depicts a ~blown-up~ version of the upper left hand corner of the form shown in Figure 8A. ~he form of Fig. 8A is ~blown up" in order to emphasize the picture elements shown in dotted lines which are representative of the borders of the bordered areas. ~dditionally, for purposes of this example, it is assumed that the form (Fig. 14A) has just increased slightly. Many of the included bordered areas have also increased in size.
This example will demonstrate the procedure for determining the sizes of the bordered areas aocording to the present invention. Figure 14B is a tabular representation of ~he form (Fig. 14A) along with old and new widths for each bordered area and the contents of each bordered area. All information is represented in units of picture elements or pixels. Boundaries for each bordered area contain a one pixel border plus a two pixel margin. The margin consists of a white space interior immediately adjacent to the border o~ each bordered area.
Figs. 15A, 153 and 15C depict a results table for tabulating the contents of the stack and the currently processed bordered area. Each row of the table represents a change in the currently processed bordered area and/or the contents of the stack. For this example, only, the size determinations for the bordered areas within bordered area 52 will be calculated. It is assumed the sizing for the rest of form 50 will be performed in the same fashion as discussed for bordered area 52.

.;, ....

-46- 133~1~3 Before discussing the detailed example of the FITCELL Routine, a brief summary describing the overall operation for calculating the size of each bordered area within the top portion of the form depicted in Fig. 14A
is now discussed. Processing be~ins with dete~mining the new width of the root bordered area 50 by the FITFORM
Routine (Fig. 10). The width of bordered area 52 is then determined by the COMPUTE SIZE FOR VERTICAL CELL Routine (Fig. 13C). Then the width of bordered area 54 is determined by the COMPUTE SIZE FOR HORIZONTAL CELL
Routine (Fig. 13D). Processing continues down the hierarchical tree structure shown in Fig. 88 to bordered area 60, whose width i5 determined by the COMPUTL SIZE
FOR VERTICAL CELL Routine (Fig. 13C). Processing continues to the next level down the tree where the width of bordered area 61 is determined by the COMPUTE SIZE FOR
HORIZONTAL CELL Routine (Fig. 13D) and then the height of bordered area 61 is determined and stored by the COMPUTE
SIZE FOR TEXT CELL Routine (Fig. 13B). Processing continues for bordered area 63, for which the COMPUTE
SIZE FOR HORIZONTAL CELL Routine (Fig. 13C) determines the width, and the height of bordered area 63 is determined by the COMPVTE SIZE FOR TEXT CELL Routine ~ - -(Fig. 13B). Processing returns back to bordered area 60, for which the height is determined and stored by the COMPUTE SIZE FOR HORIZO~TAL CELL Routine (Fig. 13D).
Maximum heights among the bordered areas 61 and 63 is assisned as the height of the bordered area 60. The width of bordered area 62 is then determined by ~he COMPUT~ SIZ~ FOR HORIZONTAL CELL Routine (Fig. 13D) and the height of bordered area 62 is determined by the COMPUTE SIZE FOR TEXT CELL Routine (Fig. 13B). Likewise, the width of bordered area 64 is determined by the COMPUTE SIZE FOR HORIZONTAL CELL Routine and the height for bordered area 64 is determined by the COMPUTE SIZE
FOR TEXT CELL Routine (Fig. 13B). The height of bordered 1 3 3 ~

area 54 is determined by the COMPUTE SIZE FOR VE~TIC~L
CELL Routine (Fig. 13C) which accumulates the heights for bordered areas 60, 62 and 64. Assuming the widths and heights of bordered areas 56 and 58 have been determined, the height of bordered area 52 is determined by the COMPUTE SIZE FOR HORIZONTAL CELL Routine (Fig. 13D) which determines which bordered area 54, 56 or 58 has the maximum hei~ht-bordered area 52 is assigned the maximum height. Lastly, assuming that the bordered areas 51, 52, 53, 55, 57, etc., height and width have been determined, thè hei~ht of root bordered area 50 is determined by the COMPUTE SIZE EOR VERTICAL CELL Routine (Fig. 13C) which accumulated the heights for all of the bordered areas 51, 52, 53, 55, 57 et~. At this point, the entire format has been resized -- each of the bordered areas within the form have had their widths and heights recalculated. The following is a more detailed description of ~his process.
Referring to the FITFORM ~outine (Fig. 10), at block 92, the new width of the root bordered area (i.e., largest bordered area) of the form is determined. The width of the root bordered area is determined to be 520-pixels, the size of the window (199, Fig. 14B).
Processing continues to the FITCELL Routine (Fig. 13A) at block 116. At block 116, the total width remaining for the children bordered areas 52, 51, 53, 55, 57, 59, 61, etc., within bordered area 50 is determined to be 514-pixels (200, Fig. 14B). During block 118, the space between each of the children bordered areas 54, 56 and 58 is calculated to be ll-pixels, which is the number of children (12), less one, multiplied by the space constant of l-pixel. During block 120, it is determined that the contents of the bordered area 50 are arranged vertically.
Thus, processing continues at block 126. During block 126, the COMPUTE SIZE FOR VERTICAL CELL Routine (Fig.
13C) is called.

i'' "~
~ ~ --48- 13~123 , .
During block 146 (Fig. i3C), the height accumulator is set equal to the space ~etween the children (ll-pixels) as determined above. During block 148f the pointer is set equal to the first child bordered area of bordered area 50, namely bordered area 52 (220, Fig. 15A). Then during block 150, a recursive call is made to the FITCELL Routine (Fig. 13A). During this recursive call, the pointer to bordered area 52 and a pointer to the location of the recursive call (block 150 (Fig. 13C)) are pushed onto the stack (220, Fig. 15A).
At this point, there is only one entry on the stack:
(1) bordered area 52 (228, Fig. 15A).
Processinq continues at the FITCELL Routine (Fig. 13A) at Block 116, during which the Sotal width remaining for the children bordered areas within parent bordered area 52 is determined to be 508-pixels. Above, the new width for bordered area 52 was determined to be 514-pixels less the boundary on either side of the width which is 6-pixels (2 x 1 (border) I 2 x 2 (margin)) picture elements (202, Fig. 14A). During block 118, the -~
space between each of the children bordered areas 52, 56 and 58 is calculated to be 2-pixel, which is the number of children, less one, multiplied by the space constant which is l-pixel. During block 120, it is determined that the contents of the bordered area 52 are arranged horizontally. Thus, processing continues at block 124, during which the COMPUTE SIZE FOR HORIZONTAL CE~L Routine (Figure 13D) is called.
At block 166 (Fig. 13D), the maximum heisht accumulator is set equal to zero. During block 168, the old widths for each of the çhildren of bordered area 52 - are accumulated. Specifically, the old width for bordered area 54 (99-pixels), the old width for bordered are~ 56 (280-pixel), and the old width for bordered area 58 (99-pixel) are added together. A total accumulated '';' J

-49- 133~123 old width for the children 54, 56 and 58 is 486-pixels.
The old total width is stored in a variable called WIDTHLEFT. Processing continues at block 170 during which the space between the children ;s subtracted from the total new width remaining for the children 5~, 56 and 50. The space between the children is 2-pixels and thus the remaining total space left is 506-pixels. The total new width is stored in a variable called FITLEFT. During block 172 a pointer is set to the first child within the parent bordered area 52 (222, Fig. 15A). The firs~ child is bordered area 54. Processing continues at block 174 during which the REAPPORTION CHILDRENS' WIDTHS Routine (Fig. 13E) is called.
Processing continues at block 18~ (Fig. 13E) during which the new width for child 54 is calcuiated by the formula Old Width x (FITLEFT/WIDTH~EFT). As determined above, Old Width for bordered area 54 is 99-pixels, FITLEFT is 506-pixels, and WIDTHLEFT is 486-pixels. The new width for bordered area 54 is 103-pixels (202, Fig. 14B). Processing continues at block 190 during which a recursive call to the FITCELL
Routine (Fig. 13A) is made. The recursive call requires that a pointer directed to bordered area 54 be placed on the stack and a pointer to the recursive call for FI~CELL
Routine block 190 (Fig. 13C) (224, Fig. 15A).
Referring to Fig. 13A at block 116, the new total space remaining for the children cells within bordered area 54 is calculated by subtracting the boundary from the new width of bordered area 54. The new width of bordered area 54 is 103-pixels and the boundary is six picture elements. Thus, the remaininy width for the children is 97-pixels (204, Fig. 14B). Processing continues at block 118 during which the space between the children is calculated to be 2-pixels.

so 13~23 - -Durinq block 120 the contents of bordered area 54 are determined to be vertically arranged; thus processing continues at block 126. During block 126 the COMPUTE SIZE FOR VERTICAL CELL Routine (Fi~. 13C) is called. At block 146 (Fig. 13C) the height accumulator is set equal to the space between the children as determined above. During block 148 the pointer is set equal to the first child bordered area of bordered area 5~ or bordered area 60 (226, Fig. 15A). Then, during block 150 a recursive call is made to the FITCELL Routine (Fig. 13A). During this recursive call the pointer to the bordered area 60 and a pointer to block 150 (Fig.
13C) are pushed onto the stack (228, Fig. 15A). At this point, there are three entries on the stack: 1) Bordered area 60, 2) 3Ordered area 54 and 3) Bordered area 52 (202, Fig. 15A).
Processing continues at block 116 (Fig. 13A) during which the total width remaining for the children of bordered area 60 is calculated by subtracting the boundary from the new total width. The new total width of bordered area 60 is 97-pixels and the boundary is 6-pixels, thus the remaining width available is 91-pixels wide. Then, during block 118, the space used up between the children is determined to be l-pixel wide. The contents of the bordered area 60 are determined to be horizontally arranged during block 120. Processing continues at block 124, during which the routine COMPUTE
SIZE FOR HORIZONTAL CELL (Fig. 13D) is called.
Processing continues at block 166 (Fig. 13D) during which the maximum height is set equal to zero.
During block 168, the total old width for the children 61 and is determined 63. The old width for child 61 was 21 pixels (210, Fig. 14A) and the old width for child 63 was ~9-pixels, thus, total old width is set equal to 70-pixels. Processing continues during block 170 during . .... .

which the space between the children bordered areas 61 and 62 is subtracted from the total width available. The space used was calculated during block 118 of Fiqure 13A
to be l-pixel and, thus, the total width remaining is 90-pixels. During block 172, the pointer is set equal to the child bordered area 61 (230, Fig. lSA). Then during block 174, the REAPPORTIONED CHILDREN'S WIDTHS Routine (Fig. 13~) is called.
During block 188 (Fig. 13E), the new width for bordered area 61 is determined to 27-pixels. Processing continues to block 190, during which a recursive call is made to the FITCEL~ Routine (Figure 13A). At this time, the stack now has a fourth pointer placed on it which is the pointer to bordered area 61 and the recursive call location at block 190 (Fig. 13E) (232, Fig. 15A).
Processing continues to block 116 (Fiq. 13A) of ~he FITCE~L Routine. During block 116, the total space remaining for the contents of bordered area 61 is determined to be 22-pixels. Processing continues at block 118, however for bordered areas having text the space used calculation is meaningless and the number calculated is never used. During block 122, the contents are determined to be text and the routine COMPUTE S~ZE
FOR TEXT CELL (Fig. 13B) is called.
Processing continues to block 132 (Fi~. 13B) during which layout parameters for the text within ~he bordered area are calculated. During block 134, it is determined that text does exist within the bordered area 61; "For -~, Processing continues at block 138, during which the height of each line multiplied by the number of lines, The height of each line is 13-pixels and the number of lines is 2. The total height for bordered area 61 is calculated to be 26-pixels. Processing continues to block 140, during which the new width (passed in) `

~33~ ~ 23 27-pixels for the bordered area 6~ is stored in the record associated with bordered area 61. At block 142, the boundary of bordered area 61 is added to the height calculated during block 138. The boundary includes 6-pixels and, thus, the total height is set equal to 32-pixels. The value for the height is stored in the record associated with bordered area 61. During block 143, processing returns to block 128 of the FITCELL
routine (Fig. 13A). Recall that the FITCELL routine was called during a recursive call, so the last pointer pushed onto the stack must be popped off to determine where processin~ ended when the recursive call was made (232, Fig. l5A). The last pointer pushed onto the stack was the FITCELL recursive call at block 190 of the REAPPORTIONED CHILDRENS WIDTH routine (Fig. 13E) (234, ~ig. 153). Processing returns to the REAPPORTION
CHILDREN WIDTH Routine and continues at block 192, during which a determination is made that the height calculated for bordered area 61 is now the maximum height determined. Thus, processing continues at block 194, during which the maximum height variable is set equal to 32-pixels. Processing continues at block 196, during which processing returns ~o block 176 of a COMPUTE SIZ~
FOR HORIZONTAL CELE Routine (Fig. 13D). -~
During block 176, the pointer is moved to the next child bordered area 63 within the bordered area 60 (2?6, Fig. 15B). At block 178, it is determined that not all of the children of bordered area 60 have been reapportioned and, thus, processing continues at block 174. During block 17~, the REAPPORTIONED CHILDR~NS W~DTH
routine (Fig. 13E) is called.
Durins block 188, the new width for bordered area 63 is determined by calculating the old width multiplied by the ratio of the total new to old widths remaining for the children. Recall that the new total .
~- ~

~,.,. , :

-53- 133~1 23 width remaining is 90-pixels and the old width remaining 70-pixels. Thus, the old width for bordered area 63 (49-pixels) is multiplied by the ratio of the total new width to the total old width (90/70) for bordered area 63 resulting in 64-pixels (212, Fig. l~B). Processing continues to block 190, during which the FITCELL routine is recursively called. A pointer to bordered area 63 and the location of the FITCELL Routine call at block 190 (Fig. 13E) are pushed onto the stack (238, Fig. 15B).
Processing continues at block 116 of the FIT OE LL routine (Fig. 13A). During block 116, the space remaining for the contents of bordered area 63 is calculated to be 63-pixels less the 6-pixels for the bordered area. Then, during block 118, it is determined that there are no children in bordered areas 63. The contents of the bordered area 63 is determined to be text during block 120. At block 122, the COMPUTE SIZE FOR TEXT CELL
routine (Fig. 13B) is called.
Processing continues at block 132 (Fig. 13B~, during which the layout parameters for the text in bordered area 63 are determined. Then, during block 134, it is determined that there is one line of text within the bordered area 63. Processing continues at block 138, during which the height of the one line of text, 26-pixels, is multiplied by the number of lines, one.
Thus, the height is determined to be 26-pixels. Then, during block 140, the new width of 63-pixels calculated for bordered area 63 is stored in the record àssociated with bordered area 63. At block 1~2, the boundary of six picture elements is added to the height determined in block 138 and, thus, the height is 32 picture elements (212, Fis. 14B). Processing returns during block 143 to block 128 of the FITCE~L routine (Fig. 13A). The FITCELL ~ :
routine (Fig. 13A) was called recursively and, thus, the most recent pointer pushed on the stack is popped off (240, Fig. 150). The last pointer on the stack was f~r -54- ~3~12~

the bordered area 63 and the recursive call was made at block 190 of the REAPPORTIONED CHILDRENS WIDTHS routine (Fig. 13E) (238, Fig. lSB).
Processing continues in the REAPPORTION
CHILDRENS WIDTHS Routine (Fig. 13E), at block 192.
During block 192, the heisht of bordered area 63 is compared with the maximum height stored to determine whether the height for bordered area 63 is lar~er than the maximum height. The maximum height 32-pixels is equal to the height of bordered area 63 and thus processing continues at block 196. Processing returns during block 196 to block 176 of the COMPUTE SIZE OF
HORIZONTAL CELL Routine (Fig. 13D). During block 176 the pointer is moved to the next child within the bordered area 60. At block 178 it is determined that there are no more children within bordered area 60 to perform processing, and thus processing continues at block 180.
During block 180 the new width 97-pixels calculated for bordered area 60 is stored in ~he record associated with bordered area 60 (206, Fig. 14B). At block la2, 6-pixels are added to the height in order to account for the boundary of the bordered area 60. Thus, the total height for bordered area 60 is 38-pixels. The height for bordered area 60 is stored in the record associated with bordered area 60. Processing returns during block 180 to the FITCELL Routine of block 128. Once again, the FITCELL Routine was called by a recursive call and thus the return is a recursive one. The next pointer left on the stack is popped and this pointer is a pointer to bordered area 60 and the FITCELL Routine call at block 150 in the COMPUTE SIZE FOR VERTICAL CELL Routine (~ig.
13C) (2~0, Fig. 15B).
Processing returns to the COMPUTE SIZE FOR
VERTICAL CELL Routine (Fig. 13C) and continues at block 152 during which the height of bordered area 60 is added ~- ~55~ 13~12~

to the height accumulator (which ~as set to space used;
i.e. 2-pixels). Then during block 1~4 the pointer within bordered area 54 is moved to the next child bordered area within bordered area 54. The next child bordered area is bordered area 62 (242, Fig. 15C). During block 156 a de~ermination is made that there are still children bordered areas left for processing and thus processing continues at block 150. During block 150 a recursive call is made to the FITCELL Routine (Fig. 13A). At this time, the pointer to bordered area 62 is placed upon the stack along with a pointer to the location of the recursive call (244, Fig. l5C). Processing continues at block 116 (Fig. 13A) during which the total space remaining for the contents of bordered area 62 is determined by subtracting from the total width of 98-pixels a boundary of 6-pixels. During block 118 it is determined that there are no included children in bordered areas 62. The contents of the bor~ered area 62 is determined ~o be text at block 120. Processing continues at block 122 during which the COMPUTE SIZE FOR
TEXT CELL Routine (Fig. 13B) is called.
During block 132 (Fig. 138) the parameters for the text are recalculated and during block 134, it is determined that there ~s at least one line of text in the ~ ~
bordered area 62. Processing continues at block 138 ~ -durinq which the height of the text is determined to be -~
26-pixels; each line of text is 13-pixels, and there are ~ ;
two lines of text (206, Fig. 14B). Processing continues at block 140 during which the newly calculated width for bordered area 62 is stored in the record associated with bordered area 62 and at block 142, 6-pixels accounting for the boundary for bordered area 62 are added to the 26-pixels for the height. The total height for bordered ;~
area 62 is 32-pixels (206, Fig. 14B). Processing returns during block 143 to block 12B of the FITCELL Rou~ine ;~
(Fig. 13A). The FITCELL Routine ~Figure 13A) was called ; ~ -.
,.
'; -~

13~ 3 during a recursive call and the last pointer on stack indicatec that the FITCELL recursive call was at block 150 of Fig. 13C made for bordered area 62 (244, Fig.
15C). This en~ry is popped off the stack (246, Fig.
15C). Processing continues at block 152 during which the height of bordered area 62 is added to the height accumulator. The height accumulator now has 72-pixels (space used - 2-pixels, bordered area 60 ~ 38-pixels, and bordered area 62 - 32-pixels). At block 154 the pointer moves to the next vertical child bordered area within bordered area 54 (248, Fig. 15C). During block 156 it is determined that there is still one bordered area left for processing, namely bordered area 6g. Processing continues at block 150 during which a recursive call is made to the FITCELL Routine (Fig. 13A). The pointer to the bordered area 64 and the pointer to this recursive call are pushed into the stack (250, Fig. 15C).
Processing continues at block 116 during which the remaining width available for the contents of bordered area 64 is determined to be 97-pixels. At block 118 the amount of space used between further included children bordered areas is determined to be zero and at block 120 the contents of bordered area 64 is determined to be text. Processing continues at block 122 during which a call is made to the COMPUTE SIZE FOR TEXT CELL Routine (Fig. 13B).
At block 132 (Fig. 13B) the layout parameters for the text within bordered area 64 are recalculated.
At block 134 it is determined that there is at least one line of text and at block 138 the height of the text is determined to be 26-pixels. There are two lines of text, and the height of each line is 13-pixels. At block 140 the new width of 97-pixels is stored in the record for bordered area 64, (208, Fig. 14A). At block l42 the boundary of 6-pixels is added to the height of 26-pixels for a total of 32-pixels (20~3, Fig. 14A) and stored.

.. , . ~ , , :
, -57- 1 3 3 ~

Processing returns during block 143 to block 128 of the FITCELL Routine (Fig. 1 3A ) . Th i s Rout i ne was called during a recursive call and thus the last pointer on the staek is popped (250, Fig. 15C). The last pointer on the stack points to the FITCELL recursive call at block 150 of the COMPUTE SIZE OF VERTICAL CELL Routine and at bordered area 64 (248, Fig. 15C). Processing continues at block 152 of the COMPUTE SIZE OF VERTICAL CELL Routine (Fig. 13C), during which the height of bordered area 64 is added to the accumulated height. The total accumulated height is 104-pixels (spaced used ~ 2-pixels, bordered area 60 = 38-pixels, bordered area 62 -32-pixels and bordered area 64 ~ 32-pixels). At block 154 the pointer is moved to the next vertical child and at block 156 it is determined that there are no more children within the bordered area 54.
Processing continues at block 154 during which the new width of 103-pixels for bordered area 54 is stored in the record associated with bordered area 54 (202, Fig. 14B). At block 160 the accumulated height -which includes the space between the children bordered areas is added to the six pixel boundary within the bordered area. The total height for bordered area 154 is 110-pixels. Processing returns during block 162 to block 128 of the FITCELL Routine (Fig. 13A). The FITCELL ~
Routine was recursively called and thus the next pointer ~ ~-on the stack is popped (252, Fig~ 15C). Thte pointer on the stack is for the bordered area 54 and the last instruction referenced was the recursive call at block 190 during the REAPPORTIONED CHILDRENS' WIDTH Routine (Fig. 13E) ~250, Fig. 15C). Processing continues to block 192 during which the maximum height is set equal to --~
110-pixels for the bordered area 54. At block 196 --processing returns to block 176 of the COMPUTE SIZE OF -~ORIZONTAL CELL Routine (Fig. 13D). During block 176 the pointer moves to the next child bordered area within -L~ . . -~

-58- 1 33~123 bordered area 52 (25~, Fig, 15C). The next child bordered area is bordered area 56. Essentially, this process continues until the widths and heights of both bordered areas 56 and 58 have been determined. To summarize, the width of bordered area 56 will be calculated to be 300-pixels and the width of bordered area 58 will be 103-pixels. The maximum height for the bordered areas 54, 56 and 58 is 140-pixels calculated for bordered area 58. Thus, the new width of bordered area 52 is 514-pixels and the height is 146-pixels (140-pixels plus the 6-pixel boundary) (200, Fig. 14B).
9) PLACECELL Routine Set ~Fiqs. 16A-F) Referring to Figs. 16A, 168, 16C, 16D, 16E and 16F, the P~ACECELL Routine Set is now discussed. The following is a summary of the theory and the philosophy behind the PLACE OE LL Routine Set. The purpose of the PLAC~CELL Rout ine Set is for determining the location (in X,Y coordinates) of each bordered area of a form being resized and redrawn by the present invention. Recall that the size of the bordered areas were determined during the FITFORM Routine (Fig. 10) and the FITCELL
Routine Set (Fig. 13A-E). The PLACEFORM Routine (Fig~
12) points to the root bordered area (largest bordered area of the form) and its boundary locations are determined and passes them to the PLACECELL Routine Set (Figs. 16A-F~. The PLACECELL Routine (~ig. 16A) stores the boundary locations for the root bordered area and then computes the boundary locations for all of the descendants within the root bordered area. This process occurs in a depth first search all the way down the hierarchical tree structure of the form. At each level, a determination is made on whether the contents of the bordered area contain text or children. If the bordered area contains children, a further determination is made ~,."' , ., -59- 1 3 3 ~

on whether the children are arrangéd vertically or horizontally.
If the children are arranged horizontally, then the locations for the top and bottom borders of each of the horizontally arranged children are set equal within the parent, at a location just within the parents' boundaries. Top border location for each of the children are set equal to the location of the parent's top border the border width and inside margin. The location of the bottom border for each of children is equal to the location of the parent's bottom border less the width of the border less the margin. The border locations of the horizontally arranged children are purposely aligned with one another, just inside the top and bottom parent borders so that the bordered areas of the children give -the appearance of stretching down and up just inside the bottom and top borders of the parent. Referring tc Fig.
8A, note that the top and bottom borders of horizontally arranged children 54, 56 and 58 are aligned with one ~5 another to create continuous top and bottom borders.
Note that the vertical lenqth (length in pixels from the top and bottom borders) of the bordered areas -54, 56 and 58 (as shown in Fig. 8A) is different than the ~;
heights of these bordered areas. Recall that the height determined for bordered area 54 is llO-pixels (202, Fig. -~
14R), the height for bordered areas 56 is 44-pixels (214, Fig. 14B) and the height for bordered area 58 is 140-pixels (216, Fig. 14B). To ensure that the top and bottom borders are continuously aligned with one another, the locations of these borders must be chosen so that they c~n include the sibling bordered area with the -~-greatest height. Bordered area 58 has the greatest height (140-pixels~ and thus, the vertical length for the ~-bordered areas 54, 56 and 58 must be at le~st 140-pixels. ~ -~
This causes empty space to appear in bordered areas S~

D~

-6~- 133~3 and 56 because the heights of their contents are less than 140-pixels vertical length. For example, bordered area 5g contains vertically arranged children 60, 62 and 6~ which together have an accumulated height of llO-pixels. A total of 30-pixels of extra space is apportioned in a given manner above and below the children (Fig. 8A) based on whether the contents are aligned with the top, bottom or middle of the bordered area.
The determination of the placement of bordered areas arranged vertically starts by determining the alignment of the children within the parent. The children may be aligned to the top, bottom or middle of the parent. The alignment will effect whether the extra free space (if any) within the bordered area is allocated above, below, or in between the bordered areas.
As stated earlier, the boundary locations of the bordered areas of the form are determined in a top down approach. At the bottom nodes (boundary areas containins text) the displayable area and text drawing area are computed and stored. The drawing area is a rectangular area in which the text is drawn. The displayable area is a rectangle within which the text is actually visible. The sides of the drawing area determine the beginning and end of each line of text, and its top determines the position of the first line of text. ~ypically, at the right border of the drawing area, the text wraps around to the next line. In the preferred embodiment, the wrap around only occurs at each word which ensures that no word is every split between lines unless it's too long to fit entirely on one line.
The determination of the displayable area and text drawing area are dependent on how the text within the bordered area is aligned to the top, bottom or middle of the bordered area.

;.
~~
" ' ' , .

.i. .

-61- 133~ 23 a) PLACECELL Routine (Fiq. 16A) A more detailed discussion of the placement routines (Figs. 16A, 16B, 16C, 16D, 16E and 16F) is now presented. Referring to Fig. 16~, the flow diagram of the PLACECELL Routine is shown. At block 262, the boundary locations for the bordered area currently being processed are passed in and stored in the record associated with the bordered area. Then, during block 264 the boundaries of the currently processed bordered ;;
area are removed and the coordinates for the resulting area are determined. More particularly, the boundary portion of the bordered area, (i.e. the border itself and the empty space margins) which cannot be written into, is stripped from the bordered area, resulting in an ~inside rectangle n within which children or text may be written into. Processing continues at block 266 during which the contents of the bordered area are determined. If the contents of the bordered area include text, then processing continues at block 268 during which the PLA OE ~ ~2~-TEXT CELL Routine (Fig. 16B) is called to determine the drawing area and the displayable area for the text as described above. ~rocessing returns during block 274 to the calling routine (i.e. the PLACEFORM Routine or the ; ~
location of a recursive call to ~LACECELL from either -~-block 294 of the PLACE HORIZONTAL CELL Routine (Fiq. 16C~
or block 310 of the PLACE VERTICAL CELL Routine (Fig.
16D)). However, if the contents of the bordered area include vertically arranged children, then processing continues at bloc~ 270, during which the PLACE VERTICAL
CELL Routine (Fig. 16D) is called. The PLACE VERTICAL ;~
CELL Routine (Fig. 16D) determines the location of each vertical child associated within the vertical parent. -Processing continues at block 274 during which processing returns to the calling routine (i.e. PLACEFO~ Routine or returns to either block 294 of the PLACE HORIZONTAL CELL
Routine (Fig. 16C) or block 310 of the PLACE VERTICAL

'~ ~

-62- 133~
, CELL Routine (Fig. 16D)), Returning to block 266, if the contents of the bordered area include horizontally arranged children, then processing continues at block 272 during which the PLACE HORIZONTAL CELL Routine (Fig. 16C) is ~alled. The PLACE ~ORIZONTAL CELL Routine (Fig. 16C) uses the "inside rectangle" for the top and bottom boundaries for each of the children, and then determines the left and right boundaries for each of the children associated within the parent. Processing continues at block 274 during which processing returns to the calling program (i.e. PLACEFO~M Routine or returns to either block 294 of the PLACE HORIZONTAL CELL Routine (Fig. 16C) or block 310 of the PLACE VERTICA~ CELL Routine (Fig.
16D).
b) PLACE TEXT CELL Routine (Fiq. 16B) Referring now to Fig. 16~, a flow diagram of the PLACE TEXT CELL Routine is shown. At block 27B the displayable area is set equal to the inside rectangle determined earlier at block 264 of the PL~CECELL Routine (Fig. 16A). Then during block 280, the accumulated height for the text within the bordered area is determined by the TEXTHITE Routine as shown at block 133 of the COMPUTE SIZE FOR TEXT CELL Routine (Fig. 13B).
The number of lines is multiplied by a height constant in order to determine the accumulated height of text within the bordered area. Then, during block 2~2, the JUSTIFIED
Routine (Fig. 16F) is called to check whether the text is aligned with the top, middle or bottom of the parent bordered area and returns the location of the top-most line of text (i.e. where to start drawing the first line of tex~ in the drawin- area. The location of the top-most line of text within the parent bordered area is stored as the new top inside border of the rectanqle during block 284. Then, at block 286, the drawing area of the bordered area is determined to be equal to the 133~2~

:
inside rectangle of the parent bordered area. Processing returns during block 288 to block 274 of the PLACECELL
Routine (Fig. 16A).
c) PLACE HORIZONTAL CELL Routine (Fiq. 16C) ~ :
Referring now to Fig. 16C, a flow diagram of the PLACE HORIZONTAL CELL Routine is shown. As stated above, the PLACE ~ORIZONTAL CELL Routine (Fig. 16C) determines the locations of the left and right ~oundaries for each of the horizontally arranged sibling bordered -~
areas within the currently processed bordered area. At block 291, a pointer is set to the first child within the ~-bordered area. At block 292, the left boundary for the first child within the currently processed bordered area is set equal to the left boundary of the inside rectangle. Then, during block 293, the right boundary of the first child is determined by adding the width of the -child (determined during ~ITCELL Routine Set (Fig.
16A-E)) to the location of the left boundary of the bordered area. At block 294, a recursive call is made to the PLACECELL Routine (Fig. 16A) in order to determine the placement of the contents within the firs~ child.
The pointer to the first child and the location of the recursive call to the PLACECSLL Routine (294, Fig. 16C) -~
are placed on a LIFO stack identical to the stack ~-~
introduced for the FITCELL Routine Set (F$GS. 13A-E).
The recursive call passes to the PLACECELL Routine (Fig~
16A), the locations of the left, right, top, and bottom ~-~
boundaries for the currently processed child. The left, top and bottom boundaries of the child are set equal to the inside rectangle of the parent which were determined earlier at bloc~ 264 of the PLACECELL Routine (Fig. 16A) and the right boundary was calculated during block 293.
Assuming that the contents (i.e. all descendant bordered areas and text~ of the child have all been placed, processing continues to block 296 during which the left ' 13~ 23 boundary for the next sibling w;thin the currently processed parent is determined. The left boundary of the nex~ child is determined by adding the location of the right boundary (right boundary ~ left boundary ~ width) of the previously processed child, plus the spacing constant between the children. Then, during block 298, the pointer is moved to the next child whose left border was just determined. Then, during block 300, a determination as to whether all of the children have been placed is made. Assuming that not all of the children have been placed, processing continues at blocks 293, 294, 296, 298 and 300 until the locations for all of the sibling children and all of their descendants are determined. Assuming that the boundary locations for all of the children and their descendants have been determined, processing continues at block 302. During block 302, processing returns to the PLAC~CELL Routine (Fig. 16A) at block 274.
d) PLACE VERTICAL CELL Routine (Fic~ 16D?
Referring to Fig. 16D, a detailed flow diaqram of the PLACE VERTICAL CELL Routine is shown. At block 306, the DETERMINE VERTICAL ALIGNMENT Routine (Fis. 16E) is called to check on whether the top child within the currently processed bordered area is aligned with the top, bottom or middle, of the currently processed bordered area. Assuminq that the child is aligned with either the top, bottom or middle of the bordered area, the location of the top border is returned and processing continues at block 308 during which a pointer is reset to the first child of the parent. Then during block 309, the bottom border of the child is determined by adding the height of the child (as determined by the FITCELL
Routine Set (Fig. 13A-E)) to the location of the top boundary location of the child at block 310 and a recursive call is made to the PLACECELL Routine (Fig.

. ~ - .

. ' -65- 133~2~

16A) to determine the location of the contents (i.e. all descendants and text) of the currently processed child.
The pointer to the currently processed child is placed on the stack along with the location of the recursive call (310, Fig. 13D). The left, right, top and bottom boundary locations for the child are passed to the PLACECELL Routine (Fig. 16A). The left and right boundary locations for the child are determined to be equal to the inside rectangle calculated at block 264 during the PLACECELL Routine (Fig. 16A). The top border location was determined by the VERTICAL ALIGNMENT Routine (Fig. 16E) at block 328 and the bottom border location was determined at block 309.
Assuming that all of the contents (i.e.
bordered areas and text) of the child have been placed `~
and the locations have been stored the PLACECELL Routine, processing returns to block 312 (Fig. 16D). During block 312, the top border for the next child within the vertical bordered area is determined by adding the spacing constant to the location of the bottom border of the previously processed child. Then during block 314 the pointer is set to the next child for which the top border was just calculated. At block 316, a determination of whether any more children need to be placed is determined. Assuming tha~ there are still more children and their descendants to be processed, then processing continues at blocks 209, 310, 312, 314 and 316 until the boundary locations for all of the children and their descendants have been determined. Assuming that all of the boundary locations have been determined for each of the children and all of their descendants, then processing continues at block 318 during which processing returns to the PLACECELL Routine (Fig. 16~) at block 274.
Assuming that the processed bordered area contains children, the top borders of each child will be computed :
:

-66- ~3~23 as a function of the height of each child and the spacing in between the children.
e) DETERMINE VERTICAL ALIGNMENT Routine -(Fiq. 16E) Referring to Fig. 16E, a detailed block diagram of the DETE~MINE VERTICAL ALIGNMENT Routine (called during the PLACE VERTICAL CELL Routine (Fig. 16D)) is shown. As stated above, the purpose for this routine is for determining the location of the top most border of all of the vertically arranged children within the currently processed bordered area. At block 322, a pointer is set to the first child within the bordered area. Then during block 324 a verification is made as to whether the top border of the first child is aligned to the top border of the parent. Assuminq that the child are to be aligned with the top border of the parent, processing continues at block 328. During block 328, the JUSTIFIED Routine (Fig. 16F) is called to determine the location of the top border. Returning to block 324, if the top border is not aligned to the top border of the parent, then processing continues at block 326, during which the height of each child and the spacing betweer.
the children are accumulated ~nused space~). Processing continues at block 328 during which the JUSTIFIED Routine (Fi~. 16F) is called for determining the location of the top most border. Processing returns at block 330 to the PLACE VERTICAL CELL Routine (Fig. 16D) at block 308.
f) ?USTIFIED Routine (Fiq. 16FL
Referring to Fig. 16F, a detailed block diagram of the JUSTIFIED Routine ~called during the DETERMINE
VERTICAL ALIGNMENT Routine (Fig. 16E)) is shown. The purpose of this routine is for determinins the location of the top of the contents (i.e. vertical children (DETERMINE VERTICAL ALIGNMENT ~outine (Fig. 16E)) or text .~ i - . .

.. ,- .. .. . , .
~, , .

67 133~123 (PLACE TEXT CELL Routine (Fig. 16B)) within a parent bordered area. The routine first determines whether the top location of ~he contents are aligned to the top, bottom or middle of the parent. In the preferred embodiment, only the bordered areas having vertically arranged children or text require the JUSTIFIED Routine (Fig. 16F) for determining the location of the top border (of vertical children) or ~he first line of text.
Referring to block 334, a determination is made as to whether the required alignment is to the top, bottom or middle (neither top nor bottom) of the parent bordered area. Assuming that the contents are to be aligned to the top of the parent, then the location of the top line or border is determined to be at the inside rectangle top border. Recall that the inside rectangle defines the area within the parent where the contents can reside. Thus, the top dimension is determined to be the location of the top border of the parent plus the marsin and border of the parent. Any extra space will appear below the bottom border or line of the contents.
Returning to block 334, if the contents are determined to be aligned to the bottom border of the parent, then processing continues at block 3~2. During block 342, the location of the top border or line is determined by deducting the vertical length of the children (height of children plus spacing as computed in block 326) or text (as computed in block 280) from the inside rectangle bottom border of the parent. The inside rectangle bottom border is determined to be the location of the bottom border of the parent less the margin plus border width of the parent. Any empty free space will appear at the top of the parent, before the contents be~ins.

~:;

-6~- 13~ 23 Returning to block 334, if the contents are determined to be aligned to neither top nor bottom (i.e.
the middle) of the parent, then processing continues to block 338. During block 338, the extra space not associated with the vertical length of the children or text is determined. The extra s~ace is determined by calculating the difference between the inside bottom border location and the inside top border location of the parent less the vertical length of the text or children, The resulting amount will be the unused or extra space within the parent. Then, during block 340, the extra space is divided in half~ In the preferred embodiment, one half of the extra space is added to the inside top border location of the parent to obtain the top most border or starting point of text within th~ parent.
Regardless of whether the alignment is determined to be with the top, middle or bottom of the parent, processing continues at block 344, during which processing returns to the DETERMINE VERTICAL ALIGNMENT Routine (Fig. 16E) at block 330.
In an alternate embodiment of the JUSTIFIED
Routine (Fig. 16F) the extra space can be divided inbetween the children in any portion. In this way, the spacing between the children will change depending upon the amount of extra space calculated. The first child could still be aligned to the top border at the inside rectangle top border of the parent and the last child could also be aligned to the inside rectangle bottom border of the parent, and the extra space would fill the space between the children.
: 10. DETAILED EXAMPLE OF THE PLACECELL Routine Set (Fias. 16A-F~
Referring to Figures 14A, 16A-F and Fig. 17A, 173, 17C and 17D, a detailed example for determining the ~- .

., .,, ~ , .... ..

13~123 ; -69-boundary locations for the bordered areas is now discussed. Fig. 14A shows the X,Y coordinate pairs for each of the bordered areas after they have been calculated by the PLACECELL Routine Set (Figs. 16A-F).
The X,Y coordinate pair for a bordered area is assumed to be the upper left corner location and the lower right corner location (left, top and right, bottom). Figures 17A, 17B, 17C and 17D are various results tables which maintain ~snapshot viewsn on the contents of the stack and the pointer to the currently processed bordered area.
The 0, 0 coordinate value is assumed to be in the upper left hand corner of the form as shown in Fig. 14A. The 0, 0 coordinate pair is also the upper left hand corner for the root bordered area 50 of the form. Additionally, a "boundary" of each bordered area is assumed to consist of a l-pixel border and a 2-pixel white space margin.
Referring to block 262 of the PLA OE CELL Routine (Fig. 16A), the border locations for the root bordered area 50, which were passed in from the PLACEFORM Routine (Fig. 12), are stored in the record associated with bordered area 50 (0, 0, 520,-) (199, Fig. 14B). The PLACEFORM Routine (Fig. 12) passes these boundary -~
locations to the PLACECELL Routine (Fig. 16A). Then during block 284, the inside rectangle of the root bordered area 50 are determined (3, 3, 517,-). During block 266, a determination is made on whether the ~-contents of bordered area 50 includes text, vertically arranged children or horizontally arranged children. Ths contents of bordered area 50 includes vertically arranged children (51, 52, 53, 55, 57, 59, 51, 63, 65, 67, 69, 71, 73, etc. (Fig. 8A)). Processing continues at block 270 during which the PLACE VERTICAL CELL Routine (Fig. 16D) is called. ~ -A block 306 (Fiq. 16D) the DETERMINE VERTICAL
AL~GNMENT Routine is called. At block 322 (Fig. 16E) a ~70- 13~123 pointer is set to the first child bordered area (bordered area 52) of the vertically arranged children. Processing continues to block 324 during which it is determined that the bordered area 52) is aligned to the top border of the root bordered area 50. Processing continues at block 328 during which the JUSTIFIED Routine (Fig. 16F) is called.
At block 334 (Fig. 16F), the contents of bordered area 52 are determined to be aligned to ~he top border of the root bordered area 50. Processing continues at block 336, during which the location of top-most border of bordered area 52 is determined to be the inside rectangle top border location of bordered area 50 (3). Processing returns at block 344 to block 330 of the DETERMI NE VERTICAL ALIGNMENT Routine (Fi9. 16E). At block 330, processing returns to block 308 of PLACE
VERTICAL CELL Routine (Fig. 16D).
At block 308 (Fig. 16D) the pointer is reset to the first child, or bordered area 52 within the root bordered area 50 (346, Fig. 17A). Then, during block 309, the bottom boundary location of child 52 is determined by adding ~he heiyht of child 52 to the location of the top boundary of child 52. The height of child 52 was determined to be 146-pixels (200, Fiq. 14B) by the FITCELL Routines (Fig. 13A) (3 + 146 - 149). At block 310, a recursive call is made to the P~ACECELL
Routine (Fig. 16A) to determine the boundary locations for the contents (i.e. descendants and text) of bordered area 52. A pointer to bordered area 52 is placed on the stack and the location of the recursive call at block 310 of the PLACE VERTICAL CELL Routine (Fig. 16D) is also placed on the stack (348, Fig. 17A). The left and right boundary locations of child 52 are passed in and they are equal to the inside rectangle left and right borders which were determined for bordered area 50 at block 264 of the PLACECELL Routine (Fig. 16A) (3-, 517,-). The top ~'' ' ' -71- 1~3~23 boundary location (3) determined during the JUSTIFIED
Routine (Fiq. 16F) at block ~36 is passed in and the bottom boundary location (lg9) determined at block 309 (Fig. 14A) is passed in. Thus, the boundary locations for bordered area 52 are (3, 3, 517, 149) (200, Fig.
14B).
The boundary locations for the bordered area 52 (Fig, 14A) are passed to the PLACECELL Routine (Fig. 16A~
(3, 3, 517, lg9). Referring to block 262 of the PLACECELL Routine (Fig. 16A~ the boundary locations for bordered area 52 are stored in the record associated with bordered area 52. At block 264, the inside rectangle of bordered area 52 are de~ermined (6, 6, 514, 146) and, during block 266, a determination is made on whether the contents of bordered area 52 includes text, vertic~lly arranged children or horizontally arranged children.
Bordered area 52 includes horizontally arranged children, namely bordered areas 54, 56 and 58. Therefore, processins continues at block 272 during which the PLACE
HORIZONTAL CELL Routine (Fig. 16C) is called.
At block 291 (Fig. 16C), a pointer is set to the first child (bordered area 54) within bordered area 52 (350, Fig. 17A). At block 292, the left boundary of the first child is set equal to the inside rectangle left border location of bordered area 52. Then, during block 293, the right boundary is determined by adding the location of the left inside boundary (6) of bordered area 54 plus the width of bordered area 54 (103) determined during the F~TCELL Routine (Fig. 13A) (6 + 103 ~ 110).
At block 29~, a recursive call is made to the PLACECELL
Routine (Fiq. 16A) to determine the boundary locations for the contents of bordered area 54. A pointer to bordered area 54 is placed on the s~ack and the loca~ion of the recursive call at block 294 of the PLACE
HORIZONTAL CELL Routine (Fig. 16C) is also placed on the .. .. .

-72- 13~2~

stack (352, Fig . 17A) . The left, top and bottom boundaries of bordered area 54 are set equal to the inside rectangles left, top and bottom border locations determined at block 264 of the ~LACECELL Rout ine (Fig.
16A). The right boundary was determined at block 293, thus, the bordered area location is (6, 6, 109, 146) (202, Fig. 143). Processing continues to the PLACECELL
Routine at block 262, during which the newly calculated borders (6, 6, 109, 146) are stored in the record associated with ~he bordered area 5~. Then, during block 264, the inside rectangle of bordered area 54 are determined to be (9, 9, 106, 143). The bordered area 5g is determined to hsve children vertically arranged during block 266 and processing continues at block 27~, during which the PLACE VERTICAL CELL Routine (Fig. 16D) is called.
At block 306 (Fig. 16D) the DETERMINE VERT I CAL
ALIGNMENT Routine is called. At block 322 (Fig . 16E), the pointer is set to the first child 60 within bordered area 54. Processing continues to block 324 during which it is determined that the content of bordered area 54 are not aligned to the top of the bordered area 54. Thus, processing continues at block 326 during which the vertical length is accumulated by adding the (spacing and the accumulated height for all of the children within bordered area 54) is determined. The accumulated height for bordered areas 60, 62 and 64 is (38 + 32 ~ 32 -102-pixels), The spacing between the children is equal to 2-pixels, Thus, the accumulated height plus spacing for the children is e~ual to 104-pixels. Processing continues at block 328 during which the JUSTIFIED Routine (Fig, 16F) is called.
The contents of parent 54 are determined to be aligned to the middle of bordered area 54 a~ block 334 (Fig. 16F). During block 338, the amount of extra space ~,; (~ . ! ~ ~ ' ' ' ~'`',.~:' ~' '' ',' ,` ' ~73~ 133~
- .
not associated with the vertical ~ength (height plus spacing of the children) is determined. Specifically, the extra space is determined by determining the difference between the inside top and bottom locations of bordered area 54 less the vertical length (accumulated heiqht plus spacing of the children) (143 - 9 - 104 ~
30). Processing continues to block 340 during which the extra space is divided in half (30/2 ~ 15). The location of the top border of the child bordered area 60 is equal to the location of the top of inside rectangle plus one half of the extra space (9 ~ 15 - 24). Processing continues at block 344, during which processing returns to block 330 of the DETERMINE VERTICAL ALIGNMENT Routine (Fig. 16E). During block 330, processin~ returns to block 308 of the PLACE VERTICAL CELL Routine (Fig. 16D).
During block 308 (Fig. 16D), the pointer is ~ ;~
reset to the first child within bordered area 54 --bordered area 60 (354, Fig. 17A). At block 309, the bottom boundary of bordered area 60 is calculated by adding the location of the top boundary to the height of bordered area 60 (2~ + 38 ~ 62). Then, during block 310, a recursive call is made to the PLACECELL Routine (Fig.
16A). A pointer to bordered area 60 is placed on the stack and a pointer to the location of ~he recursive call -~
(310, Fig. 16D) is also placed on the stack (356, Fig.
17A). Additionally, the boundary loca~ions for the left ---and right borders for bordered area 60 are set equal to ~ -the inside left and right dimensions calculated for parent bordered area 54 (9,-, 109,-). Recall that the left inside border or location for bordered area 54 was determined to be (9) and the right inside boundary for bordered area 54 was determîned to be (106). The top boundary for bordered area 60 was determined during the JUSTIFIED ~outine (Fig. 16F) at block 340 ~o be (24) and the bottom boundary of bordered area 60 was calculated to be (62) at block 309. Thus, the coordinates for bordered I 7.-. - , , ~ ., ,. . - - . .. .
'-'~ ~''~ '-'' . -~, ~ ,,"~

_74_ 133~12~

area 60 are (9, 24, 106, 62) (204, Fig. 14B). Processing continues at block 262 of the PLACECELL Routine (Fig.
16A) during which the boundary locations (9, 24, 106, 62) for bordered area 60 are stored. Then, during block 26~, the inside rectangle of bordered area 60 are determined to be (12, 27, 103, 59).
During block 266, bordered area 60 is determined to have a plurality of children arranged in a horizontal fashion. Processing continues to block 272 during which the PL~CE HORIZONTAL CE~L Routine (Fig. 16C) is called. At block 292 the pointer is set equal to bordered area 61, the first child within bordered area 60 (358, Fig. 17A). At block 292, the left boundary for the first child (bordered area 61) within bordered area 60 is set equal to the left boundary of the inside rectangle.
During block 293, the right boundary for bordered area 61 is determined to be e~ual to the left boundary location plus the width of bordered area 61 (12 + 27 ~ 39). At block 294, a recursive call is made to the PLACECELL
Routine (Fig. 16A). A pointer to bordered area 61 and a pointer to the location of the recursive call at block 294 (Fig. 16C) are placed on the stack (360, Fig. 17B).
In addition, the left, top, right and bottom locations are passed to the PLACECELL Routine (Fig. 16A). The left, top and bottom boundary locations for bordered area 61 are set equal to the inside left, top and bottom boundaries calculated for bordered area 60 (12, 27, -, 59). The right boundary was determined to be (34) at block 309. Therefore, the boundary locations for bordered area 61 are (12, 27, 39, S9) (210, Fig. 1 Processing continues at block 262 of the PLACECELL
Routine (Fig. 16A) during which the boundary locations for bordered area 61 are stored in the record associated with bordered area 61. Then during block 264, the inside rectangle locations for the bordered area 61 are determined to be (15, 30, 36, 56). At block 266, the .~
; .
,..
.,.

; 133~2~
contents of the bordered area fil are determined to be text. Processing continues at block 268 during which the PLACE T~XT CELL Routine (Fig. 16~) is called.
At block 278 (FIG. 16B) the displayable area for bordered area 61 is set equal to the inside rectangle's left and right borders of bordered area 61.
Then, during block 280, the TEXTHITE Routine (133, FIG.
13B) is called to determine the accumulated height for all of the lines of text inside bordered area 61. The accumulated height for the text is determined to be 26-pixels, (2 (lines) x 13-pixels). Then, during block 262, the JUSTIFIED Routine (Fig. 16F) is called. At block 334 (Fig. 16F) the text is determined to be aligned with the top border of bordered area 61. ~he location of the starting point of the text is set equal to the inside top dimension for bordered area 61 or (30).
Processing returns to block 264 of the PLACE
TEXT CELL Routine (Fig. 16B) during which the start location for the first line of text is stored (30). Then during block 286, the text drawing area is set equal to the inside rectangle of bordered area 61 with the top location set equal to the new inside rectangle top border location (30) and then the text drawing area is stored.
At block 288, processing returns to block 274 of the PLACECELL Routine (Fig. 16A). Recall that the PLAC~CELL ~-Routine was called recursively at block 29g of the PLACE
HORIZONTAL CELL Routine (Fig. 16C) with reference to determining the placement of the contents of bordered ~area 61. The pointer to bordered area 61 and the location to the recursive call - block 294 (Fi~. 16C) are "popped~ from ~he stack (362, Fig. 17B) and processing continues at block 296. During block 296, the left boundary location for the next horizontally arranged sibling in the bordered area 60 is determined.
Specifically, the right boundary for bordered area 61 is ~ ' -76- 133~123 added to the spacing constant of l-pixel (39 l 1 - 40).
~hus, the left border location for bordered area 63 is set equal to (40). At block 298, the pointer is moved to bordered area 63 (364, Fig. 17B). Processing continues at block 300 during which it is determined that bordered area 63 still needs to be placed. Processing continues at block 293 during which, the right boundary for bordered area 63 is determined by addinq the width of bordered area 63 to the location of the left boundary of bordered area 63 (40 1 63 ~ 103). The left boundary location is (40) and the width of bordered area 63 is 63-pixels. Thus, the location of the right boundary is equal to (103).
Then at block 294, a recursive call to the PLACECELL Routine (Fig. 16A) is made. A pointer to bordered area 63 and the location of the recursive call (294, Fig. 16C) are stored on the stack (366, Fig. 17B).
The left, top, right and bottom locations are passed to the PLACECELL Routine (Fig. 16A). The top and bottom boundaries for bordered area 63 are the same as the top and bottom boundaries for bordered area 61. The left and right boundaries were calculated at block 293 ~nd 296.
Therefore, at block 262, the location (40, 27, 103, 59) (212, Fig. 148) for bordered area 63 is stored in the record associated with bordered area 63. At block 264, the inside dimensions for bordered area 63 are determined to be (43, 30, 100, 56). Processing continues at block 266 during which the contents of bordered area 63 are determined to be text. At block 268 the PLACE TEXT
Routine (Fig. 163) is called.
A~ block 278 (Fig. 16B) the displayable area is set equal to the inside dimensions of bordered area 63.
At block 280, the TEXTHITE Routine (133, Fig. 139) is called to determine the height of the text. There is any one line of text within bordered area 63 (n3800n, Fig.

3~

~77~ ~33~ 23 14A) and it is determined to be 26-pixels tall (1 (~ine) x 26-pixel (Height~Line)). Processing continues at block 282 during which the JUSTIFIED Routine (Fig. 16F) is called.
At block 334 (Fig. 16F), the contents of bordered area 63 are determined to be aligned to the top of bordered area 63. Pro~-essing continues at block 336 during which the start location for the text is determined to be (30); the top inside border location of bordered area 63. At block 344, processing returns to the PLACECE~L Routine at block 284 of the PLACE TEXT CBLL
Routine (Fig. 16B). Processing continues at block 2~g, during which the start location for the first line of text is stored (30). Then during block 206, the drawing area location is set equal to the internal dimensions of bordered area 63 with the top location set equal to the new inside dimension (30) and then stored. At block 288, -processing returns to block 274 of the PLACECELL Routine (Fig. 16A). Xecall that the PLACECELL Routine (Fig. 16A) was recursively called at block 294 (Fig. 16C) while processing the contents of bordered area 63 (366, Fig.
17B). A recursive return is made to block 294 (Fig. 16C) and the same information within the top location of the stack is ~popped~ (368, Fig~ 17B).
Processing continues at block 296 (Fig. 16C) of the PLACE HORIZONTAL CELL Routine during which the left boundary location of the next child in bordered area 60 is determined. At block 298, the pointer is moved to next bordered area (368, Fig. 178). All of the children of bordered area 60 have been placed, and thus, processing continues to block 302, during which processing returns to the P~ACECELL Routine (Fig. 16~) at block 274. The PLACECELL Routine was recursively called and therefore processing recursively returns to the top location on the stack (310, Fig. 16D). The information . .

, : ." ^ - ; . :

-78- 133~1 23 in the top location of the stack is "popped~ (pointer to bordered area 60 and location to block 310 (Fig. 16D)) (370, Fig. 17C) and processing continues at block 312 of the PLACE VERTICAL CELL Rout ine. At this stage of processinq, the locations of bordered areas 52, 54, 60, 61 and 63 have been determined. The placement for the remaining vertically arranged children 62 and 64 within bordered area 54 needs to be determined.
At block 312, the top border of the next child (bordered area 62) within bordered area 5~ is determined.
Specifically, the top border is determined by adding the spacing between the children to the location of the bottom border of bordered area 60. The location of the bottom border for bordered area 60 is (62) and the spacing is l-pixel (62 +1 - 63). Thus, the top bordered location for child 62 is (63). The pointer is moved to bordered area 62 and processing continues at block 316 during which it is determined that there are still more children to process. Processing continues at block 309, during which the location of the bottom border for bordered area 62 is determined by adding ~he height of bordered area 62 to the location of the top border (63 +
32 - 95). At block 310, the PLACECELL Routine (Fig. 16A) is recursively called. A pointer to bordered area 62 and the location of the recursive call (310, Fig. 16D) are placed on the stack (374, Fig. 17C). The left, top, riqht and bottom border locations are passed to the PLACECELL Routine (Fig. 16A). The left and right boundaries for bordered area 62 are set equal to the inside left and right dimensions for bordered area 54 (9, -, 106,-). The top boundary to bordered area 62 was determined to be (63) at block 314 and the bottom border location was determined at block 309 (9, 63, 106, 95) (206, Fig. 14B). Processing continues at block 262 of the PLACECELL Routine (Fig. 16A) during which the boundary locations for bordered area 62 are stored (9, r~

-79- 1 3 3 ~ 1 2 3 : :
63, 106, 95) (Fig. 14A). During 41Ock 264, the inside dimensions for bordered area 62 are determined to be (12, 66, 103, 92). At block 266, the contents of bordered area 62 are determined to be text and thus processing continues at block 268 durins which the PLACE TEXT CELL
Routine (Fig. 16B) is called.
At block 278, the displayable area within bordered area 62 is set equal to the inside rectangle of bordered area 62 and stored at block 280. The TEXTHITE
Routine (133, Fig. 13B) is called at block 2B2. The height of each line of text is 13-pixels and there are 2 lines, thus, the total height of text is 26-pixels. At block 282, the JUSTIFIED Routine (Fig. 16F) is called.
During block 334 (Fig. 16F), the contents are determined to be aligned to the top border of bordered area 62 and processing continues at block 336 during which the starting point for the text is determined to be at the top inside dimension for bordered area 62 or (65) (~ig.
14A). Processing returns at block 344 to block 2B4 of the PLACE TEXT CELL Routine (Fig. 16~) during whieh the top location (66) is stored in the record associated with the text. At block 2~6, the drawing area for bordered area 62 is set equal to the inside rectangle of bordered area 62 with inside top location as (66). At block 288, processing returns to block 274 of the PLACECELL Routine (Fig. 16A). The PLACECELL Routine was originally called recursively, The information stored at the top of the stack includes a pointer to bordered area 62 and the ~ -location of ~he recursive call was at 310, Fig. 16D. The contents at the top of the staGk are ~popped" (376, Fig.
17C) and processing continues at block 312 of the PLACE
VERTICAL CELL Xoutine (Fig. 16D).
During block 312 (Fig. 16D), the top border for the next child (bordered area 64) is determined. The top border of bordered area 64 is determined by adding the ' g~

-80- 133~ 23 spacing constant to the location ~f the bottom border of bordered area 62 (95 + 1 ~ 96). Processing continues at block 314, during which the pointer is moved to bordered area 64 (378, Fig. 17C). Then during block 316, a determination is made that there is still one ~ordered area to process, namely bordered area 64.
Processing continues at block 309 during which the bottom border location is determined by adding the height of bordered area 6~ to the location of the top border. The location of the top border is (96) and the height of bordered area 64 is 32-pixels (96 1 32 ~ 128).
At the block 310, a recursive call is made to the PLACECE~L Routine (Fig, 16A). The pointer to bordered area 64 is placed on the stack along with the location of the recursive call (310, Fig. 16D) (280, Fig. 17C). The left, top, right and bottom border locations are passed to the PLACECELL Routine (Fig. 16A). The left and right border locations for bordered areas 63 are set equal to the inside left and right borders for bordered area 5~.
The top border for bordered area 64 was calculated at block 312. At block 262, the boundary loca~ions for bordered area 64 are stored (9, 96, 106, 128) (208, Fig. 14B). ?rocessing continues at block 264, during which the inside dimensions for bordered area 6~ are determined. At block 266, the contents of bordered area 64 are determined to be text and thus processing continues at block 268 during which the PLACE TEXT CELL
Routine (Fig. 16B) is called.
At block 278 (Fig. 168) the displayable area for bordered area 64 is set equal to the inside dimensions of bordered area 64. At block 280, the TEXTHITE Routine (133, Fig. 13B) is called. The height of each line of text is 13-pixels and there are two lines of text. Thus the height of the text is 26-pixels.
Processing continues at block 282 during which the ~ . . ~: .

-81- ~3~1 23 JUSTIFIED Rou~ine (Fis. 16F) is called. At block 334 (Fig. 16F) it is determined that the contents of bordered area 64 are aligned with the top border of bordered area 64. Therefore, during block 336, the starting point of the text is determined to be (99), the inside rectangle top border locatio~. Processing returns at block 344 to the PLACE TEXT CE~ Routine at block 2B4. During block 284, the new inside rectangle top border location is stored and at block 286 the new inside rectangle dimensions are set equal to the drawing area. Processing returns from block 288 tQ block 274 of the PLACECEL~
Routine (Fig. 16A). Recall that the PLACECELL Routine (Fig. 16A) was called recursively. The top location of the stack contains a pointer to bordered area 64 and the location block 310 (Fis. 16D) which are ~popped~ (382, Fig. 17D) and processing continues at block 312 of the PLACE VERTICAL CEL~ Routine (Fig. 16D).
At block 312, the top border of the next child is determined and at block 314 the pointer is moved to the next child (3~4, Fig. 17D) within bordered area 54.
At this time there are no more children which need placement and, thus, at block 316 it is determined that processing of the contents of bordered area 54 is complete. Processing returns at block 318 to the PLACECEL~ Routine (at block 274). A recursive re~urn is made to block 294 of the PLACE HO~IZONTAL CEL~ Routine (Fig. 16C). The pointer to bordered area 54 and the location 294, Fig. 16C are ~popped~ from the stack (386, Fig. 17D) and processing continues at block 296. During block 296, the left boundary location for the nex~
horizontal child within bordered area 52 is determined.
The pointer moves to bordered area 56 at block 298 (888, Fig. 17D). A process, similar to the one described above continues until bordered areas 56 and 58 and their contents (i.e. descendants and text) have been placed.
Then, the remaining vertical bordered areas 51, 55, 57, .
~s~..~

,, ~

-82- ~ 3 r3 ~ 1 2 ~
:
59, 61, 63, etc., within root bord~red area 50 are placed.
11. DRAWCELL Routlne Set (Fiqs. 18A-C) Referring to Figs. 18A, 18B, and 18C, a detailed description of the DRAWCELL Routine Set is now discussed. The purpose of the DRA~CELL Routine Set is for displaying the bordered areas of a form and their descendants. To start, the drawing area is passed into the DRAWCELL Routine Set from the DRAWFORM Routine (Fig.
11). The drawing area may be ~igger than the ~ordered area, smaller than the bordered area or, in fact, it may not even overlap the bordered area. If it is determined that there is no overlapping of the bordered area to the drawing area, then there is nothing to draw. If part of the draw area lies outside the bordered area, then only the part which overlaps the bordered area will be drawn.
Stated differently, only the intersection of the draw area and the bordered area will be drawn. Generally, the operation of the DRAWCE~L Routine Set is as follows, if the bordered area to be drawn doee not contain text, then the bordered area's borders will be drawn first, then the descendants of the bordered area will be drawn and, lastly, text at the bottom level bordered areas will be drawn. Stated differently, the drawing occurs on the way down the hierarchical tree structure, drawing the borders first ~nd then eventually the text.
a) D~AWCELL Routine (Fiq. 18A) Referring to Fig. 18A, a flow diagram of the DRAWCELL Routine is shown. During block 402, for the particular bordered area currently being drawn, a determination is made as to whether there is an intersection (amount in pixels) between the ~raw area and ~he bordered area. Then during block 404, an additional determination is made as to whether ~he intersection is .: ~ .: --83- ~ 3 3 al 2 3 greater than zero. Assuming that the in~ersection is not greater than zero, then processing returns to the calling proqram at block 410. However, assuming that the intersection is greater than zero, processing continues at block 406, during which the DRAW BORDERS Routine (Fig.
18B) is called. The purpose of the DRAW BORDERS Routine is for displaying "printable~ and~or "nonprintable~ (to be discussed) sides of the bordered area designated to be visible or "on~. Processing continues at block 408 during which the DRAW CONTENTS Routine (Fig. 18C) is called. The purpose of the DRAW CONTENTS Routine is for displaying the contents (i.e. all descendant bordered areas, or text) of the bordered area currently being processed. Processing returns at block 410 to the calling program (FITFO~M Routine (Fig. 11)).
b) DRAW BORDERS Routine (Fic. 18B~
Referring to Fig. laB, a detailed block diagram of the DRA~ BORDERS Routine is shown. At block 41~, a determination is made on whether the borders of the currently processed bordered area are to be displayed on the screen display 5 as nonprintable tracing lines.
Nonprintable tracing lines, if they are being displayed, are typically shown in dotted form and they only appear on the screen display 5 for indicatinq to the user where a bordered area's outer limits extend, in order to enable the user to locate and move these borders to affect changes in width and/or height or bordered areas. If the user wants a nonprintable tracing line to be printed, then the tracing line is converted into a printable line by user command. On the screen display 5 in the preferred embodiment, the printable line will appear to be a solid line. If the nonprintable tracin~ lines for the bordered areas are to be displayed on the screen display 5 (Fiq. 1~, then processing continues at block 416. At block 416, the tracing lines are displayed on .~

-84- t33~123 the screen display 5 (Fig. 1) in the form of dotted lines (howeYer, the line could have any style) and processing continues to block ~20. However, assuming that the tracing lines for the bordered areas are not to be displayed on the screen display S, ~hen processing continues a~ block 420. During block 420, a determination is made on whether the top border of the currently processed bordered area is designated as a printable line (i.eL so that the border is displayed as a solid line and printed visibly). Assumin~ that the top border is to be printed (e.g. as a solid line), then processing continues at block 422 during which a solid line is drawn from the location of the top left corner of the bordered area to the location of the top right corner of the bordered area. Note that in alternative embodiments the border may be of any designated width as provided by the user and of any particul~r style, i.e.
dotted, black solid, etc.
Returning to block 422, regardless of whether the top border is to be displayed solid and printed or not, processing continues at block 424 during which a determination is made as to whether the right border is to be printed. Assuming that the right border is designated to be printed, then processing continues at block 426 during which a solid line from the top right corner location of the bordered ar~a to the bottom right ~
corner location is drawn. Returning to block 424, -regardless of whether the border is designated to be printed or not, processing continues a~ block 42~
During block 428, a determination is made on whether the bottom border of the bordered area is to be printed.
Assuming that the bottom border is designated to be printed, processing continues at block 430 during which a solid line is drawn from the bottom right location of the ~ ~
bordered area to the bottom le~t location of the bordered ~ -area. Regardless of whether the bottom border is to be ~

-85- 133~23 printed or not, processing continues at bloc~ 432.
During block 432, a determination is made as to whether the left border is to be printed. Assuming that the left border i5 designated to be printed, then processing continues at block 430 during which a solid line is drawn from the bottom left corner location of ~he bordered area to the top left corner location of the bordered area.
Again, regardless of whether the left border is indicated to be printed or not, processing continues at block 436.
Durinq block ~36, processing returns to the DRAWCELL
Routine (Fig. 18A) at block ~08.
c) DRAW CONTENTS Routine (Fia. 18C) Referring now to Fig. 18C, a detailed diagram of the DRAW CONTENTS Routine is shown. At block 440, a determination as to whether the bordered area contains text is made. Assuming that the bordered area contains text, then block 442 is called to draw the text in the intersection area between the draw area and the bordered area. Typically the operating system provides the capability ~or drawing the text in the specified region.
This is especi~lly true for the more recent graphical environments. Operating system routines are callable by the application, are provided by computer manufactures (i.e. IBM, Apple, etc.) and system developers (Microsoft etc.) for drawing the actual text in the specified region. Assuming that ~he text has been drawn, processing returns at block 444 ~o the DRAWCELL Routine (Fig. 18A) at block 410. Returning to block 440, assuming that there is no text within the bordered area, processing continues at block 446. When there is no text within the bordered area, the bordered area must contain descendant bordered areas. Thus, at block 4~6 a pointer to the first child within ~he bordered area is set. Then durins block 44a, a recursive call to the DRAWCELL
Routine (Fig. 18A) is made to have the first child and ,~ ~ , h ~
.
~ ^ .
::

-86- 13~ 2~

its contents ti.e. descendants or text) drswn. Once the first child bordered area and its contents have been drawn, then processing continues at block 450 during which the pointer is moved to the next child within the parent currently being processed. Yrocessing continues at block 452, during which ~ determination is made as to whether any more children (and their descendants or text) need to be drawn. Assuming that there are still more children within the bordered area to be drawn, processing continues at block 448, 450 and 452 until all the children, including their descendants and text, have been drawn. However, if all of the children, including their descendants and text, have been drawn, processing returns at block 44~ to the DRAWCE~ Routine (Fig. 18A) to bloc~
410.
This invention has been described in an exemplary and preferred embodiment, but it i8 not limited thereto. Those skilled in the art will recognize that a number of additional modifications and improvements can be made to the invention without departure from the essential spirit and scope. For example, as mentioned earlier, a number of different programming techni~ues and any number of different programming language~ will be suitable for implementing the disclosed invention. The scope of the invention as described herein should not be limited by the previous disclosure but instead by the ;~
followinq claims.

Claims (8)

1. A method for dynamically altering a generic form in a computer, said form being characterized as a two dimensional space partitioned into a plurality of bordered areas, each said bordered area having an adjustable height and an adjustable width, and each said bordered area of said form including text, said text including none, one or more lines of characters and each said character of said text having adjustable font attributes, said adjustable font attributes including font type, font style, and font size, said method for dynamically altering said form comprising the steps of:
for one or more bordered areas of said form, altering the size of said one or more bordered areas by changing said adjustable height and/or said adjustable width of said one or more bordered areas so that said adjusted one or more bordered areas overlap one or more other bordered areas of said form, and/or for said bordered areas having one or more lines of text, changing said adjustable font attributes of said text so that said text overlaps into one or more other bordered areas of said form, and dynamically altering said adjustable height and/or said adjustable width and/or said adjustable font attributes of said text, for one or more bordered areas of said form, in order to ensure that said overlapping does not occur.
2. The method of claim 1 wherein said bordered areas of said form each include at least one border and said step for dynamically altering said adjusable height and/or said adjustable width and/or said adjustable font attributes, further includes the step of aligning said borders of at least two of said bordered areas, whereby said borders maintain alignment regardless of said step of dynamic alteration.
3. The method of claim 2 further including the step of aligning said borders of said at least two bordered areas in a vertical direction.
4. The method of claim 2 further including the step of aligning said borders of said at least two bordered areas in a horizontal direction.
5. An apparatus for dynamically altering a generic form in a computer, said form being characterized as a two dimensional space partitioned into a plurality of bordered areas, each said bordered area having an adjustable height and an adjustable width, and each said bordered area of said form including text, said text including none, one or more lines of characters and each said character of said text having adjustable font attributes, said adjustable font attributes including font type, font style, and font size, said apparatus for altering said form comprising:
for one or more bordered areas of said form, means for altering the size of said one or more bordered areas by changing said adjustable height and/or said adjustable width of said bordered areas so that said adjusted one or more bordered areas overlap one or more other bordered areas of said form, and/or for said bordered areas having one or more lines of text, means for changing said adjustable font attributes of said text so that said text overlaps into one or more other bordered areas of said form, and means for dynamically altering said adjustable height and/or said adjustable width and/or said adjustable font attributes of said text, for one or more bordered areas of said form, in order to ensure that said overlapping does not occur.
6. The apparatus of claim 5 wherein said bordered areas of said form each include at least one border and said means for dynamically altering said adjustable height and/or said adjustable width and/or said adjustable font attributes, further includes means for aligning said planar border of at least two of said bordered areas, whereby said planar borders maintain alignment regardless of any alterations made to the form.
7. The apparatus of claim 6 further including the step of aligning said borders of said at least two bordered areas in a vertical direction.
8. The apparatus of claim 6 further including the step of aligning said borders of said at least two bordered areas in a horizontal direction.
CA000615075A 1988-12-30 1989-09-29 Method and apparatus for generic form generation Expired - Lifetime CA1330123C (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CA000616728A CA1340593C (en) 1988-12-30 1993-08-03 Method and apparatus for determing the size of bordered areas of a generic form
CA000616691A CA1339754C (en) 1988-12-30 1993-08-03 Method and apparatus for determining the location of the contents of bordered areas of a generic form

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US292,611 1988-12-30
US07/292,611 US5144693A (en) 1988-12-30 1988-12-30 Method and apparatus for generic form generation

Related Child Applications (2)

Application Number Title Priority Date Filing Date
CA000616728A Division CA1340593C (en) 1988-12-30 1993-08-03 Method and apparatus for determing the size of bordered areas of a generic form
CA000616691A Division CA1339754C (en) 1988-12-30 1993-08-03 Method and apparatus for determining the location of the contents of bordered areas of a generic form

Publications (1)

Publication Number Publication Date
CA1330123C true CA1330123C (en) 1994-06-07

Family

ID=23125424

Family Applications (2)

Application Number Title Priority Date Filing Date
CA000615075A Expired - Lifetime CA1330123C (en) 1988-12-30 1989-09-29 Method and apparatus for generic form generation
CA000616727A Expired - Lifetime CA1341309C (en) 1988-12-30 1989-09-29 Method and apparatus for representing bordered areas of a generic form

Family Applications After (1)

Application Number Title Priority Date Filing Date
CA000616727A Expired - Lifetime CA1341309C (en) 1988-12-30 1989-09-29 Method and apparatus for representing bordered areas of a generic form

Country Status (5)

Country Link
US (1) US5144693A (en)
EP (1) EP0376420A3 (en)
JP (1) JPH03110665A (en)
AU (1) AU4700189A (en)
CA (2) CA1330123C (en)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0451485A3 (en) * 1990-04-11 1992-12-30 International Business Machines Corporation A form authoring toolkit
US5379372A (en) * 1990-09-13 1995-01-03 Wu; William C. Apparatus and method for designing a form structure using column and row rules
US7051273B1 (en) 1990-11-30 2006-05-23 Microsoft Corporation Customizing forms in an electronic mail system utilizing custom field behaviors and user defined operations
US5557723A (en) * 1990-11-30 1996-09-17 Microsoft Corporation Method and system for customizing forms in an electronic mail system
US5490243A (en) * 1990-12-13 1996-02-06 F3 Software Corporation Data processing system for multi-platform print control and electronic data fill
US5384886A (en) * 1991-04-01 1995-01-24 Xerox Corporation Process for electronically printing envelopes
US5649216A (en) * 1991-05-17 1997-07-15 Joseph S. Sieber Method and apparatus for automated layout of text and graphic elements
EP0541237A1 (en) * 1991-11-08 1993-05-12 International Business Machines Corporation Data entry field modification in a graphical user interface
JPH0721754B2 (en) * 1991-11-08 1995-03-08 インターナショナル・ビジネス・マシーンズ・コーポレイション Graphical user interface
US5267303A (en) * 1992-03-20 1993-11-30 Xerox Corporation Using a form to request automatic creation of form with fields for requesting operations in relation to items
ATE190149T1 (en) * 1993-04-30 2000-03-15 Ibm AREA LAYOUT IN A VIEW ON A GRAPHIC DISPLAY SCREEN
US5364608A (en) * 1993-07-30 1994-11-15 Eaton Corporation Method of converting a silicon nitride from alpha-phase to beta-phase, apparatus used therefor, and silicon nitride material made therefrom
IL110811A0 (en) * 1993-09-07 1994-11-11 Jetform Corp Electronic forms generation system and method
US5796402A (en) * 1993-12-03 1998-08-18 Microsoft Corporation Method and system for aligning windows on a computer screen
US5878198A (en) * 1994-12-21 1999-03-02 Canon Kabushiki Kaisha Information processing apparatus and method and memory medium storing information processing program
US6807676B1 (en) * 1995-07-14 2004-10-19 General Instrument Corporation Methods of formatting data to maximize the readability and the amount of song identification information displayed on a limited number of lines
US6037944A (en) * 1996-11-07 2000-03-14 Natrificial Llc Method and apparatus for displaying a thought network from a thought's perspective
US6012070A (en) * 1996-11-15 2000-01-04 Moore Business Forms, Inc. Digital design station procedure
US6144974A (en) * 1996-12-13 2000-11-07 Adobe Systems Incorporated Automated layout of content in a page framework
US6243721B1 (en) * 1997-01-31 2001-06-05 Microsoft Corporation Method and apparatus for providing automatic layout capabilities for computer forms
US6321243B1 (en) * 1997-06-27 2001-11-20 Microsoft Corporation Laying out a paragraph by defining all the characters as a single text run by substituting, and then positioning the glyphs
JP3560447B2 (en) * 1997-07-28 2004-09-02 シャープ株式会社 Image processing device
JP4077909B2 (en) * 1997-10-03 2008-04-23 富士通株式会社 Form processing device
US6076080A (en) * 1997-11-04 2000-06-13 The Standard Register Company Forms order entry system
US6236938B1 (en) 1999-08-05 2001-05-22 Amadeus Consulting Group, Inc. Systems and methods for creating maps using GPS systems
FR2803056B1 (en) * 1999-12-23 2002-03-29 Roland Tomasi COMPUTER DEVICE AND METHOD FOR FILLING COMPUTER PRINTS
JP2002222183A (en) * 2001-01-24 2002-08-09 Seiko Instruments Inc User interface for preparing printing template
DE10138323C1 (en) * 2001-08-10 2003-04-17 Danfoss As Mass flow meter and method for measuring a mass flow
US7444302B2 (en) * 2002-06-14 2008-10-28 Ellie Mae, Inc. Online system for fulfilling loan applications from loan originators
US7076733B2 (en) 2002-07-12 2006-07-11 Pace Micro Technology Plc Electronic program guide and method for programming and editing items therein
US7472089B2 (en) * 2002-08-15 2008-12-30 Ellie Mae, Inc. Loan origination system interface for online loan application processing
US20050235202A1 (en) * 2004-04-20 2005-10-20 Tsu-Wang Chen Automatic graphical layout printing system utilizing parsing and merging of data
US8990254B2 (en) 2004-07-02 2015-03-24 Ellie Mae, Inc. Loan origination software system for processing mortgage loans over a distributed network
US20060059422A1 (en) * 2004-09-16 2006-03-16 Ting-Hu Wu Desktop application implemented with web paradigm
US20060101023A1 (en) * 2004-11-05 2006-05-11 Ellie Mae, Inc. Universal computing paradigm with single-code base utilizing a flexible distributed computing architecture
EP1710715A1 (en) * 2005-04-06 2006-10-11 Amadeus s.a.s Dynamic method for visually rendering windows to display and input data on a computer screen
JP4944434B2 (en) * 2005-12-06 2012-05-30 キヤノン株式会社 Layout method and program
US9430455B2 (en) * 2005-12-15 2016-08-30 Simpliance, Inc. Methods and systems for intelligent form-filling and electronic document generation
US8600798B1 (en) 2007-09-21 2013-12-03 Ellie Mae, Inc. Loan screening

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5916075A (en) * 1982-07-20 1984-01-27 Dainippon Printing Co Ltd Slip designing system
JPS5994789A (en) * 1982-11-24 1984-05-31 株式会社東芝 Document editing apparatus
US4823108A (en) * 1984-05-02 1989-04-18 Quarterdeck Office Systems Display system and memory architecture and method for displaying images in windows on a video display
US4658366A (en) * 1984-08-09 1987-04-14 Posh David R Methods and apparatus for accurately completing pre-printed forms
US4736308A (en) * 1984-09-06 1988-04-05 Quickview Systems Search/retrieval system
US4962475A (en) * 1984-12-26 1990-10-09 International Business Machines Corporation Method for generating a document utilizing a plurality of windows associated with different data objects
JPS61255460A (en) * 1985-05-08 1986-11-13 Casio Comput Co Ltd Table ruled line interpolating system
JPS6290762A (en) * 1985-06-19 1987-04-25 Toshiba Corp Documentation device
JP2540800B2 (en) * 1986-02-28 1996-10-09 カシオ計算機株式会社 Table making device
JPS62267858A (en) * 1986-05-15 1987-11-20 Nec Corp Producing and editing device for intra-rectangle character string
US4829294A (en) * 1986-06-25 1989-05-09 Hitachi, Ltd. Document processing method and system using multiwindow
GB8618664D0 (en) * 1986-07-31 1986-09-10 British Telecomm Computer aided design system
JPS63109577A (en) * 1986-10-28 1988-05-14 Dainippon Printing Co Ltd Goods allocation device on screen
JPS63111565A (en) * 1986-10-29 1988-05-16 Mitsubishi Electric Corp Composition system
US4788538A (en) * 1986-11-17 1988-11-29 Lotus Development Corporation Method and apparatus for determining boundaries of graphic regions
US4763356A (en) * 1986-12-11 1988-08-09 AT&T Information Systems, Inc. American Telephone and Telegraph Company Touch screen form entry system
JPS63240678A (en) * 1987-03-27 1988-10-06 Mitsubishi Electric Corp Form system
JPH01174463A (en) * 1987-12-28 1989-07-11 Sharp Corp Dot pattern correction method
JPH01183784A (en) * 1988-01-19 1989-07-21 Toshiba Corp Document picture processor

Also Published As

Publication number Publication date
US5144693A (en) 1992-09-01
EP0376420A2 (en) 1990-07-04
AU4700189A (en) 1990-07-05
JPH03110665A (en) 1991-05-10
CA1341309C (en) 2001-10-23
EP0376420A3 (en) 1991-04-24

Similar Documents

Publication Publication Date Title
CA1330123C (en) Method and apparatus for generic form generation
US5208906A (en) Method and apparatus for representing bordered areas of a generic form with records
US5148520A (en) Determining the locations of the contents of bordered areas of a generic form
Calder et al. Glyphs: Flyweight objects for user interfaces
US4608662A (en) Method for editing document
CA1205562A (en) Formatting text/graphics using plural independent formatting mechanisms
EP0117405B1 (en) Automatically balancing and vertically justifying text and/or graphics
EP0117406B1 (en) Automatically balancing and vertically justifying text and/or graphics
EP0475734B1 (en) Document processing apparatus
US20060206800A1 (en) Method for displaying editable characters in a divided table cell
US20030050934A1 (en) Method and system for flowing data to an arbitrary path defined by a page description language
US7735003B1 (en) Computer system integrating different data types into single environment
Chamberlin et al. JANUS: An interactive system for document composition
EP0585332B1 (en) Method and apparatus for automated page layout of text and graphic elements
US6189020B1 (en) Document processing method and apparatus using batch process
Chamberlin et al. JANUS: An interactive document formatter based on declarative tags
JPS6248581A (en) Format setting device
CA1339754C (en) Method and apparatus for determining the location of the contents of bordered areas of a generic form
JPH09179861A (en) Page design supporting method
JPH0675952A (en) Document preparing device
JP3275629B2 (en) Layout correction device
JP3012406B2 (en) Table making device and method
JPH0863472A (en) Character composing device
JP3275628B2 (en) Layout correction device
Calder Building user interfaces with lightweight objects

Legal Events

Date Code Title Description
MKEX Expiry

Effective date: 20110607