AU767108B2 - Edge merging via lookup table - Google Patents

Edge merging via lookup table Download PDF

Info

Publication number
AU767108B2
AU767108B2 AU24888/01A AU2488801A AU767108B2 AU 767108 B2 AU767108 B2 AU 767108B2 AU 24888/01 A AU24888/01 A AU 24888/01A AU 2488801 A AU2488801 A AU 2488801A AU 767108 B2 AU767108 B2 AU 767108B2
Authority
AU
Australia
Prior art keywords
edge
list
record
new
new edge
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
AU24888/01A
Other versions
AU2488801A (en
Inventor
David Christopher Smith
Daniel Wu
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 AUPQ6101A external-priority patent/AUPQ610100A0/en
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU24888/01A priority Critical patent/AU767108B2/en
Publication of AU2488801A publication Critical patent/AU2488801A/en
Application granted granted Critical
Publication of AU767108B2 publication Critical patent/AU767108B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Description

S&FRef: 541425
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT
ORIGINAL
Name and Address of Applicant: Actual Inventor(s): Address for Service: Canon Kabushiki Kaisha 30-2, Shimomaruko 3-chome, Ohta-ku Tokyo 146 Japan David Christopher Smith, Daniel Wu Spruson Ferguson St Martins Tower,Level 31 Market Street Sydney NSW 2000 Edge Merging via Lookup Table Invention Title: o oooe a a a oo o *o ASSOCIATED PROVISIONAL APPLICATION DETAILS [33] Country [31] Applic. No(s) AU PQ6101 [32] Application Date 08 Mar 2000 The following statement is a full description of this invention, including the best method of performing it known to me/us:- 5815c EDGE MERGING VIA LOOKUP TABLE Field of the Invention The present invention relates to generating pixel data from an encoded object graphics display list and, in particular, to an efficient method of merging new edges with existing edges as objects are introduced over successive scanlines of the display list.
Background In an edge-based graphics rendering system, the boundaries of all objects, including text, are composed of edges. A colour for a graphics object is only generated within the edges of the object, and only if the graphics object is visible through other objects, which are also on the page. Data is generated on a pixel-by-pixel basis by determining those objects that are visible for each pixel, and generating the pixel colour from the visible objects. If several objects are visible, the colour values contributed by the visible objects are composited together to obtain the final pixel colour.
As mentioned, the boundary of an object is composed of edges. Edge tracking proceeds in the rendering direction, which requires that the boundaries be broken up into edges that are monotonic increasing in the rendering direction. For each scanline down the page, the edges for all objects that fall on that scanline are typically passed on to a process that examines the priorities (ie. z-ordering) of each object to determine those that contribute to pixels on that scanline. As rendering passes along the scanline, the priorities controlled by an edge change state when rendering reaches the edge position.
S. 20 Fig. 1A shows an image having an opaque blue rectangle 102 with priority number 0, and an opaque red circle 100 with priority number 1. Since the circle 100 has a higher priority number than the blue rectangle 102, the circle 100 appears in the image above the rectangle 102. As seen in Fig. 1B, the red circle 100 is broken up into two edges 120 and 122. At scanline 110, an edge crossing 130 of the edge 120 is reached first, which indicates rendering is entering the circle 100. A run of red pixels is emitted until rendering reaches an edge crossing 132 of the edge 122. Such a location indicates that rendering is exiting the circle 100 and so no further pixels are emitted. At scanline 112, edges 124 and 126 are introduced for the first time and now need to be considered.
An edge crossing 140 of the edge 124 is reached first, which indicates rendering is entering the rectangle 102. A run of blue pixels is emitted until rendering reaches an edge crossing 142 of the edge 120. Since the circle 100 has a higher priority than the rectangle 102, red pixels are then emitted until an edge crossing 144 of the edge 122 is reached.
This indicates we are exiting the circle 100 and so no further red pixels are emitted. At this point, the rectangle 102 is still active and therefore blue pixels are emitted from edge 541425.doc crossing 144 of edge 122 until edge crossing 146 of the edge 126 is reached. This indicates we are exiting the rectangle 102 and so no further pixels are emitted for the scanline 112.
It can be seen that for each scanline, a current list of edges, sorted in ascending s order of their edge crossings at a given scanline, is required. At any scanline, the graphics rendering system can receive a pointer to a list of new edge data, pre-sorted by x-position, to be rendered for this and subsequent scanlines. This new edge data must be merged with the current edge list before rendering begins for the scanline. The merged current edge list must also be sorted in ascending order of each edge record's edge crossing at this scanline.
In Fig. 1B, at scanline 112, the new edges 124 and 126 are merged into the current edge list, comprising edges 120 and 122. After the merge; the current edge list becomes 124, 120, 122 and 126 and rendering can proceed from the first edge in the list (124) to the last (126).
In cases where the current edge list contains tens of thousands of edges and where the new edge list may also consist of thousands of new edges, it will be appreciated that the process of merging the new edge list with the current edge list will often require S" significant effort. It is therefore important that the data structure for maintaining a current edge list is as efficient and compact as possible, consistent with the ability to merge large numbers of new edge records with the current edge list as quickly as possible. Desirably, the data structure must also lend itself to having large numbers of edges being deleted as they expire. This for example may be required for the rendering of lines of text each of °which consisting of characters which are each composed of many edges. For each line of text, edges are introduced at the start of the line and as rendering proceeds for each scanline down the line of text, edges expire along the way, and are therefore removed from the current edge list. By the end of the line of text, all the edges introduced at the start have been deleted before the next line of text begins.
It is known to use a dynamically linked list data structure to record edges and to handle their volatile nature. A method of merging new edges into such a structure has been implemented in an application specific integrated circuit. Such a merge used an insertion sort which has been found to be inefficient in software implementations because a potentially large number of entries need to be compared, when the current edge list is large, for each new edge inserted.
A skipped list implementation, which promises to have a cost of O(log n) for insert and delete operations, may alternatively be used. For edge records however, there 541425.doc -3can be many edge crossings with the same x-coordinate. As a result, deletion is slow because after locating the first entry with the specified key, the list must be traversed sequentially to locate the correct entry to delete. Since the delete operation is a major operation in the overall edge-tracking algorithm, the approach is also not suitable.
A heap structure may also be used, but this suffers the same problem as a skip list implementation since the position of the next in-order entry needs to be calculated at each node. Once again, the savings made during the insertion quickly disappear with the overhead required to maintain the heap structure.
It is therefore desirable to provide an alternative approach for managing edge list io records.
Summary Of The Invention In accordance with one aspect of the present invention there is disclosed a method of updating a linked list of edge records with a new edge record in a graphic object rendering system, said method comprising the steps of: forming a lookup table comprising at least one entry that references a corresponding edge record present in said linked list; (ii) examining a location on a scanline of said new edge record and using said Slocation to identify one of said entries in said lookup table; (iii) accessing said edge record corresponding to said one entry; and (iv) performing an insertion sort of said list to insert said new edge into said list using said accessed edge record as a starting point in said linked list.
For the first edge in a list of new edge records, where the list of new edge records are pre-sorted in ascending x-order, a lookup data structure, such as a hash table, is used to skip to a region of the linked list closer to the insertion point than is the start or end of the current edge list. The sequential searching then starts in either forwards or backwards manner from this point until the new edge can be inserted in the current edge list.
For subsequent new edge records, the search takes advantage of the new edge records being pre-sorted in ascending x-order. Searching starts from the last inserted .edge.
For each edge inserted into the current edge list, the lookup data structure is updated with a reference to this edge, overwriting any previous reference.
These steps allow the current edge list to be implemented as a simple dynamically linked list data structure, while minimizing the number of traversals required before finding the correct location to insert an edge into the current edge list.
Other aspects of the invention are also disclosed.
541425.doc Brief Description Of The Drawings At least one preferred embodiment of the present invention will now be described with reference to the drawings and Appendix, in which: Figs. 1A and 1B is a diagram of a red circle atop a blue square and shows the need for edges to be ordered in ascending x-order as rendering proceeds down the page; Fig. 2 is a diagram of a lookup table with entries pointing to the current edge list; Fig. 3 shows an example image with which an implementation of edge list maintenance is described; Figs. 4A to 4C depict edge list maintenance for the image of Fig. 3; Fig. 5 is a schematic block diagram representation of a computer system in which edge list maintenance may be performed Fig. 6A is a flowchart depicting the operation of edge list maintenance; Fig. 6B illustrates the use of head and tail pointers in the linked list; Fig. 7A is a flowchart of a forward search and insert module of Fig. 6A; Fig. 7B is a flowchart of a backward search and insert module of Fig. 6A; and Appendix A is a pseudocode representation of a preferred software implementation optimised for the case where incoming edges are in ascending x-order.
Detailed Description go In an edge-based graphics rendering system, the boundaries of all objects, including text, are composed of edges. An edge is represented by an edge record, which :is a data structure that has: a starting x-coordinate, which is also the current x-coordinate for a scanline; and (ii) a series of segments that each have: a step dx that is added to the current x-coordinate for each scanline down the page, and a lifetime, being the number of scanlines that the segment spans, and which is decremented for each scanline processed. When the lifetime reaches zero, the segment is said to have expired, and the next segment is used. An edge record has an implicit lifetime based on the sum of the lifetimes of each segment in the edge.
When the lifetime of the last segment in the edge reaches zero, the edge is said to have expired and is removed from the list.
It is important that before rendering of a scanline begins, all the edges that apply to the scanline are in the current edge list, and are sorted in ascending x-order, since 541425.doc rendering begins at pixel 0 and ends at pixel n, where n is the last pixel on the scanline and n>0. New edge records are therefore loaded before rendering of the scanline begins and are merged with the current list of edge records, which are already sorted in ascending x-order, so that the merged list of edge records is also in ascending x-order.
s The preferred embodiment maintains for each scanline a doubly linked list of current edge records sorted in ascending x-order. This allows the edge records to be traversed sequentially in a forwards search or a backwards search, from any given edge record. Although the edge records are conceptually organised as a linked list, an implementation using a contiguous area of memory is preferred in order to minimise the 0to number of memory allocations and to improve access times to the edge records since in such a configuration, there is minimal fragmentation.
For each scanline, a list of new edge records is merged with the current edge list.
The new edge records are in ascending x-order with respect to each other. This means that once the first edge record of a list of new edge records has been inserted, then subsequent new edge records have an x-coordinate greater than or equal to the previous edge record. As a consequence, the search may therefore start from the last edge record inserted into the list, rather than the head of the list, and proceed forwards along the list.
The search is finished upon identification of a first edge having an x-value that is greater than the new edge record.
Such an approach works well for subsequent edge records in a list of new edge S. records, but not for the first edge record in a list of new edge records. In the preferred embodiment, a lookup table is used to quickly locate an approximate region of the linked list where the new edge may be inserted for the first edge record in a list of new edge "o records. The table is formed by entries with the x-coordinate as the key and a pointer to the corresponding edge record in the linked list. For the first edge record, the edge 0 referenced in the lookup table is used as the starting point for a forwards or backwards search to find the point of insertion.
Fig 2 shows the current edge list 200 and a lookup table 210 where entries 212 218 in the lookup table 210 form corresponding pointers 222 228 to edge records 202 208 in the current edge list 200. The entry indexes are preferably determined by a hash function A new edge 230 with starting x-value x_new is to be inserted in the current edge list 200. In a first example, the new edge 230 has x-value equal to x2, corresponding to that of edge record 204, and so h(x2) h(xnew) index 0.
Therefore, in this first example, the new edge record 230 can be inserted directly into the 541425.doc -6list 200 at a location adjacent to edge record 204, and the contents of index 0 of the table 210 is overwritten by a pointer to the edge record 230.
A generalised method of performing the insertion may be summarised by the following pseudocode: for each new edge startedge lookup table [h(newedge.x)] do insertion sort from startedge end for.
I0 The specific steps in the insertion method may be described as follows: On insertion of any new edge record, the index into the lookup table is first computed using the x-coordinate of the new edge record as the input to a hash function.
(ii) If the index is the first edge in the list of new edge records, then the entry in the lookup table at the specified index, as computed above, is queried: (ii-a) If the entry contains a pointer to a previously cached edge whose x-coordinate is greater than or equal to that of the new edge record, then the sequential searching will start from this edge record and the list is traversed backwards until an appropriate slot is found.
S(ii-b) If the entry contains a pointer to a previously cached edge whose x-coordinate is less than that of the new edge record, then the sequential °searching will start from this edge record and the list is traversed forwards until an appropriate slot is found.
25 (ii-c) If the entry is empty, then the search will proceed from the tail of the current edge list and proceed backwards until an appropriate slot is found. The new edge is noted as being the last inserted edge in a future edge insertion.
(iii) If this is a subsequent edge in the list of new edge records (that is, the first edge in the new edge list has been inserted), then the x value of the last inserted edge must be less than or equal to the x value of the new edge. Sequential searching starts from the last inserted edge and proceeds in a forwards direction until an appropriate slot is found.
(iv) After inserting a new edge record into the list, the lookup table is updated with the new edge record. The existing entry, if one exists, is overwritten.
541425.doc -7- The hash function is preferably determined so that the hash function caches a good spread of indexes across the range of the lookup table. For example a simple "x modulo TableSize" scheme that puts x and x n TableSize in the same lookup table entry, for any n, is not significantly slower in practise than a compartmentalised scheme that might s put into entry 0, 2n-1 into entry 1, 2n<=x<=3n-1 and so on. This is more as a result of the general random spread of new edge records across a page. From the method above, it can be seen that the worst case, where sequential searching starts from the tail of the list, only occurs when this is the first edge in a new edge list when the entry in the lookup table for this edge is also empty. Therefore another aspect that is to important to both the hash function and the lookup table size, is that the table size should not be too large. This is because the lookup table is filled sooner, which reduces the number of times a sequential search from the tail is performed.
A specific example of a simple implementation is provided in Fig. 3 and Figs. 4A to 4C. Fig. 3 shows an image 300 formed by a triangle 310 defined by edges Al, A2 and A3, and a rectangle 312 defined by edges B1 and B2. This example addresses the rendering of the rectangle 312 at scanline and assumes a relatively small number of pixels on each scanline and thus the size of the lookup table may be limited, in this case to 5 entries. As seen in Fig. 3, at scanline n, only the edges Al and A2 are active. Thus, :"using a hash function based upon a modulo evaluation of the x-coordinate of each edge S0 20 intersection on the scanline: Scanline edge Al: 30 mod 5 0 Scanline edge A2: 51 mod 5 1 Therefore Al and A2 occupy locations 0 and 1 respectively in the lookup table and ;-the edge list contains those edges only, as seen in Fig. 4A.
At scanline it is necessary to include into the edge list the edges B1 and B2.
Thus, for edge B 1: Scanline(n+l) edge BI: 42 mod 5 2 Therefore edge B1 is inserted into location 2 in the lookup table. Because there was no hit (or collision) with another entry in the lookup table, the edge B1 must be insertion sorted into the edge list, commencing from the beginning of the list. This state is seen in Fig. 4B. Note that the insertion sort can alternatively commence from the tail of the list and traverse backwards. Thus for edge B2: Scanline edge B2: 71 mod 5 1.
With the index entry 1 in the lookup table, such provides for that entry to access the corresponding "pointed to" entry in the edge list which in this case is edge A2. Thus an 541425.doc insertion sort of new edge B2 into the edge list is performed commencing from edge A2.
Since the x-coordinate of B2 at scanline is greater that that of A2, B2 is positioned at the end of the list, as seen in Fig. 4C.
A pseudocode representation of the one preferred application program is provided in Appendix A, this corresponding to the flowcharts of Fig. 6A and 7A and 7B.
With reference to Fig. 6A and Appendix A, processing of the edge list commences at step 602 (line 1 of Appendix A) where a new edge is input and steps 604 (line 3) determines the look-up index of the edge in the hash table. In step 606 (line 4) a test is made of the edge list to determine whether it is empty. If empty, at step 608 to (line 5) the edge list is set equal to the new edge. The new edge is then cached at step 610 (lines 60 to 62) which completes the edge insertion at step 622. If the test at step 606 results in the edge list being not empty, step 612 (line 7) follows to test the edge last inserted into the linked list. If the last edge was non-zero, step 620 (line 11) follows to perform the forward search of the linked list. Step 620, to be fully described with Is reference to Fig. 7A results in a new edge being produced which is cached at step 610 in the same manner as that discussed previously.
Where step 612 results in the previous edge being zero or null, step 614 (line 37) °follows to again perform a test for the existence of a cached edge at the look-up table toindex in the look-up table. If the look-up table is empty at this look-up index, step 618 0 20 (line 44) follows which performs a backwards search of the linked list from the tail of the 4*O° oo edge list, this to be described with reference to Fig. 7B. The result of the backward search, like the forward search, is a new edge which is cached according to step 610 as discussed previously.
,If the look-up table contains a cached edge at the look-up index, then the test 616 follows. If the x-value of the new edge is greater than the x-value of the cached edge then Vo t4 step 620 follows, this being a forwards search from the cached edge. If the test at
S
#too step 616 fails, then step 618 follows, being a backwards search from the cached edge.
4.Referring now to Fig. 7A, the forward search 620 (line 18) commences with the current edge being received and at step 702 (line 19) is tested against the new edge. If the new edge position is less than or equal to the current edge position (true) step 704 (line 20) follows to test the current edge against the head edge of the list as being seen in Fig. 6B. Where those are not equal, step 716 follows (line 21) to insert the new edge before the current edge. The forward search then returns at step 708. Where the result of step 704 is that the current edge equals the head of the list, step 706 follows (line 23) to insert the new edge before the head of the edge list. Step 708 again follows.
541425.doc -9- If the result of step 702 is false, step 710 (line 26) follows to test if the current edge is equal to the tail of the edge list. If true, step 714 (line 27) follows to insert the new edge after the tail position. Step 708 then follows. If the current edge is not equal to the tail position at step 710, step 712 (line 30) follows to set the current edge as being the next edge in the list. Step 712 returns the process back to 702 where the current (next) edge is then processed in a similar fashion.
Turning now to Fig. 7B, the backward search 618 is shown which, like the forward search, receives the current edge and, at step 720, tests whether the new edge is greater than or equal to the current edge (see line 46 of Appendix If true, step 722 1o (line 47) follows to test whether the current edge is not equal to the tail of the linked list.
If the result of step 722 is false, step 724 (line 50) follows where the new edge is inserted after the tail of the edge list. Step 726 then follows to return from the backward search. Where step 722 is true, step 734 follows (line 48) to insert the new edge after the current edge. Step 726 again follows.
Where step 720 returns a false indication, step 728 (line 53) follows to test whether the current edge is the same as the head of the edge list. If true, step 732 (line 54) follows to insert the new edge before the head of the edge list. Step 726 again follows. Where step 728 is false, step 730 (line 57) follows to set the current edge as being the previous edge. This new edge value is then returned to step 720 for further 20 processing.
The selection of lookup table size depends upon the complexity of objects being rendered and the cost of computing resources required to maintain the lookup table in addition to performing limited insertion sorting into the list. This can be determined by trial and error or by using a heuristic.
*o 25 An alternative arrangement replaces the hash function with a simple even-spaced groups division of the scanline. This provides for directly segmenting accesses into the edge linked list. For example, with 4960 pixels (210mm at 600dpi) per scanline on a device managed surface such as a display screen or printer platen, a modulo 37 operation, on a lookup table with 37 entries, has demonstrated good performance and an 30 improvement over prior techniques.
A further alternative is to utilize a function that inserts into the lookup table in the order of the x-coordinate of the new edge. For example, the entries in the lookup table are ordered according to x-coordinate of the corresponding edge record. When a new record is received, the new x-coordinate is compared with those in the table to identify the closest x-coordinate. The record in the edge linked list referenced by the closest x- 541425.doc coordinate is then used to initiate the insertion sort to update the list. The entry in the table is replaced by the new x-coordinate which reference the corresponding record in the edge list. In this fashion, the table is dynamically updated with new edge values that in many applications track changes in edge intersections.
In those cases where the incoming new edges are arranged in ascending order (ie. C1<=C2<=C3 etc.), then it is only necessary to use the lookup table for the first edge (C1) in the new edge list. This is because, once edge C1 is inserted, insertion of C2 can commence from C 1, and insertion of C3 can commence from C2, and so on. Tests by the present inventors with such a variation have revealed a 17% improvement in speed 0to compared to the other methods mentioned above.
The aforementioned methods of edge list maintenance for graphic object rendering comprise a particular control flow that lends itself to implementation in software operating in a computer system form the rending of graphical objects onto a display screen, printer or other output arrangement. Other implementations may include is processes operating within a dedicated graphics rendering application specific integrated circuit.
The methods described above are preferably practiced using a conventional general-purpose computer system 500, such as that shown in Fig. 5 wherein the processes of Figs. 1 to 4 and 6A to 7B may be implemented as software, such as an application program executing within the computer system 500. In particular, the steps of method of edge list maintenance 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 i from the computer readable medium, and then executed by the computer. A computer o*o 25 readable medium having such softvare or computer program recorded on it is a computer V.program product. The use of the computer program product in the computer preferably effects an advantageous apparatus for edge list maintenance in accordance with the embodiments of the invention.
The computer system 500 comprises a computer module 501, input devices such 0 30 as a keyboard 502 and mouse 503, output devices including a printer 515 and a display device 514. A Modulator-Demodulator (Modem) transceiver device 516 is used by the computer module 501 for communicating to and from a communications network 520, for example connectable via a telephone line 521 or other functional medium. The modem 516 can be used to obtain access to the Internet, and other network systems, such as a Local Area Network (LAN) or a Wide Area Network (WAN).
541425.doc -11- The computer module 501 typically includes at least one processor unit 505, a memory unit 506, for example formed from semiconductor random access memory (RAM) and read only memory (ROM), input/output interfaces including a video interface 507, and an I/O interface 513 for the keyboard 502 and mouse 503 and optionally a joystick (not illustrated), and an interface 508 for the modem 516. A storage device 509 is provided and typically includes a hard disk drive 510 and a floppy disk drive 511. A magnetic tape drive (not illustrated) may also be used. A CD-ROM drive 512 is typically provided as a non-volatile source of data. The components 505 to 513 of the computer module 501, typically communicate via an interconnected bus 504 and in a manner which results in a conventional mode of operation of the computer system 500 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 510 and read and controlled in its execution by the processor 505.
Intermediate storage of the program and any data fetched from the network 520 (eg.
graphic object display lists and the like) may be accomplished using the semiconductor memory 506, possibly in concert with the hard disk drive 510. In some instances, the application program may be supplied to the user encoded on a CD-ROM or floppy disk and read via the corresponding drive 512 or 511, or alternatively may be read by the user from the network 520 via the modem device 516. Still further, the software can also be oo. loaded into the computer system 500 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 501 and another device, a computer readable card such as a PCMCIA card, and the Internet and Intranets including e-mail 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 method may alternatively be implemented in dedicated hardware such as 30 one or more integrated circuits performing the functions or sub functions of edge list maintenance. Such dedicated hardware may include graphic processors, digital signal processors, or one or more microprocessors and associated memories.
Industrial Applicability It is apparent from the above that the embodiments of the invention are applicable to the computer graphics and image processing industries, to name but a few.
541425.doc 12- The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
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.
e 541425.doc 13 Appendix A 1. INPUT: NewEdge 2. PRECONDITION: Lastlnserted has been initialised to zero before a list of new edges is processed.
3. SET pos LOOKUP(NewEdge.x) (lookup index of the edge in the hash table) 4. IF EdgeList is Empty THEN 5. SET EdgeList NewEdge 6. ELSE 7. IF (Lastlnserted 0) 8. OR 9. (LookupTable[pos] 0 AND NewEdge.x LookupTable[pos].x) 10. THEN 11. IF (Lastlnserted 0) 12. Search forward from the Lastlnserted edge.
13. SET CurrentEdge Lastlnserted 20 14. ELSE 15. Search forward from the entry in the lookup table.
16. SET CurrentEdge =LookupTable[pos] 17. END IF 18. WHILE (TRUE) 19. IF NewEdge.x CurrentEdge.x IF CurrentEdge EdgeList.Head 21. Insert NewEdge before CurrentEdge 22. ELSE 30 23. Insert NewEdge before EdgeList.Head 24. END IF
BREAK
26. ELSE IF CurrentEdge EdgeList.Tail 27. Insert NewEdge after EdgeList.Tail 28.
BREAK
541425.doc 14 29. END IF SET CurrentEdge CurrentEdge. Next 31. END WHILE 32. Cache NewEdge for future reference 33. SET LookupTable[pos] NewEdge 34. SET LastInserted =NewEdge
RETURN
36. END IF 37. IF LookupTable[pos] 0 THEN 38. Search backwards from entry in lookup table 39. SET CurrentEdge LookupTable[pos]
ELSE
41. Search backwards from tall of list 42. SET CurrentEdge EdgeList.TaiI 43. END IF Search backwards from the CurrentEdge 20 45. WHILE (TRUE) 46. IF NewEdge.x CurrentEdge.x ~47. IF CurrentEdge. Next EdgeList.taiI 48. Insert NewEdge after CurrentEdge 49. ELSE 50. Connect NewEdge after EdgeList.TaiI 51. ENDIF
BREAK
53. ELSE IF CurrentEdge EdgeList.Head *54. Insert NewEdge before EdgeList.Head 55. BREAK 56. END IF 57. SET CurrentEdge CurrentEdge.Prev 58. END WHILE 59. END IF 541425 .doc Cache new edge for future reference 61. SET LookupTabie[pos] =NewEdge 62. SET LastInserted =NewEdge 63. END 541425.doc

Claims (9)

1. A method of updating a linked list of edge records with a new edge record in a graphic object rendering system, said method comprising the steps of: forming a lookup table comprising at least one entry that references a corresponding edge record present in said linked list; (ii) examining a location on a scanline of said new edge record and using said location to identify one of said entries in said lookup table; (iii) accessing said edge record corresponding to said one entry; and (iv) performing an insertion sort of said list to insert said new edge into said list using said accessed edge record as a starting point in said linked list.
2. A method according to claim 1, further comprising the step of dividing said scanline into sections each defining sequential plural ones of said locations on said scanline and relating each said section to a corresponding one of said entries.
3. A method according to claim 1, further comprising the step of inserting values into said table in order corresponding to the location of said new edge on said scanline.
4. A method according to claim 1, wherein said entry in said lookup table is formed by S. a hash function to enable referencing to a corresponding record in said list.
5. A method according to claim 4, wherein said hash function is determined using a modulo processing of the location on said scanline of said new edge record based upon a size of said table.
6. A method according to any one of claims 1 to 5, wherein said new edge record S. :comprises one record of a pre-ordered list of new edge records to be inserted into said linked list, said method comprising performing steps to (iv) on a first new edge record 30 in said pre-ordered list and thereafter insertion sorting the remaining ones of said new edge records in order based upon the insertion of the previous said new edge record.
7. In an edge-based graphics rendering system, a method of merging a list of new edge records pre-sorted in ascending x-order, with a linked list of current edge records sorted in ascending x-order wherein each edge record in the current edge list can be accessed by
541425.doc traversing the current edge list forwards or backwards and where the head edge record of the list and the tail edge record of the list are well defined, said method comprising, for each said new edge record, the steps of: i) computing an index into a lookup table based on a hash function that uses the x-coordinate of the first edge record in the new edge list; ii) for the first edge record in the new edge list, examining the entry in the lookup table at the computed index to determine a current edge record, if one exists, in which case starting the search from this edge record and if the x coordinate of the new edge record is less than or equal to the x coordinate of this edge record, performing a backwards linear search until the new edge record can be inserted in the current edge list in ascending x-order or otherwise performing a forwards linear search until the new edge record can be inserted in the current edge list in ascending x-order; iii) for subsequent edge records in the new edge list, examining the x-coordinate of the last edge record inserted in the current edge list, starting the search from this edge record only if the x coordinate of the new edge record is greater than or equal to the x coordinate of this edge record, and performing a forwards linear search until the new edge record can be inserted in the current edge list in ascending x-order; iv) otherwise, starting the search from the tail edge record in the current edge list, in which case performing a backwards linear search until the new edge record can be 20 inserted in the current edge list in ascending x-order; and v) storing a pointer to the new edge record in the lookup table at the index into the lookup table computed in step and noting the new edge record for use as the last edge record inserted in the current edge list for a future new edge record.
8. A method of updating a linked list of edge records with a new edge record in a graphic object rendering system substantially as descried herein with reference to Figs. 2 to 4C of the drawings.
9. A method of updating a linked list of edge records with a new edge record in a graphic object rendering system substantially as descried herein with reference to Figs. 6A, 7A and 7B of the drawings and Appendix A. Apparatus configured for performing the method of any one of claims 1 to 9. 541425.doc -18- 11. A computer readable medium having a program recorded thereon for updating a linked list of edge records with a new edge record in a graphic object rendering system, said program being configured for performing the method of any one of claims 1 to 9. 12. A computer readable medium comprising a computer program product for updating a linked list of edge records with a new edge record in a graphic object rendering system, said computer program product comprising: a first module for forming a lookup table comprising at least one entry that references a corresponding edge record present in said linked list; a second module for examining a location on a scanline of said new edge record and using said location to identify one of said entries in said lookup table; a third module for accessing said edge record corresponding to said one entry; and a fourth module for performing an insertion sort of said list to insert said new edge into said list using said accessed edge record as a starting point in said linked list. 13. A computer readable medium according to claim 12, wherein said first module is operable to divide said scanline into sections each defining sequential plural ones of said locations on said scanline and relating each said section to a corresponding one of said entries. 14. A computer readable medium according to claim 12, wherein said first module is operable to insert values into said table in order corresponding to the location of said new edge on said scanline. 9 9*9* 15. A computer readable medium according to claim 12, wherein said entry in said lookup table is formed by a hash function to enable referencing to a corresponding record S in said list. 16. A computer readable medium according to claim 15, wherein said hash function is 9999 30 determined using a modulo processing of the location on said scanline of said new edge record based upon a size of said table. 17. A computer readable medium according to any one of claims 12 to 16, wherein said new edge record comprises one record of a pre-ordered list of new edge records to be inserted into said linked list, and said computer program product being operable to 541425.doc -19- implement said modules on a first new edge record in said pre-ordered list and thereafter insertion sorting the remaining ones of said new edge records in order based upon the insertion of the previous said new edge record. 18. A computer program for updating a linked list of edge records with a new edge record in a graphic object rendering system, said computer program comprising program code configured to perform the steps of: forming a lookup table comprising at least one entry that references a corresponding edge record present in said linked list; (ii) examining a location on a scanline of said new edge record and using said location to identify one of said entries in said lookup table; (iii) accessing said edge record corresponding to said one entry; and (iv) performing an insertion sort of said list to insert said new edge into said list using said accessed edge record as a starting point in said linked list. Dated this SIXTH day of MARCH 2001 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant Spruson&Ferguson S. *o o o oo S 55 5 S 541425.doc
AU24888/01A 2000-03-08 2001-03-06 Edge merging via lookup table Ceased AU767108B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU24888/01A AU767108B2 (en) 2000-03-08 2001-03-06 Edge merging via lookup table

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AUPQ6101A AUPQ610100A0 (en) 2000-03-08 2000-03-08 Edge merging via lookup table
AUPQ6101 2000-03-08
AU24888/01A AU767108B2 (en) 2000-03-08 2001-03-06 Edge merging via lookup table

Publications (2)

Publication Number Publication Date
AU2488801A AU2488801A (en) 2001-09-13
AU767108B2 true AU767108B2 (en) 2003-10-30

Family

ID=25619484

Family Applications (1)

Application Number Title Priority Date Filing Date
AU24888/01A Ceased AU767108B2 (en) 2000-03-08 2001-03-06 Edge merging via lookup table

Country Status (1)

Country Link
AU (1) AU767108B2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471568A (en) * 1993-06-30 1995-11-28 Taligent, Inc. Object-oriented apparatus and method for scan line conversion of graphic edges
GB2318958A (en) * 1993-12-28 1998-05-06 Samsung Electronics Co Ltd An apparatus for generating a subpixel mask for a computer graphics system
WO1998043204A1 (en) * 1997-03-21 1998-10-01 Harlequin Group Plc Method and apparatus for generating a display list

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471568A (en) * 1993-06-30 1995-11-28 Taligent, Inc. Object-oriented apparatus and method for scan line conversion of graphic edges
GB2318958A (en) * 1993-12-28 1998-05-06 Samsung Electronics Co Ltd An apparatus for generating a subpixel mask for a computer graphics system
WO1998043204A1 (en) * 1997-03-21 1998-10-01 Harlequin Group Plc Method and apparatus for generating a display list

Also Published As

Publication number Publication date
AU2488801A (en) 2001-09-13

Similar Documents

Publication Publication Date Title
US6505283B1 (en) Efficient memory allocator utilizing a dual free-list structure
US6668263B1 (en) Method and system for efficiently searching for free space in a table of a relational database having a clustering index
US5819301A (en) Method and apparatus for reading multi-page electronic documents
US20030128224A1 (en) Method of determining active priorities
US5784699A (en) Dynamic memory allocation in a computer using a bit map index
US6195664B1 (en) Method and system for controlling the conversion of a file from an input format to an output format
US7292255B2 (en) Image data acquisition optimisation
US5857196A (en) Method for storing a tree of potential keys in a sparse table
US5548751A (en) Dynamic data storage system allowing variable size records and fields by using linked record segments
EP0250705B1 (en) Method and apparatus for retrieval of symbol strings from data
EP1811400A2 (en) Optimum access to electronic documents
EP0651346A2 (en) Forms recognition management system and method
US7653798B2 (en) Apparatus and method for controlling memory allocation for variable size packets
US6343341B1 (en) Efficient access to variable-length data on a sequential access storage medium
US7296043B2 (en) Memory file size adjustment
US7895410B1 (en) Method and apparatus for facilitating adaptive page sizes
US5829018A (en) Apparatus and method for writing data from a cache to a storage device
CN1190481A (en) Storage medium carrying geographical location data
US7502790B2 (en) Multi-column multi-data type internationalized sort extension for web applications
AU767108B2 (en) Edge merging via lookup table
US20070050321A1 (en) Padding management for content files
US7761805B2 (en) Displaying items using a reduced presentation
US20050278305A1 (en) Multi-column multi-data type internationalized sort extension method for web applications
US8204882B2 (en) Method for accessing a storage unit during the search for substrings, and a corresponding storage unit
US6829693B2 (en) Auxiliary storage slot scavenger

Legal Events

Date Code Title Description
DA3 Amendments made section 104

Free format text: THE NATURE OF THE AMENDMENT IS: SUBSTITUTE PATENT REQUEST REGARDING ASSOCIATED DETAILS

FGA Letters patent sealed or granted (standard patent)