US 20020031386 A1
A printing system, for instance, for printing labels makes use of one or more sequence generators (13, 14; 113, 114) which can return an 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 data source file required in conventional mail merge and label printing systems.
1. 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; and wherein the indicia selection means comprises a list whose members each define an indicium and is configured to perform a process for selecting a member of said list 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 wherein
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.
2. The system according to
3. The system according to
4. The system according to
5. The system according to
6. The system according to
7. The system according to
8. The system according to
9. The system according to
10. The system according to
11. The system according to
12. The system according to
13. The system according to
14. The system according to
15. The system according to
16. The system according to
17. The system according to
18. The system according to
19. The system according to
20. The system according to
21. The system according to
22. The system according to
23. The system according to
24. The system according to
25. 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.
26. The method according to
27. The method according to
28. The method according to
29. The method according to
30. The method according to
31. The method according to
32. The method according to
33. The method according to
34. The method according to
35. The method according to
36. The method according to
37. The method according to
38. The method according to
39. The method according to
40. The method according to
41. The method according to
42. The method according to
43. The system according to
44. The method according to
45. The method according to
46. A system for printing a sequence of indicia comprising:
a computer further comprising a readable storage means; and
a printing means electronically connected to said computer;
wherein said readable storage means comprises instructions for allowing a user to select a composite of image elements from an array of image elements and for applying a variable sequence to said composite of image elements.
 The present invention relates to a system for printing sequences of indicia. More particularly the present invention is a system and method for printing labels wherein the indicia can vary over the printing sequence.
 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.
 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.
 This basic process has also been used for the generation of labels. Examples are described in U.S. Pat. No. 4,939,674 and U.S. Pat. No. 5,621,864. Other patents have been issued for invention relating to label printing. For example:
 U.S. Pat. No. 5,995,985 describes a software system which allows the user to select and arrange fields and images on series of labels to be printed. The user selects a specific label template. On each label the user may place text, graphics, or stamps, by using the drag and drop buttons. The user may insert fields against templates, which reference to a database.
 U.S. Pat. No. 5,659,603 describes a system for creating a template and printing a label sheet for individual telephone numbers and features.
 U.S. Pat. No. 5,621,864 describes a system for printing labels that have both varied templates and varied indicia fields. This system provides the user with the ability to vary the sequence of information displayed in indicia fields.
 U.S. Pat. No. 5,967,675 describes the tape printer which allows the user to change the layout parameters of a label to be printed. The user may vary type face features, the type of bar code symbol to be printed, and the information to be printed on the label
 U.S. Pat. No. 5,857,789 describes an apparatus for printing bar code information on a tape. The display cannot show both text data and graphic data at the same time nor can the device is be adapted for array printing
 U.S. Pat. No. 5,841,954 describes a printer that can print both alphanumeric characters and bar codes on a label. Software provides printing instructions for the correct size of a bar corresponding to a number in a bar code.
 U.S. Pat. No. 5,467,433 describes an apparatus which allows a user to make his or her own software program for label printing. The user may build specific programs separately and then execute a series of linked programs, in order to achieve an overall desired product.
 Patent No. DE4228576 to Schwille describes computer software which allows a user to improve both text and graphic image on a label.
 European Patent No. WO9729957 to Liedtke describes software which creates labels with text and graphic data. Labels of a variety of sizes may be printed on one label sheet. Further, labels containing both text and graphic images are shown
 U.S. Pat. No. 5,930,810 describes a system for designing a variety of document types and printing to either a local or a remote printer. A template is provided for the user, such as business card or a certificate. Graphic files are available for the user to define pictures and text to be shown on the desired product.
 U.S. Pat. No. 4,718,784 describes a computer system for printing a sheet of labels where each label may contain multiple text strings and multiple graphic images. This system uses a graph table which tracks the position of printable pixels for each label.
 U.S. Pat. No. 4,875,174 describes a computer peripheral that accesses software and data stored on the host computer in order to print labels without interrupting other host computer functions.
 U.S. Pat. No. 4,939,674 describes an apparatus for sequential labeling. The apparatus allows a user to designate a label of any size and shape. A user may place fields on each label containing either text or graphic files. Control software provides predefined templates or the ability to create custom templates. In this case, this patent does disclose applying a sequence with a user template.
 U.S. Pat. No. 5,559,934 describes an apparatus for printing labels which automatically optimizes characters to fit within the printable range of a specific label. The apparatus stores template information, standard label sheets, and label positions.
 Given the flexibility in printing that is required in today's communications, what would be useful is a system that applies a printing sequence that can be flexibly designated via a user template, applying a sequence with a cog and wheel counter algorithm, using a counter to reference an image to be inserted in a field, and streaming print instructions by a parent/child hierarchy thereby avoiding the need for the data source file required in conventional mail merge and label printing systems.
 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 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.
FIG. 1 shows the hardware of an embodiment of the present invention;
FIG. 2 is a block diagram illustrating the relationship between certain software elements of an embodiment of the present invention;
FIG. 3 illustrates an indicia retrieving process;
FIG. 4 illustrates the relationship between a label sheet template and label lists and sequence generators;
FIG. 5 is a structure chart illustrating the printing of a set labels; and
FIG. 6 shows a printed sheet of labels.
 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 FIG. 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 FIG. 2, a group of labels, to be printed by the apparatus show in FIG. 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 FIG. 3, for each column (indexed with variable J) until the column index J equals the I−1 (steps s1 and s3), N is assigned the result of N div Length(column (J)) (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 FIG. 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 101 a and are represented by elements of a first label list object instance 103 a 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 101 b are represented by elements of a second label list object instance 103 b whose elements point to the second label definition object instance 106. The step value for the second label list object instance 103 b 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 103 a, 103 b 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 101 a, 101 b so that they can be printed to the display window's device context.
 The “printing” of the labels defined by the label list objects 103 a, 103 b 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 night 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;
 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 FIG. 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 (p1). 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 103 a, 103 b. 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 103 a, 103 b 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 (or) of the printing parameter is set to the result of the following:
 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:
 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 (p10) 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 (p10) 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 FIG. 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.