./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
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; }
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 -----
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
}
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
40 -26 translate
END
# xxx split into pages
+ # xxx setpagedevice
}
sub postamble () {
#----- 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();
transform_coordinates();
adjust_nz();
+regions();
preamble();
fill_faces();
edge_faces();