chiark / gitweb /
wip a1m
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 7 Mar 2019 00:34:52 +0000 (00:34 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 7 Mar 2019 00:34:59 +0000 (00:34 +0000)
Makefile
generate-board

index 49aa74a57ef83bac0d2c442496b188c966ef7018..e04760da0373edf628e5f73184a974d71068a7cd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -32,11 +32,10 @@ default: all
 BOARDFILES=                                            \
        $(addprefix maxprintable-,      a3)             \
        $(addprefix minprintable-,      a3)             \
-       $(addprefix boundings-, pa3 pa4 pa1-bPageP                      ) \
+       $(addprefix boundings-, pa3 pa4 pa1-bPageP pa1m-bPageP          ) \
        $(addprefix board-,     pa3-bPageB pa3-bPageMT                  \
                                pa4-bPageB pa4-bPageM pa4-bPageT        \
-                               pa1-bPageP                              ) \
-       $(addprefix board-,             b mt)           \
+                               pa1-bPageP pa1m-bPageP                  ) \
        layout-test                                     \
        $(addprefix a4-test-,           b m t)          \
        $(addprefix layout-test-,       b m t)
index ee608f95d7172c25b02f2df81871e6d10797bb6a..7994569a0c713d224c26620cf9fed38164e51c68 100755 (executable)
@@ -35,7 +35,8 @@ our $a1_w = 1684;
 our $a1_h = 2384;
 
 our $max_printeredge = 5.50 * MM2PT;
-
+our $a1m_pasteedge = 3.5 * MM2PT; # along each edge
+our $preamble_from_boundings = '';
 
 # ----- region names from plag, incl. reverse mapping -----
 
@@ -306,18 +307,19 @@ sub face_path ($) {
 
 sub computeboundings() {
   $bb{Entire} = [ 0,0, $a4_h, $a4_w + $a3_h ];
-  my $page2minprintable = sub {
-    my (@p) = @{ $_[0] };
-    [ $p[0] + $max_printeredge,
-      $p[1] + $max_printeredge,
-      $p[2] - $max_printeredge,
-      $p[3] - $max_printeredge ];
+  my $submargins = sub {
+    my ($margin, $pr) = @_;
+    my @p = @$pr;
+    [ $p[0] + $margin,
+      $p[1] + $margin,
+      $p[2] - $margin,
+      $p[3] - $margin ];
   };
   my $somepage = sub {
     my $id = shift @_;
     print STDERR "defining page Page$id\n";
     $bb{"Page$id"} = [ @_ ];
-    $bb{"Printable$id"} = $page2minprintable->($bb{"Page$id"});
+    $bb{"Printable$id"} = $submargins->($max_printeredge, $bb{"Page$id"});
   };
   my $pageb_a4 = sub {
     $somepage->('B', 0,0, $a4_h, $a4_w );
@@ -340,8 +342,26 @@ sub computeboundings() {
                         @{ $bb{PrintableB} }[0..1],
                         @{ $bb{PrintableT} }[2..3],
                        ];
-  } elsif ($maxpaper eq 'a1') {
+  } elsif ($maxpaper =~ m/^a1/) {
+    my $surround = 5 * MM2PT;
+    my $surroundw = $bb{Entire}[2] + $surround*2;
+    my $surroundh = $bb{Entire}[3] + $surround*2;
     $somepage->('P', 0,0, $a1_w, $a1_h);
+    my $offx = 0.5*($bb{PageP}[2] - $bb{Entire}[2]);
+    my $offy = 0.5*($bb{PageP}[3] - $bb{Entire}[3]);
+    $bb{Entire}[0] += $offx;  $bb{Entire}[1] += $offy;
+    $bb{Entire}[2] += $offx;  $bb{Entire}[3] += $offy;
+    $preamble_from_boundings = <<END;
+        $offx $offy translate
+         -$surround -$surround moveto
+          $surroundw 0         rlineto
+          0 $surroundh         rlineto
+          -$surroundw 0        rlineto
+                 closepath clip
+END
+    if ($maxpaper eq 'a1m') {
+      $bb{Cutout} = $submargins->($a1m_pasteedge, $bb{Entire});
+    }
   } else {
     confess;
   }
@@ -393,6 +413,7 @@ sub preamble() {
 << /PageSize [ @$sz ] >> setpagedevice
 /board {
   gsave
+$preamble_from_boundings
   34 -15 translate
 END
   if ($maxpaper eq 'a4') {
@@ -892,7 +913,7 @@ sub play_hint () {
 $xopts = shift @ARGV if $ARGV[0] =~ s/^-X//;
 $bounding = $1 if $xopts =~ s/b(\w+)//;
 $maxpaper = $1 if $xopts =~ s/p(\w+)//;
-$maxpaper =~ m/^a[134]$/ or confess;
+$maxpaper =~ m/^a[134]$|^a1m$/ or confess;
 
 ($facesf, @ARGV) = @ARGV or die;
 parse_input_graph();