our $a4_w = 595;
our $a4_h = 842;
our $a3_h = 1190;
+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 = '';
+our $top_adjuncts_dy_from_boundings = 0;
+our $bottom_adjuncts_dy_from_boundings = 0;
# ----- region names from plag, incl. reverse mapping -----
sub computeboundings() {
$bb{Entire} = [ 0,0, $a4_h, $a4_w + $a3_h ];
- $bb{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 ];
+ my $submargins = sub {
+ my ($margin, $pr) = @_;
+ my @p = @$pr;
+ [ $p[0] + $margin,
+ $p[1] + $margin,
+ $p[2] - $margin,
+ $p[3] - $margin ];
};
- $bb{PrintableB} = $page2minprintable->($bb{PageB});
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 );
};
if ($maxpaper eq 'a3') {
+ $pageb_a4->();
my $mt_offset = $bb{PrintableB}[3] - $max_printeredge;
$somepage->('MT', 0, $mt_offset, $a4_h, $mt_offset + $a3_h );
$bb{PrintableAll} = [
@{ $bb{PrintableMT} }[2..3],
];
} elsif ($maxpaper eq 'a4') {
+ $pageb_a4->();
my $m_offset = $bb{PrintableB}[3] - $max_printeredge;
$somepage->('M', 0, $m_offset, $a4_h, $m_offset + $a4_w );
my $t_offset = $bb{PrintableM}[3] - $max_printeredge;
@{ $bb{PrintableB} }[0..1],
@{ $bb{PrintableT} }[2..3],
];
+ } elsif ($maxpaper =~ m/^a1/) {
+ my $hairs = 30 * MM2PT;
+ my $hairsw = $bb{Entire}[2];
+ my $hairsh = $bb{Entire}[3];
+ 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]);
+ my @hrect = @{ $bb{Entire} };
+ $bb{Entire}[0] += $offx; $bb{Entire}[1] += $offy;
+ $bb{Entire}[2] += $offx; $bb{Entire}[3] += $offy;
+ if ($maxpaper eq 'a1m') {
+ @hrect = @{ $submargins->($a1m_pasteedge, \@hrect) };
+ $bb{Cutout} = $submargins->($a1m_pasteedge, $bb{Entire});
+ }
+ my $w_stroke = $xopts =~ m/W/ ?
+ ' gsave 3 setlinewidth stroke grestore '
+ : '';
+ $preamble_from_boundings = <<END;
+ $offx $offy translate
+ 1 setlinewidth
+ 0 setgray
+ /a1hairs {
+ newpath moveto
+ $hairs 0 rmoveto
+ $hairs -2 mul 0 rlineto
+ $hairs $hairs rmoveto
+ 0 $hairs -2 mul rlineto
+ stroke
+ } def
+ $hrect[0] $hrect[1] a1hairs
+ $hrect[0] $hrect[3] a1hairs
+ $hrect[2] $hrect[3] a1hairs
+ $hrect[2] $hrect[1] a1hairs
+ -$surround -$surround moveto
+ $surroundw 0 rlineto
+ 0 $surroundh rlineto
+ -$surroundw 0 rlineto
+ closepath $w_stroke clip
+END
+ $top_adjuncts_dy_from_boundings = 35;
+ $bottom_adjuncts_dy_from_boundings = -7;
} else {
confess;
}
<< /PageSize [ @$sz ] >> setpagedevice
/board {
gsave
+ $bb->[0] neg $bb->[1] neg translate
+$preamble_from_boundings
34 -15 translate
END
if ($maxpaper eq 'a4') {
o(" 200 0 translate deck1path\n");
o(" } bind def");
o(" $lw setlinewidth ",miscpscolour('playerdeck'),"\n");
- o(" gsave 401 44 translate deckpairpathx stroke grestore");
+ o(" gsave 401 44 $bottom_adjuncts_dy_from_boundings add translate");
+ o(" deckpairpathx stroke grestore");
o(" $lw setlinewidth ",miscpscolour('dykefail'),"\n");
- o(" gsave 242 1363 translate 90 rotate deckpairpathx stroke grestore");
+ o(" gsave 242 1363 $top_adjuncts_dy_from_boundings add translate ");
+ o(" 90 rotate deckpairpathx stroke grestore");
}
sub sea_track(){
my $demo_w = $demo_x0 + $dyke_l * 0.60;
o(" % HS I $colour\n");
o(" gsave\n");
- o(" 550 1705 translate\n");
+ o(" 550 1705 $top_adjuncts_dy_from_boundings add translate\n");
o(" ", ($xi*$interval), " ", (($yi-1)*$interval), " translate\n");
if ($fn) {
o(" gsave\n");
sub play_hint () {
my $sz = 20;
- o(" gsave ",miscpscolour('hinttext')," 260 1715 translate\n");
+ o(" gsave ",miscpscolour('hinttext'),
+ " 260 1715 $top_adjuncts_dy_from_boundings add translate\n");
o(" /Helvetica-Bold findfont $sz scalefont setfont\n");
my @t = split /\n/, $c{PlayHint};
foreach my $i (0..$#t) {
$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();