US20050219579A1 - Application programming interface for measuring devices - Google Patents
Application programming interface for measuring devices Download PDFInfo
- Publication number
- US20050219579A1 US20050219579A1 US11/055,204 US5520405A US2005219579A1 US 20050219579 A1 US20050219579 A1 US 20050219579A1 US 5520405 A US5520405 A US 5520405A US 2005219579 A1 US2005219579 A1 US 2005219579A1
- Authority
- US
- United States
- Prior art keywords
- color
- function
- measuring device
- api
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03G—ELECTROGRAPHY; ELECTROPHOTOGRAPHY; MAGNETOGRAPHY
- G03G15/00—Apparatus for electrographic processes using a charge pattern
- G03G15/50—Machine control of apparatus for electrographic processes using a charge pattern, e.g. regulating differents parts of the machine, multimode copiers, microprocessor control
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03G—ELECTROGRAPHY; ELECTROPHOTOGRAPHY; MAGNETOGRAPHY
- G03G15/00—Apparatus for electrographic processes using a charge pattern
- G03G15/50—Machine control of apparatus for electrographic processes using a charge pattern, e.g. regulating differents parts of the machine, multimode copiers, microprocessor control
- G03G15/5075—Remote control machines, e.g. by a host
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03G—ELECTROGRAPHY; ELECTROPHOTOGRAPHY; MAGNETOGRAPHY
- G03G2215/00—Apparatus for electrophotographic processes
- G03G2215/00025—Machine control, e.g. regulating different parts of the machine
- G03G2215/00029—Image density detection
- G03G2215/00033—Image density detection on recording member
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03G—ELECTROGRAPHY; ELECTROPHOTOGRAPHY; MAGNETOGRAPHY
- G03G2215/00—Apparatus for electrophotographic processes
- G03G2215/00025—Machine control, e.g. regulating different parts of the machine
- G03G2215/00029—Image density detection
- G03G2215/00063—Colour
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03G—ELECTROGRAPHY; ELECTROPHOTOGRAPHY; MAGNETOGRAPHY
- G03G2215/00—Apparatus for electrophotographic processes
- G03G2215/00025—Machine control, e.g. regulating different parts of the machine
- G03G2215/00029—Image density detection
- G03G2215/00067—Image density detection on recording medium
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03G—ELECTROGRAPHY; ELECTROPHOTOGRAPHY; MAGNETOGRAPHY
- G03G2215/00—Apparatus for electrophotographic processes
- G03G2215/00025—Machine control, e.g. regulating different parts of the machine
- G03G2215/00109—Remote control of apparatus, e.g. by a host
Definitions
- the present invention concerns an application programming interface (API) usable by a software developer when writing an application program, such as a color calibration program, that uses a color measuring device.
- API application programming interface
- the present invention relates to an API that provides a common interface between such an application program and plural different types of color measuring devices.
- color measuring devices One common use of color measuring devices is to calibrate color fidelity of color recording devices.
- the recording device such as a color laser beam printer or ink jet printer
- the recording device records color patches on a recording medium.
- the color values of the patches are measured by the color measuring device, the measured values are compared against expected (or ideal) values, and the comparisons are used to calibrate the recording device.
- Color measuring devices come in many different physical structures, such as XY tables, strip readers, hand-held patch readers, and flatbed scanners, and operate in different ways using different numbers and types of sensors.
- Color patches are input in different ways to color measuring devices which have different physical structures. For example, patches are input to an XY table on a sheet that has an array of patches printed thereon, whereas patches are input to a strip reader on strips that each have one or more rows of patches printed thereon.
- the sensors that actually perform color measurements are positioned on patches in different ways depending on the physical structures of the color measuring devices.
- the color measuring devices themselves must be calibrated properly. For example, for some color measuring devices to position their sensor(s) accurately, the positioning mechanism in the color measuring devices must be calibrated. In addition, the sensors in some color measuring devices must be calibrated so as to ensure proper color measurements. Depending on the numbers and types of sensors as well as the physical structures of the color measuring devices, calibration of the position of the sensors and calibration of the sensors differ among different types of color measuring devices.
- application programs that use color measuring devices should provide interfaces to the user. These interfaces should include instructions to the user at various points throughout operations performed using the color measuring devices. The timing and content of these instructions also differ among different color measuring devices.
- API application programming interface
- the present invention addresses the foregoing need by providing an application programming interface that abstracts the operations needed to perform color measurements.
- An application program only needs to include calls to the functions in this API in order to use any supported type of color measuring device.
- the API in turn calls the necessary commands for performing color measurement operations.
- the API In order to allow the application program to provide appropriate instructions during operations performed with a color measuring device, certain functions in the API are called numerous times in order to complete their respective operations. In order to enable the application program to call such a function a correct number of times, the API provides the application program with flow control data of the number of times that the function needs to be called so as to complete its operation with a particular color measuring device. The API also preferably provides the application program with display values for display so as to instruct the user in manipulating the color measuring device.
- the application program does not need to include separate routines for each different type of supported color measuring device. Instead, the application program need only include calls to the functions in the API and include mechanisms for handling display values and flow control data provided by the API. Moreover, if the API is implemented in a dynamically linkable library (DLL), an existing application program that calls the functions in the API can use new types of color measuring devices by linking to an updated version of the DLL.
- DLL dynamically linkable library
- the invention is an API that provides a common interface between an application program and plural different types of color measuring devices each having at least one color measuring sensor.
- the API includes plural functions for operating any of the plural different types of color measuring devices.
- the function that performs the operation must be called a number of times which is different for at least two different types of color measuring devices.
- the API provides the application program with flow control data of the number of times that the function must be called.
- This flow control data preferably can be provided by the function, in the form of a call-again value or as a numerical value, or by a separate function in the API such as a get-device-capabilities function. In some embodiments of the invention, a combination of these methods of providing the flow control data is utilized.
- the functions in the API also provide the application program with display values which are different for at least two different types of color measuring devices.
- the display values are for display to a user, preferably by the application program, so as to instruct the user in manipulating the color measuring device that is being operated.
- the invention is an API that provides a common interface between an application program and plural different types of color measuring devices each having at least one color measuring sensor.
- the API includes plural functions for operating any of the plural different types of color measuring devices.
- the plural functions include a calibrate-position function, a calibrate-sensor function, a move-to-patch function, and a make-measurement function.
- the calibrate-position function calibrates a relative position of a recording medium with respect to any of the plural different types of color measuring devices.
- the calibrate-position function provides the application program with at least one display value that is to be displayed so as to instruct a user to position the recording medium or to position any of the color measuring sensors.
- the calibrate-sensor function calibrates any of the color measuring sensors of any of the plural different types of color measuring devices.
- the calibrate-sensor function provides the application program with at least one display value that is to be displayed so as to instruct the user in calibrating the sensor.
- the move-to-patch function relatively positions any of the color measuring sensors and a color patch for any of the plural different types of color measuring devices.
- the move-to-patch function is provided with a logical color patch number by the application program.
- the move-to-patch function preferably can provide the application program with a display value which instructs the user to manipulate the color measuring devices or to move the recording medium.
- the move-to-patch function preferably causes the color measuring device to move the recording medium or to move the color measuring sensors.
- the move-to-patch function preferably provides the application program with a recalibrate value in a case that the relative position of the recording medium needs to be recalibrated, for example when a new recording medium is loaded into the color measuring device.
- the make-measurement function makes a color measurement of the patch at which any of the color measuring sensors is relatively positioned, and the make-measurement function provides the application program with a color measurement value for the color patch.
- the make-measurement function preferably provides the application program with at least one display value that is to be displayed so as to instruct the user in making the color measurement.
- the make-measurement function preferably provides the application program with a recalibrate value in a case that any of the color measuring sensors needs to be recalibrated.
- the function that performs the operation must be called a number of times which is different for at least two different types of color measuring devices.
- the API provides the application program with flow control data of the number of times that the function must be called.
- the flow control data preferably can be provided by the function, either in the form of a call-again value or a numerical value, or by a get-device-capabilities function included in the API.
- the computer-executable process steps for the functions in the API preferably are stored in a dynamically linkable library (DLL).
- DLL dynamically linkable library
- the API according to the invention relieves application programs from the burden of having to include separate routines for taking color measurements with each different type of supported color measuring device. Instead, in order to take color measurements with any type of supported color measuring device, the application program need only include calls to functions in the API.
- the API itself handles the different interfaces to the different types of color measuring devices. As a result, the application program is far simpler to write.
- FIG. 1 is a representational view of a computer system in which color fidelity of a color printer is calibrated using a color measuring device.
- FIG. 2 is a detailed block diagram showing the internal architecture of the computer system shown in FIG. 1 .
- FIG. 3 is a block diagram for explaining a system for calibration of color fidelity of a color printer by a color calibration program according to the invention.
- FIG. 4 is a block diagram for explaining a structure of a measuring device application programming interface (API) according to the invention.
- API application programming interface
- FIG. 5 is a representational view of a development system for development of an application program using a measuring device API according to the invention.
- FIG. 6 is a detailed block diagram showing the internal architecture of the development system shown in FIG. 5 .
- FIGS. 7A to 7 C are flowcharts for explaining color calibration by a color calibration program using a measuring device API according to the invention.
- FIG. 8 is a block diagram for explaining a variation of the structure of the measuring device API according to the invention.
- FIG. 9 is a block diagram for explaining another variation of the structure of the measuring device API according to the invention.
- FIG. 1 is a representational view of a computer system in which color fidelity of a color printer is calibrated using a color measuring device. Shown in FIG. 1 are color printer 1 and computer system 6 , together with a variety of color measuring devices, such as XY table 2 , strip reader 3 , hand-held patch reader 4 , and scanner 5 .
- color measuring devices such as XY table 2 , strip reader 3 , hand-held patch reader 4 , and scanner 5 .
- Color printer 1 is depicted in FIG. 1 as an ink jet printer. However, any printer capable of printing color images on recording media can be utilized by a color calibration program written according to the invention, such as ink jet printers and laser printers. Color printer 1 prints color images in response to print jobs received from computer system 6 over printer interface 8 .
- Measuring device 10 is a color measuring device that is used to generate color measurements of color patches input thereto. The color measurements generated by color measuring device 10 are transmitted over measuring device interface 9 to computer system 6 . Examples of measuring device 10 include XY table 2 , strip reader 3 , and hand-held patch reader 4 for reading individual color patches.
- Color patches are input to each of the different types of color measuring devices in different ways.
- patches are input to XY table 2 on a sheet that has an array of patches printed thereon, whereas patches are input to strip reader 3 on strips that each have one or more rows of patches printed thereon.
- the sensors that actually perform color measurements are positioned on patches in different ways depending on the physical structures of the color measuring devices.
- XY table 2 typically includes motors and gimbals for automatically positioning the sensors, while hand-held patch reader 4 typically must be manually positioned over a patch.
- Flatbed scanner 5 can also serve as a color measuring device, provided that scanner 5 is properly calibrated. Color patches are input to flatbed scanner 5 in a similar manner as the patches are input to XY table 2 , namely on a sheet that has an array of patches printed thereon.
- color measuring device 10 can be a spectrometer (i.e., a spectrophotometer or a spectroradiometer), which uses sensors that preferably measure light intensity for frequencies across the entire visible spectrum.
- color measuring device 10 can be a colorimeter or densitometer, which uses sensors that measure light intensity for XYZ or RGB components of the spectrum.
- each of the color measuring devices have at least one color sensor for making color measurements.
- the sensor(s) should be calibrated.
- a relative position of a recording medium with respect to the device might have to be calibrated.
- the position of the recording medium should be recalibrated so that the color measuring device can properly locate color patches printed thereon.
- computer system 6 is connected to printer 1 through printer interface 8 and measuring device 10 through measuring device interface 9 .
- display 12 which may be a color monitor
- keyboard 14 for entering user commands
- pointing device 15 such as a mouse for pointing to and for manipulating graphical user interfaces and other objects displayed on display 12 .
- Computer system 6 also includes a mass storage device such as fixed disk 16 .
- This mass storage device is for storing computer-executable process steps for a color calibration program and a measuring device DLL according to the invention, as well other application programs and an operating system including a printer driver and a measuring device driver.
- Such storage may also be provided by a CD-ROM (not shown).
- FIG. 1 a programmable general-purpose computer is shown in FIG. 1 , a dedicated computer terminal or other type of data processing equipment can utilize the present invention.
- FIG. 2 is a detailed block diagram showing the internal architecture of computer system 6 .
- computer system 6 includes central processing unit 23 which interfaces with computer bus 24 .
- Also interfacing with computer bus 24 are fixed disk 16 , main memory (RAM) 26 , read only memory (ROM) 27 , floppy disk interface 29 , display interface 30 to display 12 (not shown), keyboard interface 32 to keyboard 14 (not shown), pointing device interface 33 to pointing device 15 (not shown), printer interface 8 to color printer 1 , and measuring device interface 9 to measuring device 10 .
- RAM main memory
- ROM read only memory
- floppy disk interface 29 display interface 30 to display 12 (not shown)
- keyboard interface 32 to keyboard 14
- pointing device interface 33 to pointing device 15
- printer interface 8 to color printer 1
- measuring device interface 9 to measuring device 10 .
- Main memory 26 interfaces with computer bus 24 so as to provide RAM storage to CPU 23 during execution of software applications. More specifically, CPU 23 loads process steps from fixed disk 16 , another storage device, or some other source such as a network (not shown), into main memory 26 . CPU 23 then executes the stored process steps from main memory 26 in order to execute application programs. Data such as print data and color measurement data can be stored in main memory 26 , where the data can be accessed by CPU 23 during execution of the process steps.
- fixed disk 16 typically contains operating system 36 , application programs 37 , measuring device DLL 38 according to the invention, and other files and data.
- Operating system 36 includes printer driver 40 and measuring device driver 41 .
- Measuring device driver 41 is one of plural different types of measuring device drivers corresponding to the type of measuring device 10 connected to computer system 6 . Examples of measuring device driver 41 include XY table driver 43 for XY table 2 , strip reader driver 44 for strip reader 3 , patch reader driver 45 for hand-held patch reader 4 , and scanner driver 46 for scanner 5 . Some or all of these drivers can be stored on fixed disk 16 .
- Application programs 37 include color calibration program 48 .
- the structure and operation of color calibration program 48 is explained in more detail below with reference to FIG. 3 .
- Measuring device DLL 38 is a library of functions that are called by an application program so as to use any of plural different color measuring devices supported by the DLL.
- a software developer uses a measuring device API according to the invention, as explained below with reference to FIGS. 5 and 6 .
- FIG. 3 is a block diagram for explaining a system for calibration of color fidelity of a color printer by a color calibration program according to the invention.
- color calibration program 48 runs on computer system 6 and sends print data 51 for printing color patches to printer driver 40 .
- the color patches are for use in calibration of color printer 1 .
- Color calibration program 48 makes API calls 52 to functions provided by measuring device DLL 38 in order to make color measurements of the color patches.
- the DLL encapsulates the functionality needed to operate many different color measuring device, it is possible for the color calibration program 48 to call exactly the same functions, in exactly the same order, no matter which of plural different types of color measuring devices are connected.
- the API often needs to have certain functions repeated, or operator interaction performed, in order for the different devices to be usable by a single application. Accordingly, in response to API calls 52 , the functions in the DLL provide color calibration program 48 with information that the application needs to ensure that the API functions are called correctly.
- Such information might include, for example, display values for display by the application to the user so as to prompt the user for some user intervention (such as to prompt the user to insert a next sheet of patches into the measuring device), and the information might further include flow control data that instruct the application to alter its control flow such as by calling particular DLL functions multiple times until a needed result (such as position calibration) is achieved.
- Display values and flow control data 53 provided to color calibration program 48 are explained in more detail below with reference to FIGS. 4, 8 and 9 .
- Color calibration program 48 also is provided with color measurements 54 by the DLL. Based on color measurements 54 , color calibration program 48 sends color adjustment commands 55 to printer driver 40 so as to adjust color fidelity of color printer 1 .
- the operation of color calibration program 48 in printing and measuring the color patches and adjusting the color printer is explained in more detail below with reference to FIGS. 7A to 7 C.
- printer driver 40 In response to print data 51 received from color calibration program 48 , printer driver 40 sends print job 57 to color printer 1 . Likewise, in response to color adjustment commands 55 received from color calibration program 48 , printer driver 40 sends printer commands 58 to color printer 1 .
- Color printer 1 prints printed color patches 61 in response to print job 57 received from printer driver 40 .
- the user inputs these color patches to color measuring device 10 .
- Measuring device DLL 38 provides a common interface between color calibration program 48 and plural different types of color measuring devices. As mentioned above, functions in measuring device DLL 38 are called by API calls 52 from color calibration program 48 . The functions in measuring device DLL 38 make device driver calls 62 based on API calls 52 in order to operate measuring device 10 . Device driver calls 62 are calls to a device driver corresponding to the type of color measuring device 10 . For example, if measuring device 10 is an XY table, device driver calls 62 are calls to an XY table driver. In response to device driver calls 62 , measuring device DLL 38 is provided with color measurements 64 by measuring device driver 41 . Measuring device DLL 38 in turn provides color calibration program 48 with display values and flow control data 53 and color measurements 54 .
- the flow control data preferably is based at least in part on device characteristics 65 received from measuring device driver 41 .
- the structures of the functions in measuring device DLL 38 according to the invention are explained in more detail below with reference to FIGS. 4, 8 and 9 , and the operation of the function is explained with reference to FIGS. 7A to 7 C.
- Measuring device driver 41 is a device driver corresponding to the type of measuring device 10 .
- Measuring device driver 41 receives device driver calls 62 from the functions in measuring device DLL 38 .
- measuring device driver 41 sends device commands 66 to measuring device 10 , which provides color measurements 67 to measuring device driver 41 .
- Color measurements 67 in turn are provided to measuring device DLL 38 as color measurements 64 .
- measuring device 10 receives printed color patches 61 as input. Measuring device 10 makes color measurements 67 of printed color patches 61 in accordance with device commands 66 received from measuring device driver 41 . Measurement device 10 provides color measurements 67 to measuring device driver 41 .
- FIG. 4 is a block diagram for explaining functionality provided in the DLL and accessed from the application through the API.
- the measuring device DLL illustrated in FIG. 4 is accessed through a measuring device API according to the invention.
- the API provides a common interface between an application program and plural different types of color measuring devices each having at least one color measuring sensor.
- the interface includes plural functions for operating any of the plural different types of color measuring devices.
- the function that performs the operation must be called a number of times which is different for different types of color measuring devices.
- the API provides the application program with flow control data of the number of times that the function must be called. In FIG. 4 , this flow control data is provided for some of the functions by a separate get-device capabilities function.
- This flow control data is provided for other functions by the functions themselves, in the form of “call-again” values provided by the functions to the color calibration program.
- the functions in the API also preferably provide the application program with display values which are different for different types of color measuring devices. The values are displayed by the color calibration program to a user so as to instruct the user in manipulating the color measuring device that is being operated.
- FIG. 4 shows measuring device DLL 38 which is accessed by an application program through a measuring device API according to the invention.
- the API provides an interface for a software developer to write an application program that calls the functions in the DLL illustrated in FIG. 4 .
- the functions provide an interface between color calibration program 48 and measuring device driver 41 .
- Measuring device driver 41 in turn communicates with measuring device 10 through measuring device interface 9 .
- Measuring device driver 41 is a device driver corresponding to the type of measuring device 10 .
- measuring device driver 41 is one of plural different device drivers such as XY table driver 43 , strip reader driver 44 , patch reader driver 45 , and scanner driver 46 .
- brackets next to measuring device 10 in FIG. 4 indicate that measuring device 10 is one of XY table 2 , strip reader 3 , hand-held patch reader 4 for reading individual color patches, and scanner 5 .
- measuring device DLL 38 includes at least the following functions, which are provided to an application program through a measuring device API according to the invention: get-device-capabilities 71 , calibrate-position 72 , calibrate-sensor 73 , move-to-patch 74 , and make measurement 75 .
- Arrows pointing into blocks for these functions indicate information provided to the functions by color calibration program 48 .
- arrows pointing out of blocks for these functions indicate information provided by the functions to color calibration program. 48 .
- Information can be provided in various different ways to the functions by color calibration program 48 and by the functions to color calibration program 48 .
- information can be provided to a function as a passed variable, by modification of a shared (e.g., global) variable or data space, by passing a pointer to a memory location that stores the information, or through messages in a message-based environment.
- information can be provided by a function as a returned value, by modification of a shared variable or data space, by modification of a memory location pointed to by a pointer, or through messages. Any or all of these methods, as well as any other additional methods, can be utilized by measuring device DLL 38 according to the invention.
- Get-device-capabilities function 71 provides color calibration program 48 with flow control data for calibrate-position function 72 and calibrate-sensor function 73 .
- get-device-capabilities function 71 provides color calibration program 48 with number of calls 77 , thereby indicating the number of calls that must be made to calibrate-position function 72 in order to calibrate a position of a recording medium with respect to measuring device 10 .
- get-device-capabilities function 71 provides color calibration program 48 with number of calls 78 , thereby indicating the number of calls that must be made to calibrate-sensor function 73 in order to calibrate the sensor(s) of measuring device 10 .
- the DLL preferably determines the flow control data by querying measuring device driver 41 , or measuring device 10 , for device characteristics 65 .
- the functions in measuring device DLL determine the flow control data based at least in part on device characteristics 65 . For example, if the device characteristics identify the type of measuring device 10 , the functions can determine the flow control data using a look-up table. Alternatively, device characteristics 65 can include the flow control data directly, for later use by the different functions in the DLL.
- Get-device-capabilities function 71 preferably queries the device driver or the device for the device characteristics.
- Calibrate-position function 72 is called to calibrate a relative position of a recording medium with respect to any of the plural different types of color measuring devices. In order to calibrate the relative position of the recording medium, calibrate-position function 72 might have to be called more than once. The number of calls depends at least in part on the type of measuring device 10 . As discussed above, get-device-capabilities function 71 according to the invention provides color calibration program 48 with number of calls 77 that must be made to calibrate-position function 72 in order to complete the position calibration operation. Number of calls 77 preferably is based at least in part on device characteristics 65 .
- Calibrate-position function 72 preferably provides display values 80 to color calibration program 48 , and program 48 displays display values 80 to a user so as to instruct the user to perform these tasks, as necessary.
- Display values 80 can include text and/or graphics, or any other type of values displayable by computer system 6 . Because the application program actually displays the display values, the application program can determine the form of the display. For example, the application program can display text or graphics based on the display values. The display values do not necessarily need to be displayed visually. For example, if the application program includes text-to-speech functionality, the program can generate speech based on the display values.
- Calibrate-sensor function 73 is called to calibrate the sensor(s) of any of the plural different types of color measuring devices. In order to calibrate the sensor(s), calibrate-sensor function 73 might have to be called more than once.
- get-device-capabilities function 71 provides color calibration program 48 with number of calls 78 that must be made to calibrate-sensor function 73 so as to complete the sensor calibration operation. Number of calls 78 preferably is based at least in part on device characteristics 65 .
- Calibrate-sensor function 73 preferably provides display values 82 to color calibration program 48 for display by the program to a user so as to instruct the user to perform any such tasks.
- Move-to-patch function 74 is called to relatively position the sensor(s) and a color patch for any of the plural different types of color measuring devices. Move-to-patch function 74 is provided with logical color patch number 84 by color calibration program 48 . In response, move-to-patch function 74 moves the sensor(s) or the recording medium so as to position the sensor(s) at the corresponding color patch, provides color calibration program 48 with display values 85 so as to instruct the user to move the sensor(s) or the recording medium, or both.
- move-to-patch function 74 might have to be called multiple times, depending on the type of measuring device 10 . For example, if the color patch corresponding to color patch number 84 is on a next sheet or strip of recording medium, move-to-patch function 74 might have to be called a first time so as to instruct a user to change the sheet or strip, a second time so as to recalibrate the position of the recording medium (by providing a recalibrate value), and then a third time so as to move to the first patch on the recording medium.
- the number of times that move-to-patch function 74 needs to be called preferably is determined by the function based at least in part on device characteristics 65 .
- move-to-patch function 74 If move-to-patch function 74 needs to be called multiple times, move-to-patch function 74 provides color calibration program 48 with flow control data indicating whether the function has been called the necessary number of times. As shown in FIG. 4 , this flow control data takes the form of call-again value 86 , which is provided if move-to-patch function 74 has not been called the necessary number of times.
- Move-to-patch function 74 provides color calibration program 48 with recalibrate value 87 in such situations.
- Make-measurement function 75 is called to make a color measurement of the patch at which the sensor(s) are relatively positioned.
- Make-measurement function 75 provides color calibration program 48 with color measurement 54 for the color patch.
- make-measurement function 75 preferably provides color calibration program 48 with display values 89 for display by the program to instruct the user to perform any necessary tasks for making the color measurement.
- make-measurement function 75 might have to be called multiple times in order to complete its operation.
- the number of times that make-measurement function 75 needs to be called preferably is determined by the function based at least in part on device characteristics 65 . If make-measurement function 75 needs to be called multiple times, make-measurement function 75 provides color calibration program 48 with flow control data indicating whether the function has been called the necessary number of times. As shown in FIG. 4 , this flow control data takes the form of call-again value 90 , which is provided if make-measurement function 75 has not been called the necessary number of times.
- make-measurement function 75 provides color calibration program 48 with recalibrate value 91 .
- FIG. 5 is a representational view of a development system for development of an application program using a measuring device API according to the invention.
- development system 100 is provided with display 102 which may be a color monitor, keyboard 104 for entering user commands and for entering code for an application program, and pointing device 105 such as a mouse.
- Development system 100 also includes a mass storage device such as fixed disk 106 .
- This mass storage device is for storing computer-executable process steps for an operating system, software development programs, and a measuring device API according to the invention.
- Such storage may also be provided by a CD-ROM (not shown).
- development system 100 is shown as a programmable general-purpose computer in FIG. 5 , a dedicated computer terminal or other type of data processing equipment can be used to write application programs utilizing the API according to the present invention.
- FIG. 6 is a detailed block diagram showing the internal architecture of development system 100 .
- development system 100 includes central processing unit 113 which interfaces with computer bus 114 .
- fixed disk 106 main memory (RAM) 116 , read only memory (ROM) 117 , floppy disk interface 119 , display interface 120 to display 102 (not shown), keyboard interface 122 to keyboard 104 (not shown), and pointing device interface 123 to pointing device 105 (not shown).
- RAM main memory
- ROM read only memory
- floppy disk interface 119 display interface 120 to display 102 (not shown)
- keyboard interface 122 to keyboard 104
- pointing device interface 123 to pointing device 105
- Main memory 116 interfaces with computer bus 114 so as to provide RAM storage to CPU 113 during execution of software applications. More specifically, CPU 113 loads process steps from fixed disk 106 , another storage device, or some other source such as a network (not shown), into main memory 116 . CPU 113 then executes the stored process steps from main memory 116 in order to execute application programs. Data such as code for an application program utilizing a measuring device API according to the invention can be stored in main memory 116 , where the data can be accessed by CPU 113 during execution of the process steps.
- fixed disk 106 typically contains operating system 126 , application programs 127 , and measuring device API 128 according to the invention.
- Operating system 126 typically is a windowing operating system and preferably is compatible with operating system 36 of computer system 6 .
- Application programs 127 preferably includes software development programs 130 for developing application programs for making color measurements with color measuring devices.
- a software developer uses software development programs 130 to write code for an application program such as color calibration program 48 .
- the software developer includes calls to functions provided by measuring device API 128 in order to have the application program make color measurements with any color measuring device supported by the API.
- the API preferably includes headers corresponding to the functions in measuring device DLL 38 .
- these headers allow the application program to access the functions in measuring device DLL 38 .
- These functions provide a common interface to any of the plural supported color measuring devices. Therefore, as long as the application program includes code for handling flow control data and display values returned by the functions in the DLL, as described above with reference to FIGS. 3 and 4 , the application program is able to make color measurements with any of the plural supported color measuring devices.
- FIGS. 7A to 7 C are flowcharts for explaining a representative color calibration application using a measuring device API according to the invention.
- step S 701 in FIG. 7A color calibration program 48 generates print data 51 for color patches for calibration of color fidelity of color printer 1 .
- step S 702 color calibration program 48 sends print data 51 to printer driver 40 , which in turn sends print job 57 to color printer 1 based on print data 51 .
- Color printer 1 prints the print job onto a recording medium, resulting in printed color patches 61 .
- step S 703 color calibration program 48 makes API call 52 to get-device-capabilities function 71 in measuring device DLL 38 .
- get-device-capabilities function 71 provides flow control data to calibration program 48 .
- This flow control data preferably includes number of calls 77 and number of calls 78 , which indicate the number of times calibrate-position function 71 and calibrate-sensor function 72 need to be called in order to perform their respective operations.
- step S 704 the relative position of the sensor(s) with respect to the recording medium is calibrated.
- FIG. 7B is a flowchart for explaining position calibration according to the invention.
- color calibration program 48 calls calibrate-position function 72 .
- This function sends device driver calls 62 to measuring device driver 41 , which in turn sends device commands 66 to measuring device 10 so as to calibrate the relative position of the sensor(s).
- step S 706 color calibration program 48 determines if calibrate-position function 72 provided display values 80 . If calibrate-position function 72 did provide display values 80 , color calibration program 48 displays the display values to the user, such as on display 12 , in step S 707 .
- step S 708 color calibration program 48 determines if calibrate-position function 72 has been called the number of times indicated by number of calls 77 . If calibrate-position function 72 has not been called number of calls 77 times,flow returns to step S 705 . Once calibrate-position function 72 has been called number of calls 77 times, flow returns to FIG. 7A .
- FIG. 7A flow proceeds to step S 709 , where the sensor(s) are calibrated.
- FIG. 7C is a flowchart for explaining sensor calibration according to the invention.
- color calibration program 48 calls calibrate-sensor function 72 .
- This function sends device driver calls 62 to measuring device driver 41 , which in turn sends device commands 66 to measuring device 10 so as to calibrate the sensor(s).
- step S 711 color calibration program 48 determines if calibrate-sensor function 73 provided display values 82 . If calibrate-sensor function 73 did provide display values 82 , color calibration program 48 displays the display values to the user in step S 712 .
- step S 713 color calibration program 48 determines if calibrate-sensor function 73 has been called the number of time indicated by number of calls 78 . If calibrate-sensor function 73 has not been called number of calls 78 times, flow returns to step S 710 . Once calibrate-sensor function 73 has been called number of calls 78 times, flow returns to FIG. 7A .
- step S 714 where move-to-patch function 74 is called.
- Color calibration program 48 provides move-to-patch function 74 with color patch number 84 , which is a logical patch number corresponding to the next patch that needs to be measured. Preferably, color patch number 84 is incremented every time a color patch is measured.
- move-to-patch function 74 of measuring device DLL 38 sends device driver calls 62 to device driver 41 .
- Device driver 41 in turn sends device commands 66 to measuring device 10 , which moves the sensor(s) or the recording medium, if appropriate, in order to relatively position the patch.
- step S 715 color calibration program 48 determines if move-to-patch function 74 provided display values 85 to the program. If move-to-patch function 74 did provide display values 85 , color calibration program 48 displays the display values to the user in step S 716 .
- move-to-patch function 74 cannot move the sensor(s) or the recording medium.
- hand-held patch reader 4 has no mechanism for moving its sensor(s) or a recording medium. Rather, the user must move the sensor(s) or the recording medium. In that case, display values 85 sent in step S 716 instructs the user to perform this task, as necessary.
- step S 717 color calibration program 48 determines if move-to-patch function 74 has indicated that position of the recording medium needs to be recalibrated. If the position does need to be recalibrated, flow proceeds to step S 718 , where the position is recalibrated as explained above with reference to FIG. 7B .
- step S 719 color calibration program 48 determines if move-to-patch function 74 needs to be called again so as to complete positioning of the sensor(s). Color calibration program 48 makes this determination by checking for flow control data from move-to-patch function 74 in the form of call-again value 86 . If move-to-patch function 74 needs to be called again, flow returns to step S 714 . Otherwise, flow proceeds to step S 720 .
- color calibration program 48 calls make-measurement function 75 .
- This function sends device driver calls 62 to measuring device driver 41 , which in turn uses device commands 66 to instruct measuring device 10 to make a color measurement.
- measuring device 10 generates color measurement 67 based on this measuring operation and sends color measurement 67 to measuring device driver 41 .
- Measuring device driver 41 sends this color measurement to make-measurement function 75 in measuring device DLL 38 in the form of color measurement 64 , and the make-measurement function provides the measurement to color calibration program 48 as color measurement 54 .
- step S 721 color calibration program 48 determines if make-measurement function 75 provided display values 89 to the program. If make-measurement function 75 did provide display values 89 , color calibration program 48 displays the display values to the user in step S 722 .
- step S 723 color calibration program 48 determines if make-measurement function 75 has indicated that the sensor(s) need to be recalibrated. If the sensor(s) do need to be recalibrated, flow proceeds to step S 724 , where the sensor(s) are recalibrated as explained above with reference to FIG. 7C .
- step S 725 color calibration program 48 determines if make-measurement function 75 needs to be called again so as to complete making the color measurement. Color calibration program 48 makes this determination by checking for flow control data from make-measurement function 74 in the form of call-again value 90 . If make-measurement function 75 needs to be called again, flow returns to step S 720 . Otherwise, flow proceeds to step S 726 .
- step S 726 color calibration program 48 determines if all color patches for calibrating color printer 1 have been measured. If more color patches need to be measured, flow returns to step S 714 . Otherwise, flow proceeds to step S 727 .
- step S 727 color calibration program 48 generates color adjustment commands 55 based at least in part on color measurements 54 .
- Color calibration program 48 sends these commands to printer driver 40 , which in turn sends print commands 58 to color printer 1 so as to adjust the color fidelity of the printer.
- color calibration program 48 is insulated from the differences between different types of color measuring devices. Furthermore, the flow control data for multiple calls provided to color calibration program 48 allows the program to call the functions the necessary number of times for each operation without knowing the type of the actual device.
- the display values provided to the program allow the program to display the display values appropriate for the type of measuring device 10 that is being used. Moreover, since the application program generates displays based on the display values rather than the DLL, the application program can package a message however it wants so as to permit each developer to give his application a unique and internally-consistent GUI. As a result, a block of code that accesses color measuring device DLL 38 can make color measurements with any type of color measuring device supported by the API, despite the different device driver commands needed to calibrate and operate the different types of devices.
- sample code that operates generally as described above.
- This code includes code for a portion of a color calibration program that makes color measurements using an API according to the invention, the API itself, and a DLL accessed through the API.
- This code is provided for illustrative purposes only. Other implementations of the color measurement code, measuring device API, and measuring device DLL exist that are within the scope and spirit of the invention.
- FIG. 8 is a block diagram for explaining a variation of the structure of the measuring device DLL according to the invention and of the API used to access the DLL.
- both calibrate-position function 72 and calibrate-sensor function 73 can provide call-again values 140 and 141 , respectively, to color calibration program 48 . These call-again values are provided by these functions when they need to be called more than once in order to complete their respective operations.
- get-device-capabilities function 71 can still be included in the API, if desired.
- FIG. 9 is a block diagram for explaining another variation of the structure of the measuring device API according to the invention.
- each of the functions in the API provides flow control data in the form of a “number of calls” value to indicate how many times that function should be called in order to complete its respective operation.
- calibrate-position function 72 provides number of calls 143
- calibrate-sensor function 73 provides number of calls 154
- move-to-patch function 74 provides number of calls 155
- make-measurement function 75 provides number of calls 156 .
- These values can be a total number of calls that need to be made to each function. For example, if three calls need to be made to calibrate-position function 72 , then that function would provide a value of “three” each time it was called.
- each function can maintain an internal state variable and provide the application program with a number of remaining calls that must be made in order to complete an operation. For example, calibrate-position function 72 would return a value of “three” the first time it was called to perform a position calibration, a “two” the next time, and a “one” the next time. Again, because each function provides the number of times that function needs to be called, there is no need for get-device-capabilities function 71 .
- FIGS. 4, 8 and 9 Various combinations of the foregoing flow control techniques illustrated in FIGS. 4, 8 and 9 can be used for facilitating multiple calls of the function in measuring device DLL 38 .
Abstract
An application programming interface (API) that provides a common interface between an application program and plural different types of color measuring devices each having at least one color measuring sensor. The API includes plural functions for operating any of the plural different types of color measuring devices. In order to complete an operation performed by at least one of the plural functions, the function that performs the operation must be called a number of times which is different for at least two different types of color measuring devices. For a particular color measuring device, the API provides the application program with flow control data of the number of times that the function must be called. This flow control data preferably can be provided by the function, in the form of a call-again value or as a numerical value, or by a separate function in the API such as a get-device-capabilities function. In some embodiments of the invention, a combination of these methods of providing the flow control data is utilized. Preferred functions for operating any of the plural different types of color measuring devices include a calibrate-position function, a calibrate-sensor function, a move-to-patch function, and a make-measurement function.
Description
- This application is being filed with a microfiche appendix of computer program listings consisting of one (1) fiche having fifty-one (51) frames.
- A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
- The present invention concerns an application programming interface (API) usable by a software developer when writing an application program, such as a color calibration program, that uses a color measuring device. In particular, the present invention relates to an API that provides a common interface between such an application program and plural different types of color measuring devices.
- One common use of color measuring devices is to calibrate color fidelity of color recording devices. Typically, the recording device (such as a color laser beam printer or ink jet printer) records color patches on a recording medium. The color values of the patches are measured by the color measuring device, the measured values are compared against expected (or ideal) values, and the comparisons are used to calibrate the recording device.
- Color measuring devices come in many different physical structures, such as XY tables, strip readers, hand-held patch readers, and flatbed scanners, and operate in different ways using different numbers and types of sensors. Color patches are input in different ways to color measuring devices which have different physical structures. For example, patches are input to an XY table on a sheet that has an array of patches printed thereon, whereas patches are input to a strip reader on strips that each have one or more rows of patches printed thereon. The sensors that actually perform color measurements are positioned on patches in different ways depending on the physical structures of the color measuring devices.
- In order to make accurate color measurements for use in calibrating a color recording device, the color measuring devices themselves must be calibrated properly. For example, for some color measuring devices to position their sensor(s) accurately, the positioning mechanism in the color measuring devices must be calibrated. In addition, the sensors in some color measuring devices must be calibrated so as to ensure proper color measurements. Depending on the numbers and types of sensors as well as the physical structures of the color measuring devices, calibration of the position of the sensors and calibration of the sensors differ among different types of color measuring devices.
- In addition, application programs that use color measuring devices should provide interfaces to the user. These interfaces should include instructions to the user at various points throughout operations performed using the color measuring devices. The timing and content of these instructions also differ among different color measuring devices.
- As a result of the foregoing differences in operation among the different types of color measuring devices, a different command set is needed for each different type of device. Application programs that use the color measuring devices often must include different numbers of calls to commands in the different command sets in order to perform a same operation with different color measuring devices. In addition, the application programs often must include different interfaces for each different type of color measuring device. These different command sets and interfaces greatly complicate the task of writing application programs that perform color measurements. As a result, conventional application programs for performing color measurements must include separate and often lengthy routines for taking color measurements with each different type of supported device. In addition, once a conventional application program is written, that application program cannot use new types of color measuring devices, because the new device would require calls to commands in a new command set.
- Accordingly, there is a need for an application programming interface (API) that allows a software developer to write a single set of routines for taking color measurements using plural different types of color measuring devices.
- The present invention addresses the foregoing need by providing an application programming interface that abstracts the operations needed to perform color measurements. An application program only needs to include calls to the functions in this API in order to use any supported type of color measuring device. The API in turn calls the necessary commands for performing color measurement operations.
- In order to allow the application program to provide appropriate instructions during operations performed with a color measuring device, certain functions in the API are called numerous times in order to complete their respective operations. In order to enable the application program to call such a function a correct number of times, the API provides the application program with flow control data of the number of times that the function needs to be called so as to complete its operation with a particular color measuring device. The API also preferably provides the application program with display values for display so as to instruct the user in manipulating the color measuring device.
- By virtue of the foregoing, the application program does not need to include separate routines for each different type of supported color measuring device. Instead, the application program need only include calls to the functions in the API and include mechanisms for handling display values and flow control data provided by the API. Moreover, if the API is implemented in a dynamically linkable library (DLL), an existing application program that calls the functions in the API can use new types of color measuring devices by linking to an updated version of the DLL.
- Accordingly, in one aspect the invention is an API that provides a common interface between an application program and plural different types of color measuring devices each having at least one color measuring sensor. The API includes plural functions for operating any of the plural different types of color measuring devices. In order to complete an operation performed by at least one of the plural functions, the function that performs the operation must be called a number of times which is different for at least two different types of color measuring devices. For a particular color measuring device, the API provides the application program with flow control data of the number of times that the function must be called. This flow control data preferably can be provided by the function, in the form of a call-again value or as a numerical value, or by a separate function in the API such as a get-device-capabilities function. In some embodiments of the invention, a combination of these methods of providing the flow control data is utilized.
- Preferably, the functions in the API also provide the application program with display values which are different for at least two different types of color measuring devices. The display values are for display to a user, preferably by the application program, so as to instruct the user in manipulating the color measuring device that is being operated.
- In another aspect, the invention is an API that provides a common interface between an application program and plural different types of color measuring devices each having at least one color measuring sensor. The API includes plural functions for operating any of the plural different types of color measuring devices. The plural functions include a calibrate-position function, a calibrate-sensor function, a move-to-patch function, and a make-measurement function.
- The calibrate-position function calibrates a relative position of a recording medium with respect to any of the plural different types of color measuring devices. Preferably, the calibrate-position function provides the application program with at least one display value that is to be displayed so as to instruct a user to position the recording medium or to position any of the color measuring sensors.
- The calibrate-sensor function calibrates any of the color measuring sensors of any of the plural different types of color measuring devices. Preferably, the calibrate-sensor function provides the application program with at least one display value that is to be displayed so as to instruct the user in calibrating the sensor.
- The move-to-patch function relatively positions any of the color measuring sensors and a color patch for any of the plural different types of color measuring devices. The move-to-patch function is provided with a logical color patch number by the application program. In order to relatively position the color patch and any of the color measuring sensors for some color measuring devices, the move-to-patch function preferably can provide the application program with a display value which instructs the user to manipulate the color measuring devices or to move the recording medium. In order to relatively position the color patch and any of the color measuring sensors for other color measuring devices, the move-to-patch function preferably causes the color measuring device to move the recording medium or to move the color measuring sensors. In any case, the move-to-patch function preferably provides the application program with a recalibrate value in a case that the relative position of the recording medium needs to be recalibrated, for example when a new recording medium is loaded into the color measuring device.
- The make-measurement function makes a color measurement of the patch at which any of the color measuring sensors is relatively positioned, and the make-measurement function provides the application program with a color measurement value for the color patch. The make-measurement function preferably provides the application program with at least one display value that is to be displayed so as to instruct the user in making the color measurement. In addition, the make-measurement function preferably provides the application program with a recalibrate value in a case that any of the color measuring sensors needs to be recalibrated.
- In order to complete an operation performed by at least one of the plural functions, the function that performs the operation must be called a number of times which is different for at least two different types of color measuring devices. For a color measuring device that is being operated, the API provides the application program with flow control data of the number of times that the function must be called. The flow control data preferably can be provided by the function, either in the form of a call-again value or a numerical value, or by a get-device-capabilities function included in the API.
- The computer-executable process steps for the functions in the API preferably are stored in a dynamically linkable library (DLL). Thus, updated API functions can be used by an application program to access new types of measuring devices simply by linking the application program to the DLL.
- The API according to the invention relieves application programs from the burden of having to include separate routines for taking color measurements with each different type of supported color measuring device. Instead, in order to take color measurements with any type of supported color measuring device, the application program need only include calls to functions in the API. The API itself handles the different interfaces to the different types of color measuring devices. As a result, the application program is far simpler to write.
- This brief summary has been provided so that the nature of the invention may be understood quickly. A more complete understanding of the invention can be obtained by reference to the following detailed description of the preferred embodiments thereof in connection with the attached drawings.
-
FIG. 1 is a representational view of a computer system in which color fidelity of a color printer is calibrated using a color measuring device. -
FIG. 2 is a detailed block diagram showing the internal architecture of the computer system shown inFIG. 1 . -
FIG. 3 is a block diagram for explaining a system for calibration of color fidelity of a color printer by a color calibration program according to the invention. -
FIG. 4 is a block diagram for explaining a structure of a measuring device application programming interface (API) according to the invention. -
FIG. 5 is a representational view of a development system for development of an application program using a measuring device API according to the invention. -
FIG. 6 is a detailed block diagram showing the internal architecture of the development system shown inFIG. 5 . -
FIGS. 7A to 7C are flowcharts for explaining color calibration by a color calibration program using a measuring device API according to the invention. -
FIG. 8 is a block diagram for explaining a variation of the structure of the measuring device API according to the invention. -
FIG. 9 is a block diagram for explaining another variation of the structure of the measuring device API according to the invention. -
FIG. 1 is a representational view of a computer system in which color fidelity of a color printer is calibrated using a color measuring device. Shown inFIG. 1 are color printer 1 andcomputer system 6, together with a variety of color measuring devices, such as XY table 2,strip reader 3, hand-held patch reader 4, andscanner 5. - Color printer 1 is depicted in
FIG. 1 as an ink jet printer. However, any printer capable of printing color images on recording media can be utilized by a color calibration program written according to the invention, such as ink jet printers and laser printers. Color printer 1 prints color images in response to print jobs received fromcomputer system 6 overprinter interface 8. - Measuring
device 10 is a color measuring device that is used to generate color measurements of color patches input thereto. The color measurements generated bycolor measuring device 10 are transmitted over measuringdevice interface 9 tocomputer system 6. Examples of measuringdevice 10 include XY table 2,strip reader 3, and hand-held patch reader 4 for reading individual color patches. - Color patches are input to each of the different types of color measuring devices in different ways. For example, patches are input to XY table 2 on a sheet that has an array of patches printed thereon, whereas patches are input to strip
reader 3 on strips that each have one or more rows of patches printed thereon. The sensors that actually perform color measurements are positioned on patches in different ways depending on the physical structures of the color measuring devices. For example, XY table 2 typically includes motors and gimbals for automatically positioning the sensors, while hand-held patch reader 4 typically must be manually positioned over a patch. -
Flatbed scanner 5 can also serve as a color measuring device, provided thatscanner 5 is properly calibrated. Color patches are input toflatbed scanner 5 in a similar manner as the patches are input to XY table 2, namely on a sheet that has an array of patches printed thereon. - The different color measuring devices also can use entirely different types and arrangements of sensors for making the color measurements. For example,
color measuring device 10 can be a spectrometer (i.e., a spectrophotometer or a spectroradiometer), which uses sensors that preferably measure light intensity for frequencies across the entire visible spectrum. Alternatively,color measuring device 10 can be a colorimeter or densitometer, which uses sensors that measure light intensity for XYZ or RGB components of the spectrum. - In any case, each of the color measuring devices have at least one color sensor for making color measurements. In order to ensure accurate color measurements, the sensor(s) should be calibrated. In addition, depending on the type of measuring
device 10, a relative position of a recording medium with respect to the device might have to be calibrated. In particular, each time a new recording medium (e.g., strip or sheet) is input to color measuringdevice 10, the position of the recording medium should be recalibrated so that the color measuring device can properly locate color patches printed thereon. - Because of the different ways that color patches are input and measured by the different types of color measuring devices, a different command set is needed to calibrate and to make color measurements with each different type of color measuring device.
- As shown in
FIG. 1 ,computer system 6 is connected to printer 1 throughprinter interface 8 and measuringdevice 10 through measuringdevice interface 9. Provided withcomputer system 6 aredisplay 12 which may be a color monitor,keyboard 14 for entering user commands, andpointing device 15 such as a mouse for pointing to and for manipulating graphical user interfaces and other objects displayed ondisplay 12. -
Computer system 6 also includes a mass storage device such as fixeddisk 16. This mass storage device is for storing computer-executable process steps for a color calibration program and a measuring device DLL according to the invention, as well other application programs and an operating system including a printer driver and a measuring device driver. Such storage may also be provided by a CD-ROM (not shown). - It should be understood that, although a programmable general-purpose computer is shown in
FIG. 1 , a dedicated computer terminal or other type of data processing equipment can utilize the present invention. -
FIG. 2 is a detailed block diagram showing the internal architecture ofcomputer system 6. As shown inFIG. 2 ,computer system 6 includescentral processing unit 23 which interfaces withcomputer bus 24. Also interfacing withcomputer bus 24 are fixeddisk 16, main memory (RAM) 26, read only memory (ROM) 27,floppy disk interface 29,display interface 30 to display 12 (not shown),keyboard interface 32 to keyboard 14 (not shown),pointing device interface 33 to pointing device 15 (not shown),printer interface 8 to color printer 1, and measuringdevice interface 9 to measuringdevice 10. -
Main memory 26 interfaces withcomputer bus 24 so as to provide RAM storage toCPU 23 during execution of software applications. More specifically,CPU 23 loads process steps from fixeddisk 16, another storage device, or some other source such as a network (not shown), intomain memory 26.CPU 23 then executes the stored process steps frommain memory 26 in order to execute application programs. Data such as print data and color measurement data can be stored inmain memory 26, where the data can be accessed byCPU 23 during execution of the process steps. - As shown in
FIG. 2 , fixeddisk 16 typically containsoperating system 36, application programs 37, measuringdevice DLL 38 according to the invention, and other files and data.Operating system 36 includesprinter driver 40 and measuringdevice driver 41. Measuringdevice driver 41 is one of plural different types of measuring device drivers corresponding to the type of measuringdevice 10 connected tocomputer system 6. Examples of measuringdevice driver 41 includeXY table driver 43 for XY table 2,strip reader driver 44 forstrip reader 3,patch reader driver 45 for hand-held patch reader 4, andscanner driver 46 forscanner 5. Some or all of these drivers can be stored on fixeddisk 16. - Application programs 37 include
color calibration program 48. The structure and operation ofcolor calibration program 48 is explained in more detail below with reference toFIG. 3 . - Measuring
device DLL 38 is a library of functions that are called by an application program so as to use any of plural different color measuring devices supported by the DLL. In order to write an application program that calls these functions, a software developer uses a measuring device API according to the invention, as explained below with reference toFIGS. 5 and 6 . -
FIG. 3 is a block diagram for explaining a system for calibration of color fidelity of a color printer by a color calibration program according to the invention. InFIG. 3 ,color calibration program 48 runs oncomputer system 6 and sendsprint data 51 for printing color patches toprinter driver 40. The color patches are for use in calibration of color printer 1. -
Color calibration program 48 makes API calls 52 to functions provided by measuringdevice DLL 38 in order to make color measurements of the color patches. According to the invention, since the DLL encapsulates the functionality needed to operate many different color measuring device, it is possible for thecolor calibration program 48 to call exactly the same functions, in exactly the same order, no matter which of plural different types of color measuring devices are connected. Because of the difference in devices, however, the API often needs to have certain functions repeated, or operator interaction performed, in order for the different devices to be usable by a single application. Accordingly, in response to API calls 52, the functions in the DLL providecolor calibration program 48 with information that the application needs to ensure that the API functions are called correctly. Such information might include, for example, display values for display by the application to the user so as to prompt the user for some user intervention (such as to prompt the user to insert a next sheet of patches into the measuring device), and the information might further include flow control data that instruct the application to alter its control flow such as by calling particular DLL functions multiple times until a needed result (such as position calibration) is achieved. Display values and flowcontrol data 53 provided tocolor calibration program 48 are explained in more detail below with reference toFIGS. 4, 8 and 9. -
Color calibration program 48 also is provided withcolor measurements 54 by the DLL. Based oncolor measurements 54,color calibration program 48 sends color adjustment commands 55 toprinter driver 40 so as to adjust color fidelity of color printer 1. The operation ofcolor calibration program 48 in printing and measuring the color patches and adjusting the color printer is explained in more detail below with reference toFIGS. 7A to 7C. - In response to print
data 51 received fromcolor calibration program 48,printer driver 40 sendsprint job 57 to color printer 1. Likewise, in response to color adjustment commands 55 received fromcolor calibration program 48,printer driver 40 sends printer commands 58 to color printer 1. - Color printer 1 prints printed
color patches 61 in response to printjob 57 received fromprinter driver 40. The user inputs these color patches to color measuringdevice 10. - Measuring
device DLL 38 provides a common interface betweencolor calibration program 48 and plural different types of color measuring devices. As mentioned above, functions in measuringdevice DLL 38 are called by API calls 52 fromcolor calibration program 48. The functions in measuringdevice DLL 38 make device driver calls 62 based on API calls 52 in order to operate measuringdevice 10. Device driver calls 62 are calls to a device driver corresponding to the type ofcolor measuring device 10. For example, if measuringdevice 10 is an XY table, device driver calls 62 are calls to an XY table driver. In response to device driver calls 62, measuringdevice DLL 38 is provided withcolor measurements 64 by measuringdevice driver 41. Measuringdevice DLL 38 in turn providescolor calibration program 48 with display values and flowcontrol data 53 andcolor measurements 54. The flow control data preferably is based at least in part ondevice characteristics 65 received from measuringdevice driver 41. The structures of the functions in measuringdevice DLL 38 according to the invention are explained in more detail below with reference toFIGS. 4, 8 and 9, and the operation of the function is explained with reference toFIGS. 7A to 7C. - Measuring
device driver 41 is a device driver corresponding to the type of measuringdevice 10. Measuringdevice driver 41 receives device driver calls 62 from the functions in measuringdevice DLL 38. In response to these call, measuringdevice driver 41 sends device commands 66 to measuringdevice 10, which providescolor measurements 67 to measuringdevice driver 41.Color measurements 67 in turn are provided to measuringdevice DLL 38 ascolor measurements 64. - As mentioned above, measuring
device 10 receives printedcolor patches 61 as input. Measuringdevice 10 makescolor measurements 67 of printedcolor patches 61 in accordance with device commands 66 received from measuringdevice driver 41.Measurement device 10 providescolor measurements 67 to measuringdevice driver 41. -
FIG. 4 is a block diagram for explaining functionality provided in the DLL and accessed from the application through the API. - Briefly, the measuring device DLL illustrated in
FIG. 4 is accessed through a measuring device API according to the invention. The API provides a common interface between an application program and plural different types of color measuring devices each having at least one color measuring sensor. The interface includes plural functions for operating any of the plural different types of color measuring devices. In order to complete an operation performed by one or more of the functions, the function that performs the operation must be called a number of times which is different for different types of color measuring devices. For a color measuring device that is being operated, the API provides the application program with flow control data of the number of times that the function must be called. InFIG. 4 , this flow control data is provided for some of the functions by a separate get-device capabilities function. This flow control data is provided for other functions by the functions themselves, in the form of “call-again” values provided by the functions to the color calibration program. The functions in the API also preferably provide the application program with display values which are different for different types of color measuring devices. The values are displayed by the color calibration program to a user so as to instruct the user in manipulating the color measuring device that is being operated. - In more detail,
FIG. 4 shows measuringdevice DLL 38 which is accessed by an application program through a measuring device API according to the invention. Thus, the API provides an interface for a software developer to write an application program that calls the functions in the DLL illustrated inFIG. 4 . The functions provide an interface betweencolor calibration program 48 and measuringdevice driver 41. Measuringdevice driver 41 in turn communicates with measuringdevice 10 through measuringdevice interface 9. - Measuring
device driver 41 is a device driver corresponding to the type of measuringdevice 10. Thus, brackets next to measuringdevice driver 41 inFIG. 4 indicate that measuringdevice driver 41 is one of plural different device drivers such asXY table driver 43,strip reader driver 44,patch reader driver 45, andscanner driver 46. Likewise, brackets next to measuringdevice 10 inFIG. 4 indicate that measuringdevice 10 is one of XY table 2,strip reader 3, hand-held patch reader 4 for reading individual color patches, andscanner 5. - It should be noted that the various drivers and devices shown in
FIG. 4 are only representative of the possible drivers and devices that can be operated using the API according to the invention. - In
FIG. 4 , measuringdevice DLL 38 includes at least the following functions, which are provided to an application program through a measuring device API according to the invention: get-device-capabilities 71, calibrate-position 72, calibrate-sensor 73, move-to-patch 74, and makemeasurement 75. Arrows pointing into blocks for these functions indicate information provided to the functions bycolor calibration program 48. Likewise, arrows pointing out of blocks for these functions indicate information provided by the functions to color calibration program. 48. - Information can be provided in various different ways to the functions by
color calibration program 48 and by the functions tocolor calibration program 48. For example, information can be provided to a function as a passed variable, by modification of a shared (e.g., global) variable or data space, by passing a pointer to a memory location that stores the information, or through messages in a message-based environment. Likewise, information can be provided by a function as a returned value, by modification of a shared variable or data space, by modification of a memory location pointed to by a pointer, or through messages. Any or all of these methods, as well as any other additional methods, can be utilized by measuringdevice DLL 38 according to the invention. - Get-device-
capabilities function 71 according to the invention providescolor calibration program 48 with flow control data for calibrate-position function 72 and calibrate-sensor function 73. In particular, get-device-capabilities function 71 providescolor calibration program 48 with number ofcalls 77, thereby indicating the number of calls that must be made to calibrate-position function 72 in order to calibrate a position of a recording medium with respect to measuringdevice 10. Likewise, get-device-capabilities function 71 providescolor calibration program 48 with number ofcalls 78, thereby indicating the number of calls that must be made to calibrate-sensor function 73 in order to calibrate the sensor(s) of measuringdevice 10. - The DLL preferably determines the flow control data by querying measuring
device driver 41, or measuringdevice 10, fordevice characteristics 65. The functions in measuring device DLL determine the flow control data based at least in part ondevice characteristics 65. For example, if the device characteristics identify the type of measuringdevice 10, the functions can determine the flow control data using a look-up table. Alternatively,device characteristics 65 can include the flow control data directly, for later use by the different functions in the DLL. Get-device-capabilities function 71 preferably queries the device driver or the device for the device characteristics. - Calibrate-
position function 72 is called to calibrate a relative position of a recording medium with respect to any of the plural different types of color measuring devices. In order to calibrate the relative position of the recording medium, calibrate-position function 72 might have to be called more than once. The number of calls depends at least in part on the type of measuringdevice 10. As discussed above, get-device-capabilities function 71 according to the invention providescolor calibration program 48 with number ofcalls 77 that must be made to calibrate-position function 72 in order to complete the position calibration operation. Number ofcalls 77 preferably is based at least in part ondevice characteristics 65. - Each time calibrate-
position function 72 is called, the user might be required to perform a task such as positioning the sensor(s), positioning the recording medium, or otherwise manipulating measuringdevice 10. Calibrate-position function 72 preferably provides display values 80 tocolor calibration program 48, andprogram 48 displays display values 80 to a user so as to instruct the user to perform these tasks, as necessary. - Display values 80, as well as all other display values provided by measuring
device DLL 38, can include text and/or graphics, or any other type of values displayable bycomputer system 6. Because the application program actually displays the display values, the application program can determine the form of the display. For example, the application program can display text or graphics based on the display values. The display values do not necessarily need to be displayed visually. For example, if the application program includes text-to-speech functionality, the program can generate speech based on the display values. - Calibrate-
sensor function 73 is called to calibrate the sensor(s) of any of the plural different types of color measuring devices. In order to calibrate the sensor(s), calibrate-sensor function 73 might have to be called more than once. As discussed above, get-device-capabilities function 71 according to the invention providescolor calibration program 48 with number ofcalls 78 that must be made to calibrate-sensor function 73 so as to complete the sensor calibration operation. Number ofcalls 78 preferably is based at least in part ondevice characteristics 65. - Each time calibrate-
sensor function 73 is called, the user might be required to perform a task such as manipulating measuringdevice 10. Calibrate-sensor function 73 preferably provides display values 82 tocolor calibration program 48 for display by the program to a user so as to instruct the user to perform any such tasks. - Move-to-
patch function 74 is called to relatively position the sensor(s) and a color patch for any of the plural different types of color measuring devices. Move-to-patch function 74 is provided with logical color patch number 84 bycolor calibration program 48. In response, move-to-patch function 74 moves the sensor(s) or the recording medium so as to position the sensor(s) at the corresponding color patch, providescolor calibration program 48 with display values 85 so as to instruct the user to move the sensor(s) or the recording medium, or both. - In order to relatively position the sensor(s) at the patch, move-to-
patch function 74 might have to be called multiple times, depending on the type of measuringdevice 10. For example, if the color patch corresponding to color patch number 84 is on a next sheet or strip of recording medium, move-to-patch function 74 might have to be called a first time so as to instruct a user to change the sheet or strip, a second time so as to recalibrate the position of the recording medium (by providing a recalibrate value), and then a third time so as to move to the first patch on the recording medium. The number of times that move-to-patch function 74 needs to be called preferably is determined by the function based at least in part ondevice characteristics 65. If move-to-patch function 74 needs to be called multiple times, move-to-patch function 74 providescolor calibration program 48 with flow control data indicating whether the function has been called the necessary number of times. As shown inFIG. 4 , this flow control data takes the form of call-againvalue 86, which is provided if move-to-patch function 74 has not been called the necessary number of times. - In some situations, and in particular when a new recording medium is input to measuring
device 10, the relative position of the recording medium and measuringdevice 10 might have to be recalibrated. Move-to-patch function 74 providescolor calibration program 48 withrecalibrate value 87 in such situations. - Make-
measurement function 75 is called to make a color measurement of the patch at which the sensor(s) are relatively positioned. Make-measurement function 75 providescolor calibration program 48 withcolor measurement 54 for the color patch. In addition, make-measurement function 75 preferably providescolor calibration program 48 withdisplay values 89 for display by the program to instruct the user to perform any necessary tasks for making the color measurement. - As with move-to-
patch function 74, make-measurement function 75 might have to be called multiple times in order to complete its operation. The number of times that make-measurement function 75 needs to be called preferably is determined by the function based at least in part ondevice characteristics 65. If make-measurement function 75 needs to be called multiple times, make-measurement function 75 providescolor calibration program 48 with flow control data indicating whether the function has been called the necessary number of times. As shown inFIG. 4 , this flow control data takes the form of call-againvalue 90, which is provided if make-measurement function 75 has not been called the necessary number of times. - If the sensor(s) need to be recalibrated after a color measurement, for example after a certain number of color measurements, make-
measurement function 75 providescolor calibration program 48 withrecalibrate value 91. -
FIG. 5 is a representational view of a development system for development of an application program using a measuring device API according to the invention. As shown inFIG. 5 ,development system 100 is provided withdisplay 102 which may be a color monitor,keyboard 104 for entering user commands and for entering code for an application program, andpointing device 105 such as a mouse.Development system 100 also includes a mass storage device such as fixeddisk 106. This mass storage device is for storing computer-executable process steps for an operating system, software development programs, and a measuring device API according to the invention. Such storage may also be provided by a CD-ROM (not shown). - It should be understood that, although
development system 100 is shown as a programmable general-purpose computer inFIG. 5 , a dedicated computer terminal or other type of data processing equipment can be used to write application programs utilizing the API according to the present invention. -
FIG. 6 is a detailed block diagram showing the internal architecture ofdevelopment system 100. As shown inFIG. 6 ,development system 100 includescentral processing unit 113 which interfaces withcomputer bus 114. Also interfacing withcomputer bus 114 are fixeddisk 106, main memory (RAM) 116, read only memory (ROM) 117,floppy disk interface 119,display interface 120 to display 102 (not shown),keyboard interface 122 to keyboard 104 (not shown), andpointing device interface 123 to pointing device 105 (not shown). -
Main memory 116 interfaces withcomputer bus 114 so as to provide RAM storage toCPU 113 during execution of software applications. More specifically,CPU 113 loads process steps from fixeddisk 106, another storage device, or some other source such as a network (not shown), intomain memory 116.CPU 113 then executes the stored process steps frommain memory 116 in order to execute application programs. Data such as code for an application program utilizing a measuring device API according to the invention can be stored inmain memory 116, where the data can be accessed byCPU 113 during execution of the process steps. - As shown in
FIG. 6 , fixeddisk 106 typically containsoperating system 126,application programs 127, and measuringdevice API 128 according to the invention.Operating system 126 typically is a windowing operating system and preferably is compatible withoperating system 36 ofcomputer system 6.Application programs 127 preferably includes software development programs 130 for developing application programs for making color measurements with color measuring devices. - A software developer uses software development programs 130 to write code for an application program such as
color calibration program 48. The software developer includes calls to functions provided by measuringdevice API 128 in order to have the application program make color measurements with any color measuring device supported by the API. - The API preferably includes headers corresponding to the functions in measuring
device DLL 38. When the software developer compiles the code for application program using software development programs 130, these headers allow the application program to access the functions in measuringdevice DLL 38. These functions provide a common interface to any of the plural supported color measuring devices. Therefore, as long as the application program includes code for handling flow control data and display values returned by the functions in the DLL, as described above with reference toFIGS. 3 and 4 , the application program is able to make color measurements with any of the plural supported color measuring devices. -
FIGS. 7A to 7C are flowcharts for explaining a representative color calibration application using a measuring device API according to the invention. - In step S701 in
FIG. 7A ,color calibration program 48 generatesprint data 51 for color patches for calibration of color fidelity of color printer 1. In step S702,color calibration program 48 sendsprint data 51 toprinter driver 40, which in turn sendsprint job 57 to color printer 1 based onprint data 51. Color printer 1 prints the print job onto a recording medium, resulting in printedcolor patches 61. - In step S703,
color calibration program 48 makes API call 52 to get-device-capabilities function 71 in measuringdevice DLL 38. In response, get-device-capabilities function 71 provides flow control data tocalibration program 48. This flow control data preferably includes number ofcalls 77 and number ofcalls 78, which indicate the number of times calibrate-position function 71 and calibrate-sensor function 72 need to be called in order to perform their respective operations. - In step S704, the relative position of the sensor(s) with respect to the recording medium is calibrated.
FIG. 7B is a flowchart for explaining position calibration according to the invention. - In step S705 of
FIG. 7B ,color calibration program 48 calls calibrate-position function 72. This function sends device driver calls 62 to measuringdevice driver 41, which in turn sends device commands 66 to measuringdevice 10 so as to calibrate the relative position of the sensor(s). - In step S706,
color calibration program 48 determines if calibrate-position function 72 provided display values 80. If calibrate-position function 72 did providedisplay values 80,color calibration program 48 displays the display values to the user, such as ondisplay 12, in step S707. - In step S708,
color calibration program 48 determines if calibrate-position function 72 has been called the number of times indicated by number ofcalls 77. If calibrate-position function 72 has not been called number ofcalls 77 times,flow returns to step S705. Once calibrate-position function 72 has been called number ofcalls 77 times, flow returns toFIG. 7A . - In
FIG. 7A , flow proceeds to step S709, where the sensor(s) are calibrated.FIG. 7C is a flowchart for explaining sensor calibration according to the invention. - In step S710 of
FIG. 7C ,color calibration program 48 calls calibrate-sensor function 72. This function sends device driver calls 62 to measuringdevice driver 41, which in turn sends device commands 66 to measuringdevice 10 so as to calibrate the sensor(s). - In step S711,
color calibration program 48 determines if calibrate-sensor function 73 provided display values 82. If calibrate-sensor function 73 did providedisplay values 82,color calibration program 48 displays the display values to the user in step S712. - In step S713,
color calibration program 48 determines if calibrate-sensor function 73 has been called the number of time indicated by number ofcalls 78. If calibrate-sensor function 73 has not been called number ofcalls 78 times, flow returns to step S710. Once calibrate-sensor function 73 has been called number ofcalls 78 times, flow returns toFIG. 7A . - Returning to
FIG. 7A , flow proceeds to step S714, where move-to-patch function 74 is called.Color calibration program 48 provides move-to-patch function 74 with color patch number 84, which is a logical patch number corresponding to the next patch that needs to be measured. Preferably, color patch number 84 is incremented every time a color patch is measured. Based on color patch number 84 and the type of measuringdevice 10, move-to-patch function 74 of measuringdevice DLL 38 sends device driver calls 62 todevice driver 41.Device driver 41 in turn sends device commands 66 to measuringdevice 10, which moves the sensor(s) or the recording medium, if appropriate, in order to relatively position the patch. - In step S715,
color calibration program 48 determines if move-to-patch function 74 provided display values 85 to the program. If move-to-patch function 74 did provide display values 85,color calibration program 48 displays the display values to the user in step S716. - With some color measuring devices, move-to-
patch function 74 cannot move the sensor(s) or the recording medium. For example, hand-held patch reader 4 has no mechanism for moving its sensor(s) or a recording medium. Rather, the user must move the sensor(s) or the recording medium. In that case, display values 85 sent in step S716 instructs the user to perform this task, as necessary. - In step S717,
color calibration program 48 determines if move-to-patch function 74 has indicated that position of the recording medium needs to be recalibrated. If the position does need to be recalibrated, flow proceeds to step S718, where the position is recalibrated as explained above with reference toFIG. 7B . - Flow proceeds to step S719, where
color calibration program 48 determines if move-to-patch function 74 needs to be called again so as to complete positioning of the sensor(s).Color calibration program 48 makes this determination by checking for flow control data from move-to-patch function 74 in the form of call-againvalue 86. If move-to-patch function 74 needs to be called again, flow returns to step S714. Otherwise, flow proceeds to step S720. - In step S720,
color calibration program 48 calls make-measurement function 75. This function sends device driver calls 62 to measuringdevice driver 41, which in turn uses device commands 66 to instruct measuringdevice 10 to make a color measurement. Once the measuring operation is complete, measuringdevice 10 generatescolor measurement 67 based on this measuring operation and sendscolor measurement 67 to measuringdevice driver 41. Measuringdevice driver 41 sends this color measurement to make-measurement function 75 in measuringdevice DLL 38 in the form ofcolor measurement 64, and the make-measurement function provides the measurement tocolor calibration program 48 ascolor measurement 54. - In step S721,
color calibration program 48 determines if make-measurement function 75 provideddisplay values 89 to the program. If make-measurement function 75 did providedisplay values 89,color calibration program 48 displays the display values to the user in step S722. - In step S723,
color calibration program 48 determines if make-measurement function 75 has indicated that the sensor(s) need to be recalibrated. If the sensor(s) do need to be recalibrated, flow proceeds to step S724, where the sensor(s) are recalibrated as explained above with reference toFIG. 7C . - Flow proceeds to step S725, where
color calibration program 48 determines if make-measurement function 75 needs to be called again so as to complete making the color measurement.Color calibration program 48 makes this determination by checking for flow control data from make-measurement function 74 in the form of call-againvalue 90. If make-measurement function 75 needs to be called again, flow returns to step S720. Otherwise, flow proceeds to step S726. - In step S726,
color calibration program 48 determines if all color patches for calibrating color printer 1 have been measured. If more color patches need to be measured, flow returns to step S714. Otherwise, flow proceeds to step S727. - In step S727,
color calibration program 48 generates color adjustment commands 55 based at least in part oncolor measurements 54.Color calibration program 48 sends these commands toprinter driver 40, which in turn sends print commands 58 to color printer 1 so as to adjust the color fidelity of the printer. - Because each of the function in measuring
device DLL 38 accessed through measuringdevice API 128 makes device driver calls 62 to measuringdevice 41 for the type ofcolor measuring device 10,color calibration program 48 is insulated from the differences between different types of color measuring devices. Furthermore, the flow control data for multiple calls provided tocolor calibration program 48 allows the program to call the functions the necessary number of times for each operation without knowing the type of the actual device. The display values provided to the program allow the program to display the display values appropriate for the type of measuringdevice 10 that is being used. Moreover, since the application program generates displays based on the display values rather than the DLL, the application program can package a message however it wants so as to permit each developer to give his application a unique and internally-consistent GUI. As a result, a block of code that accesses colormeasuring device DLL 38 can make color measurements with any type of color measuring device supported by the API, despite the different device driver commands needed to calibrate and operate the different types of devices. - Included in a microfiche appendix submitted herewith is sample code that operates generally as described above. This code includes code for a portion of a color calibration program that makes color measurements using an API according to the invention, the API itself, and a DLL accessed through the API. This code is provided for illustrative purposes only. Other implementations of the color measurement code, measuring device API, and measuring device DLL exist that are within the scope and spirit of the invention.
-
FIG. 8 is a block diagram for explaining a variation of the structure of the measuring device DLL according to the invention and of the API used to access the DLL. As shown inFIG. 8 , both calibrate-position function 72 and calibrate-sensor function 73 can provide call-againvalues color calibration program 48. These call-again values are provided by these functions when they need to be called more than once in order to complete their respective operations. - Because the calibration functions can return these call-again values to facilitate multiple calls, there is no need for get-device-
capabilities function 71 to provide number ofcalls 77 and number ofcalls 78 to the calibration functions of course, get-device-capabilities function 71 can still be included in the API, if desired. -
FIG. 9 is a block diagram for explaining another variation of the structure of the measuring device API according to the invention. In this variation, each of the functions in the API provides flow control data in the form of a “number of calls” value to indicate how many times that function should be called in order to complete its respective operation. Thus, calibrate-position function 72 provides number ofcalls 143, calibrate-sensor function 73 provides number of calls 154, move-to-patch function 74 provides number of calls 155, and make-measurement function 75 provides number of calls 156. These values can be a total number of calls that need to be made to each function. For example, if three calls need to be made to calibrate-position function 72, then that function would provide a value of “three” each time it was called. Alternatively, each function can maintain an internal state variable and provide the application program with a number of remaining calls that must be made in order to complete an operation. For example, calibrate-position function 72 would return a value of “three” the first time it was called to perform a position calibration, a “two” the next time, and a “one” the next time. Again, because each function provides the number of times that function needs to be called, there is no need for get-device-capabilities function 71. - Various combinations of the foregoing flow control techniques illustrated in
FIGS. 4, 8 and 9 can be used for facilitating multiple calls of the function in measuringdevice DLL 38. - While the invention is described above with respect to what is currently considered its preferred embodiments, it is to be understood that the invention is not limited to that described above. To the contrary, the invention is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims.
Claims (7)
1.-90. (canceled)
91. Computer-executable process steps to provide a software application programming interface (API) comprising a common interface between an application program and plural different types of color measuring devices, and plural functions for operating the plural different types of color measuring devices, the process steps comprising the steps of:
receiving a call to a function from the application program, and
calling a measuring device driver based on the called function to operate a color measurement device;
wherein, for the color measuring device that is being operated, the API provides the application program with flow control data of the number of times that the function must be called.
92. Computer-executable process steps according to claim 91 , wherein the flow data is provided by the function which must be called a number of times in order to complete the operation.
93. Computer-executable process steps according to claim 92 , wherein the flow control data is provided in the form of a call-again value.
94. Computer-executable process steps according to claim 2, wherein the flow control data is provided in the form of a numerical value.
95. Computer-executable process steps according to claim 1, wherein the flow control data is provided by a separate function other than the function which must be called the number of times in order to complete the operation.
96. Computer-readable memory medium in which computer-executable process steps are stored, the process steps provide a software application programming interface (API) comprising a common interface between an application program and plural different types of color measuring devices, and plural functions for operating the plural different types of color measuring devices, the process steps comprising the steps of:
receiving a call to a function from the application program, and
calling a measuring device driver based on the called function to operate a color measurement device;
wherein, for the color measuring device that is being operated, the API provides the application program with flow control data of the number of times that the function must be called.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/055,204 US20050219579A1 (en) | 1999-02-02 | 2005-02-11 | Application programming interface for measuring devices |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/241,853 US6873431B1 (en) | 1999-02-02 | 1999-02-02 | Application programming interface for measuring devices |
US11/055,204 US20050219579A1 (en) | 1999-02-02 | 2005-02-11 | Application programming interface for measuring devices |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/241,853 Division US6873431B1 (en) | 1999-02-02 | 1999-02-02 | Application programming interface for measuring devices |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050219579A1 true US20050219579A1 (en) | 2005-10-06 |
Family
ID=34311989
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/241,853 Expired - Fee Related US6873431B1 (en) | 1999-02-02 | 1999-02-02 | Application programming interface for measuring devices |
US11/055,204 Abandoned US20050219579A1 (en) | 1999-02-02 | 2005-02-11 | Application programming interface for measuring devices |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/241,853 Expired - Fee Related US6873431B1 (en) | 1999-02-02 | 1999-02-02 | Application programming interface for measuring devices |
Country Status (1)
Country | Link |
---|---|
US (2) | US6873431B1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040158655A1 (en) * | 2003-02-12 | 2004-08-12 | Karl Heinz Kremer | Automatic insertion of special pages into black & white digital printing jobs |
US9628549B1 (en) * | 2002-02-15 | 2017-04-18 | F5 Networks, Inc. | Method and system for controlling and accessing content servers |
CN109740131A (en) * | 2018-12-05 | 2019-05-10 | 贵阳朗玛信息技术股份有限公司 | A kind of processing method and processing device of form data, terminal device and storage medium |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6873431B1 (en) * | 1999-02-02 | 2005-03-29 | Canon Kabushiki Kaisha | Application programming interface for measuring devices |
EP1239664B1 (en) * | 2001-03-02 | 2004-07-28 | Ricoh Company, Ltd. | Image reading apparatus, image processing apparatus, image reading method, and computer product |
JP4738892B2 (en) * | 2005-05-26 | 2011-08-03 | 株式会社リコー | Rasterized image processing method, rasterizing apparatus, and image forming apparatus |
US20090125918A1 (en) * | 2007-11-13 | 2009-05-14 | Microsoft Corporation | Shared sensing system interfaces |
EP2719157B1 (en) | 2011-06-08 | 2016-04-13 | Hewlett-Packard Indigo B.V. | System and method for position calibration of a spot of an optical sensor |
US8960845B2 (en) * | 2012-02-07 | 2015-02-24 | Hewlett-Packard Development Company, L.P. | Color analysis |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450165A (en) * | 1994-02-23 | 1995-09-12 | Xerox Corporation | System for identifying areas in pre-existing image data as test patches for print quality measurement |
US5504928A (en) * | 1991-07-23 | 1996-04-02 | International Business Machines Corporation | Method and apparatus for providing multi-command support in a rendering adapter |
US5537516A (en) * | 1994-03-15 | 1996-07-16 | Electronics For Imaging, Inc. | Method for calibrating a color printer using a scanner for color measurements |
US5550957A (en) * | 1994-12-07 | 1996-08-27 | Lexmark International, Inc. | Multiple virtual printer network interface |
US5784667A (en) * | 1996-11-22 | 1998-07-21 | Xerox Corporation | Test patch recognition for the measurement of tone reproduction curve from arbitrary customer images |
US5805777A (en) * | 1995-10-11 | 1998-09-08 | Eastman Kodak Company | Extended printer control interface |
US5819090A (en) * | 1994-03-04 | 1998-10-06 | Ast Research, Inc. | Application control module for common user access interface |
US5828781A (en) * | 1994-08-11 | 1998-10-27 | Toyo Ink Manufacturing Co., Ltd. | Color image reproducing system with image signal correction function |
US5956044A (en) * | 1993-05-07 | 1999-09-21 | Eastman Kodak Company | Imaging device to media compatibility and color appearance matching with flare, luminance, and white point comparison |
US6043894A (en) * | 1998-07-10 | 2000-03-28 | Gretamacbeth Llc | Method for maintaining uniformity among color measuring instruments |
US6256111B1 (en) * | 1998-06-19 | 2001-07-03 | International Business Machines Corporation | Calibrating digital halftoning algorithms with multiple personalities |
US6337922B2 (en) * | 1997-01-16 | 2002-01-08 | Canon Kabushiki Kaisha | Image process method, image process apparatus and storage medium |
US6404517B1 (en) * | 1998-03-31 | 2002-06-11 | Seiko Epson Corporation | Color-patch sheet registration |
US6611621B2 (en) * | 1997-10-31 | 2003-08-26 | Canon Kabushiki Kaisha | Image processing method and apparatus, and recording medium |
US6873431B1 (en) * | 1999-02-02 | 2005-03-29 | Canon Kabushiki Kaisha | Application programming interface for measuring devices |
-
1999
- 1999-02-02 US US09/241,853 patent/US6873431B1/en not_active Expired - Fee Related
-
2005
- 2005-02-11 US US11/055,204 patent/US20050219579A1/en not_active Abandoned
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504928A (en) * | 1991-07-23 | 1996-04-02 | International Business Machines Corporation | Method and apparatus for providing multi-command support in a rendering adapter |
US5956044A (en) * | 1993-05-07 | 1999-09-21 | Eastman Kodak Company | Imaging device to media compatibility and color appearance matching with flare, luminance, and white point comparison |
US5450165A (en) * | 1994-02-23 | 1995-09-12 | Xerox Corporation | System for identifying areas in pre-existing image data as test patches for print quality measurement |
US5819090A (en) * | 1994-03-04 | 1998-10-06 | Ast Research, Inc. | Application control module for common user access interface |
US5537516A (en) * | 1994-03-15 | 1996-07-16 | Electronics For Imaging, Inc. | Method for calibrating a color printer using a scanner for color measurements |
US5828781A (en) * | 1994-08-11 | 1998-10-27 | Toyo Ink Manufacturing Co., Ltd. | Color image reproducing system with image signal correction function |
US5550957A (en) * | 1994-12-07 | 1996-08-27 | Lexmark International, Inc. | Multiple virtual printer network interface |
US5805777A (en) * | 1995-10-11 | 1998-09-08 | Eastman Kodak Company | Extended printer control interface |
US5784667A (en) * | 1996-11-22 | 1998-07-21 | Xerox Corporation | Test patch recognition for the measurement of tone reproduction curve from arbitrary customer images |
US6337922B2 (en) * | 1997-01-16 | 2002-01-08 | Canon Kabushiki Kaisha | Image process method, image process apparatus and storage medium |
US6611621B2 (en) * | 1997-10-31 | 2003-08-26 | Canon Kabushiki Kaisha | Image processing method and apparatus, and recording medium |
US6404517B1 (en) * | 1998-03-31 | 2002-06-11 | Seiko Epson Corporation | Color-patch sheet registration |
US6256111B1 (en) * | 1998-06-19 | 2001-07-03 | International Business Machines Corporation | Calibrating digital halftoning algorithms with multiple personalities |
US6043894A (en) * | 1998-07-10 | 2000-03-28 | Gretamacbeth Llc | Method for maintaining uniformity among color measuring instruments |
US6873431B1 (en) * | 1999-02-02 | 2005-03-29 | Canon Kabushiki Kaisha | Application programming interface for measuring devices |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9628549B1 (en) * | 2002-02-15 | 2017-04-18 | F5 Networks, Inc. | Method and system for controlling and accessing content servers |
US20040158655A1 (en) * | 2003-02-12 | 2004-08-12 | Karl Heinz Kremer | Automatic insertion of special pages into black & white digital printing jobs |
CN109740131A (en) * | 2018-12-05 | 2019-05-10 | 贵阳朗玛信息技术股份有限公司 | A kind of processing method and processing device of form data, terminal device and storage medium |
Also Published As
Publication number | Publication date |
---|---|
US6873431B1 (en) | 2005-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050219579A1 (en) | Application programming interface for measuring devices | |
US5805777A (en) | Extended printer control interface | |
US7619773B2 (en) | Color management system using measured device data | |
EP2774042B1 (en) | Method and apparatus for controlling the color accuracy of digital printing devices | |
JP4799206B2 (en) | Print control program, print control apparatus, and print control method | |
US20010012396A1 (en) | Image process method, image process apparatus and storage medium | |
US7031550B2 (en) | Image processing method of generating conversion data for a scanner and calibration method employing the scanner | |
US9338329B2 (en) | Image processing including color conversion for a printed image | |
US20050219582A1 (en) | Image processing apparatus and method and memory medium | |
JP5153607B2 (en) | Image processing apparatus, image processing method, and image processing program | |
US20050240586A1 (en) | Data processing system for instrumental analysis, server and data processing method | |
CN104219422B (en) | Color adjustment system and color adjustment method | |
US20020149785A1 (en) | Automatic printer color correction based on characterization data of a color ink cartridge | |
JP4164214B2 (en) | Color processing apparatus and method | |
US7251358B2 (en) | Color measurement profile with embedded characterization | |
US8760693B2 (en) | Image processing apparatus, control method for image processing apparatus, and storage medium for correcting density using a reusable object | |
US6930790B1 (en) | Color rendering dictionary for testing color conversion | |
US8213051B2 (en) | Color management workflow for transitioning offset printing using custom inks to digital printing | |
JP2007205832A (en) | Image data management method for colorimetry, image data management system for colorimetry, and image data management program for colorimetry | |
US20180285034A1 (en) | Information processing system, print medium, and information processing device | |
US11431869B2 (en) | Color parameter generation apparatus, execution apparatus and non-transitory computer-readable recording medium | |
JPH11232073A (en) | Method and device for generating color monitor profile and recording medium | |
JP2002262007A (en) | Calibration device and method for scanner, storage medium, and program | |
JP2001232917A (en) | Method for calibration and information processor | |
JP2016158136A (en) | Controller, printing device and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |