A image is printed from a source of drawing instructions. The image is reducible to pixels arranged in a plurality of ranked image lines. The system employs a storage device having compressed and uncompressed regions. Each region has a designated capacity and each is arranged to store pixels of one or more of the plurality of image lines. A drawing processor is coupled to the storage device and can be coupled to the source of drawing instructions for responding thereto. This drawing processor can store new pixels in the storage device for successively selected ones of the image lines. The drawing processor has a conditional device, a decompression device and an insertion device. The conditional device can compressively encode and move from the uncompressed region to the compressed region, a remote one of the image lines, if: a) the selected one of the image lines is in the compressed region, and b) the uncompressed region has reached its designated capacity. The decompression device can expansively decode the selected one of the image lines, if located in the compressed region. The insertion device can insert one or more new pixels according to the drawing instructions into the selected one of the image lines by storing the selected one in the uncompressed region. The printing system also has a printing engine coupled to the storage device for printing the plurality of image lines in rank order, decompressing compressed ones of the image lines from the compressed region before printing.
|
0. 43. A printing method employing a memory having a compressed region and an uncompressed region for printing a two dimensional image, the method comprising:
storing discrete portions of said image in said storage by:
(a) compressively encoding and moving from said uncompressed region to said compressed region at least one of said discrete image portions;
(b) expansively decoding a selected one of said discrete image portions, if located in said compressed region; and
(c) inserting one or more discrete image portions into said image by storing a selected discrete image portion in said uncompressed region; and
decompressing compressed ones of said discrete image portions from said compressed region before printing.
0. 42. A printing system for printing a two dimensional image comprising:
a memory having a compressed region and an uncompressed region and each region being arranged to store discrete portions of said image;
drawing means coupled to said memory, said drawing means being operable to store said discrete image portions in said memory, said drawing means including:
(a) conditional means for compressively encoding and moving discrete image portions from said uncompressed region to said compressed region;
(b) decompression means for expansively decoding discrete image portions, if located in said compressed region; and
(c) insertion means for inserting one or more discrete image portions into said image by storing a selected discrete image portion in said uncompressed region; and
printing means coupled to said memory for decompressing compressed ones of said discrete portions from said compressed region before printing.
0. 1. A printing system for printing from a source of drawing instructions a two dimensional image reducible to pixels arranged in a plurality of ranked image lines, comprising:
a storage means having a compressed region and an uncompressed region, each having a designated capacity and each being arranged to store pixels of one or more of said plurality of image lines;
drawing means coupled to said storage means and adapted to be coupled to said source of drawing instructions for responding thereto, said drawing means being operable to store new pixels in said storage means for successively selected ones of said image lines, said drawing means including:
(a) conditional means for compressively encoding and moving from said uncompressed region to said compressed region a remote one of said image lines, if (i) the selected one of said image lines is in said compressed region and (ii) said uncompressed region has reached its designated capacity;
(b) decompression means for expansively decoding said selected one of said image lines, if located in said compressed region; and
(c) insertion means for inserting one or more new pixels according to said drawing instructions into said selected one of said image lines by storing said selected one in said uncompressed region; and
printing means coupled to said storage means for printing said plurality of image lines in rank order, decompressing compressed ones of said image lines from said compressed region before printing.
0. 2. A printing system according to
0. 3. A printing system according to
0. 4. A printing system according to
0. 5. A printing system according to
0. 6. A printing system according to
0. 7. A printing system according to
0. 8. A printing system according to
0. 9. A printing system according to
means for determining at least one of the characteristics of the image, said drawing means being operable to select said chosen one of said densities in response to said one of the characteristics of said image.
0. 10. A printing system according to
0. 11. A printing system according to
0. 12. A printing system according to
0. 13. A printing system according to
0. 14. A printing system according to
0. 15. A printing system according to
0. 16. A printing system according to
0. 17. A printing system according to
0. 18. A printing system according to
0. 19. A printing system according to
0. 20. A printing system according to
0. 21. A printing system according to
0. 22. A printing system according to
a printer casing containing said storage means, said drawing means and said printing means.
0. 23. A printing system according to
0. 24. A printing system according to
a frame attached to said computer assembly for supporting said drawing means and said storage means.
0. 25. A printing system according to
0. 26. A printing system according to
0. 27. A printing method employing a storage means having a compressed region and an uncompressed region for printing from a source of drawing instructions a two dimensional image reducible to pixels arranged in a plurality of ranked image lines, comprising the steps of:
storing new pixels in said storage means for successively selected ones of said image lines by:
(a) compressively encoding and moving from said uncompressed region to said compressed region a remote one of said image lines, if (i) the selected one of said image lines is in said compressed region and (ii) said uncompressed region has reached its capacity;
(b) expansively decoding said selected one of said image lines, if located in said compressed region; and
(c) inserting one or more new pixels according to said drawing instructions into said selected one of said image lines by storing said selected one in said uncompressed region; and
printing said plurality of image lines in rank order, decompressing compressed ones of said image lines from said compressed region before printing.
0. 28. A printing method according to
successively decomposing one or more of the instructions from said source of drawing instructions into a list of simpler directions, while numerically limiting the instructions to keep said list within a designated size; and
saving said list in said storage means.
0. 29. A printing method according to
scanning the bands and restricting selection of said image lines to those allocated to a current one of said bands; and
cyclically executing the directions of said list with a scope limited to storing pixels in the storage means for the image lines contained within the current one of said bands.
0. 30. A printing method according to
overwriting the list of directions by decomposing and storing in said storage means unused ones of the instructions from said source of drawing instructions;
rescanning the bands and restricting selection of said image lines to those allocated to a current one of said bands; and
again cyclically executing the latest ones of the directions with a scope limited to storing pixels in the storage means for the image lines contained within the current one of said bands.
0. 31. A printing method according to
compressively encoding said image lines at a chosen one of a plurality of encoding densities; and
storing said image lines in said compressed region with a compression code signifying said chosen one of said encoding densities.
0. 32. A printing method according to
sensing the compression code and in response thereto expansively decoding said selected one of said image lines with respect to said chosen one of said encoding densities.
0. 33. A printing method according to
compressively re-encoding at least some of the image lines in said compressed region at a denser one of said densities, if said compressed region has reached its capacity.
0. 34. A printing method according to
determining at least one of the characteristics of the image, said chosen one of said densities being selected in dependence upon said one of the characteristics of said image.
0. 35. A printing method according to
0. 36. A printing method according to
0. 37. A printing method according to
0. 38. A printing method according to
0. 39. A printing method according to
changing the ratio of the capacities of said compressed and said uncompressed regions by redesignating portions of one in favor of the other in response to the availability of storage space in one or more of the regions of said storage means.
0. 40. A printing method according to
compressively encoding said image lines at a chosen one of a plurality of encoding densities; and
moving said image lines to said compressed region with a compression code signifying said chosen one of said encoding densities; and
changing the ratio of the capacities of said compressed and said uncompressed regions by redesignating portions of one in favor of the other in response to the choosing of the chosen one of said encoding densities.
0. 41. A printing method according to
changing the ratio of the capacities of said compressed and said uncompressed regions by redesignating portions of one in favor of the other in dependence upon the size of page to be printed.
|
This application is a continuation of U.S. Reissue application Ser. No. 08/310,249, filed 21 Sep. 1994, now U.S. Pat. No. RE36,947.
The present invention relates to printing systems and methods and, in particular, to apparatus and techniques for printing an image with a reduced need for memory.
A laser printer can be a fairly complex device having a self-contained computer system, usually referred to as a microprocessor based controller. The controller can have a microprocessor, 1 Mb of read only memory (ROM) and 2 Mb of random access memory (RAM). In many installations, the personal computer driving the laser printer may be slower and have less memory than the printer. Moreover, some sophisticated laser printers may employ a hard disk for handling complicated, high definition images.
Some laser printers include an interpreter that can respond to drawing commands such as: draw a line from point x1, y1 to point x2, y2. Even more sophisticated programming languages have been incorporated in ROM in some printers. Some fairly rich programming languages employ variables, looping, flow control, procedures (subroutines), arithmetic operations and most of the features offered by programming languages such as Basic or C. Accordingly, programs designed to drive such a sophisticated printer need only send programming commands, which then are interpreted by the printer to produce a two dimensional image.
When converting these programming instructions into an image, such a printer can produce a bit map image, that is, a pixel by pixel representation of the printed page. The term pixel refers to a small picture element, or its digital representation, large identical numbers of which are arranged to form an image. The bit map image is typically organized into a plurality of image lines each having none to many pixels. With such an organization a monochrome image at 300 dots per inch, on a 8.5″ by 11″ page, requires about 1 Mb of memory. The memory requirement quickly escalates for color or higher definition images.
Because of this high memory requirement, various techniques have been employed to reduce the memory demand. One known approach involves compressing the digital data in the image lines. For example, an image line may have a large amount of “white” space represented by an interval with repeating identical data bytes. Accordingly, these repeating bytes can be reduced to a code indicating the number of repetitions and the byte repeated.
Known compression techniques also include predictive encoding. Input data is scanned for repeated bytes, but is also scanned for consecutive bytes that differ by +/− 1 bit from the previous byte. The compression code requires only two bytes for repeats up to 63 and three bytes for all others. Slowly varying bit patterns are common for certain types of graphics and this predictive encoding works well with this type of information. Predictive encoding has also been employed with look up tables and binary arithmetic coding. This type of encoding can produce a very dense compression.
Other known compression techniques have been published under the JPEG Standard, such as the discrete cosine transform. This transform guarantees a certain amount of compression, which can be arbitrarily set at the time compression begins. The compression ratio can be set arbitrarily high, but will eventually cause a loss of visual detail, which may or may not be acceptable depending upon the application. At compression ratios 3:1 or 4:1 very little visual detail is lost.
An unsophisticated approach to reducing the memory requirements would be to prepare a data bit map with every stored image line compressed. With this process an image is normally assembled line by line, requiring the controller to revise image lines many times. The resulting difficulty is the large amount of time spent compressing and decompressing image lines as the image is assembled.
When all of the data is compressed at the computer and sent compressed to the printer, large amounts of memory are required at the computer, but not at the printer. Requiring that the printer decompress every line of the image can slow the printing process unacceptably.
For example, U.S. Pat. No. 4,901,248 shows a scheme for compressing alphanumeric data being sent to a printer. Space codes are nullified and pitch data corresponding to the space code is added instead. In another example, U.S. Pat. No. 4,641,263 shows a microprocessor used to emulate a local parallel printer. This microprocessor compresses the print data and transmits it serially for decompression at a remote printer. Other known techniques can magnify type fonts so that different sizes can be printed (see for example, U.S. Pat. Nos. 4,367,533 and 4,879,666; as well as U.S. Pat. No. 4,278,359 for adjusting the lateral velocity of a dot matrix printer head).
Another known technique is to reduce the relatively high programming commands to a “display list.” This display list can be a longer list of simplified directions. For example a circle is listed as a large number of very short lines forming a polygon. Next, a banding technique can be invoked to create a bit image, but only for a horizontal band at the top of the page. The printer engine then starts printing this band while a bit map is being created for a second contiguous band. The total amount of memory required for this method depends on the height of the bands and the amount of memory reserved for the display list. In practice, the display list and bands share memory and the size of the band is determined at print time by the amount of memory that is left.
The difficulty with the banding approach is the need to completely map the next band before the prior band is done printing; otherwise the printer must stop. Although some laser printers can be stopped mid-page, a significant number of existing laser printers should not be stopped at mid-page or a streak or blank gap will form. Thus, for relatively complex images, the banding method is unsatisfactory for general application.
Accordingly, there is a need for a printing system and method that is able to produce an image without interruption, and with a reduced memory demand.
In accordance with the illustrative embodiments, demonstrating features and advantages of the present invention, there is provided a printing system for printing from a source of drawing instructions a two dimensional image. This two dimensional image is reducible to pixels arranged in a plurality of ranked image lines. The printing system has a storage means with a compressed region and an uncompressed region. Each region has a designated capacity and each is arranged to store pixels of one or more of the plurality of image lines. The system has a drawing means coupled to the storage means and adapted to be coupled to the source of drawing instructions for responding thereto. This drawing means can store new pixels in the storage means for successively selected ones of the image lines. The drawing means includes a conditional means, a decompression means and an insertion means. The conditional means can compressively encode and move from the uncompressed region to the compressed region a remote one of the image lines, if a) the selected one of the image lines is in the compressed region and b) the uncompressed region has reached its designed capacity. The decompression means can expansively decode the selected one of the image lines, if located in the compressed region. The insertion means can insert one or more new pixels according to the drawing instructions into the selected one of the image lines, by storing this selected one in the uncompressed region. The printing system includes a printing means coupled to the storage means for printing the plurality of image lines in ranked order, decompressing compressed ones of the image lines from the compressed region before printing.
A related printing method of the same invention employs a storage means having a compressed region and an uncompressed region for printing from a source of drawing instructions a two dimensional image reducible to pixels arranged in a plurality of ranked image lines. The method includes the step of storing new pixels in the storage means for successively selected ones of the image lines by performing three substeps: First, a remote one of the image lines is compressively encoded and moved from the uncompressed region to the compressed region if a) the selected one of the image lines is in the compressed region, and b) the uncompressed region has reached its capacity. Secondly, this selected one of the image lines is expansively decoded, if located in the compressed region. Thirdly, one or more new pixels is inserted according to the drawing instructions into the selected one of the image lines, by storing the selected one in the uncompressed region. The printing method also includes the step of printing the plurality of the image lines in ranked order, decompressing compressed ones of the image lines from the compressed region before printing.
Accordingly, an improved system or method of the foregoing type can employ a memory with two regions for storing compressed and uncompressed data. When working with detailed commands from an interpreter (such as: draw three specified dots on a specified line) and memory is short, the program will first compress data on lines that are remote from the area where the image is currently being assembled. If the information for the affected line is already compressed, the system will decompress before modifying the line.
In the preferred embodiment, image lines are compressed only to the extent needed to free additional memory for writing new pixels. Accordingly, the region being drawn can remain uncompressed, so that processing occurs quickly.
When thus compressed or decompressed, data are transferred from one designated memory region to the other. The system can employ a table to keep track of where various lines are stored in memory and whether they are compressed or not. In some embodiments, the ratio of the size of the compressed and uncompressed regions can be altered dynamically, depending upon the amount of data and the extent of compression. For example, as space in the compressed region dwindles, the uncompressed region can be reduced to give the compressed region additional memory.
The preferred embodiment employs several compression techniques. At the start, the drawing instructions are examined to estimate the appropriate compression density. The system will typically restrict itself to a limited number of compression techniques that appear appropriate based upon sensed printer parameters, such as paper size, memory capacity etc. The sensed parameters may originate from user identification of the printer, from examination of the drawing instructions, from selection switches on the printer or elsewhere etc. On the other hand, the system can initially check the amount of memory available and may elect not to use any compression techniques if memory is adequate. In one embodiment, data are examined to determine the best compression technique (the best fit for text, graphics, scanned images, etc). For example, for a monochrome image with much text, a facsimile-type compression (CCITT, Group 3) may fit better than a default setting, such as a predictive encoder. Therefore the table entries for a predictive encoder would be replaced with the entries for a facsimile-type encoder/decoder. Regardless, when an image is being later drawn, the compression requests are examined periodically (e.g., after every ten requests) to determine the optimal compression method for current circumstances. Also, denser compression methods can be invoked later to recompress parts of the page, when the overall memory is insufficient to continue.
In one preferred embodiment, high level programming commands are reduced to a display list, that is, a list of simplified but possibly more numerous commands focusing on drawing line segments, for example. The display list is built until it reaches a certain size. Thereafter, the display list is “flushed.” Specifically, the display list is executed to draw images on a band by band basis. Thus, the display list will be executed several times, once for each band.
When a particular band is selected, only relevant elements of the display list are executed and only to the extent they affect image lines inside the selected band. This technique is most effective when there are rather large vertical images. Otherwise, a series of commands to draw numerous vertical lines could require every line in the page to be compressed and uncompressed numerous times, once for each vertical line. The display list avoids this time consuming approach by working only with line segments for the current band, where all image lines can remain uncompressed.
In the preferred system, multiple pages can be managed at the same time and color printers requiring three or four colors can be managed separately, as if they were independent pages. Furthermore, a storage disk can be used with the system if memory is inadequate, even after compression is invoked.
Moreover, the above data management can occur invisibly and can be used for any graphics or text oriented application where memory costs are at a premium, with a minimum of modifications to the graphics system.
The above brief description as well as other objects, features and advantages of the present invention will be more fully appreciated from the following description of presently preferred, but nonetheless illustrative embodiments and from the following drawings, in accordance with the present invention:
The operator can use console 16 to draw a graphic design. Software contained in memory 14 can send instructions through input/output device 18 such as “300 300 250 0 360 ARC STROKE.” This instruction specifies an arc centered at coordinates 300, 300, at a radius of 250, drawn from 0 to 360 degrees (a full circle). The outline is “stroked” (as opposed to filled). Printer 20, described hereinafter in further detail, can handle such a high level command. Alternatively, lower level commands in the form of a display list of line segments can be sent to the printer (in some cases an actual bit map will be transmitted).
A separate component subassembly, mounted at frame 22, can also handle high level commands. The elements of frame 22 can be placed on a separate card that plugs into an available slot in a personal computer. Alternatively, the subassembly of frame 22 can be a stand alone component that is hard wired between the main computer and the printer. In this embodiment, frame 22 employs a microprocessor 24. Local microprocessor 24 operates as a drawing means, which as described hereinafter includes a conditional means, decompression means and an insertion means. Microprocessor 24 can be an Intel type 80386, although other microprocessors can work as well. Microprocessor 24 connects through a bus to memory 26, which is a storage means having preferably ROM and RAM type of memory. The RAM can be about 1 MByte, although a greater or lesser amount of memory may be employed, depending upon the application. Latching buffer 28, input/output device 30, and memory 26 are all bused with processor 24. Information is received at the subassembly 22 by means of a latching buffer 28, comprising a number of data latches. Information may be exchanged with conventional printer 22 by input/output device 30. Printer 22 is arranged to receive a full data bit map.
Printing means 44 can be a laser printer engine having a laser beam that shines on a photosensitive drum upon which toner can be deposited for later transfer to paper by means of a transfer corona and subsequent fusing with fixing rollers (these known subcomponents are not illustrated).
To facilitate an understanding of the principles associated with the foregoing apparatus, its function will be described in connection with the flowcharts of
High level commands are delivered through serial communications port 40 (
This JPEG discrete cosine transform (DCT) is the compression technique of last resort and may only be used in installation lacking a nonvolatile storage. In some embodiments, for example monochrome printers, DCT may not be loaded into the table of permissible compressors. Alternatively, DCT may be loaded but used only when selected by a panel switch, much like the switches for draft/letter quality modes on conventional printers.
Next, the program contained in memory 36 and/or 34 (
The flushing of bands is illustrated in
In step S15, the program determines whether the display list has been finished, and if not, step S12 is repeated to increment the display list; otherwise step S16 is executed. In step S16, the processor determines whether the latest band is the last band. If not, step S11 is repeated to increment the band number; otherwise the routine is completed. If control returns to step S11, then the program effectively executes the directions in the display list cyclically.
If the there are more high level instructions that have yet to be reduced to a display list, the steps of
The foregoing mentioned saving pixels to memory but did not detail the steps performed should memory become inadequate. As described hereinafter, the program works to clear sufficient space in the uncompressed region of memory (memory 38 of FIG. 2). The memory 38 is segregated into regions for holding: uncompressed image lines of pixels; compressed image lines of pixels; and the display list data. When new pixels are to be written to an image line, the program must determine if the image line exists and if it is assigned to a compressed or uncompressed region. If the relevant line exists in the uncompressed region, pixels can be written on it in a straightforward manner.
If the image line does not exist or is in the storage means, the sequence of
In step S20, a remote, uncompressed image line is compressed by the program. This involves fetching the uncompressed image line from memory 38 (
In step S21, the program determines whether the newly compressed image line can be stored in the compressed region. If space is inadequate, at least some image lines already stored in the compressed region can be reencoded at a higher compression density, as provided in step S22. Specifically, the program has a plurality of compression techniques that compress at different predetermined densities or at a density selected at runtime, which is only limited by the consequential degradation of resolution. Therefore a higher density compressor can be selected in step S22. One or more lines are thus fetched from the compressed region and recompressed.
In following step S23, the program determines whether sufficient space now exists in the compressed region of memory to accept the new image line. If space is still unavailable, a number of other image lines from the compressed region (not the lines just compressed) can be copied to a disk, as indicated in step S24. At the conclusion of step S24, or if the conditions of steps S21 and S23 are affirmative, step S25 is executed next. Steps S21 through S25 act to compressively encode and move remote image lines.
In step S25, the compressed image lines that the program previously considered moving to the compressed region are now successfully moved. According to following step S26, if the image line “x” originally considered by the program is already on a hard disk, that line is fetched, as illustrated by step S27.
Much of the foregoing was concerned with freeing additional space in the uncompressed region of memory. Now that this accommodation has been made, the selected compressed image line is now decompressed and returned for further processing. Step S28 therefore now decodes expansively the selected image line “x.” In preferred embodiments more than one line is decompressed at this time. As before, processing a group of contiguous lines (typically 8, 16 or 32 lines) makes the processing more efficient.
As earlier in connection with
In
Referring to
To print this image step S38 is executed, wherein image lines are sent one by one to the printer engine (engine 44 of FIG. 2). Note that display list processing is not relevant at print time. Uncompressed lines are sent for printing in a straightforward manner. Compressed lines are first decompressed as illustrated by FIG. 8. Since decompression (as opposed to display list processing) can be performed quickly, the printer engine can proceed without stopping.
Decompression is handled differently during printing. Since the decompressed data will be used for printing only and not revised by the drawing process, an image line (or group of lines) is decompressed and stored in an area reserved for this purpose, when a page is being printed. This method avoids the time consuming possibility of compressing some other data in the uncompressed region, copying it to disk, etc. Also the decompressed data need not carry the uncompressed tag because recompression will not be ordered when decompressing the next line (or group of lines) solely for the purpose of temporarily storing just before printing. This streamlined decompression proceeds two to three times faster than the previously described decompression performed well before print time.
It is to be appreciated that various modifications may be implemented with respect to the above described preferred embodiments. For example, the various computer and memory types can be altered, depending upon the desired speed, accuracy, resolution etc. Also, the various programming steps can be reordered to execute steps in alternate sequences. Furthermore, in some instances the programming can be simplified to provide fewer compression types or to eliminate the use of a disk for storing image data. Also, the decision to perform banding can be deferred or can be decided immediately after receipt of the high level commands, depending on whether the image complexity demands such processing. Furthermore in some embodiments, banding techniques will not be used and the display list reduction technique will be eliminated as well.
Obviously, many modifications and variations of the present invention are possible in light of the above teachings. It is therefore to be understood that within the scope of the appended claims the invention may be practiced otherwise than as specifically described.
Kochan, Stephen, Wood, Patrick H.
Patent | Priority | Assignee | Title |
7113302, | Oct 16 2001 | Texas Instruments Incorporated | Printer with unified display list and banded display lists |
7324229, | Apr 10 2002 | Texas Instruments Incorporated | Rendering in a printer using bands |
Patent | Priority | Assignee | Title |
3921135, | |||
4725815, | Jan 16 1984 | International Business Machines Corporation; INTERNATIONAL BUSINESS MACHINES CORPORATION, A CORP OF NEW YORK | Method for encoding and decoding a digital image |
4791680, | Mar 25 1986 | Matsushita Electric Industrial Co. | Image data converter |
5068805, | Sep 17 1988 | Brother Kogyo Kabushiki Kaisha | Data processor for processing original image information into bit map data, having means for permitting the bit map data to be always stored in varying-capacity memory |
5150454, | Oct 16 1991 | PIPELINE ASSOCIATES, INC | Printing system and method |
5206735, | Jun 29 1990 | Xerox Corporation | Job interrupt for electronic copying/printing machines |
RE36947, | Sep 21 1994 | Electronics for Imaging, Inc. | Printing system and method |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 18 2000 | Electronics for Imaging, Inc. | (assignment on the face of the patent) | / | |||
Sep 07 2000 | WOOD, PATRICK | Electronics for Imaging, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 011248 | /0195 |
Date | Maintenance Fee Events |
Date | Maintenance Schedule |
May 10 2008 | 4 years fee payment window open |
Nov 10 2008 | 6 months grace period start (w surcharge) |
May 10 2009 | patent expiry (for year 4) |
May 10 2011 | 2 years to revive unintentionally abandoned end. (for year 4) |
May 10 2012 | 8 years fee payment window open |
Nov 10 2012 | 6 months grace period start (w surcharge) |
May 10 2013 | patent expiry (for year 8) |
May 10 2015 | 2 years to revive unintentionally abandoned end. (for year 8) |
May 10 2016 | 12 years fee payment window open |
Nov 10 2016 | 6 months grace period start (w surcharge) |
May 10 2017 | patent expiry (for year 12) |
May 10 2019 | 2 years to revive unintentionally abandoned end. (for year 12) |