AU2011201358A1 - Shading functions - Google Patents

Shading functions Download PDF

Info

Publication number
AU2011201358A1
AU2011201358A1 AU2011201358A AU2011201358A AU2011201358A1 AU 2011201358 A1 AU2011201358 A1 AU 2011201358A1 AU 2011201358 A AU2011201358 A AU 2011201358A AU 2011201358 A AU2011201358 A AU 2011201358A AU 2011201358 A1 AU2011201358 A1 AU 2011201358A1
Authority
AU
Australia
Prior art keywords
function
shading
stop
value
piecewise linear
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
AU2011201358A
Inventor
Sergey Derevyanko
David Karlov
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 AU2011201358A priority Critical patent/AU2011201358A1/en
Publication of AU2011201358A1 publication Critical patent/AU2011201358A1/en
Abandoned legal-status Critical Current

Links

Abstract

SHADING FUNCTIONS 5 Disclosed is a method of rendering a graphical object. The graphical object is filled with a parametric shading defined by a function. The method determines (251, 253, 255) a type of the function of the parametric shading of the object. The method converts the shading of the object to a stop-based representation (400, 500, 600) if the type of the function indicates that the function is composed of piecewise linear parts. The stop-based 10 representation comprises a set of stop points, each stop point having position information and colour information.

Description

S&F Ref: 983761 AUSTRALIA PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address Canon Kabushiki Kaisha, of 30-2, Shimomaruko 3 of Applicant : chome, Ohta-ku, Tokyo, 146, Japan Actual Inventor(s): David Karlov Sergey Derevyanko Address for Service: Spruson & Ferguson St Martins Tower Level 35 31 Market Street Sydney NSW 2000 (CCN 3710000177) Invention Title: Shading functions The following statement is a full description of this invention, including the best method of performing it known to me/us: 5845c(3446228_1) SHADING FUNCTIONS TECHNICAL FIELD The current invention relates to the field of object rendering and, in particular, to rendering page description language objects efficiently on high-speed rendering hardware. BACKGROUND 5 Graphics packages are currently available for rendering images such as printable pages to printers, display screens, or for output to software files to be stored in storage devices. Some of these graphics packages utilise a high-level page description language for effecting the layout of the printed pages. These graphics packages typically comprise a rendering system, which converts the high-level page description of the page layout into 10 pixel data that can be used as raster data to be printed or displayed. Computer-generated images are typically made up of many different components or graphical elements which are rendered and composited together to create a final image. The rendering and compositing may be performed by special-purpose hardware, or by software running on a general computer system or a special-purpose computer system, such 15 as a microprocessor inside a printer. These graphical elements are processed by a document interpreter within the rendering system, which sends drawing commands across a drawing interface. From the drawing commands, a final description of the page to be printed is generated, which comprises a description of each graphical element. Examples of graphical elements include text strings, paths, shadings, and images. This final 20 description is called a display list. The display list is then spooled (i.e. transferred) to a print engine in the target printer. Drawing elements can be defined with great flexibility in many page description languages (PDLs), such as Portable Document Format (PDF) manufactured and markets by 3445531_1 983761_specilodge -2 Adobe Systems Inc. of U.SA. This is particularly true for shading drawing elements. In PDF, shadings (smooth gradations of colour or intensity over an area) come in seven different varieties, each with a myriad of options affecting the appearance of the shading, and each defined by an underlying function that can be one of four different types, again 5 each having a host of options. The function types include sampled (where the function is defined by arbitrary values in a sample table), exponential (where the function is defined as an exponential curve of given exponent between two given end points), stitching (where the function is defined as a combination of one or more other functions), and PostScript calculator (where the function is defined using an arbitrary combination of arithmetical and 10 logical operations). Two shading types are of particular relevance, being similar in concept, and appearing by far the most often in PDF documents. An axial shading is a varying colour along a linear path between two endpoints. The colour at any point on the path also extends an infinite distance perpendicular to that path on both sides. Underlying the 15 definition of the shading is a function. At any point along the linear path, the colour of the shading is defined by the output value of a function, where the input parameter of the function is the relative position of the point between the two endpoints. Such a function is called a parametric function, thereby giving a parametric shading. A radial shading defines a colour blend between two circles, and is also defined by 20 a parametric function, and is therefore also a parametric shading. As a position varies from a starting to an ending position along a straight line, the colour of the shading varies according to the function, and the size of the circle to be painted using the given colour varies linearly from the size of the starting circle to the size of the ending circle. A radial shading can thus be used to emulate a three-dimensional cylindrical shape (if the starting 3445531_1 983761_speci_lodge -3 and ending circles are of equal size); a conical shape (if either the starting or ending circle has a radius of zero and lies outside the other circle); or a spherical shape (if either the starting or ending circle has a radius of zero and lies within the other circle). All PDF shading types, as well as their underlying functions, are explained in full 5 detail in the Adobe Portable Document Format Reference. An advantage of this level of flexibility is that drawing applications can present the same flexibility to the user, such as a graphic artist, and capture the intent of the user easily using a direct PDL representation. A drawback of this flexibility is that to render such a page description to a display or printing device, the underlying renderer requires either a 10 comparable level of flexibility to the PDL, or the complex PDL representation must be converted to a simplified representation. Simplification in this context does not imply a lossy or approximate technique, but neither does simplification exclude such techniques. Simplification here means moving towards a more primitive or more highly constrained representation. 15 A first simplification option, of supporting the PDL format natively in the renderer, has been used in an architecture with no intermediate format. In such an architecture, the PDL Interpreter is tightly coupled with the renderer, and no additional cost related to complexity is incurred by handling all shading varieties natively. However, such an architecture has significant limitations. The choice of rendering algorithm is typically 20 limited to a variant of the well-known Painter's algorithm. The system cannot easily use advanced algorithms such as pixel sequential rendering, because any algorithm in which an object can be accessed out of sequence from the original PDL representation generally implies the existence of an intermediate representation. Also, since significant aspects of functionality such as rendering do not exist as separate components in this architecture, the 3445531_1 983761_speci_lodge -4 development and maintenance costs for the whole system would essentially be duplicated if support for a different PDL were required. Thus, it is generally not cost-effective to develop high-speed rendering hardware based on such an architecture, and the rendering algorithm is generally implemented in software. These factors all limit the performance of 5 such a system to a relatively low grade. A second simplification option, of converting the complex PDL representation to a simplified representation, frees the system from any restriction on rendering architecture or choice of rendering algorithm (that is, it enables a modular rendering architecture), and is well suited to a high-speed hardware renderer. One way that this option has been adopted 10 in present-day rendering systems is to convert the shading to a bitmap image within the PDL interpreter, and supply the bitmap as a drawing instruction in the display list. However, if the shading is up-scaled by an independent processing step, the bitmap image is not always an accurate representation of the shading. In addition, bitmap images consume a large amount of memory, and incur a performance penalty when performing 15 processing such as colour conversion that is typically required in such a system. Super sampling the shading to an even higher resolution image is one workaround, but brings a sharp increase to the already high memory and computational resource requirements. Techniques have been developed to mitigate this memory and performance burden, including exploitation of symmetry in shadings, and producing bitmap images at lower 20 than output resolution, relying on image interpolation and the smoothness of the original shading function to produce a visually pleasing result. However, if the original shading function has discontinuities or sharp fluctuations, such optimisations can produce noticeable errors in the output. 3445531_1 983761_speci_lodge -5 Another way in which this second option has been implemented is to segment the shading into a set of regions, usually disjoint, whose fills can be described using a simpler primitive, such as a simpler shading definition, or a constant colour. However, such techniques cannot easily be applied to many common types of shadings such as radial 5 shadings, and, being approximations, are imperfect. Common processing steps such as up scaling or colour conversion can further magnify the visual errors. SUMMARY It is an object of the present invention to substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements. 10 Disclosed are arrangements, referred to as Piecewise Linear Representation Conversion (PLRC) arrangements, which seek to address the above problems by converting suitable shadings into a simplified and exact stop-based piecewise linear representation that can be supplied natively to high-speed rendering hardware in a modular rendering architecture. 15 According to one aspect of the present disclosure, there is provided a method of rendering a graphical object, said graphical object filled with a parametric shading defined by a function, the method comprising the steps of: determining a type of the function of the parametric shading of the object; converting the shading of the object to a stop-based representation if the type of the 20 function indicates that the function is composed of piecewise linear parts, wherein the stop based representation comprises a set of stop points, each stop point having position information and colour information; and rendering the stop-based representation in a hardware renderer. 3445531_1 983761_specilodge -6 Preferably, in a PDF implementation, a function type of Exponential with an exponent of 1.0 indicates that the function is composed of piecewise linear parts. Alternatively, a function type of Sampled with linear interpolation and equal sampling size in all dimensions indicates that the function is composed of piecewise linear 5 parts. Alternatively, a function type of Stitching whose sub-functions are each composed of piecewise linear parts indicates that the function is composed of piecewise linear parts. Desirably the parametric shading is an axial shading or a radial shading. Other aspects are also disclosed. 10 BRIEF DESCRIPTION OF THE DRAWINGS At least one embodiment of the present invention will now be described with reference to the following drawings, in which: Figs. 1A and 1B collectively form a schematic block diagram of a general purpose computing system in which the PLRC arrangements to be described may be implemented; 15 Figs. 2A and 2B collectively show a flow diagram depicting the process performed by the shading checker 750 of Fig. 7 for determining piecewise linearity of shadings and counting the number of piecewise linear parts, according to one PLRC arrangement; Fig. 3 is a flow diagram depicting a top-level process for generating a stop list for a piecewise linear shading according to one PLRC arrangement; 20 Fig. 4 is a flow diagram depicting a sub-process for generating a stop list for a part of a piecewise linear shading defined by a stitching function, according to one PLRC arrangement; 3445531_1 983761_speci lodge -7 Fig. 5 is a flow diagram depicting a sub-process for generating a stop list for a part of a piecewise linear shading defined by an exponential function, according to one PLRC arrangement; Fig. 6 is a flow diagram depicting a sub-process for generating a stop list for a part 5 of a piecewise linear shading defined by a sampled function, according to one PLRC arrangement; Fig. 7 is a schematic block diagram of a data-processing architecture according to a PLRC arrangement; Fig. 8 is a flow diagram depicting a process performed by the document interpreter 10 710 of Fig. 7 for generating drawing commands according to a PLRC arrangement; and Fig. 9 shows an example shading function that is used to illustrate the PLRC arrangements herein described. DETAILED DESCRIPTION INCLUDING BEST MODE It is to be noted that the discussions contained in the "Background" section and that 15 above relating to prior art arrangements relate to devices which form public knowledge through their use. Such discussions should not be interpreted as a representation by the present inventor(s) or the patent applicant that such devices in any way form part of the common general knowledge in the art. Where reference is made in any one or more of the accompanying drawings to steps 20 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. 3445531_1 983761_specilodge -8 Figs. 1A and 1B collectively form a schematic block diagram of a general purpose computer system 100, upon which the various PLRC arrangements described may be practiced. As seen in Fig. 1A, the computer system 100 is formed by a computer module 101, 5 input devices such as a keyboard 102, a mouse pointer device 103, a scanner 126, a camera 127, and a microphone 180, and output devices including the printer 115, a display device 114 and loudspeakers 117. An external Modulator-Demodulator (Modem) transceiver device 116 may be used by the computer module 101 for communicating to and from a communications network 120 via a connection 121. The network 120 may be a 10 wide-area network (WAN), such as the Internet or a private WAN. Where the connection 121 is a telephone line, the modem 116 may be a traditional "dial-up" modem. Alternatively, where the connection 121 is a high capacity (eg: cable) connection, the modem 116 may be a broadband modem. A wireless modem may also be used for wireless connection to the network 120. 15 The computer module 101 typically includes at least one processor unit 105, and a memory unit 106 for example formed from semiconductor random access memory (RAM) and semiconductor read only memory (ROM). The module 101 also includes an number of input/output (/0) interfaces including an audio-video interface 107 that couples to the video display 114, loudspeakers 117 and microphone 180, an I/O interface 113 for the 20 keyboard 102, mouse 103, scanner 126, camera 127 and optionally a joystick (not illustrated), and an interface 108 for the external modem 116 and printer 115. In some implementations, the modem 116 may be incorporated within the computer module 101, for example within the interface 108. The computer module 101 also has a local network interface 111 which, via a connection 123, permits coupling of the computer system 100 to 3445531_1 983761_speci_lodge -9 a local computer network 122, known as a Local Area Network (LAN). As also illustrated, the local network 122 may also couple to the wide network 120 via a connection 124, which would typically include a so-called "firewall" device or device of similar functionality. The interface 111 may be formed by an Ethernet circuit card, a 5 BluetoothTM wireless arrangement or an IEEE 802.11 wireless arrangement. The interfaces 108 and 113 may afford either or both of serial and parallel connectivity, the former typically being implemented according to the Universal Serial Bus (USB) standards and having corresponding USB connectors (not illustrated). Storage devices 109 are provided and typically include a hard disk drive (HDD) 110. Other storage 10 devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive 112 is typically provided to act as a non-volatile source of data. Portable memory devices, such optical disks (eg: CD-ROM, DVD), USB-RAM, and floppy disks for example may then be used as appropriate sources of data to the system 100. The components 105 to 113 of the computer module 101 typically communicate via 15 an interconnected bus 104 and in a manner which results in a conventional mode of operation of the computer system 100 known to those in the relevant art. Examples of computers on which the described arrangements may be practised include IBM-PC's and compatibles, Sun Sparcstations, Apple MacTM or alike computer systems evolved therefrom. 20 The PLRC methods may be implemented using the computer system 100 wherein the processes of Figs. 2-6 and 8, to be described, may be implemented as one or more software application programs 133 executable within the computer system 100. In particular, the steps of the PLRC methods are effected by instructions 131 in the software 133 that are carried out within the computer system 100. The software 3445531_1 983761_specilodge -10 instructions 131 may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the PLRC methods and a second part and the corresponding code modules manage a user interface between the first part and 5 the user. The software 133 is generally loaded into the computer system 100 from a computer readable medium, and is then typically stored in the HDD 110, as illustrated in Fig. 1A, or the memory 106, after which the software 133 can be executed by the computer system 100. In some instances, the PLRC application programs 133 may be supplied to the 10 user encoded on one or more CD-ROM 125 and read via the corresponding drive 12 prior to storage in the memory 110 or 106. Alternatively the PLRC software 133 may be read by the computer system 100 from the networks 120 or 122 or loaded into the computer system 100 from other computer readable media. Computer readable storage media refers to any storage medium that participates in providing instructions and/or data to the 15 computer system 100 for execution and/or processing. Examples of such storage media include floppy disks, magnetic tape, CD-ROM, a hard disk drive, a ROM or integrated circuit, USB memory, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the computer module 101. Examples of computer readable transmission media that may also 20 participate in the provision of software, application programs, instructions and/or data to the computer module 101 include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like. 3445531_1 983761_specilodge - 11 The second part of the PLRC application programs 133 and the corresponding code modules mentioned above may be executed to implement one or more graphical user interfaces (GUls) to be rendered or otherwise represented upon the display 114, for example. Through manipulation of typically the keyboard 102 and the mouse 103, a user 5 of the computer system 100 and the PLRC application may manipulate the interface in a functionally adaptable manner to provide controlling commands and/or input to the applications associated with the GUI(s). Other forms of functionally adaptable user interfaces may also be implemented, such as an audio interface utilizing speech prompts output via the loudspeakers 117 and user voice commands input via the microphone 180. 10 Fig. 1B is a detailed schematic block diagram of the processor 105 and a "memory" 134. The memory 134 represents a logical aggregation of all the memory devices (including the HDD 110 and semiconductor memory 106) that can be accessed by the computer module 101 in Fig. 1A. When the computer module 101 is initially powered up, a power-on self-test 15 (POST) program 150 executes. The POST program 150 is typically stored in a ROM 149 of the semiconductor memory 106. A program permanently stored in a hardware device such as the ROM 149 is sometimes referred to as firmware. The POST program 150 examines hardware within the computer module 101 to ensure proper functioning, and typically checks the processor 105, the memory (109, 106), and a basic input-output 20 systems software (BIOS) module 151, also typically stored in the ROM 149, for correct operation. Once the POST program 150 has run successfully, the BIOS 151 activates the hard disk drive 110. Activation of the hard disk drive 110 causes a bootstrap loader program 152 that is resident on the hard disk drive 110 to execute via the processor 105. This loads an operating system 153 into the RAM memory 106 upon which the operating 3445531 1 983761_specilodge - 12 system 153 commences operation. The operating system 153 is a system level application, executable by the processor 105, to fulfil various high level functions, including processor management, memory management, device management, storage management, software application interface, and generic user interface. 5 The operating system 153 manages the memory (109, 106) in order to ensure that each process or application running on the computer module 101 has sufficient memory in which to execute without colliding with memory allocated to another process. Furthermore, the different types of memory available in the system 100 should be used properly so that each process can run effectively. Accordingly, the aggregated memory 134 10 is not intended to illustrate how particular segments of memory are allocated (unless otherwise stated), but rather to provide a general view of the memory accessible by the computer system 100 and how such is used. The processor 105 includes a number of functional modules including a control unit 139, an arithmetic logic unit (ALU) 140, and a local or internal memory 148, 15 sometimes called a cache memory. The cache memory 148 typically includes a number of storage registers 144 - 146 in a register section. One or more internal buses 141 functionally interconnect these functional modules. The processor 105 typically also has one or more interfaces 142 for communicating with external devices via the system bus 104, using a connection 118. 20 The PLRC application program 133 includes a sequence of instructions 131 that may include conditional branch and loop instructions. The program 133 may also include data 132 which is used in execution of the program 133. The instructions 131 and the data 132 are stored in memory locations 128-130 and 135-137 respectively. Depending upon the relative size of the instructions 131 and the memory locations 128-130, a 3445531_1 983761_specilodge - 13 particular instruction may be stored in a single memory location as depicted by the instruction shown in the memory location 130. Alternately, an instruction may be segmented into a number of parts each of which is stored in a separate memory location, as depicted by the instruction segments shown in the memory locations 128-129. 5 In general, the processor 105 is given a set of instructions which are executed therein. The processor 105 then waits for a subsequent input, to which it reacts to by executing another set of instructions. Each input may be provided from one or more of a number of sources, including data generated by one or more of the input devices 102, 103, data received from an external source across one of the networks 120, 122, data retrieved 10 from one of the storage devices 106, 109 or data retrieved from a storage medium 125 inserted into the corresponding reader 112. The execution of a set of the instructions may in some cases result in output of data. Execution may also involve storing data or variables to the memory 134. The disclosed PLRC shading conversion arrangements may use input variables 154 15 that are stored in the memory 134 in corresponding memory locations 155-158. Examples of input variables 154 that may be used in the disclosed PLRC arrangements include: - an input image 1301. The PLRC arrangements produce output variables 161 that are stored in the memory 134 in corresponding memory locations 162-165. Examples of output variables 20 161 that may be used in the disclosed PLRC arrangements include: - pixel data 713. Intermediate variables 168 may be stored in memory locations 159, 160, 166 and 167. Examples of intermediate variables 168 that may be used in the disclosed PLRC arrangements include: 3445531_1 983761_specilodge - 14 - drawing commands 711; - shading objects 714 and 716; - number of stop points 715; - stop lists 717; 5 - display list elements 770; and - display lists 712. The register section 144-146, the arithmetic logic unit (ALU) 140, and the control unit 139 of the processor 105 work together to perform sequences of micro-operations needed to perform "fetch, decode, and execute" cycles for every instruction in the 10 instruction set making up the PLRC program 133. Each fetch, decode, and execute cycle comprises: (a) a fetch operation, which fetches or reads an instruction 131 from a memory location 128; (b) a decode operation in which the control unit 139 determines which 15 instruction has been fetched; and (c) an execute operation in which the control unit 139 and/or the ALU 140 execute the instruction. Thereafter, a further fetch, decode, and execute cycle for the next instruction may be executed. Similarly, a store cycle may be performed by which the control unit 139 20 stores or writes a value to a memory location 132. Each step or sub-process in the processes of Figs. 2-6 and 8 is associated with one or more segments of the PLRC program 133, and is performed by the register section 144 147, the ALU 140, and the control unit 139 in the processor 105 working together to 3445531_1 983761_speci_lodge -15 perform the fetch, decode, and execute cycles for every instruction in the instruction set for the noted segments of the program 133. The PLRC methods may alternatively be implemented in dedicated hardware such as one or more gate arrays and/or integrated circuits performing the PLRC functions or sub 5 functions. Such dedicated hardware may also include graphic processors, digital signal processors, or one or more microprocessors and associated memories. If gate arrays are used, the process flow charts in Figs. 2-6 and 8 may be converted to Hardware Description Language (HDL) form. This HDL description may be converted to a device level netlist which is used by a Place and Route (P&L) tool to produce a file which is downloaded to 10 the gate array to program the gate array with a hardware design specified in the HDL description. Fig. 7 is a functional block diagram of a data processing architecture 700 configured for implementation of Piecewise Linear Representation Conversion (PLRC) for document printing, otherwise referred to herein as a PLRC arrangement. The data 15 processing architecture 700 may be implemented as at least part of the PLRC application program 133 referred to above and may be invoked when a printing function is selected by another application (not shown) executing on the computer system 100. That other application may be any source of printable data comprising an image 1301, such as a word processing application, a browser, a graphics drawing package, and so forth. The image 20 1301 typically includes shading and in the preferred implementations, the image 1301 is an image in the PDF format. The data processing architecture 700 operates on a page description 1303 of the page comprising an image 1301 that is to be printed. In this regard, the data processing architecture 700 may execute within the computer module 101 to interpret and render the 3445531_1 983761_speci_lodge - 16 page description 1303 incorporating the image 1301 for outputting bitmap colour channel data for reproduction on the printer 115. Alternatively the data processing architecture 700 may execute within the printer 115 which receives the page description 1303 from the computer module 101. In such an implementation, the printer 115 performs the document 5 interpreting and rendering as part of the reproduction process. In the data processing architecture 700 the page description 1303 of the document comprising the image 1301 that is submitted for printing is received from the computer module 101 and interpreted by a document interpreter 710. The document interpreter 710 generates drawing commands 711 to a display list creator 720. The display list creator 720 10 translates the drawing commands 711 into display list elements 770. Using the elements 770, the display list creator 720 generates a display list 712 for a single page which is sent to a renderer 730 for rendering. The Display List 712 is in a format that can be easily processed by the renderer 730. The renderer 730 processes the Display List 712 and generates pixel data 713 which is provided to a print engine 740 in the printer 115 for 15 printing on hard copy. The document interpreter 710, the display list creator 720 and the renderer 730 may be implemented as software modules in the software application 133 executing on the computer module 101, or as a separate purpose-designed hardware (or hybrid hardware/software) module executing on the printer 115. Fig. 8 is a flow diagram depicting a process 800 performed by the document 20 interpreter 710 for generating the drawing commands 711. The process 800 in Fig. 8 is performed, in the present PLRC implementation, by the processor 105 as directed by the PLRC software application 133 executing on the computer 101. The drawing command generation process 800 operates on individual objects with the image 1301 and begins in step 851 by testing whether image 1301 contains any more 3445531_1 983761_specilodge - 17 objects that have not yet been processed. If drawing commands 711 have already been generated for all objects in the image 1301 (the NO option of step 851), the process 800 terminates (End). Otherwise (the YES option of step 851), in step 853 the next object in the image 5 1301 is interpreted. In step 855, the type of the object is tested to determine whether the object is an axial or radial shading object, being examples of parametric shadings. If the object is not a shading object, or is a shading object of a type other than axial or radial (the NO option of step 855), then in step 857, the document interpreter 710 generates a drawing command 711 for the non-shading object. The command generated corresponds to the 10 object that was interpreted. For example, as will be appreciated by those skilled in the art, a flat fill command will generated for a flat colour object; a bitmap image command will be generated for an image object, and a glyph command will be generated for a text object. If the object is an axial or radial shading object (the YES option of step 855), then the object is sent as a shading object 714 to the shading checker 750 as seen in Fig. 7. The 15 shading checker 750 checks the shading according to a process 200, described subsequently with reference to Figs. 2A and 2B, to determine whether the shading can be represented by a piecewise linear representation based on a list of stop points, also called a stop list (explained below). Where the process 200 determines that the shading may be represented as such, named herein as a "stop-based" representation the process 200 also determines 20 how many stop points will be required in such a representation. This information is then returned by the shading checker 750 to the document interpreter 710 of Fig. 7 as depicted by arrow 715. A stop point is a data structure containing a position value and a colour value. A piecewise linear gradient can be described by a set of no less than two stop points, thus 3445531_1 983761_specilodge - 18 establishing the stop-based representation. Typically, the first stop point in such a set has a position of 0.0, the final stop point has a position of 1.0, and the intermediate stop points, if any, are ordered according to their position value. Each adjacent pair of stop points subtends a region, between their respective position values over which the colour or 5 intensity of the gradient is defined, by interpolating between the colour values of the two stop points. In step 861, the results of process 200 are inspected to determine whether the shading is piecewise linear and thus composed of piecewise linear parts. If so (the YES option of step 861), then the shading is sent, as depicted by arrow 716 of Fig. 7 to the linear 10 gradient generator 760 of Fig. 7, which generates stop points in a stop list to exactly represent the shading. The linear gradient generator 760 operates according to process 300, described subsequently with reference to Fig. 3. Prior to invoking process 300, the document interpreter 710 allocates sufficient memory, for example in the RAM 106, to store the stop points that will be generated by the linear gradient generator 760. The 15 amount of memory required can be readilydetermined from the number of stop points required to represent the shading output from the process 200. After process 300 terminates, the set of stop points is returned, as depicted by an arrow 717, to the document interpreter 710, which, in step 865, generates a drawing command 711 containing the set of stop points for the current object. 20 If the shading is not piecewise linear (the NO option of step 861), then in step 867, the shading is converted to a bitmap image that approximately represents the shading object. The conversion of step 867 may be performed according to any of a number methods well known in the art. In step 869, the document interpreter 710 generates a drawing command 711 for the current object containing the generated bitmap image, as 3445531_1 983761_specilodge -19 directed by the PLRC software application 133 executing on the processor 105 of the computer 101. Following the generation of a drawing command 711 in one of steps 857, 865, or 869, in step 871 the drawing command 711 for the current object is sent to the display list 5 creator 720 of Fig. 7. Following this, in step 851, the document interpreter 710 again checks whether any further objects in the input image 1301 remain to be processed. Process 800 continues as described above until, in step 851, there are no more objects to be processed, at which time the process 800 terminates. Figs. 2A and 2B collectively show a flow diagram depicting the process 200 10 performed by the shading checker 750 of Fig. 7 for determining whether a shading object is piecewise linear, and if so, counting the number of piecewise linear parts. Process 200 is invoked from process 800 when a shading object is identified, as previously described with reference to Fig. 8. The process 200 in Figs. 2A and 2B is performed, in the present PLRC arrangement, by the processor 105 as directed by the PLRC software application 133 15 executing on the computer 101. Each shading object is defined by a function, the function being one of several possible types. The linearity checking process 200 begins in step 251 by checking the PDF function type of the shading object 714. In the presently disclosed implementation, the order in which each function type is tested is chosen arbitrarily. 20 At step 251, the process 200 tests whether the PDF function type is type 3 - that is, a stitching function. A stitching function is a PDF function that allows a number of distinct sub-functions to be treated as one combined function. If the function is not a stitching function (the NO option of step 251), then in step 253 is performed. In step 253, the process 200 tests whether the PDF function type is type 2 - that is, an exponential function. 3445531_1 983761_specilodge - 20 An exponential function is a PDF function that describes an exponential gradient between two given colours. If the function is not a stitching function or an exponential function (the NO option of step 253), then in step 255 is performed. Step 255 tests whether the PDF function type 5 is type 0 - that is, a sampled function. A sampled function is a PDF function defined by a series of samples, with the colours of points in a region between samples being determined by interpolating between the nearest sample values on each side. If the function is not a stitching function or an exponential function or a sampled function (the NO option of step 255), then the process proceeds to step 265. In step 265 the value of a variable "retval" is 10 set to 0, indicating that the function was not identified as piecewise linear. If the function is a sampled function (the YES option of step 255), then the order of the interpolation of the function is then checked in step 257. The order of the interpolation is either linear or cubic, as specified by the PDF language. In addition to checking the order of interpolation, in step 257 the number of samples in each of the two dimensions of 15 the printable document is checked. A function may be a function of more than one input variable, in which case the function (and the corresponding sample table) has more than one dimension. If the order of the interpolation is not linear, or the function has a different number of samples in some dimensions than in others (the NO option of step 257), then step 265 follows, where the value of variable retval is set to 0, indicating that the function 20 was not identified as piecewise linear. If the order of the interpolation of the function is linear, and the function has the same number of samples in each dimension (the YES option of step 257), then in step 259, the number of samples is evaluated to determine whether there are at least two samples. If there is only one sample in the sample table (the NO option of step 259), then in step 263, 3445531_1 983761_spedlodge -21 the value of variable retval is set to 2, indicating that the function is piecewise linear, and two stop points are required to represent the function. Otherwise, if there are two or more samples in the sample table (the YES option of step 259), then in step 261, the value of variable retval is set to the number of samples in the sample table, indicating that the 5 function is piecewise linear, and the number of stop points required to represent the function is equal to the number of samples in the sample table. If the function is an exponential function (the YES option of step 253), then the value of the exponent is checked in step 267. As will be familiar to those skilled in the art, when comparing a floating point value, such as the exponent, with another floating point 10 value, such as 1.0, a tolerance may be used in this comparison as appropriate according to the precision of floating point operations performed by processor 105. If the exponent is 1.0 (the YES option of step 267), then in step 269, the value of variable retval is set to 2, indicating that that the function is piecewise linear, and two stop points are required to represent the function. If the exponent is not 1.0 (the NO option of step 267), then step 265 15 follows and the value of variable retval is set to 0, indicating that the function was not identified as piecewise linear. Referring to the continuation of the flowchart on Fig. 2B, if the function is a stitching function (the YES option of step 251), then in step 271, the value of a variable c is set to 0. The variable c is an intermediate variable that is used to count the number of stop 20 points required by each sub-function of the stitching function. The total number of stop points required by the stitching function is equal to the sum of the number of stop points required by each of the sub-functions. In step 273, the processor 105 as directed by the PLRC software application 133 checks whether the next sub-function in the stitching function has already been counted. If so (the YES option of step 273), this indicates that a 3445531_1 983761_speci_lodge - 22 stitching function and its child functions form a loop, rather than a tree. This is an error condition that must be checked to ensure that process 200 terminates. In this case, in step 279, the value of variable retval is set to 0, indicating that the function was not identified as piecewise linear. 5 If the next sub-function in the stitching function has not yet been counted (the NO option of step 273), then in step 275, the process 200 is applied recursively to the sub function of the stitching function, beginning in step 251 to determine whether the sub function is of type 3. It is possible to recurse the process 200 multiple times. Care is required in the implementation of PLRC software application 133 in a stack-based 10 environment to avoid exhausting the part of the memory 106 set aside for the stack. Furthermore, although the process 200 is described in terms of recursion in this disclosure, such can alternatively be implemented using a non-recursive algorithm. An alternative implementation is therefore a non-recursive process that performs an equivalent operation to process 200. 15 After the recursive process 200 invoked in step 275 terminates, a return value (equivalent to the variable retval for the recursive process 200 of step 275) is checked in step 277. If the return value is 0, indicating that the sub-function is not piecewise linear (the YES option of step 277), then in step 279, the value of the variable retval for the (parent) process 200 is set to 0, indicating that the overall stitching function is also not 20 identified as piecewise linear. If the return value of the recursively invoked process 200 is non-zero, indicating that the sub-function is piecewise linear (the NO option of step 277), then in step 281, the value of variable c, indicating the number of stop points required so far, is incremented by an amount equal to the return value of the recursive process 200, indicating the number of 3445531_1 983761_specilodge - 23 stop points required by the sub-function. In step 283, the processor 105 as directed by the PLRC software application 133 checks whether there are any more sub-functions in the stitching function. If so (the YES option of step 283), then steps 273 to 283 are repeated on the next sub-function. When there are no more sub-functions remaining to be processed 5 (the NO option of step 283), then, in step 285, the value of variable retval is set to the value of intermediate variable c, indicating that that the function is piecewise linear, and a number of stop points equal to c is required to represent the function. After the value of variable retval is set in step 261, 263, 265, 269, 279, or 285, then in step 287, the value of variable retval is assigned as the return value of the overall 10 process 200, and the process 200 terminates. When process 200 terminates, the return value is passed to the caller. If the caller is process 200 calling itself recursively (via step 275), then the return value is received and subsequently examined in step 277. Otherwise, if process 200 is called from process 800 of Fig. 8, then the return value is received and examined in step 861. 15 Fig. 3 is a flow diagram depicting the top-level process 300 performed by the linear gradient generator 760 of Fig. 7 for generating a stop list for a piecewise linear shading. Process 300 is invoked from process 800 when a shading object is determined to be piecewise linear, as previously described with reference to Fig. 8. The process 300 in Fig. 3 is performed, in the present PLRC arrangement, by the processor 105 as directed by the 20 PLRC software application 133 executing on the computer 10 1. The process 300 may be termed a top-level stop point generation process 300 and begins in step 310 by determining the starting and ending positions of the shading function. The starting and ending positions are numerical values that subtend a range of valid position values for stop points that are generated for the current function. When process 3445531_1 983761_specilodge - 24 300 is invoked from process 800 of Fig. 8, the starting position is 0.0, and the ending position is 1.0, indicating that stop points generated by the function will be generated with position values between 0.0 and 1.0. Furthermore, the first stop point generated will have a position equal to the starting position, and the final stop point generated will have a 5 position equal to the ending position. Process 300 may be invoked by other means, in which case the starting position may have a value other than 0.0, and the ending position may have a value other than 1.0. This case will be explained in later in this description. Step 320 tests whether the PDF function type is type 3 - that is, a stitching function. If so (the YES option of step 320), then a process 400 is invoked to add stop points for the 10 stitching function. The starting and ending positions of the shading as determined in step 310 are provided to process 400. Process 300 then terminates. If the function type is not a stitching function (the NO option of step 320), then step 330 tests whether the PDF function is type 2 - that is, an exponential function. If so (the YES option of step 330), then a process 500 is invoked to add stop points for the 15 exponential function. The starting and ending positions of the shading as determined in step 310 are provided to process 500. Process 300 then terminates. If the function is not a stitching function or an exponential function (the NO option of step 330), then the PDF function type must be 0 - that is, a sampled function. If the PDF function were of any other type, the PDF function could not have been identified as 20 piecewise linear and process 300 would not have been invoked for the PDF function. Process 600 is then invoked to add stop points for the sampled function. The starting and ending positions of the shading as determined in step 310 are provided to process 600. Process 300 then terminates. 3445531_1 983761_speci_lodge - 25 Fig. 4 is a flow diagram depicting the process 400, being one performed by the linear gradient generator 760 of Fig. 7, for generating a set of stop points for a stitching function within a piecewise linear shading. Process 400 is invoked from process 300 when a stitching function is identified within a piecewise linear shading object, as previously 5 described with reference to Fig. 3. The process 400 in Fig. 4 is performed, in the present PLRC arrangement, by the processor 105 as directed by the PLRC software application 133 executing on the computer 101. The stop point generation process 400 begins in step 410 by setting a number of variables used in the process 400. A variable n is set to the number of sub-functions in the 10 stitching function; a variable s is set to the starting position as previously determined in step 310 of Fig. 3; a variable e is set to the ending position as previously determined in step 310 of Fig. 3; and a variable startbound is set to the value of s. In step 420, the PLRC software application 133 executing on the computer 101 checks whether there are at least two more sub-functions in the stitching function 15 remaining to be processed. If so (the YES option of step 420), then in step 440, the intermediate variable b is set to the value of the next element in a bounds array. The bounds array, as defined by the PDF language, dictates the boundaries of each sub-function in a stitching function. The value in the bounds array may be in any domain, as controlled by a Domain PDF element; the domain is normalised to 0.0 -> 1.0 before the bounds value 20 is used. In step 450, the endbound variable is set to be equal to s + b * (e - s). That is, endbound is set to b, the element from the bounds array, normalised to lie between s, the starting position for the function, and e, the ending position. In step 460, process 300 is recursively invoked to add stop points for the next sub-function in the stitching function. 3445531_1 983761_speci_lodge -26 In this invocation, the value of the starting position is set to the value of variable startbound, and the value of the ending position is set to the value of variable endbound. It is possible to recurse multiple times. Care is required in the implementation of PLRC software application 133 in a stack-based environment to avoid exhausting the part of the 5 memory 106 set aside for the stack. Furthermore, although processes 400 and 300 are described in terms of recursion in this disclosure, such processes 400 and 300 may alternatively be performed using a non-recursive algorithm. After the recursive process 300 invoked in step 460 terminates, then in step 470, the value of variable startbound is set to the value of variable endbound. The process 400 10 then returns to step 420 which is then repeated, to check again whether at least two more sub-functions remain to be processed in the stitching function. As long as there are two or more sub-functions remaining, steps 440 to 470 are repeated for each sub-function. When there is only one sub-function remaining (the NO option of step 420), process 400 continues at step 430. In step 430, process 300 is 15 recursively invoked to add stop points for the final sub-function in the stitching function. In this invocation, the value of the starting position is set to the value of variable startbound, and the value of the ending position is set to the value of variable e. Process 400 then terminates. Fig. 5 is a flow diagram depicting the process 500 performed by the linear gradient 20 generator 760 of Fig. 7 for generating a list of stop points for an exponential function within a piecewise linear shading. Process 500 is invoked from process 300 when an exponential function is identified within a piecewise linear shading object, as previously described with reference to Fig. 3. The process 500 in Fig. 5 is performed, in the present 3445531_1 983761_speci_lodge - 27 PLRC arrangement, by the processor 105 as directed by the PLRC software application 133 executing on the computer 101. The stop point generation process 500 begins in step 510 by adding a stop point to the stop list. The first added stop point has a position value equal to the starting position 5 for the current function, and a colour value of CO. CO is a data element of an exponential function in the PDF language that defines the function output when the input is 0. Where the shading is defined in a colour space with multiple colour components, such as RGB, CO will be a set of numbers, one per colour component. The stop generation process 500 continues in step 520 by adding another stop point to the stop list. The second added stop 10 point has a position value equal to the ending position for the current function, and a colour value of Cl. Cl is a data element of an exponential function in the PDF language that defines the function output when the input is 1. Where the shading is defined in a colour space with multiple colour components, such as RGB, Cl will be a set of numbers, one per colour component. The stop point generation process 500 then terminates. 15 Fig. 6 is a flow diagram depicting the process 600 performed by the linear gradient generator 760 of Fig. 7 for generating a list of stop points for a sampled function within a piecewise linear shading. Process 600 is invoked from process 300 when a sampled function is identified within a piecewise linear shading object, as previously described with reference to Fig. 3. The process 600 in Fig. 6 is performed, in the present PLRC 20 arrangement, by the processor 105 as directed by the PLRC software application 133 executing on the computer 101. The stop point generation process 600 begins in step 651 by setting a number of variables used in the algorithm. The variable n is set to the number of samples in the sampled function; the variable s is set to the starting position as previously determined in 3445531_1 983761_speci_lodge -28 step 310 of Fig. 3; and the variable e is set to the ending position as previously determined in step 310 of Fig. 3. In step 653, the PLRC software application 133 executing on the computer 101 then checks whether the sampled function contains only one sample; that is, whether n is equal 5 to 1. If so (the YES option of step 653), then in step 655, the sample is retrieved from the sample table. This may involve decoding the data stream of the table, looking up the value, and applying any necessary scaling or normalisation operation to the data. Two stop points are then added to the stop list. In step 657, a first stop point is added with a position value equal to the s, the starting position for the current function, and a colour value equal to the 10 current sample value. Where the shading is defined in a colour space with multiple colour components, such as RGB, the sample value will be a set of numbers, one per colour component. In step 659, a second stop point is added with a position value equal to e, the ending position for the current function, and a colour value equal to the current sample value (the same colour value as was used for the stop point added in step 657). The 15 process then terminates. If the sampled function contains more than one sample (the NO option of step 653), then each sample value is encoded as a gradient stop point and added to the stop list. In step 661, the value of intermediate variable i, which represents the index of the current sample being processed, is set to 0. In step 663, the PLRC software application 133 20 executing on the computer 101 then checks whether there are more samples to encode as stop points; that is, whether the value of variable i is less than the value of variable n. If so, then in step 665, the next sample is retrieved from the sample table. Similarly to step 655, this may involve decoding the data stream of the table, looking up the value, and applying any necessary scaling or normalisation operation to the data. 3445531_1 983761_specilodge -29 In step 667, a stop point is added to the stop list. The position of the added stop point is equal to the starting position if the sample is the first sample, the ending position if the sample is the final sample, and an intermediate position interpolated between the starting and ending positions according to the ratio of the current sample through the set of 5 samples, if the sample is neither the first sample or the final sample. In mathematical terms, the position of the stop point is equal to s + (e - s) * i / (n - 1). The colour of the added stop point is equal to the current sample value. In step 669, the value of intermediate variable i is incremented by 1, and the check of step 663 is repeated. As long as there are more samples to encode as stop points, steps 665 to 669 are repeated for each sample. 10 When all stop points have been processed, and the value of variable i is equal to the value of n, the process terminates. After process 300 and its child processes terminate, the document interpreter 710 of Fig. 7 uses the resulting stop list to create a multi-stop gradient drawing command, representing the current shading. In addition to the stop list, parameters associated with 15 parametric shading, including the shading type (axial or radial) and its geometry with respect to the current drawing are included in the drawing command, which, when complete, is sent to display list creator 720 of Fig. 7 as depicted by arrow 711. The display list creator 720 incorporates the drawing command as a display list element 770. The display list 712 is then rendered by the renderer 730 on high-speed 20 rendering hardware. Because suitable shading objects are incorporated in the display list 770 as native gradient objects rather than bitmap images, the high-speed rendering hardware processes these objects with minimal performance and memory overheads, and maximal accuracy. 3445531_1 983761_specilodge -30 The steps of process 800 of Fig. 8, as well as child processes 200, 300, 400, 500, and 600 of Figs 2-6, will now be described with reference to the example shading of Fig. 9. In this example, the input image 1301 contains a single object, comprising a greyscale axial shading 940 defined by stitching function 910. Stitching function 910 has a Bounds array 5 containing a single value, 0.7, and two sub-functions, 920 and 930. Sub-function 920 is an exponential interpolation function of exponent 1.0, with parameters CO = 0.15 and Cl = 0.85. Sampled function 930 is of order 1 (linear interpolation), and contains four samples, with values 0.7, 0.5, 0.5, and 0.0 respectively. A pictorial representation of the axial shading 940 shows the colour or intensity of the shading as the position 970 varies. Over 10 the part of the stitching function 910 defined by the exponential function 920, as the position 970 varies from 0.0 to 0.7, the intensity of the shading 940 varies smoothly from dark grey to light grey. Over the part of the stitching function 910 defined by the sampled function 930, as the position 970 varies from 0.7 to 1.0, the intensity of the shading 940 varies irregularly according to the values of the samples in the sample table. 15 Beginning with process 800 of Fig. 8, step 851 checks whether image 1301 contains more objects. There is one more object, the greyscale axial shading 940 defined by stitching function 910, and so the YES option is selected. The shading 940 is interpreted in step 853. The object is an axial shading, so the YES option of step 855 is selected. Process 200 is then invoked to check the shading 940 for piecewise linearity. 20 Referring now to Fig. 2, in step 251, the processor 105 as directed by the PLRC software application 133 checks the type of the function 910 defining the shading. The function type of function 910 is 3, a stitching function, so the YES option is selected. In step 271, the value of c is set to 0. In step 273, the next stitched sub-function 920 has not previously 3445531_1 983761_speci_lodge - 31 been counted, so the NO option is selected. Step 275 invokes process 200 recursively on first sub-function 920. In step 251, the type of the function is checked. The function type is 2, an exponential function, so the NO option of step 251 is selected, followed by the YES option 5 of step 253. The exponent is 1.0, so the YES option of step 267 is selected. In step 269, retval is set to 2, and in step 287, the value 2 is returned to step 275 of the recursive caller. The NO option of step 277 is selected, as the return value is not zero. In step 281 the value of c, currently 0, is incremented by the return value of 2, to become equal to 2. In step 283, there is one more stitched function to count, so the YES option is selected. In step 273, the 10 next stitched sub-function 930 has not previously been counted, so the NO option is selected. Step 275 invokes process 200 recursively on second sub-function 930. In step 251, the type of the function is checked. The function type is 0, a sampled function, so the NO option of step 251 is selected, followed by the NO option of step 253, and the YES option of step 255. Since the interpolation is linear, and there is only one 15 dimension in the sample table (as the shading is greyscale), the YES option of step 257 is selected. The number of samples is 4, which is greater than or equal to 2, so the YES option of step 259 is selected. In step 261, retval is set to 4, and in step 287, the value 4 is returned to step 275 of the recursive caller. The NO option of step 277 is selected, as the return value is not zero. In step 281 the value of c, currently 2, is incremented by the return 20 value of 4, to become equal to 6. In step 283, there are no more stitched functions to count, so the NO option is selected. In step 285, the value of retval is set to 6, and in step 287, the value 6 is returned to calling process 800. Returning to Fig. 8, step 861 determines that the shading 940 is piecewise linear (because a non-zero return value was encountered), and so the YES option 3445531_1 983761_specilodge - 32 is selected. Memory is allocated sufficient to store a stop list consisting of 6 stop points, and process 300 is invoked with a starting position of 0.0 and ending position of 1.0 to convert the shading to a stop list. Turning now to Fig. 3, step 310 establishes that the starting position of function 910 5 is 0.0 and the ending position is 1.0. The type of the function 910 defining the shading 940 is type 3, a stitching function, so the YES option of step 320 is selected. Process 400 is invoked to add stop points for the stitching function. With reference to Fig. 4, step 410 sets n = 2, as there are two sub-functions in the stitching function; s = 0.0; e = 1.0; and startbound = 0.0. In step 420, there are exactly 10 two more sub-functions in the stitching function, so the YES option is selected. In step 440, b is set to 0.7, and in step 450 endbound is set to 0.0 + 0.7 * (1.0 - 0.0) = 0.7. In step 460, process 300 is invoked for first sub-function 920, with starting position of 0.0 and ending position of 0.7. Returning to Fig. 3, step 310 establishes that the starting position of sub-function 15 920 is 0.0 and the ending position is 0.7. The type of the sub-function 920 is type 2, an exponential function, so the NO option of step 320 is selected, followed by the YES option of step 330. Process 500 is invoked to add stop points for the exponential function. As shown in Fig. 5, step 510 adds a first stop point 991 in Fig. 9 to the stop list at the starting position of 0.0, with colour of CO, 0.15. Step 520 then adds a second stop point 20 992 in Fig. 9 to the stop list at the ending position of 0.7, with colour of Cl, 0.85. The process 500 terminates, then the process 300 terminates, returning to step 460 of Fig. 4. In step 470, startbound is set to the value of endbound, 0.7. In step 420, there is only one more sub-function 930 to be processed in the stitching function 910, so the NO 3445531_1 983761_specilodge - 33 option is selected. In step 430, process 300 is invoked for second sub-function 930, with starting position of 0.7, and ending position of 1.0. Returning to Fig. 3 once more, step 310 establishes that the starting position of sub function 930 is 0.7 and the ending position is 1.0. The type of the sub-function 930 is type 5 0, a sampled function, so the NO option of step 320 is selected, followed by the NO option of step 330. Process 600 is invoked to add stop points for the sampled function. With reference to Fig. 6, step 651 sets n to 4, as there are four samples in the sampled function 930; s to the starting position of 0.7, and e to the ending position of 1.0. In step 653, n is equal to 4, so the NO option is selected. In step 661, the value of variable 10 i is set to 0. In step 663, i is 0 and n is 4, so the YES option is selected. In step 665, the first sample value of 0.7 is retrieved from the sample table. Step 667 adds a third stop point 993 in Fig. 9 to the stop list at position 0.7 + (1.0 - 0.7) * 0 / (4 - 1) = 0.7, with colour of the current sample value of 0.7. Step 669 increments i to a value of 1. In step 663, i is 1, and n is still 4, so the YES option is selected. In step 665, the 15 second sample value of 0.5 is retrieved from the sample table. Step 667 adds a fourth stop point 994 in Fig. 9 to the stop list at position 0.7 + (1.0 - 0.7) * 1 / (4 - 1) = 0.8, with colour of the current sample value of 0.5. Step 669 increments i to a value of 2. In step 663, i is 2, and n is still 4, so the YES option is selected. In step 665, the third sample value of 0.5 is retrieved from the sample table. Step 667 adds a fifth stop 20 point 995 in Fig. 9 to the stop list at position 0.7 + (1.0 - 0.7) * 2 / (4 - 1) = 0.9, with colour of the current sample value of 0.5. Step 669 increments i to a value of 3. In step 663, i is 3, and n is still 4, so the YES option is selected. In step 665, the fourth sample value of 0.0 is retrieved from the sample table. Step 667 adds a sixth stop 3445531_1 983761_specilodge - 34 point 996 in Fig. 9 to the stop list at position 0.7 + (1.0 - 0.7) * 3 / (4 - 1) = 1.0, with colour of the current sample value of 0.0. Step 669 increments i to a value of 4. In step 663, i is 4, and n is still 4, so the NO option is selected. The process 600 terminates, then the nested process 300 terminates, returning to step 430 of Fig. 4. Process 5 400 then terminates, and the outer process 300 terminates, returning to step 865 of process 800 in Fig. 8. Step 865 generates a multi-stop gradient drawing command using the stop list comprising of the six stop points 991, 992, 993, 994, 995, and 996 generated by the foregoing process 300 and sub-processes, some of which were invoked recursively. In step 871, the gradient drawing command is sent to display list creator 720. Finally, in step 851, 10 there are no more objects in image 1301, so the process 800 terminates. The foregoing arrangements provide an exact representation of suitable shadings in an input image 1301 to the renderer 730, thus avoiding output imperfections caused by approximations, and minimising use of CPU and memory resources. This is a significant improvement on the previous state of the art. Based on a sample size of approximately 15 46,000 PDF files representative of the output of current PDF producer applications, at least 91% of all shadings can be exactly represented as a piecewise linear shading according to the PLRC arrangements described herein. That is, the YES option of step 861 of process 800 in Fig. 8 is expected to be selected for at least 91% of all shadings. For these shadings, any scaling operation performed by the display list creator 720 or renderer 730 is a lossless 20 operation, and any colour conversion performed by the display list creator 720 or renderer 730 produces optimal output, since the input to each of these operations is a precise scalable representation of the original input shading object. The remaining 9% of shadings cannot be represented by a piecewise linear representation by the PLRC arrangements, and are therefore processed by converting the 3445531_1 983761_specilodge -35 shading to a bitmap image as per step 867. These shadings incur the memory and performance overheads associated with conversion to a bitmap, and the possibility of data errors being magnified when being scaled or colour converted by display list creator 720 or renderer 730. 5 INDUSTRIALL APPLICABILITY The arrangements described are applicable to the computer and data processing industries and particularly for the image processing industry. The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and 10 spirit of the invention, the embodiments being illustrative and not restrictive. In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including", and not "consisting only of'. Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings. 3445531_1 983761_specilodge

Claims (11)

1. A method of rendering a graphical object, said graphical object being filled with a parametric shading defined by a function, said method comprising the steps of: 5 determining a type of the function of the parametric shading of the object; converting the shading of the object to a stop-based representation if the type of the function indicates that the function is composed of piecewise linear parts, wherein the stop based representation comprises a set of stop points, each stop point having position information and colour information; and 10 rendering the stop-based representation in a hardware renderer.
2. The method of claim 1 wherein a function type of Exponential with an exponent of 1.0 indicates that the function is composed of piecewise linear parts. 15
3. The method of claim 1 wherein a function type of Sampled with linear interpolation and equal sampling size in all dimensions indicates that the function is composed of piecewise linear parts.
4. The method of claim I wherein a function type of Stitching whose sub-functions 20 are each composed of piecewise linear parts indicates that the function is composed of piecewise linear parts.
5. The method of any of claims I to 4 wherein the parametric shading is an axial shading. 3445531_1 983761_specilodge - 37
6. The method of any of claims I to 4 wherein the parametric shading is a radial shading. 5
7. A method of rendering a graphical object, said graphical object filled with a parametric shading defined by a function, the method being substantially as described herein with reference to any one of the embodiments as that embodiment is illustrated in the drawings. 10
8. A computer readable storage medium having a computer program recorded thereon, the program being executable by computer apparatus to perform the method of any one of claims 1 to 7.
9 Computer apparatus adapted to perform the method of any one of claims 1 to 7. 15
10. A printer comprising computer apparatus according to claim 9.
11. A printer comprising a storage medium according to claim 8. 20 Dated this 24 th day of March 2011 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant Spruson&Ferguson 3445531_1 983761_speci_lodge
AU2011201358A 2011-03-24 2011-03-24 Shading functions Abandoned AU2011201358A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2011201358A AU2011201358A1 (en) 2011-03-24 2011-03-24 Shading functions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2011201358A AU2011201358A1 (en) 2011-03-24 2011-03-24 Shading functions

Publications (1)

Publication Number Publication Date
AU2011201358A1 true AU2011201358A1 (en) 2012-10-11

Family

ID=46980603

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2011201358A Abandoned AU2011201358A1 (en) 2011-03-24 2011-03-24 Shading functions

Country Status (1)

Country Link
AU (1) AU2011201358A1 (en)

Similar Documents

Publication Publication Date Title
US7006101B1 (en) Graphics API with branching capabilities
US20080068383A1 (en) Rendering and encoding glyphs
JP2004295857A (en) Markup language and object model for vector graphics
KR20080023724A (en) Magnification engine and interface for computers
US20140033026A1 (en) Master page overlay
KR101618381B1 (en) Shader-based extensions for a declarative presentation framework
US9710869B2 (en) Method, system and apparatus for rendering a graphical object
US9779064B2 (en) Cloud assisted rendering
Movania OpenGL Development Cookbook
AU2009201612B2 (en) Scalable pixel coverage function-map
AU2009243440A1 (en) Optimised rendering of palette images
US7719545B1 (en) System and method for converting a vertex program to a binary format capable of being executed by a hardware graphics pipeline
US20150169508A1 (en) Obfuscating page-description language output to thwart conversion to an editable format
US9153193B2 (en) Primitive rendering using a single primitive type
AU2012244309A1 (en) Method, system and apparatus for determining position of a watermark annotation
US9218342B2 (en) Conversion of a document while retaining a format of an element of the document
AU2011201358A1 (en) Shading functions
CN104423964A (en) Method and system used for determining visualization credibility
US9514555B2 (en) Method of rendering an overlapping region
CN114048174A (en) OFD document processing method and device and electronic equipment
Flanagan Canvas Pocket Reference: Scripted Graphics for HTML5
US9135734B2 (en) Recursive application of group effects
Salehi ImageMagick Tricks Web Image Effects from the Command Line and PHP
AU2010201321A1 (en) Edge tracking in scan line batches
AU2009222480A1 (en) Efficient rendering of radial blends

Legal Events

Date Code Title Description
MK4 Application lapsed section 142(2)(d) - no continuation fee paid for the application