AU2007246204A1 - Mutable printer display lists - Google Patents
Mutable printer display lists Download PDFInfo
- Publication number
- AU2007246204A1 AU2007246204A1 AU2007246204A AU2007246204A AU2007246204A1 AU 2007246204 A1 AU2007246204 A1 AU 2007246204A1 AU 2007246204 A AU2007246204 A AU 2007246204A AU 2007246204 A AU2007246204 A AU 2007246204A AU 2007246204 A1 AU2007246204 A1 AU 2007246204A1
- Authority
- AU
- Australia
- Prior art keywords
- new
- display list
- list
- referencing
- header
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1218—Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources
- G06F3/122—Reducing or saving of used resources, e.g. avoiding waste of consumables or improving usage of hardware resources with regard to computing resources, e.g. memory, CPU
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1237—Print job management
- G06F3/1273—Print job history, e.g. logging, accounting, tracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1278—Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
- G06F3/1285—Remote printer device, e.g. being remote from client or server
- G06F3/1286—Remote printer device, e.g. being remote from client or server via local network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1202—Dedicated interfaces to print systems specifically adapted to achieve a particular effect
- G06F3/1203—Improving or facilitating administration, e.g. print management
- G06F3/1205—Improving or facilitating administration, e.g. print management resulting in increased flexibility in print job configuration, e.g. job settings, print requirements, job tickets
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Accessory Devices And Overall Control Thereof (AREA)
Description
S&F Ref: 835239 AUSTRALIA PATENTS ACT 1990 COMPLETE SPECIFICATION FOR A STANDARD PATENT Name and Address Canon Kabushiki Kaisha, of 30-2, Shimomaruko 3-chome, of Applicant: Ohta-ku, Tokyo, 146, Japan Actual Inventor(s): Keith Chan Julian Benjamin Kelsey Address for Service: Spruson & Ferguson St Martins Tower Level 35 31 Market Street Sydney NSW 2000 (CCN 3710000177) Invention Title: Mutable printer display lists The following statement is a full description of this invention, including the best method of performing it known to me/us: 5845c(1048440_1) -1 MUTABLE PRINTER DISPLAY LISTS FIELD OF THE INVENTION The current invention relates to print rendering and in particular the modification of display lists within a limited-memory environment. BACKGROUND 5 A conventional printing system 10 as illustrated in Fig. 1 comprises a personal computer 15 including a host processor 20 on which runs a software application 30 that is instructed to print a document. The application 30 issues a print requests to a printer driver 35 that translates the requests into a print job in a format known as a display list (a set of printing instructions in a language native to the printer 60). The personal computer 10 10 passes the display list to the printer 60 that is connected to the personal computer 10 via a network 50. The printer consists of internal memory 90, a printer engine 95 that processes printing instructions for rendering by a pixel rendering apparatus 80, and a controlling program 40 running on one or more controller processors 70. In normal office situations, a user of a personal computer running certain software 15 applications may want to send a document to be printed without any modifications to it. For these situations, a non-mutable display list belonging to such a conventional printing system 10 will suffice, as there is no need to make changes to what needs to be printed. However, there are certain situations where modifications to printer display lists are advantageous (e.g. for use in in-render trapping, replacing text within a document, etc). In 20 this case, having mutable display lists allows a module to programmatically alter what will be printed. Furthermore, a user may wish to undo such modifications by reverting to any previous revision of the display list. 835239 / 1046733 3 301107 -2 In current state of the art, in-place modification of the display list partly addresses the problem. Extra information about each revision may be inserted into the display list for keeping track of the modifications. The problem with this approach is that when operating within a multi-threaded environment, such modifications needs to be protected such that no 5 two threads may attempt to simultaneously modify the same display list. This causes potential slowdowns due to threads contending for exclusive access to the display list. It is also difficult to efficiently revert to a previous version of the display list. Another method involves duplicating the display list, and modifications are only made on the duplicate. Whilst this addresses the multi-threaded slowdowns mentioned 10 above, this method requires a lot of memory to be used up storing each revision. This is potentially unsatisfactory when operating within a limited-memory environment such as a printer. Improvements to this can be achieved via compressing old revisions of the display list to conserve memory, or even via rendering portions of the display list as compressed images. Such improvements will result in having to trade off speed (and quality, if rendered 15 as a compressed image) for decreased memory usage. One common practice for managing revisions (not necessarily restricted to display lists) is via the use of 'patches'. Each modification results in a 'patch' (a list of edits) that must be applied to the previous revision. Whilst this is more memory efficient (due to not storing duplicated data), each modification to the display list will result in extra 20 computation required when rendering (due to the need to apply the cumulative patches from the original revision). Once again, this involves a trade off between speed and memory usage. There is also no efficient way to revert to a previous version since it would still involve having to apply the cumulative patches up to that version. 835239 /1046733 3 301107 -3 SUMMARY It is an object of the present invention to substantially overcome, or at least ameliorate, one or more disadvantages of existing arrangements. Disclosed are arrangements, referred to as Mutable Display List (MDL) 5 arrangements, which seek to address the above problems by modifying a display list by creating a new display list that references (as opposed to duplicates) data in the original display list. The newly created display list also references the original display list, resulting in a revision history chain, so as to allow the user to revert to any previous version. By doing so, memory usage is kept low by avoiding the need to duplicate redundant 10 data. Furthermore, such a method for modifying display lists does not require the expensive operation of locking the display list when in use in a multi-threaded environment. Unlike methods described above that render portions of the display list as images, any modifications are completely revertible. This allows a user to losslessly revert to a previous revision and make alternate modifications. In fact, the disclosed method allows 15 for a tree-like structure of revisions (e.g. when multiple threads wish to perform different modifications to the same display list). It should also be noted that due to the fact that each modification results in a new display list rather than a patch to the old one, all operations on the display list (i.e. accessing, reverting, modifying) suffer no speed impact. 20 According to a first aspect of the present invention, there is provided a method of modifying a display list adapted to be rendered on a printer to form a new display list, said display list comprising: (i) a linked list 200 comprising at least one summary node 100, each said summary node referencing 110 a drawing command 120; and 835239 / 1046733_3 301107 -4 (ii) a header 210 referencing the head node of said linked list; said method comprising: (a) creating a new linked list 600 comprising at least one new summary node 640, at least one said new summary node referencing 620 one said drawing command; and 5 (b) creating a new header 605 referencing the head summary node 640 of said new linked list 600. According to another aspect of the present invention, there is provided an apparatus for implementing any one of the aforementioned methods. According to another aspect of the present invention, there is provided a computer 10 program product including a computer readable medium having recorded thereon a computer program for implementing any one of the methods described above. Other aspects of the invention are also disclosed. BRIEF DESCRIPTION OF THE DRAWINGS One or more embodiments of the invention will now be described with reference to 15 the following drawings, in which: Fig. 1 is a functional block diagram of a conventional printing system within which the method according to one MDL arrangement may be practised; Fig. 2 depicts a mutable display list according to the MDL arrangement containing four elements: '1', '2', '3', and '4'; 20 Fig. 3 is a flow diagram describing the method of keeping an existing element when modifying a display list as used in the method of Fig. 5; Fig. 4 is a flow diagram describing the method of inserting a new element into the display list as used in the method of Fig. 5; 835239 / 1046733 3 301107 -5 Fig. 5 is a flow diagram describing a method of modifying a display list structured as per Fig. 2 according to the MDL arrangement; Fig. 6 depicts the display list in Fig. 2 after it has been modified by removing element '2' and inserting element '5' between elements '3' and '4' using the method of 5 Fig. 5; and Fig. 7 is a more detailed schematic block diagram of the printing system of Fig. 1. DETAILED DESCRIPTION INCLUDING BEST MODE Where reference is made in any one or more of the accompanying drawings to steps and/or features, which have the same reference numerals, those steps and/or features have 10 for the purposes of this description the same function(s) or operation(s), unless the contrary intention appears. It is to be noted that the discussions contained in the "Background" section and that above relating to prior art arrangements relate to discussions of devices which may form public knowledge through their use. Such discussions should not be interpreted as a 15 representation by the present inventor(s) or patent applicant(s) that such devices in any way form part of the common general knowledge in the art. The mutable display list according to the described MDL arrangement is a linked list 200 of elements as illustrated in Fig. 2, with each element (e.g. 100) of linked list 200 consisting of a 'summary' node 105 that contains a pointer 110 referencing the 'details' 20 120. Such 'details' contain all of the data that is necessary to render exactly one drawing command or painting operation in the print job. There exists a 'display list header' 210 that references the first element 100 of the linked list. A 'latest version' pointer 205 references the display list header (e.g. 210) corresponding to the latest revision of the display list 200. 835239 / 1046733 3 301107 -6 A method 500 of modifying the mutable display list illustrated in Fig. 2 will now be described with reference to Figs. 5 and 6. Method 500 begins by creating 505 a header 605 for the new display list 600. This new header 605 references 615 the header 210 of the existing 200 display list. 5 After the header 605 has been created, two pointers are initialised 510: an 'existing list' pointer 650 to iterate over the existing display list 200 elements, and a 'new list' pointer 660 to mark the current position for constructing elements in the new display list 600. The 'existing list' pointer 650 is initialised to reference the summary node 105 of the first element 100 in the existing display list 200, while the 'new list' pointer 660 is 10 initialised to reference the summary node 640 of the first element of the new display list 600. While there exist more elements ('Yes' at step 520) for the 'existing list' pointer to iterate over, or more elements to insert into the new display list, one of three operations (switched at step 530) are possible: 15 1. Insert 540 a new element 630 into the new display list, now described in detail with reference to Fig. 4. Step 540 begins by creating 400 a new summary node 625 at the location referenced by the 'new list' pointer 660, creating 410 corresponding details 635, and setting 420 a reference from the new summary node 625 to the new details 635. The 'new list' pointer 660 is then updated 560 to point at the location where the next new 20 summary node is to be constructed, to allow creation of further elements. 2. Keep 550 an existing element 100, now described in detail with reference to Fig. 3. Step 550 begins by creating 300 a copy 640 of the summary node 105 of the existing element 100 to be kept, and setting 310 a reference 620 to the details 120 of the existing element 100. The 'new list' pointer 660 is then updated 560 to point at the location 835239 / 1046733_3 301107 -7 where the next new summary node is to be constructed, to allow creation of further elements. Furthermore, the 'existing list' pointer 650 is updated to point to the next element in the existing list 200. 3. Delete an existing element. The 'existing list' pointer 650 is updated 560 to 5 point to the next element in the existing display list 200. Once there are no more elements in the existing list to iterate over, and no more elements to insert into the new list ('No' at step 520), the 'latest version' pointer 205 is updated 570 to reference the new display list header 605. Method 500 then concludes. The method 500 can be practiced on any conventional printing system, for example 10 that described with reference to Fig. 1. In the case where the printer controller processor 70 supports multi-threading, and the printer controlling program 40 is running under a multi threaded environment, the preferred method of modifying a display list is identical to the method 500. For clarification, when two or more threads attempt to modify a display list 200, each thread will create its own new display list header 605 and summary nodes 640. 15 Each thread will also update its own 'latest version' pointer 205 to reference its own new display list header. Reverting a display list that has been modified by the method 500of Fig. 5 to a previous version involves setting the 'latest version' pointer 205 to point to the header 210 of a previous version's display list by following the reference 615. 20 Fig. 7 is a more detailed schematic block diagram of the printing system of Fig. 1. The MDL approach may be implemented using the printer system 700, wherein the processes of Figs. 3 - 5 may be implemented as software, such as one or more application programs 40 executable within the printer system 700. In particular, the MDL method steps are effected by instructions in the software 40 that are carried out within the printer 835239 / 1046733 3 301107 -8 system 700. The instructions may be formed as one or more code modules, each for performing one or more particular tasks. The software may also be divided into two separate parts, in which a first part and the corresponding code modules performs the MDL methods and a second part and the corresponding code modules manage a user interface 5 between the first part and the user. The software may be stored in a computer readable medium, including the storage devices described below, for example. The software is loaded into the printer system 700 from the computer readable medium, and then executed by the printer system 700. A computer readable medium having such software or computer program recorded on it is a computer program product. The use of the computer program 10 product in the printer system 700 preferably effects an advantageous MDL apparatus. As seen in Fig. 7, the printer system 700 is formed by a printer module 60, input devices such as a keypad 702, and output devices including the printer engine 95, a display device 714 and loudspeakers 717. The printer module 701 typically includes at least the one processor unit 70, and a 15 memory unit 706 for example formed from semiconductor random access memory (RAM) and read only memory (ROM). The printer 60 also includes an number of input/output (I/O) interfaces including an audio-visual interface 707 that couples to the LCD display 714 and loudspeakers 717, an 1/0 interface 713 for the keypad 702, and an interface 708 for the printer engine 95. The printer module 60 also has a local network 20 interface 711 which permits coupling of the printer 60 to the local computer network 50, and thus to the personal computer 15. The interface 708 may afford both serial and parallel connectivity, the former possibly being implemented according to the Universal Serial Bus (USB) standards and 835239 / 1046733 3 301107 -9 having corresponding USB connectors (not illustrated). Storage devices 709 are provided and typically include a flash memory 710. The components 70, 713, 706, 80, 707, 708, 711 and 709 of the printer module 60 typically communicate via an interconnected bus 704 and in a manner which results in a 5 conventional mode of operation of the printer system 700 known to those in the relevant art. Typically, the MDL application programs 40 discussed above are resident on the flash memory 710 and read and controlled in execution by the processor 70. Intermediate storage of such programs and any data fetched from the network 50 may be accomplished 10 using the semiconductor memory 706. In some instances, the application programs 40 may be supplied to the user from the network 50. Still further, the software 40 can also be loaded into the printer system 700 from other computer readable media. Computer readable media refers to any storage or transmission medium that participates in providing instructions and/or data to the printer system 700 for execution 15 and/or processing. Examples of such media include floppy disks, magnetic tape, CD ROM, a hard disk drive, a ROM or integrated circuit, a magneto-optical disk, or a computer readable card such as a PCMCIA card and the like, whether or not such devices are internal or external of the printer module 60. Examples of computer readable transmission media that may also participate in the provision of instructions and/or data 20 include radio or infra-red transmission channels as well as a network connection to another computer or networked device, and the Internet or Intranets including e-mail transmissions and information recorded on Websites and the like. The second part of the MDL application programs and the corresponding code modules mentioned above may be executed to implement one or more graphical user 835239 / 1046733 3 301107 -10 interfaces (GUls) to be rendered or otherwise represented upon the display 714. Through manipulation of the keypad 702, a user of the printer system 700 and the MDL application may manipulate the interface to provide controlling commands and/or input to the applications associated with the GUI(s). 5 The MDL method of may alternatively be implemented in dedicated hardware such as one or more integrated circuits performing the functions or sub functions of the MDL approach. Such dedicated hardware may include graphic processors, digital signal processors, or one or more microprocessors and associated memories. INDUSTRIAL APPLICABILITY 10 It is apparent from the above that the arrangements described are applicable to the computer and data processing industries. The foregoing describes only some embodiments of the present invention, and modifications and/or changes can be made thereto without departing from the scope and spirit of the invention, the embodiments being illustrative and not restrictive. 15 In the context of this specification, the word "comprising" means "including principally but not necessarily solely" or "having" or "including", and not "consisting only of'. Variations of the word "comprising", such as "comprise" and "comprises" have correspondingly varied meanings. 20 835239 / 1046733 3 301107
Claims (8)
1. A method of modifying a display list adapted to be rendered on a printer to form a new display list, said display list comprising: 5 (i) a linked list 200 comprising at least one summary node 100, each said summary node referencing 110 a drawing command 120; and (ii) a header 210 referencing the head node of said linked list; said method comprising: (a) creating a new linked list 600 comprising at least one new summary node 640, at 10 least one said new summary node referencing 620 one said drawing command; and (b) creating a new header 605 referencing the head summary node 640 of said new linked list 600.
2. A method according to claim 1, further comprising: 15 (a) adding to said new header 605 a reference 615 to said header; and (b) setting a 'latest version' pointer 205 to reference said new header 605.
3. A method according to claim 2, further comprising reverting to said display list by setting said 'latest version' pointer 205 to reference said header 210. 20
4. An apparatus for modifying a display list adapted to be rendered on a printer to form a new display list, said display list comprising: (i) a linked list 200 comprising at least one summary node 100, each said summary node referencing 110 a drawing command 120; and 835239 / 1046733 3 301107 -12 (ii) a header 210 referencing the head node of said linked list; said apparatus comprising: a memory for storing a program; and a processor for executing the program, said program comprising: 5 (a) code for creating a new linked list 600 comprising at least one new summary node 640, at least one said new summary node referencing 620 one said drawing command; and (b) code for creating a new header 605 referencing the head summary node 640 of said new linked list 600. 10
5. A computer program product including a computer readable medium having recorded thereon a computer program for directing a processor to execute a method for modifying a display list adapted to be rendered on a printer to form a new display list, said display list comprising: 15 (i) a linked list 200 comprising at least one summary node 100, each said summary node referencing 110 a drawing command 120; and (ii) a header 210 referencing the head node of said linked list; said program comprising: (a) code for creating a new linked list 600 comprising at least one new summary 20 node 640, at least one said new summary node referencing 620 one said drawing command; and (b) code for creating a new header 605 referencing the head summary node 640 of said new linked list 600. 835239 / 1046733 3 301107 -13
6. A method substantially as described herein with reference to the accompanying drawings.
7. An apparatus, substantially as described herein with reference to the accompanying 5 drawings.
8. A computer program product, substantially as described herein with reference to the accompanying drawings. 10 Dated this 3 rd Day of December 2007 CANON KABUSHIKI KAISHA Patent Attorneys for the Applicant Spruson&Ferguson 15 AGRO2 / i A A79 9ini in7
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2007246204A AU2007246204A1 (en) | 2007-12-14 | 2007-12-14 | Mutable printer display lists |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2007246204A AU2007246204A1 (en) | 2007-12-14 | 2007-12-14 | Mutable printer display lists |
Publications (1)
Publication Number | Publication Date |
---|---|
AU2007246204A1 true AU2007246204A1 (en) | 2009-07-02 |
Family
ID=40863082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
AU2007246204A Abandoned AU2007246204A1 (en) | 2007-12-14 | 2007-12-14 | Mutable printer display lists |
Country Status (1)
Country | Link |
---|---|
AU (1) | AU2007246204A1 (en) |
-
2007
- 2007-12-14 AU AU2007246204A patent/AU2007246204A1/en not_active Abandoned
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8804172B2 (en) | Non-transitory computer readable recording medium stored with printer driver updating program and printer driver updating method | |
US7779168B2 (en) | Information processing apparatus, information processing method, and computer-readable memory medium storing program for realizing the method | |
CN1892591B (en) | Data alignment system and method | |
DE10297281T5 (en) | Method for elementary updating of a large number of files | |
EP1686530A1 (en) | Systems and methods for reconciling image metadata | |
JP2004206168A (en) | Program, method, and device for processing document | |
US20070195336A1 (en) | Information processing apparatus, print setting method, and computer-readable medium | |
JP5132433B2 (en) | Information processing apparatus, information processing method, storage medium, and program | |
US6286054B2 (en) | Method and system for supporting multiple capture devices | |
US20080313201A1 (en) | System and method for compact representation of multiple markup data pages of electronic document data | |
US8489989B1 (en) | Methods and systems for preflighting using multiple preflight profiles | |
AU2007246204A1 (en) | Mutable printer display lists | |
JP3733290B2 (en) | Print control apparatus, print control method, and storage medium | |
US7701607B2 (en) | Method and device for managing images stored in a plurality of storage media included in or connected to image forming apparatus | |
JP3709696B2 (en) | Printing system, printer server apparatus, printer server processing method, and recording medium on which printer server processing program is recorded | |
US8953218B2 (en) | Imaging data stream method and apparatus for full-color support | |
US8390878B2 (en) | Method and system for simulating a fleet of highlight color printers via full-color printer for LCDS users | |
KR100555765B1 (en) | Method for changing font information by a printer driver | |
US20090281866A1 (en) | Workflow control apparatus, workflow control method, and workflow control program embodied on computer readable medium | |
JP3817500B2 (en) | Information processing apparatus, control method, and control program | |
JP3817499B2 (en) | Information processing apparatus, control method, and control program | |
JP2005174244A (en) | Network device management apparatus, network device management method, computer-readable storage medium stored with program, and program | |
US20060101448A1 (en) | Printing device | |
US8896880B2 (en) | Imaging data stream method and apparatus for full-color support | |
JP2006236006A (en) | Printer, program and recording medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MK1 | Application lapsed section 142(2)(a) - no request for examination in relevant period |