chiark / gitweb /
trim-ps script to make files print faster
authorian <ian>
Sat, 16 Sep 2006 01:12:43 +0000 (01:12 +0000)
committerian <ian>
Sat, 16 Sep 2006 01:12:43 +0000 (01:12 +0000)
layout/layout
layout/trim-ps [new file with mode: 0755]

index ed8ba2f2c41b4507a18b961c817763eb78964489..d20102316e4e885b4956c60bcc3c9ce069f8f079 100755 (executable)
@@ -169,7 +169,7 @@ our $lmu_lenboxh= $lmu_marktpt * 1.100;
 our $lmu_txtboxpadx= $lmu_marktpt * 0.335;
 our $lmu_lenboxpadx= $lmu_marktpt * 0.005;
 our $lmu_txtboxoff= $lmu_marklw / 2;
-our $lmu_lenboxoff= -$lmu_marklw * 1.5;
+our $lmu_lenboxoff= -$lmu_marklw * 1.0;
 our $lmu_txtboxlw= 1;
 
 our $olu_left= 10 * $scale;
@@ -777,13 +777,12 @@ print DEBUG "ps $p0 $p1 $lenperp ($ppu)\n";
        my ($pt,$ad,$len);
        $param= ($p0+$p1)*0.5;
        $pt= &$calcfn;
-       $ad= ang2deg($pt->{A}) + 90;
+       $ad= ang2deg($pt->{A});
        $len= sprintf "%.0f", $lenperp * abs($p1-$p0);
        ol("      gsave\n".
           "        $pt->{X} $pt->{Y} translate\n".
-          "        $ad rotate 0.75 dup scale\n".
-          "        0 $lmu_lenboxh $lmu_lenboxpadx $lmu_lenboxoff".
-          " ($len) label_in_box\n".
+          "        $ad rotate\n".
+          "        lf setfont  0 $lmu_lenboxoff moveto  ($len) show\n".
           "      grestore\n");
     }
     return unless $draw =~ m/[ARS]/;
diff --git a/layout/trim-ps b/layout/trim-ps
new file mode 100755 (executable)
index 0000000..740d0f7
--- /dev/null
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+foreach $e (qw(M=moveto
+              L=lineto
+              N=newpath
+              C=closepath_clip
+              W=setlinewidth_stroke
+              R=grestore
+              S=gsave
+              I=setgray)) {
+    $_= $e;
+    s/^([A-Z])\=// or die;
+    $letter= $1;
+    y/_/ /;
+    $defs.= "/$letter { $_ } bind def\n";
+    $func.= "s/\\s$_\\s/\\n$letter\\n/g;\n";
+}
+eval "sub s { $func }; 1;" or die $@;
+
+while (<>) {
+    if (m/^\%\!/) {
+       print or die $!;
+       print $defs or die $!;
+    } elsif (m/^\%/) {
+    } else {
+       s/^\s+/\n/; s/$/\n/;
+       s/\s(\d{3,}\.\d{0,3})\d*\s+(\d{3,}\.\d{0,3})\d*\s+(moveto|lineto)\s/
+           "\n$1 $2 ".uc(substr($3,0,1))."\n"
+               /ge;
+       &s;
+       s/\n+/\n/g;
+       s/^\n//;
+       print or die $!
+           if m/\S/;
+    }
+}