PRINTING SYSTEM FOR PRINTING SEQUENCES OF INDICIA

Abstract: A printing system, for instance, for printing labels makes use of one more sequence generators (13, 14; 113, 114) which can return in indicium definition in response to an input value. Typically, the input value is a sequence position, modified by step and repeat values. The sequence generators (13, 14; 113, 114) are used during the printing operation, avoiding the need for the the data source file required in conventional mail merge and label printing systems.

Description: Printing System for Printing Sequences of Indicia Field of the Invention The present invention relates to a system for printing sequences of indicia. Background to the Invention Many situations arise in which a sequence of indicia needs to be printed. The indicia may comprises textual or graphical matter. One example familiar to many is the printing of form letters by a mail merge process. Typically, a mail merge process comprises generating a template document including the static text of the form letter and placeholders for variable data. The variable data is stored in some form of list in a separate data source file. The form letters are produced by repeatedly inserting the next set of variable data in the data source file into a respective copy of the template document at the places specified by the place holders until the end of the data source file is reached. This basic process has also been used for the generation of labels. Examples are described in US-A-4939674 and US-A-5621864. A problem with the mail merge process, which is particularly acute in the case of label generation, is that the data source file must be produced before any individual merged document can be viewed or printed. Furthermore, the data source file must be wholly rebuilt and saved to disk before the form letters, labels etc. can be previewed or printed. Summary of the Invention According to the present invention, there is provided a system for displaying a sequence of indicia, the system comprising: - indicia selection means; and output means for producing command signals for a display apparatus, characterised in that the indicia selection means includes a list whose members each define an indicium and is configured to perform a process for selecting a member of said list Case: 35189 in dependence on a supplied index value derived from an ordinal value related to a display region in which an indicium in said list is to be displayed, and the output means is configured for generating and supplying said values to said process for selecting list members and generating display apparatus control signals for displaying the indicia defined by the selected list members. According to the present invention, there is also provided a method of producing a display of an indicium in a sequence of indicia, the method comprising: - selecting an indicium definition from a list of indicium definitions in dependence on a supplied index value derived from an ordinal value related to a display region in which the indicium is to be displayed; and producing display apparatus control signals for causing a display device to display the indicia defined by the selected definition. With regard to the term "indicium", a blank space is an "indicium" if it is to be printed in response to said selection process. Thus, the present invention avoids the data source file employed in the prior art for sequences of indicia. Furthermore, the indicia selection means can be used to obtain an indicium out of sequence, e.g. for individual preview, without having to search through a file of indicia. Most usefully, the display apparatus control signals are printer control signals as this enables labels, for example, to be printed. However, it is desirable that the indicia be displayed on a screen, e.g. a computer screen, before the user commits to printing them. Preferably, the indicia selection makes use of a software object including the list of variables and a method for obtaining a position in said list in dependence on said supplied value. More preferably, this object comprises a further list of variables, each defining an indicium, said lists of variables are ordered, and the method can selectively obtain a position in said further list in dependence on a supplied value. The lists need not be the same length. The selection of an indicium preferably comprises, for each list until the list before that from which a position is required, assigning the result of N div "the length of the current list" to N and then obtaining the result of N mod "the length of the list from which the position is required" as the required position, where N is initially the supplied value. Preferably, the ordinal value is the position of a display region in an array of display regions. However, it could relate to a temporal position. The present invention has particular application in the printing and display of labels. Preferably, step and repeat values associated with a label group are stored and the supplied value is derived from the ordinal value and the relevant step and repeat values. The present invention may be implemented using a conventional computer. Since the economic exploitation of the present invention will often involve the distribution of control software, protection is sought for a manifestation of a signal representing a program for controlling a computer to perform a method according to the present invention. The manifestation may comprise an electromagnetic wave or a spatial variation in a physical property, such as magnetic field direction or reflectance. Brief Description of the Drawings Figure 1 shows the hardware of an embodiment of the present invention; Figure 2 is a block diagram illustrating the relationship between certain software elements of an embodiment of the present invention; Figure 3 illustrates an indicia retrieving process; Figure 4 illustrates the relationship between a label sheet template and label lists and sequence generators; Figure 5 is a structure chart illustrating the printing of a set labels; and Figure 6 shows a printed sheet of labels. Detailed Description of the Preferred Embodiment An embodiment of the present invention will now be described, by way of example, with reference to the accompanying drawings. In the following description, terminology appropriate for Microsoft Windows programming will be employed as these are familiar to a large number of programmer. However, it will be appreciated that the present invention is not restricted in its application to Microsoft Windows platforms. Referring to Figure 1, a label printing system is implemented using a personal computer 1 and a printer 2 connected to the personal computer 1 for receiving printing instructions therefrom. Referring to Figure 2, a group of labels, to be printed by the apparatus show in Figure 1, is represented by an instance 3 of a label list object. The label list object instance 3 has a labels property which comprises a list of instances 4 of a label object and name, step and repeat properties. The purpose of the step and repeat properties will become apparent from the description of the sequence generators given below. Each label object instance 4 has an index property, giving its position in the list of label objects, a position property, e.g. x and y co-ordinates, giving the position of the represented label on the printed label sheet, and a definition property. The definition property is a pointer to an instance of a label definition object 5, 6. Each label definition object instance 5, 6 has a fields property which is a list of instances 7, 8, 9, 10, 11, 12 of field definition object instances. The field definition object classes are polymophically descended from an abstract field definition object class. The field definition object instances 7, 8, 9, 10, 11, 12 can be variable field definition object instances 7, 8, 9, 10, static text field definition object instances 11 or static graphic field definition object instances 12. Static text field definition object instances 12 have a content property which is a pointer to a string constant, a custom print method and a position property, which gives the field's printing position relative to the label. Static graphic field definition object instances 11 have a content property which is a pointer to a bit map, a custom print method and a position property, which gives the field's printing position relative to the label. The variable field definition object instances 7, 8, 9, 10 have a content property which is pointer to an instance of a sequence generator object 13, 14, a custom print method and a position property, which gives the field's printing position relative to the label. The variable field definition object instances 7, 8, 9, 10 have additional properties which is a set of column object instance identifiers which identify column object instances 15, 16, 17, 18, 19, 20 of the sequence generator object instances 13, 14 pointed to by the content property and a direct flag property. In each case above, the custom print method takes an identification of a device context, or the equivalent, as a parameter and prints the field's content to that device context. Consequently, the custom print methods are applicable for both generating real labels and generating representations of labels on a computer screen. Each sequence generator object instance 13, 14 comprises a columns property. The columns property comprises an ordered list of column object instances 15, 16, 17, 18, 19. Each column object instance 15, 16, 17, 18, 19 has a list of indicia definitions, for example strings. The elements of the column object instances 15, 16, 17, 18, 19 can be accessed using an index value. The sequence generator object instances 13, 14 each have a method that returns an indicium given a column id I and a value N. Referring to Figure 3, for each column (indexed with variable J) until the column index J equals the I - 1 (steps si and s3), N is assigned the result of N div Length(column )) (step s2). Then, N is assigned the result of N mod Length (column(I)) (step s4). The indicium at the Nth location in the Ith column is then returned by the method (step s5). Thus, by calling the indicium returning method of a sequence generator object instance 13, 14, a variable field definition object 7, 8, 9, 10 can obtain its contents. If the direct flag is true, the printed content is the string returned by the sequence generator object. However, if the direct flag is false, the printed content is an indicium identified by the returned string, which may be, for example, the filename of a graphics file. One label printing job may employ a plurality of label list object instances to represent a plurality of label groups on a label sheet. Consequently, different groups of labels may be defined by elements of a plurality of lists which can refer to the same or different label definition object instances. Label definition objects used for different lists may use the discrete or overlapping sets of sequence generator object instances. Thus, by way of example and referring to Figure 4, the labels on a label sheet 100 may be grouped into first, second and third columns. However, the labels in the first and second columns form one group 101a and are represented by elements of a first label list object instance 103a with alternate elements pointing to first and second label definition object instances 105, 106. The steps value for the first label list object instance is 1 and its repeat value is 2. The labels in the third column form a second group 101b are represented by elements of a second label list object instance 103b whose elements point to the second label definition object instance 106. The step value for the second label list object instance 103b is 1 and its repeat value is also 1. The first label definition object instance 105 has two variable field definition object instances which point respectively to first and second single-column sequence generator object instances 113, 114. The second label definition object instance 106 has one variable field definition object instance which points to the second sequence generator object instance 114. In this example, first and second sequence generator object instances 113, 114 each have only one column. The column of the first sequence generator object instance 113 comprises 001, 002, 003, 004, 005, 006, 007, 008. 009, 010 and the column of the second sequence generator object instance comprises a, W, c, F, z, q, P, h, L , A. It should be noted that the elements of a column need not be inherently ordered. The label list object instances 103a, 103b are elements of a list comprising a labels property 102 of a job object instance representing a label printing job. The job object instance also has a template property that is associated with a particular label sheet format and which defines the outlines of the labels in the label groups 101a, 101b so that they can be printed to the display window's device context. The "printing" of the labels defined by the label list objects 103a, 103b will now be described. The process applies to both displaying labels in an image of the label sheet and actually printing the label. The printing process involves invoking print methods of the various object defining the job in a cascade with the printing parameters being passes down the cascade of method invocations. The printing parameters are passed as a pointer to a printing parameters record variable so that the methods can effect changes thereto. The printing parameter record variable comprises fields for: - 1. a device context; 2. a field clip region definition; 3. the co-ordinates of the top left and bottom right corners of the label; 4. vertical and horizontal scaling factors; 5. page number; 6. last page; 7. label list name; 8. label background colour; 9. label outline colour; 10. the label ordinal value; 11. the list step value; 12. the list repeat value; - o - 13. a show template flag; and 14. a printing mode flag. Values are not assigned to all the fields of the printing parameter fields at the start of a print job. As will become apparent., values are assigned to the fields at the appropriate level within the cascade of print methods. Referring to Figure 5, in order to display a complete print, the device context field of the printing parameter is set to that of the program's main window, the page number and last page fields are assigned zero, the show template flag is set to true and the printing mode flag is set to false, i.e. printing to the display not to paper (pi). When these fields have been assigned value, and job object instance's print method (p2) is invoked. The job object instance's print method (p2) first prints the template (p3)(i.e. label outlines to the program's main window). The job object instance then invokes the print method (p4) of the label lists object instance 102 and then increments the page number field of the printing parameter. This is repeated until the page number field value is greater then the last page field value. The print method (p4) of a label list object instance 102 invokes the print method (p5) of the list object instances 103a, 103b. The label list object print method (p5) first sets the step and repeat fields of the print parameter to the step and repeat property values of the label list object instance 103a, 103b and the top left position field to the position property of the current list element. The labels represent in the list may extend over several pages. Consequently, before the print method of the label definition object instance 105, 106 for a list element is invoked, the ordinal value field (ov) of the printing parameter is set to the result of the following: - ov = (p x l)+ n where p is the page number, which is zero-based, 1 is the list length and n is the position of the current label in the list. When the print method (p6) of an label definition object instance 105, 106 is invoked, it first calculates a modified ordinal value (ov) for the current label according to the formula: - ov' = (((ov - 1) div r) x s) + 1 where r is the label list object instance's repeat property and s is its step property. This formula assumes that the ordinal value counts from 1 not 0. Then it invokes the print methods (p7, p8, p9) of the associated field definition object instances in turn. The print method (p7) of a variable field object instance invokes the indicium returning method (plO) of the relevant sequence generator object instance 113, 114 with the modified ordinal value (ov) and "1", indicating the only column of the sequence generator object instance 114, as parameters. This method then returns an indicium by the process described above. If a field makes use of more than one column of a sequence generator object instance, the indicium returning method must invoke the indicium returning method ( lO) a plurality of times. The results are then combined for printing. In the case of strings, the results may be concatenated in a user-definable order. Once the indicia has been obtained, the field definition object instance print method prints the indicium to the notified device context, using the colour, position and clip area information provided in the printing parameter passed to it. The print method (p8) of any static graphic field definition objects are then invoked. This method "prints" the graphic to the device context using the colour, position and clip area information provided in the printing parameter passed to it. Finally, the print method (p9) of any static text field definition objects are then invoked. This method "prints" the text to the notified device context using the colour, position and clip area information provided in the printing parameter passed to it. The printed sheet produced by the process described above is shown in Figure 6. Printing to label sheets is essentially the same save that a "printer" device context is supplied, the show template flag is set to false and the print type flag is set to true, indicating printing to a label sheet, so that the printing of page numbers and headers and footers can be performed. The print methods do not need to be invoked using the whole cascade. For instance, a printing parameter can be built and passed directly to the printing method of a label definition object instance so that an individual label can be displayed. This ability is useful for providing a graphical label design user interface. From the foregoing, it will be appreciated that a great deal of control can be had over the label printing process. Accordingly, the present embodiment is provided with user interface provision for setting and selecting various features. The user interface for the present embodiment comprises a main window from which a plurality of task-specific dialogs can be called up. Firstly, the user can call up a dialog for selecting a template definition from a set of files defining templates. Once a template has been selected, it is displayed by invoking the job print method as described above. This will simply display the shapes of the labels because no label definitions have been added. At this stage all of the labels are in a single list. Therefore, a dialog is provided whereby the user can define additional label lists and move labels between lists. Another dialog is provided so that a user can build sequence generators using automatically generated ordinal sequences or sequences entered manually element by element to create the columns. A user may also manually modify automatically generated sequences, for instance to remove the numbers 4 or 13. A label design dialog displays a single selected label, using the individual print process described above, and allows the user to position static and variable fields. The variable fields can be associated with columns of a sequence generator by a drag and drop process from the sequence generator building dialog. In this way, the label, field and sequence generator object instances can be created and linked. Changes made using these dialogs are reflected in the displayed label sheet image. When the labels meet the user's requirements, the user can print the labels using a conventional printer and prepared label sheets. The user can also save the definitions of the template, labels and sequence generators in a file so that the job can be recreated at a later date. Additional fields may be added to the printing parameter record so that richer printing options may be provided. For instance, a list view flag may be provided so that labels can be printed to the program's window with their list names and ordinal values rather than the data fields. The sequence generator objects may be modified so that the indicium returning methods return pointers to printable objects, preferably having a common ancestor type but custom print methods. Consequently, graphic and text indicia may be mixed in one sequence.

Claims: Claims 1. A system for displaying a sequence of indicia, the system comprising: - indicia selection means (13, 14; 113, 114); and output means (3, 4, 5, 6; 103a, 103b, 105, 106) for producing command signals for a display apparatus (1, 2), characterised in that the indicia selection means (13, 14; 113, 114) includes a list (15, 16, 17, 18, 19) whose members each define an indicium and is configured to perform a process for selecting a member of said list (15, 16, 17, 18, 19) in dependence on a supplied index value derived from an ordinal value related to a display region in which an indicium in said list (15, 16, 17, 18, 19) is to be displayed, and the output means (3, 4, 5, 6; 103a, 103b, 105, 106) is configured for generating and supplying said values to said process for selecting list members and generating display apparatus control signals for displaying the indicia defined by the selected list members. 2. A system according to claim 1, wherein the display apparatus control signals are printer control signals. 3. A system according to claim 1, wherein the display apparatus control signals are display screen control signals. 4. A system according to claim 1, 2 or 3, wherein the indicia selection means comprises a software object (13, 14; 113, 114) including said list (15, 16, 17, 18, 19) and a method for obtaining a position in said list (15, 16, 17, 18, 19) in dependence on said supplied value. 5. A system according to claim 4, wherein the indicia selection means comprises a further list (15, 16, 17, 18, 19), whose members each define an indicium, and the selection means is configured to perform said process for obtaining a position in said further list in dependence on a supplied value, said lists being arranged in an ordered manner. 6. A system according to claim 5, wherein said lists have different numbers of members. 7. A system according to claim 5 or 6, wherein said process comprises, for each list until the list before that from which position is required, assigning the result of N div the length of the current list to N and then obtaining the result of N mod the length of the list from which the position is required as the required position, where N is initially the supplied value. 8. A system according to any preceding claim, wherein the ordinal value is the position of a display region in an array of display regions. 9. A system according to claim 2, wherein the display region is a label. 10. A system according to claim 3, wherein the display region is a representation of a label. 11. A system according to claim 9 or 10, including means storing step and repeat values associated with a label group, wherein the output means is configured to generate said supplied values using the stored step and repeat values associated with the group of the label being displayed and said ordinal value. 12. A method of producing a display of an indicium in a sequence of indicia, the method comprising: - selecting an indicium definition from a list (15, 16, 17, 18, 19) of indicium definitions in dependence on a supplied index value derived from an ordinal value related to a display region in which the indicium is to be displayed; and producing display apparatus control signals for causing a display device to display the indicia defined by the selected definition. 13. A method according to claim 12, wherein the display apparatus control signals are printer control signals. 14. A method according to claim 12, wherein the display apparatus control signals are display screen control signals. 15. A method according to claim 12, 13 or 14, the indicium definition is selected by invoking a method of a software object instance having a property comprising said list, said object's method obtaining a position in said list in dependence on said supplied value. 16. A method according to claim 15, wherein said object has a further list of variables, each defining an indicium, said lists of variables are ordered, and the object's method selectively obtains a position in said further list in dependence on a supplied value. 17. A method according to claim 16, wherein said lists have different numbers of members. 18. A method according to claim 16 or 17, wherein said object's method comprises, for each list until the list before that from which position is required, assigning the result of N div the length of the current list to N and then obtaining the result of N mod the length of the list from which the position is required as the required position, where N is initially the supplied value. 19. A method according to any one of claim 12 to 18, wherein the ordinal value is the position of a display region in an array of display regions. 20. A method according to claim 13, wherein the display region is a label. 21. A system according to claim 14, wherein the display region is a representation of a label. 22. A method according to claim 20 or 21, including storing step and repeat values associated with a group of labels and generating said supplied values using the stored step and repeat values associated with the group of the label being displayed and said ordinal value. 23. A manifestation of a signal representing a computer program for controlling a computer to operate according to a method of any one of claims 12 to 22. 24. A manifestation of a signal according to claim 23, comprising an electromagnetic wave. 25. A manifestation of a signal according to claim 23, comprising a spatial variation in a physical property. 26. A manifestation of a signal according to claim 25, wherein said physical property is magnetic field direction. 27. A manifestation of a signal according to claim 25, wherein said physical property is reflectance.

Inventors: ALLDAY NIK, ALLDAY, NIK
Applicants: ALLDAY NIK, SILVER FOX LTD, ALLDAY, NIK, SILVER FOX LIMITED
Application year: 2000
Main classification: G06F17
IPC codes: B41J5, G06F17, G06K1