rghost_barcode 0.8 → 0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rghost_barcode.rb +7 -5
- data/lib/rghost_barcode/ps/barcode_base.ps +17090 -0
- data/lib/rghost_barcode/rghost_barcode_adapter.rb +22 -226
- data/lib/rghost_barcode/rghost_barcode_base.rb +12 -14
- data/lib/rghost_barcode/rghost_barcode_types.rb +86 -0
- data/lib/rghost_barcode/rghost_barcode_version.rb +2 -2
- metadata +30 -177
- data/lib/doc/classes/RGhost.html +0 -109
- data/lib/doc/classes/RGhost/Barcode.html +0 -147
- data/lib/doc/classes/RGhost/Barcode/Auspost.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Azteccode.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Base.html +0 -266
- data/lib/doc/classes/RGhost/Barcode/Base.src/M000004.html +0 -34
- data/lib/doc/classes/RGhost/Barcode/Base.src/M000005.html +0 -30
- data/lib/doc/classes/RGhost/Barcode/Base.src/M000006.html +0 -20
- data/lib/doc/classes/RGhost/Barcode/Border.html +0 -170
- data/lib/doc/classes/RGhost/Barcode/Border.src/M000001.html +0 -27
- data/lib/doc/classes/RGhost/Barcode/Code11.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Code128.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Code2of5.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Code39.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Code93.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Datamatrix.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Ean13.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Ean2.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Ean5.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Ean8.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Guard.html +0 -174
- data/lib/doc/classes/RGhost/Barcode/Guard.src/M000003.html +0 -27
- data/lib/doc/classes/RGhost/Barcode/Interleaved2of5.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Isbn.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Kix.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Maxicode.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Msi.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Onecode.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Parameter.html +0 -262
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000007.html +0 -20
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000008.html +0 -18
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000009.html +0 -18
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000010.html +0 -18
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000011.html +0 -18
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000012.html +0 -24
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000013.html +0 -18
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000014.html +0 -18
- data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000015.html +0 -16
- data/lib/doc/classes/RGhost/Barcode/Pdf417.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Pharmacode.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Plessey.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Postnet.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Qrcode.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Rationalizedcodabar.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Raw.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Royalmail.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Rss14.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Rssexpanded.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Rsslimited.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Symbol.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Text.html +0 -193
- data/lib/doc/classes/RGhost/Barcode/Text.src/M000002.html +0 -30
- data/lib/doc/classes/RGhost/Barcode/Upca.html +0 -113
- data/lib/doc/classes/RGhost/Barcode/Upce.html +0 -113
- data/lib/doc/classes/RGhost/Config.html +0 -150
- data/lib/doc/classes/RGhost/Config.src/M000016.html +0 -45
- data/lib/doc/classes/RGhost/Document.html +0 -704
- data/lib/doc/classes/RGhost/Document.src/M000017.html +0 -19
- data/lib/doc/classes/RGhost/Document.src/M000018.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000019.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000020.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000021.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000022.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000023.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000024.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000025.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000026.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000027.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000028.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000029.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000030.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000031.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000032.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000033.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000034.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000035.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000036.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000037.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000038.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000039.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000040.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000041.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000042.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000043.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000044.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000045.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000046.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000047.html +0 -18
- data/lib/doc/classes/RGhost/Document.src/M000048.html +0 -18
- data/lib/doc/created.rid +0 -1
- data/lib/doc/files/rghost_barcode/rghost_barcode_adapter_rb.html +0 -101
- data/lib/doc/files/rghost_barcode/rghost_barcode_base_rb.html +0 -101
- data/lib/doc/files/rghost_barcode/rghost_barcode_classes_rb.html +0 -101
- data/lib/doc/files/rghost_barcode/rghost_barcode_examples_rb.html +0 -101
- data/lib/doc/files/rghost_barcode/rghost_barcode_version_rb.html +0 -101
- data/lib/doc/files/rghost_barcode_rb.html +0 -111
- data/lib/doc/files/teste_main_rb.html +0 -110
- data/lib/doc/fr_class_index.html +0 -67
- data/lib/doc/fr_file_index.html +0 -33
- data/lib/doc/fr_method_index.html +0 -74
- data/lib/doc/index.html +0 -24
- data/lib/rghost_barcode/ps/auspost.ps +0 -192
- data/lib/rghost_barcode/ps/azteccode.ps +0 -357
- data/lib/rghost_barcode/ps/barcode_template.eps +0 -1193
- data/lib/rghost_barcode/ps/code11.ps +0 -128
- data/lib/rghost_barcode/ps/code128.ps +0 -121
- data/lib/rghost_barcode/ps/code2of5.ps +0 -106
- data/lib/rghost_barcode/ps/code39.ps +0 -109
- data/lib/rghost_barcode/ps/code93.ps +0 -117
- data/lib/rghost_barcode/ps/datamatrix.ps +0 -328
- data/lib/rghost_barcode/ps/ean13.ps +0 -183
- data/lib/rghost_barcode/ps/ean2.ps +0 -101
- data/lib/rghost_barcode/ps/ean5.ps +0 -116
- data/lib/rghost_barcode/ps/ean8.ps +0 -101
- data/lib/rghost_barcode/ps/interleaved2of5.ps +0 -132
- data/lib/rghost_barcode/ps/isbn.ps +0 -118
- data/lib/rghost_barcode/ps/kix.ps +0 -98
- data/lib/rghost_barcode/ps/maxicode.ps +0 -307
- data/lib/rghost_barcode/ps/msi.ps +0 -104
- data/lib/rghost_barcode/ps/onecode.ps +0 -276
- data/lib/rghost_barcode/ps/pdf417.ps +0 -428
- data/lib/rghost_barcode/ps/pharmacode.ps +0 -69
- data/lib/rghost_barcode/ps/plessey.ps +0 -121
- data/lib/rghost_barcode/ps/postnet.ps +0 -114
- data/lib/rghost_barcode/ps/qrcode.ps +0 -530
- data/lib/rghost_barcode/ps/rationalizedcodabar.ps +0 -117
- data/lib/rghost_barcode/ps/raw.ps +0 -35
- data/lib/rghost_barcode/ps/render.ps +0 -307
- data/lib/rghost_barcode/ps/render.ps~ +0 -308
- data/lib/rghost_barcode/ps/royalmail.ps +0 -119
- data/lib/rghost_barcode/ps/rss14.ps +0 -237
- data/lib/rghost_barcode/ps/rssexpanded.ps +0 -211
- data/lib/rghost_barcode/ps/rsslimited.ps +0 -191
- data/lib/rghost_barcode/ps/symbol.ps +0 -49
- data/lib/rghost_barcode/ps/upca.ps +0 -128
- data/lib/rghost_barcode/ps/upce.ps +0 -157
- data/lib/rghost_barcode/rghost_barcode_classes.rb +0 -96
- data/lib/rghost_barcode/rghost_barcode_examples.rb +0 -35
- data/lib/teste_main.rb +0 -94
@@ -1,118 +0,0 @@
|
|
1
|
-
|
2
|
-
% --REQUIRES ean13--
|
3
|
-
% --DESC: ISBN
|
4
|
-
% --EXAM: 978-1-56592-479
|
5
|
-
% --EXOP: includetext guardwhitespace
|
6
|
-
% --RNDR: renlinear
|
7
|
-
/isbn {
|
8
|
-
|
9
|
-
0 begin
|
10
|
-
|
11
|
-
/options exch def % We are given an options string
|
12
|
-
/useropts options def
|
13
|
-
/isbntxt exch def % We are given the isbn text with dashes
|
14
|
-
|
15
|
-
/includetext false def % Enable/disable ISBN text
|
16
|
-
/isbnfont /Courier def
|
17
|
-
/isbnsize 9 def
|
18
|
-
/isbnpos (unset) def
|
19
|
-
/height 1 def
|
20
|
-
|
21
|
-
% Parse the input options
|
22
|
-
options {
|
23
|
-
token false eq {exit} if dup length string cvs (=) search
|
24
|
-
true eq {cvlit exch pop exch def} {cvlit true def} ifelse
|
25
|
-
} loop
|
26
|
-
|
27
|
-
/isbnfont isbnfont cvlit def
|
28
|
-
/isbnsize isbnsize cvr def
|
29
|
-
/height height cvr def
|
30
|
-
isbnpos (unset) eq {
|
31
|
-
/isbnpos height 72 mul 3 add def
|
32
|
-
} {
|
33
|
-
/isbnpos isbnpos cvr def
|
34
|
-
} ifelse
|
35
|
-
|
36
|
-
% Read the digits from isbntxt and calculate checksums
|
37
|
-
/isbn 13 string def
|
38
|
-
/checksum10 0 def
|
39
|
-
/checksum13 0 def
|
40
|
-
/i 0 def /n 0 def
|
41
|
-
{ % loop
|
42
|
-
/isbnchar isbntxt i get 48 sub def
|
43
|
-
isbnchar -3 ne { % Ignore dashes
|
44
|
-
isbn n isbnchar 48 add put
|
45
|
-
/checksum10 checksum10 10 n sub isbnchar mul add def
|
46
|
-
n 2 mod 0 eq {
|
47
|
-
/checksum13 isbnchar checksum13 add def
|
48
|
-
} {
|
49
|
-
/checksum13 isbnchar 3 mul checksum13 add def
|
50
|
-
} ifelse
|
51
|
-
/n n 1 add def
|
52
|
-
} if
|
53
|
-
/i i 1 add def
|
54
|
-
i isbntxt length eq {exit} if
|
55
|
-
} loop
|
56
|
-
|
57
|
-
% Add the ISBN header to the isbntxt
|
58
|
-
n 9 eq n 10 eq or {
|
59
|
-
/checksum 11 checksum10 11 mod sub 11 mod def
|
60
|
-
/isbn isbn 0 9 getinterval def
|
61
|
-
/pad 18 string def
|
62
|
-
} {
|
63
|
-
/checksum 10 checksum13 10 mod sub 10 mod def
|
64
|
-
/isbn isbn 0 12 getinterval def
|
65
|
-
/pad 22 string def
|
66
|
-
} ifelse
|
67
|
-
pad 0 (ISBN ) putinterval
|
68
|
-
pad 5 isbntxt putinterval % Add isbntxt to the pad
|
69
|
-
|
70
|
-
% Add checksum digit if isbntxt length is 11 or 15
|
71
|
-
isbntxt length 11 eq isbntxt length 12 eq or
|
72
|
-
isbntxt length 15 eq or isbntxt length 16 eq or {
|
73
|
-
pad pad length 2 sub 45 put % Put a dash
|
74
|
-
checksum 10 eq {
|
75
|
-
pad pad length 1 sub checksum 78 add put % Check digit for 10 is X
|
76
|
-
} {
|
77
|
-
pad pad length 1 sub checksum 48 add put % Put check digit
|
78
|
-
} ifelse
|
79
|
-
} if
|
80
|
-
/isbntxt pad def % isbntxt=pad
|
81
|
-
|
82
|
-
% Convert ISBN digits to EAN-13
|
83
|
-
/barcode 12 string def
|
84
|
-
isbn length 9 eq {
|
85
|
-
barcode 0 (978) putinterval
|
86
|
-
barcode 3 isbn putinterval
|
87
|
-
} {
|
88
|
-
barcode 0 isbn putinterval
|
89
|
-
} ifelse
|
90
|
-
|
91
|
-
% Get the result of encoding with ean13
|
92
|
-
/args barcode options ean13 def
|
93
|
-
|
94
|
-
% Add the ISBN text
|
95
|
-
includetext {
|
96
|
-
isbn length 9 eq {
|
97
|
-
/isbnxpos -1 def
|
98
|
-
} {
|
99
|
-
/isbnxpos -12 def
|
100
|
-
} ifelse
|
101
|
-
args (txt) known {
|
102
|
-
/txt args (txt) get def
|
103
|
-
/newtxt txt length 1 add array def
|
104
|
-
newtxt 0 txt putinterval
|
105
|
-
newtxt newtxt length 1 sub [isbntxt isbnxpos isbnpos isbnfont isbnsize] put
|
106
|
-
args (txt) newtxt put
|
107
|
-
} {
|
108
|
-
args (txt) [ [isbntxt isbnxpos isbnpos isbnfont isbnsize] ] put
|
109
|
-
} ifelse
|
110
|
-
} if
|
111
|
-
|
112
|
-
args (opt) useropts put
|
113
|
-
args
|
114
|
-
|
115
|
-
end
|
116
|
-
|
117
|
-
} bind def
|
118
|
-
/isbn load 0 1 dict put
|
@@ -1,98 +0,0 @@
|
|
1
|
-
|
2
|
-
% --DESC: Royal Dutch TPG Post KIX 4-State Barcode
|
3
|
-
% --EXAM: 1231FZ13XHS
|
4
|
-
% --EXOP: includetext includecheckintext
|
5
|
-
% --RNDR: renlinear
|
6
|
-
/kix {
|
7
|
-
|
8
|
-
0 begin
|
9
|
-
|
10
|
-
/options exch def % We are given an option string
|
11
|
-
/useropts options def
|
12
|
-
/barcode exch def % We are given a barcode string
|
13
|
-
|
14
|
-
/includetext false def % Enable/disable text
|
15
|
-
/includecheckintext false def
|
16
|
-
/textfont /Courier def
|
17
|
-
/textsize 10 def
|
18
|
-
/textyoffset -7 def
|
19
|
-
/height 0.175 def
|
20
|
-
|
21
|
-
% Parse the input options
|
22
|
-
options {
|
23
|
-
token false eq {exit} if dup length string cvs (=) search
|
24
|
-
true eq {cvlit exch pop exch def} {cvlit true def} ifelse
|
25
|
-
} loop
|
26
|
-
|
27
|
-
/textfont textfont cvlit def
|
28
|
-
/textsize textsize cvr def
|
29
|
-
/textyoffset textyoffset cvr def
|
30
|
-
/height height cvr def
|
31
|
-
|
32
|
-
% Create an array containing the character mappings
|
33
|
-
/encs
|
34
|
-
[ (0033) (0123) (0132) (1023) (1032) (1122)
|
35
|
-
(0213) (0303) (0312) (1203) (1212) (1302)
|
36
|
-
(0231) (0321) (0330) (1221) (1230) (1320)
|
37
|
-
(2013) (2103) (2112) (3003) (3012) (3102)
|
38
|
-
(2031) (2121) (2130) (3021) (3030) (3120)
|
39
|
-
(2211) (2301) (2310) (3201) (3210) (3300)
|
40
|
-
] def
|
41
|
-
|
42
|
-
% Create a string of the available characters
|
43
|
-
/barchars (0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ) def
|
44
|
-
|
45
|
-
/barlen barcode length def
|
46
|
-
/encstr barlen 4 mul string def
|
47
|
-
/txt barlen array def
|
48
|
-
|
49
|
-
0 1 barlen 1 sub {
|
50
|
-
/i exch def
|
51
|
-
% Lookup the encoding for the each barcode character
|
52
|
-
barcode i 1 getinterval barchars exch search
|
53
|
-
pop % Discard true leaving pre
|
54
|
-
length /indx exch def % indx is the length of pre
|
55
|
-
pop pop % Discard seek and post
|
56
|
-
/enc encs indx get def % Get the indxth encoding
|
57
|
-
encstr i 4 mul enc putinterval
|
58
|
-
txt i [barcode i 1 getinterval i 4 mul 3.312 mul textyoffset textfont textsize] put
|
59
|
-
} for
|
60
|
-
|
61
|
-
/bbs encstr length array def
|
62
|
-
/bhs encstr length array def
|
63
|
-
0 1 encstr length 1 sub {
|
64
|
-
/i exch def
|
65
|
-
/enc encstr i 1 getinterval def
|
66
|
-
enc (0) eq {
|
67
|
-
bbs i 3 height mul 8 div put
|
68
|
-
bhs i 2 height mul 8 div put
|
69
|
-
} if
|
70
|
-
enc (1) eq {
|
71
|
-
bbs i 0 height mul 8 div put
|
72
|
-
bhs i 5 height mul 8 div put
|
73
|
-
} if
|
74
|
-
enc (2) eq {
|
75
|
-
bbs i 3 height mul 8 div put
|
76
|
-
bhs i 5 height mul 8 div put
|
77
|
-
} if
|
78
|
-
enc (3) eq {
|
79
|
-
bbs i 0 height mul 8 div put
|
80
|
-
bhs i 8 height mul 8 div put
|
81
|
-
} if
|
82
|
-
} for
|
83
|
-
|
84
|
-
/retval 8 dict def
|
85
|
-
retval (ren) (renlinear) put
|
86
|
-
retval (bbs) bbs put
|
87
|
-
retval (bhs) bhs put
|
88
|
-
retval (sbs) [bhs length 1 sub {1.44 1.872} repeat 1.44] put
|
89
|
-
includetext {
|
90
|
-
retval (txt) txt put
|
91
|
-
} if
|
92
|
-
retval (opt) useropts put
|
93
|
-
retval
|
94
|
-
|
95
|
-
end
|
96
|
-
|
97
|
-
} bind def
|
98
|
-
/kix load 0 1 dict put
|
@@ -1,307 +0,0 @@
|
|
1
|
-
|
2
|
-
% --DESC: MaxiCode
|
3
|
-
% --EXAM: ^059^042^041^059^040^03001^02996152382802^029840^029001^0291Z00004951^029UPSN^02906X610^029159^0291234567^0291^0471^029^029Y^029634 ALPHA DR^029PITTSBURGH^029PA^030^062^004^063
|
4
|
-
% --EXOP: mode=2
|
5
|
-
% --RNDR: renmaximatrix
|
6
|
-
/maxicode {
|
7
|
-
|
8
|
-
0 begin
|
9
|
-
|
10
|
-
/options exch def % We are given an option string
|
11
|
-
/useropts options def
|
12
|
-
/barcode exch def % We are given a barcode string
|
13
|
-
|
14
|
-
/mode 4 def
|
15
|
-
/sam -1 def
|
16
|
-
|
17
|
-
% Parse the input options
|
18
|
-
options {
|
19
|
-
token false eq {exit} if dup length string cvs (=) search
|
20
|
-
true eq {cvlit exch pop exch def} {cvlit true def} ifelse
|
21
|
-
} loop
|
22
|
-
|
23
|
-
/mode mode cvi def
|
24
|
-
/sam sam cvi def
|
25
|
-
|
26
|
-
/txtvals (@ABCDEFGHIJKLMNOPQRSTUVWXYZ@@@@@ @@@@@@@@@@@@@@@0123456789@@@@@@) def
|
27
|
-
|
28
|
-
% Parse a given message into codewords
|
29
|
-
/maxiparse {
|
30
|
-
/txt exch def
|
31
|
-
/out txt length array def
|
32
|
-
/i 0 def /j 0 def
|
33
|
-
{ % loop
|
34
|
-
i txt length eq {exit} if
|
35
|
-
txt i 1 getinterval (^) eq {
|
36
|
-
% Codeword is given by the next three characters
|
37
|
-
/cw txt i 1 add 3 getinterval cvi def
|
38
|
-
/i i 4 add def
|
39
|
-
} {
|
40
|
-
% Codeword is the characters position in txtvals
|
41
|
-
txtvals txt i 1 getinterval search
|
42
|
-
pop length /cw exch def pop pop
|
43
|
-
/i i 1 add def
|
44
|
-
} ifelse
|
45
|
-
out j cw put
|
46
|
-
/j j 1 add def
|
47
|
-
} loop
|
48
|
-
out 0 j getinterval
|
49
|
-
} bind def
|
50
|
-
|
51
|
-
% Calcalate the structured append mode insert
|
52
|
-
/sami () def
|
53
|
-
sam -1 ne {
|
54
|
-
/sami (^033^000) 8 string copy def
|
55
|
-
sam 10 idiv 1 sub 8 mul sam 10 mod 1 sub add 10 2 string cvrs
|
56
|
-
dup length 8 exch sub sami exch 3 -1 roll putinterval
|
57
|
-
} if
|
58
|
-
|
59
|
-
% Message handling for modes 2 and 3
|
60
|
-
mode 2 eq mode 3 eq or {
|
61
|
-
|
62
|
-
/msg barcode def
|
63
|
-
|
64
|
-
% Normalise messages that begin with a field identifier [)>RS01GSyy
|
65
|
-
msg (^059^042^041^059^040^03001^029) search {
|
66
|
-
pop
|
67
|
-
dup length 2 add string /fid exch def
|
68
|
-
fid 0 3 -1 roll putinterval
|
69
|
-
dup fid fid length 2 sub 3 -1 roll 0 2 getinterval putinterval
|
70
|
-
dup length 2 sub 2 exch getinterval /msg exch def
|
71
|
-
} {
|
72
|
-
pop
|
73
|
-
/fid () def
|
74
|
-
} ifelse
|
75
|
-
|
76
|
-
% Read the postcode, country code and service code fields
|
77
|
-
msg (^029) search pop /pc exch def
|
78
|
-
pop (^029) search pop /cc exch def
|
79
|
-
pop (^029) search pop /sc exch def
|
80
|
-
pop /msg exch def
|
81
|
-
|
82
|
-
% Calculate the fixed-width binary values for the mode, postcode, country code and service
|
83
|
-
/mdb (0000) 4 string copy dup mode cvi 2 4 string cvrs dup length 4 exch sub exch putinterval def
|
84
|
-
/ccb (0000000000) 10 string copy dup cc cvi 2 10 string cvrs dup length 10 exch sub exch putinterval def
|
85
|
-
/scb (0000000000) 10 string copy dup sc cvi 2 10 string cvrs dup length 10 exch sub exch putinterval def
|
86
|
-
/pcb (000000000000000000000000000000000000) 36 string copy def
|
87
|
-
mode 2 eq {
|
88
|
-
% For numeric postcode, first six bits represent length and remaining 30 bits the value
|
89
|
-
pcb pc length 2 6 string cvrs dup length 6 exch sub exch putinterval
|
90
|
-
pcb pc cvi 2 30 string cvrs dup length 36 exch sub exch putinterval
|
91
|
-
} { % mode=3
|
92
|
-
% For alphanumeric postcode, trim or pad with spaces to 6 chars and encode to binary
|
93
|
-
/pccw ( ) 6 string copy dup 0 pc length 6 gt {pc 0 6 getinterval} {pc} ifelse putinterval maxiparse def
|
94
|
-
0 1 5 {
|
95
|
-
/i exch def
|
96
|
-
pcb pccw i get 2 6 string cvrs dup length 6 i mul 6 add exch sub exch putinterval
|
97
|
-
} for
|
98
|
-
} ifelse
|
99
|
-
|
100
|
-
% Convolute the binary values into the structured carrier message
|
101
|
-
/scm 60 string def
|
102
|
-
scm 2 mdb putinterval
|
103
|
-
scm 38 pcb 0 4 getinterval putinterval
|
104
|
-
scm 30 pcb 4 6 getinterval putinterval
|
105
|
-
scm 24 pcb 10 6 getinterval putinterval
|
106
|
-
scm 18 pcb 16 6 getinterval putinterval
|
107
|
-
scm 12 pcb 22 6 getinterval putinterval
|
108
|
-
scm 6 pcb 28 6 getinterval putinterval
|
109
|
-
scm 0 pcb 34 2 getinterval putinterval
|
110
|
-
scm 52 ccb 0 2 getinterval putinterval
|
111
|
-
scm 42 ccb 2 6 getinterval putinterval
|
112
|
-
scm 36 ccb 8 2 getinterval putinterval
|
113
|
-
scm 54 scb 0 6 getinterval putinterval
|
114
|
-
scm 48 scb 6 4 getinterval putinterval
|
115
|
-
|
116
|
-
% Evaluate the structured carrier message as codewords
|
117
|
-
/pri [ 0 0 0 0 0 0 0 0 0 0 ] def
|
118
|
-
0 1 59 {
|
119
|
-
/i exch def
|
120
|
-
/ps i 6 idiv def
|
121
|
-
/ep 2 5 i 6 mod sub exp cvi scm i get 48 sub mul def
|
122
|
-
pri ps pri ps get ep add put
|
123
|
-
} for
|
124
|
-
|
125
|
-
% Encode the secondary parts, including any SAM insert and field identifier
|
126
|
-
/sec [ 84 {33} repeat ] def
|
127
|
-
sec 0 [ sami maxiparse {} forall fid maxiparse {} forall msg maxiparse {} forall ] putinterval
|
128
|
-
|
129
|
-
} if
|
130
|
-
|
131
|
-
% Message handling for modes 4, 5 and 6
|
132
|
-
mode 4 eq mode 5 eq or mode 6 eq or {
|
133
|
-
|
134
|
-
% Prefix the message with the structured append insert
|
135
|
-
/msg sami length barcode length add string def
|
136
|
-
msg 0 sami putinterval
|
137
|
-
msg sami length barcode putinterval
|
138
|
-
|
139
|
-
% First symbol is the mode and the remainder are the padded message
|
140
|
-
/cws [ mode 5 eq {78} {94} ifelse {33} repeat ] def
|
141
|
-
cws 0 mode put
|
142
|
-
cws 1 msg maxiparse putinterval
|
143
|
-
|
144
|
-
% Fit the message into the primary and secondary components
|
145
|
-
/pri cws 0 10 getinterval def
|
146
|
-
/sec cws 10 cws length 10 sub getinterval def
|
147
|
-
|
148
|
-
} if
|
149
|
-
|
150
|
-
% Create the 64x64 Reed-Solomon table
|
151
|
-
/rstable 64 64 mul array def
|
152
|
-
rstable 0 [ 64 {0} repeat ] putinterval
|
153
|
-
rstable 64 [ 0 1 63 {} for ] putinterval
|
154
|
-
/prev 1 def
|
155
|
-
64 {
|
156
|
-
/next prev 1 bitshift def
|
157
|
-
next 64 and 0 ne {
|
158
|
-
/next next 67 xor def
|
159
|
-
} if
|
160
|
-
0 1 63 {
|
161
|
-
/j exch def
|
162
|
-
/nextcell {rstable 64 next mul j add} def
|
163
|
-
nextcell rstable 64 prev mul j add get 1 bitshift put
|
164
|
-
nextcell get 64 and 0 ne {
|
165
|
-
nextcell nextcell get 67 xor put
|
166
|
-
} if
|
167
|
-
} for
|
168
|
-
/prev next def
|
169
|
-
} repeat
|
170
|
-
|
171
|
-
% Calculate the parity codewords for primary codewords
|
172
|
-
/pgen [46 44 49 3 2 57 42 39 28 31 1] def
|
173
|
-
/rscodes [ 10 {0} repeat 9 -1 0 { pri exch get } for ] def
|
174
|
-
rscodes length 11 sub -1 0 {
|
175
|
-
/i exch def
|
176
|
-
0 1 10 {
|
177
|
-
/j exch def
|
178
|
-
rscodes i j add rscodes i j add get
|
179
|
-
rstable 64 pgen j get mul rscodes i 10 add get add get
|
180
|
-
xor put
|
181
|
-
} for
|
182
|
-
} for
|
183
|
-
/prichk [ 9 -1 0 { rscodes exch get } for ] def
|
184
|
-
|
185
|
-
% Split secondary codeword into odd and even elements
|
186
|
-
/seco [ 0 2 sec length 1 sub { sec exch get } for ] def
|
187
|
-
/sece [ 1 2 sec length 1 sub { sec exch get } for ] def
|
188
|
-
|
189
|
-
% Calculate the parity codewords for secondary codeword parts based on mode
|
190
|
-
sec length 84 eq { % SEC mode
|
191
|
-
/sgen [ 59 23 19 31 33 38 17 22 48 15 36 57 37 22 8 27 33 11 44 23 1 ] def
|
192
|
-
} { % EEC mode
|
193
|
-
/sgen [ 28 11 20 7 43 9 41 34 49 46 37 40 55 34 45 61 13 23 29 22 10 35 55 41 10 53 45 22 1 ] def
|
194
|
-
} ifelse
|
195
|
-
/scodes sgen length 1 sub def
|
196
|
-
/rscodes [ scodes {0} repeat seco length 1 sub -1 0 { seco exch get } for ] def
|
197
|
-
rscodes length scodes sub 1 sub -1 0 {
|
198
|
-
/i exch def
|
199
|
-
0 1 scodes {
|
200
|
-
/j exch def
|
201
|
-
rscodes i j add rscodes i j add get
|
202
|
-
rstable 64 sgen j get mul rscodes i scodes add get add get
|
203
|
-
xor put
|
204
|
-
} for
|
205
|
-
} for
|
206
|
-
/secochk [ scodes 1 sub -1 0 { rscodes exch get } for ] def
|
207
|
-
/rscodes [ scodes {0} repeat sece length 1 sub -1 0 { sece exch get } for ] def
|
208
|
-
rscodes length scodes sub 1 sub -1 0 {
|
209
|
-
/i exch def
|
210
|
-
0 1 scodes {
|
211
|
-
/j exch def
|
212
|
-
rscodes i j add rscodes i j add get
|
213
|
-
rstable 64 sgen j get mul rscodes i scodes add get add get
|
214
|
-
xor put
|
215
|
-
} for
|
216
|
-
} for
|
217
|
-
/secechk [ scodes 1 sub -1 0 { rscodes exch get } for ] def
|
218
|
-
|
219
|
-
% Recompose the secondary parity codewords
|
220
|
-
/secchk [ 0 1 scodes 1 sub { dup secochk exch get exch secechk exch get } for ] def
|
221
|
-
|
222
|
-
% Concatinate the data into final codewords
|
223
|
-
/codewords [
|
224
|
-
pri {} forall
|
225
|
-
prichk {} forall
|
226
|
-
sec {} forall
|
227
|
-
secchk {} forall
|
228
|
-
] def
|
229
|
-
|
230
|
-
% Convert the codewords into module bits
|
231
|
-
/mods [ 864 {0} repeat ] def
|
232
|
-
0 1 143 {
|
233
|
-
/i exch def
|
234
|
-
/cw [ codewords i get 2 6 string cvrs {48 sub} forall ] def
|
235
|
-
mods 6 i mul 6 cw length sub add cw putinterval
|
236
|
-
} for
|
237
|
-
|
238
|
-
% Maps modules to pixels in the grid
|
239
|
-
/modmap [
|
240
|
-
469 529 286 316 347 346 673 672 703 702 647 676 283 282 313 312 370 610 618 379
|
241
|
-
378 409 408 439 705 704 559 589 588 619 458 518 640 701 675 674 285 284 315 314
|
242
|
-
310 340 531 289 288 319 349 348 456 486 517 516 471 470 369 368 399 398 429 428
|
243
|
-
549 548 579 578 609 608 649 648 679 678 709 708 639 638 669 668 699 698 279 278
|
244
|
-
309 308 339 338 381 380 411 410 441 440 561 560 591 590 621 620 547 546 577 576
|
245
|
-
607 606 367 366 397 396 427 426 291 290 321 320 351 350 651 650 681 680 711 710
|
246
|
-
1 0 31 30 61 60 3 2 33 32 63 62 5 4 35 34 65 64 7 6
|
247
|
-
37 36 67 66 9 8 39 38 69 68 11 10 41 40 71 70 13 12 43 42
|
248
|
-
73 72 15 14 45 44 75 74 17 16 47 46 77 76 19 18 49 48 79 78
|
249
|
-
21 20 51 50 81 80 23 22 53 52 83 82 25 24 55 54 85 84 27 26
|
250
|
-
57 56 87 86 117 116 147 146 177 176 115 114 145 144 175 174 113 112 143 142
|
251
|
-
173 172 111 110 141 140 171 170 109 108 139 138 169 168 107 106 137 136 167 166
|
252
|
-
105 104 135 134 165 164 103 102 133 132 163 162 101 100 131 130 161 160 99 98
|
253
|
-
129 128 159 158 97 96 127 126 157 156 95 94 125 124 155 154 93 92 123 122
|
254
|
-
153 152 91 90 121 120 151 150 181 180 211 210 241 240 183 182 213 212 243 242
|
255
|
-
185 184 215 214 245 244 187 186 217 216 247 246 189 188 219 218 249 248 191 190
|
256
|
-
221 220 251 250 193 192 223 222 253 252 195 194 225 224 255 254 197 196 227 226
|
257
|
-
257 256 199 198 229 228 259 258 201 200 231 230 261 260 203 202 233 232 263 262
|
258
|
-
205 204 235 234 265 264 207 206 237 236 267 266 297 296 327 326 357 356 295 294
|
259
|
-
325 324 355 354 293 292 323 322 353 352 277 276 307 306 337 336 275 274 305 304
|
260
|
-
335 334 273 272 303 302 333 332 271 270 301 300 331 330 361 360 391 390 421 420
|
261
|
-
363 362 393 392 423 422 365 364 395 394 425 424 383 382 413 412 443 442 385 384
|
262
|
-
415 414 445 444 387 386 417 416 447 446 477 476 507 506 537 536 475 474 505 504
|
263
|
-
535 534 473 472 503 502 533 532 455 454 485 484 515 514 453 452 483 482 513 512
|
264
|
-
451 450 481 480 511 510 541 540 571 570 601 600 543 542 573 572 603 602 545 544
|
265
|
-
575 574 605 604 563 562 593 592 623 622 565 564 595 594 625 624 567 566 597 596
|
266
|
-
627 626 657 656 687 686 717 716 655 654 685 684 715 714 653 652 683 682 713 712
|
267
|
-
637 636 667 666 697 696 635 634 665 664 695 694 633 632 663 662 693 692 631 630
|
268
|
-
661 660 691 690 721 720 751 750 781 780 723 722 753 752 783 782 725 724 755 754
|
269
|
-
785 784 727 726 757 756 787 786 729 728 759 758 789 788 731 730 761 760 791 790
|
270
|
-
733 732 763 762 793 792 735 734 765 764 795 794 737 736 767 766 797 796 739 738
|
271
|
-
769 768 799 798 741 740 771 770 801 800 743 742 773 772 803 802 745 744 775 774
|
272
|
-
805 804 747 746 777 776 807 806 837 836 867 866 897 896 835 834 865 864 895 894
|
273
|
-
833 832 863 862 893 892 831 830 861 860 891 890 829 828 859 858 889 888 827 826
|
274
|
-
857 856 887 886 825 824 855 854 885 884 823 822 853 852 883 882 821 820 851 850
|
275
|
-
881 880 819 818 849 848 879 878 817 816 847 846 877 876 815 814 845 844 875 874
|
276
|
-
813 812 843 842 873 872 811 810 841 840 871 870 901 900 931 930 961 960 903 902
|
277
|
-
933 932 963 962 905 904 935 934 965 964 907 906 937 936 967 966 909 908 939 938
|
278
|
-
969 968 911 910 941 940 971 970 913 912 943 942 973 972 915 914 945 944 975 974
|
279
|
-
917 916 947 946 977 976 919 918 949 948 979 978 921 920 951 950 981 980 923 922
|
280
|
-
953 952 983 982 925 924 955 954 985 984 927 926 957 956 987 986 58 89 88 118
|
281
|
-
149 148 178 209 208 238 269 268 298 329 328 358 389 388 418 449 448 478 509 508
|
282
|
-
538 569 568 598 629 628 658 689 688 718 749 748 778 809 808 838 869 868 898 929
|
283
|
-
928 958 989 988
|
284
|
-
] def
|
285
|
-
|
286
|
-
% Lookup pixels for enabled modules from modmap
|
287
|
-
/pixs 864 array def
|
288
|
-
/j 0 def
|
289
|
-
0 1 mods length 1 sub {
|
290
|
-
/i exch def
|
291
|
-
mods i get 1 eq {
|
292
|
-
pixs j modmap i get put
|
293
|
-
/j j 1 add def
|
294
|
-
} if
|
295
|
-
} for
|
296
|
-
/pixs [ pixs 0 j getinterval {} forall 28 29 280 281 311 457 488 500 530 670 700 677 707 ] def
|
297
|
-
|
298
|
-
/retval 3 dict def
|
299
|
-
retval (ren) (renmaximatrix) put
|
300
|
-
retval (pixs) pixs put
|
301
|
-
retval (opt) useropts put
|
302
|
-
retval
|
303
|
-
|
304
|
-
end
|
305
|
-
|
306
|
-
} bind def
|
307
|
-
/maxicode load 0 1 dict put
|