USRE36947E - Printing system and method - Google Patents

Printing system and method Download PDF

Info

Publication number
USRE36947E
USRE36947E US08/310,249 US31024994A USRE36947E US RE36947 E USRE36947 E US RE36947E US 31024994 A US31024994 A US 31024994A US RE36947 E USRE36947 E US RE36947E
Authority
US
United States
Prior art keywords
data
iadd
iaddend
image
compressed
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.)
Expired - Lifetime
Application number
US08/310,249
Inventor
Patrick Wood
Stephen Kochan
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.)
Electronics for Imaging Inc
Original Assignee
Electronics for Imaging 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 Electronics for Imaging Inc filed Critical Electronics for Imaging Inc
Priority to US08/310,249 priority Critical patent/USRE36947E/en
Priority to US09/552,108 priority patent/USRE38732E1/en
Application granted granted Critical
Publication of USRE36947E publication Critical patent/USRE36947E/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/0005Accepting output data; Preparing data for the controlling system
    • G06K2215/0011Accepting output data; Preparing data for the controlling system characterised by a particular command or data flow, e.g. Page Description Language, configuration commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/0062Handling the output data combining generic and host data, e.g. filling a raster
    • G06K2215/0065Page or partial page composition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/0062Handling the output data combining generic and host data, e.g. filling a raster
    • G06K2215/0071Post-treatment of the composed image, e.g. compression, rotation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/0077Raster outputting to the print element(s)

Definitions

  • 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).
  • ROM read only memory
  • RAM random access memory
  • the personal computer driving the laser printer may be slower and have less memory than the printer.
  • 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 x 1 , y 1 to point x 2 , y 2 .
  • 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.
  • Such a printer can produce a bit map image, that is, a pixel by pixel representation of the printed page.
  • 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.
  • 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.
  • An unsophisticated approach to reducing the memory requirements would be to prepare a data bit map with every stored image line compressed. With the 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 one 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.
  • 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.
  • an improved system or method of the foregoing type can employ a memory with two regions for storing compressed and uncompressed data.
  • an interpreter such as: draw three specified dots on a specified line
  • 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.
  • 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.
  • the system can employ a table to keep track of where various lines are stored in memory and whether they are compressed or not.
  • 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.
  • a facsimile-type compression 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.
  • 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.
  • 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.
  • a storage disk can be used with the system if memory is inadequate, even after compression is invoked.
  • 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.
  • FIG. 1 is a schematic block diagram of a printing system employing a printing method in accordance with the principles of the present invention.
  • FIG. 2 is a schematic block diagram showing a printing system also in accordance with the principles of the present invention, but also including a source of drawing instructions in the form of a computer.
  • FIGS. 3-9 are flowcharts associated with the programming executed by the apparatus of FIGS. 1 or 2.
  • FIG. 10 is a two dimensional image produced by the printing system and method of the apparatus of FIGS. 1 or 2.
  • FIG. 1 shows a computer in the form of a main processor 10 connected by bus 12 to a memory 14, console 16 and input/output device 18. Elements 10, 12, 14 and 16 are referred to as a computer assembly.
  • Printer 20 has a printer casing and is connected to an output of device 18.
  • the foregoing elements can be part of a microcomputer, minicomputer or general purpose computer. Alternatively, these components can be replaced with a source that produces digital or other signals representing drawing instructions. These instructions can be high level programming commands or a simplified display list.
  • console 16 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.
  • the subassembly of frame 22 can be a stand alone component that is hard wired between the main computer and the printer.
  • 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.
  • FIG. 2 shows in further detail the printing system identified in FIG. 1 as printer 20.
  • This printing system employs a printer microprocessor 32, which may be a Motorola type 68000 or other appropriate unit.
  • Microprocessor 32 connects through bus 33 to read only memories, shown herein as EEPROM memory 34 and ROM memory 36.
  • Memory 36 is arranged to produce the programming steps hereinafter described.
  • a storage means is shown herein as RAM type memory 38 also bused with the other memories.
  • memory 38 is partitioned to have a compressed and uncompressed data region also as described hereinafter.
  • Bus 33 also connects to serial communications port 40, which is able to send and receive serial data with respect to bus 33.
  • Registers and data controllers are contained in block 42. These registers are used to temporarily store data for transmission to printer engine 44. Combinational logic contained in block 42 also sends control signals to RAM type memory 38 along the line connecting these two elements.
  • 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).
  • High level commands are delivered through serial communications port 40 (FIG. 2) and are stored in memory 38. (Although a simplified display list could be sent instead.)
  • the instructions thus stored can be scanned at this time or at later stages as shown in FIG. 3.
  • step S1 the data is scanned to determine its nature (text, graphics, scanned images etc.)
  • step S2 the program determines whether the least dense compression technique is satisfactory. If so, this routine returns a "1," otherwise step S3 is executed to determine if the next densest compression method is satisfactory. If so, the routine returns a "2,” otherwise similar steps are performed until step S4 is reached to determine if the nth compression method is appropriate. If so, the step returns the assigned number "n,” otherwise step S5 is executed.
  • step S5 the program determines if memory is full. If not, a zero is returned, otherwise the program returns a flag indicating that the densest compressor, the discrete cosine transform of the JPEG standard, is to be used.
  • DCT JPEG discrete cosine transform
  • step S7 the program contained in memory 36 and/or 34 (FIG. 2) determines if the image will be complicated enough to require display list processing. If so, step S7 is executed (FIG. 4).
  • step S7 high level instructions such as a command to draw a circle, are reduced into simpler commands, such as directions to draw a line or a group of lines such as a polygon.
  • step S8 the decomposed instructions are saved in memory (RAM 38 of FIG. 2) as a display list. The process of successively decomposing instructions into a list of simpler directions is sometimes referred to as creating a display list.
  • step S9 the program determines whether the space allocated for the display list is full. If not, the program continues to increase the display list; otherwise, step S10 is executed, in which bands are flushed.
  • step S11 provides for scanning and rescanning of bands.
  • a two dimensional image 46 is broken down into plurality of bands 48.
  • the two dimensional image 46, as well as the bands 48 are each composed of a multiplicity of image lines composed of a series of dots or pixels that compose the image.
  • step S11 of FIG. 5 the program increments the band number, starting with the first band and indexing to the next band for subsequent passes.
  • step S12 the program increments the display list number, starting with the first direction on the list and indexing to the next direction on the list for subsequent passes.
  • step S13 the selected direction of the display list is analyzed to determined if it will affect the current band.
  • step S12 is repeated; otherwise step S14 is executed.
  • step S14 the current direction of the display list is executed, but only for image lines in the current band.
  • Step S14 involves inserting one or more pixels into the storage means (memory 38 of FIG. 2). If the affected image line is being drawn upon for the first time, the new information is stored in the uncompressed region of memory (memory 38 of FIG. 2). If memory is insufficient to hold this new line, other image lines are compressed and moved to the compressed region of memory in the manner described for FIG. 6. If the affected image line already has information, it is fetched in the manner described hereinafter and then saved in the uncompressed region of memory.
  • 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.
  • 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.
  • the steps of FIG. 4 are repeated to produce another display list. If the steps of FIG. 4 are repeated, this amounts to overwriting the display list of directions created during the last pass. The new display list thus created is then drawn as just described in connection with FIG. 5.
  • 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.
  • the program 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.
  • step S17 the processor determines whether the image line under consideration exists and is already uncompressed. If so, the line is simply fetched, revised and rewritten into memory (step S18); otherwise step S19 is executed.
  • step S19 the processor determines whether there is space available in the uncompressed region for the line under consideration. If so, the program jumps to steps S26 et seq., where, as described further hereinafter, the selected line "x" is fetched (possibly from disk) and then expansively decoded, otherwise step S20 is executed.
  • a remote, uncompressed image line is compressed by the program. This involves fetching the uncompressed image line from memory 38 (FIG. 2) and compressing it in a manner to be described further hereinafter. Preferably, more than one line will be compressed at one time. Processing a group of contiguous lines (typically 8, 16 or 32 lines) reduces the amount of tabular information stored and improves speed and density of compression. The group of lines chosen for compression should be remote from the region or band where image processing is now occurring. For example, when drawing at the top of a page, lines can be compressed near the bottom of the page. When drawing towards the end of the page, lines near the top of the page can be compressed. When drawing in the middle of the page, lines near the top and bottom of the page can be compressed.
  • 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.
  • 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.
  • 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.
  • step S25 the compressed image lines that the program previously considered moving to the compressed region are now successfully moved.
  • 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.
  • 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.
  • the display list or the higher level commands can be initially and subsequently evaluated to determine the appropriate compression density.
  • image lines are compressed by calling the selector subroutine, shown herein as step S30, to return the currently designated compression routine.
  • the appropriate compressor routine is located through the look up table, as indicated by step S31.
  • the routine is called by step S32.
  • the consequently compressed image line is then stored in the compressed region of memory in step S33 with a tag to indicate the type of compression invoked.
  • step S34 data fetched from the compressed region is examined to determine the compression technique indicated by its tag code.
  • the decompression routine is then looked up based upon this tag. Once the routine is located, the decompression is performed, as indicated by step S35. Thereafter the decompressed data is stored with a zero tag code signifying uncompressed data.
  • step S37 determines if all high level commands have been reduced to a display list and flushed as described before in connection with FIG. 5.
  • the memory (memory 38 of FIG. 2) contains a data bit image that is located in the uncompressed and compressed region of memory. Because some of the image lines are compressed, the demands on memory were reduced. Because some of the image lines are uncompressed, the preprinting processing time was reduced, as already described.
  • step S38 is executed, wherein image lines are sent one by one to the printer engine (engine 44 of FIG. 2).
  • printer engine engine 44 of FIG. 2.
  • 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.
  • the various computer and memory types can be altered, depending upon the desired speed, accuracy, resolution etc.
  • the various programming steps can be reordered to execute steps in alternate sequences.
  • the programming can be simplified to provide fewer compression types or to eliminate the use of a disk for storing image data.
  • 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.
  • banding techniques will not be used and the display list reduction technique will be eliminated as well.

Abstract

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 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.

Description

BACKGROUND OF THE INVENTION
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 the 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.
SUMMARY OF THE INVENTION
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 one 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.
BRIEF DESCRIPTION OF THE DRAWINGS
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:
FIG. 1 is a schematic block diagram of a printing system employing a printing method in accordance with the principles of the present invention.
FIG. 2 is a schematic block diagram showing a printing system also in accordance with the principles of the present invention, but also including a source of drawing instructions in the form of a computer.
FIGS. 3-9 are flowcharts associated with the programming executed by the apparatus of FIGS. 1 or 2.
FIG. 10 is a two dimensional image produced by the printing system and method of the apparatus of FIGS. 1 or 2.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
FIG. 1 shows a computer in the form of a main processor 10 connected by bus 12 to a memory 14, console 16 and input/output device 18. Elements 10, 12, 14 and 16 are referred to as a computer assembly. Printer 20 has a printer casing and is connected to an output of device 18. The foregoing elements can be part of a microcomputer, minicomputer or general purpose computer. Alternatively, these components can be replaced with a source that produces digital or other signals representing drawing instructions. These instructions can be high level programming commands or a simplified display list.
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.
FIG. 2 shows in further detail the printing system identified in FIG. 1 as printer 20. This printing system employs a printer microprocessor 32, which may be a Motorola type 68000 or other appropriate unit. Microprocessor 32 connects through bus 33 to read only memories, shown herein as EEPROM memory 34 and ROM memory 36. Memory 36 is arranged to produce the programming steps hereinafter described. A storage means is shown herein as RAM type memory 38 also bused with the other memories. Furthermore, memory 38 is partitioned to have a compressed and uncompressed data region also as described hereinafter. Bus 33 also connects to serial communications port 40, which is able to send and receive serial data with respect to bus 33. Registers and data controllers are contained in block 42. These registers are used to temporarily store data for transmission to printer engine 44. Combinational logic contained in block 42 also sends control signals to RAM type memory 38 along the line connecting these two elements.
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 FIGS. 3-9. It will be appreciated, however, that this programming and the associated memory operations could be performed instead with subassembly 22 of FIG. 1.
High level commands are delivered through serial communications port 40 (FIG. 2) and are stored in memory 38. (Although a simplified display list could be sent instead.) The instructions thus stored can be scanned at this time or at later stages as shown in FIG. 3. In step S1 the data is scanned to determine its nature (text, graphics, scanned images etc.) In step S2, the program determines whether the least dense compression technique is satisfactory. If so, this routine returns a "1," otherwise step S3 is executed to determine if the next densest compression method is satisfactory. If so, the routine returns a "2," otherwise similar steps are performed until step S4 is reached to determine if the nth compression method is appropriate. If so, the step returns the assigned number "n," otherwise step S5 is executed. In step S5, the program determines if memory is full. If not, a zero is returned, otherwise the program returns a flag indicating that the densest compressor, the discrete cosine transform of the JPEG standard, is to be used.
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 (FIG. 2) determines if the image will be complicated enough to require display list processing. If so, step S7 is executed (FIG. 4). In step S7, high level instructions such as a command to draw a circle, are reduced into simpler commands, such as directions to draw a line or a group of lines such as a polygon. In succeeding step S8, the decomposed instructions are saved in memory (RAM 38 of FIG. 2) as a display list. The process of successively decomposing instructions into a list of simpler directions is sometimes referred to as creating a display list. In step S9, the program determines whether the space allocated for the display list is full. If not, the program continues to increase the display list; otherwise, step S10 is executed, in which bands are flushed.
The flushing of bands is illustrated in FIG. 5, starting with step S11, which provides for scanning and rescanning of bands. As shown in FIG. 10, a two dimensional image 46 is broken down into plurality of bands 48. The two dimensional image 46, as well as the bands 48 are each composed of a multiplicity of image lines composed of a series of dots or pixels that compose the image. In step S11 of FIG. 5, the program increments the band number, starting with the first band and indexing to the next band for subsequent passes. Next, in step S12, the program increments the display list number, starting with the first direction on the list and indexing to the next direction on the list for subsequent passes. In step S13, the selected direction of the display list is analyzed to determined if it will affect the current band. If not, step S12 is repeated; otherwise step S14 is executed. In step S14 the current direction of the display list is executed, but only for image lines in the current band. Step S14 involves inserting one or more pixels into the storage means (memory 38 of FIG. 2). If the affected image line is being drawn upon for the first time, the new information is stored in the uncompressed region of memory (memory 38 of FIG. 2). If memory is insufficient to hold this new line, other image lines are compressed and moved to the compressed region of memory in the manner described for FIG. 6. If the affected image line already has information, it is fetched in the manner described hereinafter and then saved in the uncompressed region of memory.
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 FIG. 4 are repeated to produce another display list. If the steps of FIG. 4 are repeated, this amounts to overwriting the display list of directions created during the last pass. The new display list thus created is then drawn as just described in connection with FIG. 5.
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 FIG. 6 is executed. In step S17, the processor determines whether the image line under consideration exists and is already uncompressed. If so, the line is simply fetched, revised and rewritten into memory (step S18); otherwise step S19 is executed. In step S19, the processor determines whether there is space available in the uncompressed region for the line under consideration. If so, the program jumps to steps S26 et seq., where, as described further hereinafter, the selected line "x" is fetched (possibly from disk) and then expansively decoded, otherwise step S20 is executed.
In step S20, a remote, uncompressed image line is compressed by the program. This involves fetching the uncompressed image line from memory 38 (FIG. 2) and compressing it in a manner to be described further hereinafter. Preferably, more than one line will be compressed at one time. Processing a group of contiguous lines (typically 8, 16 or 32 lines) reduces the amount of tabular information stored and improves speed and density of compression. The group of lines chosen for compression should be remote from the region or band where image processing is now occurring. For example, when drawing at the top of a page, lines can be compressed near the bottom of the page. When drawing towards the end of the page, lines near the top of the page can be compressed. When drawing in the middle of the page, lines near the top and bottom of the page can be compressed.
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 FIG. 3, the display list or the higher level commands can be initially and subsequently evaluated to determine the appropriate compression density. As shown in FIG. 7, image lines are compressed by calling the selector subroutine, shown herein as step S30, to return the currently designated compression routine. When the compressor value is returned by step S30 (1 to n, or JPEG), the appropriate compressor routine is located through the look up table, as indicated by step S31. Once the appropriate compression subroutine is located, the routine is called by step S32. The consequently compressed image line is then stored in the compressed region of memory in step S33 with a tag to indicate the type of compression invoked.
In FIG. 8, the reverse process, decompression, is illustrated. In step S34, data fetched from the compressed region is examined to determine the compression technique indicated by its tag code. The decompression routine is then looked up based upon this tag. Once the routine is located, the decompression is performed, as indicated by step S35. Thereafter the decompressed data is stored with a zero tag code signifying uncompressed data.
Referring to FIG. 9, the program in step S37 determines if all high level commands have been reduced to a display list and flushed as described before in connection with FIG. 5. When all high level commands have been reduced to a display list which was then flushed in accordance with FIG. 5 the memory (memory 38 of FIG. 2) contains a data bit image that is located in the uncompressed and compressed region of memory. Because some of the image lines are compressed, the demands on memory were reduced. Because some of the image lines are uncompressed, the preprinting processing time was reduced, as already described.
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 embodiment. 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.

Claims (61)

We claim:
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.
2. A printing system according to claim 1 wherein said drawing means is operable to store in the storage means pixels associated with a full page worth of the instructions, said printing means being operable to await the storage in said storage means of said full page worth of said pixels before printing the image lines of said page.
3. A printing system according to claim 2 wherein said decompression means is operable to compressively encode and move from said uncompressed region to said compressed region said remote one of said image lines together with a plurality of other ones of said image lines proximate said remote one, so that lines are moved in groups.
4. A printing system according to claim 3 wherein said decompression means is operable to expansively decode and move from said compressed region to said uncompressed region said selected one of said image lines together with a plurality of other ones of said image lines proximate said .[.remote.]. .Iadd.selected .Iaddend.one, so that lines are moved in groups.
5. A printing system according to claim 2 wherein said drawing means is operable to successively decompose one or more of the instructions from said source of drawing instructions into a list of simpler directions and store said list in said storage means, said drawing means being operable to numerically limit the instructions to keep said list within a designated size.
6. A printing system according to claim 5 wherein said two dimensional image comprises a plurality of contiguous bands and each of the image lines is allocated to a corresponding one of said bands, said drawing means being operable to scan the bands and restrict selection of said image lines to those allocated to a current one of said bands, said drawing means being operable to cyclically execute 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.
7. A printing system according to claim 6 wherein said drawing means is operable to overwrite the list of directions by decomposing and storing in said storage means unused ones of the instructions from said source of drawing instructions, said drawing means being operable to rescan the bands and restrict selection of said image lines to those allocated to a current one of said bands, said drawing means being operable to again cyclically execute 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.
8. A printing system according to claim 7 wherein said conditional means is operable to compressively encode said image lines at a chosen one of a plurality of encoding densities and is operable to move said image lines to said compressed region with a compression code signifying said chosen one of said encoding densities.
9. A printing system according to claim 8 comprising:
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.
10. A printing system according to claim 8 wherein said storage means has a printing region, said printing means being operable to expansively decode said image lines in rank order and store them in said printing region.
11. A printing system according to claim 8 wherein said decompression means is operable to store said selected one of said image lines after decompression in said uncompressed region with an uncompressed code signifying a lack of compression, said printing means being operable to store said image lines in said printing region without a code signifying a lack of compression.
12. A printing system according to claim 8 wherein said storage means is volatile and has a total capacity insufficient to hold all of said image lines uncompressed, the densest one of said encoding densities having the capability of reducing the resolution of the two dimensional image and storing it at a density that enables storage in said storage means of all of said image lines, without regard to the number and arrangement of pixels in said image lines, so that nonvolatile memory is unneeded for storing said image lines.
13. A printing system according to claim 8 wherein said decompression means is operable to sense the compression code and in response thereto expansively decode said selected one of said image lines with respect to said chosen one of said encoding densities.
14. A printing system according to claim 13 wherein said conditional means is operable if said compressed region has reached its designated capacity to compressively re-encode at least some of the image lines in said compressed region at a denser one of said densities.
15. A printing system according to claim 13 further comprising a non-volatile memory coupled to said drawing means, said conditional means being operable to move at least some of the image lines in said compressed region to said non-volatile memory, if said compressed region has reached its designated capacity and the image lines in said compressed region are encoded at the densest permissible one of said densities.
16. A printing system according to claim 13 further comprising a non-volatile memory coupled to said drawing means, said conditional means being operable to move at least some of the image lines in said compressed region to said non-volatile memory, if said compressed region has reached its designated capacity.
17. A printing system according to claim 16 wherein said decompression means is operable to expansively decode said selected one of said image lines, if located in said non-volatile memory.
18. A printing system according to claim 2 wherein said drawing means is operable to change 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.
19. A printing system according to claim 2 wherein said conditional means is operable to compressively encode said image lines at a chosen one of a plurality of encoding densities and is operable to move said image lines to said compressed region with a compression code signifying said chosen one of said encoding densities, said drawing means being operable to change 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.
20. A printing system according to claim 2 wherein said drawing means is operable to change 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 size of page to be printed by said printing means.
21. A printing system according to claim 1 wherein said source of drawing instructions comprises a computer assembly having a processor and a computer memory spaced and packaged separately from said storage means, said drawing means and said printing means.
22. A printing system according to claim 21 further comprising:
a printer casing containing said storage means, said drawing means and said printing means.
23. A printing system according to claim 6 wherein said source of drawing instructions comprises a computer assembly having a processor and a computer memory spaced and packaged separately from said storage means, said drawing means and said printing means.
24. A printing system according to claim 1 wherein said source of drawing instructions includes a computer assembly having a processor and a computer memory spaced and packaged separately from said printing means, said printing system further comprising:
a frame attached to said computer assembly for supporting said drawing means and said storage means.
25. A printing system according to claim 24 wherein said drawing means is operable to successively decompose one or more of the instructions from said source of drawing instructions into a list of simpler directions and store said list in said storage means, said drawing means being operable to numerically limit the instructions to keep said list within a designated size.
26. A printing system according to claim 25 wherein said two dimensional image comprises a plurality of contiguous bands and each of the image lines is allocated to a corresponding one of said bands, said drawing means being operable to scan the bands and restrict selection of said image lines to those allocated to a current one of said bands, said drawing means being operable to cyclically execute 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.
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.
28. A printing method according to claim 27 wherein the step of storing new pixels comprises the steps of:
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.
29. A printing method according to claim 28 wherein said two dimensional image comprises a plurality of contiguous bands and each of the image lines is allocated to a corresponding one of said bands, the step of storing new pixels comprises the steps of:
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.
30. A printing method according to claim 29 comprising the steps of:
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.
31. A printing method according to claim 30 comprising the steps of:
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.
32. A printing method according to claim 31 comprising the step of:
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.
33. A printing method according to claim 32 comprising the step of:
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.
34. A printing method according to claim 31 comprising the step of:
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.
35. A printing method according to claim 31 wherein the step of storing said selected one of said image lines after decompression in said .[.compressed.]. .Iadd.uncompressed .Iaddend.region is performed by storing said selected one with an uncompressed code signifying a lack of compression, the step of printing being performed by storing said image lines in said storage means without a code signifying a lack of compression.
36. A printing method according to claim 31 wherein said storage means is volatile and has a total capacity insufficient to hold all of said image lines uncompressed, the densest one of said encoding densities having the capability of reducing the resolution of the two dimensional image and storing it at a density that enables storage in said storage means of all of said image lines, without regard to the number and arrangement of pixels in said image lines, so that nonvolatile memory is unneeded for storing said image lines.
37. A printing method according to claim 27 wherein the step of compressively encoding and moving is performed by encoding and moving from said uncompressed region to said compressed region said remote one of said image lines together with a plurality of other ones of said image lines, so that lines are moved in groups.
38. A printing method according to claim 37 wherein the step of expansively decoding is performed by decoding and moving from said compressed region to said uncompressed region said selected one of said image lines together with a plurality of other ones of said image lines, so that lines are moved in groups.
39. A printing method according to claim 27 further comprising the step of
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.
40. A printing method according to claim 27 further comprising the steps of:
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.
41. A printing method according to claim 27 further comprising the step of:
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. .Iadd.
42. A method for producing image-defining data, comprising the steps of:
storing in a memory a plurality of drawing instructions;
executing a first drawing instruction of said plurality of drawing instructions to generate data;
compressing said data;
storing said compressed data in said memory;
executing a second drawing instruction of said plurality of drawing instructions, said second drawing instruction creating a need to modify said compressed data;
decompressing said compressed data in response to said need to modify said compressed data; and
modifying said decompressed data in accordance with said second drawing instruction to produce modified data..Iaddend..Iadd.43. The method of claim 42, wherein said data comprise a set of data..Iaddend..Iadd.44. The method of claim 43, wherein said set of data comprises an image line of data..Iaddend..Iadd.45. The method of claim 43, wherein said set of data comprises at least a portion of a band of data including a plurality of image lines of data..Iaddend..Iadd.46. The method of claim 42, wherein said data comprise pixel data..Iaddend..Iadd.47. The method of claim 42, wherein said modification step adds data to said decompressed data..Iaddend..Iadd.48. The method of claim 42, further comprising the
step of printing an image based on said modified data..Iaddend..Iadd.49. The method of claim 42, wherein said compressing step comprises:
compressing at least a portion of a set of data at a first compression density;
determining when said memory is insufficient to contain said compressed data;
further compressing said compressed portion of said set of data using a second compression density, said second compression density being denser than said first compression density..Iaddend..Iadd.50. The method of claim 49, wherein said first compression density is selected based on a sensed parameter..Iaddend..Iadd.51. The method of claim 50, wherein said sensed parameter is selected from the group consisting of identification of a printer, characteristics of a printer, examination of drawing instructions, interrogation of a printer, available memory, and combinations thereof..Iaddend..Iadd.52. The method of claim 42, wherein said compressing step comprises using a data compression technique enabling storage in said memory of substantially all of said image defining data..Iaddend..Iadd.53. The method of claim 52, wherein said data compression technique compresses data to a density which results in a loss of data..Iaddend..Iadd.54. The method of claim 53, wherein said data
compression technique is a discrete cosine transform..Iaddend..Iadd.55. The method of claim 52, wherein said data compression technique compresses data to a density which results in a reduction of resolution..Iaddend..Iadd.56. The method of claim 42, further comprising the step of recompressing said modified data..Iaddend..Iadd.57. The method of claim 52, further comprising the step of further compressing said compressed data so that said data may be stored in said memory at a density which enables storage of substantially all of said image defining data..Iaddend..Iadd.58. The method of claim 42, further comprising the step of printing an image based on a mixture of compressed and uncompressed data, said compressed data being decompressed prior to being printed..Iaddend..Iadd.59. A method for producing image-defining data in accordance with drawing instructions, said data capable of being used to generate an image, said method comprising the steps of:
compressing said data;
decompressing said compressed data in response to a need to modify at least a portion of said data; and
modifying at least a portion of said data to provide modified data, said modification step occurring prior to generating any image based on said data..Iaddend..Iadd.60. The method of claim 59, wherein said compressing step comprises using a data compression technique enabling storage in a memory of substantially all of said image defining data..Iaddend..Iadd.61. The method of claim 60, wherein said data compression technique compresses said data to a density which results in a loss of data..Iaddend..Iadd.62. The method of claim 61, wherein said data compression technique is a discrete cosine transform..Iaddend..Iadd.63. The method of claim 62, wherein said data compression technique compresses data to a density which results in a reduction of resolution..Iaddend..Iadd.64. The method of claim 59, where said data comprises a band of data..Iaddend..Iadd.65. The method of claim 64, wherein said band of data comprises a plurality of image lines of data..Iaddend..Iadd.66. The method of claim 59, wherein said data comprise pixel data..Iaddend..Iadd.67. The method of claim 64, wherein said modification step adds data to said decompressed band of data..Iaddend..Iadd.68. The method of claim 64, further comprising the step of printing an image based on said modified band of data..Iaddend..Iadd.69. A method for producing image-defining data in accordance with drawing instructions, said data capable of being used to generate an image, said method comprising the steps of:
compressing at least a portion of said data; and
modifying at least a portion of said compressed data in accordance with a drawing instruction requiring said modification, said modifying step occurring prior to generating any image based on said
data..Iaddend..Iadd. 0. The method of claim 69, wherein said compressing step comprises using a data compression technique enabling storage of substantially all of said image defining data in a memory..Iaddend..Iadd.71. The method of claim 70, wherein said data compression technique compresses data to a density which results in a loss of data..Iaddend..Iadd.72. The method of claim 70, wherein said data compression technique compresses data to a density which results in a reduction of resolution..Iaddend..Iadd.73. The method of claim 69, wherein said modifying step comprises:
decompressing at least a portion of compressed data requiring modification; and
modifying at least a portion of said decompressed data..Iaddend..Iadd.74. The method of claim 73, further comprising the step of generating an image
based on said modified decompressed data..Iaddend..Iadd.75. The method of claim 74, wherein said generating step comprises printing an image based on said modified decompressed data..Iaddend..Iadd.76. The method of claim 69, wherein said data comprise a set of data..Iaddend..Iadd.77. The method of claim 76, wherein said set of data comprises an image line of data..Iaddend..Iadd.78. The method of claim 69 or 73, wherein said set of data comprises a band of data including a plurality of image lines of data..Iaddend..Iadd.79. The method of claim 69, wherein said modifying step comprises adding data to said decompressed data..Iaddend..Iadd.80. The method of claim 69, wherein said modifying step comprises:
decompressing at least the portion of compressed data requiring modification; and
modifying at least a portion of said decompressed data..Iaddend..Iadd.81. The method of claim 80, further comprising the step of generating an image based on said modified decompressed data..Iaddend..Iadd.82. The method of claim 69, further comprising the step of generating an image based on said
modified compressed data..Iaddend..Iadd.83. The method of claim 69, further comprising the step of generating an image based on uncompressed data and said compressed modified data..Iaddend..Iadd.84. A method for producing image-defining data in accordance with drawing instructions, said method comprising the steps of:
successively storing, in a memory having a finite capacity, data generated in accordance with successive drawing instructions, said memory having an uncompressed region and a compressed region, the relative sizes of said compressed region and said uncompressed region varying in response to the memory requirements of said data;
determining whether said data can be stored in said uncompressed region without exceeding said uncompressed region's capacity;
responsive to a determination that said data will exceed said capacity of said uncompressed region, compressing said data;
increasing the amount of memory devoted to said compressed region;
storing said compressed data in said compressed region;
decompressing said compressed data and storing said decompressed data in said memory in response to a second drawing instruction; and
modifying said decompressed data in accordance with said second drawing instruction to produce modified data..Iaddend..Iadd.85. The method of claim 84, further comprising the step of recompressing said modified
data..Iaddend..Iadd.86. The method of claim 85, further comprising the step of printing an image based at least in part on said recompressed data..Iaddend..Iadd.87. A method for producing a set of image-defining data in response to drawing instructions, said method comprising the steps of:
storing a first set of data produced in accordance with a first drawing instruction in a memory having a data storage capacity, said memory also storing, in a compressed form, one or more other sets of data that were produced in accordance with other, previous drawing instructions;
compressing said first set of data in said memory in response to (i) a need to modify, in accordance with a subsequent drawing instruction, a selected one of said compressed other sets of data stored in said memory, and (ii) a determination that said memory has reached a predetermined limit of its designated data storage capacity;
decompressing at least a portion of said selected one of said other sets of data to produce a second set of data; and
modifying at least a portion of said second set of data in accordance with said subsequent drawing instruction..Iaddend..Iadd.88. The method of claim 87, wherein said compressing step comprises:
compressing at least a portion of a set of data at a first compression density;
determining when said memory is insufficient to contain said compressed data;
further compressing said compressed portion of said set of data using a second compression density, said second compression density being denser than said first compression density..Iaddend..Iadd.89. The method of claim 88, wherein said first compression density is selected based on a sensed parameter..Iaddend..Iadd.90. The method of claim 89, wherein said sensed parameter is selected from the group consisting of identification of a printer, characteristics of a printer, examination of drawing instructions, interrogation of a printer, available memory, and combinations thereof..Iaddend..Iadd.91. The method of claim 87, wherein said compressing step comprises further compressing said data so that it may be stored in said memory at a density which enables storage of substantially all of said image defining data..Iaddend..Iadd.92. The method of claim 91, wherein said data compression technique compresses data to a density which results in a reduction of image clarity..Iaddend..Iadd.93. A method for creating image-defining data in accordance with drawing instructions, said data existing as stored sets of data in a memory and capable of being modified by subsequent ones of said drawing instructions, said method comprising the steps of:
determining whether a set of data, desired to be modified in accordance with a drawing instruction, is stored in said memory in an uncompressed or a compressed form;
producing a modified set of data by:
(1) if said data are determined to be uncompressed, modifying at least a portion of said set of data in accordance with said drawing instruction, and
(2) if said data are determined to be compressed, decompressing at least a portion of said compressed data to which said drawing instruction relates and modifying at least a portion of said decompressed set of data; wherein:
said decompressing and modifying step occurs before any image is generated
based on said set of data..Iaddend..Iadd.94. A method for producing image-defining data in accordance with drawing instructions, said data organized as a plurality of raster lines stored in a plurality of bands of raster lines in a memory and capable of being used to generate an image based on said raster lines, said method comprising the steps of:
compressing a band of raster lines;
decompressing said compressed band of raster lines in response to a drawing instruction requiring modification of at least a portion of said band of raster lines; and
modifying at least a portion of said decompressed band of raster lines to provide a modified band of raster lines, said modification step occurring prior to generating any image based on said raster lines..Iaddend..Iadd.95. The method of claim 94, wherein said modification step adds raster lines to said decompressed bands of raster
lines..Iaddend..Iadd.96. The method of claim 94, further comprising the step of printing an image based on said modified bands of raster lines..Iaddend..Iadd.97. The method of claim 94, further comprising the step of printing an image based on compressed and uncompressed raster lines..Iaddend..Iadd.98. The method of claim 94, wherein said compressing step comprises:
compressing at least a portion of a set of raster lines at a first compression density;
determining when said memory is insufficient to contain said compressed raster lines;
further compressing said compressed portion of said set of raster lines using a second compression density, said second compression density being denser than said first compression density..Iaddend..Iadd.99. The method of claim 98, wherein said first compression density is selected based on a sensed parameter, said sensed parameter being selected from the group consisting of identification of a printer, characteristics of a printer, examination of drawing instructions, interrogation of a printer, available memory, and combinations thereof..Iaddend..Iadd.100. The method of claim 94, wherein said compressing step comprises using a data compression technique enabling storage in said memory of substantially all of said raster lines..Iaddend..Iadd.101. The method of claim 100, wherein said data compression technique compresses data to a density which results in a loss of said raster line data accuracy..Iaddend..Iadd.102. The method of claim 101, wherein said data compression technique is a discrete cosine transform..Iaddend..Iadd.103. The method of claim 94, wherein said data compression technique compresses said raster line data to a density which results in a reduction of image resolution..Iaddend..Iadd.104. The method of claim 42, 60, 70, 84, 87, or 94 further comprising the steps of:
successively decomposing drawing instructions into a display list having a simpler set of commands;
storing said display list in said memory, said memory having a finite capacity;
determining when said display list reaches a predetermined amount of said finite capacity;
responsive to a determination that said display list has reached said predetermined amount of said finite capacity, modifying or creating said data in accordance with at least one command in said display list..Iaddend..Iadd.105. The method of claim 104, wherein said data comprise a plurality of bands of data..Iaddend..Iadd.106. The method of claim 105, wherein modifying or creating said plurality of bands of data further comprises:
determining whether a display list command affects a successive band of said plurality of bands of data;
responsive to a determination that a display list command affects a band of data, modifying said band of data in accordance with said display list
element..Iaddend..Iadd.107. The method of claim 104, further comprising the steps of:
determining whether executing a display list command and purging said command would increase the amount of memory available; and
responsive to a determination that executing and purging said command would increase the amount of memory available, purging said command after said modifying step, thereby freeing said memory for additional display list commands..Iaddend..Iadd.108. Apparatus for producing image-defining data, comprising:
means for storing a plurality of drawing instructions;
means for executing a first drawing instruction of said plurality of drawing instructions to generate data;
means for compressing said data;
means for storing said compressed data;
means for executing a second drawing instruction of said plurality of drawing instructions, said second drawing instruction creating a need to modify said compressed data;
means for decompressing said compressed data in response to said need to modify said compressed data; and
means for modifying said decompressed data in accordance with said second drawing instruction to produce modified data..Iaddend..Iadd.109. The apparatus of claim 108, wherein said data comprise a set of data..Iaddend..Iadd.110. The apparatus of claim 109, wherein said set of
data comprises an image line of data..Iaddend..Iadd.111. The apparatus of claim 109, wherein said set of data comprises at least a portion of a band of data including a plurality of image lines of data..Iaddend..Iadd.112. The apparatus of claim 108, wherein said data comprise pixel data..Iaddend..Iadd.113. The apparatus of claim 108, wherein said means for modifying data adds data to said decompressed data..Iaddend..Iadd.114. The apparatus of claim 108, further comprising means for printing an image based on said modified data..Iaddend..Iadd.115. The apparatus of claim 108, wherein said compressing means comprises:
means for compressing at least a portion of a set of data at a first compression density;
means for determining when said memory is insufficient to contain said compressed data;
means for further compressing said compressed portion of said set of data using a second compression density, said second compression density being denser than said first compression density..Iaddend..Iadd.116. The apparatus of claim 115, wherein said first compression density is selected based on a sensed parameter..Iaddend..Iadd.117. The apparatus of claim 116, wherein said sensed parameter is selected from the group consisting of identification of a printer, characteristics of a printer, examination of drawing instructions, interrogation of a printer, available memory, and combinations thereof..Iaddend..Iadd.118. The apparatus of claim 108, wherein said compressing means comprises means for using a data compression technique enabling storage in said memory of substantially all of said image defining data..Iaddend..Iadd.119. The apparatus of claim 118, wherein said data compression technique compresses data to a density which results in a loss of data..Iaddend..Iadd.120. The apparatus of claim 119, wherein said data compression technique is a discrete cosine transform..Iaddend..Iadd.121. The apparatus of claim 118, wherein said data compression technique compresses data to a density which results in a reduction of resolution..Iaddend..Iadd.122. The apparatus of claim 108, further comprising means for recompressing said modified data..Iaddend..Iadd.123. The apparatus of claim 118, further comprising means for further compressing said compressed data so that said data may be stored in said memory at a density which enables storage of substantially all of said image defining data..Iaddend..Iadd.124. The apparatus of claim 108, further comprising means for printing an image based on a mixture of compressed and uncompressed data..Iaddend..Iadd.125. Apparatus for producing image-defining data in accordance with drawing instructions, said data capable of being used to generate an image, said apparatus comprising:
means for compressing said data;
means for decompressing said compressed data in response to a need to modify at least a particle of said data; and
means for modifying at least a portion of said data to provide modified data, said modification occurring prior to generating any image based on
said data..Iaddend..Iadd.126. The apparatus of claim 125, further comprising memory means, wherein said compressing means comprises using a data compression technique enabling storage in said memory means of substantially all of said image defining data..Iaddend..Iadd.127. The apparatus of claim 126, wherein said data compression technique compresses said data to a density which results in a loss of data..Iaddend..Iadd.128. The apparatus of claim 127, wherein said data compression technique is a discrete cosine transform..Iaddend..Iadd.129. The apparatus of claim 128, wherein said data compression technique compresses data to a density which results in a reduction of resolution..Iaddend..Iadd.130. The apparatus of claim 125, where said data comprises a band of data..Iaddend..Iadd.131. The apparatus of claim 130, wherein said band of data comprises a
plurality of image lines of data..Iaddend..Iadd.132. The apparatus of claim 125, wherein said data comprise pixel data..Iaddend..Iadd.133. The apparatus of claim 130, wherein said modification means adds data to said decompressed band of data..Iaddend..Iadd.134. The apparatus of claim 130, further comprising means for printing an image based on said modified band of data..Iaddend..Iadd.135. Apparatus for producing image-defining data in accordance with drawing instructions, said data capable of being used to generate an image, said apparatus comprising:
means for compressing at least a portion of said data; and
means for modifying at least a portion of said compressed data in accordance with a drawing instruction requiring said modification, said modifying occurring prior to generating any image based on said data..Iaddend..Iadd.136. The apparatus of claim 135, wherein said compressing means comprises a data compression technique for enabling storage of substantially all of said image defining data in a memory..Iaddend..Iadd.137. The apparatus of claim 136, wherein said data compression technique compresses data to a density which results in a loss
of data..Iaddend..Iadd.138. The apparatus of claim 136, wherein said data compression technique compresses data to a density which results in a reduction of resolution..Iaddend..Iadd.139. The apparatus of claim 135, wherein said modifying means comprises:
means for decompressing at least a portion of compressed data requiring modification; and
means for modifying at least a portion of said decompressed data..Iaddend..Iadd.140. The apparatus of claim 139, further comprising means for generating an image based on said modified decompressed data..Iaddend..Iadd.141. The apparatus of claim 140, wherein said generating means comprises printing means for printing an image based on said modified decompressed data..Iaddend..Iadd.142. The apparatus of claim 135, wherein said data comprise a set of data..Iaddend..Iadd.143. The apparatus of claim 142, wherein said set of data comprises an image line of data..Iaddend..Iadd.144. The apparatus of claim 135 or 139, wherein said set of data comprises a band of data including a plurality of image lines of data..Iaddend..Iadd.145. The apparatus of claim 135, wherein said modifying means comprises adding data to said decompressed data..Iaddend..Iadd.146. The apparatus of claim 145, wherein said modifying means comprises:
means for decompressing at least the portion of compressed data requiring modification; and
means for modifying at least a portion of said decompressed
data..Iaddend..Iadd.147. The apparatus of claim 146, further comprising means for generating an image based on said modified decompressed data..Iaddend..Iadd.148. The apparatus of claim 135, further comprising means for generating an image based on said modified compressed data..Iaddend..Iadd.149. The apparatus of claim 135, further comprising means for generating an image based on uncompressed data and said compressed modified data..Iaddend..Iadd.150. Apparatus for producing image-defining data in accordance with drawing instructions comprising:
memory means having a finite capacity;
means for successively storing in said memory data generated in accordance with successive drawing instructions, said memory means having an uncompressed region and a compressed region, the relative sizes of said compressed region and said uncompressed region varying in response to the memory requirements of said data;
means for determining whether said data can be stored in said uncompressed region without exceeding said uncompressed region's capacity;
means responsive to a determination that said data will exceed said capacity of said uncompressed region for compressing said data;
means for increasing the amount of memory devoted to said compressed region;
means for decompressing said compressed data and storing said decompressed data in said memory in response to a second drawing instruction; and
means for modifying said decompressed data in accordance with said second
drawing instruction to produce modified data..Iaddend..Iadd.151. The apparatus of claim 150, further comprising means for recompressing said modified data..Iaddend..Iadd.152. The apparatus of claim 151, further comprising means for printing an image based at least in part on said recompressed data..Iaddend..Iadd.153. Apparatus for producing a set of image-defining data in response to drawing instructions comprising:
memory having a data storage capacity;
means for storing a first set of data produced in accordance with a first drawing instruction in said memory, said memory also storing, in a compressed form, one or more other sets of data that were produced in accordance with other, previous drawing instructions;
means for compressing said first set of data in said memory in response to (i) a need to modify, in accordance with a subsequent drawing instruction, a selected one of said compressed other sets of data stored in said memory, and (ii) a determination that said memory has reached a predetermined limit of its designated data storage capacity;
means for decompressing at least a portion of said selected one of said other sets of data to produce a second set of data; and
means for modifying at least a portion of said second set of data in
accordance with said subsequent drawing instruction..Iaddend..Iadd.154. The apparatus of claim 153, wherein said compressing means comprises:
means for compressing at least a portion of a set of data at a first compression density;
means for determining when said memory is insufficient to contain said compressed data;
means for further compressing said compressed portion of said set of data using a second compression density, said second compression density being denser than said first compression density..Iaddend..Iadd.155. The apparatus of claim 154, wherein said first compression density is selected based on a sensed parameter..Iaddend..Iadd.156. The apparatus of claim 155, wherein said sensed parameter is selected from the group consisting of identification of a printer, characteristics of a printer, examination of drawing instructions, interrogation of a printer, available memory, and combinations thereof..Iaddend..Iadd.157. The apparatus of claim 153, wherein said compressing means comprises means for further compressing said data so that said data may be stored in said memory at a density which enables storage of substantially all of said image defining
data..Iaddend..Iadd.158. The apparatus of claim 157, wherein said data compression technique compresses data to a density which results in a reduction of image clarity..Iaddend..Iadd.159. Apparatus for creating image-defining data in accordance with drawing instructions, said data existing as stored sets of data in a memory and capable of being modified by subsequent ones of said drawing instructions, said apparatus comprising:
means for determining whether a set of data, desired to be modified in accordance with said drawing instruction, is stored in said memory in an uncompressed or a compressed form;
means for producing a modified set of data by:
(1) if said data are determined to be uncompressed, modifying at least a portion of said set of data in accordance with said drawing instruction, and
(2) if said data are determined to be compressed, decompressing at least a portion of said compressed data to which said drawing instruction relates and modifying at least a portion of said decompressed set of data; wherein:
said decompressing and modifying occurs before any image is generated based on said set of data..Iaddend..Iadd.160. Apparatus for producing image-defining data in accordance with drawing instructions, said data organized as a plurality of raster lines stored in a plurality of bands of raster lines in a memory and capable of being used to generate an image based on said raster lines, said apparatus comprising:
means for compressing a band of raster lines;
means for decompressing said compressed band of raster lines in response to a drawing instruction requiring modification of at least a portion of said band of raster lines; and
means for modifying at least a portion of said decompressed band of raster lines to provide a modified band of raster lines, said modifying occurring prior to generating any image based on said raster
lines..Iaddend..Iadd. . The apparatus of claim 160, wherein said modifying means adds raster lines to said decompressed bands of raster lines..Iaddend..Iadd.162. The apparatus of claim 160, further comprising means for printing an image based on said modified bands of raster lines..Iaddend..Iadd.163. The apparatus of claim 160, further comprising means for printing an image based on compressed and uncompressed raster lines..Iaddend..Iadd.164. The apparatus of claim 160, wherein said compressing means further comprise:
means for compressing at least a portion of a set of raster lines at a first compression density;
means for determining when said memory is insufficient to contain said compressed raster lines;
means for further compressing said compressed portion of said set of raster lines using a second compression density, said second compression density being denser than said first compression density..Iaddend..Iadd.165. The apparatus of claim 164, wherein said first compression density is selected based on a sensed parameter, said sensed parameter being selected from the group consisting of identification of a printer, characteristics of a printer, examination of drawing instructions, interrogation of a printer, available memory, and combinations thereof..Iaddend..Iadd.166. The apparatus of claim 160, wherein said compressing means comprises using a data compression technique enabling storage in said memory of substantially all of said raster lines. .Iadd.167. The apparatus of claim 166, wherein said data compression technique compresses data to a density which results in a loss of said raster line data accuracy..Iaddend..Iadd.168. The apparatus of claim 167, wherein said data compression technique is a discrete cosine transform..Iaddend..Iadd.169. The apparatus of claim 160, wherein said data compression technique compresses said raster line data to a density which results in a reduction of image resolution..Iaddend..Iadd.170. The apparatus of claim 118, 126, 136, 150, 153, 159, or 160, further comprising:
memory having a finite capacity;
means for successively decomposing drawing instructions into a display list;
means for storing said display list in said memory;
means for determining when said display list reaches a predetermined amount of said finite capacity;
means for modifying or creating said data in accordance with at least one command in said display list in response to a determination that said display list has reached said predetermined amount of said finite
capacity..Iaddend..Iadd.171. The apparatus of claim 170, wherein said data comprise a plurality of bands of data..Iaddend..Iadd.172. The apparatus of claim 171, wherein said means for modifying or creating said plurality of bands of data further comprises:
means for determining whether a display list command affects a successive band of said plurality of bands of data;
means responsive to a determination that a display list command affects a band of data for modifying said band of data in accordance with said display list element..Iaddend..Iadd.173. The apparatus of claim 170, further comprising:
means for determining whether executing a display list command and purging said command would increase the amount of memory available; and
means responsive to a determination that executing and purging said command would increase the amount of memory available, for purging said command after said modifying said data, thereby freeing said memory for additional display list commands..Iaddend.
US08/310,249 1991-10-16 1994-09-21 Printing system and method Expired - Lifetime USRE36947E (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US08/310,249 USRE36947E (en) 1991-10-16 1994-09-21 Printing system and method
US09/552,108 USRE38732E1 (en) 1991-10-16 2000-04-18 Printing system and method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/777,065 US5150454A (en) 1991-10-16 1991-10-16 Printing system and method
US08/310,249 USRE36947E (en) 1991-10-16 1994-09-21 Printing system and method

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US07/777,065 Reissue US5150454A (en) 1991-10-16 1991-10-16 Printing system and method

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US07/777,065 Continuation US5150454A (en) 1991-10-16 1991-10-16 Printing system and method

Publications (1)

Publication Number Publication Date
USRE36947E true USRE36947E (en) 2000-11-07

Family

ID=25109189

Family Applications (2)

Application Number Title Priority Date Filing Date
US07/777,065 Ceased US5150454A (en) 1991-10-16 1991-10-16 Printing system and method
US08/310,249 Expired - Lifetime USRE36947E (en) 1991-10-16 1994-09-21 Printing system and method

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US07/777,065 Ceased US5150454A (en) 1991-10-16 1991-10-16 Printing system and method

Country Status (1)

Country Link
US (2) US5150454A (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272568B1 (en) * 1997-04-30 2001-08-07 Pioneer Electronic Corporation Method for recording information on a memory
USRE38732E1 (en) * 1991-10-16 2005-05-10 Electronics For Imaging, Inc. Printing system and method
US20090327918A1 (en) * 2007-05-01 2009-12-31 Anne Aaron Formatting information for transmission over a communication network

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0325523A (en) * 1989-06-22 1991-02-04 Ricoh Co Ltd Computer peripheral device
JP3297445B2 (en) * 1991-04-23 2002-07-02 キヤノン株式会社 Output method and device
US5903715A (en) * 1991-12-06 1999-05-11 Seiko Epson Corporation Dot matrix printer having reduced bit map data storage
JPH05183765A (en) * 1991-12-27 1993-07-23 Canon Inc Data processing system and device usable for the system
US5548687A (en) * 1992-04-30 1996-08-20 Ricoh Company, Ltd. Method and apparatus for controlling a printer using the N/2r format
US5500924A (en) * 1992-05-07 1996-03-19 Apple Computer, Inc. Method for vector plotting a bitmap with a reduced number of lines
US5471563A (en) * 1992-07-10 1995-11-28 Microsoft Corporation System and method for automatic resolution reduction
US5483622A (en) * 1992-09-03 1996-01-09 Hewlett-Packard Company Page printer having automatic font compression
US5479587A (en) * 1992-09-03 1995-12-26 Hewlett-Packard Company Page printer having adaptive data compression for memory minimization
US5459818A (en) * 1992-11-02 1995-10-17 Hewlett-Packard Company Display list with crossing queues
US5539865A (en) * 1992-11-10 1996-07-23 Adobe Systems, Inc. Method and apparatus for processing data for a visual-output device with reduced buffer memory requirements
US5991515A (en) * 1992-11-10 1999-11-23 Adobe Systems Incorporated Method and apparatus for compressing and decompressing data prior to display
US5638498A (en) * 1992-11-10 1997-06-10 Adobe Systems Incorporated Method and apparatus for reducing storage requirements for display data
US5452405A (en) * 1993-01-25 1995-09-19 Hewlett-Packard Company Method and apparatus for delta row decompression
US5602976A (en) * 1993-02-23 1997-02-11 Adobe Systems Incorporated Method and apparatus for saving printer memory
US5500928A (en) * 1993-03-01 1996-03-19 Xionics Document Technologies, Inc. Digital printing system and process using adaptive compression
US5864652A (en) * 1993-05-14 1999-01-26 Dataproducts Corporation Image storage and retrieval for a printer
JP3059615B2 (en) * 1993-10-27 2000-07-04 キヤノン株式会社 Printing system, print control device, and control method
US5708763A (en) * 1993-12-21 1998-01-13 Lexmark International, Inc. Tiling for bit map image
JPH07205496A (en) * 1994-01-14 1995-08-08 Oki Electric Ind Co Ltd Page printer and method for data compression
US5577172A (en) * 1994-07-01 1996-11-19 Lasermaster Corporation High-capacity protocol for packet-based networks
US5699495A (en) * 1994-07-27 1997-12-16 Microsoft Corporation Point-and-print in a distributed environment
US5901277A (en) * 1994-07-29 1999-05-04 Apple Computer, Inc. Shared decompression buffer
US5602974A (en) * 1994-10-05 1997-02-11 Microsoft Corporation Device independent spooling in a print architecture
US5692111A (en) * 1994-10-05 1997-11-25 Microsoft Corporation Automatic installation of printers in a distributed environment
US5732198A (en) * 1995-02-09 1998-03-24 Oki America, Inc. Host based printing system for printing a document having at least one page
JP3337846B2 (en) * 1995-02-24 2002-10-28 キヤノン株式会社 Image processing apparatus and image processing method
WO1996032811A2 (en) * 1995-04-12 1996-10-17 Eastman Kodak Company High capacity compressed document image storage for digital color printers
US5984446A (en) * 1995-04-12 1999-11-16 Eastman Kodak Company Color office printer with a high capacity digital page image store
WO1996032725A2 (en) * 1995-04-12 1996-10-17 Eastman Kodak Company Color office printer with a high capacity digital page image store
EP0870277B1 (en) 1995-07-03 2004-06-02 Electronics for Imaging, Inc. Image rendering for page printers
EP1093080B1 (en) * 1995-09-22 2003-11-26 Lexmark International, Inc. Printer with high bandwidth compression architecture
US5704022A (en) * 1995-09-22 1997-12-30 Lexmark International, Inc. Printer with high bandwidth compression architecture
US5825991A (en) * 1995-10-30 1998-10-20 Xerox Corporation System for balancing CPU demands in a high-volume print server
US5651103A (en) * 1995-11-06 1997-07-22 Pitney Bowes Inc. Mail handling apparatus and process for printing an image column-by-column in real time
US5793937A (en) * 1996-03-29 1998-08-11 Peerless Systems Corporation Fallback processing for page generation using memory reduction techniques
JPH1023271A (en) * 1996-07-05 1998-01-23 Canon Inc Image-forming method and its device
US6269190B1 (en) 1996-09-24 2001-07-31 Electronics For Imaging, Inc. Computer system for processing images using a virtual frame buffer
US5995724A (en) * 1996-11-01 1999-11-30 Mikkelsen; Carl Image process system and process using personalization techniques
US5971518A (en) * 1997-01-28 1999-10-26 Lexmark International, Inc. Method of printing with an ink jet printer to inhibit the formation of a print artifact
US6023556A (en) * 1997-01-29 2000-02-08 Gammagrapnx, Inc. Processing print job image data
US5970221A (en) * 1997-10-02 1999-10-19 Lexmark International, Inc. Printer with reduced memory
US6429949B1 (en) 1998-10-15 2002-08-06 Electronics For Imaging, Inc. Low memory printer controller
US7164369B2 (en) 2001-06-19 2007-01-16 Sharp Laboratories Of America, Inc. System for improving storage efficiency of digital files
US7529823B2 (en) * 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
GB0524804D0 (en) 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
GB2553744B (en) 2016-04-29 2018-09-05 Advanced Risc Mach Ltd Graphics processing systems

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3921135A (en) * 1972-04-18 1975-11-18 Fujitsu Ltd Apparatus and method for memorizing dot patterns in a memory system
US4725815A (en) * 1984-01-16 1988-02-16 International Business Machines Corporation Method for encoding and decoding a digital image
US4791680A (en) * 1986-03-25 1988-12-13 Matsushita Electric Industrial Co. Image data converter
DE3816627A1 (en) * 1988-05-16 1989-11-30 Ricoh Kk Digital copier with an external storage medium
EP0378316A1 (en) * 1989-01-09 1990-07-18 Crosfield Electronics Limited Bit map modification
US5068805A (en) * 1988-09-17 1991-11-26 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
US5206735A (en) * 1990-06-29 1993-04-27 Xerox Corporation Job interrupt for electronic copying/printing machines

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3921135A (en) * 1972-04-18 1975-11-18 Fujitsu Ltd Apparatus and method for memorizing dot patterns in a memory system
US4725815A (en) * 1984-01-16 1988-02-16 International Business Machines Corporation Method for encoding and decoding a digital image
US4791680A (en) * 1986-03-25 1988-12-13 Matsushita Electric Industrial Co. Image data converter
DE3816627A1 (en) * 1988-05-16 1989-11-30 Ricoh Kk Digital copier with an external storage medium
US5068805A (en) * 1988-09-17 1991-11-26 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
EP0378316A1 (en) * 1989-01-09 1990-07-18 Crosfield Electronics Limited Bit map modification
US5206735A (en) * 1990-06-29 1993-04-27 Xerox Corporation Job interrupt for electronic copying/printing machines

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE38732E1 (en) * 1991-10-16 2005-05-10 Electronics For Imaging, Inc. Printing system and method
US6272568B1 (en) * 1997-04-30 2001-08-07 Pioneer Electronic Corporation Method for recording information on a memory
US20090327918A1 (en) * 2007-05-01 2009-12-31 Anne Aaron Formatting information for transmission over a communication network

Also Published As

Publication number Publication date
US5150454A (en) 1992-09-22

Similar Documents

Publication Publication Date Title
USRE36947E (en) Printing system and method
EP0597571B1 (en) Method and apparatus for processing data for a visual-output device with reduced buffer memory requirements
US5483622A (en) Page printer having automatic font compression
US6330363B1 (en) Apparatus and method for hybrid compression and decompression of raster data
EP0613102B1 (en) Method and apparatus for saving printer memory
US5991515A (en) Method and apparatus for compressing and decompressing data prior to display
EP0798665B1 (en) Fallback processing for page generation using memory reduction techniques
EP0712095B1 (en) Method and apparatus for image data compression
US6597467B2 (en) Image processing apparatus for transmitting compressed area information to be used in editing
US6226099B1 (en) Printing apparatus
EP0506482B1 (en) Image processing
US5617517A (en) Two-dimensional method and system for compressing bi-level images
US5835122A (en) Printing apparatus and method capable of selectively printing with a plurality of resolutions
EP0465943B1 (en) Text information processing apparatus
USRE38732E1 (en) Printing system and method
KR960038593A (en) A character processing device, a character processing method, and a memory
US4748512A (en) Data compaction process for digitized images
EP0801362B1 (en) Method and apparatus for converting image representation format
JP2683506B2 (en) Data compression method and apparatus, data decompression method and apparatus

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 12