chiark / gitweb /
wip regions
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 4 Mar 2019 02:00:43 +0000 (02:00 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 4 Mar 2019 02:00:43 +0000 (02:00 +0000)
Makefile
generate-board

index d9e0cc9c917d9e2b54dc6716a3785cb0333dad46..1e964b66591c8c7fcd975261e8883d3bda4fb192 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@ maxprintable.ps: generate-board faces.plag input-graph misc-data.pl Parse.pm
        ./generate-board faces.plag input-graph $o
 
 minprintable.ps: generate-board faces.plag input-graph misc-data.pl Parse.pm
-       ./generate-board -XM faces.plag input-graph $o
+       ./generate-board -XrPrintableAll faces.plag input-graph $o
 
 layout-test.ps: maxprintable.ps Makefile Parse.pm
        ./generate-board -XW faces.plag input-graph $o
index 70a4e3a83f8bc66ab5deab1fcef6fd0b58c107cb..05945771051e13ffbeeaac3551e4950da9431c82 100755 (executable)
@@ -17,8 +17,10 @@ BEGIN { unshift @INC, qw(.); }
 use Parse;
 
 our $xopts = '';
+our $region = 'Entire';
 our $facesf;
 our %vxname2pos; # $vxname2pos{VXNAME} = Math::GSL::Vector
+our %r; # $r{PrintRegion...}[0..3] = points
 
 sub TAU { M_PI * 2.0; }
 sub MM2PT { 72.0 / 25.4; }
@@ -29,7 +31,7 @@ our $a4_w = 595;
 our $a4_h = 842;
 our $a3_h = 1190;
 
-our $max_printeredge = 5.50;
+our $max_printeredge = 5.50 * MM2PT;
 
 
 # ----- region names from plag, incl. reverse mapping -----
@@ -312,6 +314,26 @@ sub pscolour ($;$) {
   return $r;
 }
 
+sub regions() {
+  $r{Entire} = [ 0,0, $a4_h, $a4_w + $a3_h ];
+  $r{PageB} = [ 0,0, $a4_h, $a4_w ];
+  my $page2minprintable = sub {
+    my (@p) = @{ $_[0] };
+    [ $p[0] + $max_printeredge,
+      $p[1] + $max_printeredge,
+      $p[2] - $max_printeredge,
+      $p[3] - $max_printeredge ];
+  };
+  $r{PrintableB} = $page2minprintable->($r{PageB});
+  my $mt_offset = $r{PrintableB}[3] - $max_printeredge;
+  $r{PageMT} = [ 0, $mt_offset, $a4_h, $mt_offset + $a3_h ];
+  $r{PrintableMT} = $page2minprintable->($r{PageMT});
+  $r{PrintableAll} = [
+                     @{ $r{PrintableB} }[0..1],
+                     @{ $r{PrintableMT} }[2..3],
+                    ];
+}
+
 sub o_amble (@) {
   # CPerl-mode does a really awful thing with %s in the preamble
   # and postamble, causing constant useless flashing
@@ -322,12 +344,10 @@ sub o_amble (@) {
 }
       
 sub preamble() {
-  my $tprinteredge = ($xopts =~ m/M/ ? $max_printeredge : 0) * MM2PT;
-  my $xmax = $a4_h - $tprinteredge;
-  my $ymax = ($a4_w + $a3_h) - 2 * $max_printeredge - $tprinteredge;
+  my $r = $r{$region}; confess $region unless $r;
   o_amble(<<END);
 &!PS-Adobe-3.0
-&&BoundingBox $tprinteredge $tprinteredge $xmax $ymax
+&&BoundingBox @$r
 &&Pages: 1
 &&EndComments
 &&BeginProlog
@@ -338,6 +358,7 @@ sub preamble() {
   40 -26 translate
 END
   # xxx split into pages
+  # xxx setpagedevice
 }
 
 sub postamble () {
@@ -771,6 +792,7 @@ sub play_hint () {
 #----- main program -----
 
 $xopts = shift @ARGV if $ARGV[0] =~ s/^-X//;
+$region = $1 if $xopts =~ s/r(\w+)//;
 
 ($facesf, @ARGV) = @ARGV or die;
 parse_input_graph();
@@ -780,6 +802,7 @@ calculate_centres();
 transform_coordinates();
 adjust_nz();
 
+regions();
 preamble();
 fill_faces();
 edge_faces();