chiark / gitweb /
numbered-alias-sheet: wip for output, debugging
[evade-mail-usrlocal.git] / numbered-alias-sheet
index 0cdc738d93174299b10d5d62520871d258edf25a..f23805ffdb3e3fad9fd5d5de1db3d1d19ad86122 100755 (executable)
@@ -323,7 +323,7 @@ sub determine_size_layout () {
     $lp_y->{f} = $usesz;
     
     print DEBUG Dumper($usesz, \@lp_values, \@numbers_metr,
-                      \@texts_metr, $gap_width, \$colgap_width, \@core_size,
+                      \@texts_metr, $gap_width, $colgap_width, \@core_size,
                       \@item_size, \@eff_paper_size,
                       $lp_y);
 }
@@ -355,20 +355,40 @@ sub write_output () {
        prf "0 %s translate\n", -$eff_paper_size[1];
     }
     my $rows = ceil(@strings / $lp_y->{0});
+    my @cell_size;
+
+    $cell_size[0] = ($eff_paper_size[0] + $colgap_width) / $lp_y->{0};
+    $cell_size[1] = $eff_paper_size[1] / $rows;
 
     foreach my $nums (qw(1 0)) {
        prf("%s findfont %s scalefont setfont\n",
            psstring($nums ? $fontname_num : $fontname),
            $lp_y->{f});
+       prf "%s setlinewidth\n", $gap_width * 0.1;
        print DEBUG "nums? $nums rows=$rows\n";
        foreach my $col (0..$lp_y->{0}-1) {
+           my $col_lhs = $cell_size[0] * $col;
+           if ($col > 0 && $nums) {
+               prf "newpath %s ", $col_lhs - $colgap_width*0.5;
+               prf "%s moveto ", $eff_paper_size[1];
+               prf "0 %s rlineto ", -$cell_size[1] * $rows;
+               prf "stroke\n";
+           }
            foreach my $row (0..$rows-1) {
                my $se = $strings[$col*$rows + $row];
                next unless $se;
-               prf "%s ", ($item_size[0] + $colgap_width) * $col
-                   + ($nums ? 0 : $numbers_metr[4] + $gap_width);
-               prf "%s ", $eff_paper_size[1] - $item_size[1] * ($row + 1);
-               prf "moveto %s show\n", psstring($se->[!$nums]);
+               prf "newpath ";
+               prf "%s ", $col_lhs 
+                   + ($nums ? $numbers_metr[4]
+                      : $numbers_metr[4] + $gap_width);
+               prf "%s ", $eff_paper_size[1] - $cell_size[1] * $row
+                   - $core_size[1];
+               prf "moveto %s ", psstring($se->[!$nums]);
+               if ($nums) {
+                   prf "dup stringwidth pop neg 0 rmoveto ";
+               }
+#              prf " gsave 10 10 rlineto stroke grestore\n";
+               prf "show\n";
            }
        }
     }