The invention relates to the field of graphics applications. Particularly, the invention relates to selecting colors in a graphics application.
Computer software programs such as page layout programs, graphical illustration programs and image processing programs provide users with the ability to create, edit and display electronic documents that include color. Typically, such programs also provide users with the ability to print a document. Moreover, many programs attempt to represent documents on a display device in colors that bear some relation to the colors that will be output by a printer.
Conventional graphics illustration programs, such as photo-editing software, enable the selection of colors for drawing. However display devices are two-dimensional, while interesting color spaces have three components (RGB, Lab, HSV) or four components (CMYK). Thus, a program graphical user interface (GUI) typically displays a plot of two of the color components against each other as the remaining color components are fixed. Having to fix one or more colors during color selection provides for a cumbersome user experience.
Therefore, an interface to display each color component during color selection is desired.
In one embodiment a graphical user interface (GUI) disclosed. The GUI includes a color palette to enable color selection by providing an independent mix of each color component in a color space.
In another embodiment, a computer generated method is disclosed. The method includes receiving a color selection via a GUI, generating a mixed color corresponding to the color selection, drawing a plot around the mixed color within a color palette in the GUI and drawing arrows from the plot representing each component of a color space used to generate the mixed color.
In yet a further embodiment a computer system is disclosed, including a memory to store a printing software product, a processor, coupled to the memory, to execute the printing software product and a display device to display a graphical user interface (GUI) upon the processor executing the printing software product. The GUI includes a color palette to enable color selection by providing an independent mix of each color component in a color space.
A better understanding of the present invention can be obtained from the following detailed description in conjunction with the following drawings, in which:
A color selection GUI is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form to avoid obscuring the underlying principles of the present invention.
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
Network 106 may be a local area network (LAN) or any other network over which print requests may be submitted to a remote printer or print server. Communications link 104 may be in the form of a network adapter, docking station, or the like, and supports communications between data processing system 102 and network 106 employing a network communications protocol such as Ethernet, the AS/400 Network, or the like.
According to one embodiment, network 106 includes a print server 108 that serves print requests over network 106 received via communications link 110 between print server 108 and network 106. Print server 108 subsequently transmits the print requests via communications link 110 to one of printers 109 for printing, which are coupled to network 106 via communications links 111.
Although described as separate entities, other embodiments may include print server 108 being incorporated in one or more of the printers 109. In yet further embodiments, the print server and printer may be physically separate entities. Therefore, the data processing system network depicted in
According to one embodiment data processing system 102 implements a computer software product to enables color selection in documents on a display device in colors that may be printed at one or more of printers 109. Data processing system 102 includes a GUI 120 that facilitates the color selection. As discussed above, conventional programs implement display a plot of two of the color components against each other while holding the remaining color components fixed. For example,
According to one embodiment, a GUI 120 enables color selection by providing an independent mix of each color component in a color space. Thus a user of GUI 120 may interactively adjust the mix of displayed colors without having to fix one of the color components.
At processing block 310, an initial color selection is received upon a user interacting with GUI 120. In one embodiment, the selection is made by the user activating a cursor control device (e.g., a mouse). For example, the user may use the mouse to double click on a spot within a color palette window. Alternatively, a user may simply enter color component values into GUI 120 to select a color. At processing block 320, the computer software product calculates a mixed color corresponding to the selected (or entered) values. At processing block 330, a plot is drawn around the calculated mixed color, where the mixed color is the color in the center of the plot.
At processing block 340, arrows representing each component of a color space are drawn starting from the center of the plot. For instance four arrows are drawn for CMYK and three arrows for are drawn for RGB or Lab, etc. In one embodiment, the direction of each arrow indicates a direction for which the particular component changes, while the arrow's length indicates how rapidly that component changes.
In a further embodiment, a user may rearrange the arrows to vary the direction and amount of change of each component by dragging the arrows around. Therefore at processing block 350, a determination is made as to whether arrow movement is detected. If movement of any of the color component arrows is detected, the colors presented in the palette are changed accordingly, processing block 360. Subsequently, control is returned to processing block 330 where a plot is drawn around the newly selected mixed color.
If no arrow movement is detected, it is determined whether another color selection has been made, decision block 370. If so, control is returned to processing block 320 where a new mixed color is calculated. Otherwise, control is returned to processing block 350 where it is determined whether further arrow movement is detected.
GUI 400 also includes a color palette 405 having the currently selected color drawn in a center pixel of a color plot 410 with arrows 412, 414, 416 and 418, representing cyan, magenta, yellow and black, respectively, drawn from plot 410. As discussed above, the color components are determined by the lengths of the arrows. Thus, the color increase of a component is proportional to the length of its respective arrow.
According to one embodiment, the arrow for each component is considered as a vector. For example, the cyan vector might be C=(CX, CY). Considering a vector P=(x, y) that locates any point on the plot (where (0,0) is the center of the plot and the plot of colors ranges from −127 to +127 in X and −127 to +127 in Y), the change in the cyan component is the dot product of the two vectors: ΔC=C*P=CX*x+CY*y. Thus, adding in the starting value at (0,0) results in a value of cyan at the point (x,y). This process is subsequently repeated for all other color space components independently for all points in the plot. Since the valid range of each of C, M, Y and K is 0 to 255 the value is set to 0 if the calculation results in a value below 0. Similarly, the value is set to 255 if the calculation results in a number larger than 255.
In
Using the mouse, the arrows may be reduced or stretched in any direction.
In another embodiment, the color selection computer software product may be included in a printing software product to enable the selection of color patches to be printed at a printer 109. Traditionally, color patches are printed on numerous pages where the patches are arranged as cyan versus magenta, or magenta versus yellow. The present color selection mechanism enables color patches that may vary.
In one embodiment, the value of the corresponding color component is the same for every patch if one or two of the arrows are reduced to zero length.
Main memory 625 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 610. Computer system 600 also may include a read only memory (ROM) and or other static storage device 626 coupled to bus 620 for storing static information and instructions used by processor 610. A data storage device 625 such as a magnetic disk or optical disc and its corresponding drive may also be coupled to computer system 600 for storing information and instructions.
Computer system 600 can also be coupled to a second I/O bus 650 via an I/O interface 630. A plurality of I/O devices may be coupled to I/O bus 650, including a display device 624, an input device (e.g., an alphanumeric input device 623 and or a cursor control device 622). The communication device 621 is for accessing other computers (servers or clients). The communication device 621 may comprise a modem, a network interface card, or other well-known interface device, such as those used for coupling to Ethernet, token ring, or other types of networks.
Embodiments of the invention may include various steps as set forth above. The steps may be embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor to perform certain steps. Alternatively, these steps may be performed by specific hardware components that contain hardwired logic for performing the steps, or by any combination of programmed computer components and custom hardware components.
Elements of the present invention may also be provided as a machine-readable medium for storing the machine-executable instructions. The machine-readable medium may include, but is not limited to, floppy diskettes, optical disks, CD-ROMs, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, propagation media or other type of media/machine-readable medium suitable for storing electronic instructions. For example, the present invention may be downloaded as a computer program which may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., a modem or network connection).
Whereas many alterations and modifications of the present invention will no doubt become apparent to a person of ordinary skill in the art after having read the foregoing description, it is to be understood that any particular embodiment shown and described by way of illustration is in no way intended to be considered limiting. Therefore, references to details of various embodiments are not intended to limit the scope of the claims, which in themselves recite only those features regarded as essential to the invention.