# Example 9 -- nonlinearly shaded image colorscale
#
# Contributed 31 July 1996 by Dan Kelley <Dan.Kelley@Dal.CA>
# Create a HSB palette file, using 'perl' system command.
# You could do this with 'gawk' or other system commands,
# or you could create the file in matlab or a text editor,
# outside Gri.
# Note: tan is RGB=(210,180,140) in /usr/lib/X11/rgb.txt, in the X11
# 0 to 256 RGB coordinate system. This is (0.820,0.703,0.547) in
# the Gri's 0 to 1 rgb coordinate system. This translates to
# (0.095,0.333,0.820) in the Gri hsb coordinate system. (Note:
# a program to translate RGB to HSB is available from Dan
# Kelley at Dan.Kelley@Dal.CA.)
\min = "-0.20" # min image value
\a = "-0.002" # black if value is < \a
\b = " 0.002" # tan if between this and \a
\max = " 0.030" # spectrum from \b up to this
set y axis 200 0 -25 -5
set x axis 0 2340 180 60
set image range \min \max
# NOTE: I have inserted comments into the example9.colorscale file,
# particularly to track the value of '$value', etc. This is highly
# recommended procedure.
system perl <<"EOF"
open(CS, ">example9.colorscale") || die "Cannot open 'example9.colorscale'\n";
$value = \min;
$increment = (\max - \min) / 255;
for($i=0; $i<256; $i++) {
if ($value < \a) {
print CS "0.000 0.000 0.000 # value=$value is <\a so use black\n";
} elsif ($value < \b) {
print CS "0.095 0.333 0.820 # value=$value is between \a and \b so use tan\n";
} else {
print CS ($value - \b) / (\max - \b), " 1.000 1.000 # value=$value is > \b so use spectrum up to \max\n";
}
$value += $increment;
}
EOF
open example9.colorscale
read image colorscale hsb
draw image palette left -0.01 right 0.04 increment 0.01