mirror of
https://github.com/python/cpython.git
synced 2024-11-29 00:56:12 +01:00
0926deacd5
scripts pynche.py and pynche.pyw for Unix and Windows startup respectively. Document the .pyw file in the README.
175 lines
8.3 KiB
Plaintext
175 lines
8.3 KiB
Plaintext
Pynche - The PYthonically Natural Color and Hue Editor
|
|
Copyright (C) 1998 CNRI
|
|
Author: Barry A. Warsaw <bwarsaw@python.org>
|
|
|
|
Pynche is a color editor based largely on a similar program that I
|
|
originally back in 1987 for the Sunview window system. That editor
|
|
was called ICE, the Interactive Color Editor. I'd always wanted to
|
|
port this program to X but didn't feel like hacking X and C code to do
|
|
it. Fast forward many years, to where Python + Tkinter provides such
|
|
a nice programming environment, with enough power, that I finally
|
|
buckled down and implemented it. I changed the name because these
|
|
days, too many other systems have the acronym `ICE'.
|
|
|
|
Pynche has been tested with Python 1.5.1 using Tk 8.0. It probably
|
|
works with Python 1.5. I've tested it on both Solaris 2.6 and Windows
|
|
NT. There are some funky things that happen on Windows but I think
|
|
they are primarily Tk problems. You'll want to be sure to have Tk
|
|
8.0.3 for Windows. Also, Pynche is very colormap intensive, so it
|
|
doesn't work very well on 8-bit graphics cards. I'll probably fix
|
|
that in the future.
|
|
|
|
Pynche must find a text database of colors, in the X11 format. Pynche
|
|
is distributed with an rgb.txt file from the X11R6.4 distribution for
|
|
this reason, but you can use a different file with the -d option. The
|
|
file xlicense.txt contains the license only for rgb.txt.
|
|
|
|
Pynche is pronounced `Pinch-ee'. Start it by running the pynche.py
|
|
driver. On Windows, run pynche.pyw to inhibit the console window.
|
|
|
|
The top part of the main Pynche window contains the "variation
|
|
strips". Each strip contains a number of "color chips". The strips
|
|
always indicate the currently selected color by a highlight rectangle
|
|
around the selected color chip, with an arrow pointing to the chip.
|
|
Each arrow has an associated number giving you the color value along
|
|
the variation's axis. Each variation strip shows you the colors that
|
|
are reachable from the selected color by varying just one axis of the
|
|
color solid.
|
|
|
|
For example, when the selected color is (in Red/Green/Blue notation)
|
|
127/127/127, the Red Variations strip shows you every color in the
|
|
range 0/127/127 to 255/127/127. Similarly for the green and blue
|
|
axes. You can select any color by clicking on its chip. This will
|
|
update the highlight rectangle and the arrow, as well as other
|
|
displays in Pynche.
|
|
|
|
Click on "Update while dragging" if you want Pynche to update the
|
|
selected color while you drag along any variation strip (this will be
|
|
slower). Click on "Hexadecimal" to display the arrow numbers in hex.
|
|
|
|
In the lower left corner of the main window you see two larger color
|
|
chips. The Selected chip shows you a larger version of the color
|
|
selected in the variation strips, along with its X11 color
|
|
specification. The Nearest chip shows you the closest color in the
|
|
X11 database to the selected color, giving its X11 color name.
|
|
Clicking on the Nearest color chip selects that color. Color distance
|
|
is calculated in the 3D space of the RGB color solid and if more than
|
|
one color name is the same distance from the selected color, the first
|
|
one found will be chosen.
|
|
|
|
Note that there may be more than one X11 color name for the same RGB
|
|
value. In that case, the first one found in the text database is
|
|
designated the "primary" name, and this is shown under the Nearest
|
|
chip. The other names are "aliases" and they are visible in other
|
|
Pynche windows.
|
|
|
|
At the lower right of the main window are three entry fields. Here
|
|
you can type numeric values for any of the three color axes. Legal
|
|
values are between 0 and 255, and these fields do not allow you to
|
|
enter illegal values. You must hit Enter or Tab to select the new
|
|
color.
|
|
|
|
Click on "Update while typing" if you want Pynche to select the color
|
|
on every keystroke (well, every one that produces a legal value!).
|
|
Click on "Hexadecimal" to display and enter color values in hex.
|
|
|
|
There are three secondary windows which are not displayed by default.
|
|
You can bring these up via the "View" menu on the main Pynche window.
|
|
|
|
The "Text Window" allows you to see what effects various colors have
|
|
on the standard Tk text widget elements. In the upper part of the
|
|
window is a plain Tk text widget and here you can edit the text,
|
|
select a region of text, etc. Below this is a button "Track color
|
|
changes". When this is turned on, any colors selected in the other
|
|
windows will change the text widget element specified in the radio
|
|
buttons below. When this is turned off, text widget elements are not
|
|
affected by color selection.
|
|
|
|
You can choose which element gets changed by color selection by
|
|
clicking on one of the radio buttons in the bottom part of this
|
|
window. Text foreground and background affect the text in the upper
|
|
part of the window. Selection foreground and background affect the
|
|
colors of the primary selection which is what you see when you click
|
|
the middle button (depending on window system) and drag it through
|
|
some text.
|
|
|
|
The Insertion is the insertion cursor in the text window, where new
|
|
text will be inserted as you type. The insertion cursor only has a
|
|
background.
|
|
|
|
The "Color List" window shows every color in the text database. This
|
|
is the primary reason why Pynche doesn't work so well on 8-bit
|
|
screens. In the upper part of the window you see a scrolling list of
|
|
all the color names in the database, in alphabetical order. Click on
|
|
any color to select it. In the bottom part of the window is displayed
|
|
any aliases for the selected color (those color names that have the
|
|
same RGB value, but were found later in the text database). For
|
|
example, find the color "Black" and you'll see that its aliases are
|
|
"gray0" and "grey0".
|
|
|
|
If the color has no aliases you'll see "<no aliases>" here. If you
|
|
just want to see if a color has an alias, and do not want to select a
|
|
color when you click on it, turn off "Update on Click".
|
|
|
|
Note that the color list is always updated when a color is selected
|
|
from the main window. There's no way to turn this feature off. If
|
|
the selected color has no matching color name you'll see
|
|
"<no matching color>" in the Aliases window.
|
|
|
|
The "Details" window gives you more control over color selection than
|
|
just clicking on a color chip in the main window. The row of buttons
|
|
along the top apply the specified increment and decrement amounts to
|
|
the selected color. These delta amounts are applied to the variation
|
|
strips specified by the check boxes labeled "Move Sliders". Thus if
|
|
just Red and Green are selected, hitting -10 will subtract 10 from the
|
|
color value along the red and green variation only. Note the message
|
|
under the checkboxes; this indicates the primary color level being
|
|
changed when more than one slider is tied together. For example, if
|
|
Red and Green are selected, you will be changing the Yellow level of
|
|
the selected color.
|
|
|
|
The "At Boundary" behavior determines what happens when any color
|
|
variation hits either the lower or upper boundaries (0 or 255) as a
|
|
result of clicking on the top row buttons:
|
|
|
|
Stop
|
|
When the increment or decrement would send any of the tied
|
|
variations out of bounds, the entire delta is discarded.
|
|
|
|
Wrap Around
|
|
When the increment or decrement would send any of the tied
|
|
variations out of bounds, the out of bounds value is wrapped
|
|
around to the other side. Thus if red were at 238 and +25
|
|
were clicked, red would have the value 7.
|
|
|
|
Preseve Distance
|
|
When the increment or decrement would send any of the tied
|
|
variations out of bounds, all tied variations are wrapped as
|
|
one, so as to preserve the distance between them. Thus if
|
|
green and blue were tied, and green was at 238 while blue was
|
|
at 223, and +25 were clicked, green would be at 15 and blue
|
|
would be at 0.
|
|
|
|
Squash
|
|
When the increment or decrement would send any of the tied
|
|
variations out of bounds, the out of bounds variation is set
|
|
to the ceiling of 255 or floor of 0, as appropriate. In this
|
|
way, all tied variations are squashed to one edge or the
|
|
other.
|
|
|
|
The top row buttons have the following keyboard accelerators:
|
|
|
|
-25 == Shift Left Arrow
|
|
-10 == Control Left Arrow
|
|
-1 == Left Arrow
|
|
+1 == Right Arrow
|
|
+10 == Control Right Arrow
|
|
+25 == Shift Right Arrow
|
|
|
|
Other keyboard accelerators:
|
|
|
|
Alt-w in any secondary window dismisses the window. In the main
|
|
window it exits Pynche.
|
|
|
|
Alt-q in any window exits Pynche.
|