AU2009222480A1 - Efficient rendering of radial blends - Google Patents

Efficient rendering of radial blends Download PDF

Info

Publication number
AU2009222480A1
AU2009222480A1 AU2009222480A AU2009222480A AU2009222480A1 AU 2009222480 A1 AU2009222480 A1 AU 2009222480A1 AU 2009222480 A AU2009222480 A AU 2009222480A AU 2009222480 A AU2009222480 A AU 2009222480A AU 2009222480 A1 AU2009222480 A1 AU 2009222480A1
Authority
AU
Australia
Prior art keywords
blend
pixel
radial
point
rendering
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
AU2009222480A
Inventor
Joseph Leigh Belbin
Thomas Grant Fraser
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 AU2009222480A priority Critical patent/AU2009222480A1/en
Publication of AU2009222480A1 publication Critical patent/AU2009222480A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

S&F Ref: 921385 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): Thomas Grant Fraser Joseph Leigh Belbin Address for Service: Spruson & Ferguson St Martins Tower Level 35 31 Market Street Sydney NSW 2000 (CCN 3710000177) Invention Title: Efficient rendering of radial blends The following statement is a full description of this invention, including the best method of performing it known to me/us: 5845c(2317157_1) - 1 EFFICIENT RENDERING OF RADIAL BLENDS FIELD OF THE INVENTION The present invention relates generally to computer-based printer systems and, in particular, to multiprocessor printer systems for high-speed printing. DESCRIPTION OF BACKGROUND ART 5 Radial shadings are used by the well known Portable Document Format (PDF) to provide a smooth transition between colours across an area to be painted and without specifying the number of steps in the colour transition. Shadings of this type are described by shading dictionaries. The entries in such shading dictionaries are described in detail in Chapter 4 of the AdobeTM Portable Document Format (PDF) Reference, Fifth 10 Edition, Version 1.6 ("the PDF Reference"). There are several methods of rendering radial colour blends. One method is to create a series of rings or overlapping circles, each of which has a flat colour. The accuracy of this method typically is dependent on the number of blend rings used. In order to achieve a high accuracy, a large number of rings are required. As each of these 15 rings needs to be stored and rasterised onto the page, this method of radial blend rendering is slow and inefficient. A second method of rendering a radial blend is to represent the blend as a parametric equation. In order to determine the colour of any pixel, the quadratic equation is solved for that pixel to determine a blend coefficient. This blend coefficient 20 is used to generate the colour value for the pixel. This method of rendering produces a high quality image. However solving a quadratic equation is an expensive process to perform on a computer system, meaning that this method is slow. 2311637_1 921385 spedlodged -2 SUMMARY Dsiclosed is a method of rendering a region of a radial blend, said method comprising, for a point within said region, the steps of,: 5 determining a look-up value for the point; matching the point with a reference point, said reference point having a look-up key substantially similar to said look-up value of the point, using the stored value associated with said matched reference point to determine a blend coefficient for the given point, 10 determining the pixel colour of the point using the blend coefficient. The method may further comprise the steps, prior to determining the look-up value, of: generating a plurality of reference points on a line, said line intersecting a pair of lines which pass through the blend origin; 15 generating a value and a look-up key for each of the plurality of reference points. BRIEF DESCRIPTION OF THE DRAWINGS One or more embodiments of the invention will now be described with reference to the following drawings, in which: Fig. I A and I B collectively form a schematic block diagram of a general purpose 20 computing system and printing system in which the arrangements to be described may be implemented; Fig. 2a shows an example of a display list object with a conical radial blend fill; Fig. 2b shows how this fill would be rendered on the page if circle Ca was specified to be white, and Cb specified to be black; 2311637_1 921385_specilodged -3 Fig. 3 is an example of how a radial blend can be represented as a series of parametric circles; Fig. 4 is an example of how the colour is determined for three example pixels; Fig. 5 is an example of the use of the radial angle to determine the circle touching 5 a pixel for an example pixel; Fig 6 is a detailed view similar to Fig 5; Fig. 7 is intentionally blank/absent; Fig. 8 is a high level flow diagram showing how a radial blend object is processed and then rendered; 10 Fig. 9 is a flow diagram describing the creation of a blend instruction in more detail; Fig. 10 is a flow diagram describing the rendering of a blend instruction and the generation colour for each activated pixel; Fig. 11 A and Fig. II B collectively illustrates the transformation of a radial blend 15 object in the page coordinate to the radial shading internal space coordinate. DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION The PDF uses radial shadings to define a colour blend between two blend circles (or "boundary circles"). The PDF radial shadings are commonly used to represent three dimensional spheres and cones. Radial shadings may also be optionally extended 20 beyond boundary circles by continuing boundary colours. Radial shadings typically include a colour blend that is expressed via a parameter, t, mapped to colour values using a "shading function". Radial shadings and shading dictionaries for radial shadings are described in detail in Chapter 4 of the PDF Reference. In the current invention, the basic idea is to obtain the parameter t in an efficient 25 manner. The current invention discloses a method of storing a reference blend diagram, 2311637_1 921385_speci_lodged -4 and using the reference to determine the parameter t on a page to be rendered. The current specification discloses a method of transforming the coordinate of a point on the page to be rendered to the reference diagram, and a method of determining the relative position of the point on the page, so that a corresponding point on the reference diagram 5 can be determined. As seen in Fig. 1A, the computer system 100 is formed by a computer module 101, 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 a printer 115, a display device 114 and loudspeakers 117. An external Modulator 10 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 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 15 (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. 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 20 number of input/output (I/O) 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 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 25 computer module 101, for example within the interface 108. The computer module 101 2311637_1 921385_speci_lodged -5 also has a local network interface 111 which, via a connection 123, permits coupling of the computer system 100 to 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" 5 device or device of similar functionality. The interface 111 may be formed by an EthernetTM circuit card, a BluetoothTm wireless arrangement or an IEEE 802.11 wireless arrangement. The printer system 115 comprises a controller processor 1151 for executing a controlling program 1152, a pixel rendering apparatus 1153, and a printer engine 1154 10 coupled via a bus 1155. The printer 115 may also have a memory resident on the device itself. The pixel rendering apparatus 1153 is preferably in the form of an ASIC coupled via the bus 1155 to the controller processor 1151, and the printer engine 1154. However, the pixel rendering apparatus 1153 may also be implemented in software executed in the controller processor 1151. 15 In the computer system 100, the software application 133 creates page-based documents where each page contains objects such as text, lines, fill regions, and image data. The software application 133 sends a high level description of the page (for example a Page Description Language (PDL) file) to the controlling program 1152 executing in the controller processor 1151 of the printer system 115. The controlling 20 program 1152 then interprets this high level description of the page, and sends rendering instructions to the pixel rendering apparatus 1153. The program executing on the controller processor 1151 is also responsible for providing memory for the pixel rendering apparatus 1153, initialising the pixel rendering apparatus 1153, and instructing the pixel rendering apparatus 1153 to start rendering the page. 2311637_1 921385_spedlodged -6 The pixel rendering apparatus 1153 then uses the rendering instructions to render the page to pixels. The output of the pixel rendering apparatus 1153 is colour pixel data, which may be used by the printer engine 1154. When the controlling program 1152 receives the description of the page from the 5 software application 133 it first converts objects in the page description into an intermediate page representation called a display list. Each object in the display list generally contains a rendering instruction or fill. An object's fill indicates to the pixel rendering apparatus 1153 how to generate colour information for pixels activated by the object. Examples of types of fills are flat colours, bitmaps, linear blends and radial 10 blends. In order to generate a fill, the controlling program 1152 will convert the object specified in the page description into a fill instruction that can be used by the pixel rendering apparatus 1153 to generate pixel colour data. Each fill instruction must be executed for each pixel in which its object is active. Therefore each fill instruction may be executed a large number of times. It is crucial to 15 the performance of the pixel rendering system that the fill instruction be executed as efficiently as possible. For this reason, the controlling program 1152 will generate fill instructions which are efficient for the pixel rendering apparatus 1153 to evaluate. 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 20 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 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, 2311637_1 921385_speci_lodged -7 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 an interconnected bus 104 and in a manner which results in a conventional mode of 5 operation of the computer system 100 known to those in the relevant art. Examples of computers on which the described arrangements can be practised include IBM-PC's and compatibles, Sun Sparcstations, Apple Macir or alike computer systems evolved therefrom. The method of processing and rendering a radial blend object may be 10 implemented using the computer system 100 wherein the processes of Figs. 2 - 10, 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 method of rendering a radial blend object are effected by instructions 131 in the software 133 that are carried out within the computer system 100. The software instructions 131 may be 15 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 described methods and a second part and the corresponding code modules manage a user interface between the first part and the user. The software 133 is generally loaded into the computer system 100 from a 20 computer readable medium, and is then typically stored in the HDD 110, as illustrated in Fig. IA, or the memory 106, after which the software 133 can be executed by the computer system 100. In some instances, the application programs 133 may be supplied to the user encoded on one or more CD-ROM 125 and read via the corresponding drive 112 prior to storage in the memory 110 or 106. Alternatively the software 133 may 25 be read by the computer system 100 from the networks 120 or 122 or loaded into the 2311637_1 921385_specilodged -8 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 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 5 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 participate in the provision of software, application programs, instructions and/or data to the computer module 101 include radio or infra-red transmission channels 10 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. The second part of the application programs 133 and the corresponding code modules mentioned above may be executed to implement one or more graphical user 15 interfaces (GUIs) to be rendered or otherwise represented upon the display 114. Through manipulation of typically the keyboard 102 and the mouse 103, a user of the computer system 100 and the 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 20 implemented, such as an audio interface utilizing speech prompts output via the loudspeakers 117 and user voice commands input via the microphone 180. Fig. IB 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 25 by the computer module 101 in Fig. IA. 2311637_1 921385_specilodged -9 When the computer module 101 is initially powered up, a power-on self-test (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 5 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 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 10 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 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, 15 storage management, software application interface, and generic user interface. 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 must be used 20 properly so that each process can run effectively. Accordingly, the aggregated memory 134 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 25 unit 139, an arithmetic logic unit (ALU) 140, and a local or internal memory 148, 2311637_1 921385_specilodged -10 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 5 bus 104, using a connection 118. The 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 10 upon the relative size of the instructions 131 and the memory locations 128-130, a 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. 15 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 20 networks 120, 122, data retrieved 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 rendering arrangements can use input variables 154, that are stored 25 in the memory 134 in corresponding memory locations 155-158. The radial blend 2311637_1 921385_speci_lodged rendering arrangements produce output variables 161, which are stored in the memory 134 in corresponding memory locations 162-165. Intermediate variables may be stored in memory locations 159, 160, 166 and 167. The register section 144-146, the arithmetic logic unit (ALU) 140, and the 5 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 instruction set making up the program 133. Each fetch, decode, and execute cycle comprises: (a) a fetch operation, which fetches or reads an instruction 131 from a 10 memory location 128; (b) a decode operation in which the control unit 139 determines which instruction has been fetched; and (c) an execute operation in which the control unit 139 and/or the ALU 140 execute the instruction. 15 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 stores or writes a value to a memory location 132. Each step or sub-process in the processes of Figs. 2 - 14 is associated with one or more segments of the program 133, and is performed by the register section 144-147, the 20 ALU 140, and the control unit 139 in the processor 105 working together to perform the fetch, decode, and execute cycles for every instruction in the instruction set for the noted segments of the program 133. The methods of rendering may alternatively be implemented in dedicated hardware such as one or more integrated circuits performing the functions or sub 2311637_1 921385_speci_lodged -12 functions to be described. Such dedicated hardware may include graphic processors, digital signal processors, or one or more microprocessors and associated memories. Fig. 8 is a schematic flow diagram illustrating a method 800 of processing and rendering a radial blend object. The method 800 is preferably implemented as at least 5 part of the application program mentioned above and may be invoked when a printing function is selected by another application executing on the computer system. That other application may be any source of printable data such as a word processing application, a browser, a graphics drawing package, and so forth. In the case of a conical radial blend fill, the radial blend object in the PDL is 10 generally specified using two circles, Ca and Cb. Each circle has a location (X, Y), a radius length (R), and a Colour (Col). One of the two circles is specified as having higher priority than the other circle. Fig. 2a shows an example of a display list object with a conical radial blend fill. The object boundaries are specified by a rectangular bounding box 210. The fill is specified by two circles. The first circle Ca 220 is at 15 location (XI, YI) 230 and has radius Ra 240. The second circle Cb 250 is at location (X2, Y2), and has radius Rb 270. In this exemplary case, circle Ca is specified as having a higher priority than Cb. Fig. 2b shows how this fill would be rendered on the page if circle Ca was specified to be white, and Cb specified to be black. Thus, the region in the vicinity of circle Cb 292 is black, and gradually changes to white in the region near circle 20 Ca 291. The region 293, which is closer to circle Cb, is darker compared with the region 294. Fig. 3 shows how a radial blend can be represented as a series of parametric circles, each of which has its centre on the blend axis 330 between the first specified circle Ca 310 and the second specified circle Cb 320. The radius of each of circle is a 25 weighted average of radii of each of the two specified circles. The colour of each of 2311637_1 921385_speci_lodged - 13 circle is a weighted average of colours of each of the two specified circles. The priority of each circle is a weighted average of the priorities of each of the two specified circles. For an example circle C, 340 with centre (0, t), the radius R1, colour Ct and priority Pt of the circle can be found using the following formulae: Col, = (1 - t)Col + t - Col b 5 R,=(1 - t)R, + t -Rb (Equation 1) P =( - t)Pa + t - P where: COla is the colour of the circle Ca 310 Colb is the colour of the circle Cb 320 Ra is the length of the radius of the circle Ca 310 10 Rb is the length of the radius of the circle Cb 320 Pa is the prionty of the circle Ca 310 Pb is the priority of the circle Cb 320 It should be noted that the radial blend is bounded by two (a pair of) blend envelope lines 350 and 360, which meet at the peak or origin 370 of the radial blend. 15 The meaning of these blend envelope lines is discussed in further detail below. The colour of each pixel in the radial blend is determined by the colour of the parametric circle with the highest priority which touches the pixel. Fig. 4 shows how the colour is determined for three example pixels P1 410, P2 420 and P3 430. Pixel PI 410 is touched by two parametric circles, Ci 440 and C 2 450. Suppose circle C 1 440 is of a 20 higher priority than circle C 2 450. The colour of the pixel P1 410 is the taken from the circle with the higher priority. In this example, the colour is then the colour of circle C1. Pixel P2 420 lies on the blend envelope line 460, and is touched by only one circle C, 450. The colour of pixel P2 420 is the colour of the circle C, 450. The pixel P3 430 is 2311637_1 921385_speci_lodged -14 not touched by any parametric circles, as it lies outside the blend envelope 460. The blend envelope bounds the region where the colour value can be derived from the radial blend. As the colour of pixel P3 430 is undefined, it is generally given a default colour for the radial blend. 5 For any given pixel with position (x, y) in the output co-ordinate system, the circles that touch the pixel can be found by transforming the point into the radial blend coordinate system(p, q) (see Equation 4) and solving the following quadratic equation: T(pq) B(q) B(q) -4 A -(D(p,q) 2A (Equation 2) Where, A =(QCb)2 - (Rca - Rcb ) 2 B(q) = - 2 q -Qcb 2Rca -|I Rca - RCbI 10 (D(p,q) = p 2 +q 2 -RCa Where; Qcb is the q position of circle Cb. RCa is the radius of circle Ca Rcb is the radius of circle Cb 15 Solving the equation will yield two solutions (ti and t 2 ). Each of these solution is a represents the centre of a circle lying on the blend axis, at positions (0, tn). For the purposes of rendering, only solutions with non-complex terms will be used for rendering. The solution that has the largest non-complex number will be used as the solution for rendering. For example, if the highest non-complex solution is ti, then the weighted 20 average used to calculate the pixel colour is 2311637_1 921385_speci_lodged - 15 Co =(1-t)Cola +tColb. In an exemplary embodiment of the current invention, the processor 170 determines the angle between the pixel and the centre of the circle that touches the pixel. For any given pixel which does not lie on the blend axis, given the radial angle a 540, 5 the centre of the circle can be found by finding the intersection between the blend axis and a ray with angle alpha that passes through the pixel. Fig. 5 shows an example of the use of the radial angle to determine the circle touching a pixel for an example pixel at (pi, qi) 510. The intersection point (0, ti) 520 between the ray 530, originating at the sample pixel (pi, q) 510 at the angle alpha 540, and the blend axis 550, is the centre of 10 the circle 560 from which the example pixel 510 derives its colour. A property of conical radial blends is that the radial angle of any point can be expressed as a function of the ratio of the distance from the blend axis to the point and the distance from the blend axis to the blend envelope. With reference to Fig. 6, for any point (p,,, qi) 610 lying on scanline q = qi 620, where the radial blend envelope line 15 intersects with the scanline at point (pe, q) 630, the radial angle can be expressed as a function of the ratio of p, to Pc: a = F(p, / p,) for the magnitude of px, 1p| is smaller or equal to Pe a is undefined if the magnitude of px, pxj is larger than Pe, (Equation 3) where F(x) is the radial angle determining function. 20 The radial angle determining function F(x) is a complex function which provides no performance benefit over the quadratic equation detailed in Equation 2. As F(x) is independent of the p location of the given point, F(x) can be efficiently represented as a one-dimensional lookup table. As there are two possible solutions for each pixel, the 2311637_1 921385_speci_lodged -16 exemplary embodiment of the current invention generates two radial blend angles for each pixel. Once the radial angle has been determined, for any given pixel with position (p, q), the circles that touch the pixel can be found by solving the following: 5 T(p, q) = q + (tan(a) * p) (Equation 4) where, a is the radial blend angle for point (p, q). It can be seen from the form of Equation 4, that rather than storing the radial angle alpha, an optimisation is to store the tangent of the radial blend angle. 10 Fig. 8 is a high level flow diagram showing an example of how a radial blend object is first processed by the controlling program 140, and then rendered by the pixel rendering apparatus 180. The process starts at step 810, and moves directly to the creation step 820 to generate the blend instruction. In the creation step 820, the controlling program 140 generates the two Blend Coefficient Lookup Tables based on 15 radial blend angle a for the radial blend, and creates the radial blend instruction. The creation step 820 is described in further detail below. After the creation step 820 is finished, processing moves to the rendering step 830, which is executed in the pixel rendering apparatus 180. The pixel rendering apparatus 180 generates colour values for all pixels activated by the radial blend object being rendered in the rendering step 830. 20 The rendering step 830 is described in further detail below. Once the pixel rendering apparatus 180 has finished processing the rendering step 830, the process terminates at step 840. Fig. 9 is a flow diagram describing the creation step 820 in more detail. The controlling program first processes the pixel coordinate (x, y) at the normalisation step 2311637_1 921385_specijlodged - 17 910. The normalisation step 910 transforms the rendering pixel coordinate (x, y) into blend coordinate (p, q). The blend coordinate system is such that circles Ca and Cb have p = 0 and centre of Ca, for example, is located at blend coordinate origin (0, 0). This transform is achieved by applying the following affine transform to each of the blend 5 circle's centre points: A B -. x~ (p, q,O)= C D - w.y *(x, y,O) (Equation 5) 0 0 1 where, A AY
AY
2 + AX 2 - AX Ay +AX 2 C AX
AY
2 + AX 2 AY V AY2+ AX2 AX =|Wb.Y --W.X AY =\Ob.y -wf.y| Wa.X = The x-position of the centre of Circle Ca 10 Wa.Y = The y-position of the centre of Circle Ca Wb.X = The x-position of the centre of Circle Cb Wb.Y = The y-position of the centre of Circle Cb The controlling program 1151 then executes the determining step 920 to calculate the blend envelope parameters. The blend envelope parameters define the boundary of 15 rendering of the radial blend in the blend coordinate system. The blend envelope parameters are in the form of a line in the blend co-ordinate system: q = mp +2 2311637_1 921385_speci_lodged -18 where, M=- QCb RCb-RCa A=-m-Rca Once the blend envelope parameters are determined, processing moves to the 5 determining step 930. In the determining step 930, the controlling program 140 executes the determining step 930 that determines the sampling scanline where the tangent angle Look-Up Tables (LUTs) will be calculated. The sampling scanline is determined by the calculating the scanline at which the position of the blend envelope is equal to the size of the blend coefficient LUTs. This blend envelope position at a given scanline can be 10 determined by using the blend envelope line, substituting the size of the blend coefficient LUTs as the p coordinate. (Qc -2- Rc 2 LUTPos = LUTSize - + A Rcb Next the process moves to calculating step 940 where the processor 1151 calculates the base blend coefficient. The base blend coefficient is calculated for the 15 position where the LUT samples are taken. baseCoeff =LUTPos Qcb Once the LUT position is determined and the base blend coefficient has been calculated by the processor 1151, processing moves to the angle calculating step 950. In the calculating step 950, for each position in said LUT on said scanline, the processor 20 1151 calculates a radial tangent value using Equation 1. This value subtracted by the baseCoeff is stored in the LUTs in the position to give a normalised position. The LUTs are stored in memory within the printer 115. 2311637_1 921385_specilodged -19 After the entries in the tangent angle LUTs have been calculated by the processor 1151, the creating step 810 terminates. The pixel rendering apparatus 1153 then generates pixel colour for each pixel activated by the radial blend object in the rendering step 830. There are several different 5 methods of determining the set of pixels activated by the radial blend object which are well known in the prior art. Fig. 10 is a flow diagram describing how the rendering step 830 generates colour for each activated pixel in detail. The process starts at the transform step 1010. The processor 1151 transforms the activated pixel coordinate (x, y) into the blend coordinate (p, q) in the transform step 1010. The blend coordinate system 10 has been described above. This transform is by applying the affine transform detailed in Equation 4 to the activated pixel co-ordinate (x, y). This process is collectively illustrated by Fig. I IA and Fig. 1 B. In Fig. I IA, an example radial blend object as described in Fig. 2b is shown, with black areas 1204 and 1202 that gradually fades to white areas 1201 and 1203. This object in Fig. I IA is defined in page coordinate, or 15 shading target space. The affine transform that transform the object in Fig. I IA to the reference object in Fig. 11 B basically translate the object in page coordinate by a distance between one of the appropriately chosen circles to the origin, T 1209, and rotate the object by an angle a 1210. One then obtains a reference object in the reference coordinate, or the radial shading internal space, with dark areas 1205 and 1207 that 20 gradually fades to white areas 1206 and 1208. Once the coordinate has been transformed to blend coordinate space, processing moves to the determinating step 1020. The processor 1151 uses the blend envelope parameters to determine if the (p, q) blend coordinate has a solution in the determinating step 1020. The blend envelope parameters are used to find the intersection of the blend 25 envelope lines with the current scanline Q = q. By finding these intersection points, the 2311637_1 921385_specilodged -20 processor 1151 can determined if the active pixel co-ordinate (p, q) is within the blend envelope. If the p value is greater then maxp then the point is outside the blend envelope. max,, = m If the processor 1151 determines, in the determinating 1020 step, that the active 5 pixel co-ordinate (p, q) is not within the blend envelop, processing moves to the default render step 1060. In the default render step 1060, the default colour for the radial blend is used to render the active pixel. Processing then terminates. If is the processor 1151 determines, in the determinating step 1020, that the active pixel co-ordinate (p, q) is within the blend envelop, processing moves to the indexing 10 step 1030. The processor 1151 uses the active pixel co-ordinate (p, q) to determine the LUT index in the indexing step 1030. First, the processor calculates the size ratio variable. The size ratio is the ratio of the LUT sampling scanline position to the active pixel scanline (q), according to the following formula: SizeRatio = LUTPos q 15 Once the SizeRatio variable has been determined, the processor 1151, in the indexing step 1030, calculates the LUT Index by multiplying the size ratio by the active pixel p position as shown in the following formula: LUTIndex = SizeRatio -p Processing then moves to the calculating step 1040. The processor 1151 uses the 20 LUTIndex calculated in the previous indexing step 1030 to fetch two normalised blend coefficients from the LUT in the calculating step 1040. The two LUT values are multiplied by the SizeRatio to give absolute blend coefficients. Linear interpolation is used between the two coefficients. The interpolation is calculated as such: 2311637_1 921385_specilodged -21 index = floor(LUTIndex) dec = LUTIndex - index BlendCoeffl =(1 - dec) LUTI[index] + dec- LUTI[index +1] BlendCoeff 2 (1 - dec)- LUT2[index] + dec -LUT2[index +1] where floor(x) returns the next smallest integer of x. Processing then moves to the generating step 1050. In the generating step 1050, the processor 1151 uses the blend coefficients calculated in the calculating step 1040 to 5 determine a pixel colour. The selection of the blend coefficient to use is based on the rendering mode, but typically the higher blend coefficient value is chosen. Based on the blend mode being used, the processor 1151 uses one of the blend coefficients to calculate the pixel colour. 10 A Simple Worked Example Consider a radial blend which is defined by the following circles: Ca: position (100, 100), radius Ra is 10, Colour (255, 255, 255) Cb: position (200, 200), radius Rb is 20, Colour (0, 0, 0) Following the high level flow chart shown in Fig. 8, the process first executes the 15 creating step 820. Calculating Look-Up Table Values Following the flow chart shown in Figure 9, processing begins at the processes at the normalisation step 910. Following equation 5, the normalisation step 910 transforms the circles centre points as shown below: 20 A B m>x (p,q,O) = C D w.y *(x, y,O) 20 0 13 2311637_1 921385_speci_lodged - 22 A AY A 100
AY
2 +AX' 1002w ±1l002 B AXB 100
AY
2 + AX 2 1002 +1002 B C = X4 C= -100 oY 2
+AX
2 #1002+1002 D _AY D= 100 1
IAY
2
+AX
2 1002+1002 D= AX =),.y -0a.x| AX =100 AY =ob.y -W0. |Y AY=100 1 1 -100 (p),q,0)= I - 100 *(x,y,0) 0 0 1 Ca with transform becomes (p, q) position (0, 0), Radius 10. 5 Cb with transform becomes (p, q) position (0, 100-T), with radius 20, therefore wm.y is 100 'h. Processing then moves to the determining step 920. In the determining step 920, the processor 1151 calculates the blend envelope parameters as follows: q = mp + 10 where, M= Qcb m=10Th RCb-RCa A=-m.Rca A =--100. After the determining step 920 is completed, processing continues to determining step 930. In this worked example, the size of the LUT is assumed to be 8. The LUT 15 Position is determined as follows: 2311637_1 921385_speci-lodged - 23 L UTFos = L UTSize - (Qc 2 -- Rcb 2 + Rcb LUTPos - (100J2 +00'r)2 -202 _i1ovi 20 LUTPos = -28.5674684 Next the process moves to the calculating step 940 where the base blend 5 coefficient is calculated as follows LUTPos baseCoeff = = -0.20200250627 Qcb Once the processor 1151 determines the LUT position and calculates the base blend coefficient, processing moves to the calculating step 950. In the calculating step 950, for each position in the LUT, the processor 1151 calculates the radial tangent value 10 using equation 2. This gives the following LUT values: [0] (0.0607205340576, -0.0527004587437) (1] (C.0602757389831, -0.0522556636693) [2] (0.0589197396857, -0.0508996643718) 15 [3] (0.0565820748581, -0.0485619995442) [4] (0.0531227682011, -0.0451026928873) [5] (0.0482796547207, -0.0402595794069) [6] (0.0415205052077, -0.0335004298939) [7] (0.0314648886713, -0.0234448133574) 20 [8](0.0040100398257, 0.00401003548817) The LUTs are then stored in memory within the printer 115. Once the calculating step 950 is completed, the creating step 820 is completed. Processing moves to the rendering step 830. 25 Blend Instruction Creation 2311637_1 921385_specilodged -24 In this worked example, three sample pixels will be rendered, at (110, 110), (115, 110), and (150, 110). Each of these values is in the output co-ordinate system (x, y). The creation of the blend instruction starts at the transforming step 1010. In the transforming step 1010 the pixel locations are transform into the blend coordinate space 5 as shown below: A B W.x~ (p,q,0)= C D c.y *(x,y,0) 0 0 1 Pixel location Blend coordinate space (110,110) (0, 14.1421356237) (115, 110) (3.53553390593, 17.6776695297) (150, 110) (28.2842712475, 42.4264068712) Once the co-ordinate has been transformed to blend coordinate space, processing moves to the determinating step 1020. The max-x value is found for each scanline, and 10 compared to the pixel locations as shown below: max = m (0, 14.1421356237) + max, = 11.0 (3.53553390593, 17.6776695297) -) max., 11.25 (28.2842712475, 42.4264068712) + max, = 13.0 15 For the last point p is larger than max. This indicates that the point (150, 110) is outside the blend envelope. For this pixel, processing proceeds to the default rendering step 1060, where pixel (150, 110) is painted using the default colour. 2311637_1 921385_speci lodged - 25 The other two pixels are within the blend envelope. For these pixels, processing moves to the indexing step 1030. The processor 1151 determines the LUT Index for the pixels in the indexing step 1030 as shown below: (110, 110) - (0, 14.1421356237) 5 SizeRatioL= UTPosA=0.
72 545 22674 Apply to p value - 0.0 q-A (115, 110) - (3.53553390593, 17.6776695297) LUTPos--A SizeRatio= -=0.7093311064 Apply to p value 4 2.507864 q-A Processing then moves to the calculating step 1040. The processor 1151 fetches two normalised blend coefficients from the LUT in the calculating step 1040 as shown 10 below: BaseCoeff= q Qcb (110, 110) 4 (0, 14.1421356237) 4 0.10 (115, 110) + (3.53553390593, 17.6776695297) + 0.125 From the normalised coefficient obtained, the processor 1151 executes the 15 interpolation step to determine the blend coefficient by scaling, and adding baseCoeff: obtaining normalised coefficient: (110, 110) 4 [0] (0.0607205340576, -0.0527004587437) [1)(0.0602757389831, -0.0522556636693) (0.0604946385737, -0.0524745632598) 20 Scaling: (0.0852840627768, -0.0739775301208) Adding base coefficient: (0.1852840627768, 0.0260224698792) obtaining normalised coefficient: (115, 110) 4 (2] (0.0589197396857, -0.0508996643718) 25 [31:0.0565820748581, -0.0485619995442) 2311637_1 921385_speci_lodged -26 (0.0577325234647, -0.0497124481508), next scale: Scaling: :0.0813900912794, -0.0685261462568) Adding base coefficient: (0.2063900912794, 0.0564738537432) 5 Processing then moves to the generating step 1050. The processor 1151, in the generating step 1050, uses the blend coefficients calculated in the calculating step 1040 to determine a pixel colour as shown below: For each pixel, the highest blend co-efficient is chosen: (110, 110) - (0.1852840627768) 10 (115, 110) + (0.2063900912794) The colour is calculated by the processor 1151 at the two positions in the blend envelope as follows: (110, 110) + (1 - BlendCoeff) Cola + (1- BlendCoeff) COlb (110, 110) + (1 - 0. 1852840627768)[255,255,255] + (0.1852840627768)[0, 0, 0] 15 (110, 110) + (0.8147159372232)[255,255,255] + (0.1852840627768)[0, 0, 0] Colour of the pixel at position (110, 110) is [208, 208, 2081 (115, 110) 4 (1 -- BlendCoeff) Cola + (BlendCoeff) Colb (115, 110) 4 (1-0.2063900912794)[255,255,255] + (0.2063900912794)[0, 0, 0] (115, 110) + (0.7936099087206)[255,255,255] + (0.2063900912794)[0, 0, 0] 20 Colour of the pixel at position (115, 110) is 1202, 202, 2021 These colours are used to render pixels (110, 110) and (115, 110) respectively. Industrial Applicability The arrangements described are applicable to the computer and data processing industries and particularly for the rendering and printing of radial blend objects. 2311637_1 921385_specilodged - 27 The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive. In the context of this specification, the word "comprising" means "including 5 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. 2311637_1 921385_speci_lodged

Claims (5)

1. A method of rendering a region of a radial blend, said method comprising the steps of, for a point within said region: 5 determining a look-up value for the point; matching the point with a reference point, said reference point having a look-up key substantially similar to said look-up value of the point, using the stored value associated with said matched reference point to determine a blend coefficient for the given point, 10 determining the pixel colour of the point using the blend coefficient.
2. A method according to claim 1, further comprising the steps of, prior to determining the look-up value: generating a plurality of reference points on a line, said line intersecting a pair of 15 lines which pass through the blend origin; generating a value and a look-up key for each of the plurality of reference points.
3. A method sunstantially as described herein with reference to any one of the embodiments as that embodiment is illustarted in the drawings. 20
4. A computer readable storage medium having a computer program recorded tehreon, the program being executable by a computer to perform the method of any one of claims I to 3. 25 2311637_1 921385_speci_lodged - 29
5. Computer appratus configured to perform the method of any one of claims 1 to 3. Dated this 29th day of September 2009 5 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant Spruson&Ferguson 2311637_1 921385_specilodged
AU2009222480A 2009-09-29 2009-09-29 Efficient rendering of radial blends Abandoned AU2009222480A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2009222480A AU2009222480A1 (en) 2009-09-29 2009-09-29 Efficient rendering of radial blends

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2009222480A AU2009222480A1 (en) 2009-09-29 2009-09-29 Efficient rendering of radial blends

Publications (1)

Publication Number Publication Date
AU2009222480A1 true AU2009222480A1 (en) 2011-04-14

Family

ID=43857450

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2009222480A Abandoned AU2009222480A1 (en) 2009-09-29 2009-09-29 Efficient rendering of radial blends

Country Status (1)

Country Link
AU (1) AU2009222480A1 (en)

Similar Documents

Publication Publication Date Title
US20150269706A1 (en) Deforming a Surface via a Control Point
US9754409B2 (en) Method, apparatus and system for tessellating a parametric patch
JP5508521B2 (en) Optimizing data visualization platform performance
AU2011202072B2 (en) Curve vectorisation with preserved tangents at endpoints
JP2009508256A (en) Extensible visualizations to active content in the user interface
US20140055486A1 (en) Method, system and apparatus for rendering a graphical object
KR101700174B1 (en) Reduced bitcount polygon rasterization
AU2013221944A1 (en) Improve alignment of start and end of dashed curves
US8711184B2 (en) Scalable pixel coverage function-map
JP5631590B2 (en) Multiple and native representations of images
US8907956B2 (en) Line stroking method and system
JP5374567B2 (en) Image processing apparatus, image processing system, and image processing method
AU2012244309A1 (en) Method, system and apparatus for determining position of a watermark annotation
KR101532846B1 (en) Reshaping interfaces using content-preserving warps
AU2009222480A1 (en) Efficient rendering of radial blends
US8847993B2 (en) Resolution independent effects in a graphics application
AU2012232989A1 (en) A method of rendering an overlapping region
US9361555B2 (en) Method, apparatus and system for rendering an object on a page
AU2015268723B1 (en) Method, system and apparatus for modifying a font character
AU2010201321A1 (en) Edge tracking in scan line batches
AU2015258332A1 (en) Method, apparatus and system for reproducing a document defined in a page description language
AU2009201706A1 (en) Group effects for standards-based graphics interfaces

Legal Events

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