AU2004240230A1 - Caching and optimisation of compositing - Google Patents

Caching and optimisation of compositing Download PDF

Info

Publication number
AU2004240230A1
AU2004240230A1 AU2004240230A AU2004240230A AU2004240230A1 AU 2004240230 A1 AU2004240230 A1 AU 2004240230A1 AU 2004240230 A AU2004240230 A AU 2004240230A AU 2004240230 A AU2004240230 A AU 2004240230A AU 2004240230 A1 AU2004240230 A1 AU 2004240230A1
Authority
AU
Australia
Prior art keywords
fill
sequence
edge
page
optimised
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.)
Abandoned
Application number
AU2004240230A
Inventor
Vincent Groarke
Timothy Jan Schmidt
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
Application filed by Canon Inc filed Critical Canon Inc
Priority to AU2004240230A priority Critical patent/AU2004240230A1/en
Assigned to CANON KABUSHIKI KAISHA reassignment CANON KABUSHIKI KAISHA Amend patent request/document other than specification (104) Assignors: Refer to Publication History
Priority to US11/275,137 priority patent/US7561303B2/en
Publication of AU2004240230A1 publication Critical patent/AU2004240230A1/en
Abandoned legal-status Critical Current

Links

Description

I
S&F Ref: 688328
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address of Applicant: Actual Inventor(s): Address for Service: Invention Title: Canon Information Systems Research Australia Pty Ltd, of 1 Thomas Holt Drive, North Ryde, New South Wales, 2113, Australia Vincent Groarke Timothy Jan Schmidt Spruson Ferguson St Martins Tower Level 31 Market Street Sydney NSW 2000 (CCN 3710000177) Caching and optimisation of compositing The following statement is a full description of this invention, including the best method of performing it known to me/us:- 5845c -1- CACHING AND OPTIMISATION OF COMPOSITING Field of the Invention The present invention relates generally to computer-based printer systems and, in particular, to inexpensive printer systems for high-speed printing.
Background A computer application typically provides a page to a device for printing and/or display in the form of a description of the page, with the description provided to device driver software of the device in a page description language (PDL), such as Adobe® PostScript® or Hewlett-Packard® PCL. The PDL provides descriptions of objects to be rendered onto the page, as opposed to a raster image of the page to be printed.
Equivalently, a set of descriptions of graphic objects may be provided in function calls to a graphics interface, such as the Graphical Device Interface (GDI) in the Microsoft WindowsTM operating system, or the X- 11 in the UnixTM operating system. The page is typically rendered for printing and/or display by an object-based graphics system, also known as a Raster Image Processor (RIP).
A typical printer system comprises a host computer, such as a personal computer connected to a printer by some interface. Example interfaces include a parallel port, Universal Serial Bus (USB), Ethernet or FirewireTM. In a typical office environment the host computer to printer connection may be over a 10/100BaseT Ethernet network that is shared with other users and equipment. In such cases the bandwidth of the network is not exclusively available for host computer to printer data transfer. For this reason it is desirable that the amount of data that is sent from the host computer to the printer, and any data and/or status information sent in the opposite direction, be kept to a minimum.
The actual time spent transmitting the description of the page from the host computer to the printer impacts on the overall printing time from a user's perspective. The choice of a 688328 particular PDL is therefore a crucial factor in minimising the time taken to transfer the page description from the host computer to the printer.
In a PDL-based printer the PDL file that describes the page is delivered over the interface from the host computer. Such a PDL-based printer system requires that the printer itself implement PDL interpretation in the course of generating the pixels for printing. PDL interpretation is a task that requires considerable software and/or hardware resources to perform in a reasonable time.
The advantage of such a system including a PDL-based printer is that the amount of data, that is the description in the PDL, which needs to be transferred over the interface is typically small compared to the corresponding pixel data subsequently generated within the printer. This is especially true as the resolution of the printed page increases. In addition, the overall print time of the system, defined roughly as the time from when the user commands the printing of the page to its final arrival out of the printer, is not particularly sensitive to reductions in interface bandwidth. This is because the majority of the overall printing time is consumed by the interpretation of the description in the PDL and the subsequent generation of pixels within the printer, as opposed to the transfer of the description from the host computer to the printer.
In contrast to the system including a PDL-based printer, a system using a hostbased printer system architecture divides the processing load between the host computer and the printer in a different manner. Host-based printer systems require the host computer, typically a personal computer, to fully generate pixel data at the resolution of the page to be printed. This pixel data is then compressed in a lossless or lossy fashion on the host computer and is delivered to the printer across the interface. Sometimes halftoning is also performed on this pixel data on the host computer to reduce the size of the pixel data. This approach is also known as the bitmap approach.
688328 A significant advantage of this bitmap approach is that the printer need not be capable of PDL interpretation. By removing the task of PDL interpretation from the printer to the host computer, the complexity of the printer's role is greatly reduced when compared to that of the PDL-based printer. Since complexity usually translates into cost, the printer for the host-based system can generally be made more cheaply than one that needs to perform PDL interpretation for an equivalent printing speed and page quality.
The disadvantage of such host-based printing systems is the amount of data that needs to be delivered from host computer to the printer across the interface. An A4 page at 600dpi resolution may require over one hundred megabytes of pixel data to be transferred across this interface when uncompressed. Compressing the pixel data alleviates the problem to some extent, particularly when the pixel data has already been halftoned. However, the data transfer still typically requires many megabytes of compressed pixel data. Apart from the time and memory resource required to process this data in the printer, considerable time is also consumed in simply waiting for these compressed pixels to make their way across the interface from the host computer to the printer. Consequently the host-based printer system is particularly sensitive to increases in page resolution and reduced interface data bandwidth.
A need therefore exists for a representation of a page to be rendered on a printer system that removes the requirement of the printer system to be capable of PDL interpretation without the representation consisting of a large amount of data.
Summary 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 present disclosure, there is provided a method of generating a representation of a page to be rendered, said page comprising one or more 688328 -4graphic objects, each graphic object being defined by two or more edges bounding a primitive fill, said method comprising the steps of: partitioning said page into a plurality of non-overlapping regions, each region having a corresponding fill generated by the compositing of a sequence of primitive fills to be composited to generate the fill for said region upon rendering; for at least one of said regions, determining an optimised equivalent fill sequence that results, when composited, in substantially the same fill as said corresponding fill; and representing each region such that at least one further region references said optimised equivalent fill sequence instead of the fill sequence corresponding to said further region.
According to a second aspect of the present disclosure, there is provided a representation of a page to be rendered, said page comprising one or more graphic objects, each graphic object being defined by two or more edges bounding a primitive fill, said representation comprising: data identifying a plurality of non-overlapping regions; a corresponding fill for each region generated by the compositing of a sequence of primitive fills to be composited to generate the fill for said region upon rendering wherein, for at least one of said regions, said sequence of primitive fills is an optimised equivalent fill sequence that results, when composited, in substantially the same fill as said corresponding fill, and wherein at least one further region references said optimised equivalent fill sequence instead of the fill sequence corresponding to said further region.
According to another aspect of the present disclosure, there is provided an apparatus for implementing the aforementioned method.
According to another aspect of the present disclosure there is provided a computer program for implementing the method described above.
688328 Other aspects of the invention are also disclosed.
Brief Description of the Drawings Some aspects of the prior art and one or more embodiments of the present invention will now be described with reference to the drawings, in which: Figs. 1, 2 and 3 show schematic block diagrams of prior art pixel rendering systems for rendering computer graphic object images; Fig. 4 shows a schematic block diagram of the functional blocks of a pixel rendering apparatus forming part of the prior art pixel rendering system of Fig. 1; Fig. 5 illustrates schematically two overlapping objects for the purposes of illustrating how the prior art pixel rendering systems shown in Figs. 1 to 3 render a page; Fig. 6 shows a schematic block diagram of a pixel rendering system for rendering computer graphic object images according to the present invention; Fig. 7 illustrates the functional blocks of a controlling program in the pixel rendering system shown in Fig. 6; Fig. 8 shows a schematic block diagram of a pre-processing module forming an aspect of a primitives processor shown in Fig. 7; Fig. 9 and 10 illustrate schematically pages containing two overlapping objects for the purposes of illustrating how the pixel rendering system shown in Fig. 6 renders such pages; Fig. 11 a shows a schematic flow diagram of a method of processing the edges on a scanline; and Figs. 1lb, 1lc, lid, and lie show schematic flow diagrams of steps of the method shown in Fig. 1 la in more detail.
688328 -6- Detailed Description U Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears.
(Ni Aspects of prior art pixel rendering systems are described before describing embodiments of the invention. It is noted however that the discussions contained in the "Background" section and the prior art system described below relate to systems which form prior art through their respective publication and/or use. However, such should not be interpreted as a representation by the present inventor(s) or patent applicant that such documents or systems in any way form part of the common general knowledge in the art.
Fig. 1 shows a schematic block diagram of a prior art pixel rendering system 100 for rendering computer graphic object images. The pixel rendering system 100 comprises a personal computer 110 connected to a printer system 160 through a network 150. The network 150 may be a typical network involving multiple personal computers, or may be a simple connection between a single personal computer and printer system 160.
The personal computer 110 comprises a host processor 120 for executing a software application 130, such as a word processor or graphical software application, and a controlling program 140, such as a driver on a WindowsTM or MacintoshTM operating system.
The printer system 160 comprises a controller processor 170, memory 190, a pixel rendering apparatus 180, and a printer engine 195 coupled via a bus 175. The pixel rendering apparatus 180 is typically in the form of an ASIC card coupled via the bus 175 to the controller processor 170, and the printer engine 195. However, the pixel rendering 688328 -7apparatus 180 may also be implemented in software executed in the controller processor 0 170.
In the prior art pixel rendering system 100 each graphical object that is passed by the controlling program 140 to the pixel rendering apparatus 180 across the network 150 for processing is defined in terms of the following parameters: Oedges which describe the geometric shape of the graphical object; a fill which describes the colour, the opacity, the colour blend and/or the image to be painted within the shape of the object; and a level which describes whether an object should be painted above or behind other objects, and how colour and opacity from an object should be combined with colour and opacity from other overlapping objects.
Describing each of the parameters of the graphical object in more detail, and starting with the edges, the edges are used to describe the boundaries of an object. Each edge is provided as a sequence of segments in a monotonically increasing Y sequence.
Edge segments may be straight lines or may be any other type of curve, such as a Bezier curve. Edges may also be used to describe text objects by treating each glyph as a geometric shape whose boundaries are described by edges made up of straight-line segments. Edges are attributed a "direction" by the controlling program 140. This direction is a convention that the pixel rendering apparatus 180 uses to determine how an edge affects the activity of an object's level.
The fill is a description of the colour, pattern or image to be painted within the boundaries of the graphical object. The fill may be a flat fill representing a single colour, a blend representing a linearly varying colour, a bitmap image or a tiled repeated) image. In each case the supplied fill is to be applied over the extent of the object. The 688328 -8o controlling program 140 generates fill information for each object on a page that is used by the pixel rendering apparatus 180 during the rendering process.
Each object to be rendered is also assigned a level entry. An object's level entry indicates the relative viewing position of that object with respect to all other objects on a page.
(Ni In addition, each level entry created by the controlling program 140 also has a fill rule associated therewith, which may be "non-zero winding", or "odd-even fill". Each N level has a fill-count, which is set to zero at the start of each scanline, during the rendering process. As the pixel rendering apparatus 180 processes a scanline working across the page, when a downwards heading edge is crossed, the fill-count of the level or levels associated with the edge is incremented. When an upwards heading edge is crossed, the fill-count of the level or levels associated with the edge is decremented. If a level has a non-zero winding fill rule, then the level is active if its associated fill-count is non-zero. If a level has an odd-even fill rule, then the level is active if its associated fill count is odd.
Yet further, the level entry defines the arithmetic or logical operation which specifies how the colour/opacity from this level is combined with the colour/opacity from other overlapping levels.
In the pixel rendering system 100, the software application 130 creates pagebased documents where each page contains objects such as text, lines, fill regions, and image data. The software application 130 sends a page for printing, in the form of an application job, via a graphics application layer to the controlling program 140. In particular, the software application 130 calls sub-routines in a graphics application layer, such as GDI in Windows
T
M, or X-1 1 in UnixTM, which provide descriptions of the objects to be rendered onto the page, as opposed to a raster image to be printed.
688328 -9- The controlling program 140 receives the graphical objects from the application program 130, and constructs an instruction job containing a set of instructions, together with data representing graphical objects. In the present context a job represents one page of output. The job is then transferred to the controller processor 170, which controls the pixel rendering apparatus 180, for printing. In particular, a program executing on the controller processor 170 is responsible for receiving jobs from the controlling program 140, providing memory 190 for the pixel rendering apparatus 180, initialising the pixel rendering apparatus 180, supplying the pixel rendering apparatus 180 with the start location in memory 190 of the job, and instructing the pixel rendering apparatus 180 to start rendering the job.
The pixel rendering apparatus 180 then interprets the instructions and data in the job, and renders the page without further interaction from the controlling program 140.
The output of the pixel rendering apparatus 180 is colour pixel data, which can be used by the output stage of the printer engine 195. The pixel rendering apparatus 180 employs a pixel-based sequential rendering method.
The pixel rendering apparatus 180 of Fig. 1 is shown in more detail in Fig. 4.
The pixel rendering apparatus 180 comprises an instruction execution module 410; an edge tracking module 420; a priority determination module 430; a pixel generation module 440; a pixel compositing module 450; and a pixel output module 460 arranged in a pipeline. For each scanline the pixel rendering apparatus 180 processes each pixel in turn, considering the graphical objects that affect that pixel, to determine the final output for the pixel.
The instruction execution module 410 of the pixel rendering apparatus 180 reads and processes instructions from the instruction job that describes the pages to be printed 688328 and formats the instructions into information that is transferred to the other modules 420 to 460 within the pipeline.
One instruction is used to command the pixel rendering apparatus 180 to prepare to print a page of a particular dimension. Another instruction indicates that an edge or edges with particular characteristics start at a particular scanline at a particular x-position.
Yet another instruction specifies that the pixel rendering apparatus 180 should load a particular level into the appropriate internal memory region used to hold level information. Yet another instruction specifies that the pixel rendering apparatus 180 should load a particular fill into the appropriate internal memory region used to hold fill information within the printer system 160. Yet another instruction specifies that a particular data set a compressed bitmap for example) should be decompressed using a specified decompression algorithm. The data set to be decompressed must be available in the memory 190 of the printer system 160 before such an instruction is executed by the pixel rendering apparatus 180. Other instructions relevant to the rendering of a page are also decoded by the pixel rendering apparatus's instruction execution module 410.
When executing the instruction job the instruction execution module 410 processes the instructions sequentially. On encountering an instruction to load an edge or edges at a specific scanline the instruction execution module 410 extracts relevant information regarding the edge and passes this information onto the edge tracking module 420.
The edge tracking module 420 is responsible for determining the edges of those graphical objects of the instruction job that intersect the currently scanned pixel and passes this information onto the priority determination module 430. When creating the instruction job the controlling program 140 inserts instructions to start an edge or edges in the appropriate order and at the appropriate scanline such that the pixel rendering 688328 -11o apparatus 180 maintains a correct list of active edges at every scanline of the page when 0 rendering.
When the edge tracking module 420 receives edge information from the instruction execution module 410, the edge tracking module 420 updates an active edge list 470. The active edge list 470 contains a sorted list of the active edges on the current (Ni scanline being rendered by the pixel rendering apparatus 180. The active edge list 470 is updated by inserting the incoming edges into the active edge list 470 and sorting this list Sby each edge's current x-position.
Once a scanline has been rendered, each edge has its x-position updated by executing each edge's x-position update function. This function returns the edge's xposition for the next scanline render. In the case that an edge terminates before the next scanline, that edge is removed from the active edge list 470. When edges cross the active edge list 470 is resorted.
For each edge that is stored in the active edge list 470 a level or levels will be added or removed from an active level list 490 that is maintained by the priority determination module 430. As the active edge list 470 is traversed level or levels are added to or removed from the active level list 490. The span of pixels between a pair of edges has therefore an active level list 490 that is used to control the compositing of the pixel contributions from each level in the active level list 490.
The priority determination module 430 is pre-loaded with a level table 445 from the instruction job. The level table 445 contains an entry for each graphical object consisting of its z-order position on the page, how the colour of the object should be combined with other objects (compositing operators), and other data. The priority determination module 430 is responsible for determining those objects, so called active 688328 -12objects, that make a visual contribution to the currently scanned pixel and passes that information onto the pixel generation module 440.
The information passed from the pixel determination module 430 to the pixel generation module 440 includes an index that references the fill of a corresponding active object in a fill table 455. The pixel generation module 440 is pre-loaded with the fill table 455 from the instructionjob. The fill table 455 contains an entry for each graphical object consisting of the graphical object's fill and other data. The pixel generation module 440, upon receiving information from the priority determination module 430, is responsible for referencing the index into the fill table 455, and using the data therein to generate colour and opacity information which is passed onto the pixel compositing module 450.
The pixel compositing module 450 is responsible for obtaining the final colour for the currently scanned pixel by compositing the fill colours in accordance with the compositing operators as indicated in the rendering instructions. For each level in the active level list 490 for a particular pixel span, the pixels corresponding to the level's object are determined by reference to the fill that is linked to that level. In the case of a simple flat fill, this reference is a trivial lookup of the colour of that object. However, for a bitmap fill a 2-D affine transformation is applied to the y) location of each pixel in the span to determine the source data to be used to colour the pixel on the page, including some interpolation method if required. Similarly a non-trivial calculation is required for any other fill type that relates a pixel's location on the page to the fill data stored within the printer system's fill table 455, such as a linear gradient.
In order to determine the final colour of pixels within a span, the contributions of each level are composited together. Compositing is performed using the transparency of the contributing levels, the colours of the contributing levels and the raster operation specified for each level in the active level list 490. For a span where the fills of all the 688328 -13contributing levels for this span each reference a single colour, the compositing algorithm need only compute the resultant colour from compositing one pixel and then repeat this pixel for the whole span.
For a span where the fills of all the contributing levels for this span are of type bitmap or gradient for example, the compositing algorithm needs to compute the resultant colour from compositing all the pixels in the span in turn.
The final output colour of the pixel is passed onto the pixel output module 460, which is subsequently passed to the printer engine 195.
The pixel rendering apparatus 180 described above considers each output pixel fully, applying all required compositing operations before moving onto the next pixel in the raster output. This method is efficient in an ASIC implementation, but is not the most optimal implementation in software. A variation on this pixel rendering apparatus 180 is possible which offers advantages when implemented in software. In this variation, the pixel rendering apparatus 180 applies one of the required compositing operations to all contributing pixels within a span (between two successive edges), before applying the next compositing operation. Once all required compositing operations have been so applied, the resulting pixel span has been fully processed and may be passed to the pixel output module 460. The next pixel span is then considered.
The distribution of the computational burden of rendering in the pixel rendering system 100 shown in Fig. 1 between the personal computer 110 and the printer system 160 sees the compositing of pixels being performed on the printer system 160 by the pixel rendering apparatus 180. Compositing in a span where there are N active levels is an order-N algorithm. Computing the contribution of each level in the active level list 490 for a page with many overlapping objects can be very time consuming using the process described above, since the contribution of each level must be calculated for each pixel 688328 -14span. If the fills linked to the active levels within a span are of type flat colour then only a single pixel within the span needs to be individually calculated using the compositing algorithm. All other pixels within the span will be identical. However, if the fills linked to the active levels within a span are of type bitmap, or another non-flat fill, then each pixel within the span needs to be individually calculated using the compositing algorithm.
In order to render in real time for a laser beam printer running at a rated page per minute speed, the processing load on the printer due to compositing must be quantified and catered for in specifying the resource requirements of the printer system 160. In particular, the processing power and memory resources of the printer system 160 must be such that at no time does the pixel rendering apparatus 180 fail to keep up with the consumption of pixels by the printer engine 195 when the laser printer is actually printing the page.
In addition to the compositing of pixels on the page, another task that is performed typically in the printer system 160 is that of Colour Space Conversion (CSC).
Compositing typically takes place in the RGB (Red Green Blue) colour space and hence a CSC is required following the step of compositing before pixels can be shipped to the printer engine 195 for printing onto the page. CSC between the RGB colour space typically used when compositing and the CMYK colour space required by the printer is a non-linear operation where typically each of the Cyan, Magenta, Yellow and Black components are functions of all three RGB components. CSC places a certain processing burden on the printer system 160 in order to be executed in a timely manner for real time printing on a laser beam printer.
Yet another task that is performed typically in the printer system 160 is that of halftoning. Halftoning is applied to pixels that are at page resolution as a method of reducing the size of data to be transferred to the printer engine 195. In a typical 688328 halftoning implementation tables are used to reduce each colour channel from an 8-bit value to a 4-bit, 2-bit or 1-bit value.
The operation of the pixel rendering system 100 in processing an instruction job is now described with reference to Fig. 5 wherein two graphical objects 510 and 520 on a page 500 are illustrated. The graphical objects are a triangle 510 with a light grey flat fill, and a square 520 with a dark grey flat fill. The triangle 510 is above the square 520, and also partially overlaps the square 520. The triangle 510 is partially transparent while the square 520 is fully opaque. The background of page 500 is white.
In the prior art pixel rendering system 100 the controlling program 140 constructs an instruction job wherein the triangle 510 is described by two edges 580 and 585. The first edge 580 is downwards heading, and consists of two segments 581 and 582. The second edge 585 is upwards heading and consists of a single segment. The square 520 is also described by two edges 590 and 595. The first edge 590 is downwards heading, and consists of one segment. The second edge 595 is upwards heading and also consists of one segment only.
The following table shows the edges that the controlling program 160 generates for the objects 510 and 520 in Fig Object Edges Direction Number of Associated Segments Level Index Square 520 590 Down 1 0 595 Up 1 0 Triangle 510 580 Down 2 1 585 Up 1 1 Table 1 Edges created for objects in Fig. 688328 -16- The controlling program 140 generates two level entries in the level table 445 (Fig. 4) for the objects in Fig. 5 as follows: Level Index Associated Fill Index Other Data 0 0 (Fa) 1 1(Fb) Table 2 Level Table created for objects in Fig. Within the instruction job the controlling program 140 generates two fill entries in the fill table 455 (Fig. 4) as follows: Fill Index Name Type Color Opacity Other Data 0 Fa Flat Dark grey 100% 1 Fb Flat Light grey 50% Table 3 Fill Table created for objects in Fig. To understand how the pixel rendering apparatus 180 renders the objects on page 500, consider scanline 531 in Fig. 5. When rendering this scanline 531 no levels are active until segment 581 of edge 580 is encountered. For this reason the colour output by the pixel rendering apparatus 180 is white from the left of the page 500 up until edge 580.
At edge 580 level 1 is activated. Between edge 580 and edge 590 the active level list 490 contains only level 1. The colour defined by level 1 's fill entry is light grey.
Therefore, a span of light grey pixels is output by the pixel rendering apparatus 180 for those pixels between edge 580 and edge 590.
At edge 590 level 0 is activated. Between edge 590 and edge 585 the active level list 490 contains both level 0 and level 1. The colour defined by level O's fill entry is dark grey and the colour defined by level l's fill entry is light grey. Therefore, a span of grey pixels is output by the pixel rendering apparatus 180 for the pixels between edge 688328
I
-17- 590 and edge 585, that being the colour that results from compositing the two colours of the objects 510 and 520 using each object's respective level entry to control the proportions of each object's colour.
At edge 585 level 1 is deactivated. Between edge 585 and edge 595 the active level list 490 contains only level 0. The colour defined by level 0's fill entry is dark grey.
Therefore, a span of dark grey pixels is output by the pixel rendering apparatus 180 for those pixels between edge 585 and edge 595.
At edge 595 level 0 is deactivated. Between edge 595 and the right hand edge of the page 500 the active level list 490 contains no levels. Therefore a span of white pixels is output by the pixel rendering apparatus 180 for those pixels between edge 595 and the right hand edge of the page 500.
This example shows the basis on which the pixel rendering apparatus 180 works, and shows simple examples of a fill table 455 and a level table 445. In most print jobs the fill table 455 and the level table 445 are far more complex, and typically contain many entries. In complex print jobs the number of entries can be very large, necessitating methods to deal with such table sizes.
Due to the processing load required for pixel compositing placed on the pixel rendering apparatus 180, the use of the pixel rendering system 100 for low-cost real-time printing on a laser beam printer is unsuitable. The reason is that, when a print system is designed to render in real time, this implies that the worst case instruction job must be renderable within the time constraints imposed by the print engine speed if a full framestore is not to be employed in the printer system 160. Once the paper has started to roll past the toner drums a laser beam printer may not be stopped in order to allow a rendering engine to catch-up in the generation of pixel data.
688328 18 In many print jobs (such as text only) there is usually no compositing to be U performed and the pixel rendering system 100 is capable of real time rendering without extravagant processing and memory resources in the printer system 160. In a text only page the majority of processing in the pixel rendering apparatus 180 is consumed by edge tracking. In many simple cases where there are no overlapping objects it is not a cost Seffective solution to provide a printer that is capable of multi-level compositing. The proportion of pages that require compositing will depend on the user's use profile. For the printing of documents that are primarily text the priority determination module 430 will in many cases be running only a trivial single level resolution for each span. A printer with reduced resources (and hence cost) would be capable of rendering such pages in a similar time frame.
However, for very complicated jobs with hundreds of overlapping transparent bitmaps for example, the burden of compositing would require considerable processing and memory resources to be available on the printer system 160 to allow such a page to be rendered in real time. For high page rates and page resolution, the cost of a printer that contains a real time pixel render engine capable of rendering such complicated pages could be prohibitive.
For this reason the provision of the function of compositing in the printer is not seen as providing a cost effective solution since such a printer would need to handle both the very simple and the very complicated cases with the same low-cost hardware and software resources.
As described earlier an object's boundaries are decomposed into edges by the controlling program 140. The relative viewing position of each object is explicitly coded in the level associated with an object's edges and an object's pixel colours are stored in a fill. This information is generated by the controlling program 140 for each object on the 688328
I
-19page. These edges, levels and fills are then encoded in an instruction job together with U other relevant information to be rendered by the pixel rendering apparatus 180.
In some cases an object's edges will be completely obscured by an overlaying opaque object. An object that is fully obscured by an overlying object will not contribute anything to the pixels on a page. In such cases, the edge information, the level and the fill (Ni Screated by the controlling program 140 for the obscured object are redundant in the instruction job. However the controlling program 140 in the pixel rendering system 100 does not discriminate between such obscured objects and objects that are visible on a page, placing all edges levels and fills in the instruction job.
This limitation introduces redundancy in the size of the instruction job created by the controlling program 140 when objects are fully obscured by other objects. This limitation also may introduce redundancy in the size of the instruction job created by the controlling program 140 when objects partially obscure other objects. This redundancy results in a reduction in speed of the subsequent processing of the instruction job. This redundancy also means that the pixel rendering apparatus 180 uses more memory resources than if such redundancy were removed before the instruction job were created.
Whether or not one object partially or fully obscures other objects depends on the relative positions of the edges of the objects. If the edges of the object should cross one another then the objects can be said to overlap. Furthermore, if edges of objects do not cross at any time, the objects either overlap fully or do not overlap at all. It is only by tracking the edges' relative positions that a decision can be made on whether objects overlap fully or not at all. When the number of objects on a page is large the algorithm to determine existence of overlap of each object with all other objects becomes very time consuming. An object by object approach is not feasible since it would involve the 688328 repeated tracking of each object's edges as it is compared with all the other objects in a Spage.
Fig. 2 shows a schematic block diagram of another prior art pixel rendering system 200. The pixel rendering system 200 also comprises a personal computer 210 connected to a printer system 260 through a network 250. The personal computer 210 (Ni comprises a host processor 220 for executing a software application 230. The printer system 260 comprises a controller processor 270, memory 290, a pixel rendering Sapparatus 280, and a printer engine 295 coupled via a bus 275. A controlling program 240 executes on the controller processor 270.
Hence, the pixel rendering system 200 differs from the system 100 shown in Fig.
1 in that the controlling program 240 executes on the controller processor 270 of the printer system 260, instead of on the host processor 220, as is the case in system 100. In system 200 the software application 230 sends a high level description of the page (for example a PDL file) to the controlling program 240 executing in the controller processor 270 of the printer system 260. The controlling program 240 performs the same task as its equivalent controlling program 140 in the system 100 shown in Fig. 1. In system 200 the load on the printer system 260 is much greater than the printer system 160 of the system 100.
Fig. 3 shows a schematic block diagram of yet another prior art pixel rendering system 300. The pixel rendering system 300 also comprises a personal computer 310 connected to a printer system 360 through a network 350. The personal computer 310 comprises a host processor 320 for executing a software application 330, a controlling program 340, and a pixel rendering apparatus 380. The pixel rendering apparatus 380 is typically implemented in software executing on the host processor 320, but may also take the form of an ASIC chip executing as a co-processor to the host processor 320. The 688328 -21 o printer system 360 comprises a controller processor 370, memory 390, and a printer Sengine 395 coupled via a bus 375. In system 300 the controlling program 340 and the pixel rendering apparatus 380 combine to generate pixels that are delivered to the printer system 360 over the network 350.
The printer system 360 of the host-based printer system 300 may therefore be a (Ni candidate for a low-cost printer since it does not implement compositing in the printer N system 360, instead requiring that the personal computer 310 implement this function. In Sthe host-based pixel rendering system 300 the page to be printed is rasterised to a bitmap and compressed in the host processor 320 and shipped to the printer system 360 across the network 350.
In the host-based pixel rendering system 300 the main factor that needs to be considered in ensuring that the printer system 360 can maintain real-time printing is the time taken by the controller processor 370 to decompress the compressed bitmap that has been received from the host processor 320 and stored in the memory 390 of the printer system 360. If the bitmap decompression software can run fast enough in the controller processor 370 to ensure that the decompressed pixels are always available to the printer engine 395 when needed, then the printer system 360 is said to be able to print in real time.
Some remedial action may be taken in the overall host-based pixel rendering system 300 to ensure that real-time printing is guaranteed. For example, the resolution of the rasterised bitmap can be reduced for particularly complicated bitmaps that would otherwise not be possible to decompress in real-time in the printer system 360. This resolution reduction has the net effect of reducing the amount of data that needs to be handled by the bitmap decompression software running in the controller processor 370 with a resulting speed up in the rate of pixel generation. Reducing printer resolution 688328 22 reduces the quality of the printed image, a trade-off that must be considered when a designing the printer.
Another method of guaranteeing real-time printing is to reduce the speed of the printer rollers. This has the net effect of reducing the rate of pixel consumption by the printer engine 395. The bitmap decompression software running in the printer system (Ni O360 can then take more time to decompress while still meeting the real-time deadline of the printer engine 395. While the quality of the page remains unaffected by this action, the printer's slowdown may not be desirable to the user.
In some existing networked host-based printers the controller processor 370 does not start decompressing pixels until such time as the all the compressed pixel data has been received into the printer system 360 over the network 350. The reason for this is to ensure that network latency does not affect the real-time printing guarantee of the printer system 360. If pixel shipping to the printer engine 395 were to commence before the full compressed bitmap were received, then there is the possibility that the network 350 would fail before the full page were received. In this case the printer engine 395 would be starved of data and only a part of the page would be printed. Since the rollers cannot be stopped in laser beam printers once a page has begun to print, the page would be ejected only partially printed.
In choosing to postpone decompression of the compressed bitmap in the printer system 360 until such time as the complete compressed image is received from the host processor 320 over the network 350 the printer system 360 must be designed with enough memory 390 to contain the worst case compressed image size possible. The worst case compressed page size is specified and controlled by the controlling program 340 running in the host processor 320. Lossy compression, resolution reduction and other techniques 688328 23 may be implemented to ensure the worst case page will, when compressed, fit in the memory 390.
In addition, it is desirable that the size of the compressed pixel data be small in order to avoid creating a bottleneck in the network 350. This bottleneck is undesirable because it would adversely affect the overall response time of the network 350 for other users of the network 350 but also because it increases the overall print time as defined as the time between the moment the user commands a page print and the printed page actually is ejected from the printer system 360.
The greatest advantage that the host-based pixel rendering system 300 has over the printer systems 100 and 200 is printer cost because it does not need to implement the time consuming and resource hungry tasks of PDL interpretation, edge tracking, object compositing, colour space conversion and halftoning in the printer itself. However as page resolutions and increased page printing rates are demanded in the future its design places too great a burden both on the network bandwidth and memory requirements necessary to implement a feasible solution.
Thus far, two contrasting printing architectures have been outlined. However, a third form exists whereby an intermediate display list (IDL) is generated on the host and then delivered to the printer. This IDL is, in general, bigger than the corresponding PDL format for the same page but in general is smaller than the typically compressed pixels for that page. By designing the format of the IDL appropriately, the complexity of the printer can be tuned for an optimum cost/performance trade-off in the overall printing system.
An IDL typically describes the objects on a page in terms of each object's boundary and other attributes of that object such as fill-type that describes the colour or colours of the pixels within the object, the relative viewing position of the object and how the object's colours should be combined with the colours of other objects that overlap it.
688328 -24- The printer designed to work with an IDL must contain such software and/or hardware resources on board to allow the decoding of the IDL and the generation of the rasterised pixel data that corresponds to the page. Since an IDL is generally significantly less complex than a full PDL, the resources needed in an IDL-based printer are consequently less than for the PDL equivalent printer. So, in general, an IDL-based printer is generally cheaper than the PDL equivalent printer.
Such an IDL approach has some additional advantages over both the PDL-based and host-based printer systems described above. Firstly, the flexibility in designing the format of an IDL means that computationally intensive tasks may be performed in that part of the printing system that is best suited to executing them. For example, a powerful host computer may be more suited to compositing pixels together rather than performing compositing in the printer itself A flexible IDL format allows the system designer to balance the processing load between the printer and the host computer by dynamically shifting the processing load from host to printer or vice versa depending on the complexity of the page to be printed.
There are many technical challenges in designing a printer system that successfully balances the load between the host and the printer for a wide range of page types. It is of the utmost importance that printing quality and printing speed (page rate) are not compromised in the pursuit of the ideal balance between host and printer. Issues such as cost, quality, software and hardware reuse and immunity to increasing page resolution all need to be addressed in the design of the ideal load-balancing printer system.
Fig. 6 shows a schematic block diagram of a pixel rendering system 600 for rendering computer graphic object images in accordance with the present invention. The pixel rendering system 600 comprises a personal computer 610 connected to a printer 688328 system 660 through a network 650. The network 650 may be a typical network involving multiple personal computers, or may be a simple connection between a single personal computer and printer system 660.
The personal computer 610 comprises a host processor 620 for executing a software application 630, such as a word processor or graphical software application, and a controlling program 640 in the form of a driver on a WindowsTM or MacintoshTM operating system.
The printer system 660 comprises a controller processor 670, memory 690, a pixel rendering apparatus 680, and a printer engine 695 coupled via a bus 675. The pixel rendering apparatus 680 is in the form of an ASIC card coupled via the bus 675 to the controller processor 670, and the printer engine 695. However, the pixel rendering apparatus 680 may also be implemented in software executed in the controller processor 670.
In the pixel rendering system 600, the software application 630 creates pagebased documents where each page contains objects such as text, lines, fill regions, and image data. The software application 630 sends a page for printing, in the form of an application job, via a graphics application layer to the controlling program 640. In particular, the software application 630 calls sub-routines in a graphics application layer, such as GDI in WindowsTM, or X-1 1 in UnixTM, which provide descriptions of the objects to be rendered onto the page, as opposed to a raster image to be printed.
The controlling program 640 receives the graphical objects from the application program 630, and decomposes the graphical objects into edges, levels and fills in the same manner as the controlling program 140 of the prior art pixel rendering system 100 (Fig. These edges, levels and fills are called the first set of primitives. The fill may be 688328 -26a flat fill representing a single colour, a blend representing a linearly varying colour, a bitmap image or a tiled repeated) image.
The controlling program 640 then further processes this first set of primitives to generate a second set of primitives that facilitates more flexibility in load balancing between the personal computer 610 and printer system 660.
Finally, an instruction job for forwarding to the controlling processor 670 is constructed using the second set of primitives.
The job is then transferred for printing, via the network 650, to the controller processor 670, which controls the pixel rendering apparatus 680. In particular, a program executing on the controller processor 670 is responsible for receiving jobs from the controlling program 640, providing memory 690 for the pixel rendering apparatus 680, initialising the pixel rendering apparatus 680, supplying the pixel rendering apparatus 680 with the start location in memory 690 of the job, and instructing the pixel rendering apparatus 680 to start rendering the job.
The pixel rendering apparatus 680 then interprets the instructions and data in the job, and renders the page without further interaction from the controlling program 640.
The output of the pixel rendering apparatus 680 is colour pixel data, which may be used by the output stage of the printer engine 695.
While object based descriptions are generally used to describe the content of a page to be printed, this choice does not always provide the flexibility to implement optimisations such as removing redundant information from a display list. A typical driver as found in the prior art personal computer 110 decomposes the objects one by one into primitives that, in the main, represent only that object. Certain optimisations are possible, for example the reuse of similar shapes and fill data for the objects but this is often not very significant.
688328 -27- Therefore, instead of using an object based description for the page, the pixel rendering system 600 uses the edges of objects as the basis for describing the page. One approach uses the concept of an edge behaviour table. The edge behaviour table specifies attributes associated with an edge.
In particular, the edge behaviour table contains one or more entries, each entry containing one or more attributes of the edge to which the entry belongs and also a lifetime for which the attribute or attributes for the edge are active. Table 4 shows an edge behaviour table that has N entries, where each entry has P attributes.
Lifetime Attributel Attribute2 Attribute P Lifetime i Value 1 1 Value 1 2 Valuelp Lifetime 2 Valuez 2 l Value 2 2 Valuezp LifetimeN ValueNI1 ValueN2 ValueNp Table 4 Layout of preferred implementation of an Edge Behaviour Table An attribute of an edge is data that is related to that edge. It may be a reference to data used to calculate the pixels following the edge on the page or it may be a function that is used to update the y) position of the edge from scanline to scanline. The attribute may, in fact, be any data that is relevant to the edge.
While not all possibilities for the attribute of an edge are explicitly described, one skilled in the art may derive other attributes that are related to an edge as part of a page description used to render a page.
Each edge's attribute also has a lifetime, which is typically expressed in scanlines. So, for example, the attributes in one entry of an edge's edge behaviour table that are valid for 25 scanlines would have a lifetime field that indicates this. Depending on the most optimal solution for the hardware or software platform on which the pixel 688328 28 rendering apparatus 680 is implemented, the representation of the lifetime of 25 scanlines may be in relative or absolute terms.
In the case of an absolute representation of the lifetime of an edge behaviour table entry, the lifetime is expressed as "from scanline M to scanline N inclusive", where M is the first scanline for which the entry's attributes are valid and N is the last scanline for which the entry's attributes are valid, each scanline value being offset from the start of the page.
In the case of a relative representation of the lifetime of an edge behaviour table entry, the lifetime would be expressed as "25 scanlines". Implied in this representation is that the entry's attributes are valid for 25 scanlines from the start of the edge.
Other expressions are also possible for the lifetime field of each entry in an edge behaviour table. For example an entry that means "for the remainder of the edge" may be used to imply that the corresponding attributes are valid for the remainder of the edge.
While not explicitly mentioned here, those skilled in the art would appreciate that other expressions may be used to code in the lifetime of an edge.
Another approach that may be used to replace an object based display list is one where each original edge on the page is split, if necessary, into separate edges where each separate edge extends over successive scanlines as indicated by a single entry in the edge behaviour table that would be constructed for the original edge. Each separate edge references the same (set of) attribute(s) over its whole extent. In order to calculate the points at which the original edge should be split the original edge is tracked and when the attribute(s) of the original edge change, a new separate edge is started at that location and the existing separate edge (if any) is terminated. Note that the resolution of the start/end points of the separate edges must be such that the edge tracking of the separate edges is 688328 -29identical to that of the original edge. This embodiment does not require an edge behaviour table or lifetime data.
Referring again to the pixel rendering system 600 in Fig. 6, the graphical objects on a page to be printed are passed from the software application 630 to be processed by the controlling program 640. The role of the controlling program is to generate a display list that can be rendered by the pixel rendering apparatus 680. Fig. 7 shows a schematic block diagram of the controlling program 640 in more detail. The controlling program 640 comprises an objects decomposition driver 640a, a primitives processor 640b and an instruction job generator 640c.
The method employed by the controlling program 640 is to first decompose, using the objects decomposition driver 640a, the page objects passed from the software application 630 into a representation of edges, levels and fills. As noted above, these edges, levels and fills are called the first set of primitives, and are stored in store 640d.
Within the primitives processor 640b, the first set of primitives in store 640d is further processed to generate a second set of primitives placed in store 640e. The second set of primitives includes edges, an edge behaviour table for every edge and an aggregate fill table. The second set of primitives in store 640e is then further processed by the instruction job generator 640c which creates a display list that can be rendered by the pixel rendering apparatus 680.
In the preferred implementation the primitives processor 640b includes a preprocessing module 700, a schematic block diagram of which is shown in Fig. 8. The preprocessing module 700 comprises an instruction execution module 710; an edge tracking module 725; a priority determination module 735; a fill collation module 745; a fill compositing sequence resolving module 750 and an edge data creation module 755.
688328 The instruction execution module 710 reads and processes instructions from the first set of primitives 640d and formats the instructions into messages that are transferred to the other modules within the pre-processing module 700. The edge tracking module 725 is responsible for determining the edge that bounds the span of the currently scanned pixels using the active edge list 720 that the edge tracking module 725 maintains, and passes this information on to the priority determination module 735.
Fig. 1 a shows a schematic flow diagram of a method 1500, performed by the edge tracking module 725, of processing the edges on a scanline. It is achieved by determining the active edges on each scanline, and from these active edges, determining the objects that contribute to each pixel on the scanline. The method 1500 determines the active edges on any scanline from the main edge list in the first set of primitives in store 640d. The main edge list contains all the edges to be rendered on the page, sorted in ascending order of their starting scanline (y-order), and the active edge list (ActiveEdgeList) 720 is a temporary list of edges that intersect the current scanline.
The method 1500 starts in step 1550 where a variable CurY is set to zero, and an active edge list 720 and a known fill compositing sequence table 740 are set to empty sets. A copy 735 is made of the main edge list for later inclusion in the second set of primitives 640e that will be used to construct the instruction job. Then, in step 1551, the edge tracking module 725 reads an edge from the main edge list in store 640d. The edge tracking module 725 next determines in step 1552 whether all the edges in the main edge list have been processed, or whether the y-value of the currently-read edge, having variable name currentedgey, is greater than the value stored in the variable CurY. If neither of these conditions is satisfied then the method 1500 proceeds to step 1553 where the edge tracking module 725 removes the current edge from the main edge list. The current edge is also merged into the active edge list. Edges in the active edge list are 688328 -31 ordered by ascending x-value; i.e. the order along the scanline. Once the current edge is merged into the active edge list the method 1500 returns to step 1551 where the next edge is read from the main edge list.
If it is determined in step 1552 that either of the conditions is satisfied, then in step 1554 the edge tracking module 725 determines a number N of scanlines to prerender. If all the edges in the main edge list have been processed then the number N is set to the number of scanlines remaining on the page; i.e. the difference between the page height and the current scanline CurY as follows: N PageHeight CurY (1) If, however, there are still edges in the main edge list to process, then the number N is set to the number of scanlines between the current scanline CurY and the scanline on which the currently-read edge commences: N current_edge.y CurY (2) Once the number N of scanlines has been determined in step 1554 the active edge list 720 for N scanlines is passed to the priority determination module 735 for processing in step 1555. The processing of the N scanlines in step 1555 is described in more detail with reference to Fig. 1 lb. The edge tracking module 725 then updates the current scanline CurYin step 1556 using the equation: CurY CurY N (3) Next, in step 1557, the edge tracking module 725 determines whether the updated current scanline CurY is equal to the page height. If so, the method 1500 terminates in step 1558. Alternatively, if it is determined in step 1557 that the current scanline CurYis less than the page height then the method 1500 returns to step 1551 from where the next edge from the main edge list is processed.
688328 -32o Step 1555 of processing a scanline by the priority determination module 735 is O now described in more detail with reference to Fig. lb wherein a schematic flow Sdiagram of step 1555 is shown. In particular, in step 1555 the active edge list 720 created by the edge tracking module 725 is used by the priority determination module 735 to update the set of active level information in the active level list 730. The step 1555 starts
CN
Sin an initialising sub-step 1561 wherein the priority determination module 735 sets a temporary active edge list (TempAEL) to an empty set and also sets the active level list (ActiveLevelList) 730 and a last active level list (LastActiveLevelList)' to empty sets. Substep 1562 follows where the priority determination module 735 determines whether the active edge list 730 is empty, hence whether all edges in the active edge list 730 have been processed.
If it is determined that the active edge list 730 still contains entries then step 1555 continues to sub-step 1563 where the next edge along the scanline is read from the active edge list 730 and that edge is removed from the active edge list 720. Also, the level or levels pointed to by that edge are activated or deactivated as appropriate. If a level or levels are activated they are added to the active level list 730. Otherwise if the level or levels are deactivated they are removed from the active level list 730.
Then, in sub-step 1564, the active level list 730 is further processed by the fill collation module 745 and fill compositing sequence resolving module 750 in order to generate an active fill compositing sequence (ActiveFCS). Sub-step 1564 is described in more detail with reference to Fig. 1 c. Sub-step 1565 follows sub-step 1564 where the generated active fill compositing sequence (ActiveFCS) is associated with the current edge on the present scanline by the edge data creation module 755. Sub-step 1565 is described in more detail with reference to Fig. lie.
688328 -33 O In step 1566 the active level list is copied into the last active level list and the x- O position of the edge (Edge.x) and the y-position of the edge (Edge.y) are updated for this edge for the next scanline.
In sub-step 1567 the priority determination module 735 then determines whether 5 the edge expires, in other words, terminates. If the edge terminates then the step 1555 C€3 returns to sub-step 1562. Alternatively, if it is determined in sub-step 1567 that the edge N does not terminate then that edge is sorted into the temporary active edge list based on the Supdated x-position in sub-step 1568 before the step 1555 returns to sub-step 1562.
From sub-step 1562 any subsequent edges on the scanline are processed until it is determined in sub-step 1562 that the active edge list is empty. Step 1555 then proceeds to sub-step 1570 where the temporary active edge list is copied into the active edge list.
The priority determination module 735 then determines in sub-step 1571 whether more scanlines need to be processed. If not then the step 1555 returns in sub-step 1572 back to step 1556 in Fig 1la. Alternatively, if it is determined that more scanlines have to be processed, then the step 1555 returns to sub-step 1561.
Sub-step 1564 of processing the active level list 730 by the fill collation module 745 and the fill compositing sequence resolving module 750 to calculate the active fill compositing sequence is now described in more detail with reference to Fig. 11 c wherein a schematic flow diagram of sub-step 1564 is shown. Sub-step 1564 starts in sub-step 1580 where a variable Lv is set to the value NULL. The fill collation module 745 then in sub-step 1581 determines whether the active level list 730 is empty. If the active level list 730 is determined to be empty then, in step 1582, the fill collation module 745 sets the active fill compositing sequence variable to WhiteBkGnd.
Alternatively, if it is determined in sub-step 1581 that the active level list 730 is not empty, the sub-step 1564 proceeds to sub-step 1584 where the active level list 730 is 688328 -34sorted by descending priority order such that the first level in the active level list 730 0 corresponds to the object that is closest to the viewer. The number of entries in the active level list is NumLevels. In sub-steps 1585, 1586, 1587 and 1588, the fill collation module 745 determines the highest level (Lvl) in the active level list 730 that is opaque when the objects are viewed from above. When such a level is found the fill collation module 745
C(,
0copies that opaque level and any levels above it into the active fill compositing sequence variable in sub-step 1589.
From sub-step 1582 or 1589 processing continues to sub-step 1590 where the fill collation module 745 determines whether the active fill compositing sequence already exists in the set of known fill compositing sequences 740. If it is determined that the active fill compositing sequence already exists in the set of known fill compositing sequences 740 then sub-step 1564 returns in sub-step 1593 to sub-step 1565 in Fig. lib.
Alternatively, if it is determined in step 1590 that the active fill compositing sequence does not exist in the set of known fill compositing sequences 740, then the active fill compositing sequence is added to the set of known fill compositing sequences 740 in step 1591. Then, in step 1592, the active fill compositing sequence is further processed by the fill compositing sequence resolving module 750 before the sub-step 1564 ends in sub-step 1593 where a return is made to sub-step 1565 in Fig. 1 lb. Sub-step 1592 is described in more detail with reference to Fig. lid.
Sub-step 1592 of processing the active fill compositing sequence performed within the fill composting sequence resolving module 750 is now described in more detail with reference to Fig. lid wherein a schematic flow diagram of sub-step 1592 is shown.
Sub-step 1592 starts in sub-step 1542 where the fill composting sequence resolving module 750 determines an optimised equivalent fill compositing sequence (OEFCS) for the active fill compositing sequence. For example, a fill compositing sequence consisting 688328 only of flat fills reduces on compositing to a single opaque flat fill, which would be the 0 OEFCS. Alternatively, a fill compositing sequence may, on examination, contain a pair Sof levels that cancel each other out, i.e. contribute nothing to the pixel colour. In such a case the fill compositing sequence can be replaced by an equivalent fill compositing sequence that has such a pair of levels removed, without affecting the resultant output of Sthe fill compositing sequence. Hence, the optimised equivalent fill compositing sequence has fewer compositing operations than the fill composition sequence.
SNext, processing in sub-step 1592 proceeds to sub-step 1543 where it is determined whether the optimised equivalent fill compositing sequence calculated in substep 1542 (the current optimised equivalent fill compositing sequence) is different from the active fill compositing sequence. If it is determined that the current optimised equivalent fill compositing sequence is different to the active fill compositing sequence then, in sub-step 1544, the set of known fill compositing sequences 740 is searched for an optimised equivalent fill compositing sequence that is visually equivalent to the current optimised equivalent fill compositing sequence.
A fill compositing sequence that is a first flat colour is considered equivalent to another fill compositing sequence that is a second flat colour where the difference between the first and second flat colours is within an acceptable threshold. Other methods of establishing equivalence between fill compositing sequences are known to those skilled in the art.
The fill composting sequence resolving module 750 next determines in sub-step 1545 whether an equivalent optimised equivalent fill compositing sequence was found among the set of known fill compositing sequences 740. If an equivalent optimised equivalent fill compositing sequence was not found, processing proceeds to sub-step 1546, where the current optimised equivalent fill compositing sequence is added to the 688328 1 -36known fill compositing sequence table 740. In addition, the reference of the just-added optimised equivalent fill compositing sequence is set to NULL to indicate that the optimised equivalent fill compositing sequence does not have a different optimised equivalent fill compositing sequence associated with it.
From sub-step 1546, or if it is determined in sub-step 1545 that an equivalent optimised equivalent fill compositing sequence was found among the set of known fill compositing sequences 740, in sub-step 1547 that follows the equivalent optimised equivalent fill compositing sequence is grouped together with the active fill compositing sequence in the table of known fill compositing sequences. This is done by adding a reference to the equivalent optimised equivalent fill compositing sequence (or the newly added optimised equivalent fill compositing sequence) in the OEFCSRef field of the active fill compositing sequence's entry in the set of known fill compositing sequences 740. Sub-step 1592 then ends in sub-step 1548 by returning control to sub-step 1593 in Fig. 1 c.
Referring again to sub-step 1543, if it is determined that the two fill compositing sequences are the same, then in sub-step 1549 the reference of the active fill compositing sequence is set to NULL to indicate that the active fill compositing sequence has no optimised fill compositing sequence associated with it before sub-step 1592 returns in sub-step 1548.
Sub-step 1565 in Fig. lb of associating the active fill compositing sequence with the current edge is now described in more detail with reference to Fig. lie wherein a schematic flow diagram of sub-step 1565 is shown.
In one implementation each edge has an edge behaviour table that contains one attribute. The attribute is a reference to the active fill compositing sequence entry in the set of known fill compositing sequences 740. Table 5 shows an implementation of an 688328 -37edge behaviour table. The contents of the edge behaviour table may include other attributes.
Lifetime Attribute 1 (FCS index) Lifetimel FCS indexi Lifetime 2 FCS indexk Lifetime 3 FCS indexl For the remainder of the edge FCS indexz Table 5 Edge Behaviour Table Sub-step 1565 starts in sub-step 1520 where the edge data creation module 755 determines whether an edge behaviour table for the edge under consideration exists in the set of edge behaviour tables 760. In the case where such an edge behaviour table does not exist, one is created and added to the set of edge behaviour tables 760 in sub-step 1524 and a variable i is set to In sub-step 1525 that follows sub-step 1524 an entry is added to the edge behaviour table at index i+1 (becoming index 0 or the first entry in this case).
In sub-step 1525 the attribute is also set to be a reference to the active fill composting sequence for this edge within the set of known fill compositing sequences 740 on the current scanline, as determined in the sub-steps of Fig. 1 c. Finally in sub-step 1525 the lifetime field of the just-added edge behaviour table entry is initialised to 1. Sub-step 1565 then returns in sub-step 1526 to sub-step 1566 in Fig. 1 lb.
If it is determined in sub-step 1520 that an edge behaviour table for the edge under consideration already exists in the set of edge behaviour tables 760 then, in sub-step 1521, the variable i is set to be the index of the last entry in the edge's edge behaviour 688328 -38table. The edge data creation module 755 then determines in sub-step 1522 whether there has been any change from the previous scanline in the attribute of this edge. If it is determined that there have been no changes then the lifetime field of this entry is incremented in sub-step 1523 before sub-step 1565 returns in sub-step 1526.
Alternatively, if it is determined in sub-step 1522 that there has been a change from the previous scanline in the attribute of this edge then sub-step 1565 proceeds to sub-step 1525 where a new entry is added to the edge behaviour table that contains as attribute a reference to the new fill compositing sequence. The lifetime field of the justadded edge behaviour table entry is also initialised to 1, before sub-step 1565 returns in sub-step 1526.
In this manner, when all the edges have been tracked down the page by the preprocessing module 700, the set of known fill compositing sequences 740 contains an entry for each unique combination of levels (and, by reference, the fills associated with these levels) that has been encountered on the page. Also, there is a grouping between equivalent fill compositing sequences within the set of known fill compositing sequences 740.
In addition, an edge behaviour table has been created for each edge and these tables are populated with an attribute that indicates which fill compositing sequence is active for every edge on each scanline. These edge behaviour tables are collected in the set of edge behaviour tables 760. It is then the role of the instruction job generator 640c (Fig. 7) to generate an instruction job 640f from the copy 735 of the edges in the main list, the set of known fill compositing sequences 740 and the set of edge behaviour tables 760. The instruction job 640f contains all the edges on the page, the associated edge behaviour tables and a table of fills as referenced by the edge behaviour table entries.
688328 -39- The table of fills contains a plurality of fills. Each fill contains sufficient data to allow the printer system 660 to determine the colour of a pixel in any region of the page.
The table of fills is derived from the set of known fill compositing sequences as created by the primitives processor 640b.
In the case where a fill compositing sequence in the set of known fill compositing sequences 740 has a corresponding optimised fill compositing sequence in the set of known fill compositing sequences 740, the instruction job generator 640c chooses the optimised equivalent fill compositing sequence when generating a corresponding fill in the instruction job 640f. Otherwise, indicated by a NULL entry in the OEFCSRef column of the fill compositing sequence table, the instruction job generator 640c chooses the fill compositing sequence itself when generating a corresponding fill in the instruction job 640f.
In the case where the result of compositing a fill compositing sequence is a flat colour, then the resultant flat colour is the optimised equivalent fill compositing sequence corresponding to the fill compositing sequence. However, an optimised equivalent fill compositing sequence will, in many cases, not be a flat colour, but will consist of one or more levels that correspond to bitmap objects, graphic objects (such as blends) and flat colours. The instruction job generator 640c may, depending on the capabilities of the printer system 660, actually composite the contributing levels within such an optimised equivalent fill compositing sequence such that an opaque fill is created. In this way the printer need not perform compositing. In the case where the printer is designed to implement compositing, then the instruction job generator 640c has the option to retain the original levels of the optimised equivalent fill compositing sequence and encode them into a fill within the instruction job 640f, thus leaving the compositing of these levels together as a task for the printer.
688328 Finally, the instruction job 640f that is generated by the instruction job generator 640c is transferred by the controlling program 640 to the printer system 660 where it is rendered to pixels.
The operations performed by the pre-processing module 700 are now further described by way of example. In a first example the use of equivalent fill compositing sequence regions are described with reference to Fig. 9 wherein a page 900, containing 3 rectangles 901, 902 and 903, is shown. The rectangle 901 is filled with Fill A, rectangle 902 is filled with Fill B, and rectangle 903 is filled with Fill A.
Fill A is a fill consisting of a flat colour with 50% transparency. Fill B is a fill of a different flat colour, again with 50% transparency. The two regions marked are filled with the result of compositing fill B over fill A. The background of the page 900 is white.
The edges in the page description are traversed in pixel sequential order. On scanline 910 edge 970 is crossed, and fill A is enabled. At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry (A+W) representing the combination of fill A with the white background.
Since this is the first time this fill compositing sequence has been encountered it is not found. The fill compositing sequence is therefore added to the known fill compositing sequence table 740.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W Table 6 Set of known fill compositing sequences 740 688328 -41- The fill compositing sequence is passed to the fill compositing sequence resolving module 750 for analysis. Fill A is a semi-transparent flat colour so the fill compositing sequence resolving module 750 determines that an optimised equivalent fill compositing sequence for is the flat colour that results from compositing the transparent colour of fill A with the white background. The resultant colour is Aw.
The fill compositing sequence resolving module 750 searches the known fill compositing sequence table 740 to see if the resulting flat colour Aw has been generated elsewhere on the page. It has not, so the flat colour Aw is added to the known fill compositing sequence table 740 as a new fill compositing sequence and both said new fill compositing sequence (Aw) and fill compositing sequence are grouped together to mark them as equivalent.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL Table 7 Set of known fill compositing sequences 740 The fill compositing sequence is associated with edge 970 by adding an entry in the edge behaviour table of edge 970 that references fill compositing sequence Pre-processing of scanline 910 continues with consideration of edge 975, which deactivates fill A. At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry (WhiteBkGnd) representing no levels being active. Since this is the first time this fill compositing sequence has been encountered it is not found. The fill compositing sequence (WhiteBkGnd) is therefore 688328 -42added to the known fill compositing sequence table 740. The fill compositing sequence 'WhiteBkGnd' is passed to the fill compositing sequence resolving module 750 for analysis. The fill compositing sequence resolving module 750 determines that the OEFCS for 'WhiteBkGnd' is also 'WhiteBkGnd'. The OEFCSRef entry is therefore ste to NULL.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL Table 8 Set of known fill compositing sequences 740 The fill compositing sequence (WhiteBkGnd) is associated with edge 975 by adding an entry in the edge behaviour table of edge 975 that references the fill compositing sequence (WhiteBkGnd).
No fills are active for the rest of the scanline 910.
Pre-processing progresses in this way until scanline 920 is reached, where edge 980 becomes active. On scanline 920 fill B is activated as edge 980 is crossed. The resultant activated fill state is encountered for the first time and added to the known fill compositing sequence table 740 in a manner similar to above so that the set of known fill compositing sequences 740 becomes: 688328 -43- Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL 3 B+W Table 9 Set of known fill compositing sequences 740 The fill compositing sequence is passed to the fill compositing sequence resolving module 750 for analysis. Fill B is a semi-transparent flat colour so the fill compositing sequence resolving module 750 determines that an optimised equivalent fill compositing sequence for is the flat colour that results from compositing the transparent colour of fill B with the white background. The resultant colour is Bw.
The fill compositing sequence resolving module 750 searches the known fill compositing sequence table 740 to see if the resulting flat colour Bw has been generated elsewhere on the page 900. As the resulting flat colour Bw has not been generated elsewhere on the page 900 the flat colour Bw is added to the known fill compositing sequence table 740 as a new fill compositing sequence and both said new fill compositing sequence (Bw) and fill compositing sequence are grouped together to mark them as equivalent.
The set of known fill compositing sequences 740 therefore becomes: 688328 -44- Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL 3 B+W 4 4 Bw NULL Table 10 Set of known fill compositing sequences 740 The fill compositing sequence is associated with edge 980 by adding an entry in the edge behaviour table of edge 980 that references fill compositing sequence Continuing across the scanline 920, edge 970 is crossed, and fill A is activated.
The pixels between edge 970 and edge 985 use fill compositing sequence At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill A, fill B, and the white background. Since the fill compositing sequence has not previously been encountered, it is added to the set of known fill compositing sequences 740, and passed to the fill resolving module 750.
The set of known fill compositing sequences 740 therefore becomes: 688328 Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL 3 B+W 4 4 Bw NULL
A+B+W
Table 11 Set of known fill compositing sequences 740 The fill compositing sequence is passed to the fill compositing sequence resolving module 750 for analysis. Fills A and B are semi-transparent flat colours so the fill compositing sequence resolving module 750 determines that an optimised equivalent fill compositing sequence for is the flat colour that results from compositing the transparent colour of fill A with the transparent colour of fill B with the white background. The resultant colour is ABw.
The fill compositing sequence resolving module 750 searches the known fill compositing sequence table 740 to see if the resulting flat colour ABw has been generated elsewhere on the page 900. As it has not, the flat colour ABw is added to the known fill compositing sequence table 740 as a new fill compositing sequence and both the new fill compositing sequence (ABw) and fill compositing sequence are grouped together to mark them as equivalent.
The set of known fill compositing sequences 740 therefore becomes: 688328 -46- Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL 3 B+W 4 4 Bw NULL A+B+W 6 6 ABw NULL Table 12 Set of known fill compositing sequences 740 The fill compositing sequence is associated with edge 970 by adding a new entry in the edge behaviour table of edge 970 that references fill compositing sequence Processing continues on scanline 920 with the consideration of edge 985. At this point, fill B is deactivated. The resultant activated fill state is now At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill A and the white background. This entry is found so processing continues without needing to add the fill compositing sequence to the set of known entries.
The fill compositing sequence is associated with edge 985 by adding a new entry in the edge behaviour table of edge 985 that references fill compositing sequence Pre-processing continues on scanline 920 with consideration of edge 975 which deactivates fill A, leaving no fills active on the scanline.
688328 -47- O The known fill compositing sequence table 740 is searched for a fill compositing a sequence entry (WhiteBkGnd) representing no levels being active. This (WhiteBkGnd) entry is found so processing continues without needing to add the fill compositing sequence (WhiteBkGnd) to the set of known entries.
The fill compositing sequence (WhiteBkGnd) is already associated with edge
C<N
0975 so no new entry is added to the edge behaviour table of edge 975, only the lifetime field is updated.
SPre-processing progresses in this way for scanline 930 and until scanline 940 is reached where edge 990 becomes active.
On scanline 940 fill A is activated as edge 990 is crossed. The resultant activated fill state already exists in the known fill compositing sequence table 740. The fill compositing sequence is therefore associated with edge 990 by adding an entry in the edge behaviour table of edge 990 that references fill compositing sequence Continuing across the scanline 940, edge 980 is crossed, and fill B is activated.
The pixels between edge 980 and edge 995 use fill compositing sequence At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill A, fill B, and the white background. As the fill compositing sequence was previously encountered on scanline 920 at edge 970, that sequence already exists in the set of known fill compositing sequences 740.
The fill compositing sequence is associated with edge 980 by adding a new entry in the edge behaviour table of edge 980 that references fill compositing sequence 688328 -48o Processing continues on scanline 940 with the consideration of edge 995. At this 0 point, fill A is deactivated. The resultant activated fill state is now At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill B and the white background. This entry is found so processing continues without needing to add the fill compositing (Ni Ssequence to the set of known entries. The fill compositing sequence is associated with edge 995 by adding a first entry in the edge behaviour table of edge 995 Sthat references fill compositing sequence Pre-processing of scanline 940 continues with consideration of edge 985 which deactivates fill B, leaving no fills active on the scanline 940. The known fill compositing sequence table 740 is searched for a fill compositing sequence entry (WhiteBkGnd) representing no levels being active. This (WhiteBkGnd) entry is found so processing continues without needing to add the fill compositing sequence (WhiteBkGnd) to the set of known entries.
The fill compositing sequence (WhiteBkGnd) is already associated with edge 985 so no new entry is added to the edge behaviour table of edge 985, only the lifetime field is updated.
When the instruction job generator 640c comes to generate the instruction job 640f using the fill compositing sequence table 740 (Table 12), only entries 1, 2, 4, and 6, being entries with NULL entries in the OEFCSRef column, will be used to generate the fill table. Edge behaviour table entries originally referencing fill compositing sequences 0, 3, and 5 in the fill compositing sequence table will instead reference fills generated from entries 1, 4, and 6 respectively.
In a second example the use of equivalent fill compositing sequence regions are described with reference to Fig. 10 wherein a page 1000, containing 2 rectangles 1080 688328 -49- O and 1090, is shown. The rectangle 1080 is filled with Fill A, and rectangle 1090, which O overlaps rectangle 1080 between scanlines 1020 and 1040, is filled with Fill B.
SFill A is a fill consisting of a flat colour with 50% transparency. Fill B is a fill of a different flat colour, with transparency also 50%. The overlap region 1095 marked 'C' is filled with the result of compositing fill A and fill B. In this example the compositing
C
Soperators are such that the operation produces pixels in region 1095 of a slightly different, Sbut visually equivalent, colour to region 1085 marked SOn scanline 1010 edge 1050 is crossed, and fill A is enabled. At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill A with the background.
Since this is the first time this fill compositing sequence has been encountered, that fill compositing sequence is not found. The fill compositing sequence is therefore added to the known fill compositing sequence table 740.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W Table 13 Set of known fill compositing sequences 740 The fill compositing sequence is passed to the fill compositing sequence resolving module 750 for analysis. Fill A is a semi-transparent flat colour so the fill compositing sequence resolving module 750 determines that an optimised equivalent fill compositing sequence for is the flat colour that results from compositing the transparent colour of fill A with the white background. The resultant colour is Aw.
The fill compositing sequence resolving module 750 searches the known fill compositing sequence table 740 to see if the resulting flat colour Aw has been generated 688328 o elsewhere on the page. As that colour has not been generated elsewhere, the flat colour 0 Aw is added to the known fill compositing sequence table 740 as a new fill compositing sequence, and both the new fill compositing sequence (Aw) and fill compositing sequence are grouped together to mark them as equivalent.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL Table 14 -Set of known fill compositing sequences 740 The fill compositing sequence is associated with edge 1050 by adding an entry in the edge behaviour table of edge 1050 that references fill compositing sequence Pre-processing on scanline 1010 continues with consideration of edge 1060, which deactivates fill A. At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry (WhiteBkGnd) representing no levels being active. Since this is the first time this fill compositing sequence has been encountered, that fill compositing sequence is not found. The fill compositing sequence (WhiteBkGnd) is therefore added to the known fill compositing sequence table 740. The fill compositing sequence 'WhiteBkGnd' is passed to the fill compositing sequence resolving module 750 for analysis. The fill compositing sequence resolving module 750 determines that the OEFCS for 'WhiteBkGnd' is also 'WhiteBkGnd'. The OEFCSRef entry is therefore ste to NULL. The set of known fill compositing sequences 740 becomes: 688328 -51 Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL Table 15 Set of known fill compositing sequences 740 The fill compositing sequence (WhiteBkGnd) is associated with edge 1060 by adding an entry in the edge behaviour table of edge 1060 that references fill compositing sequence (WhiteBkGnd).
On scanline 1020 edge 1030 is crossed, and fill B is enabled. At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill B with the background.
Since this is the first time this fill compositing sequence has been encountered, that fill compositing sequence is not found. The fill compositing sequence is therefore added to the known fill compositing sequence table 740.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL 3 B+W Table 16 Set of known fill compositing sequences 740 The fill compositing sequence is passed to the fill compositing sequence resolving module 750 for analysis. Fill B is a semi-transparent flat colour so the fill 688328 -52compositing sequence resolving module 750 determines that an optimised equivalent fill 0 compositing sequence for is a flat colour called Bw that results from compositing the colour of fill B with the background white.
The fill compositing sequence resolving module 750 searches the known fill compositing sequence table 740 to see if the resulting fill compositing sequence (Bw) has 0been generated elsewhere on the page. Because it has not, the fill compositing sequence Bw is added to the known fill compositing sequence table 740 as a new fill compositing Ssequence. Both the new fill compositing sequence (Bw) and fill compositing sequence are grouped together to mark them as equivalent.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL 3 B+W 4 4 Bw NULL Table 17 Set of known fill compositing sequences 740 The fill compositing sequence is associated with edge 1030 by adding an entry in the edge behaviour table of edge 1030 that references fill compositing sequence Continuing across scanline 1020, edge 1050 is crossed, and fill A is activated.
The pixels between edge 1050 and edge 1060 use fill compositing sequence At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill A, fill B, and 688328 -53the white background. Since the fill compositing sequence has not previously 0 been encountered, it is added to the table of known fill compositing sequences, and Spassed to the fill resolving module 750.
The set of known fill compositing sequences 740 therefore becomes: SEntry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL 2 WhiteBkGnd NULL 3 B+W 4 4 Bw NULL
A+B+W
Table 18 Set of known fill compositing sequences 740 The fill compositing sequence is passed to the fill compositing sequence resolving module 750 for analysis. Fill A and fill B are semi-transparent flat colour fills and the fill compositing sequence resolving module 750 determines that an optimised equivalent fill compositing sequence for is the flat colour that results from compositing the transparent colour of fill A with the transparent colour of fill B with the white background. The resultant colour is ABw.
The fill compositing sequence resolving module 750 searches the known fill compositing sequence table 740 for an optimised equivalent fill compositing sequence that is equivalent to the fill compositing sequence (ABw). As the fill compositing sequence Bw already appears in the known fill compositing sequence table 740, and the flat colours (ABw) and (Bw) are visually equivalent, the fill compositing sequence (ABw) is not added to the known fill compositing sequence table 740. However, both fill 688328 -54compositing sequence and fill compositing sequence Bw are grouped together 0 to mark them as equivalent.
The set of known fill compositing sequences 740 therefore becomes: Entry Fill Compositing Reference to OEFCS Sequence (OEFCSRef) 0 A+W 1 1 Aw NULL C 2 WhiteBkGnd NULL 3 B+W 4 4 Bw NULL A+B+W 4 Table 19 Set of known fill compositing sequences 740 The fill compositing sequence is associated with edge 1050 by adding an entry in the edge behaviour table of edge 1050 that references fill compositing sequence Continuing across scanline 1020, edge 1060 is crossed, and fill A is deactivated.
The pixels between edge 1060 and edge 1070 use fill compositing sequence At this point, the known fill compositing sequence table 740 is searched for a fill compositing sequence entry representing the combination of fill B and the white background. Since the particular fill compositing sequence has previously been encountered, that sequence is not added to the table of known fill compositing sequences.
The fill compositing sequence is associated with edge 1060 by adding an entry in the edge behaviour table of edge 1060 that references fill compositing sequence 688328 o Pre-processing continues with consideration of edge 1070, which deactivates fill 0 B. At this point, the known fill compositing sequence table 740 is searched for a fill Scompositing sequence entry (WhiteBkGnd) representing no levels being active. This fill compositing sequence is found, resulting in the fill compositing sequence (WhiteBkGnd) not being added to the known fill compositing sequence table 740.
C<N
The fill compositing sequence (WhiteBkGnd) is also associated with edge 1070 by adding an entry in the edge behaviour table of edge 1070 that references fill Scompositing sequence (WhiteBkGnd).
When the instruction job generator 640c comes to generate the instruction job 640f using the fill compositing sequence table 740 (Table 19), only entries 1, 2, and 4, being entries with NULL entries in the OEFCSRef column, are used to generate the fill table. Edge behaviour table entries originally referencing fill compositing sequences 0, 3, and 5 in the fill compositing sequence table will instead reference fills generated from entries 1, 4, and 4 respectively.
Referring again to system 600 (Fig. by describing the operation of the pixel rendering system 300 in detail, computer programs are also implicitly disclosed in that it would be apparent to the person skilled in the art that the individual steps described herein are to be put into effect by computer code. The computer programs are not intended to be limited to any particular control flow.
Such computer programs may be stored on any computer readable medium. The computer readable medium may include storage devices such as magnetic or optical disks, memory chips, or other storage devices suitable for interfacing with a processor.
The computer programs when loaded and executed on such processors results in the respective component parts of system 600 described herein.
688328 -56- 0 It is also noted that the foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without Sdeparting from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
5 In the context of this specification, the word "comprising" means "including C€3 principally but not necessarily solely" or "having" or "including", and not "consisting N only of'. Variations of the word "comprising", such as "comprise" and "comprises" have Scorrespondingly varied meanings.
688328

Claims (12)

1. A method of generating a representation of a page to be rendered, said page comprising one or more graphic objects, each graphic object being defined by two or more edges bounding a primitive fill, said method comprising the steps of: partitioning said page into a plurality of regions, each region having a corresponding sequence of primitive fills to be composited to generate a corresponding fill for said region upon rendering; for at least one of said regions, determining an optimised equivalent fill sequence that results, when composited, in substantially the same fill as said corresponding fill; and representing each region such that at least one further region references said optimised equivalent fill sequence, wherein the fill sequence corresponding to said further region is different from said optimised equivalent fill sequence.
2. The method according to claim 1, wherein the fill corresponding to said further region is visually equivalent to the fill corresponding to said optimised equivalent fill sequence.
3. The method according to claim 1, wherein said optimised equivalent fill sequence consists of fewer compositing operations than the fill sequence corresponding to said at least one region.
4. The method according to claim 3, wherein said optimised equivalent fill sequence is obtained by removing at least two opposing fills from said fill sequence. 688328 -58- The method according to claim 1 or 3, wherein said optimised equivalent fill o sequence consists of a single opaque fill.
6. The method according to claim 5, wherein said single opaque fill is drawn from the group consisting of: t", a flat colour; a linear colour blend; and a bitmap image.
7. The method according to claim 1, wherein said further region is represented as an entry referenced by a first edge forming part of the boundary of said further region, said entry comprising: a reference to said optimised equivalent fill sequence, and lifetime data indicating a set of scanlines over which said first edge bounds said further region.
8. The method according to claim 1, wherein said further region is represented in said representation as an edge segment forming part of the boundary of the further region, said edge segment referencing said optimised equivalent fill sequence.
9. A computer program for generating a representation of a page to be rendered, said page comprising one or more graphic objects, each graphic object being defined by two or more edges bounding a primitive fill, said program comprising: 688328 -59- code for partitioning said page into a plurality of regions, each region having a corresponding fill sequence of primitive fills to be composited to generate a corresponding fill for said region upon rendering; for at least one of said regions, code for determining an optimised equivalent fill sequence that results, when composited, in substantially the same fill as said corresponding fill; and code for representing each region such that at least one further region references said optimised equivalent fill sequence wherein the fill sequence corresponding to said further region is different from said optimised equivalent fill sequence. Apparatus for generating a representation of a page to be rendered, said page comprising one or more graphic objects, each graphic object being defined by two or more edges bounding a primitive fill, said apparatus comprising: means for partitioning said page into a plurality of regions, each region having a corresponding fill sequence of primitive fills to be composited to generate a corresponding fill for said region upon rendering; for at least one of said regions, means for determining an optimised equivalent fill sequence that results, when composited, in substantially the same fill as said corresponding fill; and means for representing each region such that at least one further region references said optimised equivalent fill sequence wherein the fill sequence corresponding to said further region is different from said optimised equivalent fill sequence. 688328
11. A representation of a page to be rendered, said page comprising one or more graphic objects, each graphic object being defined by two or more edges bounding a primitive fill, said representation comprising: data identifying a plurality of regions; a corresponding fill for each region to be generated upon rendering by the compositing of a corresponding sequence of primitive fills wherein, for at least one of said regions, said sequence of primitive fills is an optimised equivalent fill sequence that results, when composited, in substantially the same fill as said corresponding fill, and wherein at least one further region references said optimised equivalent fill sequence wherein the fill sequence corresponding to said further region is different from said optimised equivalent fill sequence.
12. A method of generating a representation of a page substantially as described herein with reference to Figs. 6 to 1 le of the accompanying drawings.
13. A representation of a page to be rendered, said representation being substantially as described herein with reference to Figs. 6 to 1 Ie of the accompanying drawings.
14. A computer program substantially as described herein with reference to Figs. 6 to 11 e of the accompanying drawings. DATED this 20th Day of NOVEMBER 2004 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant SPRUSON&FERGUSON 688328
AU2004240230A 2004-12-14 2004-12-20 Caching and optimisation of compositing Abandoned AU2004240230A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
AU2004240230A AU2004240230A1 (en) 2004-12-20 2004-12-20 Caching and optimisation of compositing
US11/275,137 US7561303B2 (en) 2004-12-14 2005-12-14 Caching and optimisation of compositing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2004240230A AU2004240230A1 (en) 2004-12-20 2004-12-20 Caching and optimisation of compositing

Publications (1)

Publication Number Publication Date
AU2004240230A1 true AU2004240230A1 (en) 2006-07-06

Family

ID=36660010

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2004240230A Abandoned AU2004240230A1 (en) 2004-12-14 2004-12-20 Caching and optimisation of compositing

Country Status (1)

Country Link
AU (1) AU2004240230A1 (en)

Similar Documents

Publication Publication Date Title
US7561303B2 (en) Caching and optimisation of compositing
US9779335B2 (en) Parallel processing page description language data
EP1577838B1 (en) A method of rendering graphical objects
EP1528510B1 (en) Advanced Shape Processor
US5852679A (en) Image processing apparatus and method
US20070206012A1 (en) Efficient rendering of page descriptions
WO2007064851A2 (en) System to print artwork containing transparency
US8723884B2 (en) Scan converting a set of vector edges to a set of pixel aligned edges
US6429950B1 (en) Method and apparatus for applying object characterization pixel tags to image data in a digital imaging device
JP2013505854A (en) How to create a printable raster image file
US20090091564A1 (en) System and method for rendering electronic documents having overlapping primitives
US8373903B2 (en) Efficient implementation of raster operations flow
EP0575134B1 (en) Method and apparatus for printing according to a graphic language
KR100477777B1 (en) Method, system, program, and data structure for generating raster objects
AU2004240230A1 (en) Caching and optimisation of compositing
AU2005203541A1 (en) Multiple image consolidation in a printing system
AU2004237908A1 (en) Apparatus for printing overlapping objects
JP4467715B2 (en) Image output control apparatus and method
US7164483B2 (en) Optimal approach to perform raster operations
JP4630081B2 (en) Image processing apparatus, image forming apparatus, drawing command generation method, drawing command generation program, and recording medium recording drawing command generation program
AU2006200899A1 (en) Efficient rendering of page descriptions
JPH11188928A (en) Color image processor and processing method
AU2008264239A1 (en) Text processing in a region based printing system

Legal Events

Date Code Title Description
DA3 Amendments made section 104

Free format text: THE NATURE OF THE AMENDMENT IS: AMEND THE NAME OF THE APPLICANT TO CANON KABUSHIKI KAISHA

MK1 Application lapsed section 142(2)(a) - no request for examination in relevant period