AU2006235766A1 - Path Compression - Google Patents

Path Compression Download PDF

Info

Publication number
AU2006235766A1
AU2006235766A1 AU2006235766A AU2006235766A AU2006235766A1 AU 2006235766 A1 AU2006235766 A1 AU 2006235766A1 AU 2006235766 A AU2006235766 A AU 2006235766A AU 2006235766 A AU2006235766 A AU 2006235766A AU 2006235766 A1 AU2006235766 A1 AU 2006235766A1
Authority
AU
Australia
Prior art keywords
precision
difference
point
control point
encoded
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
AU2006235766A
Inventor
George Politis
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 AU2006235766A priority Critical patent/AU2006235766A1/en
Publication of AU2006235766A1 publication Critical patent/AU2006235766A1/en
Abandoned legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

S&FRef: 774765
AUSTRALIA
PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address of Applicant Actual Inventor(s): Address for Service: Invention Title: Canon Kabushiki Kaisha, of 30-2, Shimomaruko 3-chome, Ohta-ku, Tokyo, 146, Japan George Politis Spruson Ferguson St Martins Tower Level 31 Market Street Sydney NSW 2000 (CCN 3710000177) Path Compression The following statement is a full description of this invention, including the best method of performing it known to me/us:- 5845c
O
_PATH COMPRESSION O Field of the Invention Cc The present invention relates generally to representing graphics objects and, in O particular, to a method and apparatus for encoding graphical outline descriptions. The
INO
present invention also relates to a computer program product including a computer readable medium having recorded thereon a computer program for encoding graphical
NO
outline descriptions.
Background A print job consisting of one or more pages to be printed on a printer is typically sent to the printer in a form utilizing a page description language (PDL), such as PostScriptTM.
The typical operation of a PDL printer is as follows. The printer has a PDL interpreter which translates the page description input into high-level graphics primitives. Next, a display list module creates and handles display lists describing each page from the highlevel graphics primitives provided by the PDL interpreter. Path data describing the outlines of these graphics primitives is stored in each display list. Each display list is then passed to a renderer for rendering to a page of pixel data destined for a printer engine.
Display lists are also useful as a job format for transmission between printer and host, as well as for rendering to still or video displays.
A print job can potentially contain a very large number of graphics objects with outlines. Therefore, memory required to store the path data can be a significant fraction of total job memory. Since memory represents a substantial cost, it is desirable to reduce the memory used by paths in the display list without significantly decreasing the rendered page quality.
I:\CISRA\ARR\ARR I 1\774765.doc \O L A variety of methods are known for reducing the memory used by paths in display O lists. One such method is to encode control points of a path relative to one point on the Cc path bounding box. Another method of reducing the memory used by paths in display lists INO is to group control points into vertex clusters, choose a reference point near the centre of the cluster and encode the relative distance of control points to the reference point as a tc) proportion of the maximum distance between the control points in the cluster and the
\O
Creference point.
Further reduction in the size of path data in display lists is, however, desirable.
Summary It is an object of the present invention to substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements.
According to one aspect of the present invention there is provided a method of encoding a path, each said path comprising one or more subpaths, each said subpath comprising a plurality of control points, each said control point comprising a pair of coordinate values, said method comprising the steps of: determining the difference between a current control point coordinate value of said path and a coordinate value corresponding to a previously encoded control point of said path; generating from said difference a binary representation of length dependent on the magnitude of said difference; and partitioning said binary representation into a sequence of one or more fixed-length bytes representing at least a portion of the encoded path, wherein each said byte comprises one or more predetermined bit locations indicating whether the byte is a last byte in said sequence.
I:\CISRA\ARR\ARR I I\774765.doc \O J
O
I-D
Other aspects of the invention are also disclosed.
C.)
0 Brief Description of the Drawings Cc Some aspects of the prior art and one or more embodiments of the present invention IND will now be described with reference to the drawings and appendices, in which: Fig. 1 is a flow diagram showing a method of encoding a subpath according to an embodiment of the present invention.
\O
Fig. 2 is a flow diagram showing a method of encoding a coordinate value in a byte stream, as used in the method of Fig. I; and Fig. 3 is a schematic block diagram of a general purpose computer upon which arrangements described can be practiced.
Detailed Description including Best Mode Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears.
It is to be noted that the discussions contained in the "Background" section and that above relating to prior art arrangements relate to discussions of documents or devices which form public knowledge through their respective publication and/or use. Such should not be interpreted as a representation by the present inventor(s) or patent applicant that such documents or devices in any way form part of the common general knowledge in the art.
Embodiments of the present invention described below reduce the size of a display list in a rendering system by compressing path data in the display list.
I:\CISRA\ARR\ARR I 1\774765.doc ID-4- A path is made up of one or more subpaths. Each subpath comprises line segments, 0 curve segments or a mixture thereof. Each segment is expressed in terms of control points.
Cc A control point comprises a pair of coordinate values often represented as y) to indicate IND horizontal and vertical coordinate values respectively. The PDL interpreter typically passes these control points to the display list module in double precision floating point format. Paths are rendered into pixels during the render stage either after the display list is
\O
completed or as a result of fallback when the amount of free memory in the system is low.
In the process of rendering paths into pixels, curve segments in the subpaths typically need to be vectorized into a series of straight line segments.
In the process of rendering to pixels, vectorized line segments are converted into discrete pixel locations on the output page. Variations in the control point coordinates that are sufficiently small have no effect on which pixel locations are affected by a line segment. Therefore, control points are preferably represented in a lower precision fixed point format which is more compact than double precision floating point without changing which pixels are affected by the segment.
Control points of curve segments are preferably stored in higher, though still fixed, precision than those of line segments. This is because the vectorization of curve segments in the rendering process involves some arithmetic operations which can introduce rounding errors. A higher precision reduces the magnitude of those errors. Moreover, the magnitude of control points is reduced if control points are stored relative to a point localized to each path rather than to a position on the page. In the preferred embodiment, each control point in each subpath is stored relative to the control point provided before the control point.
This provides a pair of coordinate differences (or "deltas") for each control point.
I:\CISRA\APRR\ARR I 1\774765.doc
O
The fact that control points can be encoded with variable precision and magnitude O means that a variable length encoding method is desirable. In the preferred embodiment, Cc each coordinate difference may be encoded in a variable number of bytes by utilizing an IND identifier at a predetermined bit location in each encoded byte. This identifier preferably comprises a predetermined bit which will be hereinafter referred to as the 'continuation \bit'. This continuation bit in a byte indicates whether or not the byte is the last byte in a Ssequence of bytes encoding a coordinate delta. The continuation bit is preferably located at the most significant bit location of the byte.
According to the preferred embodiment, the most significant bit of a non-final byte of an encoded coordinate delta is one while that of the final byte of encoded coordinate is zero Other bit locations and interpretations of the continuation bit are readily conceivable, though they must be consistent throughout the display list. For example, each byte may comprise a plurality of continuation bits. As will be described below, the final byte in the sequence may be padded with bits equal to the most significant bit of the coordinate.
As described above, for each subpath, the control points are stored relative to the previous control point. Therefore, in each subpath, only the coordinates of the first point are stored as absolute coordinate values on the page. Reconstruction of an absolute control point coordinate value requires summation of the first control point coordinate value and all the differences up to that of the control point being reconstructed.
The subpath may also be read in reverse from a final control point to a control point before the final control point). For example, all of the differences may be used to reconstruct the final control point. All the differences may then be subtracted from the final control point coordinate value to determine the control point being reconstructed.
I:\CISRA\ARR\ARR I I\774765.doc -6- However, this reconstruction may be performed more efficiently if the coordinates of the final control point of each subpath are also encoded as absolute coordinate values. When reading in reverse, an absolute control point may be reconstructed by subtracting differences from the final control point coordinate value as described above.
As described above, the precision to which differences are encoded preferably depends on the type of segment they represent. Some state recording variables may be used when encoding a subpath one segment at a time. These variables are listed in Table 1 below with their usages: Table 1 Variables Usage Previous segment type Whether the segment before the one being encoded is a line or curve.
Current segment type Whether the segment being encoded is a line or curve.
Next segment type Whether the segment after the one being encoded is a line or curve.
Current low-precision point The coordinates of non-first control point of the current segment being encoded in lowprecision fixed-point format.
Current high-precision point The coordinates of non-first control point of the current segment being encoded in highprecision fixed-point format.
Previous low-precision point The coordinates of the first control point of the current segment being encoded in lowprecision fixed-point format.
Previous high-precision point The coordinates of the first control point of the current segment being encoded in highprecision fixed-point format.
When a path is stored in a display list, each subpath in the path is encoded. A method 100 of encoding a subpath, will now be described with reference to Fig. 1. The first control point of a subpath is encoded as an absolute coordinate value. The subpath may be one subpath representing at least a portion of a path being encoded. As described I:\CISRA\ARR\ARR I I\774765.doc O -7above, each subpath comprises a plurality of control points with each control point O comprising a pair of coordinate values often represented as as described above.
Cc The method 100 begins at step 101, where the previous segment type variable is IO initialized to be 'line'. This is because the first segment of the subpath does not have a
INO
segment before it; however the first segment behaves as if the previous segment is a line.
The current segment type variable is initialized to be the type of the first segment at the
NO
next step 102. If the first segment is a line, as determined at step 103, the x and y coordinates of the first control point of the subpath are converted into low-precision fixed point, preferably 28.4, at step 104. Also at step 104, the current low-precision point variable is initialized. Note that the current high-precision point variable is left uninitialised. Alternatively, if the first segment is a curve, the x and y coordinates of the first control point of the subpath are converted into high-precision fixed point, preferably 23.9 at step 105. Also at step 105, the current high-precision point variable is initialized to be the converted high-precision fixed point value of the first control point at step 105.
Regardless of the precision chosen for the first point, the fixed-point coordinates are encoded into a byte stream at step 106. Step 106 will be described in more detail below with reference to Fig. 2. After step 106, the first control point of the subpath will have been encoded. Each subsequent control point of the subpath is encoded relative to the control point before the control point. After the first point, a line segment is described by one control point (the other endpoint of the line segment), while a curve segment is described by two or three control points (depending on the degree of the spline defining the curve).
The method 100 continues at the next step 107, where variables are updated to prepare for subsequent control points of the subpath to be encoded. Depending on whether I:\CISRA\ARR\ARR I I\774765.doc IO the current low-precision point or current high-precision point has been initialised at step O 104 or 105, the previous low-precision or previous high-precision point variables are CC updated to the value of the current low-precision point or the current high-precision point, IND respectively, at step 107.
r Then at step 108, the method 100 determines whether there are any more segments in the subpath which have not yet begun to be encoded. If there is at least one segment which has not yet begun to be encoded (the No option of step 108), the next segment type variable is set to the type of the next unencoded segment at step 125. If previous, current and next segments are of type 'line' as determined at step 109, the difference between the second control point and the first control point of the current line segment is encoded in low-precision.
At step 110, the method 100 performs the step of determining the difference (in low precision) between the coordinate value of the second control point (or current control point) and the coordinate value of the first control point (or previously encoded control point). This low-precision difference is determined at step 110, by converting the double precision floating point value of the second control point of the current line segment to low-precision fixed point and subtracting the previous low-precision fixed point value from the converted second control point of the current line segment. In step 110, the current low-precision control point variable is also updated.
Then at the next step 1 11, the method 100 performs the step of generating from the difference determined at step 110, a binary representation whose length depends on the magnitude of the difference. In particular, the low-precision fixed control point value is encoded as described below with reference to Fig. 2.In the case when one or more of the previous, current or next segments are not line segments, the difference(s) between the I:\CISRA\ARR\ARR I 1\774765.doc O control point(s) of the current segment are encoded in higher precision. This allows all the O control points of curve segments to be reconstructed at high precision.
c Since the differences are encoded in either low or high-precision fixed point format, I\O the control points of a segment need to be converted into certain precision fixed point
INO
format to derive the differences.
C Table 2 below shows, for different sequences of segment types, the precisions which
O
Sthe control points are to have when decoded and the precisions in which the differences are to be encoded to achieve that.
Table 2 Segment Type Segment Type First control Non first Difference Sequence No Sequence point control point precision (previous, precision precision when encoded current, next) when decoded decoded 1 LLL Low Low Low 2 CLL High Low High 3 LCL High High High 4 LLC Low High High CLC High High High 6 CCL High High High 7 LCC High High High 8 CCC High High High Note: L Line, C Curve The segment type sequence column describes the sequences of previous, current and next segments. In the case of segment type sequence no. 1, the current line segment is surrounded by line segments. In this instance, the control points of the current line segment are decoded in low-precision since the line segment will not be vectorized. Therefore, the double precision floating point control points of the line segment are converted into low- I:\CISRA\ARR\ARR I 1\774765.doc
\O
O
precision fixed point format before the difference is determined to be encoded as a low- O precision difference.
CC)In the case of segment type sequence no. 2, the current line segment is preceded by a IND curve and followed by a line segment. As described above, the first control point of the current segment is decoded in high precision. However the second control point of the line segment is decoded in low precision. The difference is encoded in high-precision format.
\O
To derive this high-precision difference, the first double precision floating point control point is converted into high-precision fixed point format and the second control point is preferably converted into low-precision fixed point format and the converted low-precision fixed point second control point is then promoted to high-precision before the two highprecision fixed point coordinates' difference is determined.
Sequence no. 4 is similar to sequence no. 2, except in reverse.
In sequence no. 5, a line segment is surrounded by two curves. Therefore, both control points of the line segment are decoded in high-precision format.
In all the other cases, the current segment is a curve, therefore all the control points of those segments are decoded in high-precision and the difference is derived by converting the double precision floating point control point coordinates into high-precision fixed point format before the difference is taken.
The method 100 encodes the segments in a subpath one segment at a time. Returning to Fig. 1, when encoding the non-first control point(s) of a segment, if the method 100 determines at step 109 that not all of the previous, current and next segments are lines, then the differences between control points of the current segment are encoded in high-precision format. If it is determined that the coordinates of the previous point are in low-precision fixed point format at step 112 (as in sequence type then the coordinates of the previous I 1\774765.doc 4) -11-
O
point are promoted to high-precision format at step 113 before the high-precision O differences are determined at step 114. X and Y coordinate differences between control Cc points of the current segment are determined at step 114. If the differences to be encoded IND are to be in high-precision but the control point is to be decoded in low-precision format in sequence no. the coordinates of the non-first control points are converted into low-precision fixed point format before coordinate differences are determined at high-
\O
Cprecision. In all other cases, the coordinate differences are determined at high-precision by converting double precision coordinates of non-first control point(s) into high-precision fixed point format and taking differences from the high-precision fixed point coordinates of the previous control point.
Once the differences have been determined, the differences are encoded into a byte stream at step 115. Step 115 will be described in more detail below with reference to Fig.
2. Then at the next step 116, the method 100 determines whether the current and next segments are lines. If so, the coordinate values of the current high-precision point are converted into low-precision at step 117 before proceeding to encode the next segment starting at step 107.
The test at step 116 is true when the previous segment is a curve segment and both the current and next segments are line segments Sequence 2 in Table If this is not the case, the method 100 proceeds directly to step 107 to encode the next segment.
By step 117, all control points of the current segment have been encoded. Following step 117 the method 100 returns to step 107. At step 107, variables are updated to prepare the next segment to be encoded. The previous segment type variable is updated to have the value of the current segment type and the current segment type variable is updated to have the value of the next segment type. If the current low-precision point is set, the previous I:\CISRA\ARR\ARR I 1\774765.doc IND -12-
O
low-precision point variable is updated to be the value of the current low-precision point.
O Similarly, the previous high-precision point variable is updated to be the value of current CC high-precision point if it is set.
IND If the method 100 determines at step 108 that there are no more segments to be encoded, the very last control point of the subpath is preferably encoded as an absolute Scoordinate value. The precision of the absolute coordinate value of the final control point is
\O
determined as described above. If the final segment of the subpath is a line as determined at step 118, the final control point is encoded in low-precision format at step 119 and in high-precision format otherwise at step 120. The method 100 is repeated for each subpath in the path to be compressed.
At steps 111 and 115, the coordinate difference determined is encoded into a byte stream (or binary representation). All control points of a subpath may share the same byte stream. The two differences are each preferably represented as twos complement integers, one for each of the x and y coordinates.
A method 200 of encoding a coordinate difference into a byte stream (or binary representation), as performed at steps 111 and 115 of method 100, is described below with reference to Fig. 2. The method 200 performs the partitioning of the byte stream (or binary representation) into a sequence of one or more fixed length bytes representing at least a portion of the encoded path.
As described in detail below, the byte stream is preferably a twos complement representation with all but one leading bit symbol omitted. This twos complement representation preferably represents a fixed-point representation of the difference with the precision of the fixed-point representation depending on the type of the segment to which I:\CISRA\ARR\ARR I I\774765.doc ID -13-
\O
O
the control point belongs. Further, the precision further depends on the type of the O segments in the subpath preceding and succeeding the segment.
Cc The y coordinate difference of each control point is encoded sequentially after the IND corresponding x coordinate difference in the byte stream. The most significant bit of each encoded byte is preferably used as a continuation bit, leaving seven bits per byte for the bits needed to represent the data. If the difference is zero the difference is encoded in
\O
one byte with all the bits set to zero This means the continuation bit is zero indicating that this encoded byte is the only byte representing the difference. The seven (7) data bits indicate that the number is zero If the difference is greater than zero the twos complement representation of the difference must have a string of most significant bit(s) of value zero Encoding all of this leading string of zero bits would be redundant since only having one of the zero (0) bits is enough to identify the encoded number as a positive number. Likewise, the twos complement representation of a negative difference has a leading string of bit(s) of value one Therefore, the difference may be encoded by omitting all but one of these leading zero or one bits, leaving a binary representation having a length dependent on the magnitude of the difference. The remaining data bits in the twos complement representation of the difference are encoded in little endian format in a sequence of fixedlength bytes, preferably with seven data bits in each byte. The data bits of the final encoded byte are padded with zero or one respectively for a positive or a negative difference if the number of bits needed to represent the difference is not a multiple of seven Therefore, the second most significant bit in the final encoded byte of a difference indicates whether the difference is positive or negative.
I:\CISRA\ARR\ARR I 1\774765.doc INO -14-
O
The method 200 begins at step 201, where if it is determined that the difference is O zero the first and only byte in the encoded stream is set to be zero at step 202 and CC method 200 concludes. Otherwise the method 200 proceeds to step 203. If the difference is INO determined to be greater than zero at step 203, the number of leading zero bits in the two's complement integer representing the fixed-point difference is determined at step 204.
Likewise, the number of leading one bits in the twos complement integer representation
\O
of the difference is determined at step 205 for a difference less than zero After the number of leading zero or one bits has been determined, the number of bytes necessary to encode the difference is determined at step 206. The number of non-redundant data bits in the twos complement integer representing the difference is determined as follows: number of bits in two's complement integer- number of leading 0 or 1 bits 1.
Seven bits of data may be encoded per byte. Therefore the number of bytes required to encode the difference is determined as follows: (number of non-redundant data bits 6) 7.
where indicates integer division. If the method 200 determines at step 207 that the next byte to be encoded is not the final byte for the difference, the method 200 proceeds to step 208.
At step 208, the continuation bit of the non-final encoded byte is set to one indicating that the current encoded byte is not the last byte in the encoded sequence I:\CISRA\ARR\ARR 11\774765.doc IND
\O
representing the difference. The other bits in the encoded byte are set to be the least O significant seven bits of the twos complement integer representing the difference which Cc have not yet been encoded. As described above, the method 200 indicates whether each IND byte is the last byte in the sequence using one or more predetermined bit locations in the byte. In particular, if the method 200 determines at step 207 that the next byte to be Cc, encoded is the last byte for the difference, then the method 200 proceeds to step 209. At
\O
step 209, the continuation bit is set to zero indicating that the current byte is the last byte in the encoded byte sequence, and remaining data bits in the twos complement integer representing the difference that have not been encoded are copied to the least significant seven bits of the final encoded byte. Since the number of data bits in the twos complement integer representing the difference may not be a multiple of seven uninitialised bits in the final byte are padded out with zeros if the difference is greater than zero and with ones otherwise.
Absolute coordinate values are also encoded using the method 200 in steps 106, 119, and 120 of method 100.
When rendering a display list to pixels, the encoded path data needs to be decoded.
The decoding process is symmetrical to the encoding methods described above. The continuation bits in the subpath byte stream identify sequences of encoded bytes representing one coordinate difference or absolute coordinate value. The second most significant data bit in the final encoded byte of each coordinate value identifies whether the value is positive or negative. The precision of the coordinate is worked out from the type of the segment and its surrounding segments using Table 2. The segment type information for subpaths are stored with the path data in such a way that they are accessible during the decoding process.
I:\CISRA\ARR\ARR I 1\774765.doc O -16- The methods described above may be implemented using a computer system 300, O such as that shown in Fig. 3 wherein the processes of Figs. 1 and 2 may be Cc implemented as software, such as one or more application programs executable within the O computer system 300. In particular, the steps of the described methods are effected by
INO
instructions in the software that are carried out within the computer system 300. The instructions may be formed as one or more code modules, each for performing one or more
NO
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 may be stored in a computer readable medium, including the storage devices described below, for example. The software may be loaded into the computer system 300 from the computer readable medium, and then be executed by the computer system 300. A computer readable medium having such software or computer program recorded on it is a computer program product. The use of the computer program product in the computer system 300 preferably effects an advantageous apparatus for implementing the described methods.
As seen in Fig. 3, the computer system 300 is formed by a computer module 301, input devices such as a keyboard 302 and a mouse pointer device 303, and output devices including a printer 315, a display device 314 and loudspeakers 317. The printer 315 is preferably a digital printer and comprises a memory 351 together with a processor 352 connected thereto. An external Modulator-Demodulator (Modem) transceiver device 316 may be used by the computer module301 for communicating to and from a communications network 320 via a connection 321. The network 320 may be a wide-area network (WAN), such as the Internet or a private WAN. Where the connection 321 is a I 1\774765.doc IND -17telephone line, the modem 316 may be a traditional "dial-up" modem. Alternatively, O where the connection 321 is a high capacity (eg: cable) connection, the modem 316 may be a broadband modem. A wireless modem may also be used for wireless connection to the IND network 320.
The computer module 301 typically includes at least one processor unit 305, and a memory unit 306 for example formed from semiconductor random access memory (RAM)
\O
and read only memory (ROM). The module 301 also includes an number of input/output interfaces including an audio-video interface307 that couples to the video display314 and loudspeakers317, an 1/O interface313 for the keyboard302 and mouse 303 and optionally a joystick (not illustrated), and an interface 308 for the external modem 316 and printer315. In some implementations, the modem 316 may be incorporated within the computer module 301, for example within the interface 308. The computer module 301 also has a local network interface 311 which, via a connection 323, permits coupling of the computer system 300 to a local computer network 322, known as a Local Area Network (LAN). As also illustrated, the local network 322 may also couple to the wide network 320 via a connection 324, which would typically include a so-called "firewall" device or similar functionality. The interface 311 may be formed by an Ethemrnet T M circuit card, a wireless Bluetooth T M or an IEEE 802.11 wireless arrangement.
The interfaces 308 and 313 may afford both 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 309 are provided and typically include a hard disk drive (HDD) 310. Other devices such as a floppy disk drive and a magnetic tape drive (not illustrated) may also be used. An optical disk drive 312 is typically provided to act as a non-volatile source of data. Portable I:\CISRA\ARR\ARR I 1\774765.doc I-18-
\O
memory devices, such optical disks (eg: CD-ROM, DVD), USB-RAM, and floppy disks O for example may then be used as appropriate sources of data to the system 300.
CC The components 305, to 313 of the computer module 301 typically communicate via an interconnected bus 304 and in a manner which results in a conventional mode of operation of the computer system 300 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 MacTM or alike computer systems evolved therefrom.
Typically, the application programs discussed above are resident in a memory 351 of the printer 315 and are read and controlled in execution by a processor 352 of the printer 315. Alternatively, the application programs may be resident on the hard disk drive 310 and be read and controlled in execution by the processor 305. Intermediate storage of such programs and any data fetched from the networks 320 and 322 may be accomplished using the memory 306, possibly in concert with the hard disk drive 310 and the memory 351. In some instances, the application programs may be supplied to the user encoded on one or more CD-ROM and read via the corresponding drive 312, or alternatively may be read by the user from the networks 320 or 322. Still further, the software may also be loaded into the computer system 300 from other computer readable media. Computer readable media refers to any storage medium that participates in providing instructions and/or data to the computer system 300 for execution and/or processing. Examples of such media include floppy disks, magnetic tape, CD-ROM, a hard disk drive, a ROM or integrated circuit, 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 xxx0l.
Examples of computer readable transmission media that may also participate in the I:\CISRA\ARR\ARR I 1\774765.doc IND-19provision of instructions and/or data include radio or infra-red transmission channels as O well as a network connection to another computer or networked device, and the Intemrnet or CC)Intranets including e-mail transmissions and information recorded on Websites and the IND like.
S 5 The second part of the application programs and the corresponding code modules 0 mentioned above may be executed to implement one or more graphical user interfaces
\O
(GUIs) to be rendered or otherwise represented upon the display 314, for example.
Through manipulation of the keyboard 302 and the mouse 303, a user of the computer system 300 and the application may manipulate the interface to provide controlling commands and/or input to the applications associated with the GUI(s).
The described methods may alternatively be implemented in dedicated hardware such as one or more integrated circuits performing the functions or sub functions of the described methods. Such dedicated hardware may include graphic processors, digital signal processors, or one or more microprocessors and associated memories.
Industrial Applicability It is apparent from the above that the arrangements described are applicable to the computer and data processing industries.
The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive.
In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including", and not "consisting only of'. Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings.
I:\CISRA\ARR\ARR I 1\774765.doc

Claims (9)

1. A method of encoding a path, each said path comprising one or more subpaths, INO each said subpath comprising a plurality of control points, each said control point comprising a pair of coordinate values, said method comprising the steps of: (N determining the difference between a current control point coordinate value of \O Ssaid path and a coordinate value corresponding to a previously encoded control point of said path; generating from said difference a binary representation of length dependent on the magnitude of said difference; and partitioning said binary representation into a sequence of one or more fixed- length bytes representing at least a portion of the encoded path, wherein each said byte comprises one or more predetermined bit locations indicating whether the byte is a last byte in said sequence.
2. The method according to claim 1, wherein said predetermined bit location is the most significant bit location in the byte.
3. The method according to claim 1, wherein said binary representation is a fixed-point representation of said difference.
4. The method according to claim 3, wherein said binary representation is a twos complement representation of said fixed-point representation of said difference, with all but one leading bit symbol omitted. I:\CISRA\ARR\ARR 11\774765.doc ND -21- O O
5. The method according to claim 3, wherein each said subpath comprises one or more C segments, and precision of said fixed-point representation depends on a type of said segment to which said control point belongs. C
6. The method according to claim 5, wherein said precision further depends on a type of O Sthe segments in said subpath preceding and succeeding said segment.
7. The method according to claim 1, wherein said partitioning comprises padding a last byte in said sequence with bits equal to a most significant bit in said binary representation.
8. The method according to claim 1, further comprising the step of repeating steps to for a first control point coordinate value in said subpath.
9. The method according to claim 1, further comprising the step of repeating steps (b) to for a last control point coordinate value in said subpath. DATED this the 31st Day of October 2006 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant SPRUSON&FERGUSON I:\CISRA\ARR\ARR I 1\774765.doc
AU2006235766A 2006-10-31 2006-10-31 Path Compression Abandoned AU2006235766A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2006235766A AU2006235766A1 (en) 2006-10-31 2006-10-31 Path Compression

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AU2006235766A AU2006235766A1 (en) 2006-10-31 2006-10-31 Path Compression

Publications (1)

Publication Number Publication Date
AU2006235766A1 true AU2006235766A1 (en) 2008-05-15

Family

ID=39409685

Family Applications (1)

Application Number Title Priority Date Filing Date
AU2006235766A Abandoned AU2006235766A1 (en) 2006-10-31 2006-10-31 Path Compression

Country Status (1)

Country Link
AU (1) AU2006235766A1 (en)

Similar Documents

Publication Publication Date Title
US8761528B2 (en) Compression of image data
JP4475820B2 (en) System and method for compressing and decompressing extensible embedded parallel data
US7983500B2 (en) Encoding method, encoding apparatus, decoding method, and decoding apparatus
US7039241B1 (en) Method and apparatus for compression and decompression of color data
US9159114B2 (en) Texture decompression for graphics processors
US20180075574A1 (en) Method and apparatus for compressing randomly accessed data
US20020126754A1 (en) MPEG video editing-cut and paste
CN102113305B (en) High dynamic range texture compression
JP2000132704A (en) Image information processor and method
US10511858B2 (en) Bit packing for delta color compression
CN101282410A (en) Multidimensional data encoding apparatus and decoding apparatus, and control method thereof
CN110214338B (en) Application of delta color compression to video
JP3211640B2 (en) Two-dimensional method and system for binary image compression
EP2787738B1 (en) Tile-based compression for graphic applications
KR102231975B1 (en) Techniques for performing a forward transformation by a video encoder using a forward transform matrix
CN104113757A (en) Color Buffer Compression
CN107534446B (en) ASIC block for high bandwidth LZ77 decompression
US10186236B2 (en) Universal codec
JP2008193263A (en) Image processing method, image processing device, image processing program, and record medium
CN104904199B (en) The decoding method and device of depth look-up table
US8013862B2 (en) Texture codec
AU2006235766A1 (en) Path Compression
JP6847033B2 (en) Hybrid block-based compression
US5760787A (en) Data storage format
US6169819B1 (en) High performance surface normal compression

Legal Events

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