chiark
/
gitweb
/
~ijackson
/
d.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
a6d847e
)
numbered-alias-sheet: tiles
author
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Sun, 3 Nov 2013 23:27:07 +0000
(23:27 +0000)
committer
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Sun, 3 Nov 2013 23:27:07 +0000
(23:27 +0000)
numbered-alias-sheet
patch
|
blob
|
history
diff --git
a/numbered-alias-sheet
b/numbered-alias-sheet
index 2305a136ca2a0955d6ee702687a79c596fc4dca1..16db545838c7cd255fd19014847d71cb064ab856 100755
(executable)
--- a/
numbered-alias-sheet
+++ b/
numbered-alias-sheet
@@
-13,6
+13,7
@@
our $gapratio = 1.5;
our $lineratio = 1;
our $blankratio = 1;
our @borders = (4,4);
our $lineratio = 1;
our $blankratio = 1;
our @borders = (4,4);
+our @tiles = (1,2);
our @lp_options = ( [ 'blank-below', 'blank-to-right', ],
[ 'landscape', 'portrait' ],
our @lp_options = ( [ 'blank-below', 'blank-to-right', ],
[ 'landscape', 'portrait' ],
@@
-26,6
+27,7
@@
options:
-f<bothfont> set both to same font name
-f[<numfont>[*<scale>]],[<addrfont>] default is $fontname_num*$fontscale_num,$fontname
-b<border>|-b<bx>x<by> all in mm
-f<bothfont> set both to same font name
-f[<numfont>[*<scale>]],[<addrfont>] default is $fontname_num*$fontscale_num,$fontname
-b<border>|-b<bx>x<by> all in mm
+ -T[<xtiles>x]<ytiles> default is $tiles[0]x$tiles[1]
-g<gapratio> number-to-addr gap adjustment
-l<lineratio> inter-line space ("leading") adjustment factor
-b<blankratio> (blank space size) / (text size)
-g<gapratio> number-to-addr gap adjustment
-l<lineratio> inter-line space ("leading") adjustment factor
-b<blankratio> (blank space size) / (text size)
@@
-96,6
+98,9
@@
for (;;) {
$gapratio = $1;
} elsif (s/^-b($dbl_re)$//o) {
$blankratio = $1;
$gapratio = $1;
} elsif (s/^-b($dbl_re)$//o) {
$blankratio = $1;
+ } elsif (s/^-T(?:(\d+)x)(\d+)?$//o) {
+ $tiles[0] = $1 || 1;
+ $tiles[1] = $2;
} elsif (s/^-D/-/) {
open DEBUG, ">&STDERR" or die $!;
} else {
} elsif (s/^-D/-/) {
open DEBUG, ">&STDERR" or die $!;
} else {
@@
-132,6
+137,7
@@
if (!@paperpts) {
our @strings;
our $domain_suffix;
our @strings;
our $domain_suffix;
+our $pertile;
sub readstrings () {
my $nlen = 0;
sub readstrings () {
my $nlen = 0;
@@
-154,6
+160,8
@@
sub readstrings () {
$_->[1] =~ s/$dom_re//o foreach @strings;
}
}
$_->[1] =~ s/$dom_re//o foreach @strings;
}
}
+
+ $pertile = ceil(@strings / ($tiles[0] * $tiles[1]));
}
our @lp_values;
}
our @lp_values;
@@
-300,7
+308,7
@@
sub do_layout_recursive_search ($) {
my $laycountshow = "$lp_y{0} $lp_y{1}";
my $laycountshow = "$lp_y{0} $lp_y{1}";
- $lp_y{0} * $lp_y{1} >=
@strings
+ $lp_y{0} * $lp_y{1} >=
$pertile
or return wontfit "layout fits too few $laycountshow";
print DEBUG " OK $laycountshow\n";
or return wontfit "layout fits too few $laycountshow";
print DEBUG " OK $laycountshow\n";
@@
-363,8
+371,8
@@
sub determine_size_layout () {
sub prf { printf @_ or die $!; }
sub prf { printf @_ or die $!; }
-sub write_output
(
) {
-
prf "%%!\n"
;
+sub write_output
_tile ($
) {
+
my ($tile_string_off) = @_
;
my @cnr;
my $c;
prf "gsave\n";
my @cnr;
my $c;
prf "gsave\n";
@@
-387,7
+395,7
@@
sub write_output () {
prf "90 rotate\n";
prf "0 %s translate\n", -$eff_paper_size[1];
}
prf "90 rotate\n";
prf "0 %s translate\n", -$eff_paper_size[1];
}
- my $rows = ceil(
@strings
/ $lp_y->{0});
+ my $rows = ceil(
$pertile
/ $lp_y->{0});
my @cell_size;
$cell_size[0] = ($eff_paper_size[0] + $colgap_width) / $lp_y->{0};
my @cell_size;
$cell_size[0] = ($eff_paper_size[0] + $colgap_width) / $lp_y->{0};
@@
-412,7
+420,7
@@
sub write_output () {
prf "stroke\n";
}
foreach my $row (0..$rows-1) {
prf "stroke\n";
}
foreach my $row (0..$rows-1) {
- my $se = $strings[$col*$rows + $row];
+ my $se = $strings[$col*$rows + $row
+ $tile_string_off
];
next unless $se;
prf "newpath ";
prf "%s ", $col_lhs
next unless $se;
prf "newpath ";
prf "%s ", $col_lhs
@@
-439,6
+447,22
@@
sub write_output () {
prf "grestore\n";
}
prf "grestore\n";
}
+sub write_output () {
+ prf "%%!\n";
+ my @tile;
+ for ($tile[0]=0; $tile[0]<$tiles[0]; $tile[0]++) {
+ for ($tile[1]=0; $tile[1]<$tiles[1]; $tile[1]++) {
+ prf "%% tile @tile\n";
+ prf "gsave\n";
+ prf "%s ", $tile[$_] * $paperpts[$_] foreach qw(0 1);
+ prf "translate\n";
+ write_output_tile($tile[0] * $pertile +
+ $tile[1] * $pertile * $tiles[0]);
+ prf "grestore\n";
+ }
+ }
+}
+
readstrings();
prepare_metrics();
determine_size_layout();
readstrings();
prepare_metrics();
determine_size_layout();