rghost_barcode 0.8 → 0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. data/lib/rghost_barcode.rb +7 -5
  2. data/lib/rghost_barcode/ps/barcode_base.ps +17090 -0
  3. data/lib/rghost_barcode/rghost_barcode_adapter.rb +22 -226
  4. data/lib/rghost_barcode/rghost_barcode_base.rb +12 -14
  5. data/lib/rghost_barcode/rghost_barcode_types.rb +86 -0
  6. data/lib/rghost_barcode/rghost_barcode_version.rb +2 -2
  7. metadata +30 -177
  8. data/lib/doc/classes/RGhost.html +0 -109
  9. data/lib/doc/classes/RGhost/Barcode.html +0 -147
  10. data/lib/doc/classes/RGhost/Barcode/Auspost.html +0 -113
  11. data/lib/doc/classes/RGhost/Barcode/Azteccode.html +0 -113
  12. data/lib/doc/classes/RGhost/Barcode/Base.html +0 -266
  13. data/lib/doc/classes/RGhost/Barcode/Base.src/M000004.html +0 -34
  14. data/lib/doc/classes/RGhost/Barcode/Base.src/M000005.html +0 -30
  15. data/lib/doc/classes/RGhost/Barcode/Base.src/M000006.html +0 -20
  16. data/lib/doc/classes/RGhost/Barcode/Border.html +0 -170
  17. data/lib/doc/classes/RGhost/Barcode/Border.src/M000001.html +0 -27
  18. data/lib/doc/classes/RGhost/Barcode/Code11.html +0 -113
  19. data/lib/doc/classes/RGhost/Barcode/Code128.html +0 -113
  20. data/lib/doc/classes/RGhost/Barcode/Code2of5.html +0 -113
  21. data/lib/doc/classes/RGhost/Barcode/Code39.html +0 -113
  22. data/lib/doc/classes/RGhost/Barcode/Code93.html +0 -113
  23. data/lib/doc/classes/RGhost/Barcode/Datamatrix.html +0 -113
  24. data/lib/doc/classes/RGhost/Barcode/Ean13.html +0 -113
  25. data/lib/doc/classes/RGhost/Barcode/Ean2.html +0 -113
  26. data/lib/doc/classes/RGhost/Barcode/Ean5.html +0 -113
  27. data/lib/doc/classes/RGhost/Barcode/Ean8.html +0 -113
  28. data/lib/doc/classes/RGhost/Barcode/Guard.html +0 -174
  29. data/lib/doc/classes/RGhost/Barcode/Guard.src/M000003.html +0 -27
  30. data/lib/doc/classes/RGhost/Barcode/Interleaved2of5.html +0 -113
  31. data/lib/doc/classes/RGhost/Barcode/Isbn.html +0 -113
  32. data/lib/doc/classes/RGhost/Barcode/Kix.html +0 -113
  33. data/lib/doc/classes/RGhost/Barcode/Maxicode.html +0 -113
  34. data/lib/doc/classes/RGhost/Barcode/Msi.html +0 -113
  35. data/lib/doc/classes/RGhost/Barcode/Onecode.html +0 -113
  36. data/lib/doc/classes/RGhost/Barcode/Parameter.html +0 -262
  37. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000007.html +0 -20
  38. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000008.html +0 -18
  39. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000009.html +0 -18
  40. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000010.html +0 -18
  41. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000011.html +0 -18
  42. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000012.html +0 -24
  43. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000013.html +0 -18
  44. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000014.html +0 -18
  45. data/lib/doc/classes/RGhost/Barcode/Parameter.src/M000015.html +0 -16
  46. data/lib/doc/classes/RGhost/Barcode/Pdf417.html +0 -113
  47. data/lib/doc/classes/RGhost/Barcode/Pharmacode.html +0 -113
  48. data/lib/doc/classes/RGhost/Barcode/Plessey.html +0 -113
  49. data/lib/doc/classes/RGhost/Barcode/Postnet.html +0 -113
  50. data/lib/doc/classes/RGhost/Barcode/Qrcode.html +0 -113
  51. data/lib/doc/classes/RGhost/Barcode/Rationalizedcodabar.html +0 -113
  52. data/lib/doc/classes/RGhost/Barcode/Raw.html +0 -113
  53. data/lib/doc/classes/RGhost/Barcode/Royalmail.html +0 -113
  54. data/lib/doc/classes/RGhost/Barcode/Rss14.html +0 -113
  55. data/lib/doc/classes/RGhost/Barcode/Rssexpanded.html +0 -113
  56. data/lib/doc/classes/RGhost/Barcode/Rsslimited.html +0 -113
  57. data/lib/doc/classes/RGhost/Barcode/Symbol.html +0 -113
  58. data/lib/doc/classes/RGhost/Barcode/Text.html +0 -193
  59. data/lib/doc/classes/RGhost/Barcode/Text.src/M000002.html +0 -30
  60. data/lib/doc/classes/RGhost/Barcode/Upca.html +0 -113
  61. data/lib/doc/classes/RGhost/Barcode/Upce.html +0 -113
  62. data/lib/doc/classes/RGhost/Config.html +0 -150
  63. data/lib/doc/classes/RGhost/Config.src/M000016.html +0 -45
  64. data/lib/doc/classes/RGhost/Document.html +0 -704
  65. data/lib/doc/classes/RGhost/Document.src/M000017.html +0 -19
  66. data/lib/doc/classes/RGhost/Document.src/M000018.html +0 -18
  67. data/lib/doc/classes/RGhost/Document.src/M000019.html +0 -18
  68. data/lib/doc/classes/RGhost/Document.src/M000020.html +0 -18
  69. data/lib/doc/classes/RGhost/Document.src/M000021.html +0 -18
  70. data/lib/doc/classes/RGhost/Document.src/M000022.html +0 -18
  71. data/lib/doc/classes/RGhost/Document.src/M000023.html +0 -18
  72. data/lib/doc/classes/RGhost/Document.src/M000024.html +0 -18
  73. data/lib/doc/classes/RGhost/Document.src/M000025.html +0 -18
  74. data/lib/doc/classes/RGhost/Document.src/M000026.html +0 -18
  75. data/lib/doc/classes/RGhost/Document.src/M000027.html +0 -18
  76. data/lib/doc/classes/RGhost/Document.src/M000028.html +0 -18
  77. data/lib/doc/classes/RGhost/Document.src/M000029.html +0 -18
  78. data/lib/doc/classes/RGhost/Document.src/M000030.html +0 -18
  79. data/lib/doc/classes/RGhost/Document.src/M000031.html +0 -18
  80. data/lib/doc/classes/RGhost/Document.src/M000032.html +0 -18
  81. data/lib/doc/classes/RGhost/Document.src/M000033.html +0 -18
  82. data/lib/doc/classes/RGhost/Document.src/M000034.html +0 -18
  83. data/lib/doc/classes/RGhost/Document.src/M000035.html +0 -18
  84. data/lib/doc/classes/RGhost/Document.src/M000036.html +0 -18
  85. data/lib/doc/classes/RGhost/Document.src/M000037.html +0 -18
  86. data/lib/doc/classes/RGhost/Document.src/M000038.html +0 -18
  87. data/lib/doc/classes/RGhost/Document.src/M000039.html +0 -18
  88. data/lib/doc/classes/RGhost/Document.src/M000040.html +0 -18
  89. data/lib/doc/classes/RGhost/Document.src/M000041.html +0 -18
  90. data/lib/doc/classes/RGhost/Document.src/M000042.html +0 -18
  91. data/lib/doc/classes/RGhost/Document.src/M000043.html +0 -18
  92. data/lib/doc/classes/RGhost/Document.src/M000044.html +0 -18
  93. data/lib/doc/classes/RGhost/Document.src/M000045.html +0 -18
  94. data/lib/doc/classes/RGhost/Document.src/M000046.html +0 -18
  95. data/lib/doc/classes/RGhost/Document.src/M000047.html +0 -18
  96. data/lib/doc/classes/RGhost/Document.src/M000048.html +0 -18
  97. data/lib/doc/created.rid +0 -1
  98. data/lib/doc/files/rghost_barcode/rghost_barcode_adapter_rb.html +0 -101
  99. data/lib/doc/files/rghost_barcode/rghost_barcode_base_rb.html +0 -101
  100. data/lib/doc/files/rghost_barcode/rghost_barcode_classes_rb.html +0 -101
  101. data/lib/doc/files/rghost_barcode/rghost_barcode_examples_rb.html +0 -101
  102. data/lib/doc/files/rghost_barcode/rghost_barcode_version_rb.html +0 -101
  103. data/lib/doc/files/rghost_barcode_rb.html +0 -111
  104. data/lib/doc/files/teste_main_rb.html +0 -110
  105. data/lib/doc/fr_class_index.html +0 -67
  106. data/lib/doc/fr_file_index.html +0 -33
  107. data/lib/doc/fr_method_index.html +0 -74
  108. data/lib/doc/index.html +0 -24
  109. data/lib/rghost_barcode/ps/auspost.ps +0 -192
  110. data/lib/rghost_barcode/ps/azteccode.ps +0 -357
  111. data/lib/rghost_barcode/ps/barcode_template.eps +0 -1193
  112. data/lib/rghost_barcode/ps/code11.ps +0 -128
  113. data/lib/rghost_barcode/ps/code128.ps +0 -121
  114. data/lib/rghost_barcode/ps/code2of5.ps +0 -106
  115. data/lib/rghost_barcode/ps/code39.ps +0 -109
  116. data/lib/rghost_barcode/ps/code93.ps +0 -117
  117. data/lib/rghost_barcode/ps/datamatrix.ps +0 -328
  118. data/lib/rghost_barcode/ps/ean13.ps +0 -183
  119. data/lib/rghost_barcode/ps/ean2.ps +0 -101
  120. data/lib/rghost_barcode/ps/ean5.ps +0 -116
  121. data/lib/rghost_barcode/ps/ean8.ps +0 -101
  122. data/lib/rghost_barcode/ps/interleaved2of5.ps +0 -132
  123. data/lib/rghost_barcode/ps/isbn.ps +0 -118
  124. data/lib/rghost_barcode/ps/kix.ps +0 -98
  125. data/lib/rghost_barcode/ps/maxicode.ps +0 -307
  126. data/lib/rghost_barcode/ps/msi.ps +0 -104
  127. data/lib/rghost_barcode/ps/onecode.ps +0 -276
  128. data/lib/rghost_barcode/ps/pdf417.ps +0 -428
  129. data/lib/rghost_barcode/ps/pharmacode.ps +0 -69
  130. data/lib/rghost_barcode/ps/plessey.ps +0 -121
  131. data/lib/rghost_barcode/ps/postnet.ps +0 -114
  132. data/lib/rghost_barcode/ps/qrcode.ps +0 -530
  133. data/lib/rghost_barcode/ps/rationalizedcodabar.ps +0 -117
  134. data/lib/rghost_barcode/ps/raw.ps +0 -35
  135. data/lib/rghost_barcode/ps/render.ps +0 -307
  136. data/lib/rghost_barcode/ps/render.ps~ +0 -308
  137. data/lib/rghost_barcode/ps/royalmail.ps +0 -119
  138. data/lib/rghost_barcode/ps/rss14.ps +0 -237
  139. data/lib/rghost_barcode/ps/rssexpanded.ps +0 -211
  140. data/lib/rghost_barcode/ps/rsslimited.ps +0 -191
  141. data/lib/rghost_barcode/ps/symbol.ps +0 -49
  142. data/lib/rghost_barcode/ps/upca.ps +0 -128
  143. data/lib/rghost_barcode/ps/upce.ps +0 -157
  144. data/lib/rghost_barcode/rghost_barcode_classes.rb +0 -96
  145. data/lib/rghost_barcode/rghost_barcode_examples.rb +0 -35
  146. 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