File Coverage

blib/lib/RxLaser.pm
Criterion Covered Total %
statement 68 78 87.1
branch n/a
condition n/a
subroutine 16 20 80.0
pod 0 11 0.0
total 84 109 77.0


line stmt bran cond sub pod time code
1             package RxLaser;
2              
3 1     1   1060 use strict;
  1         2  
  1         42  
4 1     1   5 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
  1         2  
  1         1230  
5              
6             require Exporter;
7              
8             @ISA = qw(Exporter);
9             @EXPORT = qw();
10             @EXPORT_OK = qw(form1500 formub92 form485 form486 form487 lineprinter
11             lineprinter48 half_linefeed pcl_unpack reset);
12             $VERSION = '0.15';
13              
14             sub new
15             {
16 1     1 0 43 my $class = shift;
17 1         4 return( bless{ } , $class );
18             }
19              
20             ######################## USER METHODS ################################
21              
22             # ------------------------- RxLaser form1500 -------------------------
23             sub form1500
24             {
25 1     1 0 106 my $self = shift;
26 1         4 my $a = $self->_Portrait;
27 1         3 $a .= $self->_Form('1');
28 1         3 $a .= $self->lineprinter;
29 1         3 $a .= $self->_PerfSkip;
30 1         3 $a .= $self->_Horiz('12');
31 1         3 $a .= $self->_Vert('7.2727');
32 1         10 return $a;
33              
34             }
35             # ------------------------- RxLaser formub92 -------------------------
36             sub formub92
37             {
38 1     1 0 423 my $self = shift;
39 1         6 my $a = $self->_Portrait;
40 1         4 $a .= $self->_Form("2");
41 1         6 $a .= $self->lineprinter;
42 1         5 $a .= $self->_PerfSkip;
43 1         3 $a .= $self->_Horiz('7');
44             # $a .= $self->_Vert("7.2727");
45 1         16 return $a;
46             }
47             # ------------------------- RxLaser form485 -------------------------
48             sub form485
49             {
50 1     1 0 204 my $self = shift;
51 1         3 my $a = $self->_Portrait;
52 1         3 $a .= $self->_Form('3');
53 1         3 $a .= $self->lineprinter;
54 1         2 $a .= $self->_PerfSkip;
55 1         3 $a .= $self->_Horiz('7');
56 1         10 return $a;
57             }
58              
59             # ------------------------- RxLaser form486 -------------------------
60             sub form486
61             {
62 1     1 0 87 my $self = shift;
63 1         3 my $a = $self->_Portrait;
64 1         3 $a .= $self->_Form('4');
65 1         3 $a .= $self->lineprinter;
66 1         3 $a .= $self->_PerfSkip;
67 1         4 $a .= $self->_Horiz('7');
68 1         5 return $a;
69             }
70              
71             # ------------------------- RxLaser form487 -------------------------
72             sub form487
73             {
74 1     1 0 107 my $self = shift;
75 1         3 my $a = $self->_Portrait;
76 1         3 $a .= $self->_Form('5');
77 1         4 $a .= $self->lineprinter;
78 1         4 $a .= $self->_PerfSkip;
79 1         3 $a .= $self->_Horiz('7');
80 1         5 return $a;
81             }
82              
83             # ------------------------- pcl_unpack utility -------------------------
84             sub pcl_unpack
85             {
86 1     1 0 2 my $self = shift;
87 1         14 my $a = shift;
88 1         3 my $l = length( $a );
89 1         5 my @u = unpack('C' x $l, $a );
90 1         11 return join( ' ' , @u );
91             }
92              
93             # ------------------------- reset utility -------------------------
94             sub reset
95             {
96 1     1 0 55 my $self = shift;
97 1         4 return pack('CC', 27,69 );
98             }
99              
100             # ------------------------- half linefeed -------------------------
101             sub half_linefeed
102             {
103 0     0 0 0 my $self = shift;
104 0         0 return pack('CC', 27,61 );
105             }
106              
107             # ------------------------- lineprinter -------------------------
108             sub lineprinter
109             {
110             # Symbol Set PC-8 27,40,49,48,85
111             # Typeface lineprinter 27,40,115,48,84
112             # Font Pitch 16.67 27,38,107,50,83
113             # 6 lines/inch 27,38,49,54,68
114 5     5 0 8 my $self = shift;
115 5         21 my @a = qw(27 40 49 48 85 27 40 115 48 84 27 38 107 50 83 27 38 49 54 68);
116 5         39 return pack( 'C' x @a, @a );
117             }
118              
119             # ----------------internal lineprinter font 48 -----------------
120             sub lineprinter48
121             {
122 0     0 0 0 my $self = shift;
123 0         0 my @a = qw(27 40 49 48 85 27 40 115 48 84 27 38 107 50 83 27 38 49 54 68);
124 0         0 return pack( 'C' x @a, @a );
125             }
126             ######################## RxLaser Internals ##############################
127              
128             sub _Form # param: form numbers 1 to 5
129             {
130 5     5   7 my $self = shift;
131 5         7 my $form = shift;
132 5         19 my @ret = (27,38,102, (unpack( 'C', $form )), 121, 52, 88);
133 5         26 return pack('C' x @ret, @ret );
134             }
135              
136             sub _Horiz # param: 120ths of an inch
137             {
138 6     6   14 my $self = shift;
139 6         7 my $index = shift;
140 6         16 return pack('CCC',27,38,107). $index . pack('C', 72);
141             }
142              
143             sub _Vert # param: 48ths of an inch
144             {
145 3     3   18 my $self = shift;
146 3         4 my $index = shift;
147 3         11 return pack('CCC',27,38,108). $index . pack('C', 67);
148             }
149              
150             sub _VertLPI # param: lines per inch
151             {
152 0     0   0 my $self = shift;
153 0         0 my $index = shift;
154 0         0 return pack('CCC',27,38,108). $index . pack('C', 68);
155             }
156              
157             sub _Portrait
158             {
159 5     5   8 my $self = shift;
160 5         13 return pack('CCCCC', qw/027 038 108 048 079/);
161             }
162              
163             sub _LetterGothic
164             {
165 0     0   0 my $self = shift;
166 0         0 return pack('C' x 20 , qw/027 040 115 048 112 049 053 046 048 048 104 048 115 048 098 052 049 048 050 108/);
167             }
168              
169             sub _PerfSkip
170             {
171 5     5   6 my $self = shift;
172 5         11 return pack('CCCCC', qw/027 038 108 048 076/ );
173             }
174              
175             1;
176             #
177              
178             __END__