AU748004B2 - Split tree data structure - Google Patents

Split tree data structure Download PDF

Info

Publication number
AU748004B2
AU748004B2 AU42635/00A AU4263500A AU748004B2 AU 748004 B2 AU748004 B2 AU 748004B2 AU 42635/00 A AU42635/00 A AU 42635/00A AU 4263500 A AU4263500 A AU 4263500A AU 748004 B2 AU748004 B2 AU 748004B2
Authority
AU
Australia
Prior art keywords
node
tree
nodes
galley
target
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.)
Ceased
Application number
AU42635/00A
Other versions
AU4263500A (en
Inventor
Pawel Rej
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.)
Canon Inc
Original Assignee
Canon Inc
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
Priority claimed from AUPQ1175A external-priority patent/AUPQ117599A0/en
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU42635/00A priority Critical patent/AU748004B2/en
Publication of AU4263500A publication Critical patent/AU4263500A/en
Application granted granted Critical
Publication of AU748004B2 publication Critical patent/AU748004B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

S&FRef: 504720
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT
ORIGINAL
Name and Address of Applicant: Canon Kabushiki Kaisha 30-2, Shimomaruko 3-chome, Ohta-ku Tokyo 146 Japan Actual Inventor(s): Address for Service: Invention Title: Pawel Rej Spruson Ferguson St Martins Tower 31 Market Street Sydney NSW 2000 Split Tree Data Structure ASSOCIATED PROVISIONAL APPLICATION DETAILS [33] Country [31] Applic. No(s) AU PQ1175 [32] Application Date 24 Jun 1999 The following statement is a full description of this invention, including the best method of performing it known to me/us:jP Australia Documents received on: c 2 3 JUN 2000
H
Batch No: 5815c -1- SPLIT TREE DATA STRUCTURE Technical Field of the Invention The present invention relates generally to document formatting and, in particular, to document formatting using input trees. More specifically, the present invention relates to a method and apparatus for creating a split tree by assigning marks to an input tree and for generating tree fragments from the split tree. The invention also relates to a computer program product including a computer readable medium having recorded thereon a computer program for creating the split tree by assigning marks to the input tree and for generating tree fragments from the split tree.
Background Art High-level languages for document fornnatting exist in many forms, some of which accept as input a description of a document in the formn of an input tree. An example of such an input tree is presented in Fig. 1. The input tree comprises two main .o.
types of elements, namely data elements and instruction elements, those elements in Fig.
.i 15 1 being indicated in Fig. 2. The data elements contain data to be formatted. Each data element can include text or images. Instruction elements contain information used by a .document formatter to arrange the data elements on pages when producing an output. As seen in Fig. 3, the data elements form leaf nodes in the tree whereas the instruction i elements form nodes. Further, nodes A and B are child nodes of node Cat(2). The left node, Node A in the example, is defined as the first child of node Cat(2), whereas the right node, Node B, is defined as the second child node Cat(2).
Instruction elements can be thought of as operators that define the output positions of data elements. There are a number of instruction elements or operators available. Certain of the instruction elements, for example those defining text size, text spacing and the like, typically only have one child.
504720.doc -2- The other relevant instruction in Figs. 1 to 3 is "Cat( which perfbrms vertical concatenation. Each concatenation instruction places its left parameter (the first child) above its right parameter (second child). For example, Cat(2) would place the content of data element B below the content of data element A.
As an input, data elements do not have an actual position. The actual position of the data elements is determined by the document formatter by evaluating the input tree.
In the example of Fig. 1, the formatter, following the directions given by the instruction elements, determines that the result of the Cat(2) operator is placed above the result of the Cat(3) operator. The Cat(2) operator in turn places the content of data element A above data element B, and the Cat(3) operator places the content of data element C above data element D. The result is that data element A, B, C and D are stacked in that order.
However, when the content of data elements are placed on a page in order to produce an output, it is sometimes found that the result is too big to fit onto one page.
Therefore, placing the content data elements onto the page following the order specified, should the content of a next data element not fit into the space left on the present page, the remainder of the data elements are promoted to a next page. In the example presented in S"Fig. 1, if only the content of data elements A, B and C can fit onto page 1, then the content of data element D is promoted to page 2. The formatter also positions the data elements on the pages. The result of the evaluation of the input tree is shown in Fig. 4.
20 To better explain the above, a galley and a galley target need to be defined. A S"galley is a part of the input tree, whereas a galley target is a placeholder for a galley. The galley is therefore not evaluated at a position in the input tree but rather at the point where it is placed into the galley target. The galley target is a stretchable area on the output area with size 0 when no galley is targeted into it. When a galley is targeted into a galley target, the galley target stretches to accommodate for the incoming galley. The galley is 504720.doc -3unable to stretch infinitely though. There are restrictions on the maximumfsize of each galley target. Should it happen that the galley target reaches its maximum size before the galley is exhausted, a new galley target is found for the remainder of the content of the galley and the process of accommodating the remainder of the galley into the new target is continued.
Placing a galley into a series of galley targets involves splitting the input tree into fragments, each fragment filling its target. Fig. 5 shows another example of a galley in the form of an input tree 500. It is assumed that the galley in the example of Fig. 5 is targeted into a sequence of targets, with only data elements A and B fitting into the first galley target in the sequence by taking all the available space defined by the restrictions on the first galley target. The rest of the galley is promoted to the following galley target in the sequence.
i.Figs 6A and 6B show the result after a portion of the galley of Fig.5 is placed into the sequence of galley targets. The original input tree 500 shown in Fig. 5 is split 15 into the two tree fragments 510 and 520 respectively. The first fragment 510, shown in Fig. 6A, is placed into the first galley target. The remainder of the galley which now resides in the second tree fragment 520, shown in Fig. 6B, is waiting to be placed into the following galley targets. Thus, the original galley was split into two separate smaller trees.
20 The arrangement described above is used in batch text fonnatters which produce an output from an input tree. However, this arrangement suffers from the disadvantage that once the galley is split into smaller trees, it is hard to relate the fragmented trees back to their original galley tree. This is for example necessary whenever the order or contents of the data elements are changed, thus preventing interactive formatting.
504720.doc Disclosure of the Invention It is an object of the present invention to substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements.
According to a first aspect of the invention, there is provided a method of creating a split tree for representing an input tree and at least one tree fragment obtained by splitting the input tree, wherein the input tree comprises a plurality of nodes, said method comprising the steps of: determining which of the plurality of nodes fit into each galley target; and marking the nodes that fit into each galley target with a mark specific to the i 10 galley target so as to create the split tree in which each tree fragment is identified by •respective mark.
According to a second aspect of the invention, there is provided a method of generating a tree fragment from a split tree, said split tree comprises a plurality of nodes, wherein nodes that fit into a galley target are marked with a mark specific to the galley 15 target and said tree fragment is associated with said galley target, said method comprising the steps of: starting at a root node of said split tree, searching for a common node, furthest from said root node, that is subtended to all nodes marked with said mark; creating said tree fragment by copying said first common node as a root node of said tree fragment; and adding all subtended nodes marked with said mark to said root node of said tree fragment.
According to a third aspect of the invention, there is provided an apparatus for creating a split tree for representing an input tree and at least one tree fragment obtained 504720.doc o* 10 oo ooo.
•*go by splitting the input tree, wherein the input tree comprises a plurality of nodes, said apparatus comprising: determining means for determining which of the plurality of nodes fit into each galley target; and marking means for marking the nodes that fit into each galley target with a mark specific to the galley target so as to create the split tree in which each tree fragment is identified by respective mark.
According to a fourth aspect of the invention there is provided an apparatus for generating a tree fragment from a split tree, said split tree comprises a plurality of nodes, wherein nodes that fit into a galley target are marked with a mark specific to the galley target and said tree fragment is associated with said galley target, said apparatus comprising: means for searching for a common node, starting at a root node of said split tree, that is furthest from said root node and subtended to all nodes marked with said mark; means for creating said tree fragment by copying said first common node as a root node of said tree fragment; and means for adding all subtended nodes marked with said mark to said root node of said tree fragment.
According to a fifth aspect of the invention, there is provided a computer program product including a computer readable medium incorporating a computer program for creating a split tree for representing an input tree and at least one tree fragment obtained by splitting the input tree, wherein the input tree comprises a plurality of nodes, said computer program comprising: 504720.doc -6code for determining which of the plurality of nodes fit into each galley target; code for marking the nodes that fit into each galley target with a mark specific to the galley target so as to create the split tree in which each tree fragment is identified by respective mark.
According to a sixth aspect of the invention, there is provided a computer program product including a computer readable medium incorporating a computer program for generating a tree fragment from a split tree, said split tree comprises a plurality of nodes, wherein nodes that fit into a galley target are marked with a mark 10 specific to the galley target and said tree fragment is associated with said galley target, said computer program comprising: code for searching for a common node, starting at a root node of said split tree, that is furthest from said root node and subtended to all nodes marked with said mark; code for creating said tree fragment by copying said first common node as a 15 root node of said tree fragment; and S•code for adding all subtended nodes marked with said mark to said root node of said tree fragment.
504720.doc 6a- Brief Description of the Drawings A preferred embodiment of the present invention will now be described with reference to the drawings, in which: Fig. 1 is an example of an input tree; Fig. 2 illustrates types of elements in the input tree; Fig. 3 illustrates nodes, leaf nodes and edges in the input tree; Fig. 4 shows the result of evaluation of the input tree; Fig. 5 shows an original galley before splitting; Figs. 6A and 6B show the result of splitting the original galley of Fig. 5 into o: 10 smaller fragments; Fig. 7 shows a split tree; Fig. 8 shows the split tree of Fig. 7 after changes; Fig. 9 is a flow diagram of a method of generating a split tree; °•Fig. 10 is a flow diagram of a method of creating tree fragments from a split tree; 15 Fig. 11 is a flow diagram of a method of finding a next node; Fig. 12 is a flow diagram of a method of building a tree fragment; Fig. 13 is a schematic block diagram of a general purpose computer upon which the preferred embodiment of the present invention can be practised.
Detailed Description including Best Mode 504720.doc -7- In the preferred embodiment of the present invention, the actual splitting of the galley tree, as discussed above, does not take place. This allows the structure of the galley to remain intact. The advantage of preserving the original structure of the galley tree is that it allows interactive formatting. For instance, it makes it easier to re-send the galley into its targets after the galley or its target has been modified. The re-sending of the galley usually involves moving the splitting boundary between the tree fragments.
The preferred embodiment represents a galley using a Split Tree data structure.
The Split Tree data structure allows a split tree to represent both the galley tree and the fragments of the galley tree that are the result of splitting the galley. The advantage is that instead of actually splitting the galley tree, marks are added to the tree. The marks allow an algorithm operating on the split tree to interpret the split tree in the same way as tree fragments would be interpreted.
**The split tree 550 corresponding to the two galley fragments 510 and 520 in the above example of Figs. 6A and 6B is presented in Fig. 7. The fragment of the galley tree that is placed into the first galley target is marked with markers The fragment that did not fit into the first galley-target is marked with marker The marker is a special marker that marks nodes that are still waiting to be placed into galley targets.
The split tree data structure allows each tree fragment in the split tree 550 to be marked with a unique mark. In the preferred embodiment, integers are used as marks.
20 Fig. 8 shows another example of a split tree 560. The galley of Fig. 7 is placed into a sequence of galley targets. For this example however, the three data elements A, B as well as C can fit into the first galley target. This change can be a result of a change in the available space for the first galley target, data elements A, B and/or C.
504720.doc -8- Each node in the split tree can have two, one or no children. The nobles that have no children are also called leaf nodes. The criteria for interpreting the split tree are as follows: If a node is marked with a marker the whole subtree attached to that node belongs to the fragment.
If both the left and right subtrees of a node contain nodes marked with the node belongs to the fragment. This criterion has further implications. If a node does not contain nodes marked with the same marker in its left and right subtrees, then such a node does not belong to any fragment and is referred to as an alienated node.
Any marked node, therefore a node that is not an alienated node, belongs to one tree fragment only.
If a node has only one child and the child subtree has a node marked with then the node belongs to the fragment.
A method 300 of adding marks to a split tree is presented in Fig. 9. The purpose °o 15 of the method 300 is to place the galley tree into its galley targets. In particular, it adds *4 marks to the galley tree, the marks defining which parts of the galley tree are placed into which galley target and returns the space remaining in that galley target.
In step 301 the method 300, named GST, accepts three input parameters, namely:
S..
2node The subtree defined by 'node' that is currently being pushed into a galley target; available_space The space available in the galley target for 'node'; and mark The mark used to mark all nodes that are pushed into a galley target.
Step 303 determines whether 'node' is already marked. If 'node' is marked, it means that it has already been placed into some other target and the subtree defined by 504720.doc -9- 'node' is therefore ignored. The method 300 is then terminated in step 304 after returning 'available_space'. In this case 'available_space' has not changed.
For unmarked nodes, the method 300 proceeds to step 306. Step 306 determines whether the subtree defined by 'node' can fit into 'available_space'. If that subtree can fit into 'available_space', then 'node', together with all the other nodes in that subtree, are marked with 'mark' in step 308. As 'node' uses up some of 'available_space', 'availablespace' is decreased in step 309 by the size of the subtree defined by 'node'.
The value of 'available_space' is returned.
However, if in step 306, the subtree defined by 'node' cannot fit into 'available_space', then the method 300 continues by trying to split the subtree into smaller subtrees. In order to do so, in step 313 which follows, the method 300 verifies whether 'node' is a leaf element (thus have no children nodes) or has been defined as not splitable. In such cases, 'node' cannot be placed into the target, nor can it be split thereby enabling the smaller subtree of 'node' to fit into the target. In step 314, the data elements represented by 'node' is discarded and 'node' is marked with a special discarded mark and the method 300 is terminated in step 328 where the value of 'available_space' is returned.
If 'node' is determined to be splitable in step 313, step 317 determines whether 0 'node' has only one child. If 'node' has only one child, then step 318 recursively calls the method 300 with the child node as 'node'.
Since leave nodes were filtered out by step 313 and nodes with only one child by step 317, only when 'node' has two children is step 319 performed. where the method 300 is recursively called with a first child of 'node' as 'node'. Then, if step 324 determines that there is space left in the target, the method 300 is called again in step 325 with a 504720.doc second child of 'node' as 'node'. The method 300 terminates by returning the available space in the galley target in step 328.
The method 300 is repeated with the next galley target, until all the data elements are placed. The result is that galleys in the input tree are now converted into split trees by marking the nodes.
Fig. 10 presents a method 400 for generating tree fragments from a split tree.
The method 400 calls procedures 50 and 70, presented in Figs 11 and 12 respectively.
These procedures 50 and 70 are discussed first.
Procedure 50 is a recursive procedure that finds a next node belonging to a tree 10 fragment in a split tree. This tree fragment is one of the tree fragments previously defined by marking the input tree, thereby creating the split tree. The tree fragment is accordingly specified by one of the marks used in the split tree. The procedure 50 terminates once a appropriately marked node is found.
Procedure 50 commences with step 41, which accepts two input parameters, :ooo 15 namely: SstartNode The node defining the subtree wherein the marked node is searched for; and Smark The mark that marks the node being searched for.
Procedure 50 proceeds to step 43 where it is determined whether 'startNode' is marked with 'mark'. If so, this is the node that is searched for, and the procedure terminates in step 44 by returning 'startNode' to its calling method or procedure.
If the 'startNode' is not marked with 'mark', step 46 follows which determines whether startNode is marked with another mark, such indicates that 'startNode' and all the other nodes in its subtree are marked with a mark other than 'mark'. It is therefore not possible for any node marked with 'mark' to be found in the subtree under review, and 504720.doc -11 the procedure 50 terminates in step 47 by returning NULL to its calling method or procedure.
Therefore, only an unmarked node proceeds to step 48 from where, if step 48 determines that 'startNode' has only one child, then the procedure 50 is called in step 49 with the child node as 'startNode'.
Step 51 determines whether step 49 (calling procedure 50 with the child node) returned with NULL. If NULL was returned, neither 'startNode' nor any of the nodes in the subtree belong to the tree fragment marked with 'mark' and procedure 50 terminates after returning NULL in step 53. However, if step 49 did not return a NULL, the 'startNode' belongs to the tree fragment marked with 'mark'. The procedure 50 returns 'startNode' and terminates in step 52.
Referring again to step 48, only unmarked nodes with two children proceed to step 54 from where procedure 50 is called with the first child as 'startNode'. It is followed by step 55 from where procedure 50 is called with the second child as 'startNode'.
Step 56 determines whether calling procedure 50 with the first child as "startNode' returned NULL. If so, step 56 determines whether calling procedure 50 with the second child as "startNode' returned a NULL. If NULLs were returned for both the S.first child and the second child, the calling procedure 50 terminates after also returning NULL in step 58. Thus 'mark' has not been found in any one of the children. If 'mark' has been found in one of the children, procedure 50 will terminate after returning that child node to the calling method or procedure in step 60 or step 62. The remaining alternative is that both children were marked with 'mark' in which case the criteria in both step 56 and step 61 are not met. The procedure 50 terminates by returning 'startNode', being the parent of the two children, at step 63.
504720.doc
S
12- Referring to Fig. 12, procedure 70 for generating nodes of a treefragment is shown. Procedure 70 is invoked recursively to find all the nodes of a tree fragment in a split tree and to generate a whole tree fragment. The tree fragment is defined by a specific mark.
In step 75, procedure 70 accepts three parameters, namely: node A node of a tree fragment; mark The mark that marks the nodes belonging to a tree fragment in a split tree; and perform A function that is invoked for each node belonging to the tree fragment defined by 'mark'.
If step 76 determines that 'node' is equal to NULL, there are no nodes in that subtree marked with 'mark' and step 77 returns procedure 70 to its calling method or procedure.
However, if 'node' is not determined to be equal to NULL in step 76, then step 80 invokes the 'perform' function. This caller-defined function performs required operations on the nodes of the 'mark' tree fragment. This may include saving the result to a file, modifying the attributes of the nodes or displaying the result in a tree form on a user interface.
If step 82 determines that 'node' has no children ie. a leave node, the procedure 70 terminates in step 77 and returns to its calling procedure or method. If step 84 determines that 'node' has only one child, the child subtree is searched in step 86 to find the next node belonging to the tree fragment presently being generated. This is done by calling procedure 50 with the node of the child as 'startNode'. After finding the next node marked with 'mark', procedure 70 is called again in step 88 with this found next node as 'node'. Procedure 70 calling itself recursively will continue adding new child 504720.doc 13nodes to the generated tree until there are no more nodes in the subtree defined by the child node marked with mark.
If 'node' has two children the procedure 70 will proceed from step 84 to step where, the children subtrees are treated in the same way as a single child, in that steps and 91 will find all the nodes in the subtree defined by the first child and generate a tree until there are no more nodes in the subtree defined by the first child node marked with mark. Steps 94 and 95 repeat identical steps for the second child. The procedure terminates in step 77.
S. In the preferred embodiment of the invention, method 400, illustrated in Fig. 10 starts in step 401 by accepting three parameters, namely: splittree the root node of the split tree; Smark the mark that marks the nodes belonging to a tree fragment in a split tree; V. iand perform The function that is invoked for each node belonging to the 'mark' tree 15 fragment.
Method 400 proceeds to step 403 where a root node of a tree fragment in a split tree is found. This is performed by calling procedure 50, which will return the first node found with 'mark' as its marking. Procedure 50 returns NULL if the split tree does not contain a tree fragment marked with 'mark'.
Having established the root node in step 403, step 405 calls procedure 70 passing the root node as 'node'. As discussed above, procedure 70 is a recursive procedure for iterating over all the nodes of the tree fragment in the split tree, finding the correctly marked nodes and creating the required tree fragment. Method 400 terminates in step 406.
504720.doc -14- The method 300 of marking an input tree to create a split tree and method 400 of creating tree fragments from the split tree, are preferably practiced using a conventional general-purpose computer system 200, such as that shown in Fig. 13 wherein the processes of Figs. 9 to 12 may be implemented as software, such as an application program executing within the computer system 200. In particular, the steps of methods 300 and 400 are effected by instructions in the software that are carried out by the computer. The software may be stored in a computer readable medium, including the storage devices described below, for example. The software is loaded into the computer from the computer readable medium, and then executed by the computer. A computer readable medium having such software or computer program recorded on it is a computer S.•program product. The use of the computer program product in the computer preferably effects an advantageous apparatus for marking an input tree to create a split tree and for Ncreating tree fragments from the split tree in accordance with the embodiments of the S..0 invention.
.0.
0 15 The computer system 200 comprises a computer module 202, input devices such oooo as a keyboard 210 and mouse 212, output devices including a printer 208 and a display device 104.
The computer module 202 typically includes at least one processor unit 214, a memory unit 218, for example formed from semiconductor random access memory (RAM) and read only memory (ROM), input/output interfaces including a video interface 217, and an I/O interface 216 for the keyboard 210 and mouse 212. A storage device 224 is provided and typically includes a hard disk drive 226 and a floppy disk drive 228. A magnetic tape drive (not illustrated) may also be used. A CD-ROM drive 220 is typically provided as a non-volatile source of data. The components 214 to 228 of the computer module 202, typically communicate via an interconnected bus 230 504720.doc and in a manner which results in a conventional mode of operation of the computer system 200 known to those in the relevant art. Examples of computers on which the embodiments can be practised include IBM-PC's and compatibles, Sun Sparcstations or alike computer systems evolved therefrom.
Typically, the application program of the preferred embodiment is resident on the hard disk drive 226 and read and controlled in its execution by the processor 214.
Intermediate storage of the program may be accomplished using the semiconductor memory 218, possibly in concert with the hard disk drive 226. In some instances, the -:.application program may be supplied to the user encoded on a CD-ROM or floppy disk i 10 and read via the corresponding drive 220 or 228. Still further, the software can also be loaded into the computer system 200 from other computer readable medium including magnetic tape, a ROM or integrated circuit, a magneto-optical disk, a radio or infra-red transmission channel between the computer module 202 and another device, a computer °readable card such as a PCMCIA card, and the Internet and Intranets including email 15 transmissions and information recorded on websites and the like. The foregoing is merely exemplary of relevant computer readable mediums. Other computer readable mediums may be practiced without departing from the scope and spirit of the invention.
The methods of marking an input tree to create a split tree and of creating tree fragments from the split tree may alternatively be implemented in dedicated hardware such as one or more integrated circuits performing the functions or sub functions of processes 300 and/or 400.
The foregoing preferred methods describe only one embodiment of the present invention, and modifications, can be made thereto without departing from the scope of the present invention as defined in the appended claims.
504720.doc In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including" and not "consisting only of'. Variations of the word comprising, such as "comprise" and "comprises" have corresponding meanings.
0 *o *oo *o *ooo **ooft fto f 504720.doc

Claims (7)

1. A method of creating a split tree for representing an input tree and at least one tree fragment obtained by splitting the input tree, wherein the input tree comprises a plurality of nodes, said method comprising the steps of: determining which of the plurality of nodes fit into each galley target; and marking the nodes that fit into each galley target with a mark specific to the galley target so as to create the split tree in which each tree fragment is identified by respective mark.
2. The method according to claim 1, wherein said determining step comprising the steps of: setting one of the plurality of nodes as a current node for a galley target; checking whether the current node has already been marked; comparing the size of the current node with available space in the galley target if the current node has not marked; and deciding that the current node fits into the galley target if the size of the current node is not greater than the available space.
3. The method according to claim 2, further comprising the step of updating the available space by decreasing the size of the current node if it is determined that the current node fits into the galley target.
4. The method according to claim 2, further comprising the steps of:
504720.doc -18- determining whether the current node has at least one child node if the size of the current node is greater than the available space; setting one of the child node as the new current node if the current node has at least one child node; and recursively executing said checking, comparing, and deciding steps with respect to the new current node. The method according to claim 4, wherein in said step of setting the new current node, a first node and a second node are set as the new current node, 10 sequentially, when the current node has two children nodes. o• 6. The method according to claim 4, wherein in said marking step, the Acurrent node is marked with a special mark if the size of the current node is greater than coo• ••the available space and that the current node has no children nodes. S• 7. A method of generating a tree fragment from a split tree, said split tree comprises a plurality of nodes, wherein nodes that fit into a galley target are marked with a mark specific to the galley target and said tree fragment is associated with said galley target, said method comprising the steps of: starting at a root node of said split tree, searching for a common node, furthest from said root node, that is subtended to all nodes marked with said mark; creating said tree fragment by copying said first common node as a root node of said tree fragment; and adding all subtended nodes marked with said mark to said root node of said tree fragment. 504720.doc -19- 8. The method according to claim 7, wherein step comprises the sub- steps of: 9 9 .9 9 9 9 9 0 9 9 9 .9 9 .9 (al) defining one of said nodes as a start node; (a2) checking whether said start node is marked with said mark; and (a3) completing the search if the start node is marked with said mark and defining said start node as said common node; (a4) checking whether a child node of said start node is subtended to all nodes marked with said mark; (a5) if said child node is subtended to all nodes marked with said mark, defining said child node as said start node; and (a6) recursively executing steps (a2) to (a5) with respect to the new start node. 9. Apparatus for creating a split tree for representing an input tree and at 15 least one tree fragment obtained by splitting the input tree, wherein the input tree comprises a plurality of nodes, said apparatus comprising: determining means for determining which of the plurality of nodes fit into each galley target; and marking means for marking the nodes that fit into each galley target with a mark specific to the galley target so as to create the split tree in which each tree fragment is identified by respective mark. comprising: The apparatus according to claim 9, wherein said determining means 504720.doc
5@ S S.. S S S 0 10 setting means for setting one of the plurality of nodes as a current node for a galley target; checking means for checking whether the current node has already been marked; comparing means for comparing the size of the current node with available space in the galley target if the current node has not marked; and deciding means for deciding that the current node fits into the galley target if the size of the current node is not greater than the available space. 11. The apparatus according to claim 10, further comprising updating means for updating the available space by decreasing the size of the current node if it is determined that the current node fits into the galley target. 12. The apparatus according to claim 10, further comprising: 15 child node determining means for determining whether the current node has at least one child node if the size of the current node is greater than the available space; second setting means for setting one of the child node as the new current node if the current node has at least one child node; and controlling means for recursively executing checking by said checking means, comparing by said comparing means, and deciding by said deciding means with respect to the new current node. 13. The apparatus according to claim 12, wherein said second setting means sets a first node and a second node as the new current node, sequentially, when the current node has two children nodes. 504720.doc -21 14. The apparatus according to claim 12, wherein said marking means marks the current node with a special mark if the size of the current node is greater than the available space and that the current node has no children nodes. *10 *see go *0 1 0@ 0e 0
6 S. 0 0 6 S S 0 S An apparatus for generating a tree fragment from a split tree, said split tree comprises a plurality of nodes, wherein nodes that fit into a galley target are marked with a mark specific to the galley target and said tree fragment is associated with said galley target, said apparatus comprising: means for searching for a common node, starting at a root node of said split tree, that is furthest from said root node and subtended to all nodes marked with said mark; means for creating said tree fragment by copying said first common node as a root node of said tree fragment; and means for adding all subtended nodes marked with said mark to said root node of said tree fragment. 16. The apparatus according to claim 15, wherein said means for searching further comprises: first defining means for defining one of said nodes as a start node; first checking means for checking whether said start node is marked with said mark; terminating means for completing the search if the start node is marked with said mark and defining said start node as said common node; 504720.doc 22 second checking means for checking whether a child node of said start node is subtended to all nodes marked with said mark; second defining means for defining said child node as said start node if said child node is subtended to all nodes marked with said mark; and means for recursively activating said first checking means, said terminating means, said second checking means, and said second defining means with respect to the new start node. o 10 :1 15 17. A computer program product including a computer readable medium incorporating a computer program for creating a split tree for representing an input tree and at least one tree fragment obtained by splitting the input tree, wherein the input tree comprises a plurality of nodes, said computer program comprising: code for determining which of the plurality of nodes fit into each galley target; and code for marking the nodes that fit into each galley target with a mark specific to the galley target so as to create the split tree in which each tree fragment is identified by respective mark. 18. A computer program product including a computer readable medium incorporating a computer program for generating a tree fragment from a split tree, said split tree comprises a plurality of nodes, wherein nodes that fit into a galley target are marked with a mark specific to the galley target and said tree fragment is associated with said galley target, said computer program comprising: code for searching for a common node, starting at a root node of said split tree, that is furthest from said root node and subtended to all nodes marked with said mark; 504720.doc code for creating said tree fragment by copying said first common node as a root node of said tree fragment; and code for adding all subtended nodes marked with said mark to said root node of said tree fragment. 19. A method of creating a split tree for representing an input tree and at least one tree fragment obtained by splitting the input tree, said method being substantially as described herein with reference to Figs.
7, 8 and 9. P i 10 20. A method of generating a tree fragment from a split tree, said method a being substantially as described herein with reference to Figs. 7, 8, 10, 11 and 12. *09: -TO 21. An apparatus method of creating a split tree for representing an input tree and at least one tree fragment obtained by splitting the input tree, said method being substantially as described herein with reference to Figs. 7, 8, 9 and 13. P 22. An apparatus for generating a tree fragment from a split tree, said apparatus being substantially as described herein with reference to Figs. 7, 8, 10, 11, 12 and 13. DATED this Fourth Day of January, 2002 Canon Kabushiki Kaisha Patent Attorneys for the Applicant SPRUSON FERGUSON 504720.doc
AU42635/00A 1999-06-24 2000-06-23 Split tree data structure Ceased AU748004B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU42635/00A AU748004B2 (en) 1999-06-24 2000-06-23 Split tree data structure

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AUPQ1175A AUPQ117599A0 (en) 1999-06-24 1999-06-24 Split tree data structure
AUPQ1175 1999-06-24
AU42635/00A AU748004B2 (en) 1999-06-24 2000-06-23 Split tree data structure

Publications (2)

Publication Number Publication Date
AU4263500A AU4263500A (en) 2001-01-04
AU748004B2 true AU748004B2 (en) 2002-05-30

Family

ID=25626080

Family Applications (1)

Application Number Title Priority Date Filing Date
AU42635/00A Ceased AU748004B2 (en) 1999-06-24 2000-06-23 Split tree data structure

Country Status (1)

Country Link
AU (1) AU748004B2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5173853A (en) * 1990-03-14 1992-12-22 Digital Equipment International Ltd. Data format conversion
US5633996A (en) * 1991-10-02 1997-05-27 Fuji Xerox Co., Ltd. Device and method for layout of a structured document using multi-column areas
WO1998010356A1 (en) * 1996-09-09 1998-03-12 Design Intelligence, Inc. Automatic layout and formatting of content for a design in a medium

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5173853A (en) * 1990-03-14 1992-12-22 Digital Equipment International Ltd. Data format conversion
US5633996A (en) * 1991-10-02 1997-05-27 Fuji Xerox Co., Ltd. Device and method for layout of a structured document using multi-column areas
WO1998010356A1 (en) * 1996-09-09 1998-03-12 Design Intelligence, Inc. Automatic layout and formatting of content for a design in a medium

Also Published As

Publication number Publication date
AU4263500A (en) 2001-01-04

Similar Documents

Publication Publication Date Title
US7788089B2 (en) Document based character ambiguity resolution
US6336124B1 (en) Conversion data representing a document to other formats for manipulation and display
US7111234B2 (en) System and method for in-line editing of web-based documents
US7853869B2 (en) Creation of semantic objects for providing logical structure to markup language representations of documents
US9098581B2 (en) Method for finding text reading order in a document
US20080115046A1 (en) Program, copy and paste processing method, apparatus, and storage medium
US20010014900A1 (en) Method and system for separating content and layout of formatted objects
EP1600862A2 (en) Method and system for mapping content between a starting template and a target template
US7272792B2 (en) Kana-to-kanji conversion method, apparatus and storage medium
JP2009510650A (en) Multi-form design with harmonized composition for dynamically aggregated documents
EP1730653B1 (en) Systems and methods for identifying complex text in a presentation data stream
WO2003032202A2 (en) Section extraction tool for pdf documents
CN1779782A (en) User interface design apparatus and method
US20030222916A1 (en) Object-oriented processing of tab text
CN101008940A (en) Method and device for automatic processing font missing
US7243302B1 (en) Split tree data structure
AU748004B2 (en) Split tree data structure
US8359534B1 (en) System and method for producing documents in a page description language in a response to a request made to a server
US11030387B1 (en) Device dependent rendering of PDF content including multiple articles and a table of contents
US8271874B2 (en) Method and apparatus for locating and transforming data
JP2004348428A (en) Means for inserting header and footer into electronic document
US8276089B1 (en) System and method for producing, displaying and printing documents
US11842141B2 (en) Device dependent rendering of PDF content
AU765488B2 (en) Multiple document layout
JP3391103B2 (en) Text synthesis device

Legal Events

Date Code Title Description
FGA Letters patent sealed or granted (standard patent)