3 # Simulate EVOLIS Dualys printer
8 use Data::Dump qw(dump);
14 my $name = $ARGV[0] || 'page';
19 die "no escape at beginning",dump($_) unless s/^(\x00*)\x1B//;
20 warn "WARNING: ", length($1), " extra nulls before ESC\n" if $1;
22 my @a = split(/;/,$_);
25 print "$_ mode insertion @a\n";
26 } elsif ( $c eq 'Pc' ) {
27 print "$_ contrast @a\n";
28 } elsif ( $c eq 'Pl' ) {
29 print "$_ luminosity @a\n";
30 } elsif ( $c eq 'Ps' ) {
31 print "$_ speed @a\n";
32 } elsif ( $c eq 'Pr' ) {
33 print "$_ ribbon $a[0]\n";
34 } elsif ( $c eq 'Ss' ) {
35 print "$_ sequence start\n";
36 } elsif ( $c eq 'Se' ) {
37 print "$_ sequence end\n";
38 } elsif ( $c eq 'Sr' ) {
39 print "$_ sequence recto - card side\n";
40 } elsif ( $c eq 'Sv' ) {
41 print "$_ sequence verso - back side\n";
42 } elsif ( $c eq 'Db' ) {
43 my ( $color, $two, $data ) = @a;
44 print "$c;$color;$two;... bitmap\n";
45 $two eq '2' or die '2';
46 my $path = "$name-Db-$color-$page.pbm"; $page++;
47 save_pbm $path, 648, 1015, $data; # FIXME 1016?
48 } elsif ( $c eq 'Dbc' ) { # XXX not in cups
49 my ( $color, $line, $len, $comp ) = @a;
50 print "$c;$color;$line;$len;... download bitmap compressed\n";
51 while ( $len > length($comp) ) {
52 warn "# slurp more ",length($comp), " < $len\n";
55 $len == length $comp or warn "wrong length $len != ", length $comp;
59 while ( $i < length $comp ) {
60 my $first = substr($comp,$i++,1);
61 if ( $first eq "\x00" ) {
63 } elsif ( $first eq "\xFF" ) {
67 $data .= substr($comp,$i,$len);
68 my $padding = 81 - $len;
69 warn "# $len $padding\n";
70 $data .= "\x00" x $padding;
75 my $path = "$name-Dbc-$color-$page.pbm"; $page++;
76 save_pbm $path, 648, 1015, $data;
84 my ( $path, $w, $h, $data ) = @_;
85 open(my $pbm, '>', $path);
86 print $pbm "P4\n$w $h\n", $data;
88 print "saved $path $w * $h size ", -s $path, "\n";