run evolis-printer.pl over generated dumps
[Printer-EVOLIS.git] / evolis-printer.pl
index d37eddd..23f431a 100755 (executable)
@@ -17,10 +17,13 @@ local $/ = "\r";
 
 my $page = 1;
 
+my $name = $ARGV[0] || 'page';
+
 sub save_pbm;
 
 while(<>) {
-       die "no escape at beginning",dump($_) unless s/^\x1B//;
+       die "no escape at beginning",dump($_) unless s/^(\x00*)\x1B//;
+       warn "WARNING: ", length($1), " extra nulls before ESC\n" if $1;
        chomp;
        my @a = split(/;/,$_);
        my $c = shift @a;
@@ -36,10 +39,12 @@ while(<>) {
        } elsif ( $c eq 'Pr' ) {
                print "improve $a[0]\n";
                # FIXME windows sends it, cups doesn't
+       } elsif ( $c eq 'Sv' ) {
+               print "even page on duplex printing\n";
        } elsif ( $c eq 'Db' ) { # XXX not in cups
                my ( $color, $two, $data ) = @a;
                $two eq '2' or die '2';
-               my $path = "page-Db-$color-$page.pbm";
+               my $path = "$name-Db-$color-$page.pbm";
                $page++;
                save_pbm $path, 648, 1015, $data;       # FIXME 1016?
        } elsif ( $c eq 'Dbc' ) { # XXX not in cups
@@ -50,9 +55,12 @@ while(<>) {
                }
                $len == length $comp or warn "wrong length $len != ", length $comp;
 
-               my ( $w, $h ) = ( 646, 1081 );  # from driver
+               my $w = 648 / 2;
+
+=for non-working
 
                my $data;
+
                my $i = 0;
                while ( $i < length $comp ) {
                        my $len = ord(substr($comp,$i,4));
@@ -63,11 +71,14 @@ while(<>) {
                        $i += $len;
                }
 
+=cut
+
+               my $data = $comp;
 
-               my $path = "page-Dbc-$color-$page.pbm";
+               my $path = "$name-Dbc-$color-$page.pbm";
                $page++;
 
-               #$h = int( length($data) * 8 / $w );
+               my $h = int( $len / 128 );
                save_pbm $path, $w, $h, $data;
 
        } else {