chiark / gitweb /
yellow: process bag image
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 26 Oct 2021 17:28:44 +0000 (18:28 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 26 Oct 2021 17:30:05 +0000 (18:30 +0100)
Makefile
Sack_-_Sac_-_Zak_brown.svg [moved from Sack_-_Sac_-_Zak_(brown).svg with 100% similarity]
pumpkin-books.ps.pl

index 6ff324bc8cb6984c3b3719f23f323ca9ddcab1b4..121d83868dfea79bc0c30475066edec788e8760b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,8 @@
 
 PUBLISH= pumpkin-books.pdf house-rules.md
 
+SHELL=bash
+
 all:   pumpkin-books.pdf
 
 # Don't print the ps, printers (eg ours!) don't always have the fonts
@@ -8,10 +10,20 @@ all: pumpkin-books.pdf
 pumpkin-books.ps: pumpkin-books.ps.pl
        ./$< >$@.new && mv -f $@.new $@
 
-pumpkin-books.pdf: pumpkin-books.ps
+pumpkin-books.pdf: pumpkin-books.ps bag.pgm
        gs -q -dNOPAUSE -dBATCH -dPDFSETTINGS=/prepress \
                -sDEVICE=pdfwrite -sOutputFile=$@ $<
 
+bag.pgm: Sack_-_Sac_-_Zak_brown.svg Makefile
+       rsvg-convert -f png -o $@.tmp.png $<
+       set -o pipefail; set -e;                        \
+       pngtopnm <$@.tmp.png                            \
+       | ppmtopgm                                      \
+       | pnmdepth 255                                  \
+       | pnmnoraw >$@.tmp.new
+       mv -f $@.tmp.new $@
+
+
 pubssh=c
 pubpath=games-rules/quacks
 puburl=https://www.chiark.greenend.org.uk/~ijackson/
index 00b3ddc316fd49c941eca554bb40f8cf3fb0eff0..9de60621089d49cd93817f824e0311904fb864b4 100755 (executable)
@@ -484,6 +484,7 @@ gsave
   -26 0 translate
   gsave 26 0 translate ${\ chip($anychip,0) } grestore
   gsave 46 0 translate ${\ chip($pumpkin,0) } grestore
+  bag_image
   10 6 translate
   -120 rotate
   ${\ arrow_any("
@@ -606,6 +607,39 @@ $page_pre
 
 END
 
+sub def_image ($) {
+  my ($name) = @_;
+
+  open B, "$name.pgm" or die $!;
+  <B> eq "P2\n" or die;
+  local $/ = undef;
+  my @d = split ' ', <B>;
+  close B;
+
+  my $w = shift @d;
+  my $h = shift @d;
+  my $maxval = shift @d;
+  die unless $maxval eq 255;
+
+  my $sz = $w/17.0;
+  my $hsz = $sz/2;
+
+  print <<END, '{<' or die $!;
+/${name}_image {
+  $w $h 8 
+  [ -$sz 0 0  -$sz  $w 2 div  $h 2 div  ]
+END
+  for (my $i=0; $i< $w*$h; $i++) {
+    printf "%02x", shift @d or die $!;
+  }
+  print <<END or die $!;
+>} image
+} def
+END
+}
+
+def_image("bag");
+
 print "gsave\n" or die $!;
 
 print tile(