WO1992020024A1 - Color selection method and apparatus - Google Patents
Color selection method and apparatus Download PDFInfo
- Publication number
- WO1992020024A1 WO1992020024A1 PCT/US1992/003677 US9203677W WO9220024A1 WO 1992020024 A1 WO1992020024 A1 WO 1992020024A1 US 9203677 W US9203677 W US 9203677W WO 9220024 A1 WO9220024 A1 WO 9220024A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- color
- colors
- palette
- displaying
- display device
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0489—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using dedicated keyboard keys or combinations thereof
- G06F3/04897—Special input arrangements or commands for improving display capability
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
Definitions
- the present invention relates to a method and apparatus for allowing the user of a color display device to select colors to 5 be displayed on the color display device.
- Color display devices may be thought of as displaying an 0 array of picture elements, commonly termed pixels.
- pixels may display from 200 rows of 350 pixels .eac , to 1600 rows of 2000 pixels each, or more.
- Each pixel may display one of a plurality of different colors.
- a pixel displays one of two 5 colors, either black or white.
- a grayscale display device a pixel may display one of a plurality of shades of gray (e.g. 16 .shades of gray) varying from black to white.
- a pixel may display one of from 16 colors to over 16 million colors, depending upon the complexity of the display :0 device.
- color display device is for generating color graphic material, such as color brochures.
- the color display device may be 5 used to display a picture of what the graphic material will look like when it is completed. In order to generate such material, a user must be able to select a particular color for an area of the scree .
- a color display device increases the efficiency with which the user can locate such information on the display device. For example, if a color display device is used in monitoring the operation of a chemical processing plant, when out-of-range parameters are displayed in a different color than the other parameters, it is easier for an operator to quickly find the out-of-range parameter and take corrective action. However, different operators may find different colors more efficient for them.
- One method of allowing a user to select a color is to display a fixed number of predetermined colors, termed a palette, on the display device and allow the user to pick one of them.
- This method is commonly termed a color picker.
- This method is simple to implement and is easy for users to understand and operate.
- this method will not allow a user the flexibility to select from all the available colors.
- an alternative to the color picker is to provide a list of predetermined colors to the user. This method is commonly termed a color browser. A palette of a subset of the colors in the list of colors may be displayed on the color 3
- the user is allowed to display different subsets of the list of colors on the palette in order to view all the colors in the list.
- the user may select a color in the currently displayed palette in the same manner as in the color picker.
- each color in the list of colors is assigned a unique name (e.g. "Steel Blue")
- the color and its name may be displayed in the palette, and the user may select from among the list of named colors by typing the name of the desired color, whether the desired color is currently displayed in the palette or not.
- Another method for selecting a color is to allow the user to mix different proportions of component parts of the color. This method is commonly termed a color mixer.
- a desired color is represented as a mixture, in varying propor- tions, of the primary colors: red, green and blue (RGB) .
- RGB red, green and blue
- a desired color is represented as a mixture in varying proportions of the hue, lightness and saturation (HLS) .
- One method for allowing the user to specify the proportion of each of the component parts is to allow the user to type in a number representing the proportion for each of the component parts.
- Another method includes displaying sliders on the screen for each of the component parts and dis- playing the color currently represented by the sliders.
- Each slider includes a pointer which controls the proportion of the corresponding component and provides an indication of the current proportion of that component.
- One end of the slider represents 0% of that component and the other end represents 100% of that component. The user is allowed to move the sliders to the positions which produce the desired color.
- This method allows the user to select any one of the colors which the color display device is capable of producing regardless of how many.
- the user must be familiar with colorime- try. For example, if a user does not know that yellow is a combination of red and green, that user may be unable to obtain a desired shade of yellow in an RGB color mixer.
- Another color selection method involves a combination of a color picker and a color mixer.
- a palette of preselected colors is supplemented with a second palette which may contain colors selected using a color mixer. Selection of one of the colors from either the fixed palette or the changeable palette is performed in a manner similar to the color picker.
- Another color selection method involves interpolation between two user selected colors.
- one color is produced by combining, in varying proportions, two starting colors.
- One way of implementing this method is to display a slider on the screen, and the color currently represented by the slider.
- One end of the slider represents one of the starting colors, and the other end of the slider represents the other one of the starting colors.
- the position of the pointer on the slider represents the proportion of each of the starting colors in the color being generated.
- the slider For example, if the first color is red and the second color is green, then one end of the slider represents 100% of the first color and 0% of the second color (i.e. red) . The other end of the slider represents 0% of the first color and 100% of the S second color (i.e. green) . The middle of the slider represents a color containing 50% of the first color and 50% of the second color (i.e. yellow) .
- This method is particularly useful for selecting a brightness level in a grayscale display device, where
- one end of the slider represents white and the other end repre ⁇ sents black, or for implementing a grayscale display on a color display device.
- Any of the above color selection methods may also be used to implement a grayscale display on a color display device.
- a user be able to choose from among a plurality of methods for selecting a color for an area on a color 5 display device. It is also desirable that at least one such color selection method allow a user to easily select a color from among any of the colors which the color display device is capable of producing, without requiring any knowledge of colorimetry and without requiring the potential display of a palette containing 0 all such colors (which may be as many as 16 million) .
- a 5 method for selecting a color for a desired area on a color display device includes the following steps. 1) Choosing one of a plurality of color selectors. 2) Selecting a color using the chosen color selector. 3) Displaying the currently selected color. 4) Repeating steps 1) , 2) and 3) until the selected color 0 is acceptable. Once an acceptable color has been selected, it is displayed in the desired area of the color display device.
- one of the color selectors operates according to the following steps. 1) Displaying a fixed palette of preselected colors on the color display device. 2) Selecting any two of the preselec - ed colors to be endpoint colors of a color interpolator. 3)
- an option is provided for increasing or decreasing the brightness of the colors in the interpolated palette. This is the equivalent of mixing white or black, respectively, with the colors in the interpolated palette.
- an option is provided for adding warmth or coolness to the colors in the interpolated palette. Adding warmth to the colors is equiv ⁇ alent to mixing red with the colors in the interpolated palette. Adding coolness to the colors is equivalent to mixing blue with the colors in the interpolated palette.
- a scratchpad for containing a plurality of colors. Either the currently selected color, or any of the colors in either the fixed or interpolated palettes, may be transferred to the scratchpad. Any of the colors in the scratchpad may be used as either of the two endpoint colors in the interpolator, or may be selected by the user as the desired color.
- a color mixer type color selector is also provided for mixing a 1
- the mixed color may be selected by the user as the desired color, or transferred to the scratchpad.
- a color browser type color selector is also provided for select ⁇ ing one of predetermined list of named colors.
- the mixed color may be selected by the user as the desired color, or transferred to the scratchpad.
- Color selection in accordance with the present invention allows a user to choose one of a plurality of color selectors to use.
- at least one color selector is a color-picker- type color selector, which is an easier color selector to use.
- FIG. 1 is a block diagram of a computer system embodying the present invention
- Figure 2 is a diagram of a screen display of a color selec ⁇ tor in accordance with the present invention
- Figure 3 is a diagram of a screen display of a color picker- interpolator model in accordance with the present invention.
- Figure 4 is a diagram of a screen display of an HLS color mixer model in accordance with the present invention
- Figure 5 is a diagram of a screen display of an RGB color mixer model in accordance with the present invention
- Figure 6 is a diagram of a screen display of a color browser model in accordance with the present invention.
- Figure 7 is a diagram of a screen display of a grayscale selector model in accordance with the present invention.
- Figure 8 is a diagram of a screen display of a scratch pad in accordance with the present invention.
- Figure 1 is a block diagram of a computer system in which the present invention is embodied.
- wide lines represent multibit digital signal computer data bus connections.
- a central processing unit (CPU) 2 is coupled to a computer data bus 3.
- the computer data bus 3 is coupled to a memory 4, an input/output processor 5 and a display processor 6.
- the input/output processor 5 is coupled to a keyboard 7 and a mouse 8.
- the display processor 6 is coupled to a video display monitor 9.
- the video display monitor 9 is capable of displaying color images
- the display proces ⁇ sor 6 is capable of supplying control signals to the video display monitor 9 to enable it to display color images.
- the combination of a preferred display processor 6 and a preferred video display monitor 9 forms a color display device.
- Other devices may be coupled to the computer data bus 3, including, for example, mass storage devices, such as either tape drives or disk storage devices, through associated control processors.
- other devices may be coupled to the input/output processor 5, for example, a plurality of comput ⁇ er terminals (in the case of a multiuser computer system) to provide access to the computer system by large numbers of users.
- CPU 2 executes instructions stored in memory 4 in a known manner.
- the instructions executed by CPU 2 may cause the CPU 2 to access the keyboard 7 and/or the mouse 8 through the input/output processor 5 in order to receive information from the ⁇
- instructions executed by CPU 2 may cause the CPU 2 to send data to the video display monitor 9, through the display processor 6, causing video display monitor 9 to display an image in order to transmit information to the user of the computer system.
- different portions of the display may be represented by different colors.
- the CPU controls the interaction of information displayed on the video display monitor 9, with information received from the keyboard 7 and/or the mouse 8, to enable the user to select a color to be displayed in a desired area of the image displayed on the video display monitor 9.
- the interaction of information is described in more detail below.
- the color selection method and apparatus is assumed to be implemented on a computer system which runs the DECwindows (trademark of Digital Equipment Corpo ⁇ ration) operating environment. Such a computer system interacts with a color display device via the known display protocol known as X-Windows.
- the preferred embodiment also is generated in agreement with the Motif (trademark of Open Software Foundation) User Interface Style Guide. This provides a set of tools for designing a user interface which allows operation of the computer system color selection method by means of either a mouse or the keyboard.
- the screen layouts and method steps may also be implemented on computer systems which run other operating environments and which include other display protocols and other user interface styles.
- a user of the computer system would run an application program, such as a color illustration program or a chemical processing plant control program, discussed above.
- the application program would require or permit the user to select a color for a specific area on the screen display of the application program.
- the applica ⁇ tion program would invoke the color selection program according to the present invention to make, the color selection.
- the color representative information is returned to the invoking application program in X-windows RGB coordinates, regardless of the color selector type (e.g. picker, HLS, RGB, browser, etc.) used to select the desired color.
- the percentage of each of the par ⁇ ticular component colors (red, green and blue) is represented by a 16 bit unsigned number in which 0% is represented by the value 0 and 100% is represented by the value 65,535.
- three 16 bit unsigned numbers, representing the percentage of red, green and blue, respectively, in the selected color are returned to the invoking program.
- Figure 2 is a diagram of a screen display of a color selec ⁇ tor in accordance with the present invention.
- the screen display of Figure 2 is displayed when an application program running on the computer system invokes the color selector program to query the user for a new color for an area on the color display device.
- the invocation of the color selection screen display of Figure 2 may be as a "pop-up" window, over the screen display of the (i
- invoking program may be a full screen display.
- color selection screen of Figure 2 is invoked as a window over a screen display of an invoking application program.
- widgets In the X-windows protocol, screen display entities are termed widgets. These widgets have several forms (discussed below) and may be placed anywhere on the screen. Each widget may invoke other widgets, termed subwidgets, and so forth, in a hierarchical fashion. In addition, the user may interact in several ways with certain widgets. A user who uses the Motif Style Guide tool set may easily manipulate widgets and the processes which execute in response to user inputs. There are several types of widgets defined in the Motif X-windows protocol and one skilled in the art of X-windows screen programming will understand the concept of widgets and subwidgets and how to implement different instances of widgets of the desired type and how to generate the program code necessary to implement the functions described below.
- widgets interact with the user through the use of a cursor.
- the cursor is an indicator displayed, in a known manner, on the color display device to indicate a location on the screen.
- the user may manipulate the position of the cursor on the screen in a known manner using either a keyboard, or a point ⁇ ing device, such as a trackball or a mouse.
- the user may manipu ⁇ late the cursor into a desired location on the screen and then, by pressing either a particular key on the keyboard, or by pressing a button on the pointing device, cause some action to be taken.
- buttons or “selection block”
- selection block a relatively small portion of the screen display, sometimes termed a “button” or “selection block”, may be I
- buttons designed to act as a pushbutton would. I.e. a specific action would be invoked when that button is activated. In order to activate this button, the user would manipulate the cursor to lie within the area representing the pushbutton, using either the keyboard or the mouse. The button is then activated by pressing either the RETURN key on the keyboard, or by pressing a button on the mouse.
- activate is used below in relation to the screen display, the above actions are meant. Other examples of such control will be described in more detail below.
- the color selector takes control, and displays an outline 10 which defines the color selection window.
- the color selection window 10 occupies a portion of the color display device. The remaining portion (not shown) displays the screen display of the applica ⁇ tion program which invoked the color selector.
- This color selection window 10 is a subclass of the Motif XmBulletinBoard widget class. Several components (subwidgets) make up the color selection window 10. First, a title 20, which in Figure 2, is "COLOR SELECTOR", is displayed at the top center of the color selection window 10. The title 20 is an instance of an XmLabel widget and the text of the title may be changed under program control or the title 20 may not be displayed at all.
- a color display block 30 is displayed below the title 20.
- the color display block 30 is an instance of an XmBul ⁇ letinBoard widget.
- the color display block 30 consists of two blocks of color displayed side-by-side.
- the left side block 34 displays the original color of the area for which a new color is being selected.
- the right side block 36 displays the currently selected color for the area.
- Both the left side block 34 and the right side block 36 are instances of XmDrawnButton widgets. The operation of the left side block 34 and the right side block 36 will be described in more detail below.
- These two color blocks 34 and 36 are surrounded by a rectangular area 32 of a neutral gray.
- the left side block 34 and right side block 36 are displayed as 80 pixel by 80 pixel squares, and the gray border 32 around the two blocks is 20 pixels wide. These sizes, and the color of the surrounding rectangular area, may be changed by the invoking program.
- the color display block 30 may optionally include a title, which is not shown in Figure 2.
- a color model option menu 40 is displayed below the color display block 30.
- the color model option menu 40 consists of: a label 42, which is "COLOR MODEL:" in Figure 2 and a option selector block 43.
- the label 42 is an instance of an XmLabel widget.
- the option selector block 43 is an instance of an
- XmRowColumn widget and includes a title 44, which indicates which color selector is currently being used, and which is "PICKER" in Figure 2; and a menu selection block 46.
- the text for the label for the color model option menu 42, and the text for the color selector title 44 may be changed by the application program.
- the display area 50 for the color model chosen by the user is displayed below the color model option block 40. This is indicated by a dashed rectangular block 50 in Figure 2.
- the information displayed in the color model display area 50 will be different for each of the different color selectors. Specific displays for different color model selectors and will be de ⁇ scribed in more detail below.
- a scratch pad selector 60 is displayed centered below the color model display 50.
- This scratch pad selector 60 is an instance of an XmPushButton widget, and includes the label "SCRATCH PAD " inside the selector. (The ellipses indicate ⁇ 4
- the label within the scratch pad selector button 60 may be changed by the application program.
- control selectors 70 are displayed below the scratch pad selector 60. These are instances of XmPushButton widgets. From left to right they are labeled: the "OK” push button 71; the “APPLY” push button 73, the “RESET” push button 75, the cancel, "CANCEL”, push button 77 and the “HELP” push button 79.
- the color selector is invoked, as described above, by an application program which is querying the user for a new color for an area on the color display device.
- the color selection window 10 is displayed as a window over the display of the invoking applica ⁇ tion program.
- the color of both the left side block 34 and the right side block 36 is set to the original color of the area for which a new color is being select ⁇ ed.
- the application program may set the color in the right side block 36 tb any other color, if desired.
- the user may then select a desired color selector model, such as picker, mixer or browser.
- a desired color selector model such as picker, mixer or browser.
- the user may make a selection by activating the menu selection block 46 of the color model option menu 40.
- Table I lists the available color selector models in a preferred embodiment. Other color selector models may be made available to the user in a color selector model window in accor ⁇ dance with the present invention.
- this menu (not shown) may consist of a pull ⁇ down menu which is an instance of an XmRowColumn widget.
- This pulldown menu may consist of a vertical stack of XmPushButton widgets, each representing a different color selector model. The resulting pulldown menu resembles Table I above.
- the user may then activate the desired entry of the listed color selector models, thus, causing the display for the selected color selector model to be placed in the color model display area 50 and that color selector to become active.
- the structure and operation of the different color selector models, themselves, will be described in more detail below.
- a user uses the selected color selector model to generate the desired color, which is always displayed in the right side block 36 in the color display block 30.
- the user may wish to save a color in a scratch pad of colors for use later.
- the user may wish to retrieve a color previously saved in the scratch pad for use in the currently selected color selector model or as the desired- color.
- the user activates the scratch pad selector 60. This causes a scratchpad window to appear, allowing the user to store the color wished to be saved, or retrieve the color previously saved.
- the scratchpad is accessible f om all of the color selection models. The screen layout and operation of the scratchpad will be described in more detail below.
- control selectors 70 The user may also activate one of the control selectors 70.
- the invoking application program When any of the control selectors are activated, the invoking application program is notified and it activates an appropriate action in response.
- control selector 71 labeled "OK"
- the invoking application program retrieves from the color selector the currently selected color, which is displayed in the right side block 36 of the color display block 30, and removes the color selection window 10 from the color display device. The invoking program then places the retrieved color into the desired area of its screen display and retains control and continues its operation.
- control selector 73 labeled "APPLY"
- the invoking program retrieves from the color selector the currently selected color while allowing the color selection window 10 to remain on the screen.
- the invoking program then displays the color returned by the color selector into the desired area of its screen display. However, in this case, control is returned to n
- control selector 77 labeled "CANCEL”
- the invoking application program removes the color selection window 10 from the color display device without implementing any changes and retains control, continuing its operation.
- control selector 75 labeled "RESET”
- the invoking application program causes the color selector to change the display of the color selection window 10 (including the color model display area 50) back to how it appeared when originally invoked.
- control selector 79 labeled "HELP”
- it causes another window to appear on the color display device in which help on using the color selection window 10 appears.
- Figure 3 illustrates a screen display 100 of a color picker model widget in accordance with the present invention.
- the color picker model widget 100 of Figure 3 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
- the color picker model widget 100 is an instance of an
- XmBulletinBoard widget It consists of several subwidgets as described below.
- a palette option menu 110 is displayed at the top center.
- the palette option menu 110 is an instance of an XmRowColumn widget.
- the palette option menu 110 consists of a label 112, which in Figure 3 is "PALETTE OPTION MENU".
- the label 112 is an instance of an XmLabel widget.
- the text of the palette option menu label 112 may be changed by the application program.
- the palette option menu 110 also includes a selector button 114.
- a first palette 120 of predetermined colors is displayed in ten squares, termed tiles, below the palette option menu 110.
- the predetermined color palette 120 is an instance of a XmDrawnButton widget.
- the tiles are 30 pixels by 30 pixels, but their size may be varied by the invoking application program.
- a second palette 130- of ten tiles, initially white, is displayed below the palette of predetermined colors 120.
- This palette of ten tiles is part of a color interpolator, whose operation will be described in detail below.
- the interpolator palette 130 is also an instance of a XmDrawnButton widget.
- the tiles of interpolator palette 130 also, are 30 pixels by 30 pixels, and may also be changed by the invoking application program.
- a second palette label 132 which is "INTERPOLATOR" in Figure 3, is centered above interpolator palette 130.
- the second palette label 132 is an instance of an X Label widget.
- the text of label 132 may be changed by the invoking application, or the label may be left undisplayed.
- the leftmost tile 134 and the rightmost tile 136 are designated end point tiles. The number of tiles in both the predetermined color palette 120 and the interpolator palette 130 may be changed by the invoking application program.
- two blocks, 140L and 140R are displayed immediately above the two end point tiles 134 and 136, respectively, of the interpolator palette 130.
- These blocks are instances of XmPush ⁇ Button widgets.
- these blocks also, are 30 pixels by 30 pixels, and the size may be changed by the invoking application program.
- These blocks may have icons of paint buckets pouring out paint displayed in them, and are referred to below as paintcan tiles.
- a first set 150 of two arrow buttons is displayed to the left of the interpolator palette 130.
- These arrow buttons are instances of XmArrowButton widgets.
- a first arrow button 152 is pointing upward and a second arrow button 154 is pointing downward.
- Each arrow has a label associated with it.
- the labels are respective instances of XmLabel widgets.
- Arrow button 152 has a label 156 associated with it, which is "LIGHTER” in Figure 3; and arrow button 154 has a label 158 associated with it, which is "DARKER” in Figure 3.
- the text of the labels may be changed by the invoking application program.
- a second set 160 of two arrow buttons is displayed to the right of the interpolator palette 130.
- These arrow buttons are also respective instances of XmArrowButton widgets.
- a first arrow button 162 is pointing upward and a second arrow button 164 is pointing downward.
- Each arrow has a label associated with it.
- the labels are instances of XmLabel widgets.
- Arrow button 162 has a label 166 associated with it, which is "WARMER" in Figure 3; and arrow button 164 has a label 168 associated with it, which is "COOLER” in Figure 3.
- the text of the labels may be changed by the invoking application program.
- the combination of the interpolator palette 130; arrow buttons 152, 154, 162 and 164; and paintcan tiles 140L and 140R form a color interpolator whose operation will be described in more detail below.
- buttons 170 are centered below the interpolator palette 130. These are respective instances of XmPushButton widgets.
- the leftmost button 172 has the label "SMEAR", and the rightmost button 174 has the label "UNDO" displayed in it.
- the text in these buttons may be changed by the invoking application program.
- a label, not shown in Figure 3, for the color picker model widget may be displayed at the top center of the display area 100. This label would be an instance of an XmLabel widget, and the actual label would be under the control of the 5 invoking program.
- the screen display illustrated in Figure 3 is inserted into the color model display area 50.
- the label "PICKER”, which is associated with the picker type color selector model illustra ⁇ ted in Figure 3, is displayed as the color model option menu 5 title 44. This indicates that the color selector model currently active in the color model display area 50 is the picker model.
- a palette of predetermined colors is 0 displayed in the tiles 120. These colors may, for example, be a spectrum of fully saturated colors (e.g. white, red, orange, yellow, green, blue, blue-violet, violet, brown and black) .
- the interpolator palette 130 is initially all white tiles.
- the user may select any of the colors in the predetermined color palette 120 to be the current color by manipulating the cursor to the tile in the predetermined color palette 120, and activating that tile.
- the newly selected color is then displayed in the right side block 36 of color display block 30 (of Figure 0 2) . If the "OK" control selector 71 or the "APPLY" control selector 73 (of Figure 2) is activated, the selected color is supplied to the invoking application program, which will then change the color of the desired area on its color display to that color (as described above) .
- the user may access a list of available palettes by activating the selector block 114 in the palette option menu 110.
- Table II lists exemplary palettes of preselected colors which may be made available in the preselected color palette 120.
- this menu (not shown) may consist of a pulldown menu which is an instance of an XmRowColumn widget. This pulldown menu may consist of a vertical stack of XmPushButton widgets, each representing a different preselected color palette. The resulting pulldown menu resembles Table II above.
- the user may then select one of the entries in the table by activating that entry.
- the colors in the selected palette are then displayed in the color palette 120 and the user may select one of them as de- scribed above.
- the user may use the color interpolator to create the desired color.
- the user supplies a first color to one of the two endpoint tiles 134 and 136 and a second color to the other one of the two endpoint tiles 134 and 136.
- the details of supplying a color to the endpoint tiles will be described in more detail below.
- An interpolation of the colors in the endpoint tiles may be performed by activating the SMEAR control button 172.
- the result of the interpolation is a range of colors ranging from the pure first color in one endpoint tile to the pure second color in the other endpoint tile with colors gradually changing from the first to the second color in between, similar to the way an artist's palette might look if a smear of color is made from one color paint into another.
- the first color is green and the second color is red
- a range of colors is produced by the smear operation ranging from pure green in its endpoint tile through a dark reddish-olive in the center to pure red in its endpoint tile.
- a simultaneous linear interpolation of the respective red, green and blue components is performed between the two endpoint colors.
- the difference between the red component values of the two endpoint tiles is divided by nine (one less than the number of tiles) . This results in an incremental value, which when added to the red component value of the color of the endpoint tile generates the red component value for the second tile, and which when added to red component value of the second tile results in the red component value for the third tile, and so forth.
- Three such incremental values, one each for the red, green and blue components, are generated by similar division and used to compute 2
- the last performed smear operation may be undone, returning the interpolator to the state is was in prior to that smear operation, by activating the UNDO control button 174.
- the operation of supplying a color to an endpoint tile may be performed in either of two ways.
- the currently selected color displayed in the right side block 36 of the color display block 30 (of Figure 2) , may be placed in an endpoint tile by activating the paint ⁇ an block above the appropriate endpoint tile.
- the cursor may be manipulated onto a desired color in any tile in: the predetermined color palette
- the cursor will be displayed in the form of an eyedropper.
- the mouse may then manipulate the cursor (in eyedropper form) to the desired endpoint tile (a process known as dragging) .
- the button on the mouse is released, the color in which the button on the mouse was initially pressed will be placed in the endpoint tile.
- the color values of all the tiles in the interpolator palette 130 may be manipulated at the same time by the use of the two sets of arrow buttons 150 and 160.
- Arrow buttons 152 and 154 adjust the lightness or darkness of the colors in the interpola- tor palette 130.
- arrow button 152 When arrow button 152 is activated, all the tiles in the interpolator palette 130 are lightened. This is similar to adding a little white to all the colors.
- arrow button 154 is activated, all the tiles in the interpolator palette 130 are darkened. This is similar to adding a little black to all the colors.
- the RGB component values of all the colors in the interpolator palette 130 are converted in a known manner to HLS component values. Then a predetermined incremental value is added to (when the LIGHTER arrow button is activated) or sub ⁇ tracted from (when the DARKER arrow button is activated) the lightness (L) component. Finally the resulting HLS components are converted back into RGB components, in a known manner, and the colors representing the new component values are displayed in the corresponding tiles of the interpolator palette 130.
- Arrow buttons 162 and 164 adjust the warmth or coolness of all the colors in the interpolator palette 130 at the same time.
- arrow button 162 When arrow button 162 is activated, all the tiles in the interpo ⁇ lator palette 130 are warmed. This is similar to adding a little red to all the colors.
- arrow button 154 When arrow button 154 is activated, all the tiles in the interpolator palette 130 are cooled. This is similar to adding a little blue to all the colors.
- That color then becomes the selected color and the color of the right side block 36 of the color display block 30 (of Figure 2) is changed to that color. As described above, that color may then be displayed in the invoking application program by activating the OK, 71, or APPLY, 73, control selectors .
- any of the tiles in the interpo ⁇ lator palette 130 may be dragged to one of the endpoint tiles of the interpolator palette 130 and further smeared to find the desired color. In this manner any color which the color display device is capable of displaying may be generated in the interpo- lator palette 130, and ultimately selected by the user.
- a user can select from any of the colors which the color display device is capable of displaying without requiring a knowledge of color- imetry.
- Figure 4 is a screen display of an HLS color mixer model widget 200 in accordance with the present invention.
- Figure 4 is similar to the prior art HLS color picker models, described above, because it includes three sliders for selecting the hue, saturation and lightness components of a desired color.
- the color picker model widget 200 of Figure 4 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
- the HLS color mixer model widget 200 is an instance of an XmBulletinBoard widget . It consists of several subwidgets as described below.
- a hue slider 210 is displayed across the top portion of the color selector display area 50.
- the hue slider 210 is an instance of an XmScale widget.
- a hue label 212 which in Figure 4 is "HUE:”, is displayed to the left of the hue slider 210.
- Hue label 212 is an instance of an XmLabel widget.
- the hue slider 210 further includes a pointer 214 which indicates the relative value of the hue component of the current color (displayed in the right side block 36 of the color display block 30 of Figure 2) .
- a lightness slider 220 is displayed across the middle section of the color selector display area 50.
- the lightness slider 220 is an instance of an XmScale widget.
- a lightness label 222 which in Figure 4 is "LIGHT ⁇ NESS:” is displayed to the left of the lightness slider 220.
- Lightness label 224 is an instance of an XmLabel widget.
- the lightness slider 220 further includes a pointer 224, which indicates the relative value of the lightness component of the current color.
- a label 226, which in Figure 4 is "BLACK”, and another label 228, which is Figure 4 is "WHITE”, are placed above the left and right ends, respectively, of the lightness slider 220.
- Labels 226 and 228 are respective instances of XmLabel widgets.
- a saturation slider 230 is displayed across the bottom portion of the color selector display area 50.
- the saturation slider 230 is an instance of an XmScale widget.
- a saturation label 232 which in Figure 4 is "SATURA ⁇ TION:” is displayed to the left of the saturation slider 230.
- Saturation label is an instance of an XmLabel widget.
- the saturation slider 230 further includes a pointer 234, which indicates the relative value of the saturation component of the current color.
- a label 236, which in Figure 4 is "GRAY”, and another label 238, which in Figure 4 is "FULL”, are placed above 1-1
- Labels 236 and 238 are respective instances of XmLabel widgets.
- HLS HLS mixer type color selector model illustra ⁇ ted in Figure 4
- a color is represented by the three components: hue, lightness, and saturation.
- Hue is the color
- lightness is the intensity of the color, that is the 20 amount of the color
- saturation describes the purity of the color, or how much the color is diluted by white.
- the hue component (H) may be thought of as representing an angle in a color wheel. On the color wheel, red appears at 0
- both the left and right side of slider 210 represents red (0 degrees) . As the pointer 214 of slider 210 moves from the left side to the right
- the lightness component (L) represents the lightness or intensity of the color and has a value between 0%, representing black, and 100% representing white.
- the pointer 224 of lightness slider 220 progresses from 0% ("BLACK”) at the left side of slider 220, to 100% (“WHITE”) at the right side of slider 220.
- the saturation component (S) represents the purity of the color and has a value between 0%, representing a shade of gray, and 100%, representing pure color.
- the pointer 234 of saturation slider 230 progresses from 0% (“GRAY”) at the left side of slider 230 to 100% (“WHITE”) at the right side.
- GRAY 0%
- WHITE 100%
- the pointers 214, 224 and 234 are at the positions on their respective sliders representing the HLS component values of the current color, and the hue slider 210 is the active slider.
- the user may modify the color by manipulating the cursor onto the pointer of a desired slider, and then moving the pointer in a desired direction. As the slider is moved, the current color is changed to have the component value represented by the current positions of the pointers of the three sliders.
- Sliders 210, 220 and 230 may be manipulated in one of the following ways. Using the keyboard, the desired slider is first made the active slider. As described above, when first invoked, the hue slider 210 is the active slider. When the user presses the TAB key, the lightness slider 220 is made the active slider. If the TAB key is pressed again, the saturation slider 230 is made the active slider. Repeated presses of the TAB key then make the following (all illustrated in Figure 2) active in this order: scratch pad selector 60, the OK control selector 71, the APPLY control selector 73, the RESET control selector 75, the CANCEL control selector 77 and the HELP control selector 79. If the TAB key is then pressed once again, then the hue slider 210 is made the active once again. Repeated presses of the TAB key cycles through the sliders in the above sequence.
- the pointer When the user has made the desired slider active, then the pointer may be moved to the right by pressing the right-arrow key " ⁇ ", or may be moved to the left by pressing the left-arrow key " ⁇ —”. As the pointer of the active slider is moved, the current color (displayed in the right side block 36 of the color display block 30 of Figure 2) is changed to that represented by the position of the pointers on the three sliders 210, 220 and 230 of Figure . The selection of a slider, and moving of the pointer of that slider is repeated until the desired color is displayed in the color display block 30.
- a desired slider is made the active slider by manipulating the cursor onto the pointer of that slider and pressing and holding a button on the mouse.
- the slider is then moved to the right by moving the mouse to the right, and is moved to the left by moving the mouse to the left, while holding the mouse button down; i.e. by dragging the pointer to the desired position.
- the current color, displayed in the color display block 30 is changed to represent by the position of the pointers of the sliders 210, 220 and 230.
- the current color whether selected by the pointing device, or the keyboard, or both, may be displayed in the invoking application program by activating the OK control selector 71 or the APPLY control selector 73 (of Figure 2) , as described above.
- the values represented by the respec ⁇ tive scale widgets which form the hue slider 210, the lightness slider 220 and the saturation slider 230 are converted to corre ⁇ sponding values of the hue, lightness and saturation components, respectively.
- the resulting HLS components are then converted into corresponding RGB components.
- These RGB components are supplied to the XmBulletinBoard widget forming the color display block 30 (of Figure 2) to allow the current color, represented by those RGB components, to be displayed in the right side block 36.
- Figure 5 is a screen display of an RGB color mixer model widget 300 in accordance with the present invention.
- Figure 5 is similar to the prior art RGB color picker models, described above, because it includes three sliders for selecting the red, green and blue components of a desired color.
- the color picker model widget 300 of Figure 5 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
- the RGB color mixer model widget 300 is an instance of an XmBulletinBoard widget. It consists of several subwidgets as described below.
- a red component slider 310 is displayed across the top portion of the color selector display area 50.
- the red component slider 310 is an instance of an XmScale widget.
- a red component label 312, which in Figure 5 is "RED” is displayed above the red component slider 310.
- Red component label 312 is an instance of an XmLabel widget.
- the red component slider 310 further includes a pointer 314 which indi ⁇ cates the relative value of the red component of the current color (displayed in the right side block 36 of the color display block 30 of Figure 2) .
- a red component text box 316 is displayed to the right of the red component slider 310.
- the red component text box 316 is an instance of an XmText widget.
- the current value of the red component is displayed in the red component text box 316, which in Figure 5 is "11846". - •
- a green component slider 320 is displayed across the middle section of the color selector display area 50.
- the green component slider 320 is an instance of an XmScale widget.
- a green component label 322, which in Figure 5 is "GREEN" is displayed above the green component slider 320.
- Green component label 324 is an instance of an XmLabel widget.
- the green component slider 320 further includes a pointer 324, which indicates the relative value of the green component of the current color.
- a green component text box 326 is displayed to the right of the green component slider 320.
- the green component text box 326 is an instance of an X Text widget.
- the current value of the green component is displayed in the green component text box 326, which in Figure 5 is "23957".
- a blue component slider 330 is displayed across the bottom portion of the color selector display area 50.
- the blue component slider 330 is an instance of an XmScale widget.
- a blue component label 332, which in Figure 5 is ""BLUE” is displayed above the blue component slider 330.
- Blue component label 332 is an instance of an XmLabel widget.
- the blue component slider 330 further includes a pointer 334, which indicates the relative value of the blue component of the current color.
- a blue component text box 336 is displayed to the right of the blue component slider 330.
- the red component text box 336 is an instance of an XmText widget.
- the current value of the blue component is displayed in the blue component text box 336, which in Figure 5 is "63190".
- the screen display illustrated in Figure 5 is inserted into the color model display area 50.
- the label "RGB”, which is associated with the picker type color selector model illustrated in Figure 4 is displayed as the color model option menu title 44. This indicates that the color selector model currently active in the color model display area 50 is the RGB color mixer model.
- Red component slider 310 represents the proportion of the color red in the current color. As the pointer 314 of slider 310 moves from the left side to the right side, the proportion of the red component changes smoothly from 0% to 100% at the right side.
- the green and blue component sliders 320 and 330 operate in a similar manner with respect to the proportion of green and blue, respectively, in the current color.
- a slider label 304 which in Figure 5 is "PERCENTAGE" is displayed above the three color component sliders 310, 320 and 330.
- Slider label 304 is an instance of an XmLabel widget.
- colors are represented by their X-Windows RGB coordinates, three sixteen bit unsigned integers, in which a value of 0 represents 0% of that component and 65,535 represents 100% of that component.
- the current X-Windows value of the red component is displayed in the red component text box 316.
- the current X- Windows value of the green and blue components are, similarly, displayed in the green component text box 326 and blue component text box 336, respectively.
- a text display label 306 which in Figure 5 is "VALUE", is displayed above the three component text boxes 316, 326 and 336.
- Text display label 306 is an instance of an XmLabel widget.
- the pointers 314, 324 and 334 are at the positions on their respective sliders representing the RGB component values of the current color, and the red slider 310 is the active slider.
- the user may modify the color by manipulating the cursor onto the pointer of a desired slider, and then moving the pointer in a desired direction, in a similar manner as is described for the HLS color mixer model (of Figure 4) above.
- the current color is changed to have the component value represented by the current positions of the pointers of the three sliders, and the values displayed in the respective component text boxes 316, 326 and 336, are changed to display the current value of the correspond ⁇ ing component.
- the user may also change the current color by entering a value for a red, green or blue component directly. To do this, first a desired one of the component text boxes is made the active component text box. Then a desired value for that component is typed in at the Teyboard, and the RETURN key is pressed. The current color is then changed to reflect the newly entered component, and the position of the pointer of the corresponding slider is moved to represent the value of that component.
- the red component slider 310 is made active.
- the right arrow " ⁇ " and left arrow " «-” keys may then be used to move the pointer 314 of the red component slider 310 to change the value of the red component of the current color.
- the red component text box 316 is made active.
- a red component numeric value may then be entered at the keyboard by the user, if desired.
- the green slider 320 is made active.
- the green component text box 326 is made active.
- the blue slider 330 is made active.
- the blue component text box 336 is made active.
- repeated presses of the TAB key then cycle through the scratch pad selector 60 and the control selectors 70 in Figure 2.
- the red slider 310 is made active again. This cycle may be repeated as many times as desired.
- the values represented by the respec ⁇ tive scale widgets which form the red component slider 310, the green component slider 320 and the blue component slider 330 are converted to corresponding values of the red, green and blue components, respectively.
- These RGB components are supplied to the XmBulletinBoard widget forming the color display block 30 (of Figure 2) to allow the current color, represented by those RGB components, to be displayed in the right side block 36.
- Figure 6 is a screen display of a color browser model widget 400 in accordance with the present invention.
- the color browser model widget 400 of Figure 6 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
- the color browser allows a user to select a color from a list of predefined named colors.
- the color browser model widget 400 is an instance of an XmBulletinBoard widget. It consists of a scrolled window within the color selector display area 50.
- the scrolled window 50 includes a set 410 of vertically stacked color chip blocks
- the number of stacked color chip blocks displayed may be varied by the invoking application program. In the illustrated embodiment, there are five color chip blocks displayed in the scrolled window 410.
- the color chip blocks 431-439 are instances of XmPushButton widgets, and the scroll bar 420 is an instance of an X ScrollBar widget.
- Each color chip block includes a label, such as label 441 in color chip block 431, which in Figure 6 is "CADET BLUE".
- the label is a part of the XmPushButton widget making up color chip block 431, and the background displayed is cadet blue.
- the remaining color chip blocks also include labels describing their background color in a similar manner to color chip block 431.
- the scroll bar 420 consist of a scroll-up button 422, a scroll- down button 424 a position indicator 426 and an extent indicator 428.
- the position indicator 426 is intended to represent the entire list of named colors with the top of position indicator 426 representing the beginning of the list and the bottom of position indicator 426 representing the bottom of the list.
- the position of the extent indicator 428 relative to the position indicator 426 indicates the position of the displayed five named colors within the entire list. For example, in the illustrated embodiment, the extent indicator 428 is near the top of position indicator 426, indicating that the displayed five named colors are near the beginning of the list. When extent indicator 428 is near the bottom of position indicator 426, the displayed five named colors are near the end of the list. As the user scrolls down through the l st, the extent indicator 428 will move down ⁇ ward on the position indicator 426, and as the user scrolls up through the list, the extent indicator 428 will move upward on the position indicator 426.
- the extent indicator 428 may be dragged, using the pointing device in the manner described above, to the approximate position on the position indicator 426 corre ⁇ sponding to the location in the list of named colors where the desired color is expected to be. As the extent indicator 428 is dragged, the colors scroll through the color chip blocks 431-439 in the color selector displa area 410. When the button on the pointing device is released, the displayed color ' chip blocks will then be those from the position in the list corresponding to the position on the position indicator 426 to which the extent indicator 428 was dragged.
- the desired color is Medium Green, which is expected to be at about the midpoint in the list of named colors, by dragging the extent indicator 428 to the middle of the position indicator 426. .A user may select one of the displayed colors to be the current color, and thus be displayed in the right side block 36 is the color display block 30 (of Figure 2) , by activating the color chip block displaying that color, in the manner described above.
- each named color has a corresponding set of predefined RGB components which define that color.
- the color defined by those predefined RGB components is displayed in the color display block 30 (of Figure 2) .
- the RGB components defin ⁇ ing that color will then be supplied to the invoking application program if the OK control selector 71 or APPLY control selector 73 is activated. It is further possible to return the actual name of the selected color to the invoking application program when the OK control selector 71 or APPLY control selector 73 is activated. (This is not available in any other color selector model, and if the selected color is changed by any other color selector model, then the name is not returned to the invoking application program.)
- Figure 7 is a screen display of a grayscale selector model widget 500 in accordance with the present invention.
- Figure 7 is similar to the prior art grayscale selector models, described above, because it includes a slider for selecting the desired shade of gray as the desired color.
- the grayscale selector model widget 500 of Figure 7 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
- the grayscale selector model widget 500 is an instance of an XmBulletinBoard widget. It consists of several subwidgets as described below.
- a grayscale slider 510 is displayed 3 i across the middle of the color selector display area 50.
- the grayscale slider 510 is an instance of an XmScale widget.
- the grayscale slider 510 further includes a pointer 514, which indicates the relative brightness of gray of the current color 5 and a white percentage indicator 512, displayed above the pointer 514, which in Figure 7 is "82%".
- the background of the grayscale slider 510 includes a bit-mapped display. At the left side of the grayscale slider 510, the background is all black, and at the right side, it is all white. 10 In between, some portion at the top is white and the remaining portion at the bottom is black. The proportion of black decreas ⁇ es and the amount of white increases going from the left side to the right side of the grayscale slider 510.
- the slider When the grayscale selector model widget 500 is initially displayed, the slider is set to a position which approximates the gray represented by the current color.
- the current color is converted into a shade of gray by computing the average of the 0 red, green and blue components of the current color, and setting the value of all three components to that average value.
- the pointer 514 of the grayscale slider 510 may be moved in a manner similar to that described for the sliders illustrated in Figures 4 and 5.
- the brightness of the gray is increased by moving the pointer 514 to the right. In that case, the value of s 5 all three RGB components are incremented by the same amount.
- the gray represented by these incremented components is displayed in the right side block 36 of the color display block 30 (of Figure 2) .
- the brightness of the gray is decreased by moving the point ⁇ er to the left. In that case, the value of all three RGB compo- 0 nents are decremented by the same amount, and the resulting gray is displayed in the color display block 30.
- the background in the grayscale slider 510 is an aid to a user by giving a graphic indication of the effects of moving the 5 pointer. I.e., when the pointer 514 is at the left side, the current color will be black; when the pointer 514 is at the right side, the current color will be white, and in between the color is a shade of gray formed by mixing black and white in the approximate proportions indicated by the background.
- main- 0 taining all of the RGB components at the same value shades of gray generated using the grayscale selector model widget appear identical, whether displayed on a color display or a grayscale display.
- the color selectors described above in relation to Figures 3 to 7 may be used either alone to select a desired color, or may be used in conjunction with each other.
- the color browser model widget 400 illustrated in Figure 6 may be used to select a named color which is close to the desired one.
- the 0 RGB color mixer widget 300 illustrated in Figure 5 may be used to increase the green content slightly.
- the HLS color mixer widget 200 illustrated in Figure 4 may then be used to increase the color saturation slightly.
- a mixture of the color resulting from the above steps and a color from one of the predetermined palettes of colors in the color picker widget 100 illustrated in Figure 3 may be formed and one of the colors in the interpolated palette 130 (of Figure 3) may be selected, and the OK control selector 71 (of Figure 2) activated. This color will then be placed in the desired area of the invoking applica ⁇ tion program.
- a color selector as described above provides flexibility to the user by allowing the user to select from among several color selector models.
- the user may select the color selection tool which will best allow the accurate generation -of a desired color.
- these tools allow a user to select from among all the colors which a color display is able to produce, without requiring a knowledge of colorimetry, but allowing a user with such knowledge to use the color mixer tools if desired.
- Figure 8 is a screen display of a scratch pad 600 in accor ⁇ dance with the present invention.
- the scratch pad 600 of Figure 8 is displayed as an additional pop-up window on the color display device when the scratch pad selector 60 (of Figure 2) is activated.
- the scratch pad 600 of Figure 8 is an instance of a pop-up dialog box.
- the pop-up dialog box 600 consists of a scratch pad H i
- a color display area 610 is displayed in the center of the dialog box, and consists of an color chip block 612 and a scroll bar 614.
- the color display area 610 is an instance of an XmScrolledWindow widget
- the color chip block 612 is an instance of an XmDrawnButton widget
- the scroll bar 614 is an instance of an XmScrollbar widget.
- a paintcan tile 620 is centered above the color chip display area 610.
- the paintcan tile 620 is an instance of an XmPushButton widget and has a picture of a paintcan pouring out paint displayed on it. It is similar to the paintcan tiles 140R and 140L (of Figure 2) .
- a paintcan label 640 which in Figure 8 is "SAVE COLORS HERE ", is centered above the paintcan tile 620.
- the paintcan label 640 is an instance of an XmLabel widget.
- a set 630 of control selectors is displayed below the color chip display area 610.
- a first control selector 632 is labeled "CLEAR” and a second control selector 634 is labeled "CANCEL”.
- the control selectors 632 and 634 are respective instances of XmPushButton widgets.
- the user invokes the scratch pad 600 by activating the scratch pad selector 60 (of Figure 2) as des ⁇ cribed above.
- the screen display of the scratch pad 600 illustrated in Figure 8 is displayed over a portion of the screen of the color display.
- the screen display of Figure 8 possibly overlays a portion of the color selection window 10, and/or the invoking application program, similar to the manner is which the color selection window 10, itself, is displayed in a portion of the color display possibly overlaying a portion of the invoking application program.
- the scratch pad 600 maintains a list of stored colors.
- the user may scroll through that list using the scroll bar 614 in the manner described above in relation to the scroll bar 420 in Figure 6.
- Each time the user activates the scroll down button of scroll bar 614 the next color in the list is displayed in the color chip block 612, until the user reaches the bottom of the list.
- Each time the user activates the scroll up button of scroll bar 614 the previous color in the list is displayed in the color chip block 612.
- the user knows approx ⁇ imately where in the list of stored colors a desired color is, he can drag the extent indicator of scroll bar 614 toward the approximate location in the list, thus, scrolling through the colors in the scratchpad one-at-a-time until the desired color is located.
- the user activates the paintcan tile 620.
- the paintcan tile is activated, the current color is added to the list, and the color chip display area 510 scrolls to the newly added color. That color is displayed in the color chip block 612 and the scroll bar 614 reflects the relative location in the list where the new color is stored.
- the paintcan label 640 is a hint to the user on how to save a color.
- the user To retrieve a previously stored color from the scratch pad 600 and make that color the current color, the user first scrolls to the desired color using the scroll bar 614, then activates the color chip block 612. When this is done, the selected color from the scratch pad 600 is made the currently selected color and is displayed in the right side block 36 of the color display block 30 (of Figure 2) .
- the user may reactivate the previously active color selector by manipulating the cursor, in a manner similar to that described above, to the color selector window 10 (of Figure 2) , and may then reactivate the scratchpad window 600 by manipu ⁇ lating the cursor to the scratchpad window 600. The user may go back and forth between these windows as often as desired.
- the CANCEL control selector 634 when activated by the user, will return control to the previously active color selector widget 10 which will then remove the scratchpad window 600.
- the CLEAR control selector 632 when activated by the user, will delete the previously saved list of colors, replace the list with one default white color.
- the scratch pad 600 remains in control, however. This enables the user to begin accumulating colors anew.
- the scratch pad allows the user to derive and save colors which may be used later. It also enables colors to be trans- ferred more easily among the different color selector model widgets .
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
A method using a plurality of color selectors and without requiring the use of colorimetry or a palette display of all available colors, for selecting a color for a desired area on a color display device is disclosed which operates according to the following steps: 1) choosing one of a plurality of color selectors; 2) selecting a color using the chosen color selector; 3) displaying the currently selected color; 4) repeating steps 1), 2) and 3) until the selected color is acceptable. Once an acceptable color has been selected, it is displayed in the desired area of the color display device. One color selector is disclosed which operates according to the following steps: 1) displaying a fixed palette of preselected colors on the color display device; 2) selecting any two of the preselected colors to be endpoint colors of a color interpolator; 3) creating a palette of interpolated colors as a result of interpolating the two end-point colors; 4) selecting a color from either the fixed palette or the interpolated palette.
Description
COLOR SELECTION METHOD AND APPARATUS
FIELD OF THE INVENTION:
The present invention relates to a method and apparatus for allowing the user of a color display device to select colors to 5 be displayed on the color display device.
BACKGROUND OF THE INVENTION:
Color display devices may be thought of as displaying an 0 array of picture elements, commonly termed pixels. For example, such display devices may display from 200 rows of 350 pixels .eac , to 1600 rows of 2000 pixels each, or more. Each pixel may display one of a plurality of different colors. For example, in a black-and-white display device, a pixel displays one of two 5 colors, either black or white. In a grayscale display device, a pixel may display one of a plurality of shades of gray (e.g. 16 .shades of gray) varying from black to white. In a color display device, a pixel may display one of from 16 colors to over 16 million colors, depending upon the complexity of the display :0 device.
One of the uses for a color display device is for generating color graphic material, such as color brochures. In the course of generation of such materials, the color display device may be 5 used to display a picture of what the graphic material will look like when it is completed. In order to generate such material, a user must be able to select a particular color for an area of the scree .
0 Another use for a color display device is to provide a working environment. It has been found that using color to
%
represent different types of information displayed on a color display device increases the efficiency with which the user can locate such information on the display device. For example, if a color display device is used in monitoring the operation of a chemical processing plant, when out-of-range parameters are displayed in a different color than the other parameters, it is easier for an operator to quickly find the out-of-range parameter and take corrective action. However, different operators may find different colors more efficient for them.
In order to provide flexibility in the color display device, various methods of allowing a user to select a desired color to be displayed in any desired pixel (or group of pixels) have been developed.
One method of allowing a user to select a color is to display a fixed number of predetermined colors, termed a palette, on the display device and allow the user to pick one of them. This method is commonly termed a color picker. This method is simple to implement and is easy for users to understand and operate. For color display devices which are capable of generat¬ ing a usable palette containing all the colors which the display device is capable of generating, this may be a satisfactory method. However, for color display devices which are capable of displaying a relatively large number of colors (e.g. 16 million), this method will not allow a user the flexibility to select from all the available colors.
For color displays which can display a relatively large number of colors, an alternative to the color picker is to provide a list of predetermined colors to the user. This method is commonly termed a color browser. A palette of a subset of the colors in the list of colors may be displayed on the color
3
display device. The user is allowed to display different subsets of the list of colors on the palette in order to view all the colors in the list. The user may select a color in the currently displayed palette in the same manner as in the color picker. In addition, if each color in the list of colors is assigned a unique name (e.g. "Steel Blue"), then the color and its name may be displayed in the palette, and the user may select from among the list of named colors by typing the name of the desired color, whether the desired color is currently displayed in the palette or not. These methods provide more colors for a user to select from. However, they still do not allow the user the flexibility to select from all available colors if the color display device is capable of displaying a large number of colors (e.g. 16 million) .
Another method for selecting a color is to allow the user to mix different proportions of component parts of the color. This method is commonly termed a color mixer. In one known method, a desired color is represented as a mixture, in varying propor- tions, of the primary colors: red, green and blue (RGB) . In another known method, a desired color is represented as a mixture in varying proportions of the hue, lightness and saturation (HLS) .
One method for allowing the user to specify the proportion of each of the component parts (either RGB or HLS) is to allow the user to type in a number representing the proportion for each of the component parts. Another method includes displaying sliders on the screen for each of the component parts and dis- playing the color currently represented by the sliders. Each slider includes a pointer which controls the proportion of the corresponding component and provides an indication of the current proportion of that component. One end of the slider represents
0% of that component and the other end represents 100% of that component. The user is allowed to move the sliders to the positions which produce the desired color.
This method allows the user to select any one of the colors which the color display device is capable of producing regardless of how many. However, the user must be familiar with colorime- try. For example, if a user does not know that yellow is a combination of red and green, that user may be unable to obtain a desired shade of yellow in an RGB color mixer.
Another color selection method involves a combination of a color picker and a color mixer. In this method, a palette of preselected colors is supplemented with a second palette which may contain colors selected using a color mixer. Selection of one of the colors from either the fixed palette or the changeable palette is performed in a manner similar to the color picker.
Another color selection method involves interpolation between two user selected colors. In this method, one color is produced by combining, in varying proportions, two starting colors. One way of implementing this method is to display a slider on the screen, and the color currently represented by the slider. One end of the slider represents one of the starting colors, and the other end of the slider represents the other one of the starting colors. The position of the pointer on the slider represents the proportion of each of the starting colors in the color being generated.
For example, if the first color is red and the second color is green, then one end of the slider represents 100% of the first color and 0% of the second color (i.e. red) . The other end of the slider represents 0% of the first color and 100% of the
S second color (i.e. green) . The middle of the slider represents a color containing 50% of the first color and 50% of the second color (i.e. yellow) . This method is particularly useful for selecting a brightness level in a grayscale display device, where
»5 one end of the slider represents white and the other end repre¬ sents black, or for implementing a grayscale display on a color display device. (Any of the above color selection methods may also be used to implement a grayscale display on a color display device.) O
All of the above techniques are useful, and different users will find different techniques most efficient for them. It is desirable, therefore, that a user be able to choose from among a plurality of methods for selecting a color for an area on a color 5 display device. It is also desirable that at least one such color selection method allow a user to easily select a color from among any of the colors which the color display device is capable of producing, without requiring any knowledge of colorimetry and without requiring the potential display of a palette containing 0 all such colors (which may be as many as 16 million) .
SUMMARY OF THE INVENTION:
In accordance with principles of the present invention, a 5 method for selecting a color for a desired area on a color display device includes the following steps. 1) Choosing one of a plurality of color selectors. 2) Selecting a color using the chosen color selector. 3) Displaying the currently selected color. 4) Repeating steps 1) , 2) and 3) until the selected color 0 is acceptable. Once an acceptable color has been selected, it is displayed in the desired area of the color display device.
In accordance with another aspect of the present invention, one of the color selectors operates according to the following steps. 1) Displaying a fixed palette of preselected colors on the color display device. 2) Selecting any two of the preselec - ed colors to be endpoint colors of a color interpolator. 3)
Creating a palette of interpolated colors as a result of interpo¬ lating the two end-point colors. 4) Selecting a color from either the fixed palette or the interpolated palette.
In accordance with another aspect of the invention, an option is provided for increasing or decreasing the brightness of the colors in the interpolated palette. This is the equivalent of mixing white or black, respectively, with the colors in the interpolated palette.
In accordance with another aspect of the invention, an option is provided for adding warmth or coolness to the colors in the interpolated palette. Adding warmth to the colors is equiv¬ alent to mixing red with the colors in the interpolated palette. Adding coolness to the colors is equivalent to mixing blue with the colors in the interpolated palette.
In accordance with another aspect of the present invention, a scratchpad is provided for containing a plurality of colors. Either the currently selected color, or any of the colors in either the fixed or interpolated palettes, may be transferred to the scratchpad. Any of the colors in the scratchpad may be used as either of the two endpoint colors in the interpolator, or may be selected by the user as the desired color.
In accordance with another aspect of the present invention, a color mixer type color selector is also provided for mixing a
1
color. The mixed color may be selected by the user as the desired color, or transferred to the scratchpad.
In accordance with another aspect of the present invention, a color browser type color selector is also provided for select¬ ing one of predetermined list of named colors. The mixed color may be selected by the user as the desired color, or transferred to the scratchpad.
Color selection in accordance with the present invention allows a user to choose one of a plurality of color selectors to use. In addition, at least one color selector is a color-picker- type color selector, which is an easier color selector to use. By allowing a new palette of colors to be generated by interpo- lating two end-point colors, no knowledge of colori etry is re¬ quired. Instead, the user selects two colors which are close to the desired color and generates a interpolated palette of colors. The desired color may then be selected from the interpolated pal¬ ette.
In the drawing:
Figure 1 is a block diagram of a computer system embodying the present invention;
Figure 2 is a diagram of a screen display of a color selec¬ tor in accordance with the present invention;
Figure 3 is a diagram of a screen display of a color picker- interpolator model in accordance with the present invention;
Figure 4 is a diagram of a screen display of an HLS color mixer model in accordance with the present invention; Figure 5 is a diagram of a screen display of an RGB color mixer model in accordance with the present invention;
Figure 6 is a diagram of a screen display of a color browser model in accordance with the present invention;
«
Figure 7 is a diagram of a screen display of a grayscale selector model in accordance with the present invention; and
Figure 8 is a diagram of a screen display of a scratch pad in accordance with the present invention.
Figure 1 is a block diagram of a computer system in which the present invention is embodied. In Figure 1, wide lines represent multibit digital signal computer data bus connections.
In Figure 1, a central processing unit (CPU) 2 is coupled to a computer data bus 3. The computer data bus 3 is coupled to a memory 4, an input/output processor 5 and a display processor 6. The input/output processor 5 is coupled to a keyboard 7 and a mouse 8. The display processor 6 is coupled to a video display monitor 9. In a preferred embodiment, the video display monitor 9 is capable of displaying color images, and the display proces¬ sor 6 is capable of supplying control signals to the video display monitor 9 to enable it to display color images. The combination of a preferred display processor 6 and a preferred video display monitor 9 forms a color display device.
Other devices (not shown) may be coupled to the computer data bus 3, including, for example, mass storage devices, such as either tape drives or disk storage devices, through associated control processors. In addition, other devices may be coupled to the input/output processor 5, for example, a plurality of comput¬ er terminals (in the case of a multiuser computer system) to provide access to the computer system by large numbers of users.
In operation, CPU 2 executes instructions stored in memory 4 in a known manner. The instructions executed by CPU 2 may cause the CPU 2 to access the keyboard 7 and/or the mouse 8 through the input/output processor 5 in order to receive information from the
<
user of the computer system. In addition, instructions executed by CPU 2 may cause the CPU 2 to send data to the video display monitor 9, through the display processor 6, causing video display monitor 9 to display an image in order to transmit information to the user of the computer system. As a part of the information displayed on the video display monitor 9, different portions of the display may be represented by different colors.
In accordance with the present invention, the CPU controls the interaction of information displayed on the video display monitor 9, with information received from the keyboard 7 and/or the mouse 8, to enable the user to select a color to be displayed in a desired area of the image displayed on the video display monitor 9. The interaction of information is described in more detail below.
In the remainder of the detailed description of a preferred embodiment of the invention, below, the color selection method and apparatus is assumed to be implemented on a computer system which runs the DECwindows (trademark of Digital Equipment Corpo¬ ration) operating environment. Such a computer system interacts with a color display device via the known display protocol known as X-Windows. The preferred embodiment also is generated in agreement with the Motif (trademark of Open Software Foundation) User Interface Style Guide. This provides a set of tools for designing a user interface which allows operation of the computer system color selection method by means of either a mouse or the keyboard. However, the screen layouts and method steps may also be implemented on computer systems which run other operating environments and which include other display protocols and other user interface styles.
In general operation, a user of the computer system would run an application program, such as a color illustration program or a chemical processing plant control program, discussed above. At some point during execution, the application program would require or permit the user to select a color for a specific area on the screen display of the application program. The applica¬ tion program would invoke the color selection program according to the present invention to make, the color selection.
After the selection is made, information representing the selected color (and possibly the original color) would be re¬ turned to the invoking application program, which would then change the color of the specific area of the screen display of the invoking application program to the selected color. In the preferred embodiment, the color representative information is returned to the invoking application program in X-windows RGB coordinates, regardless of the color selector type (e.g. picker, HLS, RGB, browser, etc.) used to select the desired color. In the X-windows RGB system, the percentage of each of the par¬ ticular component colors (red, green and blue) is represented by a 16 bit unsigned number in which 0% is represented by the value 0 and 100% is represented by the value 65,535. Thus, three 16 bit unsigned numbers, representing the percentage of red, green and blue, respectively, in the selected color, are returned to the invoking program.
Figure 2 is a diagram of a screen display of a color selec¬ tor in accordance with the present invention. The screen display of Figure 2 is displayed when an application program running on the computer system invokes the color selector program to query the user for a new color for an area on the color display device. The invocation of the color selection screen display of Figure 2 may be as a "pop-up" window, over the screen display of the
(i
invoking program, or may be a full screen display. In the remainder of the description, it will be assumed that the color selection screen of Figure 2 is invoked as a window over a screen display of an invoking application program.
In the X-windows protocol, screen display entities are termed widgets. These widgets have several forms (discussed below) and may be placed anywhere on the screen. Each widget may invoke other widgets, termed subwidgets, and so forth, in a hierarchical fashion. In addition, the user may interact in several ways with certain widgets. A user who uses the Motif Style Guide tool set may easily manipulate widgets and the processes which execute in response to user inputs. There are several types of widgets defined in the Motif X-windows protocol and one skilled in the art of X-windows screen programming will understand the concept of widgets and subwidgets and how to implement different instances of widgets of the desired type and how to generate the program code necessary to implement the functions described below.
In general, widgets interact with the user through the use of a cursor. The cursor is an indicator displayed, in a known manner, on the color display device to indicate a location on the screen. The user may manipulate the position of the cursor on the screen in a known manner using either a keyboard, or a point¬ ing device, such as a trackball or a mouse. The user may manipu¬ late the cursor into a desired location on the screen and then, by pressing either a particular key on the keyboard, or by pressing a button on the pointing device, cause some action to be taken.
For example, a relatively small portion of the screen display, sometimes termed a "button" or "selection block", may be
I
designed to act as a pushbutton would. I.e. a specific action would be invoked when that button is activated. In order to activate this button, the user would manipulate the cursor to lie within the area representing the pushbutton, using either the keyboard or the mouse. The button is then activated by pressing either the RETURN key on the keyboard, or by pressing a button on the mouse. When the term "activate" is used below in relation to the screen display, the above actions are meant. Other examples of such control will be described in more detail below.
When the application program invokes the color selector, the color selector takes control, and displays an outline 10 which defines the color selection window. The color selection window 10 occupies a portion of the color display device. The remaining portion (not shown) displays the screen display of the applica¬ tion program which invoked the color selector. This color selection window 10 is a subclass of the Motif XmBulletinBoard widget class. Several components (subwidgets) make up the color selection window 10. First, a title 20, which in Figure 2, is "COLOR SELECTOR", is displayed at the top center of the color selection window 10. The title 20 is an instance of an XmLabel widget and the text of the title may be changed under program control or the title 20 may not be displayed at all.
Second, a color display block 30 is displayed below the title 20. The color display block 30 is an instance of an XmBul¬ letinBoard widget. The color display block 30 consists of two blocks of color displayed side-by-side. The left side block 34 displays the original color of the area for which a new color is being selected. The right side block 36 displays the currently selected color for the area. Both the left side block 34 and the right side block 36 are instances of XmDrawnButton widgets. The operation of the left side block 34 and the right side block 36
will be described in more detail below. These two color blocks 34 and 36 are surrounded by a rectangular area 32 of a neutral gray. In the preferred embodiment, the left side block 34 and right side block 36 are displayed as 80 pixel by 80 pixel squares, and the gray border 32 around the two blocks is 20 pixels wide. These sizes, and the color of the surrounding rectangular area, may be changed by the invoking program. The color display block 30 may optionally include a title, which is not shown in Figure 2.
Third, a color model option menu 40 is displayed below the color display block 30. The color model option menu 40 consists of: a label 42, which is "COLOR MODEL:" in Figure 2 and a option selector block 43. The label 42 is an instance of an XmLabel widget. The option selector block 43 is an instance of an
XmRowColumn widget and includes a title 44, which indicates which color selector is currently being used, and which is "PICKER" in Figure 2; and a menu selection block 46. The text for the label for the color model option menu 42, and the text for the color selector title 44 may be changed by the application program.
Fourth, the display area 50 for the color model chosen by the user is displayed below the color model option block 40. This is indicated by a dashed rectangular block 50 in Figure 2. The information displayed in the color model display area 50 will be different for each of the different color selectors. Specific displays for different color model selectors and will be de¬ scribed in more detail below.
Fifth, a scratch pad selector 60 is displayed centered below the color model display 50. This scratch pad selector 60 is an instance of an XmPushButton widget, and includes the label "SCRATCH PAD ..." inside the selector. (The ellipses indicate
ι4
that when the button is activated, there will be more information displayed and further choices to make based on that information.) The label within the scratch pad selector button 60 may be changed by the application program.
Sixth, a row of control selectors 70 are displayed below the scratch pad selector 60. These are instances of XmPushButton widgets. From left to right they are labeled: the "OK" push button 71; the "APPLY" push button 73, the "RESET" push button 75, the cancel, "CANCEL", push button 77 and the "HELP" push button 79.
In operation, the color selector is invoked, as described above, by an application program which is querying the user for a new color for an area on the color display device. When the color selector is invoked the color selection window 10 is displayed as a window over the display of the invoking applica¬ tion program. In a preferred embodiment, the color of both the left side block 34 and the right side block 36 is set to the original color of the area for which a new color is being select¬ ed. In general, however, the application program may set the color in the right side block 36 tb any other color, if desired.
The user may then select a desired color selector model, such as picker, mixer or browser. In accordance with the Motif style guide, the user may make a selection by activating the menu selection block 46 of the color model option menu 40.
COLOR SELECTION MODEL
Color Picker
HLS
RGB
Browser
Grayscale
TABLE I
Table I, above, lists the available color selector models in a preferred embodiment. Other color selector models may be made available to the user in a color selector model window in accor¬ dance with the present invention.
When menu selection block 46 of color model option menu 40 is activated, a menu of available color selector models is dis¬ played in list form on the screen in a known manner. In a pre¬ ferred embodiment, this menu (not shown) may consist of a pull¬ down menu which is an instance of an XmRowColumn widget. This pulldown menu may consist of a vertical stack of XmPushButton widgets, each representing a different color selector model. The resulting pulldown menu resembles Table I above.
The user may then activate the desired entry of the listed color selector models, thus, causing the display for the selected color selector model to be placed in the color model display area 50 and that color selector to become active. The structure and operation of the different color selector models, themselves, will be described in more detail below. However, in general, a user uses the selected color selector model to generate the
desired color, which is always displayed in the right side block 36 in the color display block 30.
While using the selected color selector model, the user may wish to save a color in a scratch pad of colors for use later. Alternatively, the user may wish to retrieve a color previously saved in the scratch pad for use in the currently selected color selector model or as the desired- color. To do this, the user activates the scratch pad selector 60. This causes a scratchpad window to appear, allowing the user to store the color wished to be saved, or retrieve the color previously saved. The scratchpad is accessible f om all of the color selection models. The screen layout and operation of the scratchpad will be described in more detail below.
The user may also activate one of the control selectors 70. When any of the control selectors are activated, the invoking application program is notified and it activates an appropriate action in response. When control selector 71, labeled "OK", is activated, the invoking application program retrieves from the color selector the currently selected color, which is displayed in the right side block 36 of the color display block 30, and removes the color selection window 10 from the color display device. The invoking program then places the retrieved color into the desired area of its screen display and retains control and continues its operation.
When control selector 73, labeled "APPLY", is activated the invoking program retrieves from the color selector the currently selected color while allowing the color selection window 10 to remain on the screen. The invoking program then displays the color returned by the color selector into the desired area of its screen display. However, in this case, control is returned to
n
the color selector which continues its operation. This may be used to preview the currently selected color on the actual application program display. When control selector 77, labeled "CANCEL", is activated, the invoking application program removes the color selection window 10 from the color display device without implementing any changes and retains control, continuing its operation.
When control selector 75, labeled "RESET", is activated, the invoking application program causes the color selector to change the display of the color selection window 10 (including the color model display area 50) back to how it appeared when originally invoked. When control selector 79, labeled "HELP", is activated, it causes another window to appear on the color display device in which help on using the color selection window 10 appears.
The operation of the color selector illustrated in Figure 2 will be better understood by reference to Figure 3. Figure 3 illustrates a screen display 100 of a color picker model widget in accordance with the present invention. The color picker model widget 100 of Figure 3 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
The color picker model widget 100 is an instance of an
XmBulletinBoard widget. It consists of several subwidgets as described below. First, a palette option menu 110 is displayed at the top center. The palette option menu 110 is an instance of an XmRowColumn widget. The palette option menu 110 consists of a label 112, which in Figure 3 is "PALETTE OPTION MENU". The label 112 is an instance of an XmLabel widget. The text of the palette option menu label 112 may be changed by the application program. The palette option menu 110 also includes a selector button 114.
Second, a first palette 120 of predetermined colors is displayed in ten squares, termed tiles, below the palette option menu 110. The predetermined color palette 120 is an instance of a XmDrawnButton widget. In a preferred embodiment, the tiles are 30 pixels by 30 pixels, but their size may be varied by the invoking application program.
Third, a second palette 130- of ten tiles, initially white, is displayed below the palette of predetermined colors 120. This palette of ten tiles is part of a color interpolator, whose operation will be described in detail below. The interpolator palette 130 is also an instance of a XmDrawnButton widget. In a preferred embodiment, the tiles of interpolator palette 130, also, are 30 pixels by 30 pixels, and may also be changed by the invoking application program. A second palette label 132, which is "INTERPOLATOR" in Figure 3, is centered above interpolator palette 130. The second palette label 132 is an instance of an X Label widget. The text of label 132 may be changed by the invoking application, or the label may be left undisplayed. In interpolator palette 130, the leftmost tile 134 and the rightmost tile 136 are designated end point tiles. The number of tiles in both the predetermined color palette 120 and the interpolator palette 130 may be changed by the invoking application program.
Fourth, two blocks, 140L and 140R, are displayed immediately above the two end point tiles 134 and 136, respectively, of the interpolator palette 130. These blocks are instances of XmPush¬ Button widgets. In a preferred embodiment, these blocks, also, are 30 pixels by 30 pixels, and the size may be changed by the invoking application program. These blocks may have icons of paint buckets pouring out paint displayed in them, and are referred to below as paintcan tiles.
Fifth, a first set 150 of two arrow buttons is displayed to the left of the interpolator palette 130. These arrow buttons are instances of XmArrowButton widgets. A first arrow button 152 is pointing upward and a second arrow button 154 is pointing downward. Each arrow has a label associated with it. The labels are respective instances of XmLabel widgets. Arrow button 152 has a label 156 associated with it, which is "LIGHTER" in Figure 3; and arrow button 154 has a label 158 associated with it, which is "DARKER" in Figure 3. The text of the labels may be changed by the invoking application program.
Sixth, a second set 160 of two arrow buttons is displayed to the right of the interpolator palette 130. These arrow buttons are also respective instances of XmArrowButton widgets. A first arrow button 162 is pointing upward and a second arrow button 164 is pointing downward. Each arrow has a label associated with it. The labels are instances of XmLabel widgets. Arrow button 162 has a label 166 associated with it, which is "WARMER" in Figure 3; and arrow button 164 has a label 168 associated with it, which is "COOLER" in Figure 3. The text of the labels may be changed by the invoking application program. The combination of the interpolator palette 130; arrow buttons 152, 154, 162 and 164; and paintcan tiles 140L and 140R form a color interpolator whose operation will be described in more detail below.
Seventh, two control buttons 170 are centered below the interpolator palette 130. These are respective instances of XmPushButton widgets. The leftmost button 172 has the label "SMEAR", and the rightmost button 174 has the label "UNDO" displayed in it. The text in these buttons may be changed by the invoking application program.
In addition, a label, not shown in Figure 3, for the color picker model widget may be displayed at the top center of the display area 100. This label would be an instance of an XmLabel widget, and the actual label would be under the control of the 5 invoking program.
Referring to Figure 2, when the color selection widget 10 is invoked by the application program, and the user selects the Color Picker color model by activating the menu selection block
'.0 46 and activating the Color Picker selection (as described above) , the screen display illustrated in Figure 3 is inserted into the color model display area 50. The label "PICKER", which is associated with the picker type color selector model illustra¬ ted in Figure 3, is displayed as the color model option menu 5 title 44. This indicates that the color selector model currently active in the color model display area 50 is the picker model.
Referring to Figure 3, when the Color Picker color selector model is initially invoked, a palette of predetermined colors is 0 displayed in the tiles 120. These colors may, for example, be a spectrum of fully saturated colors (e.g. white, red, orange, yellow, green, blue, blue-violet, violet, brown and black) . The interpolator palette 130 is initially all white tiles.
5 The user may select any of the colors in the predetermined color palette 120 to be the current color by manipulating the cursor to the tile in the predetermined color palette 120, and activating that tile. The newly selected color is then displayed in the right side block 36 of color display block 30 (of Figure 0 2) . If the "OK" control selector 71 or the "APPLY" control selector 73 (of Figure 2) is activated, the selected color is supplied to the invoking application program, which will then
change the color of the desired area on its color display to that color (as described above) .
There may be more than one palette of preselected colors available for display in the preselected color palette 120. The user may access a list of available palettes by activating the selector block 114 in the palette option menu 110. Table II, below, lists exemplary palettes of preselected colors which may be made available in the preselected color palette 120. When the user activates the palette option selector block 114, a list similar to Table II is displayed on the screen. In a preferred embodiment, this menu (not shown) may consist of a pulldown menu which is an instance of an XmRowColumn widget. This pulldown menu may consist of a vertical stack of XmPushButton widgets, each representing a different preselected color palette. The resulting pulldown menu resembles Table II above. The user may then select one of the entries in the table by activating that entry. The colors in the selected palette are then displayed in the color palette 120 and the user may select one of them as de- scribed above.
AVAILABLE PALETTES
Normal
Vivid
Pastel
Earthtone Table II
If the color desired is not displayed in any of the avail¬ able palettes, however, the user may use the color interpolator
to create the desired color. In operation, the user supplies a first color to one of the two endpoint tiles 134 and 136 and a second color to the other one of the two endpoint tiles 134 and 136. The details of supplying a color to the endpoint tiles will be described in more detail below. An interpolation of the colors in the endpoint tiles may be performed by activating the SMEAR control button 172. The result of the interpolation is a range of colors ranging from the pure first color in one endpoint tile to the pure second color in the other endpoint tile with colors gradually changing from the first to the second color in between, similar to the way an artist's palette might look if a smear of color is made from one color paint into another.
Returning again to the above example, if the first color is green and the second color is red, then a range of colors is produced by the smear operation ranging from pure green in its endpoint tile through a dark reddish-olive in the center to pure red in its endpoint tile.
In actual operation, a simultaneous linear interpolation of the respective red, green and blue components is performed between the two endpoint colors. For example, in the illustrated embodiment, which includes 10 tiles in the interpolator palette 130, the difference between the red component values of the two endpoint tiles is divided by nine (one less than the number of tiles) . This results in an incremental value, which when added to the red component value of the color of the endpoint tile generates the red component value for the second tile, and which when added to red component value of the second tile results in the red component value for the third tile, and so forth. Three such incremental values, one each for the red, green and blue components, are generated by similar division and used to compute
2
the component values for all the colors in the intermediate tiles. This results in a smooth, linear interpolation between the two endpoint tile colors.
The last performed smear operation may be undone, returning the interpolator to the state is was in prior to that smear operation, by activating the UNDO control button 174.
The operation of supplying a color to an endpoint tile may be performed in either of two ways. The currently selected color, displayed in the right side block 36 of the color display block 30 (of Figure 2) , may be placed in an endpoint tile by activating the paintσan block above the appropriate endpoint tile. Alternatively, the cursor may be manipulated onto a desired color in any tile in: the predetermined color palette
120; the interpolator palette 130; or the color display block 30 (the original color in the left side block 34 or the currently selected color in the right side block 36) and the button pressed and held. In this case, the cursor will be displayed in the form of an eyedropper. The mouse may then manipulate the cursor (in eyedropper form) to the desired endpoint tile (a process known as dragging) . When the button on the mouse is released, the color in which the button on the mouse was initially pressed will be placed in the endpoint tile.
The color values of all the tiles in the interpolator palette 130 may be manipulated at the same time by the use of the two sets of arrow buttons 150 and 160. Arrow buttons 152 and 154 adjust the lightness or darkness of the colors in the interpola- tor palette 130. When arrow button 152 is activated, all the tiles in the interpolator palette 130 are lightened. This is similar to adding a little white to all the colors. When arrow button 154 is activated, all the tiles in the interpolator
palette 130 are darkened. This is similar to adding a little black to all the colors.
In actual operation, when either of arrow buttons 152 or 154 are activated, the RGB component values of all the colors in the interpolator palette 130 are converted in a known manner to HLS component values. Then a predetermined incremental value is added to (when the LIGHTER arrow button is activated) or sub¬ tracted from (when the DARKER arrow button is activated) the lightness (L) component. Finally the resulting HLS components are converted back into RGB components, in a known manner, and the colors representing the new component values are displayed in the corresponding tiles of the interpolator palette 130.
Arrow buttons 162 and 164 adjust the warmth or coolness of all the colors in the interpolator palette 130 at the same time. When arrow button 162 is activated, all the tiles in the interpo¬ lator palette 130 are warmed. This is similar to adding a little red to all the colors. When arrow button 154 is activated, all the tiles in the interpolator palette 130 are cooled. This is similar to adding a little blue to all the colors.
In actual operation, when the WARMER arrow button 162 is activated, a predetermined incremental value is added to the red component values of all the colors in the interpolator palette 130 at the same time. When the COOLER arrow button 164 is activated, a predetermined incremental value is added to the blue component values of all the colors in the interpolator palette 130 at the same time. These operations are not inverses of each other. That is, if the colors in the interpolator palette 130 have been warmed too much, it is not possible to return them to their previous condition by activating the COOLER arrow button 164.
Any of the colors in the interpolated palette 130 may be selected to be the current color by activating the tile contain¬ ing the desired color. That color then becomes the selected color and the color of the right side block 36 of the color display block 30 (of Figure 2) is changed to that color. As described above, that color may then be displayed in the invoking application program by activating the OK, 71, or APPLY, 73, control selectors .
In addition, the colors in any of the tiles in the interpo¬ lator palette 130 may be dragged to one of the endpoint tiles of the interpolator palette 130 and further smeared to find the desired color. In this manner any color which the color display device is capable of displaying may be generated in the interpo- lator palette 130, and ultimately selected by the user. By providing a range of predetermined palettes and a way of interpo¬ lating between the colors in those predetermined palettes, a user can select from any of the colors which the color display device is capable of displaying without requiring a knowledge of color- imetry.
Figure 4 is a screen display of an HLS color mixer model widget 200 in accordance with the present invention. Figure 4 is similar to the prior art HLS color picker models, described above, because it includes three sliders for selecting the hue, saturation and lightness components of a desired color. The color picker model widget 200 of Figure 4 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
The HLS color mixer model widget 200 is an instance of an XmBulletinBoard widget . It consists of several subwidgets as described below. First, a hue slider 210 is displayed across the
top portion of the color selector display area 50. The hue slider 210 is an instance of an XmScale widget. In addition, a hue label 212, which in Figure 4 is "HUE:", is displayed to the left of the hue slider 210. Hue label 212 is an instance of an XmLabel widget. The hue slider 210 further includes a pointer 214 which indicates the relative value of the hue component of the current color (displayed in the right side block 36 of the color display block 30 of Figure 2) .
Second, a lightness slider 220 is displayed across the middle section of the color selector display area 50. The lightness slider 220 is an instance of an XmScale widget. In addition, a lightness label 222, which in Figure 4 is "LIGHT¬ NESS:", is displayed to the left of the lightness slider 220. Lightness label 224 is an instance of an XmLabel widget. The lightness slider 220 further includes a pointer 224, which indicates the relative value of the lightness component of the current color. A label 226, which in Figure 4 is "BLACK", and another label 228, which is Figure 4 is "WHITE", are placed above the left and right ends, respectively, of the lightness slider 220. Labels 226 and 228 are respective instances of XmLabel widgets.
Third, a saturation slider 230 is displayed across the bottom portion of the color selector display area 50. The saturation slider 230 is an instance of an XmScale widget. In addition, a saturation label 232, which in Figure 4 is "SATURA¬ TION:", is displayed to the left of the saturation slider 230. Saturation label is an instance of an XmLabel widget. The saturation slider 230 further includes a pointer 234, which indicates the relative value of the saturation component of the current color. A label 236, which in Figure 4 is "GRAY", and another label 238, which in Figure 4 is "FULL", are placed above
1-1
the left and right ends, respectively, of the saturation slider 230. Labels 236 and 238 are respective instances of XmLabel widgets.
, 5 Referring to Figure 2, when the color selection widget 10 is invoked by the application program, and the user selects the HLS Color Mixer color model by activating the menu selection block 46 and then activating the HLS Color Mixer selection (as described above) , the screen display illustrated in Figure 4 is inserted
10 into the color model display area 50. The label "HLS", which is associated with the HLS mixer type color selector model illustra¬ ted in Figure 4, is displayed as the color model option menu title 44. This indicates that the color selector model currently active in the color model display area 50 is the HLS color mixer
15 model.
In the HLS color mixer model, a color is represented by the three components: hue, lightness, and saturation. Hue is the color, lightness is the intensity of the color, that is the 20 amount of the color, and saturation describes the purity of the color, or how much the color is diluted by white.
The hue component (H) may be thought of as representing an angle in a color wheel. On the color wheel, red appears at 0
_5 degrees (and again at 360 degrees) , magenta is at 60 degrees, blue is at 120 degrees, cyan is at 180 degrees, green is at 240 degrees and yellow is at 300 degrees. In Figure 4, both the left and right side of slider 210 represents red (0 degrees) . As the pointer 214 of slider 210 moves from the left side to the right
30 side, the color progresses smoothly from red to magenta to blue to cyan to green to yellow and back to red at the right side.
The lightness component (L) represents the lightness or intensity of the color and has a value between 0%, representing black, and 100% representing white. The pointer 224 of lightness slider 220 progresses from 0% ("BLACK") at the left side of slider 220, to 100% ("WHITE") at the right side of slider 220. The saturation component (S) represents the purity of the color and has a value between 0%, representing a shade of gray, and 100%, representing pure color. The pointer 234 of saturation slider 230 progresses from 0% ("GRAY") at the left side of slider 230 to 100% ("WHITE") at the right side. As is known, in the HLS component color model, full intensity colors have 50% lightness and 100% saturation.
Referring to Figure 4, when the HLS color mixer model is activated, the pointers 214, 224 and 234 are at the positions on their respective sliders representing the HLS component values of the current color, and the hue slider 210 is the active slider. The user may modify the color by manipulating the cursor onto the pointer of a desired slider, and then moving the pointer in a desired direction. As the slider is moved, the current color is changed to have the component value represented by the current positions of the pointers of the three sliders.
Sliders 210, 220 and 230 may be manipulated in one of the following ways. Using the keyboard, the desired slider is first made the active slider. As described above, when first invoked, the hue slider 210 is the active slider. When the user presses the TAB key, the lightness slider 220 is made the active slider. If the TAB key is pressed again, the saturation slider 230 is made the active slider. Repeated presses of the TAB key then make the following (all illustrated in Figure 2) active in this order: scratch pad selector 60, the OK control selector 71, the APPLY control selector 73, the RESET control selector 75, the
CANCEL control selector 77 and the HELP control selector 79. If the TAB key is then pressed once again, then the hue slider 210 is made the active once again. Repeated presses of the TAB key cycles through the sliders in the above sequence.
When the user has made the desired slider active, then the pointer may be moved to the right by pressing the right-arrow key "→", or may be moved to the left by pressing the left-arrow key "<—". As the pointer of the active slider is moved, the current color (displayed in the right side block 36 of the color display block 30 of Figure 2) is changed to that represented by the position of the pointers on the three sliders 210, 220 and 230 of Figure . The selection of a slider, and moving of the pointer of that slider is repeated until the desired color is displayed in the color display block 30.
Using a pointing device, such as a mouse, a desired slider is made the active slider by manipulating the cursor onto the pointer of that slider and pressing and holding a button on the mouse. The slider is then moved to the right by moving the mouse to the right, and is moved to the left by moving the mouse to the left, while holding the mouse button down; i.e. by dragging the pointer to the desired position. While the pointer is being dragged, the current color, displayed in the color display block 30 is changed to represent by the position of the pointers of the sliders 210, 220 and 230. The current color, whether selected by the pointing device, or the keyboard, or both, may be displayed in the invoking application program by activating the OK control selector 71 or the APPLY control selector 73 (of Figure 2) , as described above.
In actual operation, the values represented by the respec¬ tive scale widgets which form the hue slider 210, the lightness
slider 220 and the saturation slider 230 are converted to corre¬ sponding values of the hue, lightness and saturation components, respectively. The resulting HLS components are then converted into corresponding RGB components. These RGB components are supplied to the XmBulletinBoard widget forming the color display block 30 (of Figure 2) to allow the current color, represented by those RGB components, to be displayed in the right side block 36.
Figure 5 is a screen display of an RGB color mixer model widget 300 in accordance with the present invention. Figure 5 is similar to the prior art RGB color picker models, described above, because it includes three sliders for selecting the red, green and blue components of a desired color. The color picker model widget 300 of Figure 5 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
The RGB color mixer model widget 300 is an instance of an XmBulletinBoard widget. It consists of several subwidgets as described below. First, a red component slider 310 is displayed across the top portion of the color selector display area 50. The red component slider 310 is an instance of an XmScale widget. In addition, a red component label 312, which in Figure 5 is "RED", is displayed above the red component slider 310. Red component label 312 is an instance of an XmLabel widget. The red component slider 310 further includes a pointer 314 which indi¬ cates the relative value of the red component of the current color (displayed in the right side block 36 of the color display block 30 of Figure 2) . A red component text box 316 is displayed to the right of the red component slider 310. The red component text box 316 is an instance of an XmText widget. The current value of the red component is displayed in the red component text box 316, which in Figure 5 is "11846".
- •
Second, a green component slider 320 is displayed across the middle section of the color selector display area 50. The green component slider 320 is an instance of an XmScale widget. In addition, a green component label 322, which in Figure 5 is "GREEN", is displayed above the green component slider 320.
Green component label 324 is an instance of an XmLabel widget. The green component slider 320 further includes a pointer 324, which indicates the relative value of the green component of the current color. A green component text box 326 is displayed to the right of the green component slider 320. The green component text box 326 is an instance of an X Text widget. The current value of the green component is displayed in the green component text box 326, which in Figure 5 is "23957".
Third, a blue component slider 330 is displayed across the bottom portion of the color selector display area 50. The blue component slider 330 is an instance of an XmScale widget. In addition, a blue component label 332, which in Figure 5 is ""BLUE", is displayed above the blue component slider 330. Blue component label 332 is an instance of an XmLabel widget. The blue component slider 330 further includes a pointer 334, which indicates the relative value of the blue component of the current color. A blue component text box 336 is displayed to the right of the blue component slider 330. The red component text box 336 is an instance of an XmText widget. The current value of the blue component is displayed in the blue component text box 336, which in Figure 5 is "63190".
Referring to Figure 2, when the color selection widget 10 is invoked by the application program, and the user selects the RGB Color Mixer color model by activating the menu selection block 46 and then activating the RGB Color Mixer selection (as described above) , the screen display illustrated in Figure 5 is inserted
into the color model display area 50. The label "RGB", which is associated with the picker type color selector model illustrated in Figure 4, is displayed as the color model option menu title 44. This indicates that the color selector model currently active in the color model display area 50 is the RGB color mixer model.
In the RGB color model, a color is represented by the three components: red, green and blue. Red component slider 310 represents the proportion of the color red in the current color. As the pointer 314 of slider 310 moves from the left side to the right side, the proportion of the red component changes smoothly from 0% to 100% at the right side. The green and blue component sliders 320 and 330 operate in a similar manner with respect to the proportion of green and blue, respectively, in the current color. To further indicate this to the user, a slider label 304, which in Figure 5 is "PERCENTAGE", is displayed above the three color component sliders 310, 320 and 330. Slider label 304 is an instance of an XmLabel widget.
As described above, in the illustrated embodiment, colors are represented by their X-Windows RGB coordinates, three sixteen bit unsigned integers, in which a value of 0 represents 0% of that component and 65,535 represents 100% of that component. In Figure 5, the current X-Windows value of the red component is displayed in the red component text box 316. The current X- Windows value of the green and blue components are, similarly, displayed in the green component text box 326 and blue component text box 336, respectively. To further indicate this to the user, a text display label 306, which in Figure 5 is "VALUE", is displayed above the three component text boxes 316, 326 and 336. Text display label 306 is an instance of an XmLabel widget.
When the RGB color mixer model is activated, the pointers 314, 324 and 334 are at the positions on their respective sliders representing the RGB component values of the current color, and the red slider 310 is the active slider. The user may modify the color by manipulating the cursor onto the pointer of a desired slider, and then moving the pointer in a desired direction, in a similar manner as is described for the HLS color mixer model (of Figure 4) above. As the sliders are moved, the current color is changed to have the component value represented by the current positions of the pointers of the three sliders, and the values displayed in the respective component text boxes 316, 326 and 336, are changed to display the current value of the correspond¬ ing component.
In the RGB color mixer model 300, the user may also change the current color by entering a value for a red, green or blue component directly. To do this, first a desired one of the component text boxes is made the active component text box. Then a desired value for that component is typed in at the Teyboard, and the RETURN key is pressed. The current color is then changed to reflect the newly entered component, and the position of the pointer of the corresponding slider is moved to represent the value of that component.
As described above, when the RGB color mixer model 300 is invoked, the red component slider 310 is made active. The right arrow "→" and left arrow "«-" keys may then be used to move the pointer 314 of the red component slider 310 to change the value of the red component of the current color. If the TAB key on the keyboard is pressed, then the red component text box 316 is made active. A red component numeric value may then be entered at the keyboard by the user, if desired. If the TAB key is pressed again, the green slider 320 is made active. If the TAB key is
pressed again, the green component text box 326 is made active. If the TAB key is presses again, the blue slider 330 is made active. If the TAB key is pressed again, the blue component text box 336 is made active. In a similar manner to that described for Figure 3, above, repeated presses of the TAB key then cycle through the scratch pad selector 60 and the control selectors 70 in Figure 2. Finally, if the TAB key is pressed again, the red slider 310 is made active again. This cycle may be repeated as many times as desired.
In actual operation, the values represented by the respec¬ tive scale widgets which form the red component slider 310, the green component slider 320 and the blue component slider 330 are converted to corresponding values of the red, green and blue components, respectively. These RGB components are supplied to the XmBulletinBoard widget forming the color display block 30 (of Figure 2) to allow the current color, represented by those RGB components, to be displayed in the right side block 36.
Figure 6 is a screen display of a color browser model widget 400 in accordance with the present invention. The color browser model widget 400 of Figure 6 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above. The color browser allows a user to select a color from a list of predefined named colors.
The color browser model widget 400 is an instance of an XmBulletinBoard widget. It consists of a scrolled window within the color selector display area 50. The scrolled window 50, includes a set 410 of vertically stacked color chip blocks
431-439 and a vertically aligned scroll bar 420. The number of stacked color chip blocks displayed may be varied by the invoking application program. In the illustrated embodiment, there are
five color chip blocks displayed in the scrolled window 410. The color chip blocks 431-439 are instances of XmPushButton widgets, and the scroll bar 420 is an instance of an X ScrollBar widget. Each color chip block includes a label, such as label 441 in color chip block 431, which in Figure 6 is "CADET BLUE". The label is a part of the XmPushButton widget making up color chip block 431, and the background displayed is cadet blue. The remaining color chip blocks also include labels describing their background color in a similar manner to color chip block 431. The scroll bar 420 consist of a scroll-up button 422, a scroll- down button 424 a position indicator 426 and an extent indicator 428.
Referring to Figure 2, when the color selection widget 10 is invoked by the application program, and the user selects the color browser model by activating the menu selection block 46 and then activating the browser selection (as described above) , the screen display illustrated in Figure 6 is inserted into the color model display area 50. The label "BROWSER", which is associated with the browser type color selector model illustrated in Figure 6, is displayed as the color model option menu title 44. This indicates that the color selector model currently active in the color model display area 50 is the browser model.
Activating the scroll-down button 424 using the pointing device, or pressing the down-arrow "-1" key on the keyboard, scrolls down through the list until the bottom five named colors in the list are displayed. Activating the scroll-up button 422 using the pointing device, or pressing the up-arrow "T" key on the keyboard, scrolls up through the list until the top five named colors in the list are displayed.
3«-
The position indicator 426 is intended to represent the entire list of named colors with the top of position indicator 426 representing the beginning of the list and the bottom of position indicator 426 representing the bottom of the list. The position of the extent indicator 428 relative to the position indicator 426 indicates the position of the displayed five named colors within the entire list. For example, in the illustrated embodiment, the extent indicator 428 is near the top of position indicator 426, indicating that the displayed five named colors are near the beginning of the list. When extent indicator 428 is near the bottom of position indicator 426, the displayed five named colors are near the end of the list. As the user scrolls down through the l st, the extent indicator 428 will move down¬ ward on the position indicator 426, and as the user scrolls up through the list, the extent indicator 428 will move upward on the position indicator 426.
An alternative way to move through the list of named colors uses the pointing device. The extent indicator 428 may be dragged, using the pointing device in the manner described above, to the approximate position on the position indicator 426 corre¬ sponding to the location in the list of named colors where the desired color is expected to be. As the extent indicator 428 is dragged, the colors scroll through the color chip blocks 431-439 in the color selector displa area 410. When the button on the pointing device is released, the displayed color'chip blocks will then be those from the position in the list corresponding to the position on the position indicator 426 to which the extent indicator 428 was dragged. For example, if the desired color is Medium Green, which is expected to be at about the midpoint in the list of named colors, by dragging the extent indicator 428 to the middle of the position indicator 426.
.A user may select one of the displayed colors to be the current color, and thus be displayed in the right side block 36 is the color display block 30 (of Figure 2) , by activating the color chip block displaying that color, in the manner described above.
In actual operation, each named color has a corresponding set of predefined RGB components which define that color. When a color is selected by activating its color chip block, the color defined by those predefined RGB components is displayed in the color display block 30 (of Figure 2) . The RGB components defin¬ ing that color will then be supplied to the invoking application program if the OK control selector 71 or APPLY control selector 73 is activated. It is further possible to return the actual name of the selected color to the invoking application program when the OK control selector 71 or APPLY control selector 73 is activated. (This is not available in any other color selector model, and if the selected color is changed by any other color selector model, then the name is not returned to the invoking application program.)
Figure 7 is a screen display of a grayscale selector model widget 500 in accordance with the present invention. Figure 7 is similar to the prior art grayscale selector models, described above, because it includes a slider for selecting the desired shade of gray as the desired color. The grayscale selector model widget 500 of Figure 7 may be displayed in the color selector display area 50 (of Figure 2) when selected by the user, as described above.
The grayscale selector model widget 500 is an instance of an XmBulletinBoard widget. It consists of several subwidgets as described below. First, a grayscale slider 510 is displayed
3 i across the middle of the color selector display area 50. The grayscale slider 510 is an instance of an XmScale widget. The grayscale slider 510 further includes a pointer 514, which indicates the relative brightness of gray of the current color 5 and a white percentage indicator 512, displayed above the pointer 514, which in Figure 7 is "82%". In the illustrated embodiment the background of the grayscale slider 510 includes a bit-mapped display. At the left side of the grayscale slider 510, the background is all black, and at the right side, it is all white. 10 In between, some portion at the top is white and the remaining portion at the bottom is black. The proportion of black decreas¬ es and the amount of white increases going from the left side to the right side of the grayscale slider 510.
15 Referring to Figure 2, when the color selection widget 10 is invoked by the application program, and the user selects the grayscale model by activating the menu selection block 46 and then activating the grayscale selection (as described above) , the screen display illustrated in Figure 7 is inserted into the color 0 model display area 50. The label "GRAYSCALE", which is associ¬ ated with the grayscale type selector model illustrated in Figure 1, is displayed as the color model option menu title 44. This indicates that the color selector model currently active in the color model display area 50 is the grayscale model.
:5
When the grayscale selector model widget 500 is initially displayed, the slider is set to a position which approximates the gray represented by the current color. The current color is converted into a shade of gray by computing the average of the 0 red, green and blue components of the current color, and setting the value of all three components to that average value.
The pointer 514 of the grayscale slider 510 may be moved in a manner similar to that described for the sliders illustrated in Figures 4 and 5. The brightness of the gray is increased by moving the pointer 514 to the right. In that case, the value of s5 all three RGB components are incremented by the same amount. The gray represented by these incremented components is displayed in the right side block 36 of the color display block 30 (of Figure 2) . The brightness of the gray is decreased by moving the point¬ er to the left. In that case, the value of all three RGB compo- 0 nents are decremented by the same amount, and the resulting gray is displayed in the color display block 30.
The background in the grayscale slider 510 is an aid to a user by giving a graphic indication of the effects of moving the 5 pointer. I.e., when the pointer 514 is at the left side, the current color will be black; when the pointer 514 is at the right side, the current color will be white, and in between the color is a shade of gray formed by mixing black and white in the approximate proportions indicated by the background. By main- 0 taining all of the RGB components at the same value, shades of gray generated using the grayscale selector model widget appear identical, whether displayed on a color display or a grayscale display.
5 The color selectors described above in relation to Figures 3 to 7 may be used either alone to select a desired color, or may be used in conjunction with each other. For example, the color browser model widget 400 illustrated in Figure 6 may be used to select a named color which is close to the desired one. Then the 0 RGB color mixer widget 300 illustrated in Figure 5 may be used to increase the green content slightly. The HLS color mixer widget 200 illustrated in Figure 4 may then be used to increase the color saturation slightly. Finally, a mixture of the color
resulting from the above steps and a color from one of the predetermined palettes of colors in the color picker widget 100 illustrated in Figure 3 may be formed and one of the colors in the interpolated palette 130 (of Figure 3) may be selected, and the OK control selector 71 (of Figure 2) activated. This color will then be placed in the desired area of the invoking applica¬ tion program.
A color selector as described above provides flexibility to the user by allowing the user to select from among several color selector models. The user may select the color selection tool which will best allow the accurate generation -of a desired color. As described above these tools allow a user to select from among all the colors which a color display is able to produce, without requiring a knowledge of colorimetry, but allowing a user with such knowledge to use the color mixer tools if desired.
It may be desirable that a color developed in the course of using the color selection widgets described above illustrated in Figures 3 to 7 be saved for use later, without requiring that that color be made the current color. The scratchpad, invoked by activating the scratchpad selector 60 (of Figure 2) provides such storage.
Figure 8 is a screen display of a scratch pad 600 in accor¬ dance with the present invention. The scratch pad 600 of Figure 8 is displayed as an additional pop-up window on the color display device when the scratch pad selector 60 (of Figure 2) is activated.
The scratch pad 600 of Figure 8 is an instance of a pop-up dialog box. The pop-up dialog box 600 consists of a scratch pad
H i
label 602, which in Figure 8 is "SCRATCH PAD ...", centered at the top. The remainder of the dialog box is described below.
First, a color display area 610 is displayed in the center of the dialog box, and consists of an color chip block 612 and a scroll bar 614. The color display area 610 is an instance of an XmScrolledWindow widget, the color chip block 612 is an instance of an XmDrawnButton widget and the scroll bar 614 is an instance of an XmScrollbar widget.
Second, a paintcan tile 620 is centered above the color chip display area 610. The paintcan tile 620 is an instance of an XmPushButton widget and has a picture of a paintcan pouring out paint displayed on it. It is similar to the paintcan tiles 140R and 140L (of Figure 2) .
Third, a paintcan label 640, which in Figure 8 is "SAVE COLORS HERE ...", is centered above the paintcan tile 620. The paintcan label 640 is an instance of an XmLabel widget.
Fourth, a set 630 of control selectors is displayed below the color chip display area 610. A first control selector 632 is labeled "CLEAR" and a second control selector 634 is labeled "CANCEL". The control selectors 632 and 634 are respective instances of XmPushButton widgets.
Referring to Figure 2, the user invokes the scratch pad 600 by activating the scratch pad selector 60 (of Figure 2) as des¬ cribed above. When invoked, the screen display of the scratch pad 600, illustrated in Figure 8, is displayed over a portion of the screen of the color display. The screen display of Figure 8 possibly overlays a portion of the color selection window 10, and/or the invoking application program, similar to the manner is
which the color selection window 10, itself, is displayed in a portion of the color display possibly overlaying a portion of the invoking application program.
The scratch pad 600 maintains a list of stored colors. The user may scroll through that list using the scroll bar 614 in the manner described above in relation to the scroll bar 420 in Figure 6. Each time the user activates the scroll down button of scroll bar 614, the next color in the list is displayed in the color chip block 612, until the user reaches the bottom of the list. Each time the user activates the scroll up button of scroll bar 614, the previous color in the list is displayed in the color chip block 612. In addition, if the user knows approx¬ imately where in the list of stored colors a desired color is, he can drag the extent indicator of scroll bar 614 toward the approximate location in the list, thus, scrolling through the colors in the scratchpad one-at-a-time until the desired color is located.
To save the current color in the scratch pad 600, the user activates the paintcan tile 620. When the paintcan tile is activated, the current color is added to the list, and the color chip display area 510 scrolls to the newly added color. That color is displayed in the color chip block 612 and the scroll bar 614 reflects the relative location in the list where the new color is stored. The paintcan label 640 is a hint to the user on how to save a color.
To retrieve a previously stored color from the scratch pad 600 and make that color the current color, the user first scrolls to the desired color using the scroll bar 614, then activates the color chip block 612. When this is done, the selected color from the scratch pad 600 is made the currently selected color and is
displayed in the right side block 36 of the color display block 30 (of Figure 2) . The user may reactivate the previously active color selector by manipulating the cursor, in a manner similar to that described above, to the color selector window 10 (of Figure 2) , and may then reactivate the scratchpad window 600 by manipu¬ lating the cursor to the scratchpad window 600. The user may go back and forth between these windows as often as desired.
The CANCEL control selector 634, when activated by the user, will return control to the previously active color selector widget 10 which will then remove the scratchpad window 600. The CLEAR control selector 632, when activated by the user, will delete the previously saved list of colors, replace the list with one default white color. The scratch pad 600 remains in control, however. This enables the user to begin accumulating colors anew.
The scratch pad allows the user to derive and save colors which may be used later. It also enables colors to be trans- ferred more easily among the different color selector model widgets .
Claims
1. In a computer system including a display device for displaying an image, a method using several color selectors for applying a color to one of a plurality of areas in said image without requiring the use of colorimetry of a palette display of all available colors, comprising the steps of: choosing one of a plurality of color selectors; selecting a current color using the chosen color selector; displaying, on said display device, said current color; repeating said choosing, selecting and displaying steps until said current color is acceptable; applying said acceptable color to said area.
2. The method of claim 1, wherein said choosing step comprises the steps of: displaying on said display device a list having a plurality of entries, each entry occupying a mutually different position on said display device and corresponding to a mutually different one of said plurality of color selectors; highlighting one of said plurality of entries; and indicating that the color selector corresponding to said highlighted entry is said chosen color selector.
3. The method of claim 2, wherein said highlighting step comprises the steps of: displaying a cursor at a position on said display device; and manipulating the position of said cursor to the same position on said display device as said one of said plurality of entries.
4. The method of claim 3, wherein said manipulating step comprises the steps of: arranging said plurality of entries in a circular list; determining when a TAB key on a keyboard of said computer system has been pressed; moving said cursor to the position on said display device of the next entry in said circular list when it has been determined that said TAB key has been pressed.
5. The method of claim 1, wherein said selecting step comprises the steps of: displaying, on said display device, a fixed palette of preselected colors; designating one of said preselected colors to be one of two endpoint colors for a color interpolator; creating a palette of interpolated colors as a result of interpolating the two end-point colors; and selecting a color from either the ixed palette or the interpolated palette to be the current color.
6. The method of claim 5, wherein said step of displaying a fixed palette comprises the step of displaying a predetermined number of blocks, each containing a different color, wherein said step of displaying a fixed palette comprises the step of displaying ten blocks, each containing a different color.
7. The method of claim 6, wherein said designating step comprises the steps of: displaying a cursor; manipulating the position of said cursor to be at the position of one of said predetermined number of blocks; indicating that the color contained in said one of said predetermined number of blocks is said designated color. on
8. The mehod of claim 7 wherein said manipulating step comprises the steps of: arranging said predetermined number of blocks into a circular list; determining when an direction indicating key on a keyboard of said computer system has been pressed; moving said cursor to the position of the adjacent entry in said circular list, in the direction indicated by said direction indicating key, when it has been determined that said direction indicating key has been pressed.
9. The method of claim 7, wherein said manipulating step comprises the step of moving the position of said cursor in a manner corresponding to the movement of a pointing device until the position of said cursor is in the same position on said display device as said one of said predetermined number of blocks.
10. The method of claim 7, wherein said indicating step comprises the steps of: determining when a RETURN key on a keyboard of said computer system has been pressed; and indicating that the color of said one of said plurality of blocks is selected to be the current color when said RETURN key has been pressed.
11. The method of claim 7, wherein said indicating step comprises the steps of: determining when a pushbutton on a pointing device of said computer system has been pressed; and indicating that the color of said one of said plurality of blocks is selected to be the current color when said pushbutton on said pointing device has been pressed.
12. Apparatus for applying a color to one of a plurality of a plurality of areas in an image, comprising: a display device for displaying said image; an input device for obtaining in ormation from a user; means, responsive to said input device, for choosing one of a plurality of color selectors; means, responsive to said input device, for selecting a current color using the chosen color selector; means for displaying, on said display device, said current color; means, responsive to said input device, for applying said current color to said one of said areas.
13. The apparatus of claim 12, wherein said choosing means comprises: means for displaying, on said display device, a list having a plurality of entries, each entry occupying a mutually different position on said display device and corresponding to a mutually different one of said color selectors; means, responsive to said input device, for highlighting one of said plurality entries; and means, responsive to said input device, for indicating that the color selector corresponding to said highlighted entry is said chosen color selector.
14. The apparatus of claim 13, wherein said highlighting means comprises: means, responsive to said_ input device, for manipulating the position of said cursor to the same position on said display device as said one of said plurality of entries.
15. The apparatus of claim 14, wherein: said input device is a keyboard, having a TAB key; and said manipulating means comprises: means for arranging said plurality of entries in a circular list; means for determining when said TAB key has been pressed; and 5Ό means for moving said cursor to the position, on said display device, of the next entry in said circular list when it has been determined that said TAB key has been pressed.
16. The apparatus of claim 14, wherein: said input device is a pointing device; and said manipulating means comprises means for moving their position of said cursor in a manner corresponding to the movement of said pointing device until the position of said cursor is in the same position on said display device as said one of said plurality of entries.
17. The apparatus of claim 13, wherein: said input device is a keyboard including a RETURN key; and said indicating means comprises: means for determining when said RETURN key has been pressed; and means for indicating that the color selector corresponding to the highlighted entry is said chosen color selector when said RETURN key has been pressed.
18. The apparatus of claim 13, wherein: said input device is a pointing device including a pushbutton; and said indicating means comprises: 5 { means for determining when said pushbutton has been pressed; and means for indicating that the color selector corresponding to said selected entry is said chosen color selector when said pushbutton has been pressed.
19. The apparatus of claim 12, wherein said selecting means comprises: means for displaying, on said displaying device, a fixed palette of preselected colors; means for designating one of said preselected colors to be one of two endpoint colors for a color interpolator; means for creating a palette of interpolated colors are a result of interpolating the -two endpoint colors; and means from selecting a color from either the fixed palette of the interpolated palette to be the current color.
20. The apparatus of claim 19, wherein said fixed palette displaying means comprises means for displaying a predetermined number of blocks, each containing a different color.
21. The apparatus of claim 20, wherein said designating means comprises: means for displaying a cursor on said display device; means for manipulating the position of said cursor to be within one of said predetermined number of blocks; and means for indicating that the color contained in said one of said predetermined number of blocks is said designated color.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US693,484 | 1985-01-22 | ||
US69348491A | 1991-04-30 | 1991-04-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO1992020024A1 true WO1992020024A1 (en) | 1992-11-12 |
Family
ID=24784858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US1992/003677 WO1992020024A1 (en) | 1991-04-30 | 1992-04-29 | Color selection method and apparatus |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO1992020024A1 (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0794515A3 (en) * | 1996-03-07 | 1998-04-01 | Bayer Corporation | A method for modifying a digital image |
WO2001053925A1 (en) * | 2000-01-19 | 2001-07-26 | Koninklijke Philips Electronics N.V. | Jog wheel for fast web browser navigation |
WO2001078375A1 (en) * | 2000-04-10 | 2001-10-18 | OCé PRINTING SYSTEMS GMBH | Method and system for the processing of a colour conversion table |
WO2001080088A2 (en) * | 2000-04-12 | 2001-10-25 | Carl Kupersmit | Method of searching and producing matching color information |
WO2002029536A2 (en) * | 2000-10-03 | 2002-04-11 | Colour Communications Limited | Colour system |
US20120170836A1 (en) * | 2011-01-04 | 2012-07-05 | Ppg Industries Ohio, Inc. | Web-based color selection system |
US20130207994A1 (en) * | 2012-02-13 | 2013-08-15 | Vilen Rodeski | System and method for generating and applying a color theme to a user interface |
US8816611B2 (en) | 2007-05-16 | 2014-08-26 | Koninklijke Philips N.V. | Button based color navigation method and device in a lighting or visualization system |
US9158457B2 (en) | 2011-11-17 | 2015-10-13 | International Business Machines Corporation | Adjustment of multiple user input parameters |
US10152804B2 (en) | 2015-02-13 | 2018-12-11 | Smugmug, Inc. | System and method for dynamic color scheme application |
US11030670B2 (en) | 2015-05-22 | 2021-06-08 | Ppg Industries Ohio, Inc. | Analyzing user behavior at kiosks to identify recommended products |
US11238511B2 (en) | 2015-05-22 | 2022-02-01 | Ppg Industries Ohio, Inc. | Home Décor color matching |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0313796A2 (en) * | 1987-10-26 | 1989-05-03 | Tektronix, Inc. | Computer display color control and selection system |
EP0403120A2 (en) * | 1989-06-16 | 1990-12-19 | International Business Machines Corporation | Colour display colour control |
-
1992
- 1992-04-29 WO PCT/US1992/003677 patent/WO1992020024A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0313796A2 (en) * | 1987-10-26 | 1989-05-03 | Tektronix, Inc. | Computer display color control and selection system |
EP0403120A2 (en) * | 1989-06-16 | 1990-12-19 | International Business Machines Corporation | Colour display colour control |
Non-Patent Citations (1)
Title |
---|
IBM TECHNICAL DISCLOSURE BULLETIN. vol. 26, no. 9, February 1984, NEW YORK US page 4686; L.K.STEPHENS: 'Specifying color by block selection' * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6362829B1 (en) | 1996-03-07 | 2002-03-26 | Agfa Corporation | Method for modifying a digital image |
EP0794515A3 (en) * | 1996-03-07 | 1998-04-01 | Bayer Corporation | A method for modifying a digital image |
WO2001053925A1 (en) * | 2000-01-19 | 2001-07-26 | Koninklijke Philips Electronics N.V. | Jog wheel for fast web browser navigation |
WO2001078375A1 (en) * | 2000-04-10 | 2001-10-18 | OCé PRINTING SYSTEMS GMBH | Method and system for the processing of a colour conversion table |
WO2001080088A2 (en) * | 2000-04-12 | 2001-10-25 | Carl Kupersmit | Method of searching and producing matching color information |
WO2001080088A3 (en) * | 2000-04-12 | 2003-12-18 | Carl Kupersmit | Method of searching and producing matching color information |
WO2002029536A2 (en) * | 2000-10-03 | 2002-04-11 | Colour Communications Limited | Colour system |
WO2002029536A3 (en) * | 2000-10-03 | 2002-08-01 | Colour Comm Ltd | Colour system |
US8816611B2 (en) | 2007-05-16 | 2014-08-26 | Koninklijke Philips N.V. | Button based color navigation method and device in a lighting or visualization system |
AU2012204570B2 (en) * | 2011-01-04 | 2015-07-02 | Ppg Industries Ohio, Inc. | Web-based color selection system |
AU2012204489B2 (en) * | 2011-01-04 | 2015-08-13 | Ppg Industries Ohio, Inc. | Web-based architectural color selection system |
CN103370682A (en) * | 2011-01-04 | 2013-10-23 | Ppg工业俄亥俄公司 | WEB-based color selection system |
CN103403711A (en) * | 2011-01-04 | 2013-11-20 | Ppg工业俄亥俄公司 | Web-based architectural color selection system |
US20120170840A1 (en) * | 2011-01-04 | 2012-07-05 | Ppg Industries Ohio, Inc. | Web-based architectural color selection system |
US8849027B2 (en) * | 2011-01-04 | 2014-09-30 | Ppg Industries Ohio, Inc. | Web-based color selection system |
US20120170836A1 (en) * | 2011-01-04 | 2012-07-05 | Ppg Industries Ohio, Inc. | Web-based color selection system |
US9141252B2 (en) * | 2011-01-04 | 2015-09-22 | Ppg Industries Ohio, Inc. | Web-based architectural color selection system |
US9158457B2 (en) | 2011-11-17 | 2015-10-13 | International Business Machines Corporation | Adjustment of multiple user input parameters |
US20130207994A1 (en) * | 2012-02-13 | 2013-08-15 | Vilen Rodeski | System and method for generating and applying a color theme to a user interface |
US10152804B2 (en) | 2015-02-13 | 2018-12-11 | Smugmug, Inc. | System and method for dynamic color scheme application |
US11030670B2 (en) | 2015-05-22 | 2021-06-08 | Ppg Industries Ohio, Inc. | Analyzing user behavior at kiosks to identify recommended products |
US11238511B2 (en) | 2015-05-22 | 2022-02-01 | Ppg Industries Ohio, Inc. | Home Décor color matching |
US11978102B2 (en) | 2015-05-22 | 2024-05-07 | Ppg Industries Ohio, Inc. | Home décor color matching |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5559947A (en) | Component-based icon construction and customization system | |
US5689286A (en) | Component-based icon construction and customization system | |
US4683468A (en) | Method for manipulation of graphic sub-objects in an interactive draw graphic system | |
US5371844A (en) | Palette manager in a graphical user interface computer system | |
US5504853A (en) | System and method for selecting symbols and displaying their graphics objects in a detail window | |
Swayne et al. | Xgobi: Interactive dynamic data visualization in the x window system | |
EP0160548B1 (en) | Method and apparatus for color selection and production | |
EP0740270B1 (en) | Image output device | |
EP0680018B1 (en) | Computer-aided color selection and colorizing system | |
US8018470B2 (en) | Vector based object property variations | |
US5504499A (en) | Computer aided color design | |
AU640281B2 (en) | Three dimensional graphic interface | |
JP2587894B2 (en) | Computer display systems | |
WO1992020024A1 (en) | Color selection method and apparatus | |
JPH02139618A (en) | Operation selector for data processing system and method thereof | |
JPH07200237A (en) | Method and system for operation of display of plurality of applications in data processing system | |
EP0836157A2 (en) | Information processing apparatus | |
AU625676B2 (en) | Three dimensional graphic interface | |
RU2032212C1 (en) | Method for character information input in computer | |
JPH10327352A (en) | Mixing device with video signal mixer | |
EP0854414B1 (en) | Method and apparatus for presenting a data range for user selection of a value within the range via a graphical user interface | |
JP3093605B2 (en) | Image editing device | |
JP5232119B2 (en) | How to customize the content screen color | |
JP2003099022A (en) | Device, method, and program for multipoint measurement data display | |
JPH09146753A (en) | Method and device for displaying multiwindow |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): JP |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): AT BE CH DE DK ES FR GB GR IT LU MC NL SE |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
122 | Ep: pct application non-entry in european phase |