3 # Simulate EVOLIS Dualys printer
8 use Data::Dump qw(dump);
23 die "no escape at beginning",dump($_) unless s/^(\x00*)\x1B//;
24 warn "WARNING: ", length($1), " extra nulls before ESC\n" if $1;
26 my @a = split(/;/,$_);
29 my $f = $a[0] || die 'missing feeder';
30 print "feeder $f | $feeder->{$f}\n";
32 } elsif ( $c eq 'Pc' ) {
35 my $temperature = $a[2];
36 print "temperature $color = $temperature\n";
37 } elsif ( $c eq 'Pr' ) {
38 print "improve $a[0]\n";
39 # FIXME windows sends it, cups doesn't
40 } elsif ( $c eq 'Db' ) { # XXX not in cups
41 my ( $color, $two, $data ) = @a;
42 $two eq '2' or die '2';
43 my $path = "page-Db-$color-$page.pbm";
45 save_pbm $path, 648, 1015, $data; # FIXME 1016?
46 } elsif ( $c eq 'Dbc' ) { # XXX not in cups
47 my ( $color, $line, $len, $comp ) = @a;
48 while ( $len > length($comp) ) {
49 warn "# slurp more ",length($comp), " < $len\n";
52 $len == length $comp or warn "wrong length $len != ", length $comp;
61 while ( $i < length $comp ) {
62 my $len = ord(substr($comp,$i,4));
64 warn "$i comp $len\n";
65 $data .= substr($comp,$i,$len);
66 $data .= "\x00" x ( $w - $len );
74 my $path = "page-Dbc-$color-$page.pbm";
77 my $h = int( $len / 128 );
78 save_pbm $path, $w, $h, $data;
81 warn "UNKNOWN: $c ", dump(@a);
86 my ( $path, $w, $h, $data ) = @_;
87 open(my $pbm, '>', $path);
88 print $pbm "P4\n$w $h\n", $data;
90 print "saved $path $w * $h size ", -s $path, "\n";