Method and apparatus for defining operations to be performed during automated data processing6961922
Abstract
A number of items of data from a data source (12) can be processed and supplied to a data destination (16, 17). The data can include image data, text data, numeric data or other types of data, or a combination of types of data. The processing of the data is controlled by a project definition (14, 71, 101) which includes a plurality of modules selected from a variety of available modules (Tables 1-4). The modules include input and output ports which are interrelated by binding information. One of the existing modules provides the capability for execution of a specified command in an independent and separate application program. Further, custom modules can be readily prepared, in order to supplement the default set of available modules.
Claims
1. A method, comprising the steps of:
providing a set of predetermined function definitions;
preparing a project definition, said project definition including:
a plurality of function portions which each correspond to one of said function definitions in said set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition;
a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and
binding information which includes binding portions that each associate a respective said input port with one of said output ports;
wherein one of said function definitions identifies a separate image processing program, wherein one of said function portions which corresponds to said one function definition identifies a command for said image processing program, and wherein execution of said one function portion causes execution of said command by said image processing program in a manner which affects image data present in said one function portion.
2. A method according to claim 1, including the steps of concurrently executing said project definition and an instance of said image processing program.
3. A computer-readable medium encoded with a computer program which recognizes a set of predetermined function definitions, said program being operable when executed to facilitate preparation of a project definition which includes:
a plurality of function portions which each correspond to one of said function definitions in said set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition;
a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and
binding information which includes binding portions that each associate a respective said input port with one of said output ports;
wherein one of said function definitions identifies a separate image processing program, wherein one of said function portions which corresponds to said one function definition identifies a command for said image processing program, and wherein execution of said one function portion causes execution of said command by said image processing program in a manner which affects image data present in said one function portion.
4. A computer-readable medium according to claim 3, wherein said program is operable when executed to facilitate concurrent execution of said project definition and an instance of said image processing program.
5. A method, comprising the steps of:
providing a set of predetermined function definitions which are different;
modifying said set to include at least one custom function definition which is functionally different from each of said predetermined function definitions and which identifies a separate image processing program; and
preparing a project definition, said project definition including:
a plurality of function portions which each correspond to one of said function definitions in said modified set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition from said modified set;
a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and
binding information which includes binding portions that each associate a respective said input port with one of said output ports;
wherein one of said function portions corresponds to said custom function definition, and wherein execution of said one function portion causes execution of a command by said image processing program in a manner which affects image data present in said one function portion.
6. A method according to claim 5, wherein said modifying step includes the step of creating said custom function definition by modifying one of said predetermined function definitions.
7. A method according to claim 6, wherein said modifying step includes the step of replacing in said set said one predetermined function definition with said custom function definition.
8. A method according to claim 6, wherein said modifying step includes the step of including in said set each of said custom function definition and said one predetermined function definition.
9. A method according to claim 6, wherein said modifying step includes the steps of:
modifying source code for said one predetermined function definition in a development environment;
compiling the modified source code in said development environment to obtain an object code file; and
including said object code file in said set.
10. A method according to claim 9, including the step of using as said development environment an off-line development environment.
11. A method according to claim 9, including the step of using VisualBasic (VB) as said development environment.
12. A computer-readable medium encoded with a computer program which recognizes a set of predetermined function definitions that are different, said program being operable when executed to facilitate:
modification of said set to include at least one custom function definition which is functionally different from each of said predetermined function definitions and which identifies a separate image processing program; and
preparation of a project definition, said project definition including:
a plurality of function portions which each correspond to one of said function definitions in said modified set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition from said modified set;
a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and
binding information which includes binding portions that each associate a respective said input port with one of said output ports;
wherein one of said function portions corresponds to said custom function definition, and wherein execution of said one function portion causes execution of a command by said image processing program in a manner which affects image data present in said one function portion.
13. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes creation of said custom function definition through modification of one of said predetermined function definitions.
14. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes replacement in said set of said one predetermined function definition with said custom function definition.
15. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes addition to said set of said custom function definition, so that said set includes each of said custom function definition and said one predetermined function definition.
16. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set in a manner which includes:
modification of source code for said one predetermined function definition in a development environment;
compilation of the modified source code in said development environment so as to obtain an object code file; and
inclusion of said object code file in said set.
17. A computer-readable medium according to claim 12, wherein said program is operable when executed to facilitate said modification of said set by accepting said custom function definition in a form which includes an object code file prepared in a development environment separate from said program by modification and compilation of source code for said one predetermined function definition.
18. A computer-readable medium according to claim 17, wherein said program is operable when executed to use as said development environment VisualBasic (VB).
19. A method according to claim 1, wherein execution of said command by said image processing program conforms said image data to a generally similar appearance.
20. A computer-readable medium according to claim 3, wherein execution of said command by said image processing program conforms said image data to a generally similar appearance.
Description
TECHNICAL FIELD OF THE INVENTION
This invention relates in general to automated processing of multiple items of data and, more particularly, to a method and apparatus for defining operations that are to be performed on data during automated data processing.
BACKGROUND OF THE INVENTION
There are a variety of situations in which automated processing of a number of data items is desirable. One specific example of such an application is product catalogs. Product catalogs, whether in the form of a paper catalog or an Internet "Web" site, frequently have numerous pictures which each depict a respective one of the various items that are available for sale. Many years ago, these pictures were prepared using optical negatives and photographs. Currently, however, the trend is to maintain and process these pictures in the form of computer files containing digital images.
A given paper or on-line catalog will usually include products from a variety of different manufacturers, and it is common for each manufacturer to provide its own digital images. There will typically be variation between the form of images provided by different manufacturers, for example in terms of characteristics such as the size, shape, resolution, tint, and so forth. It is even possible that the images from a single given manufacturer may have different forms. Accordingly, in order for the images throughout a catalog to have a generally similar appearance, the various images from various sources need to be processed to adjust characteristics such as size, shape, resolution, and/or tint, so as to bring them into general conformity with each other.
A further consideration is that a manufacturer's images do not represent a static situation, because manufacturers are constantly adding new products with new images, discontinuing existing products and associated images, and providing updated images for existing products. Moreover, there may be other reasons for adjusting images. For example, with respect to a paper or on-line catalog intended for use during the Christmas season, there may be a desire to put a festive frame around each image, such as a frame of holly leaves and berries. Moreover, stylistic changes in the images are often desirable.
The traditional approach for carrying out these various types of image processing tasks has involved manual adjustments effected on an image-by-image basis, through use of image processing software requiring extensive operator interaction. However, this is extremely time consuming and expensive. Many organizations currently employ a number of graphic artists to do this work, at great expense.
A less common approach has been the preparation of a hard-coded software routine to process images, written in line-by-line source code. However, these routines are time-consuming and expensive to generate, are likely to include errors or "bugs", and have little flexibility because they cannot be modified quickly and cheaply. Moreover, they can only be prepared and executed by a skilled programmer, rather than by a graphic artist who is skilled in image processing but has limited computer skills. It is difficult to find persons who have both artistic and computer skills, and they command large salaries.
Thus, while these traditional approaches have been generally adequate for their intended purposes, they have not been satisfactory in all respects. In this regard, to the extent that prior approaches have involved automation through hard-coded source code, it is time-consuming and expensive to generate the hard-coded software for any specific application. This is particularly true where there is a need for some data processing capability which is unusual or unique. The time and expense needed to develop and debug special hard-coded source code to implement an unusual or custom capability is typically significant, and in some cases cost prohibitive. Further, and as discussed above, it requires a high level of computer skills, thereby excluding persons with limited computer skills, such as graphic artists, from implementing unusual or custom capabilities for processing the data.
SUMMARY OF THE INVENTION
From the foregoing, it may be appreciated that a need has arisen for a method and apparatus for defining operations that are to be performed on data during automated data processing, in a manner which provides flexibility, which is efficient and inexpensive, and which can be utilized by persons having limited computer skills. According to the present invention, a method and apparatus are provided to address this need.
In particular, one form of the present invention involves providing a set of predetermined function definitions which are different, and preparing a project definition. The project definition includes: a plurality of function portions which each correspond to one of the function definitions in the set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition; a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and binding information which includes binding portions that each associate a respective input port with one of the output ports. One of the function definitions identifies a separate application program, and one of the function portions which corresponds to the one function definition identifies a command for the application program. Execution of the one function portion causes execution of the command by the application program in a manner which affects data present in the one function portion.
Another form of the present invention involves providing a set of predetermined function definitions which are different, modifying the set to include at least one custom function definition which is functionally different from each of the predetermined function definitions, and preparing a project definition. The project definition includes: a plurality of function portions which each correspond to one of the function definitions in the modified set, and which each define at least one input port and at least one output port that are functionally related according to the corresponding function definition from the modified set; a further portion which includes a source portion identifying a data source and defining an output port through which data from the data source can be produced, and which includes a destination portion identifying a data destination and defining an input port through which data can be supplied to the data destination; and binding information which includes binding portions that each associate a respective input port with one of the output ports.
BRIEF DESCRIPTION OF THE DRAWINGS
A better understanding of the present invention will be realized from the detailed description which follows, taken in conjunction with the accompanying drawings, in which:
FIG. 1 is a diagrammatic view of a configuration which embodies the present invention, and which includes a data source, two data destinations, and a project definition;
FIGS. 2-5 are each a diagrammatic view of a respective different icon which can be used to diagrammatically represent a portion of a project definition of the type shown in FIG. 1;
FIG. 6 is a diagrammatic view similar to FIG. 1 of a different project definition according to the present invention;
FIG. 7 is a diagrammatic view of a different way of visually representing the project definition of FIG. 6;
FIG. 8 is a diagrammatic view similar to FIG. 1 of yet another project definition according to the present invention;
FIGS. 9A and 9B are a block diagram of a system which embodies the present invention, including the capability to create and execute project definitions of the type shown in FIGS. 1 and 6-8;
FIGS. 10-12 are each a flowchart showing a respective sequence of operations carried out by respective portions of the software within the system of FIG. 9;
FIG. 13 is a diagrammatic view of a dialog box which can be displayed by the system of FIG. 9 during execution of a project definition;
FIG. 14 is a diagrammatic view of a screen which can be displayed by the system of FIG. 9 to permit a user to carry out functions such as creation, modification and execution of a project definition;
FIG. 15 is a diagrammatic view of a different way in which the project definition of FIG. 8 can be visually represented;
FIG. 16 is a diagrammatic view of two modules of a project definition, in conjunction with binding menus that are used to define a relationship between the depicted modules;
FIG. 17 is a diagrammatic view of a further dialog box, which can be displayed by the system of FIG. 9 during creation of a project definition; and
FIG. 18 is a diagrammatic view of yet another dialog box, which can be displayed by the system of FIG. 9 during creation of a project definition.
DETAILED DESCRIPTION OF THE INVENTION
FIG. 1 is a block diagram of a configuration 10 which embodies features of the present invention, and which includes a computer subdirectory 12 that serves as a data source and contains a plurality of files with images therein, a project definition 14 that defines how data from the files in the subdirectory 12 should be processed, and two computer subdirectories 16 and 17 that serve as data destinations into which files containing the processed data will be stored. The project definition 14 is executed by a computer, in a manner described in more detail later, and successively obtains the files from the subdirectory 12, processes each file 12 in a manner described below, and then deposits the processed file in either the subdirectory 16 or the subdirectory 17. For purposes of the present discussion, it is assumed that the files in the subdirectory 12 contain image data, but they could alternatively contain some other type of data. Also, the terms directory, subdirectory, folder and subfolder are all used here to refer to directories.
The specific project definition 14 shown in FIG. 1 has been designed to be relatively simple for purposes of illustrating some basic concepts of the present invention, and basically will do two things. First, it will take each file obtained from the subdirectory 12, and evaluate the size of the file. With respect to size, it is important to remember the distinction between the size of an image, which is measured in pixels in each of the height and width directions, and the size of the file containing the image, which is typically measured in kilobytes (KB). In FIG. 1, files above a certain size are to be placed in the subdirectory 16 after processing, whereas all other files are to be placed in the subdirectory 17 after processing. Second, the project definition 14 will take the name of each file, and superimpose this name on top of the image in the file. For example, if a given file is named "elephant" and contains an image of an elephant, the word "elephant" will be superimposed on top of the image of the elephant.
The subdirectory 12 is not itself a part of the project definition 14. Subdirectory 12 may be local to the computer executing the project definition 14, may be disposed in another nearby computer accessible through a local area network (LAN), may be disposed in a remote computer many miles away which must be accessed through the Internet, or may be accessed in some other manner. The project definition 14 thus needs to know where to find the subdirectory 12 and the data therein. Accordingly, the project definition 14 includes a source module 21, which includes a definition of where to locate the subdirectory 12, and how to access it. The source module 21 successively obtains the files from the subdirectory 12. Each time the source module 21 receives a file from the subdirectory 12, it outputs the image data from the file through a first output port, as indicated diagrammatically at 22, and outputs a text string representing the file name through a second output port, as indicated diagrammatically at 23.
Lines of the type shown at 22 and 23 are referred to herein as binding lines. For convenience, image data is indicated by a wide double-line binding line, as shown in 22, whereas other types of data are indicated by a thin single-line binding line, as shown at 23. Alternatively, different types of binding lines could be distinguished in some other manner, for example by presenting them in different colors. Where an input port and an output port are associated with each other by a binding line, they are said to be bound to each other.
In the embodiments disclosed herein, an image or other data element obtained from a data source by a project definition is processed to completion by the project definition before the next successive image or data item from that data source is provided to the project definition. However, it will be recognized that it would alternatively be possible for a project definition to simultaneously have several successive images or data elements at various levels of processing, for example through the use of appropriate pipelining techniques. Conceptually, one way to view the project definition 14 of FIG. 1 is that execution proceeds on a module-by-module basis through the project definition along the double-line image data binding lines, from the source module 21 to the branch module 26, and then to either the action module 31 followed by the destination module 37, or alternatively to the action module 32 followed by the destination module 38. Another way to view the project definition 14 is that each of the modules is ready at all times to carry out its respective function, and does so as soon as all data needed to carry out that function arrives at the input port(s) of that module.
Image data that is output at 22 by the source module 21 flows to an input port of a branch module 26. The branch module 26 checks the size of the file associated with each image that arrives at its input port. If the file size for a given image is above a predetermined size, then the branch module 26 outputs the image data at 27 through a first output port. Otherwise, it outputs the image data at 28 through a second output port. The image data at 27 flows to an input port of an action module 31, whereas the image data at 28 flows to an input port of an action module 32.
For the sake of simplicity, the action modules 31 and 32 in the example of FIG. 1 have identical functions. More specifically, each has a further input port which receives the text string represented by binding line 23. As mentioned above, this text string contains the name of the file associated with the image data. The action modules 31 and 32 each have the capability to take the text string and superimpose it on the associated image data, and then output the result at 33 or 34 through an output port. The data at 33 flows to an input port of a destination module 37, and data at 38 flows to an input port of a destination module 38. Again, for simplicity, destination modules 37 and 38 are functionally identical.
In this regard, and as was the case with the subdirectory 12, the subdirectories 16 and 17 may each be local or remote, and may be accessed in different ways. Further, one or both of the subdirectories 16 and 17 may be located in proximity to the subdirectory 12, or may be remote from the subdirectory 12. Consequently, since the subdirectories 16 and 17 are not part of the project definition 14, the project definition 14 needs to know where to find them and how to access them, so that it knows where to deposit processed data. Accordingly, the destination modules 37 and 38 each include a definition of where to find the associated subdirectory 16 or 17, and how to access it. Thus, when the project definition 14 has finished processing all of the files from the subdirectory 12, the subdirectory 16 will contain a processed version of the files which are larger than a specified size, and the subdirectory 17 will contain a processed version of the remaining files. Further, each of the files in subdirectories 16 and 17 will contain an image which has the associated file name superimposed on it.
A brief comment regarding the use of the terms "process" and "sub-process" will help to avoid confusion. A project definition of the general type shown at 14 in FIG. 1 may include two or more mutually exclusive sets of modules, which are each referred to as a process. In the particular example of FIG. 1, for the sake of simplicity, the project definition 14 includes only one process, which contains all of the modules 21, 26, 31-32, and 37-38. This process has two portions, which are respectively disposed above and below the broken line 42 in FIG. 1.
The modules 21, 23, 31 and 37 which are above the broken line 42 are referred to herein as a main process, and the modules 32 and 38 which are below the broken line 42 are referred to as a sub-process. Technically, the main process and the sub-process are each a respective sub-process of the overall process. However, the first sub-process in every process is mandatory, and is always the starting point for execution of the process, and thus it is referred to as the main "process" rather than as the main "sub-process", even though it is actually a sub-process of the overall process. The presence of one or more additional sub-processes is entirely optional, and execution may or may not be transferred to each, depending upon factors such as whether branch modules are present and the particular data which is being processed. Consequently, they are referred to as sub-processes. An input or output port of a given module can be bound to ports of other modules within any of the sub-processes of the same process, but cannot be directly bound to ports of modules in other processes of the same project definition.
Where a branch module in a main process is capable of routing data to a sub-process, the data is always transferred to the first module in that sub-process, rather than to an intermediate module partway along the sub-process. The same is true where a branch module in a sub-process is capable of transferring data to a different sub-process. A further characteristic in the disclosed embodiments is that branch modules are allowed to route data to a later sub-process, but never to an earlier sub-process or the main process. Moreover, while one output port of a branch module can route data to the next successive module in the current sub-process (which may be the main process), the other output port is not permitted to route data to a module in the current sub-process, but must route data to a different sub-process. However, it will be recognized that an alternative embodiment could accommodate branch modules having the capability to route data to an earlier sub-process (which may be the main process), to a module partway along a different sub-process (which may be the main process), or to two modules which are both within the current sub-process. In fact, the alternative embodiment need not conceptually organize modules of an overall process into groups treated as respective sub-processes.
As discussed above, the branch module 26 will route each image either at 27 to the action module 31 or at 28 to the action module 32. If the data is routed to action module 31, then action module 31 and destination module 32 operate on the image data, while action module 32 and destination module 38 remain idle. Alternatively, if an image were instead to be routed at 28 to the action module 32, then action module 32 and destination module 38 would operate on the image data, while action module 31 and destination module 37 remained idle. Thus, in the example of FIG. 1, the branch module 26 determines whether processing of each image will be carried out by continuing along the main process, namely in action module 31 and destination module 37, or will be carried out in the sub-process, namely in action module 32 and destination module 38.
The project definition 14 in FIG. 1 is a simple example, but has been configured to show at least one example of each of the four types of modules that are recognized in the disclosed embodiments of the present invention. In other words, the disclosed embodiments of the present invention recognize source modules, one example of which appears at 21, branch modules, one example of which appears at 26, action modules, two examples of which appear at 31 and 32, and destination modules, two examples of which appear at 37 and 38. As reflected by the brackets along the bottom of FIG. 1, branch modules and action modules are sometimes referred to collectively herein as function modules. Source modules deal with the question of where to find the data to be processed, branch modules deal with the question of which data should and should not be processed in a specified manner, action modules deal with the question of what processing should be performed on the data, and destination modules deal with the question of where to put the processed data.
In order to put the present invention into perspective, it is helpful to understand one possible application for a project definition of the type shown at 14 in FIG. 1. Product catalogs, whether in the form of a paper catalog or an Internet "Web" site, frequently have numerous pictures each depicting a respective one of the various items that are available for sale. Many years ago, these pictures were prepared using optical negatives and photographs. Currently, however, the trend is to maintain and process these pictures in the form of computer files containing digital images.
A given paper or on-line catalog will usually include products from a variety of different manufacturers, and it is common for each manufacturer to provide its own digital images. There will typically be variation between the form of images provided by different manufacturers, for example in terms of characteristics such as the size, shape, resolution, tint, and so forth. It is even possible that the images from a given manufacturer may have different forms. Accordingly, in order for the images throughout a catalog to have a generally similar appearance, the various images from various sources need to be processed to adjust characteristics such as size, shape, resolution, and/or tint, so as to bring them into general conformity with each other. A further consideration is that a manufacturer's images do not represent a static situation, because manufacturers are constantly adding new products with new images, discontinuing existing products and their images, and providing updated images for existing products. Moreover, there may be other reasons for adjusting images. For example, with respect to a paper or on-line catalog intended for use during the Christmas season, there may be a desire to put a festive frame around each image, such as a frame of holly leaves and berries. Moreover, stylistic changes in the images are often desirable.
The traditional approach for carrying out these various types of image processing tasks has involved manual adjustments effected on an image-by-image basis, through use of image processing software requiring extensive operator interaction. However, this is extremely time consuming and expensive. Many organizations employ a number of graphic artists to do this work, at great expense.
A less common approach has been preparation of a hard-coded software routine to process images, written in line-by-line source code. However, these routines are time-consuming and expensive to generate, are likely to include errors or "bugs", and have little flexibility because they cannot be modified quickly and cheaply. Moreover, they can only be prepared and executed by a skilled programmer, rather than by a graphic artist who is skilled in image processing but has limited computer skills. It is difficult to find persons who have both artistic and computer skills, and they command large salaries.
In contrast to these known approaches, a project definition of the type shown at 14 in FIG. 1 provides the capability to automate image processing so that a large number of images can be automatically and rapidly processed in a defined manner, and at far less expense than would be involved with the traditional and common approach of manual processing. Further, and as described in more detail later, the present invention provides a simple and user-friendly approach for creating and modifying project definitions of the type shown at 14 in FIG. 1, thereby permitting graphic artists who have limited computer skills to easily and accurately create a project definition while substantially avoiding the likelihood of bugs, with far less overall time and expense than is involved with the known approaches discussed above. The advantages of the present invention over the known approaches will become even more apparent as the present invention is discussed in greater detail below. While the foregoing example of catalog preparation focused on processing of image data, and while the disclosed embodiments involve primarily the processing of image data, the present invention is also advantageous for applications which involve processing of other types of data.
The foregoing discussion of FIG. 1 described one specific example of each of the source, branch, action and destination categories of modules. The present invention actually recognizes several types of modules in each category. More specifically, TABLE 1 describes several different types of source modules, TABLE 2 describes several different types of branch modules, TABLE 3 describes several different types of action modules, and TABLE 4 describes several different types of destination modules. Some of the module types set forth in TABLES 1-4 could be omitted, or additional module types could be included, without departing from the present invention. The module types set forth in TABLES 1-4 are referred to herein as standard module types. As discussed later, the present invention also provides for the creation of custom module types, for example through modification of one of the standard module types set forth in TABLEs 1-4. The resulting custom module type can either be substituted for the standard module type from which it was derived, using the same name, or can be used to supplement the standard module types, using a unique new name.
A few comments are appropriate regarding TABLEs 1-4. First, the present invention permits the use of virtual paths, where a table is provided to associate each virtual path with an actual path. Where a project definition uses a virtual path term, each computer on which that project definition may be executed would include a respective table entry to associate that virtual path with a respective actual path. Thus, the project definition can be executed without change on each such computer, but will use a different actual path on each computer wherever the virtual path term appears, without any need to actually modify the path information within the project definition itself.
A further consideration is that, in the disclosed embodiments, project definitions recognize various types of data, including image data, numeric data in a floating point or "float" format, and string data in the form of a series of text characters. In the discussion which follows, references to data types are typically preceded by the prefix "em", such as "emImage", "emFloat", or "emString". This is an arbitrary prefix, which has been used to facilitate implementation of the disclosed embodiments. For example, if data is received from an external source with an indication that it includes data of a type "emFloat", it can be assumed that it conforms to the appropriate format. In contrast, if the data type is merely indicated to be "float", it would be necessary to evaluate the associated data in an attempt to determine which of various formats for floating point data it conforms to, but even then it may not be possible to tell.
A feature of the present invention is that many of the module definitions in TABLEs 2 through 4 have input ports configured so that the input port will accept data in various formats and, if that data is not in the format preferred by that input port, the input port will automatically convert the data to its preferred format. This feature is referred to as data matching. For example, if a number in a floating point format is supplied to an input port which expects data in a string format, the floating point value will be converted to a text string which represents the number. Input ports which have this capability are identified in TABLES 1-4 as having a data type of "emVariant". This does not mean that actual data can be formatted in the "emVariant" format. Instead, "emVariant" refers only to the capability of the input port to be bound to an output port that produces data conforming to other valid data types, such as "emFloat" or "emString".
With respect to image data, it should be understood that data for a given image may include two or more objects and/or layers. For example, an image may have two layers which are each an object. Similarly, if a mask is created for an image, the mask will be added to the image data in the form of a separate layer. Also, if text is superimposed onto an image, for example as discussed above in association with the action modules 31-32 in FIG. 1, the text will be added as an object, separate from other pre-existing objects of the image data. All the objects associated with a given image can be combined into a single object, through use of a "Flatten Image" definition which is set forth in TABLE 3.
In general, the definitions of source, branching, action and destination modules in TABLEs 1-4 are believed to be self-explanatory. However, there is one definition as to which a supplementary comment may be helpful. In this regard, the "Database Access" definition in TABLE 1 is a source module which obtains data in a manner that includes accessing a database. The database will include a table that has a plurality of rows called records, which each include a plurality of columns called fields. If the data being retrieved is string data, it may be retrieved directly from one of the fields in the table of the database. On the other hand, if the data being retrieved includes image data, the image data will typically be stored separately from the database, for example within files in a subdirectory, and one field in the table must contain a string with a complete path to the image data. | TABLE 1 | | | | SOURCE DEFINITIONS | | | | | | DATABASE ACCESS | | Uses a database table or query to identify data to process. Unless | | processing strings, one field in the table must contain a string with a | | complete path to the image data. May optionally select one or more | | additional fields that will be output separately (for binding by | | subsequent functions). The database table or query must already exist | | and be defined as an ODBC (Open DataBase Connectivity) connection | | prior to using this function. | | Variable Name | Port | Type | Description | | | | ImageOut | Output | emImage | Image data. | | Specified Field | Output | emString | Each selected field is converted to | | | | | string output, and retains field | | | | | name. | | | | FILE BROWSER | | Adds one file at a time to a list of images to process. The resulting list | | is saved, and is subsequently used during execution to automatically | | retrieve the specified images in sequence. | | Variable Name | Port | Type | Description | | | | ImageOut | Output | emImage | Image data. | | | | INTERNET FILES | | Collects all of the image files from a specified URL (Universal Resource | | Locator) address. Optionally, the function will continue to other pages to | | which the specified site is linked (from one to five levels, as specified | | by the Depth setting). By default, it only follows links within the same | | domain name, but this can optionally be disabled. | | Variable Name | Port | Type | Description | | | | ImageOut | Output | emImage | Image data. | | | | LOCAL FILES | | Indicates a folder or a virtual path to where images to be processed are | | stored. Can select whether or not subfolders (subdirectories) of the | | indicated folder will be accessed. | | Variable Name | Port | Type | Description | | | | ImageOut | Output | emImage | Image data. | | AltText | Output | emString | Alternate text of the image on that | | | | | page. | | | | TABLE 2 | | | | BRANCHING DEFINITIONS |
| | Variable Name | Port | Type | Description | | | | | ALWAYS JUMP | | Unconditionally forces execution from the current | | process to the start of a specified sub-process. | | | ImageIn | Input | emImage | Image data. | | | ImageOut | Output | emImage | Image data. | | COLOR TYPE | | Restricts the processing of images in the current | | process to only those color types specified. The | | default setting is that all color types are processed. | | For non-qualifying images, execution can optionally be | | diverted to a sub-process. | | | ImageIn | Input | emImage | Image data. | | | ImageOut1 | Output | emImage | Image data (current | | | | | | process). | | | ImageOut2 | Output | emImage | Image data (sub- | | | | | | process). | | FILE FORMAT | | Restricts processing of image files in the current | | process to only those file types specified. The | | default setting is that all image file types are | | processed. For non-qualifying images, execution can | | optionally be diverted to a sub-process. | | | ImageIn | Input | emImage | Image data. | | | ImageOut1 | Output | emImage | Image data (current | | | | | | process). | | | ImageOut2 | Output | emImage | Image data (sub- | | | | | | process). | | FILE SIZE | | Restricts the processing of images in the current | | process to only those files that fall within a | | specified file size range. An upper limit and/or a | | lower limit may be set. The default setting is that | | all file sizes are processed. For non-qualifying | | images, execution can optionally be diverted to a sub- | | process. | | | ImageIn | Input | emImage | Image data. | | | ImageOut1 | Output | emImage | Image data (current | | | | | | process). | | | ImageOut2 | Output | emImage | Image data (sub- | | | | | | process). | | INTERACTIVE | | Pauses execution and causes display of a dialog box | | which prompts a person for a decision on which branch | | to take, if any. Allows a default directive to be |
| defined (which may be to continue the current process, | | branch to a sub-process, or terminate all execution). | | As each image is processed, the list of available | | options is presented, with the default being applied if | | an "OK" option is selected. Selecting a "Don't show me | | this again" checkbox causes the currently selected | | option to be automatically applied to each subsequent | | image without interaction. For non-qualifying images, | | execution can optionally be diverted to a sub-process. | | | ImageIn | Input | emImage | Image data. | | | ImageOut1 | Output | emImage | Image data (current | | | | | | process). | | | ImageOut2 | Output | emImage | Image data (sub- | | | | | | process). | | STRING FILTER | | Restricts the processing of images in the current | | process to only those files that include or exclude (as | | specified) one or more specific string values. The | | condition is met if any of the specified strings match | | any part of string data in the image. Matching is not | | case sensitive. For non-qualifying images, execution | | can optionally be diverted to a sub-process. | | | ImageOut1 | Output | emImage | Image data (current | | | | | | process). | | | ImageOut2 | Output | emImage | Image data (sub- | | | | | | process). | | | Source | Input | emString | Source of the string | | | | | | input. | | WIDTH HEIGHT | | Restricts processing of images in the current process | | to only those images that fall with specified height | | and/or width parameters (as measured in pixels). The | | default setting is that there are no restrictions. To | | set a range having an upper and lower limit, use two | | successive Width Height functions. For non-qualifying | | images, execution can optionally be diverted to a sub- | | process. | | | ImageIn | Input | emImage | Image data. | | | ImageOut1 | Output | emImage | Image data (current | | | | | | process). | | | ImageOut2 | Output | emImage | Image data (sub- | | | | | | process). | | WILDCARD | | Specifies the images to include or exclude from | | processing in the current process, based on the file | | name. Standard wildcards may be used to define the | | condition, including a question mark (?) to represent | | any single character, and/or an asterisk (*) to | | represent one or more characters. For non-qualifying | | images, execution can optionally be diverted to sub- | | process. |
| | ImageIn | Input | emImage | Image data. | | | ImageOut1 | Output | emImage | Image data (current | | | | | | process). | | | ImageOut2 | Output | emImage | Image data (sub- | | | | | | process). | | | | | TABLE 3 | | | | ACTION DEFINITIONS | | | | | | AUTO SELECT | | Attempts to mask the background (or foreground) of an image. It looks at | | eight points (the four image corners, and the center of each side). If | | three or more points have substantially the same color, it is assumed to | | be the background color. The resulting mask corresponds to points | | throughout the image that match the background color, within a | | "Tolerance" setting. Small matching patches within the non-background | | portion may be ignored by enabling a "Remove Holes" option. | | Successful mask creation causes execution to continue in the current | | process. Otherwise, execution can optionally continue for the image in a | | sub-process. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut1 | Output | emImage | Image data (current process). | | ImageOut2 | Output | emImage | Image data (sub-process). | | | | BEVELER | | Produces a three-dimensional effect by adjusting the border of the image | | so that it appears to be beveled. In addition, it allows setting the | | apparent direction of a light source to produce a shadow effect in regard | | to the bevel. Parameters include: the percentage of the image to be | | beveled; the smoothness of the edge of the bevel; the intensity of the | | light effect overall; the intensity of the light effect along the bevel | | edge closest to the light source; and the apparent depth of the bevel. | | A sample image is displayed to show an example of the effect that the | | current parameters will have on an image. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | BLUE IMAGE | | Blurs a specified image or image object to a selected degree, using a | | selected one of a "General Blur" or "Gaussian Blur" technique. | | The "General Blur" may be configured to blur only hard edges, soft | | edges, or both. A "Lightness" setting can be enabled to smooth the | | image without affecting the colors. The "Gaussian Blur" has less | | versatility, but can have a much more pronounced blur effect. A sample | | image is displayed to show how the current setting would affect an image. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. |
| | | CALCULATED EXPAND | | Expands the shortest side of the image to match the longest side of the | | image. The resulting image will be square, with the original image | | centered in it. The added area will be filled with a specified color. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | CALCULATOR | | Image data passes through this function unchanged. This function | | performs one or more mathematical computations defined by specified | | equations, and outputs the results. Before being converted to a string, | | output is in the form of a floating point format unless a "Fix" or "Int" | | option is selected. "Fix" rounds a negative number up to the nearest | | whole number, while "Int" rounds a negative number down. Both treat | | positive numbers the same, by rounding down to the nearest whole | | number. Equations may be entered manually in an equation workspace, or | | by clicking calculator controls. Variables can be statically defined at | | design time, dynamically obtained at input ports, or both. Integers and | | numeric strings from input ports are automatically converted to floating | | point values. There are eight temporary variables which can store the | | value of an interim computation for use in a subsequent equation. It is | | possible to perform a conditional statement that effects branching, | | where execution for each image continues in either the current process or a | | sub-process, depending on the condition. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut1 | Output | emImage | Image data (current process). | | ImageOut2 | Output | emImage | Image data (sub-process). | | InVal1 (2, . . . 8) | Input | emFloat | Any integer, floating point or | | | | | numeric string value. | | OutVal1 (2, . . . 8) | Output | emString | Calculated value | | Temp1 (2, . . . 8) | — | emFloat | Used internally for temporary | | | | | storage. | | | | CROP | | Trims away undesired portions of an image. The "Specified Size" method | | indicates in pixels how much of the image should remain after processing. | | The "Specified Border" method indicates how much of one or more | | borders is to be trimmed away. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | CROP TO MASK | | Trims an image to a predefined mask, such as may exist for certain TIF | | images. There are no user defined parameters. | | Variable Name | Port | Type | Description | | |
| ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | DROP SHADOW | | Adds a shadow effect behind the last active object. The object may be the | | image, a mask, or an effect that was added, such as text from the Text | | Stamper function. The shadow size, offset from object, and color may be | | set, as well as the color of the page background. Also, control is permitted | | for the percentage of transparency, as well as the number of pixels in the | | feather. The feather length in pixels controls how abruptly the drop | | shadow transitions from the page backdrop color to the color of the drop | | shadow, thereby producing a smoothing effect. If Drop Shadow is applied | | to a mask object, the mask object is deleted and the added shadow | | becomes the active object. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | EXPAND | | Enlarges an image. The "Specified Border" method adds a specified | | number of pixels to one or more sides of an image. The "Specified Size" | | method specifies the total size of the image in pixels. The color of the | | added area is set to a specified color, the default being white. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | EXTERNAL ACTION | | Cooperates with a separate image processing application (such as the | | application commercially available under the tradename Photoshop from | | Adobe Systems Incorporated of San Jose, California). Opens the image in | | the application, performs a specified command in that application, and | | then returns the processed image from that application. Only commands | | that do not prompt the user for input may be used. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | FEATHER MASK | | Produces a transitional feathering effect between the mask and the image. | | Which way the feathering occurs depends on a "Direction" setting. | | Feathering directions may be "Inside", "Outside", or "Center", from the | | perspective of the mask. The "Edge" setting for the mask determines how | | abrupt a transition is made, and may be "Normal", "Hard", or "Soft". | | The "Amount" of feathering is measured by the length in pixels needed to | | make the transition. The larger the "Amount", the smoother the transition. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | FILE PATH INFO |
| Image data passes through this function unchanged. This function supplies | | several output ports with information derived from path information | | associated with the image. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | DriveOrMachine | Output | emString | The path information up to the | | | | | first single backslash. | | WholePath | Output | emString | Path information from after | | | | | the first single backslash to | | | | | before the last backslash. | | PathLevel1 (2 . . . ) | Output | emString | A respective path level name, | | | | | each of which is information | | | | | from between two single | | | | | backslashes. | | Filename | Output | emString | Filename without the | | | | | extension. | | Extension | Output | emString | File name extension. | | | | FILL | | Fills the active object with a selected color. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | FLATTEN IMAGE | | Combines multiple objects into one image. An image mask is one example | | of a separate object or layer. Separate objects or layers are also created by | | functions such as Text Stamper, Image Stamper, Drop Shadow, and Image | | Watermarking. Unless multiple objects are flattened together, certain | | subsequent functions affect only the last active object rather than all | | objects. For example, if no Flatten Image function is used, a Drop Shadow | | function applied after a Text Stamper function will apply the shadow only | | to the stamped text, and not to the image. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | FLIP | | Provides a mirror image of an image, either vertically and/or horizontally. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | |
IMAGE EDGES | | Places a frame around an image. The color and style of the frame can be | | specified. Some frames have a separate inset edge as well. Selecting a | | frame with an inset edge results in an automatic prompt for selection of a | | color for the inset edge. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | IMAGE INFO | | Image data passes through this function unchanged. This function outputs | | information regarding the image. If a subsequent function modifies the | | image, a new Image Info function must be executed in order to provide | | accurate information. This function has no user defined settings. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | ImageName | Output | emString | File name of image with the | | | | | extension. | | ImagePathAndName | Output | emString | Complete path and file name. | | ImageW | Output | emString | Width of image in pixels. | | ImageH | Output | emString | Height of image in pixels. | | ImageRes | Output | emString | Image resolution in dpi. | | | | IMAGE OBJECTS | | Image data passes through this function unchanged. This function outputs | | objects which are respective parts of the image data. This function has no | | user defined settings. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | Layer1 (2, 3 . . . ) | Output | emImage | Each image layer is supplied to | | | | | a respective output. | | Mask | Output | emImage | A mask object (if present). | | ImageName | Output | emString | File name of image with the | | | | | extension. | | | | IMAGE STAMPER | | Places the image being processed onto a selected background image. The | | image size, image position, merge mode, transparency, and feathering | | effect can be specified. A preview window shows where the image is | | placed on the background. If Image Stamper is applied to a mask object, | | the mask object is deleted and the added image object becomes the active | | object. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. |
| ImageOut | Output | emImage | Image data. | | | | IMAGE TINT | | Applies a tint effect to the image. The hue and saturation can be specified. | | A preview window shows the effect of the specified parameters on a | | sample image. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | IMAGE WATERMARKING | | Superimposes a selected image over the image being processed. By | | adjusting the transparency level, this can have the effect of stamping each | | image with a background watermark. If the preceding layer added to the | | image is a mask layer, than the added watermark is subject to the mask. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | INVERT | | Produces a color negative of an image. There are no user settings for this | | function. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | NUMERIC FORMAT | | Image data passes through this function unchanged. This function | | reformats a numeric string into one of several common formats (such as | | those provided in a program available under the tradename VisualBasic | | from Microsoft Corporation of Redmond, Washington). Available formats | | include "Currency", "Fixed", "Yes/No", and "True/False". | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | InValue | Input | emString | Numeric string to format. | | OutValue | Output | emString | The formatted string. | | | | OBJECT ATTRIBUTES | | Adjusts how the last added object blends with the image, such as objects | | added by the Image Stamper, Image Watermarking, and Text Stamper | | functions. The merge mode, transparency, and feather of the object can be | | specified (which overrides pre-existing values for these settings). | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. |
| | RESOLUTION | | Modifies the resolution of the image, in pixels per inch. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | ROTATE | | Rotates the image by the specified number of degrees (based upon a | | 360 degree circle) in a specified direction (clockwise or counter- | | clockwise). | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | SEND EMAIL | | Image data passes through this function unchanged. If a specified | | condition is met, a specified message is sent to a specified email address. | | The specified condition may be selected from one of several options. For | | example, the condition may be met when a specified number of images | | have been processed. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | SIZE | | Adjusts the width and/or height of the image in pixels. If "Proportional | | Sizing" is enabled, the width and height aspect ratio is maintained. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | TempString | Input | emString | Any available text string. | | | | STRING BUILDER | | Image data passes through this function unchanged. This function outputs | | one or more strings which are each a combination of strings that are either | | internally pre-defined or obtained from input ports. Combining occurs | | according to a selected one of several predefined definitions, or according | | to a custom (user-specified) definition. One of the internally defined | | strings can effect sequencing. Definitions for combining strings use the | | following syntax: Enclose variables and formulas in curly braces: | | "{MyVariable}". Any characters outside curly braces are placed in the | | resulting string as literals. Keywords are indicated by brackets, and must | | also be within a set of braces "{[Keyword]}". Available keywords | | include ImageName, ImageWidth, ImageHeight, and Seq. ImageName, | | ImageWidth, and ImageHeight work the same as their counterparts from | | Image Info, without any need for prior execution of the Image Info | | function. The Seq keyword defines a sequence that increments for each | | image processed. An example is Basename{[Seq.], X, Y, Z}, where X | | indicates the numeral/character to start from (e.g. "1" or "A"), Y indicates | | the increment step (e.g. "1"), and Z defines the number of characters in | | the sequence portion (e.g. "3"). |
| Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | StrIn1 (2, . . . ) | Input | emString | Any available text string. | | StrOut1 (2, . . . ) | Output | emString | A resulting output string from | | | | | the String Builder. | | | | TEXTSTAMPER | | Applies a text object onto an image. The text can be defined in the | | function itself, or obtained through an input port. TextStamper provides | | control over the font, size, color, rotation, transparency, and position of | | the text. Text Stamper adds only one line of text; to add multiple lines use | | successive Text Stamper functions. If the preceding layer added to the | | image is a mask layer, then the added text is subject to the mask. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | TextIn | Input | emString | Any available text string. | | | | THUMB MAKER | | Produces a thumbnail version of the image picture. The size can be | | selected to be one of three common pre-defined thumbnail sizes, or a | | custom defined size. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | UNSHARP MASK | | Sharpens an image, to an extent determined by three parameters: Radius, | | Strength, and Threshold. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | TABLE 4 | | | | DESTINATION DEFINITIONS | | | | | | DATABASE OUTPUT | | Uses a database table or query to identify where to deposit processed data. | | Unless depositing only strings, one field in the table must contain a string | | with a complete path to the destination for the image data. May optionally | | select one or more additional fields in which separate string input will be | | deposited. The database table or query must already exist and be defined | | as an ODBC (Open DataBase Connectivity) connection prior to using | | this function. | | Variable Name | Port | Type | Description |
| | | ImageIn | Input | emImage | Image data. | | Specified Field | Input | emString | Each selected field is filled with a | | | | | respective string from an input port | | | | | with the field name. | | | | DESTINATION FOLDER | | Specifies where an image is to be placed when it is saved as output. If the | | source of the image (see TABLE 1) included sub-folders, mirroring of the | | sub-folder structure may optionally be enabled. If a specified folder does | | not currently exist, it is created automatically. If a project uses virtual | | paths, the destination may be specified here as a virtual path. This function | | must precede the File Saver function in every project, unless the intent is | | simply to preview images without saving them. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | | | FILE NAMER | | Associates a file name with a processed image, where the file name is | | based on a string received through an input data port. Alternatively, the | | file name may be based on several strings received through multiple input | | ports, where these strings are concatenated with a specified separator | | character. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | Input1 (2, 3, etc.) | Input | emString | Any available emString output | | | | | ports. | | | | FILE SAVER | | Saves the current image, including selection of a file format in which the | | image is to be saved. This may be different from the original format of the | | image, allowing conversion of file types. If the selected file type has | | options, an "Options" button is enabled, and may be clicked so that the | | additional settings can be adjusted to other than default settings. If no | | Destination Folder function precedes this function, data is saved in the | | same directory as the source file, and overwrites the original file if no | | change was made to the file name. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | | | FTP SAVE | | Saves the current image through a network to a specified location, | | including selection of a file format in which the image is to be saved. This | | may be different from the original format of the image, allowing | | conversion of file types. If the selected file type has options, an "Options" | | button is enabled, and may be clicked so that the additional settings can be | | adjusted to other than default settings. The transfer through the network is | | made according to the File Transfer Protocol (FTP). | | Variable Name | Port | Type | Description | | |
ImageIn | Input | emImage | Image data. | | | | IMAGE SEQUENCER | | Uses a specified base name to give sequenced names to successive files | | processed, in a manner similar to the "Seq" option of the String Builder | | function. | | Variable Name | Port | Type | Description | | | | ImageIn | Input | emImage | Image data. | | ImageOut | Output | emImage | Image data. | | |
In FIG. 1, the modules within the project definition 14 are each shown as a rectangular box with a respective label of "source", "branch", "action", or "destination". Alternatively, however, within the scope of the present invention, these module types may each be visually represented by a respective icon. For example, FIGS. 2-5 show icons respectively representing a source module, a branch module, an action module, and a destination module. The particular icons shown in FIGS. 2-5 are exemplary icons used in the disclosed embodiments, and it will be recognized that a variety of other icons could alternatively be used.
FIG. 6 is a block diagram of a very simple project definition 71, which will be used to demonstrate the format in which project definitions are stored for purposes of the disclosed embodiments of the present invention. The project definition 71 includes one source module 72, and two action modules 73 and 74. The binding lines for image data are indicated at 77 and 78, and a binding line for string data is indicated at 79. In order to keep the example simple, the project definition 71 does not include any branching or destination modules. It can be considered to be a project definition which is in the process of being created, but is not yet complete.
In the project definition 71, the source module 72 is a Database Access module. This particular Database Access module obtains image data by effecting a predefined query to a table in a database, and by obtaining from respective fields in each record of the table a first string which defines the path to the actual location of a file containing a respective image, and a second string which represents a corresponding price. The Database Access module 72 then uses each first string to retrieve the corresponding image, which is output at 77, while outputting at 79 for each image the corresponding second string which represents a price. Thus, the module 72 successively outputs a number of images and associated prices.
The action module 73 is a Fill module, which adds color to an active object of the image, and then outputs at 78 the modified image data. The action module 74 is a Text Stamper module, which superimposes onto the image data received at 78 the text string received at 79. As noted above, this text string represents a price. The text will be added as a new and further object in the image data, which thereafter becomes the active object.
The project definition 71 of FIG. 6 can be represented visually in other ways. For example, FIG. 7 is a diagrammatic view showing the same project definition 71, but with a different visual appearance. In FIG. 7, there are three pipe sections 82-84 arranged end-to-end, so as to collectively give the appearance of a pipeline through which image data and/or other data can flow. The pipe section 82 represents the Database Access module, the pipe section 83 represents the Fill module, and the pipe section 84 represents the Text Stamper module. With respect to the binding lines 77-78 in FIG. 6, which represent image data, there are no corresponding binding lines in FIG. 7, because the end-to-end relationship of the pipe sections is representative of the flow of image data from module to module. With respect to the binding line 79 of FIG. 6, which represents text string data, it has been arbitrarily omitted in FIG. 7, in order to emphasize that this type of binding line can optionally be included or excluded from a view such as that shown in FIG. 7. Where the binding line is excluded, the text string data may be considered to be flowing through the pipeline with the image data. The modules 82-84 of FIG. 7 each have in the middle thereof an icon which is different from the icons shown in FIGS. 2, 4 and 6, in order to make the point that the invention permits the use of various different icons.
One feature of the present invention is that each project definition, such as those shown at 14 and 71 in FIGS. 1 and 6, is stored in a form which is expressed in a public communication protocol. The public communication protocol used in the disclosed embodiments is the extensible Markup Language (XML) protocol, which is well known in the industry. However, some other public communication protocol could alternatively be used. Referring to TABLE 5, the right column shows how the project definition 71 of FIG. 6 would be expressed in the XML protocol, according to the disclosed embodiments of the invention. For convenience, various levels of indentation have been provided in order to make the XML information more readable, but the indentation is not intended to suggest that the actual XML file includes characters to effect such indentation. The line numbers presented in the left column of TABLE 5 are not part of the XML expression of the project definition, but instead have been added to sequentially number the lines of the XML definition, in order to facilitate an explanation of the XML information, which is set forth below. For readability and convenience, some single lines of the XML file are shown as two or more lines in TABLE 5, and the line numbers added in the left column help show where this has occurred. Much of TABLE 5 is believed to be generally self-explanatory. Accordingly, the following discussion does not address every line in TABLE 5, but instead offers comments regarding only selected lines, as appropriate.
In this regard, line 1 shows that the project definition 71 has been arbitrarily given the name "Project Name". Line 2 refers to a group name, but the concept of groups has been included for a future purpose which is not relevant to an understanding of the present invention, and groups are therefore not discussed here.
Line 3 indicates that the process name has arbitrarily been set to be "First Process". In an XML definition of the type shown in FIG. 5, one process is defined first in its entirety, and then any other processes are each defined in their entirety, in a sequence. Within each process, the sub-processes are defined in sequence, with the main process being defined first in its entirety, after which the sub-processes (if any) are each being defined in their entirety, in sequence. In the simple project definition 71 shown in FIG. 6, of course, the project definition includes only one process, which in turn includes only one sub-process, namely the main process.
Line 4 of TABLE 5 identifies the beginning of a module list, which is a sequential listing of all modules in the main process portion of the process. As shown in FIG. 6, the main process of the project definition 71 has only the three modules 72-74. The Database Access module 72 is defined in lines 5-30 of TABLE 5, the Fill module 73 is defined in lines 31-43 of TABLE 5, and the Text Stamper module 74 is defined in lines 44-108 of TABLE 5. Line 109 identifies the end of the modules for the main process. Line 110 is a heading which identifies where other sub-processes would be defined, if this process included any sub-processes other than the main process. Line 111 identifies the end of the first process. Lines 112-115 are headers which identify where one or more other processes of the project definition would be defined, if the project definition included more than one process. Lines 116-117 of TABLE 5 identify the end of the project definition.
Turning in more detail to lines 5-30 of TABLE 5, which define the Database Access module 72, line 5 includes an "Id" of "com.image2web.databaseaccess" which, in the disclosed embodiments, is an internal code identifying a segment of object code that implements the functionality of the Database Access module. The next portion of line 5 refers to an "Instance", which in this example is set to the numeral "1". This indicates that this is the first occurrence of the Database Access type of module in the project definition 71. If the project definition 71 included two or more Database Access modules, they would be respectively identified by successive integer instance numbers, corresponding to the order in which they appear in the XML file.
Lines 13-14 in TABLE 5 identify the database which should be accessed in order to retrieve image data, which in this case is a database named "photography". As noted in the explanation in TABLE 1 of the Database Access definition, the connection for this database must already exist and be defined as an Open DataBase Connectivity (ODBC) connection. This permits the Database Access module to easily interact with pre-existing databases through the use of public communication protocols, without any need to make any change to the databases. In the specific example of TABLE 5, the word "photography" in line 14 provides a unique link to an existing ODBC connection, which in turn provides the link to and query for the specified database. Lines 10-12 of TABLE 5 define the particular table within the database which is to be accessed. In this particular example, the "photography" database has several tables which are each named after a respective photographer, and that each relate to photographs taken by that particular photographer. Each table has a name which corresponds to the name of the associated photographer, which in this example is "Robert Shutterbug". Lines 7-9 and lines 20-22 of TABLE 5 each define a respective field within the indicated table, the contents of which are to be obtained by and output from the Database Access module 72.
Lines 25-29 of TABLE 5 define the various output ports of the Database Access module 72. In particular, line 28 defines an output port for the image data, which is associated with the binding line 77 in FIG. 6. Line 28 in TABLE 5 defines an output port for a string which represents a price, and which is associated with binding line 79 in FIG. 6. Line 27 defines an output port for the filename of the image, but this output port is not used in FIG. 6.
Turning to the Fill module 73, line 38 in TABLE 5 defines an input port for image data, and includes a term "BoundTo", which effectively defines the binding line 77 of FIG. 6, by identifying the output port of the module 72 to which the input port of the module 73 is bound.
Turning to the Text Stamper module 74 of FIG. 6, its definition in TABLE 5 appears at lines 44-108. Within this definition, lines 46-99 define a number of parameters, which are collectively referred to herein as control information, and which may be specified by a user in order to define the particular operational characteristics which this particular instance of the Text Stamper module is to have. For example, to the extent that the Text Stamper module 74 is superimposing onto an image some text which represents a price, the parameters define characteristics of that text, such as its location, font, size, color, and so forth. Line 103 of TABLE 5 defines the input port of the text stamper module at which it receives the image data, and includes a "BoundTo" term which defines its association with an output port of the Fill module 73. In other words, the "BoundTo" term defines the binding line 78 of FIG. 6. Similarly, line 102 of TABLE 5 defines for the Text Stamper module 74 an input port for text, which in this case represents a price. Line 102 also includes a "BoundTo" term which defines the association of this input port with an output port of the data access module 72, or in other words the binding line 79. | TABLE 5 | | | | PROJECT DEFINITION IN XML | | | | | | 1 | <Project Name = "Project Name" Desc = " " | | | Version = "1.0"> | | 2 | <Group Name = "Project Name" Desc = " "> | | 3 | <Process Name = "First Process" Desc = " "> | | 5 | <Module Name = "Database—Access" | | | Id = "com.image2web.databaseaccess" | | | Instance = "1"> | | 6 | <Properties> | | 7 | <Property Name = "Output-ImageFilename" | | | DataType = "emVariant"> | | 8 | <Value>ImageFilename</Value> | | 9 | </Property> | | 10 | <Property Name = "Table" | | | DataType = "emVariant"> | | 11 | <Value>Robert Shutterbug</Value> | | 12 | </Property> | | 13 | <Property Name = "DSN" | | | DataType = "emVariant"> | | 14 | <Value>photography</Value> | | 15 | </Property> | | 16 | <Property Name = "Input-Field" | | | DataType = "emVariant"> | | 17 | <Desc>Image Path</Desc> | | 18 | <Value>ImageFilename</Value> | | 19 | </Property> | | 20 | <Property Name = "Output-Price" | | | DataType = "emVariant"> | | 21 | <Value>Price</Value> | | 23 | </Properties> | | 24 | <Inputs/> | | 25 | <Outputs> | | 26 | <Property Name = "Price" | | 27 | <Property Name = "ImageFilename" | | 28 | <Property Name = "ImageOut" | | 30 | </Module> | | 31 | <Module Name = "Fill" | | | Id = "com.image2web.fill" Instance = "1"> | | 32 | <Properties> | | 33 | <Property Name = "FillColor" | | | DataType = "emVariant"> | | 34 | <Value>1973978</Value> | | 36 | </Properties> | | 37 | <Inputs> | | 38 | <Property Name = "ImageIn" | | | DataType = "emImage" | | | BoundTo = "com.image2web.database | | | access.1.Output.ImageOut"/> | | 39 | </Inputs> | | 40 | <Outputs> | | 41 | <Property Name = "ImageOut" | | 43 | </Module> | | 44 | <Module Name = "Text—Stamper" | | | Id = "com.image2web.textstamper" | | | Instance = "1"> | | 45 | <Properties> | | 46 | <Property Name = "PageColor" | | | DataType = "emVariant"> | | 47 | <Value>16777215</Value> | | 48 | </Property> | | 49 | <Property Name = "LiteralXPosition" | | | DataType = "emVariant"> | | 50 | <Value>0</Value> | | 51 | </Property> | | 52 | <Property Name = "Bold" |
| | DataType = "emVariant"> | | 53 | <Value>0</Value> | | 54 | </Property> | | 55 | <Property Name = "Transparency" | | | DataType = "emVariant"> | | 56 | <Value>100</Value> | | 57 | </Property> | | 58 | <Property Name = "FontSize" | | | DataType = "emVariant"> | | 59 | <Value>24</Value> | | 60 | </Property> | | 61 | <Property Name = "Bound" | | | DataType = "emVariant"> | | 62 | <Value>-1</Value> | | 63 | </Property> | | 64 | <Property Name = "BorderText" | | | DataType = "emVariant"> | | 65 | <Value>0</Value> | | 66 | </Property> | | 67 | <Property Name = "MergeMode" | | | DataType = "emVariant"> | | 68 | <Value>Normal</Value> | | 69 | </Property> | | 70 | <Property Name = "Underline" | | | DataType = "emVariant"> | | 71 | <Value>0</Value> | | 72 | </Property> | | 73 | <Property Name = "BoundName" | | | DataType = "emVariant"> | | 74 | <Value>Price</Value> | | 75 | </Property> | | 76 | <Property Name = "ExpandToFit" | | | DataType = "emVariant"> | | 77 | <Value>-1</Value> | | 78 | </Property> | | 79 | <Property Name = "Color" | | | DataType = "emVariant"> | | 80 | <Value>0</Value> | | 81 | </Property> | | 82 | <Property Name = "TextPosition" | | | DataType = "emVariant"> | | 83 | <Value>CenterCenter</Value> | | 84 |
</Property> | | 85 | <Property Name = "LiteralYPosition" | | | DataType = "emVariant"> | | 86 | <Value>0</Value> | | 87 | </Property> | | 88 | <Property Name = "Angle" | | | DataType = "emVariant"> | | 89 | <Value>0</Value> | | 90 | </Property> | | 91 | <Property Name = "Font" | | | DataType = "emVariant"> | | 92 | <Value>Arial</Value> | | 93 | </Property> | | 94 | <Property Name = "UseLiteralPosition" | | | DataType = "emVariant"> | | 95 | <Value>0</Value> | | 96 | </Property> | | 97 | <Property Name = "Italic" | | | DataType = "emVariant"> | | 98 | <Value>0</Value> | | 100 | </Properties> | | 101 | <Inputs> | | 102 | <Property Name = "TextLine" | | | DataType = "emVariant" | | | BoundTo = "com.image2web.database | | | access.1.Output.ImageFilename"/> | | 103 | <Property Name = "ImageIn" | | | DataType = "emImage" | | | BoundTo = "com.image2web.fill.1. | | | Output.ImageOut"/> | | 104 | </Inputs> | | 105 | <Outputs/> | | 106 | <Property Name = "ImageOut" | | 109 | </ModuleList> | | 110 | <SubProcessList/> | | 111 | </Process> | | 112 | <Process Name = "Second Process" Desc = " "> |
113 | <ModuleList/> | | 114 | <SubProcessList/> |
The project definitions discussed above in association with FIGS. 1 and 6-7 are relatively simple. FIG. 8 is a diagrammatic view of a further project definition 101, which is more sophisticated. It includes a single process which is shown in its entirety in FIG. 8, and which includes three sub-processes 102-104, namely a main process 102, and two further sub-processes 103 and 104. It also includes a feature which has not previously been discussed, which is a global portion 107 having a plurality of global ports 111-114.
The ports 111-114 of the global portion 107 can be accessed by modules within the main process 102 or by modules within either of the sub-processes 103-104. The ports 111-114 can each act |