chiark / gitweb /
new color() thing
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 5 Dec 2020 21:24:02 +0000 (21:24 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 5 Dec 2020 21:24:02 +0000 (21:24 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
pumpkin-books.ps.pl

index 93b83f244ac34464198af004d7a31684ddc16d98..acd4ad90fee49552a21b7b0ce9947a707e72080b 100755 (executable)
@@ -2,8 +2,6 @@
 
 use strict;
 
-our $black = '0 0 0 setrgbcolor';
-
 my $pumpkin = [".9 .7 0", "0 0 0"];
 my $green = ["0 .5 0", "1 1 1"];
 my $red = ["1 0 0", "0 0 0"];
@@ -13,17 +11,32 @@ my $moth = ["0 0 0", "1 1 1"];
 my $purple = ["1 0 0.8", "0 0 0"];
 my $lotus = ["0.6 0.7 .5", "0.5 0.5 0"];
 
+sub colour ($) {
+  my ($c) = @_;
+  if ($c =~ m/[^ 0-9.]/) {
+    return $c;
+  } elsif ($c =~ m/^\s*\S+\s*$/) {
+    return "$c setgray";
+  } elsif ($c =~ m/./) {
+    return "$c setrgbcolor";
+  } else {
+    return '';
+  }
+}
+
+our $black = colour('0');
+
 sub chip ($$) {
   my ($cary, $pips) = @_; # put in a gsave translate
   my $o = <<END;
   newpath
   0 0 chip 0.5 mul 0 360 arc
   gsave 1 setlinewidth $black stroke grestore
-  $cary->[0] setrgbcolor fill
+  ${\ colour($cary->[0]) } fill
 END
   if ($pips) {
     $o .= <<END;
-  $cary->[1] setrgbcolor
+  ${\ colour($cary->[1]) }
 END
   }
   my $spot = sub {