Passed
Branch master (a3c0d0)
by Cody
02:54
created
lib/phpqrcode/tools/merge.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -51,11 +51,11 @@
 block discarded – undo
51 51
     
52 52
     $outputCode = '';
53 53
     
54
-    foreach($fileList as $fileName) {
54
+    foreach ($fileList as $fileName) {
55 55
         $outputCode .= "\n\n".'//---- '.basename($fileName).' -----------------------------'."\n\n";
56 56
         $anotherCode = file_get_contents($fileName);
57
-        $anotherCode = preg_replace ('/^<\?php/', '', $anotherCode);
58
-        $anotherCode = preg_replace ('/\?>\*$/', '', $anotherCode);
57
+        $anotherCode = preg_replace('/^<\?php/', '', $anotherCode);
58
+        $anotherCode = preg_replace('/\?>\*$/', '', $anotherCode);
59 59
         $outputCode .= "\n\n".$anotherCode."\n\n";
60 60
     }
61 61
     
Please login to merge, or discard this patch.
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -59,7 +59,7 @@
 block discarded – undo
59 59
         $outputCode .= "\n\n".$anotherCode."\n\n";
60 60
     }
61 61
     
62
-	$versionDataEx = explode("\n", file_get_contents($versionFile));
62
+    $versionDataEx = explode("\n", file_get_contents($versionFile));
63 63
 	
64 64
     $outputContents = file_get_contents($headerFile);
65 65
     $outputContents .= "\n\n/*\n * Version: ".trim($versionDataEx[0])."\n * Build: ".trim($versionDataEx[1])."\n */\n\n";
Please login to merge, or discard this patch.
lib/phpqrcode/tools/merged_config.php 2 patches
Spacing   +7 added lines, -7 removed lines patch added patch discarded remove patch
@@ -5,13 +5,13 @@
 block discarded – undo
5 5
  * Config file, tuned-up for merged verion
6 6
  */
7 7
      
8
-    define('QR_CACHEABLE', false);       // use cache - more disk reads but less CPU power, masks and format templates are stored there
9
-    define('QR_CACHE_DIR', false);       // used when QR_CACHEABLE === true
10
-    define('QR_LOG_DIR', false);         // default error logs dir   
8
+    define('QR_CACHEABLE', false); // use cache - more disk reads but less CPU power, masks and format templates are stored there
9
+    define('QR_CACHE_DIR', false); // used when QR_CACHEABLE === true
10
+    define('QR_LOG_DIR', false); // default error logs dir   
11 11
     
12
-    define('QR_FIND_BEST_MASK', true);                                                          // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
13
-    define('QR_FIND_FROM_RANDOM', 2);                                                       // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
14
-    define('QR_DEFAULT_MASK', 2);                                                               // when QR_FIND_BEST_MASK === false
12
+    define('QR_FIND_BEST_MASK', true); // if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
13
+    define('QR_FIND_FROM_RANDOM', 2); // if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
14
+    define('QR_DEFAULT_MASK', 2); // when QR_FIND_BEST_MASK === false
15 15
                                                   
16
-    define('QR_PNG_MAXIMUM_SIZE',  1024);                                                       // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
16
+    define('QR_PNG_MAXIMUM_SIZE', 1024); // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
17 17
                                                   
18 18
\ No newline at end of file
Please login to merge, or discard this patch.
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -14,4 +14,4 @@
 block discarded – undo
14 14
     define('QR_DEFAULT_MASK', 2);                                                               // when QR_FIND_BEST_MASK === false
15 15
                                                   
16 16
     define('QR_PNG_MAXIMUM_SIZE',  1024);                                                       // maximum allowed png image width (in pixels), tune to make sure GD and PHP can handle such big images
17
-                                                  
18 17
\ No newline at end of file
18
+                                                    
19 19
\ No newline at end of file
Please login to merge, or discard this patch.
lib/phpqrcode/qrbitstream.php 2 patches
Spacing   +17 added lines, -17 removed lines patch added patch discarded remove patch
@@ -49,8 +49,8 @@  discard block
 block discarded – undo
49 49
             $bstream->allocate($bits);
50 50
             
51 51
             $mask = 1 << ($bits - 1);
52
-            for($i=0; $i<$bits; $i++) {
53
-                if($num & $mask) {
52
+            for ($i = 0; $i < $bits; $i++) {
53
+                if ($num & $mask) {
54 54
                     $bstream->data[$i] = 1;
55 55
                 } else {
56 56
                     $bstream->data[$i] = 0;
@@ -66,12 +66,12 @@  discard block
 block discarded – undo
66 66
         {
67 67
             $bstream = new QRbitstream();
68 68
             $bstream->allocate($size * 8);
69
-            $p=0;
69
+            $p = 0;
70 70
 
71
-            for($i=0; $i<$size; $i++) {
71
+            for ($i = 0; $i < $size; $i++) {
72 72
                 $mask = 0x80;
73
-                for($j=0; $j<8; $j++) {
74
-                    if($data[$i] & $mask) {
73
+                for ($j = 0; $j < 8; $j++) {
74
+                    if ($data[$i] & $mask) {
75 75
                         $bstream->data[$p] = 1;
76 76
                     } else {
77 77
                         $bstream->data[$p] = 0;
@@ -91,11 +91,11 @@  discard block
 block discarded – undo
91 91
                 return -1;
92 92
             }
93 93
             
94
-            if($arg->size() == 0) {
94
+            if ($arg->size() == 0) {
95 95
                 return 0;
96 96
             }
97 97
             
98
-            if($this->size() == 0) {
98
+            if ($this->size() == 0) {
99 99
                 $this->data = $arg->data;
100 100
                 return 0;
101 101
             }
@@ -113,7 +113,7 @@  discard block
 block discarded – undo
113 113
 
114 114
             $b = QRbitstream::newFromNum($bits, $num);
115 115
             
116
-            if(is_null($b))
116
+            if (is_null($b))
117 117
                 return -1;
118 118
 
119 119
             $ret = $this->append($b);
@@ -130,7 +130,7 @@  discard block
 block discarded – undo
130 130
 
131 131
             $b = QRbitstream::newFromBytes($size, $data);
132 132
             
133
-            if(is_null($b))
133
+            if (is_null($b))
134 134
                 return -1;
135 135
 
136 136
             $ret = $this->append($b);
@@ -145,18 +145,18 @@  discard block
 block discarded – undo
145 145
         
146 146
             $size = $this->size();
147 147
 
148
-            if($size == 0) {
148
+            if ($size == 0) {
149 149
                 return array();
150 150
             }
151 151
             
152
-            $data = array_fill(0, (int)(($size + 7) / 8), 0);
153
-            $bytes = (int)($size / 8);
152
+            $data = array_fill(0, (int) (($size + 7) / 8), 0);
153
+            $bytes = (int) ($size / 8);
154 154
 
155 155
             $p = 0;
156 156
             
157
-            for($i=0; $i<$bytes; $i++) {
157
+            for ($i = 0; $i < $bytes; $i++) {
158 158
                 $v = 0;
159
-                for($j=0; $j<8; $j++) {
159
+                for ($j = 0; $j < 8; $j++) {
160 160
                     $v = $v << 1;
161 161
                     $v |= $this->data[$p];
162 162
                     $p++;
@@ -164,9 +164,9 @@  discard block
 block discarded – undo
164 164
                 $data[$i] = $v;
165 165
             }
166 166
             
167
-            if($size & 7) {
167
+            if ($size & 7) {
168 168
                 $v = 0;
169
-                for($j=0; $j<($size & 7); $j++) {
169
+                for ($j = 0; $j < ($size & 7); $j++) {
170 170
                     $v = $v << 1;
171 171
                     $v |= $this->data[$p];
172 172
                     $p++;
Please login to merge, or discard this patch.
Braces   +12 added lines, -8 removed lines patch added patch discarded remove patch
@@ -108,13 +108,15 @@  discard block
 block discarded – undo
108 108
         //----------------------------------------------------------------------
109 109
         public function appendNum($bits, $num)
110 110
         {
111
-            if ($bits == 0) 
112
-                return 0;
111
+            if ($bits == 0) {
112
+                            return 0;
113
+            }
113 114
 
114 115
             $b = QRbitstream::newFromNum($bits, $num);
115 116
             
116
-            if(is_null($b))
117
-                return -1;
117
+            if(is_null($b)) {
118
+                            return -1;
119
+            }
118 120
 
119 121
             $ret = $this->append($b);
120 122
             unset($b);
@@ -125,13 +127,15 @@  discard block
 block discarded – undo
125 127
         //----------------------------------------------------------------------
126 128
         public function appendBytes($size, $data)
127 129
         {
128
-            if ($size == 0) 
129
-                return 0;
130
+            if ($size == 0) {
131
+                            return 0;
132
+            }
130 133
 
131 134
             $b = QRbitstream::newFromBytes($size, $data);
132 135
             
133
-            if(is_null($b))
134
-                return -1;
136
+            if(is_null($b)) {
137
+                            return -1;
138
+            }
135 139
 
136 140
             $ret = $this->append($b);
137 141
             unset($b);
Please login to merge, or discard this patch.
lib/phpqrcode/qrsplit.php 3 patches
Switch Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -255,14 +255,14 @@
 block discarded – undo
255 255
                 $mode = $this->identifyMode(0);
256 256
                 
257 257
                 switch ($mode) {
258
-                    case QR_MODE_NUM: $length = $this->eatNum(); break;
259
-                    case QR_MODE_AN:  $length = $this->eatAn(); break;
260
-                    case QR_MODE_KANJI:
261
-                        if ($this->modeHint == QR_MODE_KANJI)
262
-                                $length = $this->eatKanji();
263
-                        else    $length = $this->eat8();
264
-                        break;
265
-                    default: $length = $this->eat8(); break;
258
+                case QR_MODE_NUM: $length = $this->eatNum(); break;
259
+                case QR_MODE_AN:  $length = $this->eatAn(); break;
260
+                case QR_MODE_KANJI:
261
+                    if ($this->modeHint == QR_MODE_KANJI)
262
+                            $length = $this->eatKanji();
263
+                    else    $length = $this->eat8();
264
+                    break;
265
+                default: $length = $this->eat8(); break;
266 266
                 
267 267
                 }
268 268
 
Please login to merge, or discard this patch.
Spacing   +40 added lines, -40 removed lines patch added patch discarded remove patch
@@ -50,7 +50,7 @@  discard block
 block discarded – undo
50 50
             if ($pos >= strlen($str))
51 51
                 return false;
52 52
             
53
-            return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
53
+            return ((ord($str[$pos]) >= ord('0')) && (ord($str[$pos]) <= ord('9')));
54 54
         }
55 55
         
56 56
         //----------------------------------------------------------------------
@@ -70,17 +70,17 @@  discard block
 block discarded – undo
70 70
                 
71 71
             $c = $this->dataStr[$pos];
72 72
             
73
-            if(self::isdigitat($this->dataStr, $pos)) {
73
+            if (self::isdigitat($this->dataStr, $pos)) {
74 74
                 return QR_MODE_NUM;
75
-            } else if(self::isalnumat($this->dataStr, $pos)) {
75
+            } else if (self::isalnumat($this->dataStr, $pos)) {
76 76
                 return QR_MODE_AN;
77
-            } else if($this->modeHint == QR_MODE_KANJI) {
77
+            } else if ($this->modeHint == QR_MODE_KANJI) {
78 78
             
79
-                if ($pos+1 < strlen($this->dataStr)) 
79
+                if ($pos + 1 < strlen($this->dataStr)) 
80 80
                 {
81
-                    $d = $this->dataStr[$pos+1];
81
+                    $d = $this->dataStr[$pos + 1];
82 82
                     $word = (ord($c) << 8) | ord($d);
83
-                    if(($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) {
83
+                    if (($word >= 0x8140 && $word <= 0x9ffc) || ($word >= 0xe040 && $word <= 0xebbf)) {
84 84
                         return QR_MODE_KANJI;
85 85
                     }
86 86
                 }
@@ -95,32 +95,32 @@  discard block
 block discarded – undo
95 95
             $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
96 96
 
97 97
             $p = 0;
98
-            while(self::isdigitat($this->dataStr, $p)) {
98
+            while (self::isdigitat($this->dataStr, $p)) {
99 99
                 $p++;
100 100
             }
101 101
             
102 102
             $run = $p;
103 103
             $mode = $this->identifyMode($p);
104 104
             
105
-            if($mode == QR_MODE_8) {
105
+            if ($mode == QR_MODE_8) {
106 106
                 $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
107 107
                      + QRinput::estimateBitsMode8(1)         // + 4 + l8
108 108
                      - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
109
-                if($dif > 0) {
109
+                if ($dif > 0) {
110 110
                     return $this->eat8();
111 111
                 }
112 112
             }
113
-            if($mode == QR_MODE_AN) {
113
+            if ($mode == QR_MODE_AN) {
114 114
                 $dif = QRinput::estimateBitsModeNum($run) + 4 + $ln
115 115
                      + QRinput::estimateBitsModeAn(1)        // + 4 + la
116
-                     - QRinput::estimateBitsModeAn($run + 1);// - 4 - la
117
-                if($dif > 0) {
116
+                     - QRinput::estimateBitsModeAn($run + 1); // - 4 - la
117
+                if ($dif > 0) {
118 118
                     return $this->eatAn();
119 119
                 }
120 120
             }
121 121
             
122 122
             $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr));
123
-            if($ret < 0)
123
+            if ($ret < 0)
124 124
                 return -1;
125 125
 
126 126
             return $run;
@@ -129,15 +129,15 @@  discard block
 block discarded – undo
129 129
         //----------------------------------------------------------------------
130 130
         public function eatAn()
131 131
         {
132
-            $la = QRspec::lengthIndicator(QR_MODE_AN,  $this->input->getVersion());
132
+            $la = QRspec::lengthIndicator(QR_MODE_AN, $this->input->getVersion());
133 133
             $ln = QRspec::lengthIndicator(QR_MODE_NUM, $this->input->getVersion());
134 134
 
135 135
             $p = 0;
136 136
             
137
-            while(self::isalnumat($this->dataStr, $p)) {
138
-                if(self::isdigitat($this->dataStr, $p)) {
137
+            while (self::isalnumat($this->dataStr, $p)) {
138
+                if (self::isdigitat($this->dataStr, $p)) {
139 139
                     $q = $p;
140
-                    while(self::isdigitat($this->dataStr, $q)) {
140
+                    while (self::isdigitat($this->dataStr, $q)) {
141 141
                         $q++;
142 142
                     }
143 143
                     
@@ -145,7 +145,7 @@  discard block
 block discarded – undo
145 145
                          + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
146 146
                          - QRinput::estimateBitsModeAn($q); // - 4 - la
147 147
                          
148
-                    if($dif < 0) {
148
+                    if ($dif < 0) {
149 149
                         break;
150 150
                     } else {
151 151
                         $p = $q;
@@ -157,17 +157,17 @@  discard block
 block discarded – undo
157 157
 
158 158
             $run = $p;
159 159
 
160
-            if(!self::isalnumat($this->dataStr, $p)) {
160
+            if (!self::isalnumat($this->dataStr, $p)) {
161 161
                 $dif = QRinput::estimateBitsModeAn($run) + 4 + $la
162 162
                      + QRinput::estimateBitsMode8(1) // + 4 + l8
163 163
                       - QRinput::estimateBitsMode8($run + 1); // - 4 - l8
164
-                if($dif > 0) {
164
+                if ($dif > 0) {
165 165
                     return $this->eat8();
166 166
                 }
167 167
             }
168 168
 
169 169
             $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr));
170
-            if($ret < 0)
170
+            if ($ret < 0)
171 171
                 return -1;
172 172
 
173 173
             return $run;
@@ -178,12 +178,12 @@  discard block
 block discarded – undo
178 178
         {
179 179
             $p = 0;
180 180
             
181
-            while($this->identifyMode($p) == QR_MODE_KANJI) {
181
+            while ($this->identifyMode($p) == QR_MODE_KANJI) {
182 182
                 $p += 2;
183 183
             }
184 184
             
185 185
             $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr));
186
-            if($ret < 0)
186
+            if ($ret < 0)
187 187
                 return -1;
188 188
 
189 189
             return $ret;
@@ -198,34 +198,34 @@  discard block
 block discarded – undo
198 198
             $p = 1;
199 199
             $dataStrLen = strlen($this->dataStr);
200 200
             
201
-            while($p < $dataStrLen) {
201
+            while ($p < $dataStrLen) {
202 202
                 
203 203
                 $mode = $this->identifyMode($p);
204
-                if($mode == QR_MODE_KANJI) {
204
+                if ($mode == QR_MODE_KANJI) {
205 205
                     break;
206 206
                 }
207
-                if($mode == QR_MODE_NUM) {
207
+                if ($mode == QR_MODE_NUM) {
208 208
                     $q = $p;
209
-                    while(self::isdigitat($this->dataStr, $q)) {
209
+                    while (self::isdigitat($this->dataStr, $q)) {
210 210
                         $q++;
211 211
                     }
212 212
                     $dif = QRinput::estimateBitsMode8($p) // + 4 + l8
213 213
                          + QRinput::estimateBitsModeNum($q - $p) + 4 + $ln
214 214
                          - QRinput::estimateBitsMode8($q); // - 4 - l8
215
-                    if($dif < 0) {
215
+                    if ($dif < 0) {
216 216
                         break;
217 217
                     } else {
218 218
                         $p = $q;
219 219
                     }
220
-                } else if($mode == QR_MODE_AN) {
220
+                } else if ($mode == QR_MODE_AN) {
221 221
                     $q = $p;
222
-                    while(self::isalnumat($this->dataStr, $q)) {
222
+                    while (self::isalnumat($this->dataStr, $q)) {
223 223
                         $q++;
224 224
                     }
225 225
                     $dif = QRinput::estimateBitsMode8($p)  // + 4 + l8
226 226
                          + QRinput::estimateBitsModeAn($q - $p) + 4 + $la
227 227
                          - QRinput::estimateBitsMode8($q); // - 4 - l8
228
-                    if($dif < 0) {
228
+                    if ($dif < 0) {
229 229
                         break;
230 230
                     } else {
231 231
                         $p = $q;
@@ -238,7 +238,7 @@  discard block
 block discarded – undo
238 238
             $run = $p;
239 239
             $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr));
240 240
             
241
-            if($ret < 0)
241
+            if ($ret < 0)
242 242
                 return -1;
243 243
 
244 244
             return $run;
@@ -249,7 +249,7 @@  discard block
 block discarded – undo
249 249
         {
250 250
             while (strlen($this->dataStr) > 0)
251 251
             {
252
-                if($this->dataStr == '')
252
+                if ($this->dataStr == '')
253 253
                     return 0;
254 254
 
255 255
                 $mode = $this->identifyMode(0);
@@ -266,8 +266,8 @@  discard block
 block discarded – undo
266 266
                 
267 267
                 }
268 268
 
269
-                if($length == 0) return 0;
270
-                if($length < 0)  return -1;
269
+                if ($length == 0) return 0;
270
+                if ($length < 0)  return -1;
271 271
                 
272 272
                 $this->dataStr = substr($this->dataStr, $length);
273 273
             }
@@ -279,9 +279,9 @@  discard block
 block discarded – undo
279 279
             $stringLen = strlen($this->dataStr);
280 280
             $p = 0;
281 281
             
282
-            while ($p<$stringLen) {
282
+            while ($p < $stringLen) {
283 283
                 $mode = self::identifyMode(substr($this->dataStr, $p));
284
-                if($mode == QR_MODE_KANJI) {
284
+                if ($mode == QR_MODE_KANJI) {
285 285
                     $p += 2;
286 286
                 } else {
287 287
                     if (ord($this->dataStr[$p]) >= ord('a') && ord($this->dataStr[$p]) <= ord('z')) {
@@ -297,13 +297,13 @@  discard block
 block discarded – undo
297 297
         //----------------------------------------------------------------------
298 298
         public static function splitStringToQRinput($string, QRinput $input, $modeHint, $casesensitive = true)
299 299
         {
300
-            if(is_null($string) || $string == '\0' || $string == '') {
300
+            if (is_null($string) || $string == '\0' || $string == '') {
301 301
                 throw new Exception('empty string!!!');
302 302
             }
303 303
 
304 304
             $split = new QRsplit($string, $input, $modeHint);
305 305
             
306
-            if(!$casesensitive)
306
+            if (!$casesensitive)
307 307
                 $split->toUpper();
308 308
                 
309 309
             return $split->splitString();
Please login to merge, or discard this patch.
Braces   +38 added lines, -23 removed lines patch added patch discarded remove patch
@@ -47,8 +47,9 @@  discard block
 block discarded – undo
47 47
         //----------------------------------------------------------------------
48 48
         public static function isdigitat($str, $pos)
49 49
         {    
50
-            if ($pos >= strlen($str))
51
-                return false;
50
+            if ($pos >= strlen($str)) {
51
+                            return false;
52
+            }
52 53
             
53 54
             return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
54 55
         }
@@ -56,8 +57,9 @@  discard block
 block discarded – undo
56 57
         //----------------------------------------------------------------------
57 58
         public static function isalnumat($str, $pos)
58 59
         {
59
-            if ($pos >= strlen($str))
60
-                return false;
60
+            if ($pos >= strlen($str)) {
61
+                            return false;
62
+            }
61 63
                 
62 64
             return (QRinput::lookAnTable(ord($str[$pos])) >= 0);
63 65
         }
@@ -65,8 +67,9 @@  discard block
 block discarded – undo
65 67
         //----------------------------------------------------------------------
66 68
         public function identifyMode($pos)
67 69
         {
68
-            if ($pos >= strlen($this->dataStr)) 
69
-                return QR_MODE_NUL;
70
+            if ($pos >= strlen($this->dataStr)) {
71
+                            return QR_MODE_NUL;
72
+            }
70 73
                 
71 74
             $c = $this->dataStr[$pos];
72 75
             
@@ -120,8 +123,9 @@  discard block
 block discarded – undo
120 123
             }
121 124
             
122 125
             $ret = $this->input->append(QR_MODE_NUM, $run, str_split($this->dataStr));
123
-            if($ret < 0)
124
-                return -1;
126
+            if($ret < 0) {
127
+                            return -1;
128
+            }
125 129
 
126 130
             return $run;
127 131
         }
@@ -167,8 +171,9 @@  discard block
 block discarded – undo
167 171
             }
168 172
 
169 173
             $ret = $this->input->append(QR_MODE_AN, $run, str_split($this->dataStr));
170
-            if($ret < 0)
171
-                return -1;
174
+            if($ret < 0) {
175
+                            return -1;
176
+            }
172 177
 
173 178
             return $run;
174 179
         }
@@ -183,8 +188,9 @@  discard block
 block discarded – undo
183 188
             }
184 189
             
185 190
             $ret = $this->input->append(QR_MODE_KANJI, $p, str_split($this->dataStr));
186
-            if($ret < 0)
187
-                return -1;
191
+            if($ret < 0) {
192
+                            return -1;
193
+            }
188 194
 
189 195
             return $ret;
190 196
         }
@@ -238,8 +244,9 @@  discard block
 block discarded – undo
238 244
             $run = $p;
239 245
             $ret = $this->input->append(QR_MODE_8, $run, str_split($this->dataStr));
240 246
             
241
-            if($ret < 0)
242
-                return -1;
247
+            if($ret < 0) {
248
+                            return -1;
249
+            }
243 250
 
244 251
             return $run;
245 252
         }
@@ -249,8 +256,9 @@  discard block
 block discarded – undo
249 256
         {
250 257
             while (strlen($this->dataStr) > 0)
251 258
             {
252
-                if($this->dataStr == '')
253
-                    return 0;
259
+                if($this->dataStr == '') {
260
+                                    return 0;
261
+                }
254 262
 
255 263
                 $mode = $this->identifyMode(0);
256 264
                 
@@ -258,16 +266,22 @@  discard block
 block discarded – undo
258 266
                     case QR_MODE_NUM: $length = $this->eatNum(); break;
259 267
                     case QR_MODE_AN:  $length = $this->eatAn(); break;
260 268
                     case QR_MODE_KANJI:
261
-                        if ($this->modeHint == QR_MODE_KANJI)
262
-                                $length = $this->eatKanji();
263
-                        else    $length = $this->eat8();
269
+                        if ($this->modeHint == QR_MODE_KANJI) {
270
+                                                        $length = $this->eatKanji();
271
+                        } else {
272
+                            $length = $this->eat8();
273
+                        }
264 274
                         break;
265 275
                     default: $length = $this->eat8(); break;
266 276
                 
267 277
                 }
268 278
 
269
-                if($length == 0) return 0;
270
-                if($length < 0)  return -1;
279
+                if($length == 0) {
280
+                    return 0;
281
+                }
282
+                if($length < 0) {
283
+                    return -1;
284
+                }
271 285
                 
272 286
                 $this->dataStr = substr($this->dataStr, $length);
273 287
             }
@@ -303,8 +317,9 @@  discard block
 block discarded – undo
303 317
 
304 318
             $split = new QRsplit($string, $input, $modeHint);
305 319
             
306
-            if(!$casesensitive)
307
-                $split->toUpper();
320
+            if(!$casesensitive) {
321
+                            $split->toUpper();
322
+            }
308 323
                 
309 324
             return $split->splitString();
310 325
         }
Please login to merge, or discard this patch.
lib/phpqrcode/qrinput.php 5 patches
Switch Indentation   +58 added lines, -58 removed lines patch added patch discarded remove patch
@@ -201,13 +201,13 @@  discard block
 block discarded – undo
201 201
                 $version = 1;
202 202
 
203 203
             switch($this->mode) {
204
-                case QR_MODE_NUM:        $bits = QRinput::estimateBitsModeNum($this->size);    break;
205
-                case QR_MODE_AN:        $bits = QRinput::estimateBitsModeAn($this->size);    break;
206
-                case QR_MODE_8:            $bits = QRinput::estimateBitsMode8($this->size);    break;
207
-                case QR_MODE_KANJI:        $bits = QRinput::estimateBitsModeKanji($this->size);break;
208
-                case QR_MODE_STRUCTURE:    return STRUCTURE_HEADER_BITS;            
209
-                default:
210
-                    return 0;
204
+            case QR_MODE_NUM:        $bits = QRinput::estimateBitsModeNum($this->size);    break;
205
+            case QR_MODE_AN:        $bits = QRinput::estimateBitsModeAn($this->size);    break;
206
+            case QR_MODE_8:            $bits = QRinput::estimateBitsMode8($this->size);    break;
207
+            case QR_MODE_KANJI:        $bits = QRinput::estimateBitsModeKanji($this->size);break;
208
+            case QR_MODE_STRUCTURE:    return STRUCTURE_HEADER_BITS;            
209
+            default:
210
+                return 0;
211 211
             }
212 212
 
213 213
             $l = QRspec::lengthIndicator($this->mode, $version);
@@ -247,14 +247,14 @@  discard block
 block discarded – undo
247 247
                     $ret = 0;
248 248
                     
249 249
                     switch($this->mode) {
250
-                        case QR_MODE_NUM:        $ret = $this->encodeModeNum($version);    break;
251
-                        case QR_MODE_AN:        $ret = $this->encodeModeAn($version);    break;
252
-                        case QR_MODE_8:            $ret = $this->encodeMode8($version);    break;
253
-                        case QR_MODE_KANJI:        $ret = $this->encodeModeKanji($version);break;
254
-                        case QR_MODE_STRUCTURE:    $ret = $this->encodeModeStructure();    break;
250
+                    case QR_MODE_NUM:        $ret = $this->encodeModeNum($version);    break;
251
+                    case QR_MODE_AN:        $ret = $this->encodeModeAn($version);    break;
252
+                    case QR_MODE_8:            $ret = $this->encodeMode8($version);    break;
253
+                    case QR_MODE_KANJI:        $ret = $this->encodeModeKanji($version);break;
254
+                    case QR_MODE_STRUCTURE:    $ret = $this->encodeModeStructure();    break;
255 255
                         
256
-                        default:
257
-                            break;
256
+                    default:
257
+                        break;
258 258
                     }
259 259
                     
260 260
                     if($ret < 0)
@@ -404,14 +404,14 @@  discard block
 block discarded – undo
404 404
             $bits = $w * 10;
405 405
             
406 406
             switch($size - $w * 3) {
407
-                case 1:
408
-                    $bits += 4;
409
-                    break;
410
-                case 2:
411
-                    $bits += 7;
412
-                    break;
413
-                default:
414
-                    break;
407
+            case 1:
408
+                $bits += 4;
409
+                break;
410
+            case 2:
411
+                $bits += 7;
412
+                break;
413
+            default:
414
+                break;
415 415
             }
416 416
 
417 417
             return $bits;
@@ -500,14 +500,14 @@  discard block
 block discarded – undo
500 500
                 return false;
501 501
 
502 502
             switch($mode) {
503
-                case QR_MODE_NUM:       return self::checkModeNum($size, $data);   break;
504
-                case QR_MODE_AN:        return self::checkModeAn($size, $data);    break;
505
-                case QR_MODE_KANJI:     return self::checkModeKanji($size, $data); break;
506
-                case QR_MODE_8:         return true; break;
507
-                case QR_MODE_STRUCTURE: return true; break;
503
+            case QR_MODE_NUM:       return self::checkModeNum($size, $data);   break;
504
+            case QR_MODE_AN:        return self::checkModeAn($size, $data);    break;
505
+            case QR_MODE_KANJI:     return self::checkModeKanji($size, $data); break;
506
+            case QR_MODE_8:         return true; break;
507
+            case QR_MODE_STRUCTURE: return true; break;
508 508
                 
509
-                default:
510
-                    break;
509
+            default:
510
+                break;
511 511
             }
512 512
 
513 513
             return false;
@@ -548,35 +548,35 @@  discard block
 block discarded – undo
548 548
         {
549 549
             $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version);
550 550
             switch($mode) {
551
-                case QR_MODE_NUM:
552
-                    $chunks = (int)($payload / 10);
553
-                    $remain = $payload - $chunks * 10;
554
-                    $size = $chunks * 3;
555
-                    if($remain >= 7) {
556
-                        $size += 2;
557
-                    } else if($remain >= 4) {
558
-                        $size += 1;
559
-                    }
560
-                    break;
561
-                case QR_MODE_AN:
562
-                    $chunks = (int)($payload / 11);
563
-                    $remain = $payload - $chunks * 11;
564
-                    $size = $chunks * 2;
565
-                    if($remain >= 6) 
566
-                        $size++;
567
-                    break;
568
-                case QR_MODE_8:
569
-                    $size = (int)($payload / 8);
570
-                    break;
571
-                case QR_MODE_KANJI:
572
-                    $size = (int)(($payload / 13) * 2);
573
-                    break;
574
-                case QR_MODE_STRUCTURE:
575
-                    $size = (int)($payload / 8);
576
-                    break;
577
-                default:
578
-                    $size = 0;
579
-                    break;
551
+            case QR_MODE_NUM:
552
+                $chunks = (int)($payload / 10);
553
+                $remain = $payload - $chunks * 10;
554
+                $size = $chunks * 3;
555
+                if($remain >= 7) {
556
+                    $size += 2;
557
+                } else if($remain >= 4) {
558
+                    $size += 1;
559
+                }
560
+                break;
561
+            case QR_MODE_AN:
562
+                $chunks = (int)($payload / 11);
563
+                $remain = $payload - $chunks * 11;
564
+                $size = $chunks * 2;
565
+                if($remain >= 6) 
566
+                    $size++;
567
+                break;
568
+            case QR_MODE_8:
569
+                $size = (int)($payload / 8);
570
+                break;
571
+            case QR_MODE_KANJI:
572
+                $size = (int)(($payload / 13) * 2);
573
+                break;
574
+            case QR_MODE_STRUCTURE:
575
+                $size = (int)($payload / 8);
576
+                break;
577
+            default:
578
+                $size = 0;
579
+                break;
580 580
             }
581 581
             
582 582
             $maxsize = QRspec::maximumWords($mode, $version);
Please login to merge, or discard this patch.
Spacing   +98 added lines, -98 removed lines patch added patch discarded remove patch
@@ -25,7 +25,7 @@  discard block
 block discarded – undo
25 25
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26 26
  */
27 27
  
28
-    define('STRUCTURE_HEADER_BITS',  20);
28
+    define('STRUCTURE_HEADER_BITS', 20);
29 29
     define('MAX_STRUCTURED_SYMBOLS', 16);
30 30
 
31 31
     class QRinputItem {
@@ -40,11 +40,11 @@  discard block
 block discarded – undo
40 40
             $setData = array_slice($data, 0, $size);
41 41
             
42 42
             if (count($setData) < $size) {
43
-                $setData = array_merge($setData, array_fill(0,$size-count($setData),0));
43
+                $setData = array_merge($setData, array_fill(0, $size - count($setData), 0));
44 44
             }
45 45
         
46
-            if(!QRinput::check($mode, $size, $setData)) {
47
-                throw new Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',',$setData));
46
+            if (!QRinput::check($mode, $size, $setData)) {
47
+                throw new Exception('Error m:'.$mode.',s:'.$size.',d:'.join(',', $setData));
48 48
                 return null;
49 49
             }
50 50
             
@@ -59,26 +59,26 @@  discard block
 block discarded – undo
59 59
         {
60 60
             try {
61 61
             
62
-                $words = (int)($this->size / 3);
62
+                $words = (int) ($this->size / 3);
63 63
                 $bs = new QRbitstream();
64 64
                 
65 65
                 $val = 0x1;
66 66
                 $bs->appendNum(4, $val);
67 67
                 $bs->appendNum(QRspec::lengthIndicator(QR_MODE_NUM, $version), $this->size);
68 68
 
69
-                for($i=0; $i<$words; $i++) {
70
-                    $val  = (ord($this->data[$i*3  ]) - ord('0')) * 100;
71
-                    $val += (ord($this->data[$i*3+1]) - ord('0')) * 10;
72
-                    $val += (ord($this->data[$i*3+2]) - ord('0'));
69
+                for ($i = 0; $i < $words; $i++) {
70
+                    $val  = (ord($this->data[$i * 3]) - ord('0')) * 100;
71
+                    $val += (ord($this->data[$i * 3 + 1]) - ord('0')) * 10;
72
+                    $val += (ord($this->data[$i * 3 + 2]) - ord('0'));
73 73
                     $bs->appendNum(10, $val);
74 74
                 }
75 75
 
76
-                if($this->size - $words * 3 == 1) {
77
-                    $val = ord($this->data[$words*3]) - ord('0');
76
+                if ($this->size - $words * 3 == 1) {
77
+                    $val = ord($this->data[$words * 3]) - ord('0');
78 78
                     $bs->appendNum(4, $val);
79
-                } else if($this->size - $words * 3 == 2) {
80
-                    $val  = (ord($this->data[$words*3  ]) - ord('0')) * 10;
81
-                    $val += (ord($this->data[$words*3+1]) - ord('0'));
79
+                } else if ($this->size - $words * 3 == 2) {
80
+                    $val  = (ord($this->data[$words * 3]) - ord('0')) * 10;
81
+                    $val += (ord($this->data[$words * 3 + 1]) - ord('0'));
82 82
                     $bs->appendNum(7, $val);
83 83
                 }
84 84
 
@@ -94,20 +94,20 @@  discard block
 block discarded – undo
94 94
         public function encodeModeAn($version)
95 95
         {
96 96
             try {
97
-                $words = (int)($this->size / 2);
97
+                $words = (int) ($this->size / 2);
98 98
                 $bs = new QRbitstream();
99 99
                 
100 100
                 $bs->appendNum(4, 0x02);
101 101
                 $bs->appendNum(QRspec::lengthIndicator(QR_MODE_AN, $version), $this->size);
102 102
 
103
-                for($i=0; $i<$words; $i++) {
104
-                    $val  = (int)QRinput::lookAnTable(ord($this->data[$i*2  ])) * 45;
105
-                    $val += (int)QRinput::lookAnTable(ord($this->data[$i*2+1]));
103
+                for ($i = 0; $i < $words; $i++) {
104
+                    $val  = (int) QRinput::lookAnTable(ord($this->data[$i * 2])) * 45;
105
+                    $val += (int) QRinput::lookAnTable(ord($this->data[$i * 2 + 1]));
106 106
 
107 107
                     $bs->appendNum(11, $val);
108 108
                 }
109 109
 
110
-                if($this->size & 1) {
110
+                if ($this->size & 1) {
111 111
                     $val = QRinput::lookAnTable(ord($this->data[$words * 2]));
112 112
                     $bs->appendNum(6, $val);
113 113
                 }
@@ -129,7 +129,7 @@  discard block
 block discarded – undo
129 129
                 $bs->appendNum(4, 0x4);
130 130
                 $bs->appendNum(QRspec::lengthIndicator(QR_MODE_8, $version), $this->size);
131 131
 
132
-                for($i=0; $i<$this->size; $i++) {
132
+                for ($i = 0; $i < $this->size; $i++) {
133 133
                     $bs->appendNum(8, ord($this->data[$i]));
134 134
                 }
135 135
 
@@ -149,11 +149,11 @@  discard block
 block discarded – undo
149 149
                 $bs = new QRbitrtream();
150 150
                 
151 151
                 $bs->appendNum(4, 0x8);
152
-                $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int)($this->size / 2));
152
+                $bs->appendNum(QRspec::lengthIndicator(QR_MODE_KANJI, $version), (int) ($this->size / 2));
153 153
 
154
-                for($i=0; $i<$this->size; $i+=2) {
155
-                    $val = (ord($this->data[$i]) << 8) | ord($this->data[$i+1]);
156
-                    if($val <= 0x9ffc) {
154
+                for ($i = 0; $i < $this->size; $i += 2) {
155
+                    $val = (ord($this->data[$i]) << 8) | ord($this->data[$i + 1]);
156
+                    if ($val <= 0x9ffc) {
157 157
                         $val -= 0x8140;
158 158
                     } else {
159 159
                         $val -= 0xc140;
@@ -177,7 +177,7 @@  discard block
 block discarded – undo
177 177
         public function encodeModeStructure()
178 178
         {
179 179
             try {
180
-                $bs =  new QRbitstream();
180
+                $bs = new QRbitstream();
181 181
                 
182 182
                 $bs->appendNum(4, 0x03);
183 183
                 $bs->appendNum(4, ord($this->data[1]) - 1);
@@ -197,14 +197,14 @@  discard block
 block discarded – undo
197 197
         {
198 198
             $bits = 0;
199 199
 
200
-            if($version == 0) 
200
+            if ($version == 0) 
201 201
                 $version = 1;
202 202
 
203
-            switch($this->mode) {
204
-                case QR_MODE_NUM:        $bits = QRinput::estimateBitsModeNum($this->size);    break;
205
-                case QR_MODE_AN:        $bits = QRinput::estimateBitsModeAn($this->size);    break;
206
-                case QR_MODE_8:            $bits = QRinput::estimateBitsMode8($this->size);    break;
207
-                case QR_MODE_KANJI:        $bits = QRinput::estimateBitsModeKanji($this->size);break;
203
+            switch ($this->mode) {
204
+                case QR_MODE_NUM:        $bits = QRinput::estimateBitsModeNum($this->size); break;
205
+                case QR_MODE_AN:        $bits = QRinput::estimateBitsModeAn($this->size); break;
206
+                case QR_MODE_8:            $bits = QRinput::estimateBitsMode8($this->size); break;
207
+                case QR_MODE_KANJI:        $bits = QRinput::estimateBitsModeKanji($this->size); break;
208 208
                 case QR_MODE_STRUCTURE:    return STRUCTURE_HEADER_BITS;            
209 209
                 default:
210 210
                     return 0;
@@ -212,7 +212,7 @@  discard block
 block discarded – undo
212 212
 
213 213
             $l = QRspec::lengthIndicator($this->mode, $version);
214 214
             $m = 1 << $l;
215
-            $num = (int)(($this->size + $m - 1) / $m);
215
+            $num = (int) (($this->size + $m - 1) / $m);
216 216
 
217 217
             $bits += $num * (4 + $l);
218 218
 
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
                 unset($this->bstream);
228 228
                 $words = QRspec::maximumWords($this->mode, $version);
229 229
                 
230
-                if($this->size > $words) {
230
+                if ($this->size > $words) {
231 231
                 
232 232
                     $st1 = new QRinputItem($this->mode, $words, $this->data);
233 233
                     $st2 = new QRinputItem($this->mode, $this->size - $words, array_slice($this->data, $words));
@@ -246,18 +246,18 @@  discard block
 block discarded – undo
246 246
                     
247 247
                     $ret = 0;
248 248
                     
249
-                    switch($this->mode) {
250
-                        case QR_MODE_NUM:        $ret = $this->encodeModeNum($version);    break;
251
-                        case QR_MODE_AN:        $ret = $this->encodeModeAn($version);    break;
252
-                        case QR_MODE_8:            $ret = $this->encodeMode8($version);    break;
253
-                        case QR_MODE_KANJI:        $ret = $this->encodeModeKanji($version);break;
254
-                        case QR_MODE_STRUCTURE:    $ret = $this->encodeModeStructure();    break;
249
+                    switch ($this->mode) {
250
+                        case QR_MODE_NUM:        $ret = $this->encodeModeNum($version); break;
251
+                        case QR_MODE_AN:        $ret = $this->encodeModeAn($version); break;
252
+                        case QR_MODE_8:            $ret = $this->encodeMode8($version); break;
253
+                        case QR_MODE_KANJI:        $ret = $this->encodeModeKanji($version); break;
254
+                        case QR_MODE_STRUCTURE:    $ret = $this->encodeModeStructure(); break;
255 255
                         
256 256
                         default:
257 257
                             break;
258 258
                     }
259 259
                     
260
-                    if($ret < 0)
260
+                    if ($ret < 0)
261 261
                         return -1;
262 262
                 }
263 263
 
@@ -299,7 +299,7 @@  discard block
 block discarded – undo
299 299
         //----------------------------------------------------------------------
300 300
         public function setVersion($version)
301 301
         {
302
-            if($version < 0 || $version > QRSPEC_VERSION_MAX) {
302
+            if ($version < 0 || $version > QRSPEC_VERSION_MAX) {
303 303
                 throw new Exception('Invalid version no');
304 304
                 return -1;
305 305
             }
@@ -318,7 +318,7 @@  discard block
 block discarded – undo
318 318
         //----------------------------------------------------------------------
319 319
         public function setErrorCorrectionLevel($level)
320 320
         {
321
-            if($level > QR_ECLEVEL_H) {
321
+            if ($level > QR_ECLEVEL_H) {
322 322
                 throw new Exception('Invalid ECLEVEL');
323 323
                 return -1;
324 324
             }
@@ -350,11 +350,11 @@  discard block
 block discarded – undo
350 350
         
351 351
         public function insertStructuredAppendHeader($size, $index, $parity)
352 352
         {
353
-            if( $size > MAX_STRUCTURED_SYMBOLS ) {
353
+            if ($size > MAX_STRUCTURED_SYMBOLS) {
354 354
                 throw new Exception('insertStructuredAppendHeader wrong size');
355 355
             }
356 356
             
357
-            if( $index <= 0 || $index > MAX_STRUCTURED_SYMBOLS ) {
357
+            if ($index <= 0 || $index > MAX_STRUCTURED_SYMBOLS) {
358 358
                 throw new Exception('insertStructuredAppendHeader wrong index');
359 359
             }
360 360
 
@@ -374,9 +374,9 @@  discard block
 block discarded – undo
374 374
         {
375 375
             $parity = 0;
376 376
             
377
-            foreach($this->items as $item) {
378
-                if($item->mode != QR_MODE_STRUCTURE) {
379
-                    for($i=$item->size-1; $i>=0; $i--) {
377
+            foreach ($this->items as $item) {
378
+                if ($item->mode != QR_MODE_STRUCTURE) {
379
+                    for ($i = $item->size - 1; $i >= 0; $i--) {
380 380
                         $parity ^= $item->data[$i];
381 381
                     }
382 382
                 }
@@ -388,8 +388,8 @@  discard block
 block discarded – undo
388 388
         //----------------------------------------------------------------------
389 389
         public static function checkModeNum($size, $data)
390 390
         {
391
-            for($i=0; $i<$size; $i++) {
392
-                if((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))){
391
+            for ($i = 0; $i < $size; $i++) {
392
+                if ((ord($data[$i]) < ord('0')) || (ord($data[$i]) > ord('9'))) {
393 393
                     return false;
394 394
                 }
395 395
             }
@@ -400,10 +400,10 @@  discard block
 block discarded – undo
400 400
         //----------------------------------------------------------------------
401 401
         public static function estimateBitsModeNum($size)
402 402
         {
403
-            $w = (int)$size / 3;
403
+            $w = (int) $size / 3;
404 404
             $bits = $w * 10;
405 405
             
406
-            switch($size - $w * 3) {
406
+            switch ($size - $w * 3) {
407 407
                 case 1:
408 408
                     $bits += 4;
409 409
                     break;
@@ -422,7 +422,7 @@  discard block
 block discarded – undo
422 422
             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
423 423
             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
424 424
             36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43,
425
-             0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 44, -1, -1, -1, -1, -1,
425
+             0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1,
426 426
             -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
427 427
             25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,
428 428
             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -432,13 +432,13 @@  discard block
 block discarded – undo
432 432
         //----------------------------------------------------------------------
433 433
         public static function lookAnTable($c)
434 434
         {
435
-            return (($c > 127)?-1:self::$anTable[$c]);
435
+            return (($c > 127) ?-1 : self::$anTable[$c]);
436 436
         }
437 437
         
438 438
         //----------------------------------------------------------------------
439 439
         public static function checkModeAn($size, $data)
440 440
         {
441
-            for($i=0; $i<$size; $i++) {
441
+            for ($i = 0; $i < $size; $i++) {
442 442
                 if (self::lookAnTable(ord($data[$i])) == -1) {
443 443
                     return false;
444 444
                 }
@@ -450,10 +450,10 @@  discard block
 block discarded – undo
450 450
         //----------------------------------------------------------------------
451 451
         public static function estimateBitsModeAn($size)
452 452
         {
453
-            $w = (int)($size / 2);
453
+            $w = (int) ($size / 2);
454 454
             $bits = $w * 11;
455 455
             
456
-            if($size & 1) {
456
+            if ($size & 1) {
457 457
                 $bits += 6;
458 458
             }
459 459
 
@@ -469,18 +469,18 @@  discard block
 block discarded – undo
469 469
         //----------------------------------------------------------------------
470 470
         public function estimateBitsModeKanji($size)
471 471
         {
472
-            return (int)(($size / 2) * 13);
472
+            return (int) (($size / 2) * 13);
473 473
         }
474 474
         
475 475
         //----------------------------------------------------------------------
476 476
         public static function checkModeKanji($size, $data)
477 477
         {
478
-            if($size & 1)
478
+            if ($size & 1)
479 479
                 return false;
480 480
 
481
-            for($i=0; $i<$size; $i+=2) {
482
-                $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
483
-                if( $val < 0x8140 
481
+            for ($i = 0; $i < $size; $i += 2) {
482
+                $val = (ord($data[$i]) << 8) | ord($data[$i + 1]);
483
+                if ($val < 0x8140 
484 484
                 || ($val > 0x9ffc && $val < 0xe040) 
485 485
                 || $val > 0xebbf) {
486 486
                     return false;
@@ -496,12 +496,12 @@  discard block
 block discarded – undo
496 496
 
497 497
         public static function check($mode, $size, $data)
498 498
         {
499
-            if($size <= 0) 
499
+            if ($size <= 0) 
500 500
                 return false;
501 501
 
502
-            switch($mode) {
503
-                case QR_MODE_NUM:       return self::checkModeNum($size, $data);   break;
504
-                case QR_MODE_AN:        return self::checkModeAn($size, $data);    break;
502
+            switch ($mode) {
503
+                case QR_MODE_NUM:       return self::checkModeNum($size, $data); break;
504
+                case QR_MODE_AN:        return self::checkModeAn($size, $data); break;
505 505
                 case QR_MODE_KANJI:     return self::checkModeKanji($size, $data); break;
506 506
                 case QR_MODE_8:         return true; break;
507 507
                 case QR_MODE_STRUCTURE: return true; break;
@@ -519,7 +519,7 @@  discard block
 block discarded – undo
519 519
         {
520 520
             $bits = 0;
521 521
 
522
-            foreach($this->items as $item) {
522
+            foreach ($this->items as $item) {
523 523
                 $bits += $item->estimateBitStreamSizeOfEntry($version);
524 524
             }
525 525
 
@@ -534,7 +534,7 @@  discard block
 block discarded – undo
534 534
             do {
535 535
                 $prev = $version;
536 536
                 $bits = $this->estimateBitStreamSize($prev);
537
-                $version = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
537
+                $version = QRspec::getMinimumVersion((int) (($bits + 7) / 8), $this->level);
538 538
                 if ($version < 0) {
539 539
                     return -1;
540 540
                 }
@@ -547,32 +547,32 @@  discard block
 block discarded – undo
547 547
         public static function lengthOfCode($mode, $version, $bits)
548 548
         {
549 549
             $payload = $bits - 4 - QRspec::lengthIndicator($mode, $version);
550
-            switch($mode) {
550
+            switch ($mode) {
551 551
                 case QR_MODE_NUM:
552
-                    $chunks = (int)($payload / 10);
552
+                    $chunks = (int) ($payload / 10);
553 553
                     $remain = $payload - $chunks * 10;
554 554
                     $size = $chunks * 3;
555
-                    if($remain >= 7) {
555
+                    if ($remain >= 7) {
556 556
                         $size += 2;
557
-                    } else if($remain >= 4) {
557
+                    } else if ($remain >= 4) {
558 558
                         $size += 1;
559 559
                     }
560 560
                     break;
561 561
                 case QR_MODE_AN:
562
-                    $chunks = (int)($payload / 11);
562
+                    $chunks = (int) ($payload / 11);
563 563
                     $remain = $payload - $chunks * 11;
564 564
                     $size = $chunks * 2;
565
-                    if($remain >= 6) 
565
+                    if ($remain >= 6) 
566 566
                         $size++;
567 567
                     break;
568 568
                 case QR_MODE_8:
569
-                    $size = (int)($payload / 8);
569
+                    $size = (int) ($payload / 8);
570 570
                     break;
571 571
                 case QR_MODE_KANJI:
572
-                    $size = (int)(($payload / 13) * 2);
572
+                    $size = (int) (($payload / 13) * 2);
573 573
                     break;
574 574
                 case QR_MODE_STRUCTURE:
575
-                    $size = (int)($payload / 8);
575
+                    $size = (int) ($payload / 8);
576 576
                     break;
577 577
                 default:
578 578
                     $size = 0;
@@ -580,8 +580,8 @@  discard block
 block discarded – undo
580 580
             }
581 581
             
582 582
             $maxsize = QRspec::maximumWords($mode, $version);
583
-            if($size < 0) $size = 0;
584
-            if($size > $maxsize) $size = $maxsize;
583
+            if ($size < 0) $size = 0;
584
+            if ($size > $maxsize) $size = $maxsize;
585 585
 
586 586
             return $size;
587 587
         }
@@ -591,10 +591,10 @@  discard block
 block discarded – undo
591 591
         {
592 592
             $total = 0;
593 593
 
594
-            foreach($this->items as $item) {
594
+            foreach ($this->items as $item) {
595 595
                 $bits = $item->encodeBitStream($this->version);
596 596
                 
597
-                if($bits < 0) 
597
+                if ($bits < 0) 
598 598
                     return -1;
599 599
                     
600 600
                 $total += $bits;
@@ -607,21 +607,21 @@  discard block
 block discarded – undo
607 607
         public function convertData()
608 608
         {
609 609
             $ver = $this->estimateVersion();
610
-            if($ver > $this->getVersion()) {
610
+            if ($ver > $this->getVersion()) {
611 611
                 $this->setVersion($ver);
612 612
             }
613 613
 
614
-            for(;;) {
614
+            for (;;) {
615 615
                 $bits = $this->createBitStream();
616 616
                 
617
-                if($bits < 0) 
617
+                if ($bits < 0) 
618 618
                     return -1;
619 619
                     
620
-                $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
621
-                if($ver < 0) {
620
+                $ver = QRspec::getMinimumVersion((int) (($bits + 7) / 8), $this->level);
621
+                if ($ver < 0) {
622 622
                     throw new Exception('WRONG VERSION');
623 623
                     return -1;
624
-                } else if($ver > $this->getVersion()) {
624
+                } else if ($ver > $this->getVersion()) {
625 625
                     $this->setVersion($ver);
626 626
                 } else {
627 627
                     break;
@@ -647,26 +647,26 @@  discard block
 block discarded – undo
647 647
             }
648 648
 
649 649
             $bits += 4;
650
-            $words = (int)(($bits + 7) / 8);
650
+            $words = (int) (($bits + 7) / 8);
651 651
 
652 652
             $padding = new QRbitstream();
653 653
             $ret = $padding->appendNum($words * 8 - $bits + 4, 0);
654 654
             
655
-            if($ret < 0) 
655
+            if ($ret < 0) 
656 656
                 return $ret;
657 657
 
658 658
             $padlen = $maxwords - $words;
659 659
             
660
-            if($padlen > 0) {
660
+            if ($padlen > 0) {
661 661
                 
662 662
                 $padbuf = array();
663
-                for($i=0; $i<$padlen; $i++) {
664
-                    $padbuf[$i] = ($i&1)?0x11:0xec;
663
+                for ($i = 0; $i < $padlen; $i++) {
664
+                    $padbuf[$i] = ($i & 1) ? 0x11 : 0xec;
665 665
                 }
666 666
                 
667 667
                 $ret = $padding->appendBytes($padlen, $padbuf);
668 668
                 
669
-                if($ret < 0)
669
+                if ($ret < 0)
670 670
                     return $ret;
671 671
                 
672 672
             }
@@ -679,15 +679,15 @@  discard block
 block discarded – undo
679 679
         //----------------------------------------------------------------------
680 680
         public function mergeBitStream()
681 681
         {
682
-            if($this->convertData() < 0) {
682
+            if ($this->convertData() < 0) {
683 683
                 return null;
684 684
             }
685 685
 
686 686
             $bstream = new QRbitstream();
687 687
             
688
-            foreach($this->items as $item) {
688
+            foreach ($this->items as $item) {
689 689
                 $ret = $bstream->append($item->bstream);
690
-                if($ret < 0) {
690
+                if ($ret < 0) {
691 691
                     return null;
692 692
                 }
693 693
             }
@@ -701,12 +701,12 @@  discard block
 block discarded – undo
701 701
 
702 702
             $bstream = $this->mergeBitStream();
703 703
             
704
-            if($bstream == null) {
704
+            if ($bstream == null) {
705 705
                 return null;
706 706
             }
707 707
             
708 708
             $ret = $this->appendPaddingBit($bstream);
709
-            if($ret < 0) {
709
+            if ($ret < 0) {
710 710
                 return null;
711 711
             }
712 712
 
@@ -717,7 +717,7 @@  discard block
 block discarded – undo
717 717
         public function getByteStream()
718 718
         {
719 719
             $bstream = $this->getBitStream();
720
-            if($bstream == null) {
720
+            if ($bstream == null) {
721 721
                 return null;
722 722
             }
723 723
             
Please login to merge, or discard this patch.
Upper-Lower-Casing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -283,7 +283,7 @@
 block discarded – undo
283 283
         {
284 284
             if ($version < 0 || $version > QRSPEC_VERSION_MAX || $level > QR_ECLEVEL_H) {
285 285
                 throw new Exception('Invalid version no');
286
-                return NULL;
286
+                return null;
287 287
             }
288 288
             
289 289
             $this->version = $version;
Please login to merge, or discard this patch.
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -422,7 +422,7 @@
 block discarded – undo
422 422
             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
423 423
             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
424 424
             36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43,
425
-             0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 44, -1, -1, -1, -1, -1,
425
+                0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 44, -1, -1, -1, -1, -1,
426 426
             -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
427 427
             25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,
428 428
             -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
Please login to merge, or discard this patch.
Braces   +33 added lines, -20 removed lines patch added patch discarded remove patch
@@ -197,8 +197,9 @@  discard block
 block discarded – undo
197 197
         {
198 198
             $bits = 0;
199 199
 
200
-            if($version == 0) 
201
-                $version = 1;
200
+            if($version == 0) {
201
+                            $version = 1;
202
+            }
202 203
 
203 204
             switch($this->mode) {
204 205
                 case QR_MODE_NUM:        $bits = QRinput::estimateBitsModeNum($this->size);    break;
@@ -257,8 +258,9 @@  discard block
 block discarded – undo
257 258
                             break;
258 259
                     }
259 260
                     
260
-                    if($ret < 0)
261
-                        return -1;
261
+                    if($ret < 0) {
262
+                                            return -1;
263
+                    }
262 264
                 }
263 265
 
264 266
                 return $this->bstream->size();
@@ -475,8 +477,9 @@  discard block
 block discarded – undo
475 477
         //----------------------------------------------------------------------
476 478
         public static function checkModeKanji($size, $data)
477 479
         {
478
-            if($size & 1)
479
-                return false;
480
+            if($size & 1) {
481
+                            return false;
482
+            }
480 483
 
481 484
             for($i=0; $i<$size; $i+=2) {
482 485
                 $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
@@ -496,8 +499,9 @@  discard block
 block discarded – undo
496 499
 
497 500
         public static function check($mode, $size, $data)
498 501
         {
499
-            if($size <= 0) 
500
-                return false;
502
+            if($size <= 0) {
503
+                            return false;
504
+            }
501 505
 
502 506
             switch($mode) {
503 507
                 case QR_MODE_NUM:       return self::checkModeNum($size, $data);   break;
@@ -562,8 +566,9 @@  discard block
 block discarded – undo
562 566
                     $chunks = (int)($payload / 11);
563 567
                     $remain = $payload - $chunks * 11;
564 568
                     $size = $chunks * 2;
565
-                    if($remain >= 6) 
566
-                        $size++;
569
+                    if($remain >= 6) {
570
+                                            $size++;
571
+                    }
567 572
                     break;
568 573
                 case QR_MODE_8:
569 574
                     $size = (int)($payload / 8);
@@ -580,8 +585,12 @@  discard block
 block discarded – undo
580 585
             }
581 586
             
582 587
             $maxsize = QRspec::maximumWords($mode, $version);
583
-            if($size < 0) $size = 0;
584
-            if($size > $maxsize) $size = $maxsize;
588
+            if($size < 0) {
589
+                $size = 0;
590
+            }
591
+            if($size > $maxsize) {
592
+                $size = $maxsize;
593
+            }
585 594
 
586 595
             return $size;
587 596
         }
@@ -594,8 +603,9 @@  discard block
 block discarded – undo
594 603
             foreach($this->items as $item) {
595 604
                 $bits = $item->encodeBitStream($this->version);
596 605
                 
597
-                if($bits < 0) 
598
-                    return -1;
606
+                if($bits < 0) {
607
+                                    return -1;
608
+                }
599 609
                     
600 610
                 $total += $bits;
601 611
             }
@@ -614,8 +624,9 @@  discard block
 block discarded – undo
614 624
             for(;;) {
615 625
                 $bits = $this->createBitStream();
616 626
                 
617
-                if($bits < 0) 
618
-                    return -1;
627
+                if($bits < 0) {
628
+                                    return -1;
629
+                }
619 630
                     
620 631
                 $ver = QRspec::getMinimumVersion((int)(($bits + 7) / 8), $this->level);
621 632
                 if($ver < 0) {
@@ -652,8 +663,9 @@  discard block
 block discarded – undo
652 663
             $padding = new QRbitstream();
653 664
             $ret = $padding->appendNum($words * 8 - $bits + 4, 0);
654 665
             
655
-            if($ret < 0) 
656
-                return $ret;
666
+            if($ret < 0) {
667
+                            return $ret;
668
+            }
657 669
 
658 670
             $padlen = $maxwords - $words;
659 671
             
@@ -666,8 +678,9 @@  discard block
 block discarded – undo
666 678
                 
667 679
                 $ret = $padding->appendBytes($padlen, $padbuf);
668 680
                 
669
-                if($ret < 0)
670
-                    return $ret;
681
+                if($ret < 0) {
682
+                                    return $ret;
683
+                }
671 684
                 
672 685
             }
673 686
 
Please login to merge, or discard this patch.
lib/phpqrcode/bindings/tcpdf/qrcode.php 4 patches
Switch Indentation   +128 added lines, -128 removed lines patch added patch discarded remove patch
@@ -1461,26 +1461,26 @@  discard block
 block discarded – undo
1461 1461
 				}
1462 1462
 				$mode = $this->identifyMode(0);
1463 1463
 				switch ($mode) {
1464
-					case QR_MODE_NM: {
1465
-						$length = $this->eatNum();
1466
-						break;
1467
-					}
1468
-					case QR_MODE_AN: {
1469
-						$length = $this->eatAn();
1470
-						break;
1471
-					}
1472
-					case QR_MODE_KJ: {
1473
-						if ($this->hint == QR_MODE_KJ) {
1474
-							$length = $this->eatKanji();
1475
-						} else {
1476
-							$length = $this->eat8();
1477
-						}
1478
-						break;
1479
-					}
1480
-					default: {
1464
+				case QR_MODE_NM: {
1465
+					$length = $this->eatNum();
1466
+					break;
1467
+				}
1468
+				case QR_MODE_AN: {
1469
+					$length = $this->eatAn();
1470
+					break;
1471
+				}
1472
+				case QR_MODE_KJ: {
1473
+					if ($this->hint == QR_MODE_KJ) {
1474
+						$length = $this->eatKanji();
1475
+					} else {
1481 1476
 						$length = $this->eat8();
1482
-						break;
1483 1477
 					}
1478
+					break;
1479
+				}
1480
+				default: {
1481
+					$length = $this->eat8();
1482
+					break;
1483
+				}
1484 1484
 				}
1485 1485
 				if ($length == 0) {
1486 1486
 					return 0;
@@ -1665,29 +1665,29 @@  discard block
 block discarded – undo
1665 1665
 				$inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']);
1666 1666
 			} else {
1667 1667
 				switch($inputitem['mode']) {
1668
-					case QR_MODE_NM: {
1669
-						$inputitem = $this->encodeModeNum($inputitem, $version);
1670
-						break;
1671
-					}
1672
-					case QR_MODE_AN: {
1673
-						$inputitem = $this->encodeModeAn($inputitem, $version);
1674
-						break;
1675
-					}
1676
-					case QR_MODE_8B: {
1677
-						$inputitem = $this->encodeMode8($inputitem, $version);
1678
-						break;
1679
-					}
1680
-					case QR_MODE_KJ: {
1681
-						$inputitem = $this->encodeModeKanji($inputitem, $version);
1682
-						break;
1683
-					}
1684
-					case QR_MODE_ST: {
1685
-						$inputitem = $this->encodeModeStructure($inputitem);
1686
-						break;
1687
-					}
1688
-					default: {
1689
-						break;
1690
-					}
1668
+				case QR_MODE_NM: {
1669
+					$inputitem = $this->encodeModeNum($inputitem, $version);
1670
+					break;
1671
+				}
1672
+				case QR_MODE_AN: {
1673
+					$inputitem = $this->encodeModeAn($inputitem, $version);
1674
+					break;
1675
+				}
1676
+				case QR_MODE_8B: {
1677
+					$inputitem = $this->encodeMode8($inputitem, $version);
1678
+					break;
1679
+				}
1680
+				case QR_MODE_KJ: {
1681
+					$inputitem = $this->encodeModeKanji($inputitem, $version);
1682
+					break;
1683
+				}
1684
+				case QR_MODE_ST: {
1685
+					$inputitem = $this->encodeModeStructure($inputitem);
1686
+					break;
1687
+				}
1688
+				default: {
1689
+					break;
1690
+				}
1691 1691
 				}
1692 1692
 			}
1693 1693
 			return $inputitem;
@@ -1774,17 +1774,17 @@  discard block
 block discarded – undo
1774 1774
 			$w = (int)$size / 3;
1775 1775
 			$bits = $w * 10;
1776 1776
 			switch($size - $w * 3) {
1777
-				case 1: {
1778
-					$bits += 4;
1779
-					break;
1780
-				}
1781
-				case 2: {
1782
-					$bits += 7;
1783
-					break;
1784
-				}
1785
-				default: {
1786
-					break;
1787
-				}
1777
+			case 1: {
1778
+				$bits += 4;
1779
+				break;
1780
+			}
1781
+			case 2: {
1782
+				$bits += 7;
1783
+				break;
1784
+			}
1785
+			default: {
1786
+				break;
1787
+			}
1788 1788
 			}
1789 1789
 			return $bits;
1790 1790
 		}
@@ -1876,24 +1876,24 @@  discard block
 block discarded – undo
1876 1876
 				return false;
1877 1877
 			}
1878 1878
 			switch($mode) {
1879
-				case QR_MODE_NM: {
1880
-					return $this->checkModeNum($size, $data);
1881
-				}
1882
-				case QR_MODE_AN: {
1883
-					return $this->checkModeAn($size, $data);
1884
-				}
1885
-				case QR_MODE_KJ: {
1886
-					return $this->checkModeKanji($size, $data);
1887
-				}
1888
-				case QR_MODE_8B: {
1889
-					return true;
1890
-				}
1891
-				case QR_MODE_ST: {
1892
-					return true;
1893
-				}
1894
-				default: {
1895
-					break;
1896
-				}
1879
+			case QR_MODE_NM: {
1880
+				return $this->checkModeNum($size, $data);
1881
+			}
1882
+			case QR_MODE_AN: {
1883
+				return $this->checkModeAn($size, $data);
1884
+			}
1885
+			case QR_MODE_KJ: {
1886
+				return $this->checkModeKanji($size, $data);
1887
+			}
1888
+			case QR_MODE_8B: {
1889
+				return true;
1890
+			}
1891
+			case QR_MODE_ST: {
1892
+				return true;
1893
+			}
1894
+			default: {
1895
+				break;
1896
+			}
1897 1897
 			}
1898 1898
 			return false;
1899 1899
 		}
@@ -1911,28 +1911,28 @@  discard block
 block discarded – undo
1911 1911
 			}
1912 1912
 			foreach ($items as $item) {
1913 1913
 				switch($item['mode']) {
1914
-					case QR_MODE_NM: {
1915
-						$bits = $this->estimateBitsModeNum($item['size']);
1916
-						break;
1917
-					}
1918
-					case QR_MODE_AN: {
1919
-						$bits = $this->estimateBitsModeAn($item['size']);
1920
-						break;
1921
-					}
1922
-					case QR_MODE_8B: {
1923
-						$bits = $this->estimateBitsMode8($item['size']);
1924
-						break;
1925
-					}
1926
-					case QR_MODE_KJ: {
1927
-						$bits = $this->estimateBitsModeKanji($item['size']);
1928
-						break;
1929
-					}
1930
-					case QR_MODE_ST: {
1931
-						return STRUCTURE_HEADER_BITS;
1932
-					}
1933
-					default: {
1934
-						return 0;
1935
-					}
1914
+				case QR_MODE_NM: {
1915
+					$bits = $this->estimateBitsModeNum($item['size']);
1916
+					break;
1917
+				}
1918
+				case QR_MODE_AN: {
1919
+					$bits = $this->estimateBitsModeAn($item['size']);
1920
+					break;
1921
+				}
1922
+				case QR_MODE_8B: {
1923
+					$bits = $this->estimateBitsMode8($item['size']);
1924
+					break;
1925
+				}
1926
+				case QR_MODE_KJ: {
1927
+					$bits = $this->estimateBitsModeKanji($item['size']);
1928
+					break;
1929
+				}
1930
+				case QR_MODE_ST: {
1931
+					return STRUCTURE_HEADER_BITS;
1932
+				}
1933
+				default: {
1934
+					return 0;
1935
+				}
1936 1936
 				}
1937 1937
 				$l = $this->lengthIndicator($item['mode'], $version);
1938 1938
 				$m = 1 << $l;
@@ -1971,42 +1971,42 @@  discard block
 block discarded – undo
1971 1971
 		 protected function lengthOfCode($mode, $version, $bits) {
1972 1972
 			$payload = $bits - 4 - $this->lengthIndicator($mode, $version);
1973 1973
 			switch($mode) {
1974
-				case QR_MODE_NM: {
1975
-					$chunks = (int)($payload / 10);
1976
-					$remain = $payload - $chunks * 10;
1977
-					$size = $chunks * 3;
1978
-					if ($remain >= 7) {
1979
-						$size += 2;
1980
-					} elseif ($remain >= 4) {
1981
-						$size += 1;
1982
-					}
1983
-					break;
1984
-				}
1985
-				case QR_MODE_AN: {
1986
-					$chunks = (int)($payload / 11);
1987
-					$remain = $payload - $chunks * 11;
1988
-					$size = $chunks * 2;
1989
-					if ($remain >= 6) {
1990
-						++$size;
1991
-					}
1992
-					break;
1993
-				}
1994
-				case QR_MODE_8B: {
1995
-					$size = (int)($payload / 8);
1996
-					break;
1997
-				}
1998
-				case QR_MODE_KJ: {
1999
-					$size = (int)(($payload / 13) * 2);
2000
-					break;
2001
-				}
2002
-				case QR_MODE_ST: {
2003
-					$size = (int)($payload / 8);
2004
-					break;
2005
-				}
2006
-				default: {
2007
-					$size = 0;
2008
-					break;
2009
-				}
1974
+			case QR_MODE_NM: {
1975
+				$chunks = (int)($payload / 10);
1976
+				$remain = $payload - $chunks * 10;
1977
+				$size = $chunks * 3;
1978
+				if ($remain >= 7) {
1979
+					$size += 2;
1980
+				} elseif ($remain >= 4) {
1981
+					$size += 1;
1982
+				}
1983
+				break;
1984
+			}
1985
+			case QR_MODE_AN: {
1986
+				$chunks = (int)($payload / 11);
1987
+				$remain = $payload - $chunks * 11;
1988
+				$size = $chunks * 2;
1989
+				if ($remain >= 6) {
1990
+					++$size;
1991
+				}
1992
+				break;
1993
+			}
1994
+			case QR_MODE_8B: {
1995
+				$size = (int)($payload / 8);
1996
+				break;
1997
+			}
1998
+			case QR_MODE_KJ: {
1999
+				$size = (int)(($payload / 13) * 2);
2000
+				break;
2001
+			}
2002
+			case QR_MODE_ST: {
2003
+				$size = (int)($payload / 8);
2004
+				break;
2005
+			}
2006
+			default: {
2007
+				$size = 0;
2008
+				break;
2009
+			}
2010 2010
 			}
2011 2011
 			$maxsize = $this->maximumWords($mode, $version);
2012 2012
 			if ($size < 0) {
Please login to merge, or discard this patch.
Spacing   +262 added lines, -262 removed lines patch added patch discarded remove patch
@@ -180,12 +180,12 @@  discard block
 block discarded – undo
180 180
 	/**
181 181
 	 * Matrix index to get width from $capacity array.
182 182
 	 */
183
-    define('QRCAP_WIDTH',    0);
183
+    define('QRCAP_WIDTH', 0);
184 184
 
185 185
     /**
186 186
 	 * Matrix index to get number of words from $capacity array.
187 187
 	 */
188
-    define('QRCAP_WORDS',    1);
188
+    define('QRCAP_WORDS', 1);
189 189
 
190 190
     /**
191 191
 	 * Matrix index to get remainder from $capacity array.
@@ -195,7 +195,7 @@  discard block
 block discarded – undo
195 195
     /**
196 196
 	 * Matrix index to get error correction level from $capacity array.
197 197
 	 */
198
-    define('QRCAP_EC',       3);
198
+    define('QRCAP_EC', 3);
199 199
 
200 200
 	// -----------------------------------------------------
201 201
 
@@ -204,7 +204,7 @@  discard block
 block discarded – undo
204 204
 	/**
205 205
 	 * Number of header bits for structured mode
206 206
 	 */
207
-    define('STRUCTURE_HEADER_BITS',  20);
207
+    define('STRUCTURE_HEADER_BITS', 20);
208 208
 
209 209
     /**
210 210
 	 * Max number of symbols for structured mode
@@ -218,12 +218,12 @@  discard block
 block discarded – undo
218 218
     /**
219 219
 	 * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column)
220 220
 	 */
221
-    define('N1',  3);
221
+    define('N1', 3);
222 222
 
223 223
     /**
224 224
 	 * Down point base value for case 2 mask pattern (module block of same color)
225 225
 	 */
226
-	define('N2',  3);
226
+	define('N2', 3);
227 227
 
228 228
     /**
229 229
 	 * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column)
@@ -270,7 +270,7 @@  discard block
 block discarded – undo
270 270
     	 * @param int $split_length Maximum length of the chunk.
271 271
     	 * @return  If the optional split_length  parameter is specified, the returned array will be broken down into chunks with each being split_length  in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element.
272 272
     	 */
273
-		function str_split($string, $split_length=1) {
273
+		function str_split($string, $split_length = 1) {
274 274
 			if ((strlen($string) > $split_length) OR (!$split_length)) {
275 275
 				do {
276 276
 					$c = strlen($string);
@@ -481,7 +481,7 @@  discard block
 block discarded – undo
481 481
 			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
482 482
 			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
483 483
 			36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, //
484
-			 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 44, -1, -1, -1, -1, -1, //
484
+			 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, //
485 485
 			-1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, //
486 486
 			25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, //
487 487
 			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
@@ -494,47 +494,47 @@  discard block
 block discarded – undo
494 494
 		 * @access protected
495 495
 		 */
496 496
 		protected $capacity = array(
497
-			array(  0,    0, 0, array(   0,    0,    0,    0)), //
498
-			array( 21,   26, 0, array(   7,   10,   13,   17)), //  1
499
-			array( 25,   44, 7, array(  10,   16,   22,   28)), //
500
-			array( 29,   70, 7, array(  15,   26,   36,   44)), //
501
-			array( 33,  100, 7, array(  20,   36,   52,   64)), //
502
-			array( 37,  134, 7, array(  26,   48,   72,   88)), //  5
503
-			array( 41,  172, 7, array(  36,   64,   96,  112)), //
504
-			array( 45,  196, 0, array(  40,   72,  108,  130)), //
505
-			array( 49,  242, 0, array(  48,   88,  132,  156)), //
506
-			array( 53,  292, 0, array(  60,  110,  160,  192)), //
507
-			array( 57,  346, 0, array(  72,  130,  192,  224)), // 10
508
-			array( 61,  404, 0, array(  80,  150,  224,  264)), //
509
-			array( 65,  466, 0, array(  96,  176,  260,  308)), //
510
-			array( 69,  532, 0, array( 104,  198,  288,  352)), //
511
-			array( 73,  581, 3, array( 120,  216,  320,  384)), //
512
-			array( 77,  655, 3, array( 132,  240,  360,  432)), // 15
513
-			array( 81,  733, 3, array( 144,  280,  408,  480)), //
514
-			array( 85,  815, 3, array( 168,  308,  448,  532)), //
515
-			array( 89,  901, 3, array( 180,  338,  504,  588)), //
516
-			array( 93,  991, 3, array( 196,  364,  546,  650)), //
517
-			array( 97, 1085, 3, array( 224,  416,  600,  700)), // 20
518
-			array(101, 1156, 4, array( 224,  442,  644,  750)), //
519
-			array(105, 1258, 4, array( 252,  476,  690,  816)), //
520
-			array(109, 1364, 4, array( 270,  504,  750,  900)), //
521
-			array(113, 1474, 4, array( 300,  560,  810,  960)), //
522
-			array(117, 1588, 4, array( 312,  588,  870, 1050)), // 25
523
-			array(121, 1706, 4, array( 336,  644,  952, 1110)), //
524
-			array(125, 1828, 4, array( 360,  700, 1020, 1200)), //
525
-			array(129, 1921, 3, array( 390,  728, 1050, 1260)), //
526
-			array(133, 2051, 3, array( 420,  784, 1140, 1350)), //
527
-			array(137, 2185, 3, array( 450,  812, 1200, 1440)), // 30
528
-			array(141, 2323, 3, array( 480,  868, 1290, 1530)), //
529
-			array(145, 2465, 3, array( 510,  924, 1350, 1620)), //
530
-			array(149, 2611, 3, array( 540,  980, 1440, 1710)), //
531
-			array(153, 2761, 3, array( 570, 1036, 1530, 1800)), //
532
-			array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35
533
-			array(161, 3034, 0, array( 600, 1120, 1680, 1980)), //
534
-			array(165, 3196, 0, array( 630, 1204, 1770, 2100)), //
535
-			array(169, 3362, 0, array( 660, 1260, 1860, 2220)), //
536
-			array(173, 3532, 0, array( 720, 1316, 1950, 2310)), //
537
-			array(177, 3706, 0, array( 750, 1372, 2040, 2430))  // 40
497
+			array(0, 0, 0, array(0, 0, 0, 0)), //
498
+			array(21, 26, 0, array(7, 10, 13, 17)), //  1
499
+			array(25, 44, 7, array(10, 16, 22, 28)), //
500
+			array(29, 70, 7, array(15, 26, 36, 44)), //
501
+			array(33, 100, 7, array(20, 36, 52, 64)), //
502
+			array(37, 134, 7, array(26, 48, 72, 88)), //  5
503
+			array(41, 172, 7, array(36, 64, 96, 112)), //
504
+			array(45, 196, 0, array(40, 72, 108, 130)), //
505
+			array(49, 242, 0, array(48, 88, 132, 156)), //
506
+			array(53, 292, 0, array(60, 110, 160, 192)), //
507
+			array(57, 346, 0, array(72, 130, 192, 224)), // 10
508
+			array(61, 404, 0, array(80, 150, 224, 264)), //
509
+			array(65, 466, 0, array(96, 176, 260, 308)), //
510
+			array(69, 532, 0, array(104, 198, 288, 352)), //
511
+			array(73, 581, 3, array(120, 216, 320, 384)), //
512
+			array(77, 655, 3, array(132, 240, 360, 432)), // 15
513
+			array(81, 733, 3, array(144, 280, 408, 480)), //
514
+			array(85, 815, 3, array(168, 308, 448, 532)), //
515
+			array(89, 901, 3, array(180, 338, 504, 588)), //
516
+			array(93, 991, 3, array(196, 364, 546, 650)), //
517
+			array(97, 1085, 3, array(224, 416, 600, 700)), // 20
518
+			array(101, 1156, 4, array(224, 442, 644, 750)), //
519
+			array(105, 1258, 4, array(252, 476, 690, 816)), //
520
+			array(109, 1364, 4, array(270, 504, 750, 900)), //
521
+			array(113, 1474, 4, array(300, 560, 810, 960)), //
522
+			array(117, 1588, 4, array(312, 588, 870, 1050)), // 25
523
+			array(121, 1706, 4, array(336, 644, 952, 1110)), //
524
+			array(125, 1828, 4, array(360, 700, 1020, 1200)), //
525
+			array(129, 1921, 3, array(390, 728, 1050, 1260)), //
526
+			array(133, 2051, 3, array(420, 784, 1140, 1350)), //
527
+			array(137, 2185, 3, array(450, 812, 1200, 1440)), // 30
528
+			array(141, 2323, 3, array(480, 868, 1290, 1530)), //
529
+			array(145, 2465, 3, array(510, 924, 1350, 1620)), //
530
+			array(149, 2611, 3, array(540, 980, 1440, 1710)), //
531
+			array(153, 2761, 3, array(570, 1036, 1530, 1800)), //
532
+			array(157, 2876, 0, array(570, 1064, 1590, 1890)), // 35
533
+			array(161, 3034, 0, array(600, 1120, 1680, 1980)), //
534
+			array(165, 3196, 0, array(630, 1204, 1770, 2100)), //
535
+			array(169, 3362, 0, array(660, 1260, 1860, 2220)), //
536
+			array(173, 3532, 0, array(720, 1316, 1950, 2310)), //
537
+			array(177, 3706, 0, array(750, 1372, 2040, 2430))  // 40
538 538
 		);
539 539
 
540 540
 		/**
@@ -543,9 +543,9 @@  discard block
 block discarded – undo
543 543
 		 */
544 544
 		protected $lengthTableBits = array(
545 545
 			array(10, 12, 14),
546
-			array( 9, 11, 13),
547
-			array( 8, 16, 16),
548
-			array( 8, 10, 12)
546
+			array(9, 11, 13),
547
+			array(8, 16, 16),
548
+			array(8, 10, 12)
549 549
 		);
550 550
 
551 551
 		/**
@@ -554,47 +554,47 @@  discard block
 block discarded – undo
554 554
 		 * @access protected
555 555
 		 */
556 556
 		protected $eccTable = array(
557
-			array(array( 0,  0), array( 0,  0), array( 0,  0), array( 0,  0)), //
558
-			array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //  1
559
-			array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //
560
-			array(array( 1,  0), array( 1,  0), array( 2,  0), array( 2,  0)), //
561
-			array(array( 1,  0), array( 2,  0), array( 2,  0), array( 4,  0)), //
562
-			array(array( 1,  0), array( 2,  0), array( 2,  2), array( 2,  2)), //  5
563
-			array(array( 2,  0), array( 4,  0), array( 4,  0), array( 4,  0)), //
564
-			array(array( 2,  0), array( 4,  0), array( 2,  4), array( 4,  1)), //
565
-			array(array( 2,  0), array( 2,  2), array( 4,  2), array( 4,  2)), //
566
-			array(array( 2,  0), array( 3,  2), array( 4,  4), array( 4,  4)), //
567
-			array(array( 2,  2), array( 4,  1), array( 6,  2), array( 6,  2)), // 10
568
-			array(array( 4,  0), array( 1,  4), array( 4,  4), array( 3,  8)), //
569
-			array(array( 2,  2), array( 6,  2), array( 4,  6), array( 7,  4)), //
570
-			array(array( 4,  0), array( 8,  1), array( 8,  4), array(12,  4)), //
571
-			array(array( 3,  1), array( 4,  5), array(11,  5), array(11,  5)), //
572
-			array(array( 5,  1), array( 5,  5), array( 5,  7), array(11,  7)), // 15
573
-			array(array( 5,  1), array( 7,  3), array(15,  2), array( 3, 13)), //
574
-			array(array( 1,  5), array(10,  1), array( 1, 15), array( 2, 17)), //
575
-			array(array( 5,  1), array( 9,  4), array(17,  1), array( 2, 19)), //
576
-			array(array( 3,  4), array( 3, 11), array(17,  4), array( 9, 16)), //
577
-			array(array( 3,  5), array( 3, 13), array(15,  5), array(15, 10)), // 20
578
-			array(array( 4,  4), array(17,  0), array(17,  6), array(19,  6)), //
579
-			array(array( 2,  7), array(17,  0), array( 7, 16), array(34,  0)), //
580
-			array(array( 4,  5), array( 4, 14), array(11, 14), array(16, 14)), //
581
-			array(array( 6,  4), array( 6, 14), array(11, 16), array(30,  2)), //
582
-			array(array( 8,  4), array( 8, 13), array( 7, 22), array(22, 13)), // 25
583
-			array(array(10,  2), array(19,  4), array(28,  6), array(33,  4)), //
584
-			array(array( 8,  4), array(22,  3), array( 8, 26), array(12, 28)), //
585
-			array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), //
586
-			array(array( 7,  7), array(21,  7), array( 1, 37), array(19, 26)), //
587
-			array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30
588
-			array(array(13,  3), array( 2, 29), array(42,  1), array(23, 28)), //
589
-			array(array(17,  0), array(10, 23), array(10, 35), array(19, 35)), //
590
-			array(array(17,  1), array(14, 21), array(29, 19), array(11, 46)), //
591
-			array(array(13,  6), array(14, 23), array(44,  7), array(59,  1)), //
592
-			array(array(12,  7), array(12, 26), array(39, 14), array(22, 41)), // 35
593
-			array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), //
594
-			array(array(17,  4), array(29, 14), array(49, 10), array(24, 46)), //
595
-			array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), //
596
-			array(array(20,  4), array(40,  7), array(43, 22), array(10, 67)), //
597
-			array(array(19,  6), array(18, 31), array(34, 34), array(20, 61))  // 40
557
+			array(array(0, 0), array(0, 0), array(0, 0), array(0, 0)), //
558
+			array(array(1, 0), array(1, 0), array(1, 0), array(1, 0)), //  1
559
+			array(array(1, 0), array(1, 0), array(1, 0), array(1, 0)), //
560
+			array(array(1, 0), array(1, 0), array(2, 0), array(2, 0)), //
561
+			array(array(1, 0), array(2, 0), array(2, 0), array(4, 0)), //
562
+			array(array(1, 0), array(2, 0), array(2, 2), array(2, 2)), //  5
563
+			array(array(2, 0), array(4, 0), array(4, 0), array(4, 0)), //
564
+			array(array(2, 0), array(4, 0), array(2, 4), array(4, 1)), //
565
+			array(array(2, 0), array(2, 2), array(4, 2), array(4, 2)), //
566
+			array(array(2, 0), array(3, 2), array(4, 4), array(4, 4)), //
567
+			array(array(2, 2), array(4, 1), array(6, 2), array(6, 2)), // 10
568
+			array(array(4, 0), array(1, 4), array(4, 4), array(3, 8)), //
569
+			array(array(2, 2), array(6, 2), array(4, 6), array(7, 4)), //
570
+			array(array(4, 0), array(8, 1), array(8, 4), array(12, 4)), //
571
+			array(array(3, 1), array(4, 5), array(11, 5), array(11, 5)), //
572
+			array(array(5, 1), array(5, 5), array(5, 7), array(11, 7)), // 15
573
+			array(array(5, 1), array(7, 3), array(15, 2), array(3, 13)), //
574
+			array(array(1, 5), array(10, 1), array(1, 15), array(2, 17)), //
575
+			array(array(5, 1), array(9, 4), array(17, 1), array(2, 19)), //
576
+			array(array(3, 4), array(3, 11), array(17, 4), array(9, 16)), //
577
+			array(array(3, 5), array(3, 13), array(15, 5), array(15, 10)), // 20
578
+			array(array(4, 4), array(17, 0), array(17, 6), array(19, 6)), //
579
+			array(array(2, 7), array(17, 0), array(7, 16), array(34, 0)), //
580
+			array(array(4, 5), array(4, 14), array(11, 14), array(16, 14)), //
581
+			array(array(6, 4), array(6, 14), array(11, 16), array(30, 2)), //
582
+			array(array(8, 4), array(8, 13), array(7, 22), array(22, 13)), // 25
583
+			array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), //
584
+			array(array(8, 4), array(22, 3), array(8, 26), array(12, 28)), //
585
+			array(array(3, 10), array(3, 23), array(4, 31), array(11, 31)), //
586
+			array(array(7, 7), array(21, 7), array(1, 37), array(19, 26)), //
587
+			array(array(5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30
588
+			array(array(13, 3), array(2, 29), array(42, 1), array(23, 28)), //
589
+			array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), //
590
+			array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), //
591
+			array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), //
592
+			array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), // 35
593
+			array(array(6, 14), array(6, 34), array(46, 10), array(2, 64)), //
594
+			array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), //
595
+			array(array(4, 18), array(13, 32), array(48, 14), array(42, 32)), //
596
+			array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), //
597
+			array(array(19, 6), array(18, 31), array(34, 34), array(20, 61))  // 40
598 598
 		);
599 599
 
600 600
 		/**
@@ -604,9 +604,9 @@  discard block
 block discarded – undo
604 604
 		 * @access protected
605 605
 		 */
606 606
 		protected $alignmentPattern = array(
607
-			array( 0,  0),
608
-			array( 0,  0), array(18,  0), array(22,  0), array(26,  0), array(30,  0), //  1- 5
609
-			array(34,  0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), //  6-10
607
+			array(0, 0),
608
+			array(0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), //  1- 5
609
+			array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), //  6-10
610 610
 			array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15
611 611
 			array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20
612 612
 			array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25
@@ -679,7 +679,7 @@  discard block
 block discarded – undo
679 679
 			foreach ($qrTab as $line) {
680 680
 				$arrAdd = array();
681 681
 				foreach (str_split($line) as $char) {
682
-					$arrAdd[] = ($char=='1')?1:0;
682
+					$arrAdd[] = ($char == '1') ? 1 : 0;
683 683
 				}
684 684
 				$barcode_array['bcode'][] = $arrAdd;
685 685
 			}
@@ -704,8 +704,8 @@  discard block
 block discarded – undo
704 704
 			$len = count($frame);
705 705
 			// the frame is square (width = height)
706 706
 			foreach ($frame as &$frameLine) {
707
-				for ($i=0; $i<$len; $i++) {
708
-					$frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
707
+				for ($i = 0; $i < $len; $i++) {
708
+					$frameLine[$i] = (ord($frameLine[$i]) & 1) ? '1' : '0';
709 709
 				}
710 710
 			}
711 711
 			return $frame;
@@ -755,10 +755,10 @@  discard block
 block discarded – undo
755 755
 			$this->dir = -1;
756 756
 			$this->bit = -1;
757 757
 			// inteleaved data and ecc codes
758
-			for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) {
758
+			for ($i = 0; $i < ($this->dataLength + $this->eccLength); $i++) {
759 759
 				$code = $this->getCode();
760 760
 				$bit = 0x80;
761
-				for ($j=0; $j<8; $j++) {
761
+				for ($j = 0; $j < 8; $j++) {
762 762
 					$addr = $this->getNextPosition();
763 763
 					$this->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
764 764
 					$bit = $bit >> 1;
@@ -766,7 +766,7 @@  discard block
 block discarded – undo
766 766
 			}
767 767
 			// remainder bits
768 768
 			$j = $this->getRemainder($this->version);
769
-			for ($i=0; $i<$j; $i++) {
769
+			for ($i = 0; $i < $j; $i++) {
770 770
 				$addr = $this->getNextPosition();
771 771
 				$this->setFrameAt($addr, 0x02);
772 772
 			}
@@ -856,7 +856,7 @@  discard block
 block discarded – undo
856 856
 				}
857 857
 				$this->x = $x;
858 858
 				$this->y = $y;
859
-			} while(ord($this->frame[$y][$x]) & 0x80);
859
+			} while (ord($this->frame[$y][$x]) & 0x80);
860 860
 			return array('x'=>$x, 'y'=>$y);
861 861
 		}
862 862
 
@@ -877,7 +877,7 @@  discard block
 block discarded – undo
877 877
 			$dataPos = 0;
878 878
 			$eccPos = 0;
879 879
 			$endfor = $this->rsBlockNum1($spec);
880
-			for ($i=0; $i < $endfor; ++$i) {
880
+			for ($i = 0; $i < $endfor; ++$i) {
881 881
 				$ecc = array_slice($this->ecccode, $eccPos);
882 882
 				$this->rsblocks[$blockNo] = array();
883 883
 				$this->rsblocks[$blockNo]['dataLength'] = $dl;
@@ -885,7 +885,7 @@  discard block
 block discarded – undo
885 885
 				$this->rsblocks[$blockNo]['eccLength'] = $el;
886 886
 				$ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
887 887
 				$this->rsblocks[$blockNo]['ecc'] = $ecc;
888
-				$this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
888
+				$this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
889 889
 				$dataPos += $dl;
890 890
 				$eccPos += $el;
891 891
 				$blockNo++;
@@ -900,7 +900,7 @@  discard block
 block discarded – undo
900 900
 				return -1;
901 901
 			}
902 902
 			$endfor = $this->rsBlockNum2($spec);
903
-			for ($i=0; $i < $endfor; ++$i) {
903
+			for ($i = 0; $i < $endfor; ++$i) {
904 904
 				$ecc = array_slice($this->ecccode, $eccPos);
905 905
 				$this->rsblocks[$blockNo] = array();
906 906
 				$this->rsblocks[$blockNo]['dataLength'] = $dl;
@@ -953,8 +953,8 @@  discard block
 block discarded – undo
953 953
 		 */
954 954
 		 protected function writeFormatInformation($width, &$frame, $mask, $level) {
955 955
 			$blacks = 0;
956
-			$format =  $this->getFormatInfo($mask, $level);
957
-			for ($i=0; $i<8; ++$i) {
956
+			$format = $this->getFormatInfo($mask, $level);
957
+			for ($i = 0; $i < 8; ++$i) {
958 958
 				if ($format & 1) {
959 959
 					$blacks += 2;
960 960
 					$v = 0x85;
@@ -969,7 +969,7 @@  discard block
 block discarded – undo
969 969
 				}
970 970
 				$format = $format >> 1;
971 971
 			}
972
-			for ($i=0; $i<7; ++$i) {
972
+			for ($i = 0; $i < 7; ++$i) {
973 973
 			if ($format & 1) {
974 974
 				$blacks += 2;
975 975
 				$v = 0x85;
@@ -1034,7 +1034,7 @@  discard block
 block discarded – undo
1034 1034
 		 * @return int mask
1035 1035
 		 */
1036 1036
 		 protected function mask4($x, $y) {
1037
-			return (((int)($y / 2)) + ((int)($x / 3))) & 1;
1037
+			return (((int) ($y / 2)) + ((int) ($x / 3))) & 1;
1038 1038
 		}
1039 1039
 
1040 1040
 		/**
@@ -1076,13 +1076,13 @@  discard block
 block discarded – undo
1076 1076
 		 */
1077 1077
 		protected function generateMaskNo($maskNo, $width, $frame) {
1078 1078
 			$bitMask = array_fill(0, $width, array_fill(0, $width, 0));
1079
-			for ($y=0; $y<$width; ++$y) {
1080
-				for ($x=0; $x<$width; ++$x) {
1079
+			for ($y = 0; $y < $width; ++$y) {
1080
+				for ($x = 0; $x < $width; ++$x) {
1081 1081
 					if (ord($frame[$y][$x]) & 0x80) {
1082 1082
 						$bitMask[$y][$x] = 0;
1083 1083
 					} else {
1084 1084
 						$maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
1085
-						$bitMask[$y][$x] = ($maskFunc == 0)?1:0;
1085
+						$bitMask[$y][$x] = ($maskFunc == 0) ? 1 : 0;
1086 1086
 					}
1087 1087
 				}
1088 1088
 			}
@@ -1098,7 +1098,7 @@  discard block
 block discarded – undo
1098 1098
 		 * @param boolean $maskGenOnly
1099 1099
 		 * @return int b
1100 1100
 		 */
1101
-		 protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) {
1101
+		 protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly = false) {
1102 1102
 			$b = 0;
1103 1103
 			$bitMask = array();
1104 1104
 			$bitMask = $this->generateMaskNo($maskNo, $width, $s);
@@ -1106,12 +1106,12 @@  discard block
 block discarded – undo
1106 1106
 				return;
1107 1107
 			}
1108 1108
 			$d = $s;
1109
-			for ($y=0; $y<$width; ++$y) {
1110
-				for ($x=0; $x<$width; ++$x) {
1109
+			for ($y = 0; $y < $width; ++$y) {
1110
+				for ($x = 0; $x < $width; ++$x) {
1111 1111
 					if ($bitMask[$y][$x] == 1) {
1112
-						$d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
1112
+						$d[$y][$x] = chr(ord($s[$y][$x]) ^ (int) $bitMask[$y][$x]);
1113 1113
 					}
1114
-					$b += (int)(ord($d[$y][$x]) & 1);
1114
+					$b += (int) (ord($d[$y][$x]) & 1);
1115 1115
 				}
1116 1116
 			}
1117 1117
 			return $b;
@@ -1139,20 +1139,20 @@  discard block
 block discarded – undo
1139 1139
 		 */
1140 1140
 		 protected function calcN1N3($length) {
1141 1141
 			$demerit = 0;
1142
-			for ($i=0; $i<$length; ++$i) {
1142
+			for ($i = 0; $i < $length; ++$i) {
1143 1143
 				if ($this->runLength[$i] >= 5) {
1144 1144
 					$demerit += (N1 + ($this->runLength[$i] - 5));
1145 1145
 				}
1146 1146
 				if ($i & 1) {
1147
-					if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) {
1148
-						$fact = (int)($this->runLength[$i] / 3);
1149
-						if (($this->runLength[$i-2] == $fact)
1150
-							AND ($this->runLength[$i-1] == $fact)
1151
-							AND ($this->runLength[$i+1] == $fact)
1152
-							AND ($this->runLength[$i+2] == $fact)) {
1153
-							if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) {
1147
+					if (($i >= 3) AND ($i < ($length - 2)) AND ($this->runLength[$i] % 3 == 0)) {
1148
+						$fact = (int) ($this->runLength[$i] / 3);
1149
+						if (($this->runLength[$i - 2] == $fact)
1150
+							AND ($this->runLength[$i - 1] == $fact)
1151
+							AND ($this->runLength[$i + 1] == $fact)
1152
+							AND ($this->runLength[$i + 2] == $fact)) {
1153
+							if (($this->runLength[$i - 3] < 0) OR ($this->runLength[$i - 3] >= (4 * $fact))) {
1154 1154
 								$demerit += N3;
1155
-							} elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) {
1155
+							} elseif ((($i + 3) >= $length) OR ($this->runLength[$i + 3] >= (4 * $fact))) {
1156 1156
 								$demerit += N3;
1157 1157
 							}
1158 1158
 						}
@@ -1171,17 +1171,17 @@  discard block
 block discarded – undo
1171 1171
 		 protected function evaluateSymbol($width, $frame) {
1172 1172
 			$head = 0;
1173 1173
 			$demerit = 0;
1174
-			for ($y=0; $y<$width; ++$y) {
1174
+			for ($y = 0; $y < $width; ++$y) {
1175 1175
 				$head = 0;
1176 1176
 				$this->runLength[0] = 1;
1177 1177
 				$frameY = $frame[$y];
1178 1178
 				if ($y > 0) {
1179
-					$frameYM = $frame[$y-1];
1179
+					$frameYM = $frame[$y - 1];
1180 1180
 				}
1181
-				for ($x=0; $x<$width; ++$x) {
1181
+				for ($x = 0; $x < $width; ++$x) {
1182 1182
 					if (($x > 0) AND ($y > 0)) {
1183
-						$b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
1184
-						$w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
1183
+						$b22 = ord($frameY[$x]) & ord($frameY[$x - 1]) & ord($frameYM[$x]) & ord($frameYM[$x - 1]);
1184
+						$w22 = ord($frameY[$x]) | ord($frameY[$x - 1]) | ord($frameYM[$x]) | ord($frameYM[$x - 1]);
1185 1185
 						if (($b22 | ($w22 ^ 1)) & 1) {
1186 1186
 							$demerit += N2;
1187 1187
 						}
@@ -1191,7 +1191,7 @@  discard block
 block discarded – undo
1191 1191
 						$head = 1;
1192 1192
 						$this->runLength[$head] = 1;
1193 1193
 					} elseif ($x > 0) {
1194
-						if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
1194
+						if ((ord($frameY[$x]) ^ ord($frameY[$x - 1])) & 1) {
1195 1195
 							$head++;
1196 1196
 							$this->runLength[$head] = 1;
1197 1197
 						} else {
@@ -1199,18 +1199,18 @@  discard block
 block discarded – undo
1199 1199
 						}
1200 1200
 					}
1201 1201
 				}
1202
-				$demerit += $this->calcN1N3($head+1);
1202
+				$demerit += $this->calcN1N3($head + 1);
1203 1203
 			}
1204
-			for ($x=0; $x<$width; ++$x) {
1204
+			for ($x = 0; $x < $width; ++$x) {
1205 1205
 				$head = 0;
1206 1206
 				$this->runLength[0] = 1;
1207
-				for ($y=0; $y<$width; ++$y) {
1207
+				for ($y = 0; $y < $width; ++$y) {
1208 1208
 					if (($y == 0) AND (ord($frame[$y][$x]) & 1)) {
1209 1209
 						$this->runLength[0] = -1;
1210 1210
 						$head = 1;
1211 1211
 						$this->runLength[$head] = 1;
1212 1212
 					} elseif ($y > 0) {
1213
-						if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
1213
+						if ((ord($frame[$y][$x]) ^ ord($frame[$y - 1][$x])) & 1) {
1214 1214
 							$head++;
1215 1215
 							$this->runLength[$head] = 1;
1216 1216
 						} else {
@@ -1218,7 +1218,7 @@  discard block
 block discarded – undo
1218 1218
 						}
1219 1219
 					}
1220 1220
 				}
1221
-				$demerit += $this->calcN1N3($head+1);
1221
+				$demerit += $this->calcN1N3($head + 1);
1222 1222
 			}
1223 1223
 			return $demerit;
1224 1224
 		}
@@ -1237,8 +1237,8 @@  discard block
 block discarded – undo
1237 1237
 			$checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7);
1238 1238
 			if (QR_FIND_FROM_RANDOM !== false) {
1239 1239
 				$howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9);
1240
-				for ($i = 0; $i <  $howManuOut; ++$i) {
1241
-					$remPos = rand (0, count($checked_masks)-1);
1240
+				for ($i = 0; $i < $howManuOut; ++$i) {
1241
+					$remPos = rand(0, count($checked_masks) - 1);
1242 1242
 					unset($checked_masks[$remPos]);
1243 1243
 					$checked_masks = array_values($checked_masks);
1244 1244
 				}
@@ -1250,8 +1250,8 @@  discard block
 block discarded – undo
1250 1250
 				$blacks = 0;
1251 1251
 				$blacks  = $this->makeMaskNo($i, $width, $frame, $mask);
1252 1252
 				$blacks += $this->writeFormatInformation($width, $mask, $i, $level);
1253
-				$blacks  = (int)(100 * $blacks / ($width * $width));
1254
-				$demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
1253
+				$blacks  = (int) (100 * $blacks / ($width * $width));
1254
+				$demerit = (int) ((int) (abs($blacks - 50) / 5) * N4);
1255 1255
 				$demerit += $this->evaluateSymbol($width, $mask);
1256 1256
 				if ($demerit < $minDemerit) {
1257 1257
 					$minDemerit = $demerit;
@@ -1276,7 +1276,7 @@  discard block
 block discarded – undo
1276 1276
 			if ($pos >= strlen($str)) {
1277 1277
 				return false;
1278 1278
 			}
1279
-			return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
1279
+			return ((ord($str[$pos]) >= ord('0')) && (ord($str[$pos]) <= ord('9')));
1280 1280
 		}
1281 1281
 
1282 1282
 		/**
@@ -1307,8 +1307,8 @@  discard block
 block discarded – undo
1307 1307
 			} elseif ($this->isalnumat($this->dataStr, $pos)) {
1308 1308
 				return QR_MODE_AN;
1309 1309
 			} elseif ($this->hint == QR_MODE_KJ) {
1310
-				if ($pos+1 < strlen($this->dataStr)) {
1311
-					$d = $this->dataStr[$pos+1];
1310
+				if ($pos + 1 < strlen($this->dataStr)) {
1311
+					$d = $this->dataStr[$pos + 1];
1312 1312
 					$word = (ord($c) << 8) | ord($d);
1313 1313
 					if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) {
1314 1314
 						return QR_MODE_KJ;
@@ -1325,7 +1325,7 @@  discard block
 block discarded – undo
1325 1325
 		 protected function eatNum() {
1326 1326
 			$ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1327 1327
 			$p = 0;
1328
-			while($this->isdigitat($this->dataStr, $p)) {
1328
+			while ($this->isdigitat($this->dataStr, $p)) {
1329 1329
 				$p++;
1330 1330
 			}
1331 1331
 			$run = $p;
@@ -1341,7 +1341,7 @@  discard block
 block discarded – undo
1341 1341
 			if ($mode == QR_MODE_AN) {
1342 1342
 				$dif = $this->estimateBitsModeNum($run) + 4 + $ln
1343 1343
 				+ $this->estimateBitsModeAn(1)        // + 4 + la
1344
-				- $this->estimateBitsModeAn($run + 1);// - 4 - la
1344
+				- $this->estimateBitsModeAn($run + 1); // - 4 - la
1345 1345
 				if ($dif > 0) {
1346 1346
 					return $this->eatAn();
1347 1347
 				}
@@ -1355,13 +1355,13 @@  discard block
 block discarded – undo
1355 1355
 		 * @return int run
1356 1356
 		 */
1357 1357
 		 protected function eatAn() {
1358
-			$la = $this->lengthIndicator(QR_MODE_AN,  $this->version);
1358
+			$la = $this->lengthIndicator(QR_MODE_AN, $this->version);
1359 1359
 			$ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1360 1360
 			$p = 0;
1361
-			while($this->isalnumat($this->dataStr, $p)) {
1361
+			while ($this->isalnumat($this->dataStr, $p)) {
1362 1362
 				if ($this->isdigitat($this->dataStr, $p)) {
1363 1363
 					$q = $p;
1364
-					while($this->isdigitat($this->dataStr, $q)) {
1364
+					while ($this->isdigitat($this->dataStr, $q)) {
1365 1365
 						$q++;
1366 1366
 					}
1367 1367
 					$dif = $this->estimateBitsModeAn($p) // + 4 + la
@@ -1395,7 +1395,7 @@  discard block
 block discarded – undo
1395 1395
 		 */
1396 1396
 		 protected function eatKanji() {
1397 1397
 			$p = 0;
1398
-			while($this->identifyMode($p) == QR_MODE_KJ) {
1398
+			while ($this->identifyMode($p) == QR_MODE_KJ) {
1399 1399
 				$p += 2;
1400 1400
 			}
1401 1401
 			$this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr));
@@ -1411,14 +1411,14 @@  discard block
 block discarded – undo
1411 1411
 			$ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1412 1412
 			$p = 1;
1413 1413
 			$dataStrLen = strlen($this->dataStr);
1414
-			while($p < $dataStrLen) {
1414
+			while ($p < $dataStrLen) {
1415 1415
 				$mode = $this->identifyMode($p);
1416 1416
 				if ($mode == QR_MODE_KJ) {
1417 1417
 					break;
1418 1418
 				}
1419 1419
 				if ($mode == QR_MODE_NM) {
1420 1420
 					$q = $p;
1421
-					while($this->isdigitat($this->dataStr, $q)) {
1421
+					while ($this->isdigitat($this->dataStr, $q)) {
1422 1422
 						$q++;
1423 1423
 					}
1424 1424
 					$dif = $this->estimateBitsMode8($p) // + 4 + l8
@@ -1431,7 +1431,7 @@  discard block
 block discarded – undo
1431 1431
 					}
1432 1432
 				} elseif ($mode == QR_MODE_AN) {
1433 1433
 					$q = $p;
1434
-					while($this->isalnumat($this->dataStr, $q)) {
1434
+					while ($this->isalnumat($this->dataStr, $q)) {
1435 1435
 						$q++;
1436 1436
 					}
1437 1437
 					$dif = $this->estimateBitsMode8($p)  // + 4 + l8
@@ -1524,7 +1524,7 @@  discard block
 block discarded – undo
1524 1524
 		 * @param array $bstream
1525 1525
 		 * @return array input item
1526 1526
 		 */
1527
-		 protected function newInputItem($mode, $size, $data, $bstream=null) {
1527
+		 protected function newInputItem($mode, $size, $data, $bstream = null) {
1528 1528
 			$setData = array_slice($data, 0, $size);
1529 1529
 			if (count($setData) < $size) {
1530 1530
 				$setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0));
@@ -1547,23 +1547,23 @@  discard block
 block discarded – undo
1547 1547
 		 * @return array input item
1548 1548
 		 */
1549 1549
 		 protected function encodeModeNum($inputitem, $version) {
1550
-			$words = (int)($inputitem['size'] / 3);
1550
+			$words = (int) ($inputitem['size'] / 3);
1551 1551
 			$inputitem['bstream'] = array();
1552 1552
 			$val = 0x1;
1553 1553
 			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
1554 1554
 			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']);
1555
-			for ($i=0; $i < $words; ++$i) {
1556
-				$val  = (ord($inputitem['data'][$i*3  ]) - ord('0')) * 100;
1557
-				$val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10;
1558
-				$val += (ord($inputitem['data'][$i*3+2]) - ord('0'));
1555
+			for ($i = 0; $i < $words; ++$i) {
1556
+				$val  = (ord($inputitem['data'][$i * 3]) - ord('0')) * 100;
1557
+				$val += (ord($inputitem['data'][$i * 3 + 1]) - ord('0')) * 10;
1558
+				$val += (ord($inputitem['data'][$i * 3 + 2]) - ord('0'));
1559 1559
 				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val);
1560 1560
 			}
1561 1561
 			if ($inputitem['size'] - $words * 3 == 1) {
1562
-				$val = ord($inputitem['data'][$words*3]) - ord('0');
1562
+				$val = ord($inputitem['data'][$words * 3]) - ord('0');
1563 1563
 				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
1564 1564
 			} elseif (($inputitem['size'] - ($words * 3)) == 2) {
1565
-				$val  = (ord($inputitem['data'][$words*3  ]) - ord('0')) * 10;
1566
-				$val += (ord($inputitem['data'][$words*3+1]) - ord('0'));
1565
+				$val  = (ord($inputitem['data'][$words * 3]) - ord('0')) * 10;
1566
+				$val += (ord($inputitem['data'][$words * 3 + 1]) - ord('0'));
1567 1567
 				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val);
1568 1568
 			}
1569 1569
 			return $inputitem;
@@ -1576,13 +1576,13 @@  discard block
 block discarded – undo
1576 1576
 		 * @return array input item
1577 1577
 		 */
1578 1578
 		 protected function encodeModeAn($inputitem, $version) {
1579
-			$words = (int)($inputitem['size'] / 2);
1579
+			$words = (int) ($inputitem['size'] / 2);
1580 1580
 			$inputitem['bstream'] = array();
1581 1581
 			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02);
1582 1582
 			$inputitem['bstream'] = $this->appendNum(v, $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']);
1583
-			for ($i=0; $i < $words; ++$i) {
1584
-				$val  = (int)$this->lookAnTable(ord($inputitem['data'][$i*2  ])) * 45;
1585
-				$val += (int)$this->lookAnTable(ord($inputitem['data'][$i*2+1]));
1583
+			for ($i = 0; $i < $words; ++$i) {
1584
+				$val  = (int) $this->lookAnTable(ord($inputitem['data'][$i * 2])) * 45;
1585
+				$val += (int) $this->lookAnTable(ord($inputitem['data'][$i * 2 + 1]));
1586 1586
 				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val);
1587 1587
 			}
1588 1588
 			if ($inputitem['size'] & 1) {
@@ -1602,7 +1602,7 @@  discard block
 block discarded – undo
1602 1602
 			$inputitem['bstream'] = array();
1603 1603
 			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4);
1604 1604
 			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']);
1605
-			for ($i=0; $i < $inputitem['size']; ++$i) {
1605
+			for ($i = 0; $i < $inputitem['size']; ++$i) {
1606 1606
 				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i]));
1607 1607
 			}
1608 1608
 			return $inputitem;
@@ -1617,9 +1617,9 @@  discard block
 block discarded – undo
1617 1617
 		 protected function encodeModeKanji($inputitem, $version) {
1618 1618
 			$inputitem['bstream'] = array();
1619 1619
 			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8);
1620
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2));
1621
-			for ($i=0; $i<$inputitem['size']; $i+=2) {
1622
-				$val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]);
1620
+			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int) ($inputitem['size'] / 2));
1621
+			for ($i = 0; $i < $inputitem['size']; $i += 2) {
1622
+				$val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i + 1]);
1623 1623
 				if ($val <= 0x9ffc) {
1624 1624
 					$val -= 0x8140;
1625 1625
 				} else {
@@ -1664,7 +1664,7 @@  discard block
 block discarded – undo
1664 1664
 				$inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']);
1665 1665
 				$inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']);
1666 1666
 			} else {
1667
-				switch($inputitem['mode']) {
1667
+				switch ($inputitem['mode']) {
1668 1668
 					case QR_MODE_NM: {
1669 1669
 						$inputitem = $this->encodeModeNum($inputitem, $version);
1670 1670
 						break;
@@ -1742,7 +1742,7 @@  discard block
 block discarded – undo
1742 1742
 			$parity = 0;
1743 1743
 			foreach ($items as $item) {
1744 1744
 				if ($item['mode'] != QR_MODE_ST) {
1745
-					for ($i=$item['size']-1; $i>=0; --$i) {
1745
+					for ($i = $item['size'] - 1; $i >= 0; --$i) {
1746 1746
 						$parity ^= $item['data'][$i];
1747 1747
 					}
1748 1748
 				}
@@ -1757,8 +1757,8 @@  discard block
 block discarded – undo
1757 1757
 		 * @return boolean true or false
1758 1758
 		 */
1759 1759
 		 protected function checkModeNum($size, $data) {
1760
-			for ($i=0; $i<$size; ++$i) {
1761
-				if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){
1760
+			for ($i = 0; $i < $size; ++$i) {
1761
+				if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))) {
1762 1762
 					return false;
1763 1763
 				}
1764 1764
 			}
@@ -1771,9 +1771,9 @@  discard block
 block discarded – undo
1771 1771
 		 * @return int number of bits
1772 1772
 		 */
1773 1773
 		 protected function estimateBitsModeNum($size) {
1774
-			$w = (int)$size / 3;
1774
+			$w = (int) $size / 3;
1775 1775
 			$bits = $w * 10;
1776
-			switch($size - $w * 3) {
1776
+			switch ($size - $w * 3) {
1777 1777
 				case 1: {
1778 1778
 					$bits += 4;
1779 1779
 					break;
@@ -1795,7 +1795,7 @@  discard block
 block discarded – undo
1795 1795
 		 * @return value
1796 1796
 		 */
1797 1797
 		protected function lookAnTable($c) {
1798
-			return (($c > 127)?-1:$this->anTable[$c]);
1798
+			return (($c > 127) ?-1 : $this->anTable[$c]);
1799 1799
 		}
1800 1800
 
1801 1801
 		/**
@@ -1805,7 +1805,7 @@  discard block
 block discarded – undo
1805 1805
 		 * @return boolean true or false
1806 1806
 		 */
1807 1807
 		 protected function checkModeAn($size, $data) {
1808
-			for ($i=0; $i<$size; ++$i) {
1808
+			for ($i = 0; $i < $size; ++$i) {
1809 1809
 				if ($this->lookAnTable(ord($data[$i])) == -1) {
1810 1810
 					return false;
1811 1811
 				}
@@ -1819,7 +1819,7 @@  discard block
 block discarded – undo
1819 1819
 		 * @return int number of bits
1820 1820
 		 */
1821 1821
 		 protected function estimateBitsModeAn($size) {
1822
-			$w = (int)($size / 2);
1822
+			$w = (int) ($size / 2);
1823 1823
 			$bits = $w * 11;
1824 1824
 			if ($size & 1) {
1825 1825
 				$bits += 6;
@@ -1842,7 +1842,7 @@  discard block
 block discarded – undo
1842 1842
 		 * @return int number of bits
1843 1843
 		 */
1844 1844
 		 protected function estimateBitsModeKanji($size) {
1845
-			return (int)(($size / 2) * 13);
1845
+			return (int) (($size / 2) * 13);
1846 1846
 		}
1847 1847
 
1848 1848
 		/**
@@ -1855,8 +1855,8 @@  discard block
 block discarded – undo
1855 1855
 			if ($size & 1) {
1856 1856
 				return false;
1857 1857
 			}
1858
-			for ($i=0; $i<$size; $i+=2) {
1859
-				$val = (ord($data[$i]) << 8) | ord($data[$i+1]);
1858
+			for ($i = 0; $i < $size; $i += 2) {
1859
+				$val = (ord($data[$i]) << 8) | ord($data[$i + 1]);
1860 1860
 				if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) {
1861 1861
 					return false;
1862 1862
 				}
@@ -1875,7 +1875,7 @@  discard block
 block discarded – undo
1875 1875
 			if ($size <= 0) {
1876 1876
 				return false;
1877 1877
 			}
1878
-			switch($mode) {
1878
+			switch ($mode) {
1879 1879
 				case QR_MODE_NM: {
1880 1880
 					return $this->checkModeNum($size, $data);
1881 1881
 				}
@@ -1910,7 +1910,7 @@  discard block
 block discarded – undo
1910 1910
 				$version = 1;
1911 1911
 			}
1912 1912
 			foreach ($items as $item) {
1913
-				switch($item['mode']) {
1913
+				switch ($item['mode']) {
1914 1914
 					case QR_MODE_NM: {
1915 1915
 						$bits = $this->estimateBitsModeNum($item['size']);
1916 1916
 						break;
@@ -1936,7 +1936,7 @@  discard block
 block discarded – undo
1936 1936
 				}
1937 1937
 				$l = $this->lengthIndicator($item['mode'], $version);
1938 1938
 				$m = 1 << $l;
1939
-				$num = (int)(($item['size'] + $m - 1) / $m);
1939
+				$num = (int) (($item['size'] + $m - 1) / $m);
1940 1940
 				$bits += $num * (4 + $l);
1941 1941
 			}
1942 1942
 			return $bits;
@@ -1953,7 +1953,7 @@  discard block
 block discarded – undo
1953 1953
 			do {
1954 1954
 				$prev = $version;
1955 1955
 				$bits = $this->estimateBitStreamSize($items, $prev);
1956
-				$version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
1956
+				$version = $this->getMinimumVersion((int) (($bits + 7) / 8), $this->level);
1957 1957
 				if ($version < 0) {
1958 1958
 					return -1;
1959 1959
 				}
@@ -1970,9 +1970,9 @@  discard block
 block discarded – undo
1970 1970
 		 */
1971 1971
 		 protected function lengthOfCode($mode, $version, $bits) {
1972 1972
 			$payload = $bits - 4 - $this->lengthIndicator($mode, $version);
1973
-			switch($mode) {
1973
+			switch ($mode) {
1974 1974
 				case QR_MODE_NM: {
1975
-					$chunks = (int)($payload / 10);
1975
+					$chunks = (int) ($payload / 10);
1976 1976
 					$remain = $payload - $chunks * 10;
1977 1977
 					$size = $chunks * 3;
1978 1978
 					if ($remain >= 7) {
@@ -1983,7 +1983,7 @@  discard block
 block discarded – undo
1983 1983
 					break;
1984 1984
 				}
1985 1985
 				case QR_MODE_AN: {
1986
-					$chunks = (int)($payload / 11);
1986
+					$chunks = (int) ($payload / 11);
1987 1987
 					$remain = $payload - $chunks * 11;
1988 1988
 					$size = $chunks * 2;
1989 1989
 					if ($remain >= 6) {
@@ -1992,15 +1992,15 @@  discard block
 block discarded – undo
1992 1992
 					break;
1993 1993
 				}
1994 1994
 				case QR_MODE_8B: {
1995
-					$size = (int)($payload / 8);
1995
+					$size = (int) ($payload / 8);
1996 1996
 					break;
1997 1997
 				}
1998 1998
 				case QR_MODE_KJ: {
1999
-					$size = (int)(($payload / 13) * 2);
1999
+					$size = (int) (($payload / 13) * 2);
2000 2000
 					break;
2001 2001
 				}
2002 2002
 				case QR_MODE_ST: {
2003
-					$size = (int)($payload / 8);
2003
+					$size = (int) ($payload / 8);
2004 2004
 					break;
2005 2005
 				}
2006 2006
 				default: {
@@ -2050,7 +2050,7 @@  discard block
 block discarded – undo
2050 2050
 				if ($bits < 0) {
2051 2051
 					return -1;
2052 2052
 				}
2053
-				$ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
2053
+				$ver = $this->getMinimumVersion((int) (($bits + 7) / 8), $this->level);
2054 2054
 				if ($ver < 0) {
2055 2055
 					return -1;
2056 2056
 				} elseif ($ver > $this->version) {
@@ -2078,14 +2078,14 @@  discard block
 block discarded – undo
2078 2078
 				return $this->appendNum($bstream, $maxbits - $bits, 0);
2079 2079
 			}
2080 2080
 			$bits += 4;
2081
-			$words = (int)(($bits + 7) / 8);
2081
+			$words = (int) (($bits + 7) / 8);
2082 2082
 			$padding = array();
2083 2083
 			$padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0);
2084 2084
 			$padlen = $maxwords - $words;
2085 2085
 			if ($padlen > 0) {
2086 2086
 				$padbuf = array();
2087
-				for ($i=0; $i<$padlen; ++$i) {
2088
-					$padbuf[$i] = ($i&1)?0x11:0xec;
2087
+				for ($i = 0; $i < $padlen; ++$i) {
2088
+					$padbuf[$i] = ($i & 1) ? 0x11 : 0xec;
2089 2089
 				}
2090 2090
 				$padding = $this->appendBytes($padding, $padlen, $padbuf);
2091 2091
 			}
@@ -2148,7 +2148,7 @@  discard block
 block discarded – undo
2148 2148
 		 protected function newFromNum($bits, $num) {
2149 2149
 			$bstream = $this->allocate($bits);
2150 2150
 			$mask = 1 << ($bits - 1);
2151
-			for ($i=0; $i<$bits; ++$i) {
2151
+			for ($i = 0; $i < $bits; ++$i) {
2152 2152
 				if ($num & $mask) {
2153 2153
 					$bstream[$i] = 1;
2154 2154
 				} else {
@@ -2167,10 +2167,10 @@  discard block
 block discarded – undo
2167 2167
 		 */
2168 2168
 		 protected function newFromBytes($size, $data) {
2169 2169
 			$bstream = $this->allocate($size * 8);
2170
-			$p=0;
2171
-			for ($i=0; $i<$size; ++$i) {
2170
+			$p = 0;
2171
+			for ($i = 0; $i < $size; ++$i) {
2172 2172
 				$mask = 0x80;
2173
-				for ($j=0; $j<8; ++$j) {
2173
+				for ($j = 0; $j < 8; ++$j) {
2174 2174
 					if ($data[$i] & $mask) {
2175 2175
 						$bstream[$p] = 1;
2176 2176
 					} else {
@@ -2239,12 +2239,12 @@  discard block
 block discarded – undo
2239 2239
 			if ($size == 0) {
2240 2240
 				return array();
2241 2241
 			}
2242
-			$data = array_fill(0, (int)(($size + 7) / 8), 0);
2243
-			$bytes = (int)($size / 8);
2242
+			$data = array_fill(0, (int) (($size + 7) / 8), 0);
2243
+			$bytes = (int) ($size / 8);
2244 2244
 			$p = 0;
2245
-			for ($i=0; $i<$bytes; $i++) {
2245
+			for ($i = 0; $i < $bytes; $i++) {
2246 2246
 				$v = 0;
2247
-				for ($j=0; $j<8; $j++) {
2247
+				for ($j = 0; $j < 8; $j++) {
2248 2248
 					$v = $v << 1;
2249 2249
 					$v |= $bstream[$p];
2250 2250
 					$p++;
@@ -2253,7 +2253,7 @@  discard block
 block discarded – undo
2253 2253
 			}
2254 2254
 			if ($size & 7) {
2255 2255
 				$v = 0;
2256
-				for ($j=0; $j<($size & 7); $j++) {
2256
+				for ($j = 0; $j < ($size & 7); $j++) {
2257 2257
 					$v = $v << 1;
2258 2258
 					$v |= $bstream[$p];
2259 2259
 					$p++;
@@ -2276,8 +2276,8 @@  discard block
 block discarded – undo
2276 2276
 		 * @param int $replLen length of the repl string
2277 2277
 		 * @return array srctab
2278 2278
 		 */
2279
-		 protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) {
2280
-			$srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
2279
+		 protected function qrstrset($srctab, $x, $y, $repl, $replLen = false) {
2280
+			$srctab[$y] = substr_replace($srctab[$y], ($replLen !== false) ?substr($repl, 0, $replLen) : $repl, $x, ($replLen !== false) ? $replLen : strlen($repl));
2281 2281
 			return $srctab;
2282 2282
 		}
2283 2283
 
@@ -2297,7 +2297,7 @@  discard block
 block discarded – undo
2297 2297
 		 * @param int $level error correction level
2298 2298
 		 * @return int ECC size (bytes)
2299 2299
 		 */
2300
-		protected function getECCLength($version, $level){
2300
+		protected function getECCLength($version, $level) {
2301 2301
 			return $this->capacity[$version][QRCAP_EC][$level];
2302 2302
 		}
2303 2303
 
@@ -2326,8 +2326,8 @@  discard block
 block discarded – undo
2326 2326
 		 * @return int version number
2327 2327
 		 */
2328 2328
 		protected function getMinimumVersion($size, $level) {
2329
-			for ($i=1; $i <= QRSPEC_VERSION_MAX; ++$i) {
2330
-				$words  = $this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level];
2329
+			for ($i = 1; $i <= QRSPEC_VERSION_MAX; ++$i) {
2330
+				$words = $this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level];
2331 2331
 				if ($words >= $size) {
2332 2332
 					return $i;
2333 2333
 				}
@@ -2397,14 +2397,14 @@  discard block
 block discarded – undo
2397 2397
 			$ecc = $this->getECCLength($version, $level);
2398 2398
 			if ($b2 == 0) {
2399 2399
 				$spec[0] = $b1;
2400
-				$spec[1] = (int)($data / $b1);
2401
-				$spec[2] = (int)($ecc / $b1);
2400
+				$spec[1] = (int) ($data / $b1);
2401
+				$spec[2] = (int) ($ecc / $b1);
2402 2402
 				$spec[3] = 0;
2403 2403
 				$spec[4] = 0;
2404 2404
 			} else {
2405 2405
 				$spec[0] = $b1;
2406
-				$spec[1] = (int)($data / ($b1 + $b2));
2407
-				$spec[2] = (int)($ecc  / ($b1 + $b2));
2406
+				$spec[1] = (int) ($data / ($b1 + $b2));
2407
+				$spec[2] = (int) ($ecc / ($b1 + $b2));
2408 2408
 				$spec[3] = $b2;
2409 2409
 				$spec[4] = $spec[1] + 1;
2410 2410
 			}
@@ -2429,8 +2429,8 @@  discard block
 block discarded – undo
2429 2429
 				);
2430 2430
 			$yStart = $oy - 2;
2431 2431
 			$xStart = $ox - 2;
2432
-			for ($y=0; $y < 5; $y++) {
2433
-				$frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]);
2432
+			for ($y = 0; $y < 5; $y++) {
2433
+				$frame = $this->qrstrset($frame, $xStart, $yStart + $y, $finder[$y]);
2434 2434
 			}
2435 2435
 			return $frame;
2436 2436
 		}
@@ -2450,7 +2450,7 @@  discard block
 block discarded – undo
2450 2450
 			if ($d < 0) {
2451 2451
 				$w = 2;
2452 2452
 			} else {
2453
-				$w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2);
2453
+				$w = (int) (($width - $this->alignmentPattern[$version][0]) / $d + 2);
2454 2454
 			}
2455 2455
 			if ($w * $w - 3 == 1) {
2456 2456
 				$x = $this->alignmentPattern[$version][0];
@@ -2460,15 +2460,15 @@  discard block
 block discarded – undo
2460 2460
 			}
2461 2461
 			$cx = $this->alignmentPattern[$version][0];
2462 2462
 			$wo = $w - 1;
2463
-			for ($x=1; $x < $wo; ++$x) {
2463
+			for ($x = 1; $x < $wo; ++$x) {
2464 2464
 				$frame = $this->putAlignmentMarker($frame, 6, $cx);
2465
-				$frame = $this->putAlignmentMarker($frame, $cx,  6);
2465
+				$frame = $this->putAlignmentMarker($frame, $cx, 6);
2466 2466
 				$cx += $d;
2467 2467
 			}
2468 2468
 			$cy = $this->alignmentPattern[$version][0];
2469
-			for ($y=0; $y < $wo; ++$y) {
2469
+			for ($y = 0; $y < $wo; ++$y) {
2470 2470
 				$cx = $this->alignmentPattern[$version][0];
2471
-				for ($x=0; $x < $wo; ++$x) {
2471
+				for ($x = 0; $x < $wo; ++$x) {
2472 2472
 					$frame = $this->putAlignmentMarker($frame, $cx, $cy);
2473 2473
 					$cx += $d;
2474 2474
 				}
@@ -2523,7 +2523,7 @@  discard block
 block discarded – undo
2523 2523
 			"\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
2524 2524
 			"\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
2525 2525
 			);
2526
-			for ($y=0; $y < 7; $y++) {
2526
+			for ($y = 0; $y < 7; $y++) {
2527 2527
 				$frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]);
2528 2528
 			}
2529 2529
 			return $frame;
@@ -2536,7 +2536,7 @@  discard block
 block discarded – undo
2536 2536
 		 */
2537 2537
 		protected function createFrame($version) {
2538 2538
 			$width = $this->capacity[$version][QRCAP_WIDTH];
2539
-			$frameLine = str_repeat ("\0", $width);
2539
+			$frameLine = str_repeat("\0", $width);
2540 2540
 			$frame = array_fill(0, $width, $frameLine);
2541 2541
 			// Finder pattern
2542 2542
 			$frame = $this->putFinderPattern($frame, 0, 0);
@@ -2544,7 +2544,7 @@  discard block
 block discarded – undo
2544 2544
 			$frame = $this->putFinderPattern($frame, 0, $width - 7);
2545 2545
 			// Separator
2546 2546
 			$yOffset = $width - 7;
2547
-			for ($y=0; $y < 7; ++$y) {
2547
+			for ($y = 0; $y < 7; ++$y) {
2548 2548
 				$frame[$y][7] = "\xc0";
2549 2549
 				$frame[$y][$width - 8] = "\xc0";
2550 2550
 				$frame[$yOffset][7] = "\xc0";
@@ -2552,22 +2552,22 @@  discard block
 block discarded – undo
2552 2552
 			}
2553 2553
 			$setPattern = str_repeat("\xc0", 8);
2554 2554
 			$frame = $this->qrstrset($frame, 0, 7, $setPattern);
2555
-			$frame = $this->qrstrset($frame, $width-8, 7, $setPattern);
2555
+			$frame = $this->qrstrset($frame, $width - 8, 7, $setPattern);
2556 2556
 			$frame = $this->qrstrset($frame, 0, $width - 8, $setPattern);
2557 2557
 			// Format info
2558 2558
 			$setPattern = str_repeat("\x84", 9);
2559 2559
 			$frame = $this->qrstrset($frame, 0, 8, $setPattern);
2560 2560
 			$frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8);
2561 2561
 			$yOffset = $width - 8;
2562
-			for ($y=0; $y < 8; ++$y,++$yOffset) {
2562
+			for ($y = 0; $y < 8; ++$y, ++$yOffset) {
2563 2563
 				$frame[$y][8] = "\x84";
2564 2564
 				$frame[$yOffset][8] = "\x84";
2565 2565
 			}
2566 2566
 			// Timing pattern
2567 2567
 			$wo = $width - 15;
2568
-			for ($i=1; $i < $wo; ++$i) {
2569
-				$frame[6][7+$i] = chr(0x90 | ($i & 1));
2570
-				$frame[7+$i][6] = chr(0x90 | ($i & 1));
2568
+			for ($i = 1; $i < $wo; ++$i) {
2569
+				$frame[6][7 + $i] = chr(0x90 | ($i & 1));
2570
+				$frame[7 + $i][6] = chr(0x90 | ($i & 1));
2571 2571
 			}
2572 2572
 			// Alignment pattern
2573 2573
 			$frame = $this->putAlignmentPattern($version, $frame, $width);
@@ -2575,16 +2575,16 @@  discard block
 block discarded – undo
2575 2575
 			if ($version >= 7) {
2576 2576
 				$vinf = $this->getVersionPattern($version);
2577 2577
 				$v = $vinf;
2578
-				for ($x=0; $x<6; ++$x) {
2579
-					for ($y=0; $y<3; ++$y) {
2580
-						$frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
2578
+				for ($x = 0; $x < 6; ++$x) {
2579
+					for ($y = 0; $y < 3; ++$y) {
2580
+						$frame[($width - 11) + $y][$x] = chr(0x88 | ($v & 1));
2581 2581
 						$v = $v >> 1;
2582 2582
 					}
2583 2583
 				}
2584 2584
 				$v = $vinf;
2585
-				for ($y=0; $y<6; ++$y) {
2586
-					for ($x=0; $x<3; ++$x) {
2587
-						$frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
2585
+				for ($y = 0; $y < 6; ++$y) {
2586
+					for ($x = 0; $x < 3; ++$x) {
2587
+						$frame[$y][$x + ($width - 11)] = chr(0x88 | ($v & 1));
2588 2588
 						$v = $v >> 1;
2589 2589
 					}
2590 2590
 				}
@@ -2755,16 +2755,16 @@  discard block
 block discarded – undo
2755 2755
 			if (($symsize < 0) OR ($symsize > 8)) {
2756 2756
 				return $rs;
2757 2757
 			}
2758
-			if (($fcr < 0) OR ($fcr >= (1<<$symsize))) {
2758
+			if (($fcr < 0) OR ($fcr >= (1 << $symsize))) {
2759 2759
 				return $rs;
2760 2760
 			}
2761
-			if (($prim <= 0) OR ($prim >= (1<<$symsize))) {
2761
+			if (($prim <= 0) OR ($prim >= (1 << $symsize))) {
2762 2762
 				return $rs;
2763 2763
 			}
2764
-			if (($nroots < 0) OR ($nroots >= (1<<$symsize))) {
2764
+			if (($nroots < 0) OR ($nroots >= (1 << $symsize))) {
2765 2765
 				return $rs;
2766 2766
 			}
2767
-			if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) {
2767
+			if (($pad < 0) OR ($pad >= ((1 << $symsize) - 1 - $nroots))) {
2768 2768
 				return $rs;
2769 2769
 			}
2770 2770
 			$rs = array();
@@ -2774,13 +2774,13 @@  discard block
 block discarded – undo
2774 2774
 			$rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0);
2775 2775
 			$rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0);
2776 2776
 			// PHP style macro replacement ;)
2777
-			$NN =& $rs['nn'];
2778
-			$A0 =& $NN;
2777
+			$NN = & $rs['nn'];
2778
+			$A0 = & $NN;
2779 2779
 			// Generate Galois field lookup tables
2780 2780
 			$rs['index_of'][0] = $A0; // log(zero) = -inf
2781 2781
 			$rs['alpha_to'][$A0] = 0; // alpha**-inf = 0
2782 2782
 			$sr = 1;
2783
-			for ($i=0; $i<$rs['nn']; ++$i) {
2783
+			for ($i = 0; $i < $rs['nn']; ++$i) {
2784 2784
 				$rs['index_of'][$sr] = $i;
2785 2785
 				$rs['alpha_to'][$i] = $sr;
2786 2786
 				$sr <<= 1;
@@ -2800,21 +2800,21 @@  discard block
 block discarded – undo
2800 2800
 			$rs['nroots'] = $nroots;
2801 2801
 			$rs['gfpoly'] = $gfpoly;
2802 2802
 			// Find prim-th root of 1, used in decoding
2803
-			for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) {
2803
+			for ($iprim = 1; ($iprim % $prim) != 0; $iprim += $rs['nn']) {
2804 2804
 				; // intentional empty-body loop!
2805 2805
 			}
2806
-			$rs['iprim'] = (int)($iprim / $prim);
2806
+			$rs['iprim'] = (int) ($iprim / $prim);
2807 2807
 			$rs['genpoly'][0] = 1;
2808 2808
 
2809 2809
 
2810
-			for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
2811
-				$rs['genpoly'][$i+1] = 1;
2810
+			for ($i = 0, $root = $fcr * $prim; $i < $nroots; $i++, $root += $prim) {
2811
+				$rs['genpoly'][$i + 1] = 1;
2812 2812
 				// Multiply rs->genpoly[] by  @**(root + x)
2813 2813
 				for ($j = $i; $j > 0; --$j) {
2814 2814
 					if ($rs['genpoly'][$j] != 0) {
2815
-						$rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)];
2815
+						$rs['genpoly'][$j] = $rs['genpoly'][$j - 1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)];
2816 2816
 					} else {
2817
-						$rs['genpoly'][$j] = $rs['genpoly'][$j-1];
2817
+						$rs['genpoly'][$j] = $rs['genpoly'][$j - 1];
2818 2818
 					}
2819 2819
 				}
2820 2820
 				// rs->genpoly[0] can never be zero
@@ -2835,26 +2835,26 @@  discard block
 block discarded – undo
2835 2835
 		 * @return parity array
2836 2836
 		 */
2837 2837
 		 protected function encode_rs_char($rs, $data, $parity) {
2838
-			$MM       =& $rs['mm']; // bits per symbol
2839
-			$NN       =& $rs['nn']; // the total number of symbols in a RS block
2840
-			$ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form
2841
-			$INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form
2842
-			$GENPOLY  =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form
2843
-			$NROOTS   =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block
2844
-			$FCR      =& $rs['fcr']; // first consecutive root, index form
2845
-			$PRIM     =& $rs['prim']; // primitive element, index form
2846
-			$IPRIM    =& $rs['iprim']; // prim-th root of 1, index form
2847
-			$PAD      =& $rs['pad']; // the number of pad symbols in a block
2848
-			$A0       =& $NN;
2838
+			$MM       = & $rs['mm']; // bits per symbol
2839
+			$NN       = & $rs['nn']; // the total number of symbols in a RS block
2840
+			$ALPHA_TO = & $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form
2841
+			$INDEX_OF = & $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form
2842
+			$GENPOLY  = & $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form
2843
+			$NROOTS   = & $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block
2844
+			$FCR      = & $rs['fcr']; // first consecutive root, index form
2845
+			$PRIM     = & $rs['prim']; // primitive element, index form
2846
+			$IPRIM    = & $rs['iprim']; // prim-th root of 1, index form
2847
+			$PAD      = & $rs['pad']; // the number of pad symbols in a block
2848
+			$A0       = & $NN;
2849 2849
 			$parity = array_fill(0, $NROOTS, 0);
2850
-			for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) {
2850
+			for ($i = 0; $i < ($NN - $NROOTS - $PAD); $i++) {
2851 2851
 				$feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
2852 2852
 				if ($feedback != $A0) {
2853 2853
 					// feedback term is non-zero
2854 2854
 					// This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
2855 2855
 					// always be for the polynomials constructed by init_rs()
2856 2856
 					$feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback);
2857
-					for ($j=1; $j < $NROOTS; ++$j) {
2857
+					for ($j = 1; $j < $NROOTS; ++$j) {
2858 2858
 					$parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])];
2859 2859
 					}
2860 2860
 				}
Please login to merge, or discard this patch.
Upper-Lower-Casing   +42 added lines, -42 removed lines patch added patch discarded remove patch
@@ -271,7 +271,7 @@  discard block
 block discarded – undo
271 271
     	 * @return  If the optional split_length  parameter is specified, the returned array will be broken down into chunks with each being split_length  in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element.
272 272
     	 */
273 273
 		function str_split($string, $split_length=1) {
274
-			if ((strlen($string) > $split_length) OR (!$split_length)) {
274
+			if ((strlen($string) > $split_length) or (!$split_length)) {
275 275
 				do {
276 276
 					$c = strlen($string);
277 277
 					$parts[] = substr($string, 0, $split_length);
@@ -655,7 +655,7 @@  discard block
 block discarded – undo
655 655
 		 */
656 656
 		public function __construct($code, $eclevel = 'L') {
657 657
 			$barcode_array = array();
658
-			if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
658
+			if ((is_null($code)) or ($code == '\0') or ($code == '')) {
659 659
 				return false;
660 660
 			}
661 661
 			// set error correction level
@@ -663,10 +663,10 @@  discard block
 block discarded – undo
663 663
 			if ($this->level === false) {
664 664
 				$this->level = QR_ECLEVEL_L;
665 665
 			}
666
-			if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) {
666
+			if (($this->hint != QR_MODE_8B) and ($this->hint != QR_MODE_KJ)) {
667 667
 				return false;
668 668
 			}
669
-			if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) {
669
+			if (($this->version < 0) or ($this->version > QRSPEC_VERSION_MAX)) {
670 670
 				return false;
671 671
 			}
672 672
 			$this->items = array();
@@ -722,7 +722,7 @@  discard block
 block discarded – undo
722 722
 			}
723 723
 			$ret = $this->splitString();
724 724
 			if ($ret < 0) {
725
-				return NULL;
725
+				return null;
726 726
 			}
727 727
 			$this->encodeMask(-1);
728 728
 		}
@@ -735,7 +735,7 @@  discard block
 block discarded – undo
735 735
 			$spec = array(0, 0, 0, 0, 0);
736 736
 			$this->datacode = $this->getByteStream($this->items);
737 737
 			if (is_null($this->datacode)) {
738
-				return NULL;
738
+				return null;
739 739
 			}
740 740
 			$spec = $this->getEccSpec($this->version, $this->level, $spec);
741 741
 			$this->b1 = $this->rsBlockNum1($spec);
@@ -745,7 +745,7 @@  discard block
 block discarded – undo
745 745
 			$this->blocks = $this->rsBlockNum($spec);
746 746
 			$ret = $this->init($spec);
747 747
 			if ($ret < 0) {
748
-				return NULL;
748
+				return null;
749 749
 			}
750 750
 			$this->count = 0;
751 751
 			$this->width = $this->getWidth($this->version);
@@ -781,8 +781,8 @@  discard block
 block discarded – undo
781 781
 			} else {
782 782
 				$masked = $this->makeMask($this->width, $this->frame, $mask, $this->level);
783 783
 			}
784
-			if ($masked == NULL) {
785
-				return NULL;
784
+			if ($masked == null) {
785
+				return null;
786 786
 			}
787 787
 			$this->data = $masked;
788 788
 		}
@@ -851,8 +851,8 @@  discard block
 block discarded – undo
851 851
 						}
852 852
 					}
853 853
 				}
854
-				if (($x < 0) OR ($y < 0)) {
855
-					return NULL;
854
+				if (($x < 0) or ($y < 0)) {
855
+					return null;
856 856
 				}
857 857
 				$this->x = $x;
858 858
 				$this->y = $y;
@@ -896,7 +896,7 @@  discard block
 block discarded – undo
896 896
 			$dl = $this->rsDataCodes2($spec);
897 897
 			$el = $this->rsEccCodes2($spec);
898 898
 			$rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
899
-			if ($rs == NULL) {
899
+			if ($rs == null) {
900 900
 				return -1;
901 901
 			}
902 902
 			$endfor = $this->rsBlockNum2($spec);
@@ -1144,15 +1144,15 @@  discard block
 block discarded – undo
1144 1144
 					$demerit += (N1 + ($this->runLength[$i] - 5));
1145 1145
 				}
1146 1146
 				if ($i & 1) {
1147
-					if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) {
1147
+					if (($i >= 3) and ($i < ($length-2)) and ($this->runLength[$i] % 3 == 0)) {
1148 1148
 						$fact = (int)($this->runLength[$i] / 3);
1149 1149
 						if (($this->runLength[$i-2] == $fact)
1150
-							AND ($this->runLength[$i-1] == $fact)
1151
-							AND ($this->runLength[$i+1] == $fact)
1152
-							AND ($this->runLength[$i+2] == $fact)) {
1153
-							if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) {
1150
+							and ($this->runLength[$i-1] == $fact)
1151
+							and ($this->runLength[$i+1] == $fact)
1152
+							and ($this->runLength[$i+2] == $fact)) {
1153
+							if (($this->runLength[$i-3] < 0) or ($this->runLength[$i-3] >= (4 * $fact))) {
1154 1154
 								$demerit += N3;
1155
-							} elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) {
1155
+							} elseif ((($i+3) >= $length) or ($this->runLength[$i+3] >= (4 * $fact))) {
1156 1156
 								$demerit += N3;
1157 1157
 							}
1158 1158
 						}
@@ -1179,14 +1179,14 @@  discard block
 block discarded – undo
1179 1179
 					$frameYM = $frame[$y-1];
1180 1180
 				}
1181 1181
 				for ($x=0; $x<$width; ++$x) {
1182
-					if (($x > 0) AND ($y > 0)) {
1182
+					if (($x > 0) and ($y > 0)) {
1183 1183
 						$b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
1184 1184
 						$w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
1185 1185
 						if (($b22 | ($w22 ^ 1)) & 1) {
1186 1186
 							$demerit += N2;
1187 1187
 						}
1188 1188
 					}
1189
-					if (($x == 0) AND (ord($frameY[$x]) & 1)) {
1189
+					if (($x == 0) and (ord($frameY[$x]) & 1)) {
1190 1190
 						$this->runLength[0] = -1;
1191 1191
 						$head = 1;
1192 1192
 						$this->runLength[$head] = 1;
@@ -1205,7 +1205,7 @@  discard block
 block discarded – undo
1205 1205
 				$head = 0;
1206 1206
 				$this->runLength[0] = 1;
1207 1207
 				for ($y=0; $y<$width; ++$y) {
1208
-					if (($y == 0) AND (ord($frame[$y][$x]) & 1)) {
1208
+					if (($y == 0) and (ord($frame[$y][$x]) & 1)) {
1209 1209
 						$this->runLength[0] = -1;
1210 1210
 						$head = 1;
1211 1211
 						$this->runLength[$head] = 1;
@@ -1310,7 +1310,7 @@  discard block
 block discarded – undo
1310 1310
 				if ($pos+1 < strlen($this->dataStr)) {
1311 1311
 					$d = $this->dataStr[$pos+1];
1312 1312
 					$word = (ord($c) << 8) | ord($d);
1313
-					if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) {
1313
+					if (($word >= 0x8140 && $word <= 0x9ffc) or ($word >= 0xe040 && $word <= 0xebbf)) {
1314 1314
 						return QR_MODE_KJ;
1315 1315
 					}
1316 1316
 				}
@@ -1503,7 +1503,7 @@  discard block
 block discarded – undo
1503 1503
 				if ($mode == QR_MODE_KJ) {
1504 1504
 					$p += 2;
1505 1505
 				} else {
1506
-					if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) {
1506
+					if ((ord($this->dataStr[$p]) >= ord('a')) and (ord($this->dataStr[$p]) <= ord('z'))) {
1507 1507
 						$this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
1508 1508
 					}
1509 1509
 					$p++;
@@ -1530,7 +1530,7 @@  discard block
 block discarded – undo
1530 1530
 				$setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0));
1531 1531
 			}
1532 1532
 			if (!$this->check($mode, $size, $setData)) {
1533
-				return NULL;
1533
+				return null;
1534 1534
 			}
1535 1535
 			$inputitem = array();
1536 1536
 			$inputitem['mode'] = $mode;
@@ -1724,7 +1724,7 @@  discard block
 block discarded – undo
1724 1724
 			if ($size > MAX_STRUCTURED_SYMBOLS) {
1725 1725
 				return -1;
1726 1726
 			}
1727
-			if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) {
1727
+			if (($index <= 0) or ($index > MAX_STRUCTURED_SYMBOLS)) {
1728 1728
 				return -1;
1729 1729
 			}
1730 1730
 			$buf = array($size, $index, $parity);
@@ -1758,7 +1758,7 @@  discard block
 block discarded – undo
1758 1758
 		 */
1759 1759
 		 protected function checkModeNum($size, $data) {
1760 1760
 			for ($i=0; $i<$size; ++$i) {
1761
-				if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){
1761
+				if ((ord($data[$i]) < ord('0')) or (ord($data[$i]) > ord('9'))){
1762 1762
 					return false;
1763 1763
 				}
1764 1764
 			}
@@ -1857,7 +1857,7 @@  discard block
 block discarded – undo
1857 1857
 			}
1858 1858
 			for ($i=0; $i<$size; $i+=2) {
1859 1859
 				$val = (ord($data[$i]) << 8) | ord($data[$i+1]);
1860
-				if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) {
1860
+				if (($val < 0x8140) or (($val > 0x9ffc) and ($val < 0xe040)) or ($val > 0xebbf)) {
1861 1861
 					return false;
1862 1862
 				}
1863 1863
 			}
@@ -2190,7 +2190,7 @@  discard block
 block discarded – undo
2190 2190
 		 * @return array bitstream
2191 2191
 		 */
2192 2192
 		 protected function appendBitstream($bitstream, $append) {
2193
-			if ((!is_array($append)) OR (count($append) == 0)) {
2193
+			if ((!is_array($append)) or (count($append) == 0)) {
2194 2194
 				return $bitstream;
2195 2195
 			}
2196 2196
 			if (count($bitstream) == 0) {
@@ -2483,7 +2483,7 @@  discard block
 block discarded – undo
2483 2483
 		 * @return BCH encoded version information pattern
2484 2484
 		 */
2485 2485
 		protected function getVersionPattern($version) {
2486
-			if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) {
2486
+			if (($version < 7) or ($version > QRSPEC_VERSION_MAX)) {
2487 2487
 				return 0;
2488 2488
 			}
2489 2489
 			return $this->versionPattern[($version - 7)];
@@ -2496,10 +2496,10 @@  discard block
 block discarded – undo
2496 2496
 		 * @return BCH encoded format information pattern
2497 2497
 		 */
2498 2498
 		protected function getFormatInfo($mask, $level) {
2499
-			if (($mask < 0) OR ($mask > 7)) {
2499
+			if (($mask < 0) or ($mask > 7)) {
2500 2500
 				return 0;
2501 2501
 			}
2502
-			if (($level < 0) OR ($level > 3)) {
2502
+			if (($level < 0) or ($level > 3)) {
2503 2503
 				return 0;
2504 2504
 			}
2505 2505
 			return $this->formatInfo[$level][$mask];
@@ -2600,14 +2600,14 @@  discard block
 block discarded – undo
2600 2600
 		 * @return Array of unsigned char.
2601 2601
 		 */
2602 2602
 		protected function newFrame($version) {
2603
-			if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) {
2604
-				return NULL;
2603
+			if (($version < 1) or ($version > QRSPEC_VERSION_MAX)) {
2604
+				return null;
2605 2605
 			}
2606 2606
 			if (!isset($this->frames[$version])) {
2607 2607
 				$this->frames[$version] = $this->createFrame($version);
2608 2608
 			}
2609 2609
 			if (is_null($this->frames[$version])) {
2610
-				return NULL;
2610
+				return null;
2611 2611
 			}
2612 2612
 			return $this->frames[$version];
2613 2613
 		}
@@ -2709,8 +2709,8 @@  discard block
 block discarded – undo
2709 2709
 		 */
2710 2710
 		 protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
2711 2711
 			foreach ($this->rsitems as $rs) {
2712
-				if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize)
2713
-					OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) {
2712
+				if (($rs['pad'] != $pad) or ($rs['nroots'] != $nroots) or ($rs['mm'] != $symsize)
2713
+					or ($rs['gfpoly'] != $gfpoly) or ($rs['fcr'] != $fcr) or ($rs['prim'] != $prim)) {
2714 2714
 					continue;
2715 2715
 				}
2716 2716
 				return $rs;
@@ -2752,19 +2752,19 @@  discard block
 block discarded – undo
2752 2752
 			// Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2)
2753 2753
 			$rs = null;
2754 2754
 			// Check parameter ranges
2755
-			if (($symsize < 0) OR ($symsize > 8)) {
2755
+			if (($symsize < 0) or ($symsize > 8)) {
2756 2756
 				return $rs;
2757 2757
 			}
2758
-			if (($fcr < 0) OR ($fcr >= (1<<$symsize))) {
2758
+			if (($fcr < 0) or ($fcr >= (1<<$symsize))) {
2759 2759
 				return $rs;
2760 2760
 			}
2761
-			if (($prim <= 0) OR ($prim >= (1<<$symsize))) {
2761
+			if (($prim <= 0) or ($prim >= (1<<$symsize))) {
2762 2762
 				return $rs;
2763 2763
 			}
2764
-			if (($nroots < 0) OR ($nroots >= (1<<$symsize))) {
2764
+			if (($nroots < 0) or ($nroots >= (1<<$symsize))) {
2765 2765
 				return $rs;
2766 2766
 			}
2767
-			if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) {
2767
+			if (($pad < 0) or ($pad >= ((1<<$symsize) -1 - $nroots))) {
2768 2768
 				return $rs;
2769 2769
 			}
2770 2770
 			$rs = array();
@@ -2791,7 +2791,7 @@  discard block
 block discarded – undo
2791 2791
 			}
2792 2792
 			if ($sr != 1) {
2793 2793
 				// field generator polynomial is not primitive!
2794
-				return NULL;
2794
+				return null;
2795 2795
 			}
2796 2796
 			// Form RS code generator polynomial from its roots
2797 2797
 			$rs['genpoly'] = array_fill(0, ($nroots + 1), 0);
Please login to merge, or discard this patch.
Indentation   +2732 added lines, -2732 removed lines patch added patch discarded remove patch
@@ -93,168 +93,168 @@  discard block
 block discarded – undo
93 93
 // definitions
94 94
 if (!defined('QRCODEDEFS')) {
95 95
 
96
-	/**
97
-	 * Indicate that definitions for this class are set
98
-	 */
99
-	define('QRCODEDEFS', true);
100
-
101
-	// -----------------------------------------------------
102
-
103
-	// Encoding modes (characters which can be encoded in QRcode)
104
-
105
-	/**
106
-	 * Encoding mode
107
-	 */
108
-	define('QR_MODE_NL', -1);
109
-
110
-	/**
111
-	 * Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode.
112
-	 */
113
-	define('QR_MODE_NM', 0);
114
-
115
-	/**
116
-	 * Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode.
117
-	 */
118
-	define('QR_MODE_AN', 1);
119
-
120
-	/**
121
-	 * Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode.
122
-	 */
123
-	define('QR_MODE_8B', 2);
124
-
125
-	/**
126
-	 * Encoding mode KANJI. A KANJI character (multibyte character) is encoded to 13bit length. In theory, 1817 characters or less can be stored in a QRcode.
127
-	 */
128
-	define('QR_MODE_KJ', 3);
129
-
130
-	/**
131
-	 * Encoding mode STRUCTURED (currently unsupported)
132
-	 */
133
-	define('QR_MODE_ST', 4);
134
-
135
-	// -----------------------------------------------------
136
-
137
-	// Levels of error correction.
138
-	// QRcode has a function of an error correcting for miss reading that white is black.
139
-	// Error correcting is defined in 4 level as below.
140
-
141
-	/**
142
-	 * Error correction level L : About 7% or less errors can be corrected.
143
-	 */
144
-	define('QR_ECLEVEL_L', 0);
145
-
146
-	/**
147
-	 * Error correction level M : About 15% or less errors can be corrected.
148
-	 */
149
-	define('QR_ECLEVEL_M', 1);
150
-
151
-	/**
152
-	 * Error correction level Q : About 25% or less errors can be corrected.
153
-	 */
154
-	define('QR_ECLEVEL_Q', 2);
155
-
156
-	/**
157
-	 * Error correction level H : About 30% or less errors can be corrected.
158
-	 */
159
-	define('QR_ECLEVEL_H', 3);
160
-
161
-	// -----------------------------------------------------
162
-
163
-	// Version. Size of QRcode is defined as version.
164
-	// Version is from 1 to 40.
165
-	// Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases.
166
-	// So version 40 is 177*177 matrix.
167
-
168
-	/**
169
-	 * Maximum QR Code version.
170
-	 */
171
-	define('QRSPEC_VERSION_MAX', 40);
172
-
173
-	/**
174
-	 * Maximum matrix size for maximum version (version 40 is 177*177 matrix).
175
-	 */
96
+    /**
97
+     * Indicate that definitions for this class are set
98
+     */
99
+    define('QRCODEDEFS', true);
100
+
101
+    // -----------------------------------------------------
102
+
103
+    // Encoding modes (characters which can be encoded in QRcode)
104
+
105
+    /**
106
+     * Encoding mode
107
+     */
108
+    define('QR_MODE_NL', -1);
109
+
110
+    /**
111
+     * Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode.
112
+     */
113
+    define('QR_MODE_NM', 0);
114
+
115
+    /**
116
+     * Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode.
117
+     */
118
+    define('QR_MODE_AN', 1);
119
+
120
+    /**
121
+     * Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode.
122
+     */
123
+    define('QR_MODE_8B', 2);
124
+
125
+    /**
126
+     * Encoding mode KANJI. A KANJI character (multibyte character) is encoded to 13bit length. In theory, 1817 characters or less can be stored in a QRcode.
127
+     */
128
+    define('QR_MODE_KJ', 3);
129
+
130
+    /**
131
+     * Encoding mode STRUCTURED (currently unsupported)
132
+     */
133
+    define('QR_MODE_ST', 4);
134
+
135
+    // -----------------------------------------------------
136
+
137
+    // Levels of error correction.
138
+    // QRcode has a function of an error correcting for miss reading that white is black.
139
+    // Error correcting is defined in 4 level as below.
140
+
141
+    /**
142
+     * Error correction level L : About 7% or less errors can be corrected.
143
+     */
144
+    define('QR_ECLEVEL_L', 0);
145
+
146
+    /**
147
+     * Error correction level M : About 15% or less errors can be corrected.
148
+     */
149
+    define('QR_ECLEVEL_M', 1);
150
+
151
+    /**
152
+     * Error correction level Q : About 25% or less errors can be corrected.
153
+     */
154
+    define('QR_ECLEVEL_Q', 2);
155
+
156
+    /**
157
+     * Error correction level H : About 30% or less errors can be corrected.
158
+     */
159
+    define('QR_ECLEVEL_H', 3);
160
+
161
+    // -----------------------------------------------------
162
+
163
+    // Version. Size of QRcode is defined as version.
164
+    // Version is from 1 to 40.
165
+    // Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases.
166
+    // So version 40 is 177*177 matrix.
167
+
168
+    /**
169
+     * Maximum QR Code version.
170
+     */
171
+    define('QRSPEC_VERSION_MAX', 40);
172
+
173
+    /**
174
+     * Maximum matrix size for maximum version (version 40 is 177*177 matrix).
175
+     */
176 176
     define('QRSPEC_WIDTH_MAX', 177);
177 177
 
178
-	// -----------------------------------------------------
178
+    // -----------------------------------------------------
179 179
 
180
-	/**
181
-	 * Matrix index to get width from $capacity array.
182
-	 */
180
+    /**
181
+     * Matrix index to get width from $capacity array.
182
+     */
183 183
     define('QRCAP_WIDTH',    0);
184 184
 
185 185
     /**
186
-	 * Matrix index to get number of words from $capacity array.
187
-	 */
186
+     * Matrix index to get number of words from $capacity array.
187
+     */
188 188
     define('QRCAP_WORDS',    1);
189 189
 
190 190
     /**
191
-	 * Matrix index to get remainder from $capacity array.
192
-	 */
191
+     * Matrix index to get remainder from $capacity array.
192
+     */
193 193
     define('QRCAP_REMINDER', 2);
194 194
 
195 195
     /**
196
-	 * Matrix index to get error correction level from $capacity array.
197
-	 */
196
+     * Matrix index to get error correction level from $capacity array.
197
+     */
198 198
     define('QRCAP_EC',       3);
199 199
 
200
-	// -----------------------------------------------------
200
+    // -----------------------------------------------------
201 201
 
202
-	// Structure (currently usupported)
202
+    // Structure (currently usupported)
203 203
 
204
-	/**
205
-	 * Number of header bits for structured mode
206
-	 */
204
+    /**
205
+     * Number of header bits for structured mode
206
+     */
207 207
     define('STRUCTURE_HEADER_BITS',  20);
208 208
 
209 209
     /**
210
-	 * Max number of symbols for structured mode
211
-	 */
210
+     * Max number of symbols for structured mode
211
+     */
212 212
     define('MAX_STRUCTURED_SYMBOLS', 16);
213 213
 
214
-	// -----------------------------------------------------
214
+    // -----------------------------------------------------
215 215
 
216 216
     // Masks
217 217
 
218 218
     /**
219
-	 * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column)
220
-	 */
219
+     * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column)
220
+     */
221 221
     define('N1',  3);
222 222
 
223 223
     /**
224
-	 * Down point base value for case 2 mask pattern (module block of same color)
225
-	 */
226
-	define('N2',  3);
224
+     * Down point base value for case 2 mask pattern (module block of same color)
225
+     */
226
+    define('N2',  3);
227 227
 
228 228
     /**
229
-	 * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column)
230
-	 */
231
-	define('N3', 40);
229
+     * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column)
230
+     */
231
+    define('N3', 40);
232 232
 
233 233
     /**
234
-	 * Down point base value for case 4 mask pattern (ration of dark modules in whole)
235
-	 */
236
-	define('N4', 10);
234
+     * Down point base value for case 4 mask pattern (ration of dark modules in whole)
235
+     */
236
+    define('N4', 10);
237 237
 
238
-	// -----------------------------------------------------
238
+    // -----------------------------------------------------
239 239
 
240
-	// Optimization settings
240
+    // Optimization settings
241 241
 
242
-	/**
243
-	 * if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
244
-	 */
245
-	define('QR_FIND_BEST_MASK', true);
242
+    /**
243
+     * if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
244
+     */
245
+    define('QR_FIND_BEST_MASK', true);
246 246
 
247
-	/**
248
-	 * if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
249
-	 */
250
-	define('QR_FIND_FROM_RANDOM', 2);
247
+    /**
248
+     * if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
249
+     */
250
+    define('QR_FIND_FROM_RANDOM', 2);
251 251
 
252
-	/**
253
-	 * when QR_FIND_BEST_MASK === false
254
-	 */
255
-	define('QR_DEFAULT_MASK', 2);
252
+    /**
253
+     * when QR_FIND_BEST_MASK === false
254
+     */
255
+    define('QR_DEFAULT_MASK', 2);
256 256
 
257
-	// -----------------------------------------------------
257
+    // -----------------------------------------------------
258 258
 
259 259
 } // end of definitions
260 260
 
@@ -262,2614 +262,2614 @@  discard block
 block discarded – undo
262 262
 
263 263
 if (!class_exists('QRcode', false)) {
264 264
 
265
-	// for compaibility with PHP4
266
-	if (!function_exists('str_split')) {
267
-    	/**
268
-    	 * Convert a string to an array (needed for PHP4 compatibility)
269
-    	 * @param string $string The input string.
270
-    	 * @param int $split_length Maximum length of the chunk.
271
-    	 * @return  If the optional split_length  parameter is specified, the returned array will be broken down into chunks with each being split_length  in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element.
272
-    	 */
273
-		function str_split($string, $split_length=1) {
274
-			if ((strlen($string) > $split_length) OR (!$split_length)) {
275
-				do {
276
-					$c = strlen($string);
277
-					$parts[] = substr($string, 0, $split_length);
278
-					$string = substr($string, $split_length);
279
-				} while ($string !== false);
280
-			} else {
281
-				$parts = array($string);
282
-			}
283
-			return $parts;
284
-		}
285
-	}
286
-
287
-	// #####################################################
288
-
289
-	/**
290
-	 * Class to create QR-code arrays for TCPDF class.
291
-	 * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD.
292
-	 * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness.
293
-	 * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
294
-	 * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
295
-	 *
296
-	 * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html).
297
-	 * Please read comments on this class source file for full copyright and license information.
298
-	 *
299
-	 * @name QRcode
300
-	 * @package com.tecnick.tcpdf
301
-	 * @abstract Class for generating QR-code array for TCPDF.
302
-	 * @author Nicola Asuni
303
-	 * @copyright 2010 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - [email protected]
304
-	 * @link http://www.tcpdf.org
305
-	 * @license http://www.gnu.org/copyleft/lesser.html LGPL
306
-	 * @version 1.0.002
307
-	 */
308
-	class QRcode {
309
-
310
-		/**
311
-		 * @var barcode array to be returned which is readable by TCPDF
312
-		 * @access protected
313
-		 */
314
-		protected $barcode_array = array();
315
-
316
-		/**
317
-		 * @var QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix.
318
-		 * @access protected
319
-		 */
320
-		protected $version = 0;
321
-
322
-		/**
323
-		 * @var Levels of error correction. See definitions for possible values.
324
-		 * @access protected
325
-		 */
326
-		protected $level = QR_ECLEVEL_L;
327
-
328
-		/**
329
-		 * @var Encoding mode
330
-		 * @access protected
331
-		 */
332
-		protected $hint = QR_MODE_8B;
333
-
334
-		/**
335
-		 * @var if true the input string will be converted to uppercase
336
-		 * @access protected
337
-		 */
338
-		protected $casesensitive = true;
339
-
340
-		/**
341
-		 * @var structured QR code (not supported yet)
342
-		 * @access protected
343
-		 */
344
-		protected $structured = 0;
345
-
346
-		/**
347
-		 * @var mask data
348
-		 * @access protected
349
-		 */
350
-		protected $data;
351
-
352
-		// FrameFiller
353
-
354
-		/**
355
-		 * @var width
356
-		 * @access protected
357
-		 */
358
-		protected $width;
359
-
360
-		/**
361
-		 * @var frame
362
-		 * @access protected
363
-		 */
364
-		protected $frame;
365
-
366
-		/**
367
-		 * @var X position of bit
368
-		 * @access protected
369
-		 */
370
-		protected $x;
371
-
372
-		/**
373
-		 * @var Y position of bit
374
-		 * @access protected
375
-		 */
376
-		protected $y;
377
-
378
-		/**
379
-		 * @var direction
380
-		 * @access protected
381
-		 */
382
-		protected $dir;
383
-
384
-		/**
385
-		 * @var single bit
386
-		 * @access protected
387
-		 */
388
-		protected $bit;
389
-
390
-		// ---- QRrawcode ----
391
-
392
-		/**
393
-		 * @var data code
394
-		 * @access protected
395
-		 */
396
-		protected $datacode = array();
397
-
398
-		/**
399
-		 * @var error correction code
400
-		 * @access protected
401
-		 */
402
-		protected $ecccode = array();
403
-
404
-		/**
405
-		 * @var blocks
406
-		 * @access protected
407
-		 */
408
-		protected $blocks;
409
-
410
-		/**
411
-		 * @var Reed-Solomon blocks
412
-		 * @access protected
413
-		 */
414
-		protected $rsblocks = array(); //of RSblock
415
-
416
-		/**
417
-		 * @var counter
418
-		 * @access protected
419
-		 */
420
-		protected $count;
421
-
422
-		/**
423
-		 * @var data length
424
-		 * @access protected
425
-		 */
426
-		protected $dataLength;
427
-
428
-		/**
429
-		 * @var error correction length
430
-		 * @access protected
431
-		 */
432
-		protected $eccLength;
433
-
434
-		/**
435
-		 * @var b1
436
-		 * @access protected
437
-		 */
438
-		protected $b1;
439
-
440
-		// ---- QRmask ----
441
-
442
-		/**
443
-		 * @var run length
444
-		 * @access protected
445
-		 */
446
-		protected $runLength = array();
447
-
448
-		// ---- QRsplit ----
449
-
450
-		/**
451
-		 * @var input data string
452
-		 * @access protected
453
-		 */
454
-		protected $dataStr = '';
455
-
456
-		/**
457
-		 * @var input items
458
-		 * @access protected
459
-		 */
460
-		protected $items;
461
-
462
-		// Reed-Solomon items
463
-
464
-		/**
465
-		 * @var Reed-Solomon items
466
-		 * @access protected
467
-		 */
468
-		protected $rsitems = array();
469
-
470
-		/**
471
-		 * @var array of frames
472
-		 * @access protected
473
-		 */
474
-		protected $frames = array();
475
-
476
-		/**
477
-		 * @var alphabet-numeric convesion table
478
-		 * @access protected
479
-		 */
480
-		protected $anTable = array(
481
-			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
482
-			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
483
-			36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, //
484
-			 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 44, -1, -1, -1, -1, -1, //
485
-			-1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, //
486
-			25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, //
487
-			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
488
-			-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1  //
489
-			);
490
-
491
-		/**
492
-		 * @var array Table of the capacity of symbols
493
-		 * See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004.
494
-		 * @access protected
495
-		 */
496
-		protected $capacity = array(
497
-			array(  0,    0, 0, array(   0,    0,    0,    0)), //
498
-			array( 21,   26, 0, array(   7,   10,   13,   17)), //  1
499
-			array( 25,   44, 7, array(  10,   16,   22,   28)), //
500
-			array( 29,   70, 7, array(  15,   26,   36,   44)), //
501
-			array( 33,  100, 7, array(  20,   36,   52,   64)), //
502
-			array( 37,  134, 7, array(  26,   48,   72,   88)), //  5
503
-			array( 41,  172, 7, array(  36,   64,   96,  112)), //
504
-			array( 45,  196, 0, array(  40,   72,  108,  130)), //
505
-			array( 49,  242, 0, array(  48,   88,  132,  156)), //
506
-			array( 53,  292, 0, array(  60,  110,  160,  192)), //
507
-			array( 57,  346, 0, array(  72,  130,  192,  224)), // 10
508
-			array( 61,  404, 0, array(  80,  150,  224,  264)), //
509
-			array( 65,  466, 0, array(  96,  176,  260,  308)), //
510
-			array( 69,  532, 0, array( 104,  198,  288,  352)), //
511
-			array( 73,  581, 3, array( 120,  216,  320,  384)), //
512
-			array( 77,  655, 3, array( 132,  240,  360,  432)), // 15
513
-			array( 81,  733, 3, array( 144,  280,  408,  480)), //
514
-			array( 85,  815, 3, array( 168,  308,  448,  532)), //
515
-			array( 89,  901, 3, array( 180,  338,  504,  588)), //
516
-			array( 93,  991, 3, array( 196,  364,  546,  650)), //
517
-			array( 97, 1085, 3, array( 224,  416,  600,  700)), // 20
518
-			array(101, 1156, 4, array( 224,  442,  644,  750)), //
519
-			array(105, 1258, 4, array( 252,  476,  690,  816)), //
520
-			array(109, 1364, 4, array( 270,  504,  750,  900)), //
521
-			array(113, 1474, 4, array( 300,  560,  810,  960)), //
522
-			array(117, 1588, 4, array( 312,  588,  870, 1050)), // 25
523
-			array(121, 1706, 4, array( 336,  644,  952, 1110)), //
524
-			array(125, 1828, 4, array( 360,  700, 1020, 1200)), //
525
-			array(129, 1921, 3, array( 390,  728, 1050, 1260)), //
526
-			array(133, 2051, 3, array( 420,  784, 1140, 1350)), //
527
-			array(137, 2185, 3, array( 450,  812, 1200, 1440)), // 30
528
-			array(141, 2323, 3, array( 480,  868, 1290, 1530)), //
529
-			array(145, 2465, 3, array( 510,  924, 1350, 1620)), //
530
-			array(149, 2611, 3, array( 540,  980, 1440, 1710)), //
531
-			array(153, 2761, 3, array( 570, 1036, 1530, 1800)), //
532
-			array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35
533
-			array(161, 3034, 0, array( 600, 1120, 1680, 1980)), //
534
-			array(165, 3196, 0, array( 630, 1204, 1770, 2100)), //
535
-			array(169, 3362, 0, array( 660, 1260, 1860, 2220)), //
536
-			array(173, 3532, 0, array( 720, 1316, 1950, 2310)), //
537
-			array(177, 3706, 0, array( 750, 1372, 2040, 2430))  // 40
538
-		);
539
-
540
-		/**
541
-		 * @var array Length indicator
542
-		 * @access protected
543
-		 */
544
-		protected $lengthTableBits = array(
545
-			array(10, 12, 14),
546
-			array( 9, 11, 13),
547
-			array( 8, 16, 16),
548
-			array( 8, 10, 12)
549
-		);
550
-
551
-		/**
552
-		 * @var array Table of the error correction code (Reed-Solomon block)
553
-		 * See Table 12-16 (pp.30-36), JIS X0510:2004.
554
-		 * @access protected
555
-		 */
556
-		protected $eccTable = array(
557
-			array(array( 0,  0), array( 0,  0), array( 0,  0), array( 0,  0)), //
558
-			array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //  1
559
-			array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //
560
-			array(array( 1,  0), array( 1,  0), array( 2,  0), array( 2,  0)), //
561
-			array(array( 1,  0), array( 2,  0), array( 2,  0), array( 4,  0)), //
562
-			array(array( 1,  0), array( 2,  0), array( 2,  2), array( 2,  2)), //  5
563
-			array(array( 2,  0), array( 4,  0), array( 4,  0), array( 4,  0)), //
564
-			array(array( 2,  0), array( 4,  0), array( 2,  4), array( 4,  1)), //
565
-			array(array( 2,  0), array( 2,  2), array( 4,  2), array( 4,  2)), //
566
-			array(array( 2,  0), array( 3,  2), array( 4,  4), array( 4,  4)), //
567
-			array(array( 2,  2), array( 4,  1), array( 6,  2), array( 6,  2)), // 10
568
-			array(array( 4,  0), array( 1,  4), array( 4,  4), array( 3,  8)), //
569
-			array(array( 2,  2), array( 6,  2), array( 4,  6), array( 7,  4)), //
570
-			array(array( 4,  0), array( 8,  1), array( 8,  4), array(12,  4)), //
571
-			array(array( 3,  1), array( 4,  5), array(11,  5), array(11,  5)), //
572
-			array(array( 5,  1), array( 5,  5), array( 5,  7), array(11,  7)), // 15
573
-			array(array( 5,  1), array( 7,  3), array(15,  2), array( 3, 13)), //
574
-			array(array( 1,  5), array(10,  1), array( 1, 15), array( 2, 17)), //
575
-			array(array( 5,  1), array( 9,  4), array(17,  1), array( 2, 19)), //
576
-			array(array( 3,  4), array( 3, 11), array(17,  4), array( 9, 16)), //
577
-			array(array( 3,  5), array( 3, 13), array(15,  5), array(15, 10)), // 20
578
-			array(array( 4,  4), array(17,  0), array(17,  6), array(19,  6)), //
579
-			array(array( 2,  7), array(17,  0), array( 7, 16), array(34,  0)), //
580
-			array(array( 4,  5), array( 4, 14), array(11, 14), array(16, 14)), //
581
-			array(array( 6,  4), array( 6, 14), array(11, 16), array(30,  2)), //
582
-			array(array( 8,  4), array( 8, 13), array( 7, 22), array(22, 13)), // 25
583
-			array(array(10,  2), array(19,  4), array(28,  6), array(33,  4)), //
584
-			array(array( 8,  4), array(22,  3), array( 8, 26), array(12, 28)), //
585
-			array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), //
586
-			array(array( 7,  7), array(21,  7), array( 1, 37), array(19, 26)), //
587
-			array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30
588
-			array(array(13,  3), array( 2, 29), array(42,  1), array(23, 28)), //
589
-			array(array(17,  0), array(10, 23), array(10, 35), array(19, 35)), //
590
-			array(array(17,  1), array(14, 21), array(29, 19), array(11, 46)), //
591
-			array(array(13,  6), array(14, 23), array(44,  7), array(59,  1)), //
592
-			array(array(12,  7), array(12, 26), array(39, 14), array(22, 41)), // 35
593
-			array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), //
594
-			array(array(17,  4), array(29, 14), array(49, 10), array(24, 46)), //
595
-			array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), //
596
-			array(array(20,  4), array(40,  7), array(43, 22), array(10, 67)), //
597
-			array(array(19,  6), array(18, 31), array(34, 34), array(20, 61))  // 40
598
-		);
599
-
600
-		/**
601
-		 * @var array Positions of alignment patterns.
602
-		 * This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them.
603
-		 * See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
604
-		 * @access protected
605
-		 */
606
-		protected $alignmentPattern = array(
607
-			array( 0,  0),
608
-			array( 0,  0), array(18,  0), array(22,  0), array(26,  0), array(30,  0), //  1- 5
609
-			array(34,  0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), //  6-10
610
-			array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15
611
-			array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20
612
-			array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25
613
-			array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30
614
-			array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35
615
-			array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58)  // 35-40
616
-		);
617
-
618
-		/**
619
-		 * @var array Version information pattern (BCH coded).
620
-		 * See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
621
-		 * size: [QRSPEC_VERSION_MAX - 6]
622
-		 * @access protected
623
-		 */
624
-		protected $versionPattern = array(
625
-			0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, //
626
-			0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, //
627
-			0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, //
628
-			0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, //
629
-			0x27541, 0x28c69
630
-		);
631
-
632
-		/**
633
-		 * @var array Format information
634
-		 * @access protected
635
-		 */
636
-		protected $formatInfo = array(
637
-			array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), //
638
-			array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), //
639
-			array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), //
640
-			array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b)  //
641
-		);
642
-
643
-
644
-		// -------------------------------------------------
645
-		// -------------------------------------------------
646
-
647
-
648
-		/**
649
-		 * This is the class constructor.
650
-		 * Creates a QRcode object
651
-		 * @param string $code code to represent using QRcode
652
-		 * @param string $eclevel error level: <ul><li>L : About 7% or less errors can be corrected.</li><li>M : About 15% or less errors can be corrected.</li><li>Q : About 25% or less errors can be corrected.</li><li>H : About 30% or less errors can be corrected.</li></ul>
653
-		 * @access public
654
-		 * @since 1.0.000
655
-		 */
656
-		public function __construct($code, $eclevel = 'L') {
657
-			$barcode_array = array();
658
-			if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
659
-				return false;
660
-			}
661
-			// set error correction level
662
-			$this->level = array_search($eclevel, array('L', 'M', 'Q', 'H'));
663
-			if ($this->level === false) {
664
-				$this->level = QR_ECLEVEL_L;
665
-			}
666
-			if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) {
667
-				return false;
668
-			}
669
-			if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) {
670
-				return false;
671
-			}
672
-			$this->items = array();
673
-			$this->encodeString($code);
674
-			$qrTab = $this->binarize($this->data);
675
-			$size = count($qrTab);
676
-			$barcode_array['num_rows'] = $size;
677
-			$barcode_array['num_cols'] = $size;
678
-			$barcode_array['bcode'] = array();
679
-			foreach ($qrTab as $line) {
680
-				$arrAdd = array();
681
-				foreach (str_split($line) as $char) {
682
-					$arrAdd[] = ($char=='1')?1:0;
683
-				}
684
-				$barcode_array['bcode'][] = $arrAdd;
685
-			}
686
-			$this->barcode_array = $barcode_array;
687
-		}
688
-
689
-		/**
690
-		 * Returns a barcode array which is readable by TCPDF
691
-		 * @return array barcode array readable by TCPDF;
692
-		 * @access public
693
-		 */
694
-		public function getBarcodeArray() {
695
-			return $this->barcode_array;
696
-		}
697
-
698
-		/**
699
-		 * Convert the frame in binary form
700
-		 * @param array $frame array to binarize
701
-		 * @return array frame in binary form
702
-		 */
703
-		protected function binarize($frame) {
704
-			$len = count($frame);
705
-			// the frame is square (width = height)
706
-			foreach ($frame as &$frameLine) {
707
-				for ($i=0; $i<$len; $i++) {
708
-					$frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
709
-				}
710
-			}
711
-			return $frame;
712
-		}
713
-
714
-		/**
715
-		 * Encode the input string to QR code
716
-		 * @param string $string input string to encode
717
-		 */
718
-		protected function encodeString($string) {
719
-			$this->dataStr = $string;
720
-			if (!$this->casesensitive) {
721
-				$this->toUpper();
722
-			}
723
-			$ret = $this->splitString();
724
-			if ($ret < 0) {
725
-				return NULL;
726
-			}
727
-			$this->encodeMask(-1);
728
-		}
729
-
730
-		/**
731
-		 * Encode mask
732
-		 * @param int $mask masking mode
733
-		 */
734
-		protected function encodeMask($mask) {
735
-			$spec = array(0, 0, 0, 0, 0);
736
-			$this->datacode = $this->getByteStream($this->items);
737
-			if (is_null($this->datacode)) {
738
-				return NULL;
739
-			}
740
-			$spec = $this->getEccSpec($this->version, $this->level, $spec);
741
-			$this->b1 = $this->rsBlockNum1($spec);
742
-			$this->dataLength = $this->rsDataLength($spec);
743
-			$this->eccLength = $this->rsEccLength($spec);
744
-			$this->ecccode = array_fill(0, $this->eccLength, 0);
745
-			$this->blocks = $this->rsBlockNum($spec);
746
-			$ret = $this->init($spec);
747
-			if ($ret < 0) {
748
-				return NULL;
749
-			}
750
-			$this->count = 0;
751
-			$this->width = $this->getWidth($this->version);
752
-			$this->frame = $this->newFrame($this->version);
753
-			$this->x = $this->width - 1;
754
-			$this->y = $this->width - 1;
755
-			$this->dir = -1;
756
-			$this->bit = -1;
757
-			// inteleaved data and ecc codes
758
-			for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) {
759
-				$code = $this->getCode();
760
-				$bit = 0x80;
761
-				for ($j=0; $j<8; $j++) {
762
-					$addr = $this->getNextPosition();
763
-					$this->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
764
-					$bit = $bit >> 1;
765
-				}
766
-			}
767
-			// remainder bits
768
-			$j = $this->getRemainder($this->version);
769
-			for ($i=0; $i<$j; $i++) {
770
-				$addr = $this->getNextPosition();
771
-				$this->setFrameAt($addr, 0x02);
772
-			}
773
-			// masking
774
-			$this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
775
-			if ($mask < 0) {
776
-				if (QR_FIND_BEST_MASK) {
777
-					$masked = $this->mask($this->width, $this->frame, $this->level);
778
-				} else {
779
-					$masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level);
780
-				}
781
-			} else {
782
-				$masked = $this->makeMask($this->width, $this->frame, $mask, $this->level);
783
-			}
784
-			if ($masked == NULL) {
785
-				return NULL;
786
-			}
787
-			$this->data = $masked;
788
-		}
789
-
790
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
791
-
792
-		// FrameFiller
793
-
794
-		/**
795
-		 * Set frame value at specified position
796
-		 * @param array $at x,y position
797
-		 * @param int $val value of the character to set
798
-		 */
799
-		protected function setFrameAt($at, $val) {
800
-			$this->frame[$at['y']][$at['x']] = chr($val);
801
-		}
802
-
803
-		/**
804
-		 * Get frame value at specified position
805
-		 * @param array $at x,y position
806
-		 * @return value at specified position
807
-		 */
808
-		protected function getFrameAt($at) {
809
-			return ord($this->frame[$at['y']][$at['x']]);
810
-		}
811
-
812
-		/**
813
-		 * Return the next frame position
814
-		 * @return array of x,y coordinates
815
-		 */
816
-		protected function getNextPosition() {
817
-			do {
818
-				if ($this->bit == -1) {
819
-					$this->bit = 0;
820
-					return array('x'=>$this->x, 'y'=>$this->y);
821
-				}
822
-				$x = $this->x;
823
-				$y = $this->y;
824
-				$w = $this->width;
825
-				if ($this->bit == 0) {
826
-					$x--;
827
-					$this->bit++;
828
-				} else {
829
-					$x++;
830
-					$y += $this->dir;
831
-					$this->bit--;
832
-				}
833
-				if ($this->dir < 0) {
834
-					if ($y < 0) {
835
-						$y = 0;
836
-						$x -= 2;
837
-						$this->dir = 1;
838
-						if ($x == 6) {
839
-							$x--;
840
-							$y = 9;
841
-						}
842
-					}
843
-				} else {
844
-					if ($y == $w) {
845
-						$y = $w - 1;
846
-						$x -= 2;
847
-						$this->dir = -1;
848
-						if ($x == 6) {
849
-							$x--;
850
-							$y -= 8;
851
-						}
852
-					}
853
-				}
854
-				if (($x < 0) OR ($y < 0)) {
855
-					return NULL;
856
-				}
857
-				$this->x = $x;
858
-				$this->y = $y;
859
-			} while(ord($this->frame[$y][$x]) & 0x80);
860
-			return array('x'=>$x, 'y'=>$y);
861
-		}
862
-
863
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
864
-
865
-		// QRrawcode
866
-
867
-		/**
868
-		 * Initialize code.
869
-		 * @param array $spec array of ECC specification
870
-		 * @return 0 in case of success, -1 in case of error
871
-		 */
872
-		protected function init($spec) {
873
-			$dl = $this->rsDataCodes1($spec);
874
-			$el = $this->rsEccCodes1($spec);
875
-			$rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
876
-			$blockNo = 0;
877
-			$dataPos = 0;
878
-			$eccPos = 0;
879
-			$endfor = $this->rsBlockNum1($spec);
880
-			for ($i=0; $i < $endfor; ++$i) {
881
-				$ecc = array_slice($this->ecccode, $eccPos);
882
-				$this->rsblocks[$blockNo] = array();
883
-				$this->rsblocks[$blockNo]['dataLength'] = $dl;
884
-				$this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
885
-				$this->rsblocks[$blockNo]['eccLength'] = $el;
886
-				$ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
887
-				$this->rsblocks[$blockNo]['ecc'] = $ecc;
888
-				$this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
889
-				$dataPos += $dl;
890
-				$eccPos += $el;
891
-				$blockNo++;
892
-			}
893
-			if ($this->rsBlockNum2($spec) == 0) {
894
-				return 0;
895
-			}
896
-			$dl = $this->rsDataCodes2($spec);
897
-			$el = $this->rsEccCodes2($spec);
898
-			$rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
899
-			if ($rs == NULL) {
900
-				return -1;
901
-			}
902
-			$endfor = $this->rsBlockNum2($spec);
903
-			for ($i=0; $i < $endfor; ++$i) {
904
-				$ecc = array_slice($this->ecccode, $eccPos);
905
-				$this->rsblocks[$blockNo] = array();
906
-				$this->rsblocks[$blockNo]['dataLength'] = $dl;
907
-				$this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
908
-				$this->rsblocks[$blockNo]['eccLength'] = $el;
909
-				$ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
910
-				$this->rsblocks[$blockNo]['ecc'] = $ecc;
911
-				$this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
912
-				$dataPos += $dl;
913
-				$eccPos += $el;
914
-				$blockNo++;
915
-			}
916
-			return 0;
917
-		}
918
-
919
-		/**
920
-		 * Return Reed-Solomon block code.
921
-		 * @return array rsblocks
922
-		 */
923
-		protected function getCode() {
924
-			if ($this->count < $this->dataLength) {
925
-				$row = $this->count % $this->blocks;
926
-				$col = $this->count / $this->blocks;
927
-				if ($col >= $this->rsblocks[0]['dataLength']) {
928
-					$row += $this->b1;
929
-				}
930
-				$ret = $this->rsblocks[$row]['data'][$col];
931
-			} elseif ($this->count < $this->dataLength + $this->eccLength) {
932
-				$row = ($this->count - $this->dataLength) % $this->blocks;
933
-				$col = ($this->count - $this->dataLength) / $this->blocks;
934
-				$ret = $this->rsblocks[$row]['ecc'][$col];
935
-			} else {
936
-				return 0;
937
-			}
938
-			$this->count++;
939
-			return $ret;
940
-		}
941
-
942
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
943
-
944
-		// QRmask
945
-
946
-		/**
947
-		 * Write Format Information on frame and returns the number of black bits
948
-		 * @param int $width frame width
949
-		 * @param array $frame frame
950
-		 * @param array $mask masking mode
951
-		 * @param int $level error correction level
952
-		 * @return int blacks
953
-		 */
954
-		 protected function writeFormatInformation($width, &$frame, $mask, $level) {
955
-			$blacks = 0;
956
-			$format =  $this->getFormatInfo($mask, $level);
957
-			for ($i=0; $i<8; ++$i) {
958
-				if ($format & 1) {
959
-					$blacks += 2;
960
-					$v = 0x85;
961
-				} else {
962
-					$v = 0x84;
963
-				}
964
-				$frame[8][$width - 1 - $i] = chr($v);
965
-				if ($i < 6) {
966
-					$frame[$i][8] = chr($v);
967
-				} else {
968
-					$frame[$i + 1][8] = chr($v);
969
-				}
970
-				$format = $format >> 1;
971
-			}
972
-			for ($i=0; $i<7; ++$i) {
973
-			if ($format & 1) {
974
-				$blacks += 2;
975
-				$v = 0x85;
976
-			} else {
977
-				$v = 0x84;
978
-			}
979
-			$frame[$width - 7 + $i][8] = chr($v);
980
-			if ($i == 0) {
981
-				$frame[8][7] = chr($v);
982
-			} else {
983
-				$frame[8][6 - $i] = chr($v);
984
-			}
985
-			$format = $format >> 1;
986
-			}
987
-			return $blacks;
988
-		}
989
-
990
-		/**
991
-		 * mask0
992
-		 * @param int $x X position
993
-		 * @param int $y Y position
994
-		 * @return int mask
995
-		 */
996
-		 protected function mask0($x, $y) {
997
-			return ($x + $y) & 1;
998
-		}
999
-
1000
-		/**
1001
-		 * mask1
1002
-		 * @param int $x X position
1003
-		 * @param int $y Y position
1004
-		 * @return int mask
1005
-		 */
1006
-		 protected function mask1($x, $y) {
1007
-			return ($y & 1);
1008
-		}
1009
-
1010
-		/**
1011
-		 * mask2
1012
-		 * @param int $x X position
1013
-		 * @param int $y Y position
1014
-		 * @return int mask
1015
-		 */
1016
-		 protected function mask2($x, $y) {
1017
-			return ($x % 3);
1018
-		}
1019
-
1020
-		/**
1021
-		 * mask3
1022
-		 * @param int $x X position
1023
-		 * @param int $y Y position
1024
-		 * @return int mask
1025
-		 */
1026
-		 protected function mask3($x, $y) {
1027
-			return ($x + $y) % 3;
1028
-		}
1029
-
1030
-		/**
1031
-		 * mask4
1032
-		 * @param int $x X position
1033
-		 * @param int $y Y position
1034
-		 * @return int mask
1035
-		 */
1036
-		 protected function mask4($x, $y) {
1037
-			return (((int)($y / 2)) + ((int)($x / 3))) & 1;
1038
-		}
1039
-
1040
-		/**
1041
-		 * mask5
1042
-		 * @param int $x X position
1043
-		 * @param int $y Y position
1044
-		 * @return int mask
1045
-		 */
1046
-		 protected function mask5($x, $y) {
1047
-			return (($x * $y) & 1) + ($x * $y) % 3;
1048
-		}
1049
-
1050
-		/**
1051
-		 * mask6
1052
-		 * @param int $x X position
1053
-		 * @param int $y Y position
1054
-		 * @return int mask
1055
-		 */
1056
-		 protected function mask6($x, $y) {
1057
-			return ((($x * $y) & 1) + ($x * $y) % 3) & 1;
1058
-		}
1059
-
1060
-		/**
1061
-		 * mask7
1062
-		 * @param int $x X position
1063
-		 * @param int $y Y position
1064
-		 * @return int mask
1065
-		 */
1066
-		 protected function mask7($x, $y) {
1067
-			return ((($x * $y) % 3) + (($x + $y) & 1)) & 1;
1068
-		}
1069
-
1070
-		/**
1071
-		 * Return bitmask
1072
-		 * @param int $maskNo mask number
1073
-		 * @param int $width width
1074
-		 * @param array $frame frame
1075
-		 * @return array bitmask
1076
-		 */
1077
-		protected function generateMaskNo($maskNo, $width, $frame) {
1078
-			$bitMask = array_fill(0, $width, array_fill(0, $width, 0));
1079
-			for ($y=0; $y<$width; ++$y) {
1080
-				for ($x=0; $x<$width; ++$x) {
1081
-					if (ord($frame[$y][$x]) & 0x80) {
1082
-						$bitMask[$y][$x] = 0;
1083
-					} else {
1084
-						$maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
1085
-						$bitMask[$y][$x] = ($maskFunc == 0)?1:0;
1086
-					}
1087
-				}
1088
-			}
1089
-			return $bitMask;
1090
-		}
1091
-
1092
-		/**
1093
-		 * makeMaskNo
1094
-		 * @param int $maskNo
1095
-		 * @param int $width
1096
-		 * @param int $s
1097
-		 * @param int $d
1098
-		 * @param boolean $maskGenOnly
1099
-		 * @return int b
1100
-		 */
1101
-		 protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) {
1102
-			$b = 0;
1103
-			$bitMask = array();
1104
-			$bitMask = $this->generateMaskNo($maskNo, $width, $s);
1105
-			if ($maskGenOnly) {
1106
-				return;
1107
-			}
1108
-			$d = $s;
1109
-			for ($y=0; $y<$width; ++$y) {
1110
-				for ($x=0; $x<$width; ++$x) {
1111
-					if ($bitMask[$y][$x] == 1) {
1112
-						$d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
1113
-					}
1114
-					$b += (int)(ord($d[$y][$x]) & 1);
1115
-				}
1116
-			}
1117
-			return $b;
1118
-		}
1119
-
1120
-		/**
1121
-		 * makeMask
1122
-		 * @param int $width
1123
-		 * @param array $frame
1124
-		 * @param int $maskNo
1125
-		 * @param int $level
1126
-		 * @return array mask
1127
-		 */
1128
-		 protected function makeMask($width, $frame, $maskNo, $level) {
1129
-			$masked = array_fill(0, $width, str_repeat("\0", $width));
1130
-			$this->makeMaskNo($maskNo, $width, $frame, $masked);
1131
-			$this->writeFormatInformation($width, $masked, $maskNo, $level);
1132
-			return $masked;
1133
-		}
1134
-
1135
-		/**
1136
-		 * calcN1N3
1137
-		 * @param int $length
1138
-		 * @return int demerit
1139
-		 */
1140
-		 protected function calcN1N3($length) {
1141
-			$demerit = 0;
1142
-			for ($i=0; $i<$length; ++$i) {
1143
-				if ($this->runLength[$i] >= 5) {
1144
-					$demerit += (N1 + ($this->runLength[$i] - 5));
1145
-				}
1146
-				if ($i & 1) {
1147
-					if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) {
1148
-						$fact = (int)($this->runLength[$i] / 3);
1149
-						if (($this->runLength[$i-2] == $fact)
1150
-							AND ($this->runLength[$i-1] == $fact)
1151
-							AND ($this->runLength[$i+1] == $fact)
1152
-							AND ($this->runLength[$i+2] == $fact)) {
1153
-							if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) {
1154
-								$demerit += N3;
1155
-							} elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) {
1156
-								$demerit += N3;
1157
-							}
1158
-						}
1159
-					}
1160
-				}
1161
-			}
1162
-			return $demerit;
1163
-		}
1164
-
1165
-		/**
1166
-		 * evaluateSymbol
1167
-		 * @param int $width
1168
-		 * @param array $frame
1169
-		 * @return int demerit
1170
-		 */
1171
-		 protected function evaluateSymbol($width, $frame) {
1172
-			$head = 0;
1173
-			$demerit = 0;
1174
-			for ($y=0; $y<$width; ++$y) {
1175
-				$head = 0;
1176
-				$this->runLength[0] = 1;
1177
-				$frameY = $frame[$y];
1178
-				if ($y > 0) {
1179
-					$frameYM = $frame[$y-1];
1180
-				}
1181
-				for ($x=0; $x<$width; ++$x) {
1182
-					if (($x > 0) AND ($y > 0)) {
1183
-						$b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
1184
-						$w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
1185
-						if (($b22 | ($w22 ^ 1)) & 1) {
1186
-							$demerit += N2;
1187
-						}
1188
-					}
1189
-					if (($x == 0) AND (ord($frameY[$x]) & 1)) {
1190
-						$this->runLength[0] = -1;
1191
-						$head = 1;
1192
-						$this->runLength[$head] = 1;
1193
-					} elseif ($x > 0) {
1194
-						if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
1195
-							$head++;
1196
-							$this->runLength[$head] = 1;
1197
-						} else {
1198
-							$this->runLength[$head]++;
1199
-						}
1200
-					}
1201
-				}
1202
-				$demerit += $this->calcN1N3($head+1);
1203
-			}
1204
-			for ($x=0; $x<$width; ++$x) {
1205
-				$head = 0;
1206
-				$this->runLength[0] = 1;
1207
-				for ($y=0; $y<$width; ++$y) {
1208
-					if (($y == 0) AND (ord($frame[$y][$x]) & 1)) {
1209
-						$this->runLength[0] = -1;
1210
-						$head = 1;
1211
-						$this->runLength[$head] = 1;
1212
-					} elseif ($y > 0) {
1213
-						if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
1214
-							$head++;
1215
-							$this->runLength[$head] = 1;
1216
-						} else {
1217
-							$this->runLength[$head]++;
1218
-						}
1219
-					}
1220
-				}
1221
-				$demerit += $this->calcN1N3($head+1);
1222
-			}
1223
-			return $demerit;
1224
-		}
1225
-
1226
-		/**
1227
-		 * mask
1228
-		 * @param int $width
1229
-		 * @param array $frame
1230
-		 * @param int $level
1231
-		 * @return array best mask
1232
-		 */
1233
-		 protected function mask($width, $frame, $level) {
1234
-			$minDemerit = PHP_INT_MAX;
1235
-			$bestMaskNum = 0;
1236
-			$bestMask = array();
1237
-			$checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7);
1238
-			if (QR_FIND_FROM_RANDOM !== false) {
1239
-				$howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9);
1240
-				for ($i = 0; $i <  $howManuOut; ++$i) {
1241
-					$remPos = rand (0, count($checked_masks)-1);
1242
-					unset($checked_masks[$remPos]);
1243
-					$checked_masks = array_values($checked_masks);
1244
-				}
1245
-			}
1246
-			$bestMask = $frame;
1247
-			foreach ($checked_masks as $i) {
1248
-				$mask = array_fill(0, $width, str_repeat("\0", $width));
1249
-				$demerit = 0;
1250
-				$blacks = 0;
1251
-				$blacks  = $this->makeMaskNo($i, $width, $frame, $mask);
1252
-				$blacks += $this->writeFormatInformation($width, $mask, $i, $level);
1253
-				$blacks  = (int)(100 * $blacks / ($width * $width));
1254
-				$demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
1255
-				$demerit += $this->evaluateSymbol($width, $mask);
1256
-				if ($demerit < $minDemerit) {
1257
-					$minDemerit = $demerit;
1258
-					$bestMask = $mask;
1259
-					$bestMaskNum = $i;
1260
-				}
1261
-			}
1262
-			return $bestMask;
1263
-		}
1264
-
1265
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
1266
-
1267
-		// QRsplit
1268
-
1269
-		/**
1270
-		 * Return true if the character at specified position is a number
1271
-		 * @param string $str string
1272
-		 * @param int $pos characted position
1273
-		 * @return boolean true of false
1274
-		 */
1275
-		 protected function isdigitat($str, $pos) {
1276
-			if ($pos >= strlen($str)) {
1277
-				return false;
1278
-			}
1279
-			return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
1280
-		}
1281
-
1282
-		/**
1283
-		 * Return true if the character at specified position is an alphanumeric character
1284
-		 * @param string $str string
1285
-		 * @param int $pos characted position
1286
-		 * @return boolean true of false
1287
-		 */
1288
-		 protected function isalnumat($str, $pos) {
1289
-			if ($pos >= strlen($str)) {
1290
-				return false;
1291
-			}
1292
-			return ($this->lookAnTable(ord($str[$pos])) >= 0);
1293
-		}
1294
-
1295
-		/**
1296
-		 * identifyMode
1297
-		 * @param int $pos
1298
-		 * @return int mode
1299
-		 */
1300
-		 protected function identifyMode($pos) {
1301
-			if ($pos >= strlen($this->dataStr)) {
1302
-				return QR_MODE_NL;
1303
-			}
1304
-			$c = $this->dataStr[$pos];
1305
-			if ($this->isdigitat($this->dataStr, $pos)) {
1306
-				return QR_MODE_NM;
1307
-			} elseif ($this->isalnumat($this->dataStr, $pos)) {
1308
-				return QR_MODE_AN;
1309
-			} elseif ($this->hint == QR_MODE_KJ) {
1310
-				if ($pos+1 < strlen($this->dataStr)) {
1311
-					$d = $this->dataStr[$pos+1];
1312
-					$word = (ord($c) << 8) | ord($d);
1313
-					if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) {
1314
-						return QR_MODE_KJ;
1315
-					}
1316
-				}
1317
-			}
1318
-			return QR_MODE_8B;
1319
-		}
1320
-
1321
-		/**
1322
-		 * eatNum
1323
-		 * @return int run
1324
-		 */
1325
-		 protected function eatNum() {
1326
-			$ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1327
-			$p = 0;
1328
-			while($this->isdigitat($this->dataStr, $p)) {
1329
-				$p++;
1330
-			}
1331
-			$run = $p;
1332
-			$mode = $this->identifyMode($p);
1333
-			if ($mode == QR_MODE_8B) {
1334
-				$dif = $this->estimateBitsModeNum($run) + 4 + $ln
1335
-				+ $this->estimateBitsMode8(1)         // + 4 + l8
1336
-				- $this->estimateBitsMode8($run + 1); // - 4 - l8
1337
-				if ($dif > 0) {
1338
-					return $this->eat8();
1339
-				}
1340
-			}
1341
-			if ($mode == QR_MODE_AN) {
1342
-				$dif = $this->estimateBitsModeNum($run) + 4 + $ln
1343
-				+ $this->estimateBitsModeAn(1)        // + 4 + la
1344
-				- $this->estimateBitsModeAn($run + 1);// - 4 - la
1345
-				if ($dif > 0) {
1346
-					return $this->eatAn();
1347
-				}
1348
-			}
1349
-			$this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr));
1350
-			return $run;
1351
-		}
1352
-
1353
-		/**
1354
-		 * eatAn
1355
-		 * @return int run
1356
-		 */
1357
-		 protected function eatAn() {
1358
-			$la = $this->lengthIndicator(QR_MODE_AN,  $this->version);
1359
-			$ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1360
-			$p = 0;
1361
-			while($this->isalnumat($this->dataStr, $p)) {
1362
-				if ($this->isdigitat($this->dataStr, $p)) {
1363
-					$q = $p;
1364
-					while($this->isdigitat($this->dataStr, $q)) {
1365
-						$q++;
1366
-					}
1367
-					$dif = $this->estimateBitsModeAn($p) // + 4 + la
1368
-					+ $this->estimateBitsModeNum($q - $p) + 4 + $ln
1369
-					- $this->estimateBitsModeAn($q); // - 4 - la
1370
-					if ($dif < 0) {
1371
-						break;
1372
-					} else {
1373
-						$p = $q;
1374
-					}
1375
-				} else {
1376
-					$p++;
1377
-				}
1378
-			}
1379
-			$run = $p;
1380
-			if (!$this->isalnumat($this->dataStr, $p)) {
1381
-				$dif = $this->estimateBitsModeAn($run) + 4 + $la
1382
-				+ $this->estimateBitsMode8(1) // + 4 + l8
1383
-				- $this->estimateBitsMode8($run + 1); // - 4 - l8
1384
-				if ($dif > 0) {
1385
-					return $this->eat8();
1386
-				}
1387
-			}
1388
-			$this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr));
1389
-			return $run;
1390
-		}
1391
-
1392
-		/**
1393
-		 * eatKanji
1394
-		 * @return int run
1395
-		 */
1396
-		 protected function eatKanji() {
1397
-			$p = 0;
1398
-			while($this->identifyMode($p) == QR_MODE_KJ) {
1399
-				$p += 2;
1400
-			}
1401
-			$this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr));
1402
-			return $p;
1403
-		}
1404
-
1405
-		/**
1406
-		 * eat8
1407
-		 * @return int run
1408
-		 */
1409
-		 protected function eat8() {
1410
-			$la = $this->lengthIndicator(QR_MODE_AN, $this->version);
1411
-			$ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1412
-			$p = 1;
1413
-			$dataStrLen = strlen($this->dataStr);
1414
-			while($p < $dataStrLen) {
1415
-				$mode = $this->identifyMode($p);
1416
-				if ($mode == QR_MODE_KJ) {
1417
-					break;
1418
-				}
1419
-				if ($mode == QR_MODE_NM) {
1420
-					$q = $p;
1421
-					while($this->isdigitat($this->dataStr, $q)) {
1422
-						$q++;
1423
-					}
1424
-					$dif = $this->estimateBitsMode8($p) // + 4 + l8
1425
-					+ $this->estimateBitsModeNum($q - $p) + 4 + $ln
1426
-					- $this->estimateBitsMode8($q); // - 4 - l8
1427
-					if ($dif < 0) {
1428
-						break;
1429
-					} else {
1430
-						$p = $q;
1431
-					}
1432
-				} elseif ($mode == QR_MODE_AN) {
1433
-					$q = $p;
1434
-					while($this->isalnumat($this->dataStr, $q)) {
1435
-						$q++;
1436
-					}
1437
-					$dif = $this->estimateBitsMode8($p)  // + 4 + l8
1438
-					+ $this->estimateBitsModeAn($q - $p) + 4 + $la
1439
-					- $this->estimateBitsMode8($q); // - 4 - l8
1440
-					if ($dif < 0) {
1441
-						break;
1442
-					} else {
1443
-						$p = $q;
1444
-					}
1445
-				} else {
1446
-					$p++;
1447
-				}
1448
-			}
1449
-			$run = $p;
1450
-			$this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr));
1451
-			return $run;
1452
-		}
1453
-
1454
-		/**
1455
-		 * splitString
1456
-		 */
1457
-		 protected function splitString() {
1458
-			while (strlen($this->dataStr) > 0) {
1459
-				if ($this->dataStr == '') {
1460
-					return 0;
1461
-				}
1462
-				$mode = $this->identifyMode(0);
1463
-				switch ($mode) {
1464
-					case QR_MODE_NM: {
1465
-						$length = $this->eatNum();
1466
-						break;
1467
-					}
1468
-					case QR_MODE_AN: {
1469
-						$length = $this->eatAn();
1470
-						break;
1471
-					}
1472
-					case QR_MODE_KJ: {
1473
-						if ($this->hint == QR_MODE_KJ) {
1474
-							$length = $this->eatKanji();
1475
-						} else {
1476
-							$length = $this->eat8();
1477
-						}
1478
-						break;
1479
-					}
1480
-					default: {
1481
-						$length = $this->eat8();
1482
-						break;
1483
-					}
1484
-				}
1485
-				if ($length == 0) {
1486
-					return 0;
1487
-				}
1488
-				if ($length < 0) {
1489
-					return -1;
1490
-				}
1491
-				$this->dataStr = substr($this->dataStr, $length);
1492
-			}
1493
-		}
1494
-
1495
-		/**
1496
-		 * toUpper
1497
-		 */
1498
-		 protected function toUpper() {
1499
-			$stringLen = strlen($this->dataStr);
1500
-			$p = 0;
1501
-			while ($p < $stringLen) {
1502
-				$mode = $this->identifyMode(substr($this->dataStr, $p));
1503
-				if ($mode == QR_MODE_KJ) {
1504
-					$p += 2;
1505
-				} else {
1506
-					if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) {
1507
-						$this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
1508
-					}
1509
-					$p++;
1510
-				}
1511
-			}
1512
-			return $this->dataStr;
1513
-		}
1514
-
1515
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
1516
-
1517
-		// QRinputItem
1518
-
1519
-		/**
1520
-		 * newInputItem
1521
-		 * @param int $mode
1522
-		 * @param int $size
1523
-		 * @param array $data
1524
-		 * @param array $bstream
1525
-		 * @return array input item
1526
-		 */
1527
-		 protected function newInputItem($mode, $size, $data, $bstream=null) {
1528
-			$setData = array_slice($data, 0, $size);
1529
-			if (count($setData) < $size) {
1530
-				$setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0));
1531
-			}
1532
-			if (!$this->check($mode, $size, $setData)) {
1533
-				return NULL;
1534
-			}
1535
-			$inputitem = array();
1536
-			$inputitem['mode'] = $mode;
1537
-			$inputitem['size'] = $size;
1538
-			$inputitem['data'] = $setData;
1539
-			$inputitem['bstream'] = $bstream;
1540
-			return $inputitem;
1541
-		}
1542
-
1543
-		/**
1544
-		 * encodeModeNum
1545
-		 * @param array $inputitem
1546
-		 * @param int $version
1547
-		 * @return array input item
1548
-		 */
1549
-		 protected function encodeModeNum($inputitem, $version) {
1550
-			$words = (int)($inputitem['size'] / 3);
1551
-			$inputitem['bstream'] = array();
1552
-			$val = 0x1;
1553
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
1554
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']);
1555
-			for ($i=0; $i < $words; ++$i) {
1556
-				$val  = (ord($inputitem['data'][$i*3  ]) - ord('0')) * 100;
1557
-				$val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10;
1558
-				$val += (ord($inputitem['data'][$i*3+2]) - ord('0'));
1559
-				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val);
1560
-			}
1561
-			if ($inputitem['size'] - $words * 3 == 1) {
1562
-				$val = ord($inputitem['data'][$words*3]) - ord('0');
1563
-				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
1564
-			} elseif (($inputitem['size'] - ($words * 3)) == 2) {
1565
-				$val  = (ord($inputitem['data'][$words*3  ]) - ord('0')) * 10;
1566
-				$val += (ord($inputitem['data'][$words*3+1]) - ord('0'));
1567
-				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val);
1568
-			}
1569
-			return $inputitem;
1570
-		}
1571
-
1572
-		/**
1573
-		 * encodeModeAn
1574
-		 * @param array $inputitem
1575
-		 * @param int $version
1576
-		 * @return array input item
1577
-		 */
1578
-		 protected function encodeModeAn($inputitem, $version) {
1579
-			$words = (int)($inputitem['size'] / 2);
1580
-			$inputitem['bstream'] = array();
1581
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02);
1582
-			$inputitem['bstream'] = $this->appendNum(v, $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']);
1583
-			for ($i=0; $i < $words; ++$i) {
1584
-				$val  = (int)$this->lookAnTable(ord($inputitem['data'][$i*2  ])) * 45;
1585
-				$val += (int)$this->lookAnTable(ord($inputitem['data'][$i*2+1]));
1586
-				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val);
1587
-			}
1588
-			if ($inputitem['size'] & 1) {
1589
-				$val = $this->lookAnTable(ord($inputitem['data'][($words * 2)]));
1590
-				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val);
1591
-			}
1592
-			return $inputitem;
1593
-		}
1594
-
1595
-		/**
1596
-		 * encodeMode8
1597
-		 * @param array $inputitem
1598
-		 * @param int $version
1599
-		 * @return array input item
1600
-		 */
1601
-		 protected function encodeMode8($inputitem, $version) {
1602
-			$inputitem['bstream'] = array();
1603
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4);
1604
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']);
1605
-			for ($i=0; $i < $inputitem['size']; ++$i) {
1606
-				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i]));
1607
-			}
1608
-			return $inputitem;
1609
-		}
1610
-
1611
-		/**
1612
-		 * encodeModeKanji
1613
-		 * @param array $inputitem
1614
-		 * @param int $version
1615
-		 * @return array input item
1616
-		 */
1617
-		 protected function encodeModeKanji($inputitem, $version) {
1618
-			$inputitem['bstream'] = array();
1619
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8);
1620
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2));
1621
-			for ($i=0; $i<$inputitem['size']; $i+=2) {
1622
-				$val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]);
1623
-				if ($val <= 0x9ffc) {
1624
-					$val -= 0x8140;
1625
-				} else {
1626
-					$val -= 0xc140;
1627
-				}
1628
-				$h = ($val >> 8) * 0xc0;
1629
-				$val = ($val & 0xff) + $h;
1630
-				$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val);
1631
-			}
1632
-			return $inputitem;
1633
-		}
1634
-
1635
-		/**
1636
-		 * encodeModeStructure
1637
-		 * @param array $inputitem
1638
-		 * @return array input item
1639
-		 */
1640
-		 protected function encodeModeStructure($inputitem) {
1641
-			$inputitem['bstream'] = array();
1642
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03);
1643
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1);
1644
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1);
1645
-			$inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2]));
1646
-			return $inputitem;
1647
-		}
1648
-
1649
-		/**
1650
-		 * encodeBitStream
1651
-		 * @param array $inputitem
1652
-		 * @param int $version
1653
-		 * @return array input item
1654
-		 */
1655
-		 protected function encodeBitStream($inputitem, $version) {
1656
-			$inputitem['bstream'] = array();
1657
-			$words = $this->maximumWords($inputitem['mode'], $version);
1658
-			if ($inputitem['size'] > $words) {
1659
-				$st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']);
1660
-				$st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words));
1661
-				$st1 = $this->encodeBitStream($st1, $version);
1662
-				$st2 = $this->encodeBitStream($st2, $version);
1663
-				$inputitem['bstream'] = array();
1664
-				$inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']);
1665
-				$inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']);
1666
-			} else {
1667
-				switch($inputitem['mode']) {
1668
-					case QR_MODE_NM: {
1669
-						$inputitem = $this->encodeModeNum($inputitem, $version);
1670
-						break;
1671
-					}
1672
-					case QR_MODE_AN: {
1673
-						$inputitem = $this->encodeModeAn($inputitem, $version);
1674
-						break;
1675
-					}
1676
-					case QR_MODE_8B: {
1677
-						$inputitem = $this->encodeMode8($inputitem, $version);
1678
-						break;
1679
-					}
1680
-					case QR_MODE_KJ: {
1681
-						$inputitem = $this->encodeModeKanji($inputitem, $version);
1682
-						break;
1683
-					}
1684
-					case QR_MODE_ST: {
1685
-						$inputitem = $this->encodeModeStructure($inputitem);
1686
-						break;
1687
-					}
1688
-					default: {
1689
-						break;
1690
-					}
1691
-				}
1692
-			}
1693
-			return $inputitem;
1694
-		}
1695
-
1696
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
1697
-
1698
-		// QRinput
1699
-
1700
-		/**
1701
-		 * Append data to an input object.
1702
-		 * The data is copied and appended to the input object.
1703
-		 * @param array items input items
1704
-		 * @param int $mode encoding mode.
1705
-		 * @param int $size size of data (byte).
1706
-		 * @param array $data array of input data.
1707
-		 * @return items
1708
-		 *
1709
-		 */
1710
-		protected function appendNewInputItem($items, $mode, $size, $data) {
1711
-			$items[] = $this->newInputItem($mode, $size, $data);
1712
-			return $items;
1713
-		}
1714
-
1715
-		/**
1716
-		 * insertStructuredAppendHeader
1717
-		 * @param array $items
1718
-		 * @param int $size
1719
-		 * @param int $index
1720
-		 * @param int $parity
1721
-		 * @return array items
1722
-		 */
1723
-		 protected function insertStructuredAppendHeader($items, $size, $index, $parity) {
1724
-			if ($size > MAX_STRUCTURED_SYMBOLS) {
1725
-				return -1;
1726
-			}
1727
-			if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) {
1728
-				return -1;
1729
-			}
1730
-			$buf = array($size, $index, $parity);
1731
-			$entry = $this->newInputItem(QR_MODE_ST, 3, buf);
1732
-			array_unshift($items, $entry);
1733
-			return $items;
1734
-		}
1735
-
1736
-		/**
1737
-		 * calcParity
1738
-		 * @param array $items
1739
-		 * @return int parity
1740
-		 */
1741
-		 protected function calcParity($items) {
1742
-			$parity = 0;
1743
-			foreach ($items as $item) {
1744
-				if ($item['mode'] != QR_MODE_ST) {
1745
-					for ($i=$item['size']-1; $i>=0; --$i) {
1746
-						$parity ^= $item['data'][$i];
1747
-					}
1748
-				}
1749
-			}
1750
-			return $parity;
1751
-		}
1752
-
1753
-		/**
1754
-		 * checkModeNum
1755
-		 * @param int $size
1756
-		 * @param array $data
1757
-		 * @return boolean true or false
1758
-		 */
1759
-		 protected function checkModeNum($size, $data) {
1760
-			for ($i=0; $i<$size; ++$i) {
1761
-				if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){
1762
-					return false;
1763
-				}
1764
-			}
1765
-			return true;
1766
-		}
1767
-
1768
-		/**
1769
-		 * estimateBitsModeNum
1770
-		 * @param int $size
1771
-		 * @return int number of bits
1772
-		 */
1773
-		 protected function estimateBitsModeNum($size) {
1774
-			$w = (int)$size / 3;
1775
-			$bits = $w * 10;
1776
-			switch($size - $w * 3) {
1777
-				case 1: {
1778
-					$bits += 4;
1779
-					break;
1780
-				}
1781
-				case 2: {
1782
-					$bits += 7;
1783
-					break;
1784
-				}
1785
-				default: {
1786
-					break;
1787
-				}
1788
-			}
1789
-			return $bits;
1790
-		}
1791
-
1792
-		/**
1793
-		 * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19).
1794
-		 * @param int $c character value
1795
-		 * @return value
1796
-		 */
1797
-		protected function lookAnTable($c) {
1798
-			return (($c > 127)?-1:$this->anTable[$c]);
1799
-		}
1800
-
1801
-		/**
1802
-		 * checkModeAn
1803
-		 * @param int $size
1804
-		 * @param array $data
1805
-		 * @return boolean true or false
1806
-		 */
1807
-		 protected function checkModeAn($size, $data) {
1808
-			for ($i=0; $i<$size; ++$i) {
1809
-				if ($this->lookAnTable(ord($data[$i])) == -1) {
1810
-					return false;
1811
-				}
1812
-			}
1813
-			return true;
1814
-		}
1815
-
1816
-		/**
1817
-		 * estimateBitsModeAn
1818
-		 * @param int $size
1819
-		 * @return int number of bits
1820
-		 */
1821
-		 protected function estimateBitsModeAn($size) {
1822
-			$w = (int)($size / 2);
1823
-			$bits = $w * 11;
1824
-			if ($size & 1) {
1825
-				$bits += 6;
1826
-			}
1827
-			return $bits;
1828
-		}
1829
-
1830
-		/**
1831
-		 * estimateBitsMode8
1832
-		 * @param int $size
1833
-		 * @return int number of bits
1834
-		 */
1835
-		 protected function estimateBitsMode8($size) {
1836
-			return $size * 8;
1837
-		}
1838
-
1839
-		/**
1840
-		 * estimateBitsModeKanji
1841
-		 * @param int $size
1842
-		 * @return int number of bits
1843
-		 */
1844
-		 protected function estimateBitsModeKanji($size) {
1845
-			return (int)(($size / 2) * 13);
1846
-		}
1847
-
1848
-		/**
1849
-		 * checkModeKanji
1850
-		 * @param int $size
1851
-		 * @param array $data
1852
-		 * @return boolean true or false
1853
-		 */
1854
-		 protected function checkModeKanji($size, $data) {
1855
-			if ($size & 1) {
1856
-				return false;
1857
-			}
1858
-			for ($i=0; $i<$size; $i+=2) {
1859
-				$val = (ord($data[$i]) << 8) | ord($data[$i+1]);
1860
-				if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) {
1861
-					return false;
1862
-				}
1863
-			}
1864
-			return true;
1865
-		}
1866
-
1867
-		/**
1868
-		 * Validate the input data.
1869
-		 * @param int $mode encoding mode.
1870
-		 * @param int $size size of data (byte).
1871
-		 * @param array data data to validate
1872
-		 * @return boolean true in case of valid data, false otherwise
1873
-		 */
1874
-		protected function check($mode, $size, $data) {
1875
-			if ($size <= 0) {
1876
-				return false;
1877
-			}
1878
-			switch($mode) {
1879
-				case QR_MODE_NM: {
1880
-					return $this->checkModeNum($size, $data);
1881
-				}
1882
-				case QR_MODE_AN: {
1883
-					return $this->checkModeAn($size, $data);
1884
-				}
1885
-				case QR_MODE_KJ: {
1886
-					return $this->checkModeKanji($size, $data);
1887
-				}
1888
-				case QR_MODE_8B: {
1889
-					return true;
1890
-				}
1891
-				case QR_MODE_ST: {
1892
-					return true;
1893
-				}
1894
-				default: {
1895
-					break;
1896
-				}
1897
-			}
1898
-			return false;
1899
-		}
1900
-
1901
-		/**
1902
-		 * estimateBitStreamSize
1903
-		 * @param array $items
1904
-		 * @param int $version
1905
-		 * @return int bits
1906
-		 */
1907
-		 protected function estimateBitStreamSize($items, $version) {
1908
-			$bits = 0;
1909
-			if ($version == 0) {
1910
-				$version = 1;
1911
-			}
1912
-			foreach ($items as $item) {
1913
-				switch($item['mode']) {
1914
-					case QR_MODE_NM: {
1915
-						$bits = $this->estimateBitsModeNum($item['size']);
1916
-						break;
1917
-					}
1918
-					case QR_MODE_AN: {
1919
-						$bits = $this->estimateBitsModeAn($item['size']);
1920
-						break;
1921
-					}
1922
-					case QR_MODE_8B: {
1923
-						$bits = $this->estimateBitsMode8($item['size']);
1924
-						break;
1925
-					}
1926
-					case QR_MODE_KJ: {
1927
-						$bits = $this->estimateBitsModeKanji($item['size']);
1928
-						break;
1929
-					}
1930
-					case QR_MODE_ST: {
1931
-						return STRUCTURE_HEADER_BITS;
1932
-					}
1933
-					default: {
1934
-						return 0;
1935
-					}
1936
-				}
1937
-				$l = $this->lengthIndicator($item['mode'], $version);
1938
-				$m = 1 << $l;
1939
-				$num = (int)(($item['size'] + $m - 1) / $m);
1940
-				$bits += $num * (4 + $l);
1941
-			}
1942
-			return $bits;
1943
-		}
1944
-
1945
-		/**
1946
-		 * estimateVersion
1947
-		 * @param array $items
1948
-		 * @return int version
1949
-		 */
1950
-		 protected function estimateVersion($items) {
1951
-			$version = 0;
1952
-			$prev = 0;
1953
-			do {
1954
-				$prev = $version;
1955
-				$bits = $this->estimateBitStreamSize($items, $prev);
1956
-				$version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
1957
-				if ($version < 0) {
1958
-					return -1;
1959
-				}
1960
-			} while ($version > $prev);
1961
-			return $version;
1962
-		}
1963
-
1964
-		/**
1965
-		 * lengthOfCode
1966
-		 * @param int $mode
1967
-		 * @param int $version
1968
-		 * @param int $bits
1969
-		 * @return int size
1970
-		 */
1971
-		 protected function lengthOfCode($mode, $version, $bits) {
1972
-			$payload = $bits - 4 - $this->lengthIndicator($mode, $version);
1973
-			switch($mode) {
1974
-				case QR_MODE_NM: {
1975
-					$chunks = (int)($payload / 10);
1976
-					$remain = $payload - $chunks * 10;
1977
-					$size = $chunks * 3;
1978
-					if ($remain >= 7) {
1979
-						$size += 2;
1980
-					} elseif ($remain >= 4) {
1981
-						$size += 1;
1982
-					}
1983
-					break;
1984
-				}
1985
-				case QR_MODE_AN: {
1986
-					$chunks = (int)($payload / 11);
1987
-					$remain = $payload - $chunks * 11;
1988
-					$size = $chunks * 2;
1989
-					if ($remain >= 6) {
1990
-						++$size;
1991
-					}
1992
-					break;
1993
-				}
1994
-				case QR_MODE_8B: {
1995
-					$size = (int)($payload / 8);
1996
-					break;
1997
-				}
1998
-				case QR_MODE_KJ: {
1999
-					$size = (int)(($payload / 13) * 2);
2000
-					break;
2001
-				}
2002
-				case QR_MODE_ST: {
2003
-					$size = (int)($payload / 8);
2004
-					break;
2005
-				}
2006
-				default: {
2007
-					$size = 0;
2008
-					break;
2009
-				}
2010
-			}
2011
-			$maxsize = $this->maximumWords($mode, $version);
2012
-			if ($size < 0) {
2013
-				$size = 0;
2014
-			}
2015
-			if ($size > $maxsize) {
2016
-				$size = $maxsize;
2017
-			}
2018
-			return $size;
2019
-		}
2020
-
2021
-		/**
2022
-		 * createBitStream
2023
-		 * @param array $items
2024
-		 * @return array of items and total bits
2025
-		 */
2026
-		 protected function createBitStream($items) {
2027
-			$total = 0;
2028
-			foreach ($items as $key => $item) {
2029
-				$items[$key] = $this->encodeBitStream($item, $this->version);
2030
-				$bits = count($items[$key]['bstream']);
2031
-				$total += $bits;
2032
-			}
2033
-			return array($items, $total);
2034
-		}
2035
-
2036
-		/**
2037
-		 * convertData
2038
-		 * @param array $items
2039
-		 * @return array items
2040
-		 */
2041
-		 protected function convertData($items) {
2042
-			$ver = $this->estimateVersion($items);
2043
-			if ($ver > $this->version) {
2044
-				$this->version = $ver;
2045
-			}
2046
-			for (;;) {
2047
-				$cbs = $this->createBitStream($items);
2048
-				$items = $cbs[0];
2049
-				$bits = $cbs[1];
2050
-				if ($bits < 0) {
2051
-					return -1;
2052
-				}
2053
-				$ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
2054
-				if ($ver < 0) {
2055
-					return -1;
2056
-				} elseif ($ver > $this->version) {
2057
-					$this->version = $ver;
2058
-				} else {
2059
-					break;
2060
-				}
2061
-			}
2062
-			return $items;
2063
-		}
2064
-
2065
-		/**
2066
-		 * Append Padding Bit to bitstream
2067
-		 * @param array $bstream
2068
-		 * @return array bitstream
2069
-		 */
2070
-		 protected function appendPaddingBit($bstream) {
2071
-			$bits = count($bstream);
2072
-			$maxwords = $this->getDataLength($this->version, $this->level);
2073
-			$maxbits = $maxwords * 8;
2074
-			if ($maxbits == $bits) {
2075
-				return 0;
2076
-			}
2077
-			if ($maxbits - $bits < 5) {
2078
-				return $this->appendNum($bstream, $maxbits - $bits, 0);
2079
-			}
2080
-			$bits += 4;
2081
-			$words = (int)(($bits + 7) / 8);
2082
-			$padding = array();
2083
-			$padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0);
2084
-			$padlen = $maxwords - $words;
2085
-			if ($padlen > 0) {
2086
-				$padbuf = array();
2087
-				for ($i=0; $i<$padlen; ++$i) {
2088
-					$padbuf[$i] = ($i&1)?0x11:0xec;
2089
-				}
2090
-				$padding = $this->appendBytes($padding, $padlen, $padbuf);
2091
-			}
2092
-			return $this->appendBitstream($bstream, $padding);
2093
-		}
2094
-
2095
-		/**
2096
-		 * mergeBitStream
2097
-		 * @param array $bstream
2098
-		 * @return array bitstream
2099
-		 */
2100
-		 protected function mergeBitStream($items) {
2101
-			$items = $this->convertData($items);
2102
-			$bstream = array();
2103
-			foreach ($items as $item) {
2104
-				$bstream = $this->appendBitstream($bstream, $item['bstream']);
2105
-			}
2106
-			return $bstream;
2107
-		}
2108
-
2109
-		/**
2110
-		 * Returns a stream of bits.
2111
-		 * @param int $items
2112
-		 * @return array padded merged byte stream
2113
-		 */
2114
-		protected function getBitStream($items) {
2115
-			$bstream = $this->mergeBitStream($items);
2116
-			return $this->appendPaddingBit($bstream);
2117
-		}
2118
-
2119
-		/**
2120
-		 * Pack all bit streams padding bits into a byte array.
2121
-		 * @param int $items
2122
-		 * @return array padded merged byte stream
2123
-		 */
2124
-		protected function getByteStream($items) {
2125
-			$bstream = $this->getBitStream($items);
2126
-			return $this->bitstreamToByte($bstream);
2127
-		}
2128
-
2129
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
2130
-
2131
-		// QRbitstream
2132
-
2133
-		/**
2134
-		 * Return an array with zeros
2135
-		 * @param int $setLength array size
2136
-		 * @return array
2137
-		 */
2138
-		 protected function allocate($setLength) {
2139
-			return array_fill(0, $setLength, 0);
2140
-		}
2141
-
2142
-		/**
2143
-		 * Return new bitstream from number
2144
-		 * @param int $bits number of bits
2145
-		 * @param int $num number
2146
-		 * @return array bitstream
2147
-		 */
2148
-		 protected function newFromNum($bits, $num) {
2149
-			$bstream = $this->allocate($bits);
2150
-			$mask = 1 << ($bits - 1);
2151
-			for ($i=0; $i<$bits; ++$i) {
2152
-				if ($num & $mask) {
2153
-					$bstream[$i] = 1;
2154
-				} else {
2155
-					$bstream[$i] = 0;
2156
-				}
2157
-				$mask = $mask >> 1;
2158
-			}
2159
-			return $bstream;
2160
-		}
2161
-
2162
-		/**
2163
-		 * Return new bitstream from bytes
2164
-		 * @param int $size size
2165
-		 * @param array $data bytes
2166
-		 * @return array bitstream
2167
-		 */
2168
-		 protected function newFromBytes($size, $data) {
2169
-			$bstream = $this->allocate($size * 8);
2170
-			$p=0;
2171
-			for ($i=0; $i<$size; ++$i) {
2172
-				$mask = 0x80;
2173
-				for ($j=0; $j<8; ++$j) {
2174
-					if ($data[$i] & $mask) {
2175
-						$bstream[$p] = 1;
2176
-					} else {
2177
-						$bstream[$p] = 0;
2178
-					}
2179
-					$p++;
2180
-					$mask = $mask >> 1;
2181
-				}
2182
-			}
2183
-			return $bstream;
2184
-		}
2185
-
2186
-		/**
2187
-		 * Append one bitstream to another
2188
-		 * @param array $bitstream original bitstream
2189
-		 * @param array $append bitstream to append
2190
-		 * @return array bitstream
2191
-		 */
2192
-		 protected function appendBitstream($bitstream, $append) {
2193
-			if ((!is_array($append)) OR (count($append) == 0)) {
2194
-				return $bitstream;
2195
-			}
2196
-			if (count($bitstream) == 0) {
2197
-				return $append;
2198
-			}
2199
-			return array_values(array_merge($bitstream, $append));
2200
-		}
2201
-
2202
-		/**
2203
-		 * Append one bitstream created from number to another
2204
-		 * @param array $bitstream original bitstream
2205
-		 * @param int $bits number of bits
2206
-		 * @param int $num number
2207
-		 * @return array bitstream
2208
-		 */
2209
-		 protected function appendNum($bitstream, $bits, $num) {
2210
-			if ($bits == 0) {
2211
-				return 0;
2212
-			}
2213
-			$b = $this->newFromNum($bits, $num);
2214
-			return $this->appendBitstream($bitstream, $b);
2215
-		}
2216
-
2217
-		/**
2218
-		 * Append one bitstream created from bytes to another
2219
-		 * @param array $bitstream original bitstream
2220
-		 * @param int $size size
2221
-		 * @param array $data bytes
2222
-		 * @return array bitstream
2223
-		 */
2224
-		 protected function appendBytes($bitstream, $size, $data) {
2225
-			if ($size == 0) {
2226
-				return 0;
2227
-			}
2228
-			$b = $this->newFromBytes($size, $data);
2229
-			return $this->appendBitstream($bitstream, $b);
2230
-		}
2231
-
2232
-		/**
2233
-		 * Convert bitstream to bytes
2234
-		 * @param array $bitstream original bitstream
2235
-		 * @return array of bytes
2236
-		 */
2237
-		 protected function bitstreamToByte($bstream) {
2238
-			$size = count($bstream);
2239
-			if ($size == 0) {
2240
-				return array();
2241
-			}
2242
-			$data = array_fill(0, (int)(($size + 7) / 8), 0);
2243
-			$bytes = (int)($size / 8);
2244
-			$p = 0;
2245
-			for ($i=0; $i<$bytes; $i++) {
2246
-				$v = 0;
2247
-				for ($j=0; $j<8; $j++) {
2248
-					$v = $v << 1;
2249
-					$v |= $bstream[$p];
2250
-					$p++;
2251
-				}
2252
-				$data[$i] = $v;
2253
-			}
2254
-			if ($size & 7) {
2255
-				$v = 0;
2256
-				for ($j=0; $j<($size & 7); $j++) {
2257
-					$v = $v << 1;
2258
-					$v |= $bstream[$p];
2259
-					$p++;
2260
-				}
2261
-				$data[$bytes] = $v;
2262
-			}
2263
-			return $data;
2264
-		}
2265
-
2266
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
2267
-
2268
-		// QRspec
2269
-
2270
-		/**
2271
-		 * Replace a value on the array at the specified position
2272
-		 * @param array $srctab
2273
-		 * @param int $x X position
2274
-		 * @param int $y Y position
2275
-		 * @param string $repl value to replace
2276
-		 * @param int $replLen length of the repl string
2277
-		 * @return array srctab
2278
-		 */
2279
-		 protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) {
2280
-			$srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
2281
-			return $srctab;
2282
-		}
2283
-
2284
-		/**
2285
-		 * Return maximum data code length (bytes) for the version.
2286
-		 * @param int $version version
2287
-		 * @param int $level error correction level
2288
-		 * @return int maximum size (bytes)
2289
-		 */
2290
-		protected function getDataLength($version, $level) {
2291
-			return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level];
2292
-		}
2293
-
2294
-		/**
2295
-		 * Return maximum error correction code length (bytes) for the version.
2296
-		 * @param int $version version
2297
-		 * @param int $level error correction level
2298
-		 * @return int ECC size (bytes)
2299
-		 */
2300
-		protected function getECCLength($version, $level){
2301
-			return $this->capacity[$version][QRCAP_EC][$level];
2302
-		}
2303
-
2304
-		/**
2305
-		 * Return the width of the symbol for the version.
2306
-		 * @param int $version version
2307
-		 * @return int width
2308
-		 */
2309
-		protected function getWidth($version) {
2310
-			return $this->capacity[$version][QRCAP_WIDTH];
2311
-		}
2312
-
2313
-		/**
2314
-		 * Return the numer of remainder bits.
2315
-		 * @param int $version version
2316
-		 * @return int number of remainder bits
2317
-		 */
2318
-		protected function getRemainder($version) {
2319
-			return $this->capacity[$version][QRCAP_REMINDER];
2320
-		}
2321
-
2322
-		/**
2323
-		 * Return a version number that satisfies the input code length.
2324
-		 * @param int $size input code length (byte)
2325
-		 * @param int $level error correction level
2326
-		 * @return int version number
2327
-		 */
2328
-		protected function getMinimumVersion($size, $level) {
2329
-			for ($i=1; $i <= QRSPEC_VERSION_MAX; ++$i) {
2330
-				$words  = $this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level];
2331
-				if ($words >= $size) {
2332
-					return $i;
2333
-				}
2334
-			}
2335
-			return -1;
2336
-		}
2337
-
2338
-		/**
2339
-		 * Return the size of length indicator for the mode and version.
2340
-		 * @param int $mode encoding mode
2341
-		 * @param int $version version
2342
-		 * @return int the size of the appropriate length indicator (bits).
2343
-		 */
2344
-		protected function lengthIndicator($mode, $version) {
2345
-			if ($mode == QR_MODE_ST) {
2346
-				return 0;
2347
-			}
2348
-			if ($version <= 9) {
2349
-				$l = 0;
2350
-			} elseif ($version <= 26) {
2351
-				$l = 1;
2352
-			} else {
2353
-				$l = 2;
2354
-			}
2355
-			return $this->lengthTableBits[$mode][$l];
2356
-		}
2357
-
2358
-		/**
2359
-		 * Return the maximum length for the mode and version.
2360
-		 * @param int $mode encoding mode
2361
-		 * @param int $version version
2362
-		 * @return int the maximum length (bytes)
2363
-		 */
2364
-		protected function maximumWords($mode, $version) {
2365
-			if ($mode == QR_MODE_ST) {
2366
-				return 3;
2367
-			}
2368
-			if ($version <= 9) {
2369
-				$l = 0;
2370
-			} else if ($version <= 26) {
2371
-				$l = 1;
2372
-			} else {
2373
-				$l = 2;
2374
-			}
2375
-			$bits = $this->lengthTableBits[$mode][$l];
2376
-			$words = (1 << $bits) - 1;
2377
-			if ($mode == QR_MODE_KJ) {
2378
-				$words *= 2; // the number of bytes is required
2379
-			}
2380
-			return $words;
2381
-		}
2382
-
2383
-		/**
2384
-		 * Return an array of ECC specification.
2385
-		 * @param int $version version
2386
-		 * @param int $level error correction level
2387
-		 * @param array $spec an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code}
2388
-		 * @return array spec
2389
-		 */
2390
-		protected function getEccSpec($version, $level, $spec) {
2391
-			if (count($spec) < 5) {
2392
-				$spec = array(0, 0, 0, 0, 0);
2393
-			}
2394
-			$b1 = $this->eccTable[$version][$level][0];
2395
-			$b2 = $this->eccTable[$version][$level][1];
2396
-			$data = $this->getDataLength($version, $level);
2397
-			$ecc = $this->getECCLength($version, $level);
2398
-			if ($b2 == 0) {
2399
-				$spec[0] = $b1;
2400
-				$spec[1] = (int)($data / $b1);
2401
-				$spec[2] = (int)($ecc / $b1);
2402
-				$spec[3] = 0;
2403
-				$spec[4] = 0;
2404
-			} else {
2405
-				$spec[0] = $b1;
2406
-				$spec[1] = (int)($data / ($b1 + $b2));
2407
-				$spec[2] = (int)($ecc  / ($b1 + $b2));
2408
-				$spec[3] = $b2;
2409
-				$spec[4] = $spec[1] + 1;
2410
-			}
2411
-			return $spec;
2412
-		}
2413
-
2414
-		/**
2415
-		 * Put an alignment marker.
2416
-		 * @param array $frame frame
2417
-		 * @param int $width width
2418
-		 * @param int $ox X center coordinate of the pattern
2419
-		 * @param int $oy Y center coordinate of the pattern
2420
-		 * @return array frame
2421
-		 */
2422
-		protected function putAlignmentMarker($frame, $ox, $oy) {
2423
-			$finder = array(
2424
-				"\xa1\xa1\xa1\xa1\xa1",
2425
-				"\xa1\xa0\xa0\xa0\xa1",
2426
-				"\xa1\xa0\xa1\xa0\xa1",
2427
-				"\xa1\xa0\xa0\xa0\xa1",
2428
-				"\xa1\xa1\xa1\xa1\xa1"
2429
-				);
2430
-			$yStart = $oy - 2;
2431
-			$xStart = $ox - 2;
2432
-			for ($y=0; $y < 5; $y++) {
2433
-				$frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]);
2434
-			}
2435
-			return $frame;
2436
-		}
2437
-
2438
-		/**
2439
-		 * Put an alignment pattern.
2440
-		 * @param int $version version
2441
-		 * @param array $fram frame
2442
-		 * @param int $width width
2443
-		 * @return array frame
2444
-		 */
2445
-		 protected function putAlignmentPattern($version, $frame, $width) {
2446
-			if ($version < 2) {
2447
-				return $frame;
2448
-			}
2449
-			$d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0];
2450
-			if ($d < 0) {
2451
-				$w = 2;
2452
-			} else {
2453
-				$w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2);
2454
-			}
2455
-			if ($w * $w - 3 == 1) {
2456
-				$x = $this->alignmentPattern[$version][0];
2457
-				$y = $this->alignmentPattern[$version][0];
2458
-				$frame = $this->putAlignmentMarker($frame, $x, $y);
2459
-				return $frame;
2460
-			}
2461
-			$cx = $this->alignmentPattern[$version][0];
2462
-			$wo = $w - 1;
2463
-			for ($x=1; $x < $wo; ++$x) {
2464
-				$frame = $this->putAlignmentMarker($frame, 6, $cx);
2465
-				$frame = $this->putAlignmentMarker($frame, $cx,  6);
2466
-				$cx += $d;
2467
-			}
2468
-			$cy = $this->alignmentPattern[$version][0];
2469
-			for ($y=0; $y < $wo; ++$y) {
2470
-				$cx = $this->alignmentPattern[$version][0];
2471
-				for ($x=0; $x < $wo; ++$x) {
2472
-					$frame = $this->putAlignmentMarker($frame, $cx, $cy);
2473
-					$cx += $d;
2474
-				}
2475
-				$cy += $d;
2476
-			}
2477
-			return $frame;
2478
-		}
2479
-
2480
-		/**
2481
-		 * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits.
2482
-		 * @param int $version version
2483
-		 * @return BCH encoded version information pattern
2484
-		 */
2485
-		protected function getVersionPattern($version) {
2486
-			if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) {
2487
-				return 0;
2488
-			}
2489
-			return $this->versionPattern[($version - 7)];
2490
-		}
2491
-
2492
-		/**
2493
-		 * Return BCH encoded format information pattern.
2494
-		 * @param array $mask
2495
-		 * @param int $level error correction level
2496
-		 * @return BCH encoded format information pattern
2497
-		 */
2498
-		protected function getFormatInfo($mask, $level) {
2499
-			if (($mask < 0) OR ($mask > 7)) {
2500
-				return 0;
2501
-			}
2502
-			if (($level < 0) OR ($level > 3)) {
2503
-				return 0;
2504
-			}
2505
-			return $this->formatInfo[$level][$mask];
2506
-		}
2507
-
2508
-		/**
2509
-		 * Put a finder pattern.
2510
-		 * @param array $frame frame
2511
-		 * @param int $width width
2512
-		 * @param int $ox X center coordinate of the pattern
2513
-		 * @param int $oy Y center coordinate of the pattern
2514
-		 * @return array frame
2515
-		 */
2516
-		protected function putFinderPattern($frame, $ox, $oy) {
2517
-			$finder = array(
2518
-			"\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
2519
-			"\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
2520
-			"\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
2521
-			"\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
2522
-			"\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
2523
-			"\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
2524
-			"\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
2525
-			);
2526
-			for ($y=0; $y < 7; $y++) {
2527
-				$frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]);
2528
-			}
2529
-			return $frame;
2530
-		}
2531
-
2532
-		/**
2533
-		 * Return a copy of initialized frame.
2534
-		 * @param int $version version
2535
-		 * @return Array of unsigned char.
2536
-		 */
2537
-		protected function createFrame($version) {
2538
-			$width = $this->capacity[$version][QRCAP_WIDTH];
2539
-			$frameLine = str_repeat ("\0", $width);
2540
-			$frame = array_fill(0, $width, $frameLine);
2541
-			// Finder pattern
2542
-			$frame = $this->putFinderPattern($frame, 0, 0);
2543
-			$frame = $this->putFinderPattern($frame, $width - 7, 0);
2544
-			$frame = $this->putFinderPattern($frame, 0, $width - 7);
2545
-			// Separator
2546
-			$yOffset = $width - 7;
2547
-			for ($y=0; $y < 7; ++$y) {
2548
-				$frame[$y][7] = "\xc0";
2549
-				$frame[$y][$width - 8] = "\xc0";
2550
-				$frame[$yOffset][7] = "\xc0";
2551
-				++$yOffset;
2552
-			}
2553
-			$setPattern = str_repeat("\xc0", 8);
2554
-			$frame = $this->qrstrset($frame, 0, 7, $setPattern);
2555
-			$frame = $this->qrstrset($frame, $width-8, 7, $setPattern);
2556
-			$frame = $this->qrstrset($frame, 0, $width - 8, $setPattern);
2557
-			// Format info
2558
-			$setPattern = str_repeat("\x84", 9);
2559
-			$frame = $this->qrstrset($frame, 0, 8, $setPattern);
2560
-			$frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8);
2561
-			$yOffset = $width - 8;
2562
-			for ($y=0; $y < 8; ++$y,++$yOffset) {
2563
-				$frame[$y][8] = "\x84";
2564
-				$frame[$yOffset][8] = "\x84";
2565
-			}
2566
-			// Timing pattern
2567
-			$wo = $width - 15;
2568
-			for ($i=1; $i < $wo; ++$i) {
2569
-				$frame[6][7+$i] = chr(0x90 | ($i & 1));
2570
-				$frame[7+$i][6] = chr(0x90 | ($i & 1));
2571
-			}
2572
-			// Alignment pattern
2573
-			$frame = $this->putAlignmentPattern($version, $frame, $width);
2574
-			// Version information
2575
-			if ($version >= 7) {
2576
-				$vinf = $this->getVersionPattern($version);
2577
-				$v = $vinf;
2578
-				for ($x=0; $x<6; ++$x) {
2579
-					for ($y=0; $y<3; ++$y) {
2580
-						$frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
2581
-						$v = $v >> 1;
2582
-					}
2583
-				}
2584
-				$v = $vinf;
2585
-				for ($y=0; $y<6; ++$y) {
2586
-					for ($x=0; $x<3; ++$x) {
2587
-						$frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
2588
-						$v = $v >> 1;
2589
-					}
2590
-				}
2591
-			}
2592
-			// and a little bit...
2593
-			$frame[$width - 8][8] = "\x81";
2594
-			return $frame;
2595
-		}
2596
-
2597
-		/**
2598
-		 * Set new frame for the specified version.
2599
-		 * @param int $version version
2600
-		 * @return Array of unsigned char.
2601
-		 */
2602
-		protected function newFrame($version) {
2603
-			if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) {
2604
-				return NULL;
2605
-			}
2606
-			if (!isset($this->frames[$version])) {
2607
-				$this->frames[$version] = $this->createFrame($version);
2608
-			}
2609
-			if (is_null($this->frames[$version])) {
2610
-				return NULL;
2611
-			}
2612
-			return $this->frames[$version];
2613
-		}
2614
-
2615
-		/**
2616
-		 * Return block number 0
2617
-		 * @param array $spec
2618
-		 * @return int value
2619
-		 */
2620
-		 protected function rsBlockNum($spec) {
2621
-			return ($spec[0] + $spec[3]);
2622
-		}
2623
-
2624
-		/**
2625
-		* Return block number 1
2626
-		 * @param array $spec
2627
-		 * @return int value
2628
-		 */
2629
-		 protected function rsBlockNum1($spec) {
2630
-			return $spec[0];
2631
-		}
2632
-
2633
-		/**
2634
-		 * Return data codes 1
2635
-		 * @param array $spec
2636
-		 * @return int value
2637
-		 */
2638
-		 protected function rsDataCodes1($spec) {
2639
-			return $spec[1];
2640
-		}
2641
-
2642
-		/**
2643
-		 * Return ecc codes 1
2644
-		 * @param array $spec
2645
-		 * @return int value
2646
-		 */
2647
-		 protected function rsEccCodes1($spec) {
2648
-			return $spec[2];
2649
-		}
2650
-
2651
-		/**
2652
-		 * Return block number 2
2653
-		 * @param array $spec
2654
-		 * @return int value
2655
-		 */
2656
-		 protected function rsBlockNum2($spec) {
2657
-			return $spec[3];
2658
-		}
2659
-
2660
-		/**
2661
-		 * Return data codes 2
2662
-		 * @param array $spec
2663
-		 * @return int value
2664
-		 */
2665
-		 protected function rsDataCodes2($spec) {
2666
-			return $spec[4];
2667
-		}
2668
-
2669
-		/**
2670
-		 * Return ecc codes 2
2671
-		 * @param array $spec
2672
-		 * @return int value
2673
-		 */
2674
-		 protected function rsEccCodes2($spec) {
2675
-			return $spec[2];
2676
-		}
2677
-
2678
-		/**
2679
-		 * Return data length
2680
-		 * @param array $spec
2681
-		 * @return int value
2682
-		 */
2683
-		 protected function rsDataLength($spec) {
2684
-			return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]);
2685
-		}
2686
-
2687
-		/**
2688
-		 * Return ecc length
2689
-		 * @param array $spec
2690
-		 * @return int value
2691
-		 */
2692
-		 protected function rsEccLength($spec) {
2693
-			return ($spec[0] + $spec[3]) * $spec[2];
2694
-		}
2695
-
2696
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
2697
-
2698
-		// QRrs
2699
-
2700
-		/**
2701
-		 * Initialize a Reed-Solomon codec and add it to existing rsitems
2702
-		 * @param int $symsize symbol size, bits
2703
-		 * @param int $gfpoly  Field generator polynomial coefficients
2704
-		 * @param int $fcr  first root of RS code generator polynomial, index form
2705
-		 * @param int $prim  primitive element to generate polynomial roots
2706
-		 * @param int $nroots RS code generator polynomial degree (number of roots)
2707
-		 * @param int $pad  padding bytes at front of shortened block
2708
-		 * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
2709
-		 */
2710
-		 protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
2711
-			foreach ($this->rsitems as $rs) {
2712
-				if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize)
2713
-					OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) {
2714
-					continue;
2715
-				}
2716
-				return $rs;
2717
-			}
2718
-			$rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
2719
-			array_unshift($this->rsitems, $rs);
2720
-			return $rs;
2721
-		}
2722
-
2723
-		// - - - - - - - - - - - - - - - - - - - - - - - - -
2724
-
2725
-		// QRrsItem
2726
-
2727
-		/**
2728
-		 * modnn
2729
-		 * @param array RS values
2730
-		 * @param int $x X position
2731
-		 * @return int X osition
2732
-		 */
2733
-		 protected function modnn($rs, $x) {
2734
-			while ($x >= $rs['nn']) {
2735
-				$x -= $rs['nn'];
2736
-				$x = ($x >> $rs['mm']) + ($x & $rs['nn']);
2737
-			}
2738
-			return $x;
2739
-		}
2740
-
2741
-		/**
2742
-		 * Initialize a Reed-Solomon codec and returns an array of values.
2743
-		 * @param int $symsize symbol size, bits
2744
-		 * @param int $gfpoly  Field generator polynomial coefficients
2745
-		 * @param int $fcr  first root of RS code generator polynomial, index form
2746
-		 * @param int $prim  primitive element to generate polynomial roots
2747
-		 * @param int $nroots RS code generator polynomial degree (number of roots)
2748
-		 * @param int $pad  padding bytes at front of shortened block
2749
-		 * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
2750
-		 */
2751
-		protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
2752
-			// Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2)
2753
-			$rs = null;
2754
-			// Check parameter ranges
2755
-			if (($symsize < 0) OR ($symsize > 8)) {
2756
-				return $rs;
2757
-			}
2758
-			if (($fcr < 0) OR ($fcr >= (1<<$symsize))) {
2759
-				return $rs;
2760
-			}
2761
-			if (($prim <= 0) OR ($prim >= (1<<$symsize))) {
2762
-				return $rs;
2763
-			}
2764
-			if (($nroots < 0) OR ($nroots >= (1<<$symsize))) {
2765
-				return $rs;
2766
-			}
2767
-			if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) {
2768
-				return $rs;
2769
-			}
2770
-			$rs = array();
2771
-			$rs['mm'] = $symsize;
2772
-			$rs['nn'] = (1 << $symsize) - 1;
2773
-			$rs['pad'] = $pad;
2774
-			$rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0);
2775
-			$rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0);
2776
-			// PHP style macro replacement ;)
2777
-			$NN =& $rs['nn'];
2778
-			$A0 =& $NN;
2779
-			// Generate Galois field lookup tables
2780
-			$rs['index_of'][0] = $A0; // log(zero) = -inf
2781
-			$rs['alpha_to'][$A0] = 0; // alpha**-inf = 0
2782
-			$sr = 1;
2783
-			for ($i=0; $i<$rs['nn']; ++$i) {
2784
-				$rs['index_of'][$sr] = $i;
2785
-				$rs['alpha_to'][$i] = $sr;
2786
-				$sr <<= 1;
2787
-				if ($sr & (1 << $symsize)) {
2788
-					$sr ^= $gfpoly;
2789
-				}
2790
-				$sr &= $rs['nn'];
2791
-			}
2792
-			if ($sr != 1) {
2793
-				// field generator polynomial is not primitive!
2794
-				return NULL;
2795
-			}
2796
-			// Form RS code generator polynomial from its roots
2797
-			$rs['genpoly'] = array_fill(0, ($nroots + 1), 0);
2798
-			$rs['fcr'] = $fcr;
2799
-			$rs['prim'] = $prim;
2800
-			$rs['nroots'] = $nroots;
2801
-			$rs['gfpoly'] = $gfpoly;
2802
-			// Find prim-th root of 1, used in decoding
2803
-			for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) {
2804
-				; // intentional empty-body loop!
2805
-			}
2806
-			$rs['iprim'] = (int)($iprim / $prim);
2807
-			$rs['genpoly'][0] = 1;
2808
-
2809
-
2810
-			for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
2811
-				$rs['genpoly'][$i+1] = 1;
2812
-				// Multiply rs->genpoly[] by  @**(root + x)
2813
-				for ($j = $i; $j > 0; --$j) {
2814
-					if ($rs['genpoly'][$j] != 0) {
2815
-						$rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)];
2816
-					} else {
2817
-						$rs['genpoly'][$j] = $rs['genpoly'][$j-1];
2818
-					}
2819
-				}
2820
-				// rs->genpoly[0] can never be zero
2821
-				$rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)];
2822
-			}
2823
-			// convert rs->genpoly[] to index form for quicker encoding
2824
-			for ($i = 0; $i <= $nroots; ++$i) {
2825
-				$rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]];
2826
-			}
2827
-			return $rs;
2828
-		}
2829
-
2830
-		/**
2831
-		 * Encode a Reed-Solomon codec and returns the parity array
2832
-		 * @param array $rs RS values
2833
-		 * @param array $data data
2834
-		 * @param array $parity parity
2835
-		 * @return parity array
2836
-		 */
2837
-		 protected function encode_rs_char($rs, $data, $parity) {
2838
-			$MM       =& $rs['mm']; // bits per symbol
2839
-			$NN       =& $rs['nn']; // the total number of symbols in a RS block
2840
-			$ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form
2841
-			$INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form
2842
-			$GENPOLY  =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form
2843
-			$NROOTS   =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block
2844
-			$FCR      =& $rs['fcr']; // first consecutive root, index form
2845
-			$PRIM     =& $rs['prim']; // primitive element, index form
2846
-			$IPRIM    =& $rs['iprim']; // prim-th root of 1, index form
2847
-			$PAD      =& $rs['pad']; // the number of pad symbols in a block
2848
-			$A0       =& $NN;
2849
-			$parity = array_fill(0, $NROOTS, 0);
2850
-			for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) {
2851
-				$feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
2852
-				if ($feedback != $A0) {
2853
-					// feedback term is non-zero
2854
-					// This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
2855
-					// always be for the polynomials constructed by init_rs()
2856
-					$feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback);
2857
-					for ($j=1; $j < $NROOTS; ++$j) {
2858
-					$parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])];
2859
-					}
2860
-				}
2861
-				// Shift
2862
-				array_shift($parity);
2863
-				if ($feedback != $A0) {
2864
-					array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]);
2865
-				} else {
2866
-					array_push($parity, 0);
2867
-				}
2868
-			}
2869
-			return $parity;
2870
-		}
2871
-
2872
-	} // end QRcode class
265
+    // for compaibility with PHP4
266
+    if (!function_exists('str_split')) {
267
+        /**
268
+         * Convert a string to an array (needed for PHP4 compatibility)
269
+         * @param string $string The input string.
270
+         * @param int $split_length Maximum length of the chunk.
271
+         * @return  If the optional split_length  parameter is specified, the returned array will be broken down into chunks with each being split_length  in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element.
272
+         */
273
+        function str_split($string, $split_length=1) {
274
+            if ((strlen($string) > $split_length) OR (!$split_length)) {
275
+                do {
276
+                    $c = strlen($string);
277
+                    $parts[] = substr($string, 0, $split_length);
278
+                    $string = substr($string, $split_length);
279
+                } while ($string !== false);
280
+            } else {
281
+                $parts = array($string);
282
+            }
283
+            return $parts;
284
+        }
285
+    }
286
+
287
+    // #####################################################
288
+
289
+    /**
290
+     * Class to create QR-code arrays for TCPDF class.
291
+     * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD.
292
+     * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness.
293
+     * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
294
+     * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
295
+     *
296
+     * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html).
297
+     * Please read comments on this class source file for full copyright and license information.
298
+     *
299
+     * @name QRcode
300
+     * @package com.tecnick.tcpdf
301
+     * @abstract Class for generating QR-code array for TCPDF.
302
+     * @author Nicola Asuni
303
+     * @copyright 2010 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - [email protected]
304
+     * @link http://www.tcpdf.org
305
+     * @license http://www.gnu.org/copyleft/lesser.html LGPL
306
+     * @version 1.0.002
307
+     */
308
+    class QRcode {
309
+
310
+        /**
311
+         * @var barcode array to be returned which is readable by TCPDF
312
+         * @access protected
313
+         */
314
+        protected $barcode_array = array();
315
+
316
+        /**
317
+         * @var QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix.
318
+         * @access protected
319
+         */
320
+        protected $version = 0;
321
+
322
+        /**
323
+         * @var Levels of error correction. See definitions for possible values.
324
+         * @access protected
325
+         */
326
+        protected $level = QR_ECLEVEL_L;
327
+
328
+        /**
329
+         * @var Encoding mode
330
+         * @access protected
331
+         */
332
+        protected $hint = QR_MODE_8B;
333
+
334
+        /**
335
+         * @var if true the input string will be converted to uppercase
336
+         * @access protected
337
+         */
338
+        protected $casesensitive = true;
339
+
340
+        /**
341
+         * @var structured QR code (not supported yet)
342
+         * @access protected
343
+         */
344
+        protected $structured = 0;
345
+
346
+        /**
347
+         * @var mask data
348
+         * @access protected
349
+         */
350
+        protected $data;
351
+
352
+        // FrameFiller
353
+
354
+        /**
355
+         * @var width
356
+         * @access protected
357
+         */
358
+        protected $width;
359
+
360
+        /**
361
+         * @var frame
362
+         * @access protected
363
+         */
364
+        protected $frame;
365
+
366
+        /**
367
+         * @var X position of bit
368
+         * @access protected
369
+         */
370
+        protected $x;
371
+
372
+        /**
373
+         * @var Y position of bit
374
+         * @access protected
375
+         */
376
+        protected $y;
377
+
378
+        /**
379
+         * @var direction
380
+         * @access protected
381
+         */
382
+        protected $dir;
383
+
384
+        /**
385
+         * @var single bit
386
+         * @access protected
387
+         */
388
+        protected $bit;
389
+
390
+        // ---- QRrawcode ----
391
+
392
+        /**
393
+         * @var data code
394
+         * @access protected
395
+         */
396
+        protected $datacode = array();
397
+
398
+        /**
399
+         * @var error correction code
400
+         * @access protected
401
+         */
402
+        protected $ecccode = array();
403
+
404
+        /**
405
+         * @var blocks
406
+         * @access protected
407
+         */
408
+        protected $blocks;
409
+
410
+        /**
411
+         * @var Reed-Solomon blocks
412
+         * @access protected
413
+         */
414
+        protected $rsblocks = array(); //of RSblock
415
+
416
+        /**
417
+         * @var counter
418
+         * @access protected
419
+         */
420
+        protected $count;
421
+
422
+        /**
423
+         * @var data length
424
+         * @access protected
425
+         */
426
+        protected $dataLength;
427
+
428
+        /**
429
+         * @var error correction length
430
+         * @access protected
431
+         */
432
+        protected $eccLength;
433
+
434
+        /**
435
+         * @var b1
436
+         * @access protected
437
+         */
438
+        protected $b1;
439
+
440
+        // ---- QRmask ----
441
+
442
+        /**
443
+         * @var run length
444
+         * @access protected
445
+         */
446
+        protected $runLength = array();
447
+
448
+        // ---- QRsplit ----
449
+
450
+        /**
451
+         * @var input data string
452
+         * @access protected
453
+         */
454
+        protected $dataStr = '';
455
+
456
+        /**
457
+         * @var input items
458
+         * @access protected
459
+         */
460
+        protected $items;
461
+
462
+        // Reed-Solomon items
463
+
464
+        /**
465
+         * @var Reed-Solomon items
466
+         * @access protected
467
+         */
468
+        protected $rsitems = array();
469
+
470
+        /**
471
+         * @var array of frames
472
+         * @access protected
473
+         */
474
+        protected $frames = array();
475
+
476
+        /**
477
+         * @var alphabet-numeric convesion table
478
+         * @access protected
479
+         */
480
+        protected $anTable = array(
481
+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
482
+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
483
+            36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, //
484
+                0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 44, -1, -1, -1, -1, -1, //
485
+            -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, //
486
+            25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, //
487
+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
488
+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1  //
489
+            );
490
+
491
+        /**
492
+         * @var array Table of the capacity of symbols
493
+         * See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004.
494
+         * @access protected
495
+         */
496
+        protected $capacity = array(
497
+            array(  0,    0, 0, array(   0,    0,    0,    0)), //
498
+            array( 21,   26, 0, array(   7,   10,   13,   17)), //  1
499
+            array( 25,   44, 7, array(  10,   16,   22,   28)), //
500
+            array( 29,   70, 7, array(  15,   26,   36,   44)), //
501
+            array( 33,  100, 7, array(  20,   36,   52,   64)), //
502
+            array( 37,  134, 7, array(  26,   48,   72,   88)), //  5
503
+            array( 41,  172, 7, array(  36,   64,   96,  112)), //
504
+            array( 45,  196, 0, array(  40,   72,  108,  130)), //
505
+            array( 49,  242, 0, array(  48,   88,  132,  156)), //
506
+            array( 53,  292, 0, array(  60,  110,  160,  192)), //
507
+            array( 57,  346, 0, array(  72,  130,  192,  224)), // 10
508
+            array( 61,  404, 0, array(  80,  150,  224,  264)), //
509
+            array( 65,  466, 0, array(  96,  176,  260,  308)), //
510
+            array( 69,  532, 0, array( 104,  198,  288,  352)), //
511
+            array( 73,  581, 3, array( 120,  216,  320,  384)), //
512
+            array( 77,  655, 3, array( 132,  240,  360,  432)), // 15
513
+            array( 81,  733, 3, array( 144,  280,  408,  480)), //
514
+            array( 85,  815, 3, array( 168,  308,  448,  532)), //
515
+            array( 89,  901, 3, array( 180,  338,  504,  588)), //
516
+            array( 93,  991, 3, array( 196,  364,  546,  650)), //
517
+            array( 97, 1085, 3, array( 224,  416,  600,  700)), // 20
518
+            array(101, 1156, 4, array( 224,  442,  644,  750)), //
519
+            array(105, 1258, 4, array( 252,  476,  690,  816)), //
520
+            array(109, 1364, 4, array( 270,  504,  750,  900)), //
521
+            array(113, 1474, 4, array( 300,  560,  810,  960)), //
522
+            array(117, 1588, 4, array( 312,  588,  870, 1050)), // 25
523
+            array(121, 1706, 4, array( 336,  644,  952, 1110)), //
524
+            array(125, 1828, 4, array( 360,  700, 1020, 1200)), //
525
+            array(129, 1921, 3, array( 390,  728, 1050, 1260)), //
526
+            array(133, 2051, 3, array( 420,  784, 1140, 1350)), //
527
+            array(137, 2185, 3, array( 450,  812, 1200, 1440)), // 30
528
+            array(141, 2323, 3, array( 480,  868, 1290, 1530)), //
529
+            array(145, 2465, 3, array( 510,  924, 1350, 1620)), //
530
+            array(149, 2611, 3, array( 540,  980, 1440, 1710)), //
531
+            array(153, 2761, 3, array( 570, 1036, 1530, 1800)), //
532
+            array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35
533
+            array(161, 3034, 0, array( 600, 1120, 1680, 1980)), //
534
+            array(165, 3196, 0, array( 630, 1204, 1770, 2100)), //
535
+            array(169, 3362, 0, array( 660, 1260, 1860, 2220)), //
536
+            array(173, 3532, 0, array( 720, 1316, 1950, 2310)), //
537
+            array(177, 3706, 0, array( 750, 1372, 2040, 2430))  // 40
538
+        );
539
+
540
+        /**
541
+         * @var array Length indicator
542
+         * @access protected
543
+         */
544
+        protected $lengthTableBits = array(
545
+            array(10, 12, 14),
546
+            array( 9, 11, 13),
547
+            array( 8, 16, 16),
548
+            array( 8, 10, 12)
549
+        );
550
+
551
+        /**
552
+         * @var array Table of the error correction code (Reed-Solomon block)
553
+         * See Table 12-16 (pp.30-36), JIS X0510:2004.
554
+         * @access protected
555
+         */
556
+        protected $eccTable = array(
557
+            array(array( 0,  0), array( 0,  0), array( 0,  0), array( 0,  0)), //
558
+            array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //  1
559
+            array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //
560
+            array(array( 1,  0), array( 1,  0), array( 2,  0), array( 2,  0)), //
561
+            array(array( 1,  0), array( 2,  0), array( 2,  0), array( 4,  0)), //
562
+            array(array( 1,  0), array( 2,  0), array( 2,  2), array( 2,  2)), //  5
563
+            array(array( 2,  0), array( 4,  0), array( 4,  0), array( 4,  0)), //
564
+            array(array( 2,  0), array( 4,  0), array( 2,  4), array( 4,  1)), //
565
+            array(array( 2,  0), array( 2,  2), array( 4,  2), array( 4,  2)), //
566
+            array(array( 2,  0), array( 3,  2), array( 4,  4), array( 4,  4)), //
567
+            array(array( 2,  2), array( 4,  1), array( 6,  2), array( 6,  2)), // 10
568
+            array(array( 4,  0), array( 1,  4), array( 4,  4), array( 3,  8)), //
569
+            array(array( 2,  2), array( 6,  2), array( 4,  6), array( 7,  4)), //
570
+            array(array( 4,  0), array( 8,  1), array( 8,  4), array(12,  4)), //
571
+            array(array( 3,  1), array( 4,  5), array(11,  5), array(11,  5)), //
572
+            array(array( 5,  1), array( 5,  5), array( 5,  7), array(11,  7)), // 15
573
+            array(array( 5,  1), array( 7,  3), array(15,  2), array( 3, 13)), //
574
+            array(array( 1,  5), array(10,  1), array( 1, 15), array( 2, 17)), //
575
+            array(array( 5,  1), array( 9,  4), array(17,  1), array( 2, 19)), //
576
+            array(array( 3,  4), array( 3, 11), array(17,  4), array( 9, 16)), //
577
+            array(array( 3,  5), array( 3, 13), array(15,  5), array(15, 10)), // 20
578
+            array(array( 4,  4), array(17,  0), array(17,  6), array(19,  6)), //
579
+            array(array( 2,  7), array(17,  0), array( 7, 16), array(34,  0)), //
580
+            array(array( 4,  5), array( 4, 14), array(11, 14), array(16, 14)), //
581
+            array(array( 6,  4), array( 6, 14), array(11, 16), array(30,  2)), //
582
+            array(array( 8,  4), array( 8, 13), array( 7, 22), array(22, 13)), // 25
583
+            array(array(10,  2), array(19,  4), array(28,  6), array(33,  4)), //
584
+            array(array( 8,  4), array(22,  3), array( 8, 26), array(12, 28)), //
585
+            array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), //
586
+            array(array( 7,  7), array(21,  7), array( 1, 37), array(19, 26)), //
587
+            array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30
588
+            array(array(13,  3), array( 2, 29), array(42,  1), array(23, 28)), //
589
+            array(array(17,  0), array(10, 23), array(10, 35), array(19, 35)), //
590
+            array(array(17,  1), array(14, 21), array(29, 19), array(11, 46)), //
591
+            array(array(13,  6), array(14, 23), array(44,  7), array(59,  1)), //
592
+            array(array(12,  7), array(12, 26), array(39, 14), array(22, 41)), // 35
593
+            array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), //
594
+            array(array(17,  4), array(29, 14), array(49, 10), array(24, 46)), //
595
+            array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), //
596
+            array(array(20,  4), array(40,  7), array(43, 22), array(10, 67)), //
597
+            array(array(19,  6), array(18, 31), array(34, 34), array(20, 61))  // 40
598
+        );
599
+
600
+        /**
601
+         * @var array Positions of alignment patterns.
602
+         * This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them.
603
+         * See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
604
+         * @access protected
605
+         */
606
+        protected $alignmentPattern = array(
607
+            array( 0,  0),
608
+            array( 0,  0), array(18,  0), array(22,  0), array(26,  0), array(30,  0), //  1- 5
609
+            array(34,  0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), //  6-10
610
+            array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15
611
+            array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20
612
+            array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25
613
+            array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30
614
+            array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35
615
+            array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58)  // 35-40
616
+        );
617
+
618
+        /**
619
+         * @var array Version information pattern (BCH coded).
620
+         * See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
621
+         * size: [QRSPEC_VERSION_MAX - 6]
622
+         * @access protected
623
+         */
624
+        protected $versionPattern = array(
625
+            0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, //
626
+            0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, //
627
+            0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, //
628
+            0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, //
629
+            0x27541, 0x28c69
630
+        );
631
+
632
+        /**
633
+         * @var array Format information
634
+         * @access protected
635
+         */
636
+        protected $formatInfo = array(
637
+            array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), //
638
+            array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), //
639
+            array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), //
640
+            array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b)  //
641
+        );
642
+
643
+
644
+        // -------------------------------------------------
645
+        // -------------------------------------------------
646
+
647
+
648
+        /**
649
+         * This is the class constructor.
650
+         * Creates a QRcode object
651
+         * @param string $code code to represent using QRcode
652
+         * @param string $eclevel error level: <ul><li>L : About 7% or less errors can be corrected.</li><li>M : About 15% or less errors can be corrected.</li><li>Q : About 25% or less errors can be corrected.</li><li>H : About 30% or less errors can be corrected.</li></ul>
653
+         * @access public
654
+         * @since 1.0.000
655
+         */
656
+        public function __construct($code, $eclevel = 'L') {
657
+            $barcode_array = array();
658
+            if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
659
+                return false;
660
+            }
661
+            // set error correction level
662
+            $this->level = array_search($eclevel, array('L', 'M', 'Q', 'H'));
663
+            if ($this->level === false) {
664
+                $this->level = QR_ECLEVEL_L;
665
+            }
666
+            if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) {
667
+                return false;
668
+            }
669
+            if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) {
670
+                return false;
671
+            }
672
+            $this->items = array();
673
+            $this->encodeString($code);
674
+            $qrTab = $this->binarize($this->data);
675
+            $size = count($qrTab);
676
+            $barcode_array['num_rows'] = $size;
677
+            $barcode_array['num_cols'] = $size;
678
+            $barcode_array['bcode'] = array();
679
+            foreach ($qrTab as $line) {
680
+                $arrAdd = array();
681
+                foreach (str_split($line) as $char) {
682
+                    $arrAdd[] = ($char=='1')?1:0;
683
+                }
684
+                $barcode_array['bcode'][] = $arrAdd;
685
+            }
686
+            $this->barcode_array = $barcode_array;
687
+        }
688
+
689
+        /**
690
+         * Returns a barcode array which is readable by TCPDF
691
+         * @return array barcode array readable by TCPDF;
692
+         * @access public
693
+         */
694
+        public function getBarcodeArray() {
695
+            return $this->barcode_array;
696
+        }
697
+
698
+        /**
699
+         * Convert the frame in binary form
700
+         * @param array $frame array to binarize
701
+         * @return array frame in binary form
702
+         */
703
+        protected function binarize($frame) {
704
+            $len = count($frame);
705
+            // the frame is square (width = height)
706
+            foreach ($frame as &$frameLine) {
707
+                for ($i=0; $i<$len; $i++) {
708
+                    $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
709
+                }
710
+            }
711
+            return $frame;
712
+        }
713
+
714
+        /**
715
+         * Encode the input string to QR code
716
+         * @param string $string input string to encode
717
+         */
718
+        protected function encodeString($string) {
719
+            $this->dataStr = $string;
720
+            if (!$this->casesensitive) {
721
+                $this->toUpper();
722
+            }
723
+            $ret = $this->splitString();
724
+            if ($ret < 0) {
725
+                return NULL;
726
+            }
727
+            $this->encodeMask(-1);
728
+        }
729
+
730
+        /**
731
+         * Encode mask
732
+         * @param int $mask masking mode
733
+         */
734
+        protected function encodeMask($mask) {
735
+            $spec = array(0, 0, 0, 0, 0);
736
+            $this->datacode = $this->getByteStream($this->items);
737
+            if (is_null($this->datacode)) {
738
+                return NULL;
739
+            }
740
+            $spec = $this->getEccSpec($this->version, $this->level, $spec);
741
+            $this->b1 = $this->rsBlockNum1($spec);
742
+            $this->dataLength = $this->rsDataLength($spec);
743
+            $this->eccLength = $this->rsEccLength($spec);
744
+            $this->ecccode = array_fill(0, $this->eccLength, 0);
745
+            $this->blocks = $this->rsBlockNum($spec);
746
+            $ret = $this->init($spec);
747
+            if ($ret < 0) {
748
+                return NULL;
749
+            }
750
+            $this->count = 0;
751
+            $this->width = $this->getWidth($this->version);
752
+            $this->frame = $this->newFrame($this->version);
753
+            $this->x = $this->width - 1;
754
+            $this->y = $this->width - 1;
755
+            $this->dir = -1;
756
+            $this->bit = -1;
757
+            // inteleaved data and ecc codes
758
+            for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) {
759
+                $code = $this->getCode();
760
+                $bit = 0x80;
761
+                for ($j=0; $j<8; $j++) {
762
+                    $addr = $this->getNextPosition();
763
+                    $this->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
764
+                    $bit = $bit >> 1;
765
+                }
766
+            }
767
+            // remainder bits
768
+            $j = $this->getRemainder($this->version);
769
+            for ($i=0; $i<$j; $i++) {
770
+                $addr = $this->getNextPosition();
771
+                $this->setFrameAt($addr, 0x02);
772
+            }
773
+            // masking
774
+            $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
775
+            if ($mask < 0) {
776
+                if (QR_FIND_BEST_MASK) {
777
+                    $masked = $this->mask($this->width, $this->frame, $this->level);
778
+                } else {
779
+                    $masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level);
780
+                }
781
+            } else {
782
+                $masked = $this->makeMask($this->width, $this->frame, $mask, $this->level);
783
+            }
784
+            if ($masked == NULL) {
785
+                return NULL;
786
+            }
787
+            $this->data = $masked;
788
+        }
789
+
790
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
791
+
792
+        // FrameFiller
793
+
794
+        /**
795
+         * Set frame value at specified position
796
+         * @param array $at x,y position
797
+         * @param int $val value of the character to set
798
+         */
799
+        protected function setFrameAt($at, $val) {
800
+            $this->frame[$at['y']][$at['x']] = chr($val);
801
+        }
802
+
803
+        /**
804
+         * Get frame value at specified position
805
+         * @param array $at x,y position
806
+         * @return value at specified position
807
+         */
808
+        protected function getFrameAt($at) {
809
+            return ord($this->frame[$at['y']][$at['x']]);
810
+        }
811
+
812
+        /**
813
+         * Return the next frame position
814
+         * @return array of x,y coordinates
815
+         */
816
+        protected function getNextPosition() {
817
+            do {
818
+                if ($this->bit == -1) {
819
+                    $this->bit = 0;
820
+                    return array('x'=>$this->x, 'y'=>$this->y);
821
+                }
822
+                $x = $this->x;
823
+                $y = $this->y;
824
+                $w = $this->width;
825
+                if ($this->bit == 0) {
826
+                    $x--;
827
+                    $this->bit++;
828
+                } else {
829
+                    $x++;
830
+                    $y += $this->dir;
831
+                    $this->bit--;
832
+                }
833
+                if ($this->dir < 0) {
834
+                    if ($y < 0) {
835
+                        $y = 0;
836
+                        $x -= 2;
837
+                        $this->dir = 1;
838
+                        if ($x == 6) {
839
+                            $x--;
840
+                            $y = 9;
841
+                        }
842
+                    }
843
+                } else {
844
+                    if ($y == $w) {
845
+                        $y = $w - 1;
846
+                        $x -= 2;
847
+                        $this->dir = -1;
848
+                        if ($x == 6) {
849
+                            $x--;
850
+                            $y -= 8;
851
+                        }
852
+                    }
853
+                }
854
+                if (($x < 0) OR ($y < 0)) {
855
+                    return NULL;
856
+                }
857
+                $this->x = $x;
858
+                $this->y = $y;
859
+            } while(ord($this->frame[$y][$x]) & 0x80);
860
+            return array('x'=>$x, 'y'=>$y);
861
+        }
862
+
863
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
864
+
865
+        // QRrawcode
866
+
867
+        /**
868
+         * Initialize code.
869
+         * @param array $spec array of ECC specification
870
+         * @return 0 in case of success, -1 in case of error
871
+         */
872
+        protected function init($spec) {
873
+            $dl = $this->rsDataCodes1($spec);
874
+            $el = $this->rsEccCodes1($spec);
875
+            $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
876
+            $blockNo = 0;
877
+            $dataPos = 0;
878
+            $eccPos = 0;
879
+            $endfor = $this->rsBlockNum1($spec);
880
+            for ($i=0; $i < $endfor; ++$i) {
881
+                $ecc = array_slice($this->ecccode, $eccPos);
882
+                $this->rsblocks[$blockNo] = array();
883
+                $this->rsblocks[$blockNo]['dataLength'] = $dl;
884
+                $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
885
+                $this->rsblocks[$blockNo]['eccLength'] = $el;
886
+                $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
887
+                $this->rsblocks[$blockNo]['ecc'] = $ecc;
888
+                $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
889
+                $dataPos += $dl;
890
+                $eccPos += $el;
891
+                $blockNo++;
892
+            }
893
+            if ($this->rsBlockNum2($spec) == 0) {
894
+                return 0;
895
+            }
896
+            $dl = $this->rsDataCodes2($spec);
897
+            $el = $this->rsEccCodes2($spec);
898
+            $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
899
+            if ($rs == NULL) {
900
+                return -1;
901
+            }
902
+            $endfor = $this->rsBlockNum2($spec);
903
+            for ($i=0; $i < $endfor; ++$i) {
904
+                $ecc = array_slice($this->ecccode, $eccPos);
905
+                $this->rsblocks[$blockNo] = array();
906
+                $this->rsblocks[$blockNo]['dataLength'] = $dl;
907
+                $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
908
+                $this->rsblocks[$blockNo]['eccLength'] = $el;
909
+                $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
910
+                $this->rsblocks[$blockNo]['ecc'] = $ecc;
911
+                $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
912
+                $dataPos += $dl;
913
+                $eccPos += $el;
914
+                $blockNo++;
915
+            }
916
+            return 0;
917
+        }
918
+
919
+        /**
920
+         * Return Reed-Solomon block code.
921
+         * @return array rsblocks
922
+         */
923
+        protected function getCode() {
924
+            if ($this->count < $this->dataLength) {
925
+                $row = $this->count % $this->blocks;
926
+                $col = $this->count / $this->blocks;
927
+                if ($col >= $this->rsblocks[0]['dataLength']) {
928
+                    $row += $this->b1;
929
+                }
930
+                $ret = $this->rsblocks[$row]['data'][$col];
931
+            } elseif ($this->count < $this->dataLength + $this->eccLength) {
932
+                $row = ($this->count - $this->dataLength) % $this->blocks;
933
+                $col = ($this->count - $this->dataLength) / $this->blocks;
934
+                $ret = $this->rsblocks[$row]['ecc'][$col];
935
+            } else {
936
+                return 0;
937
+            }
938
+            $this->count++;
939
+            return $ret;
940
+        }
941
+
942
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
943
+
944
+        // QRmask
945
+
946
+        /**
947
+         * Write Format Information on frame and returns the number of black bits
948
+         * @param int $width frame width
949
+         * @param array $frame frame
950
+         * @param array $mask masking mode
951
+         * @param int $level error correction level
952
+         * @return int blacks
953
+         */
954
+            protected function writeFormatInformation($width, &$frame, $mask, $level) {
955
+            $blacks = 0;
956
+            $format =  $this->getFormatInfo($mask, $level);
957
+            for ($i=0; $i<8; ++$i) {
958
+                if ($format & 1) {
959
+                    $blacks += 2;
960
+                    $v = 0x85;
961
+                } else {
962
+                    $v = 0x84;
963
+                }
964
+                $frame[8][$width - 1 - $i] = chr($v);
965
+                if ($i < 6) {
966
+                    $frame[$i][8] = chr($v);
967
+                } else {
968
+                    $frame[$i + 1][8] = chr($v);
969
+                }
970
+                $format = $format >> 1;
971
+            }
972
+            for ($i=0; $i<7; ++$i) {
973
+            if ($format & 1) {
974
+                $blacks += 2;
975
+                $v = 0x85;
976
+            } else {
977
+                $v = 0x84;
978
+            }
979
+            $frame[$width - 7 + $i][8] = chr($v);
980
+            if ($i == 0) {
981
+                $frame[8][7] = chr($v);
982
+            } else {
983
+                $frame[8][6 - $i] = chr($v);
984
+            }
985
+            $format = $format >> 1;
986
+            }
987
+            return $blacks;
988
+        }
989
+
990
+        /**
991
+         * mask0
992
+         * @param int $x X position
993
+         * @param int $y Y position
994
+         * @return int mask
995
+         */
996
+            protected function mask0($x, $y) {
997
+            return ($x + $y) & 1;
998
+        }
999
+
1000
+        /**
1001
+         * mask1
1002
+         * @param int $x X position
1003
+         * @param int $y Y position
1004
+         * @return int mask
1005
+         */
1006
+            protected function mask1($x, $y) {
1007
+            return ($y & 1);
1008
+        }
1009
+
1010
+        /**
1011
+         * mask2
1012
+         * @param int $x X position
1013
+         * @param int $y Y position
1014
+         * @return int mask
1015
+         */
1016
+            protected function mask2($x, $y) {
1017
+            return ($x % 3);
1018
+        }
1019
+
1020
+        /**
1021
+         * mask3
1022
+         * @param int $x X position
1023
+         * @param int $y Y position
1024
+         * @return int mask
1025
+         */
1026
+            protected function mask3($x, $y) {
1027
+            return ($x + $y) % 3;
1028
+        }
1029
+
1030
+        /**
1031
+         * mask4
1032
+         * @param int $x X position
1033
+         * @param int $y Y position
1034
+         * @return int mask
1035
+         */
1036
+            protected function mask4($x, $y) {
1037
+            return (((int)($y / 2)) + ((int)($x / 3))) & 1;
1038
+        }
1039
+
1040
+        /**
1041
+         * mask5
1042
+         * @param int $x X position
1043
+         * @param int $y Y position
1044
+         * @return int mask
1045
+         */
1046
+            protected function mask5($x, $y) {
1047
+            return (($x * $y) & 1) + ($x * $y) % 3;
1048
+        }
1049
+
1050
+        /**
1051
+         * mask6
1052
+         * @param int $x X position
1053
+         * @param int $y Y position
1054
+         * @return int mask
1055
+         */
1056
+            protected function mask6($x, $y) {
1057
+            return ((($x * $y) & 1) + ($x * $y) % 3) & 1;
1058
+        }
1059
+
1060
+        /**
1061
+         * mask7
1062
+         * @param int $x X position
1063
+         * @param int $y Y position
1064
+         * @return int mask
1065
+         */
1066
+            protected function mask7($x, $y) {
1067
+            return ((($x * $y) % 3) + (($x + $y) & 1)) & 1;
1068
+        }
1069
+
1070
+        /**
1071
+         * Return bitmask
1072
+         * @param int $maskNo mask number
1073
+         * @param int $width width
1074
+         * @param array $frame frame
1075
+         * @return array bitmask
1076
+         */
1077
+        protected function generateMaskNo($maskNo, $width, $frame) {
1078
+            $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
1079
+            for ($y=0; $y<$width; ++$y) {
1080
+                for ($x=0; $x<$width; ++$x) {
1081
+                    if (ord($frame[$y][$x]) & 0x80) {
1082
+                        $bitMask[$y][$x] = 0;
1083
+                    } else {
1084
+                        $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
1085
+                        $bitMask[$y][$x] = ($maskFunc == 0)?1:0;
1086
+                    }
1087
+                }
1088
+            }
1089
+            return $bitMask;
1090
+        }
1091
+
1092
+        /**
1093
+         * makeMaskNo
1094
+         * @param int $maskNo
1095
+         * @param int $width
1096
+         * @param int $s
1097
+         * @param int $d
1098
+         * @param boolean $maskGenOnly
1099
+         * @return int b
1100
+         */
1101
+            protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) {
1102
+            $b = 0;
1103
+            $bitMask = array();
1104
+            $bitMask = $this->generateMaskNo($maskNo, $width, $s);
1105
+            if ($maskGenOnly) {
1106
+                return;
1107
+            }
1108
+            $d = $s;
1109
+            for ($y=0; $y<$width; ++$y) {
1110
+                for ($x=0; $x<$width; ++$x) {
1111
+                    if ($bitMask[$y][$x] == 1) {
1112
+                        $d[$y][$x] = chr(ord($s[$y][$x]) ^ (int)$bitMask[$y][$x]);
1113
+                    }
1114
+                    $b += (int)(ord($d[$y][$x]) & 1);
1115
+                }
1116
+            }
1117
+            return $b;
1118
+        }
1119
+
1120
+        /**
1121
+         * makeMask
1122
+         * @param int $width
1123
+         * @param array $frame
1124
+         * @param int $maskNo
1125
+         * @param int $level
1126
+         * @return array mask
1127
+         */
1128
+            protected function makeMask($width, $frame, $maskNo, $level) {
1129
+            $masked = array_fill(0, $width, str_repeat("\0", $width));
1130
+            $this->makeMaskNo($maskNo, $width, $frame, $masked);
1131
+            $this->writeFormatInformation($width, $masked, $maskNo, $level);
1132
+            return $masked;
1133
+        }
1134
+
1135
+        /**
1136
+         * calcN1N3
1137
+         * @param int $length
1138
+         * @return int demerit
1139
+         */
1140
+            protected function calcN1N3($length) {
1141
+            $demerit = 0;
1142
+            for ($i=0; $i<$length; ++$i) {
1143
+                if ($this->runLength[$i] >= 5) {
1144
+                    $demerit += (N1 + ($this->runLength[$i] - 5));
1145
+                }
1146
+                if ($i & 1) {
1147
+                    if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) {
1148
+                        $fact = (int)($this->runLength[$i] / 3);
1149
+                        if (($this->runLength[$i-2] == $fact)
1150
+                            AND ($this->runLength[$i-1] == $fact)
1151
+                            AND ($this->runLength[$i+1] == $fact)
1152
+                            AND ($this->runLength[$i+2] == $fact)) {
1153
+                            if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) {
1154
+                                $demerit += N3;
1155
+                            } elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) {
1156
+                                $demerit += N3;
1157
+                            }
1158
+                        }
1159
+                    }
1160
+                }
1161
+            }
1162
+            return $demerit;
1163
+        }
1164
+
1165
+        /**
1166
+         * evaluateSymbol
1167
+         * @param int $width
1168
+         * @param array $frame
1169
+         * @return int demerit
1170
+         */
1171
+            protected function evaluateSymbol($width, $frame) {
1172
+            $head = 0;
1173
+            $demerit = 0;
1174
+            for ($y=0; $y<$width; ++$y) {
1175
+                $head = 0;
1176
+                $this->runLength[0] = 1;
1177
+                $frameY = $frame[$y];
1178
+                if ($y > 0) {
1179
+                    $frameYM = $frame[$y-1];
1180
+                }
1181
+                for ($x=0; $x<$width; ++$x) {
1182
+                    if (($x > 0) AND ($y > 0)) {
1183
+                        $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
1184
+                        $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
1185
+                        if (($b22 | ($w22 ^ 1)) & 1) {
1186
+                            $demerit += N2;
1187
+                        }
1188
+                    }
1189
+                    if (($x == 0) AND (ord($frameY[$x]) & 1)) {
1190
+                        $this->runLength[0] = -1;
1191
+                        $head = 1;
1192
+                        $this->runLength[$head] = 1;
1193
+                    } elseif ($x > 0) {
1194
+                        if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
1195
+                            $head++;
1196
+                            $this->runLength[$head] = 1;
1197
+                        } else {
1198
+                            $this->runLength[$head]++;
1199
+                        }
1200
+                    }
1201
+                }
1202
+                $demerit += $this->calcN1N3($head+1);
1203
+            }
1204
+            for ($x=0; $x<$width; ++$x) {
1205
+                $head = 0;
1206
+                $this->runLength[0] = 1;
1207
+                for ($y=0; $y<$width; ++$y) {
1208
+                    if (($y == 0) AND (ord($frame[$y][$x]) & 1)) {
1209
+                        $this->runLength[0] = -1;
1210
+                        $head = 1;
1211
+                        $this->runLength[$head] = 1;
1212
+                    } elseif ($y > 0) {
1213
+                        if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
1214
+                            $head++;
1215
+                            $this->runLength[$head] = 1;
1216
+                        } else {
1217
+                            $this->runLength[$head]++;
1218
+                        }
1219
+                    }
1220
+                }
1221
+                $demerit += $this->calcN1N3($head+1);
1222
+            }
1223
+            return $demerit;
1224
+        }
1225
+
1226
+        /**
1227
+         * mask
1228
+         * @param int $width
1229
+         * @param array $frame
1230
+         * @param int $level
1231
+         * @return array best mask
1232
+         */
1233
+            protected function mask($width, $frame, $level) {
1234
+            $minDemerit = PHP_INT_MAX;
1235
+            $bestMaskNum = 0;
1236
+            $bestMask = array();
1237
+            $checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7);
1238
+            if (QR_FIND_FROM_RANDOM !== false) {
1239
+                $howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9);
1240
+                for ($i = 0; $i <  $howManuOut; ++$i) {
1241
+                    $remPos = rand (0, count($checked_masks)-1);
1242
+                    unset($checked_masks[$remPos]);
1243
+                    $checked_masks = array_values($checked_masks);
1244
+                }
1245
+            }
1246
+            $bestMask = $frame;
1247
+            foreach ($checked_masks as $i) {
1248
+                $mask = array_fill(0, $width, str_repeat("\0", $width));
1249
+                $demerit = 0;
1250
+                $blacks = 0;
1251
+                $blacks  = $this->makeMaskNo($i, $width, $frame, $mask);
1252
+                $blacks += $this->writeFormatInformation($width, $mask, $i, $level);
1253
+                $blacks  = (int)(100 * $blacks / ($width * $width));
1254
+                $demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
1255
+                $demerit += $this->evaluateSymbol($width, $mask);
1256
+                if ($demerit < $minDemerit) {
1257
+                    $minDemerit = $demerit;
1258
+                    $bestMask = $mask;
1259
+                    $bestMaskNum = $i;
1260
+                }
1261
+            }
1262
+            return $bestMask;
1263
+        }
1264
+
1265
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
1266
+
1267
+        // QRsplit
1268
+
1269
+        /**
1270
+         * Return true if the character at specified position is a number
1271
+         * @param string $str string
1272
+         * @param int $pos characted position
1273
+         * @return boolean true of false
1274
+         */
1275
+            protected function isdigitat($str, $pos) {
1276
+            if ($pos >= strlen($str)) {
1277
+                return false;
1278
+            }
1279
+            return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
1280
+        }
1281
+
1282
+        /**
1283
+         * Return true if the character at specified position is an alphanumeric character
1284
+         * @param string $str string
1285
+         * @param int $pos characted position
1286
+         * @return boolean true of false
1287
+         */
1288
+            protected function isalnumat($str, $pos) {
1289
+            if ($pos >= strlen($str)) {
1290
+                return false;
1291
+            }
1292
+            return ($this->lookAnTable(ord($str[$pos])) >= 0);
1293
+        }
1294
+
1295
+        /**
1296
+         * identifyMode
1297
+         * @param int $pos
1298
+         * @return int mode
1299
+         */
1300
+            protected function identifyMode($pos) {
1301
+            if ($pos >= strlen($this->dataStr)) {
1302
+                return QR_MODE_NL;
1303
+            }
1304
+            $c = $this->dataStr[$pos];
1305
+            if ($this->isdigitat($this->dataStr, $pos)) {
1306
+                return QR_MODE_NM;
1307
+            } elseif ($this->isalnumat($this->dataStr, $pos)) {
1308
+                return QR_MODE_AN;
1309
+            } elseif ($this->hint == QR_MODE_KJ) {
1310
+                if ($pos+1 < strlen($this->dataStr)) {
1311
+                    $d = $this->dataStr[$pos+1];
1312
+                    $word = (ord($c) << 8) | ord($d);
1313
+                    if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) {
1314
+                        return QR_MODE_KJ;
1315
+                    }
1316
+                }
1317
+            }
1318
+            return QR_MODE_8B;
1319
+        }
1320
+
1321
+        /**
1322
+         * eatNum
1323
+         * @return int run
1324
+         */
1325
+            protected function eatNum() {
1326
+            $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1327
+            $p = 0;
1328
+            while($this->isdigitat($this->dataStr, $p)) {
1329
+                $p++;
1330
+            }
1331
+            $run = $p;
1332
+            $mode = $this->identifyMode($p);
1333
+            if ($mode == QR_MODE_8B) {
1334
+                $dif = $this->estimateBitsModeNum($run) + 4 + $ln
1335
+                + $this->estimateBitsMode8(1)         // + 4 + l8
1336
+                - $this->estimateBitsMode8($run + 1); // - 4 - l8
1337
+                if ($dif > 0) {
1338
+                    return $this->eat8();
1339
+                }
1340
+            }
1341
+            if ($mode == QR_MODE_AN) {
1342
+                $dif = $this->estimateBitsModeNum($run) + 4 + $ln
1343
+                + $this->estimateBitsModeAn(1)        // + 4 + la
1344
+                - $this->estimateBitsModeAn($run + 1);// - 4 - la
1345
+                if ($dif > 0) {
1346
+                    return $this->eatAn();
1347
+                }
1348
+            }
1349
+            $this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr));
1350
+            return $run;
1351
+        }
1352
+
1353
+        /**
1354
+         * eatAn
1355
+         * @return int run
1356
+         */
1357
+            protected function eatAn() {
1358
+            $la = $this->lengthIndicator(QR_MODE_AN,  $this->version);
1359
+            $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1360
+            $p = 0;
1361
+            while($this->isalnumat($this->dataStr, $p)) {
1362
+                if ($this->isdigitat($this->dataStr, $p)) {
1363
+                    $q = $p;
1364
+                    while($this->isdigitat($this->dataStr, $q)) {
1365
+                        $q++;
1366
+                    }
1367
+                    $dif = $this->estimateBitsModeAn($p) // + 4 + la
1368
+                    + $this->estimateBitsModeNum($q - $p) + 4 + $ln
1369
+                    - $this->estimateBitsModeAn($q); // - 4 - la
1370
+                    if ($dif < 0) {
1371
+                        break;
1372
+                    } else {
1373
+                        $p = $q;
1374
+                    }
1375
+                } else {
1376
+                    $p++;
1377
+                }
1378
+            }
1379
+            $run = $p;
1380
+            if (!$this->isalnumat($this->dataStr, $p)) {
1381
+                $dif = $this->estimateBitsModeAn($run) + 4 + $la
1382
+                + $this->estimateBitsMode8(1) // + 4 + l8
1383
+                - $this->estimateBitsMode8($run + 1); // - 4 - l8
1384
+                if ($dif > 0) {
1385
+                    return $this->eat8();
1386
+                }
1387
+            }
1388
+            $this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr));
1389
+            return $run;
1390
+        }
1391
+
1392
+        /**
1393
+         * eatKanji
1394
+         * @return int run
1395
+         */
1396
+            protected function eatKanji() {
1397
+            $p = 0;
1398
+            while($this->identifyMode($p) == QR_MODE_KJ) {
1399
+                $p += 2;
1400
+            }
1401
+            $this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr));
1402
+            return $p;
1403
+        }
1404
+
1405
+        /**
1406
+         * eat8
1407
+         * @return int run
1408
+         */
1409
+            protected function eat8() {
1410
+            $la = $this->lengthIndicator(QR_MODE_AN, $this->version);
1411
+            $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
1412
+            $p = 1;
1413
+            $dataStrLen = strlen($this->dataStr);
1414
+            while($p < $dataStrLen) {
1415
+                $mode = $this->identifyMode($p);
1416
+                if ($mode == QR_MODE_KJ) {
1417
+                    break;
1418
+                }
1419
+                if ($mode == QR_MODE_NM) {
1420
+                    $q = $p;
1421
+                    while($this->isdigitat($this->dataStr, $q)) {
1422
+                        $q++;
1423
+                    }
1424
+                    $dif = $this->estimateBitsMode8($p) // + 4 + l8
1425
+                    + $this->estimateBitsModeNum($q - $p) + 4 + $ln
1426
+                    - $this->estimateBitsMode8($q); // - 4 - l8
1427
+                    if ($dif < 0) {
1428
+                        break;
1429
+                    } else {
1430
+                        $p = $q;
1431
+                    }
1432
+                } elseif ($mode == QR_MODE_AN) {
1433
+                    $q = $p;
1434
+                    while($this->isalnumat($this->dataStr, $q)) {
1435
+                        $q++;
1436
+                    }
1437
+                    $dif = $this->estimateBitsMode8($p)  // + 4 + l8
1438
+                    + $this->estimateBitsModeAn($q - $p) + 4 + $la
1439
+                    - $this->estimateBitsMode8($q); // - 4 - l8
1440
+                    if ($dif < 0) {
1441
+                        break;
1442
+                    } else {
1443
+                        $p = $q;
1444
+                    }
1445
+                } else {
1446
+                    $p++;
1447
+                }
1448
+            }
1449
+            $run = $p;
1450
+            $this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr));
1451
+            return $run;
1452
+        }
1453
+
1454
+        /**
1455
+         * splitString
1456
+         */
1457
+            protected function splitString() {
1458
+            while (strlen($this->dataStr) > 0) {
1459
+                if ($this->dataStr == '') {
1460
+                    return 0;
1461
+                }
1462
+                $mode = $this->identifyMode(0);
1463
+                switch ($mode) {
1464
+                    case QR_MODE_NM: {
1465
+                        $length = $this->eatNum();
1466
+                        break;
1467
+                    }
1468
+                    case QR_MODE_AN: {
1469
+                        $length = $this->eatAn();
1470
+                        break;
1471
+                    }
1472
+                    case QR_MODE_KJ: {
1473
+                        if ($this->hint == QR_MODE_KJ) {
1474
+                            $length = $this->eatKanji();
1475
+                        } else {
1476
+                            $length = $this->eat8();
1477
+                        }
1478
+                        break;
1479
+                    }
1480
+                    default: {
1481
+                        $length = $this->eat8();
1482
+                        break;
1483
+                    }
1484
+                }
1485
+                if ($length == 0) {
1486
+                    return 0;
1487
+                }
1488
+                if ($length < 0) {
1489
+                    return -1;
1490
+                }
1491
+                $this->dataStr = substr($this->dataStr, $length);
1492
+            }
1493
+        }
1494
+
1495
+        /**
1496
+         * toUpper
1497
+         */
1498
+            protected function toUpper() {
1499
+            $stringLen = strlen($this->dataStr);
1500
+            $p = 0;
1501
+            while ($p < $stringLen) {
1502
+                $mode = $this->identifyMode(substr($this->dataStr, $p));
1503
+                if ($mode == QR_MODE_KJ) {
1504
+                    $p += 2;
1505
+                } else {
1506
+                    if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) {
1507
+                        $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
1508
+                    }
1509
+                    $p++;
1510
+                }
1511
+            }
1512
+            return $this->dataStr;
1513
+        }
1514
+
1515
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
1516
+
1517
+        // QRinputItem
1518
+
1519
+        /**
1520
+         * newInputItem
1521
+         * @param int $mode
1522
+         * @param int $size
1523
+         * @param array $data
1524
+         * @param array $bstream
1525
+         * @return array input item
1526
+         */
1527
+            protected function newInputItem($mode, $size, $data, $bstream=null) {
1528
+            $setData = array_slice($data, 0, $size);
1529
+            if (count($setData) < $size) {
1530
+                $setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0));
1531
+            }
1532
+            if (!$this->check($mode, $size, $setData)) {
1533
+                return NULL;
1534
+            }
1535
+            $inputitem = array();
1536
+            $inputitem['mode'] = $mode;
1537
+            $inputitem['size'] = $size;
1538
+            $inputitem['data'] = $setData;
1539
+            $inputitem['bstream'] = $bstream;
1540
+            return $inputitem;
1541
+        }
1542
+
1543
+        /**
1544
+         * encodeModeNum
1545
+         * @param array $inputitem
1546
+         * @param int $version
1547
+         * @return array input item
1548
+         */
1549
+            protected function encodeModeNum($inputitem, $version) {
1550
+            $words = (int)($inputitem['size'] / 3);
1551
+            $inputitem['bstream'] = array();
1552
+            $val = 0x1;
1553
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
1554
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']);
1555
+            for ($i=0; $i < $words; ++$i) {
1556
+                $val  = (ord($inputitem['data'][$i*3  ]) - ord('0')) * 100;
1557
+                $val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10;
1558
+                $val += (ord($inputitem['data'][$i*3+2]) - ord('0'));
1559
+                $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val);
1560
+            }
1561
+            if ($inputitem['size'] - $words * 3 == 1) {
1562
+                $val = ord($inputitem['data'][$words*3]) - ord('0');
1563
+                $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
1564
+            } elseif (($inputitem['size'] - ($words * 3)) == 2) {
1565
+                $val  = (ord($inputitem['data'][$words*3  ]) - ord('0')) * 10;
1566
+                $val += (ord($inputitem['data'][$words*3+1]) - ord('0'));
1567
+                $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val);
1568
+            }
1569
+            return $inputitem;
1570
+        }
1571
+
1572
+        /**
1573
+         * encodeModeAn
1574
+         * @param array $inputitem
1575
+         * @param int $version
1576
+         * @return array input item
1577
+         */
1578
+            protected function encodeModeAn($inputitem, $version) {
1579
+            $words = (int)($inputitem['size'] / 2);
1580
+            $inputitem['bstream'] = array();
1581
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02);
1582
+            $inputitem['bstream'] = $this->appendNum(v, $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']);
1583
+            for ($i=0; $i < $words; ++$i) {
1584
+                $val  = (int)$this->lookAnTable(ord($inputitem['data'][$i*2  ])) * 45;
1585
+                $val += (int)$this->lookAnTable(ord($inputitem['data'][$i*2+1]));
1586
+                $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val);
1587
+            }
1588
+            if ($inputitem['size'] & 1) {
1589
+                $val = $this->lookAnTable(ord($inputitem['data'][($words * 2)]));
1590
+                $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val);
1591
+            }
1592
+            return $inputitem;
1593
+        }
1594
+
1595
+        /**
1596
+         * encodeMode8
1597
+         * @param array $inputitem
1598
+         * @param int $version
1599
+         * @return array input item
1600
+         */
1601
+            protected function encodeMode8($inputitem, $version) {
1602
+            $inputitem['bstream'] = array();
1603
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4);
1604
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']);
1605
+            for ($i=0; $i < $inputitem['size']; ++$i) {
1606
+                $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i]));
1607
+            }
1608
+            return $inputitem;
1609
+        }
1610
+
1611
+        /**
1612
+         * encodeModeKanji
1613
+         * @param array $inputitem
1614
+         * @param int $version
1615
+         * @return array input item
1616
+         */
1617
+            protected function encodeModeKanji($inputitem, $version) {
1618
+            $inputitem['bstream'] = array();
1619
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8);
1620
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2));
1621
+            for ($i=0; $i<$inputitem['size']; $i+=2) {
1622
+                $val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]);
1623
+                if ($val <= 0x9ffc) {
1624
+                    $val -= 0x8140;
1625
+                } else {
1626
+                    $val -= 0xc140;
1627
+                }
1628
+                $h = ($val >> 8) * 0xc0;
1629
+                $val = ($val & 0xff) + $h;
1630
+                $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val);
1631
+            }
1632
+            return $inputitem;
1633
+        }
1634
+
1635
+        /**
1636
+         * encodeModeStructure
1637
+         * @param array $inputitem
1638
+         * @return array input item
1639
+         */
1640
+            protected function encodeModeStructure($inputitem) {
1641
+            $inputitem['bstream'] = array();
1642
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03);
1643
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1);
1644
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1);
1645
+            $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2]));
1646
+            return $inputitem;
1647
+        }
1648
+
1649
+        /**
1650
+         * encodeBitStream
1651
+         * @param array $inputitem
1652
+         * @param int $version
1653
+         * @return array input item
1654
+         */
1655
+            protected function encodeBitStream($inputitem, $version) {
1656
+            $inputitem['bstream'] = array();
1657
+            $words = $this->maximumWords($inputitem['mode'], $version);
1658
+            if ($inputitem['size'] > $words) {
1659
+                $st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']);
1660
+                $st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words));
1661
+                $st1 = $this->encodeBitStream($st1, $version);
1662
+                $st2 = $this->encodeBitStream($st2, $version);
1663
+                $inputitem['bstream'] = array();
1664
+                $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']);
1665
+                $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']);
1666
+            } else {
1667
+                switch($inputitem['mode']) {
1668
+                    case QR_MODE_NM: {
1669
+                        $inputitem = $this->encodeModeNum($inputitem, $version);
1670
+                        break;
1671
+                    }
1672
+                    case QR_MODE_AN: {
1673
+                        $inputitem = $this->encodeModeAn($inputitem, $version);
1674
+                        break;
1675
+                    }
1676
+                    case QR_MODE_8B: {
1677
+                        $inputitem = $this->encodeMode8($inputitem, $version);
1678
+                        break;
1679
+                    }
1680
+                    case QR_MODE_KJ: {
1681
+                        $inputitem = $this->encodeModeKanji($inputitem, $version);
1682
+                        break;
1683
+                    }
1684
+                    case QR_MODE_ST: {
1685
+                        $inputitem = $this->encodeModeStructure($inputitem);
1686
+                        break;
1687
+                    }
1688
+                    default: {
1689
+                        break;
1690
+                    }
1691
+                }
1692
+            }
1693
+            return $inputitem;
1694
+        }
1695
+
1696
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
1697
+
1698
+        // QRinput
1699
+
1700
+        /**
1701
+         * Append data to an input object.
1702
+         * The data is copied and appended to the input object.
1703
+         * @param array items input items
1704
+         * @param int $mode encoding mode.
1705
+         * @param int $size size of data (byte).
1706
+         * @param array $data array of input data.
1707
+         * @return items
1708
+         *
1709
+         */
1710
+        protected function appendNewInputItem($items, $mode, $size, $data) {
1711
+            $items[] = $this->newInputItem($mode, $size, $data);
1712
+            return $items;
1713
+        }
1714
+
1715
+        /**
1716
+         * insertStructuredAppendHeader
1717
+         * @param array $items
1718
+         * @param int $size
1719
+         * @param int $index
1720
+         * @param int $parity
1721
+         * @return array items
1722
+         */
1723
+            protected function insertStructuredAppendHeader($items, $size, $index, $parity) {
1724
+            if ($size > MAX_STRUCTURED_SYMBOLS) {
1725
+                return -1;
1726
+            }
1727
+            if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) {
1728
+                return -1;
1729
+            }
1730
+            $buf = array($size, $index, $parity);
1731
+            $entry = $this->newInputItem(QR_MODE_ST, 3, buf);
1732
+            array_unshift($items, $entry);
1733
+            return $items;
1734
+        }
1735
+
1736
+        /**
1737
+         * calcParity
1738
+         * @param array $items
1739
+         * @return int parity
1740
+         */
1741
+            protected function calcParity($items) {
1742
+            $parity = 0;
1743
+            foreach ($items as $item) {
1744
+                if ($item['mode'] != QR_MODE_ST) {
1745
+                    for ($i=$item['size']-1; $i>=0; --$i) {
1746
+                        $parity ^= $item['data'][$i];
1747
+                    }
1748
+                }
1749
+            }
1750
+            return $parity;
1751
+        }
1752
+
1753
+        /**
1754
+         * checkModeNum
1755
+         * @param int $size
1756
+         * @param array $data
1757
+         * @return boolean true or false
1758
+         */
1759
+            protected function checkModeNum($size, $data) {
1760
+            for ($i=0; $i<$size; ++$i) {
1761
+                if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){
1762
+                    return false;
1763
+                }
1764
+            }
1765
+            return true;
1766
+        }
1767
+
1768
+        /**
1769
+         * estimateBitsModeNum
1770
+         * @param int $size
1771
+         * @return int number of bits
1772
+         */
1773
+            protected function estimateBitsModeNum($size) {
1774
+            $w = (int)$size / 3;
1775
+            $bits = $w * 10;
1776
+            switch($size - $w * 3) {
1777
+                case 1: {
1778
+                    $bits += 4;
1779
+                    break;
1780
+                }
1781
+                case 2: {
1782
+                    $bits += 7;
1783
+                    break;
1784
+                }
1785
+                default: {
1786
+                    break;
1787
+                }
1788
+            }
1789
+            return $bits;
1790
+        }
1791
+
1792
+        /**
1793
+         * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19).
1794
+         * @param int $c character value
1795
+         * @return value
1796
+         */
1797
+        protected function lookAnTable($c) {
1798
+            return (($c > 127)?-1:$this->anTable[$c]);
1799
+        }
1800
+
1801
+        /**
1802
+         * checkModeAn
1803
+         * @param int $size
1804
+         * @param array $data
1805
+         * @return boolean true or false
1806
+         */
1807
+            protected function checkModeAn($size, $data) {
1808
+            for ($i=0; $i<$size; ++$i) {
1809
+                if ($this->lookAnTable(ord($data[$i])) == -1) {
1810
+                    return false;
1811
+                }
1812
+            }
1813
+            return true;
1814
+        }
1815
+
1816
+        /**
1817
+         * estimateBitsModeAn
1818
+         * @param int $size
1819
+         * @return int number of bits
1820
+         */
1821
+            protected function estimateBitsModeAn($size) {
1822
+            $w = (int)($size / 2);
1823
+            $bits = $w * 11;
1824
+            if ($size & 1) {
1825
+                $bits += 6;
1826
+            }
1827
+            return $bits;
1828
+        }
1829
+
1830
+        /**
1831
+         * estimateBitsMode8
1832
+         * @param int $size
1833
+         * @return int number of bits
1834
+         */
1835
+            protected function estimateBitsMode8($size) {
1836
+            return $size * 8;
1837
+        }
1838
+
1839
+        /**
1840
+         * estimateBitsModeKanji
1841
+         * @param int $size
1842
+         * @return int number of bits
1843
+         */
1844
+            protected function estimateBitsModeKanji($size) {
1845
+            return (int)(($size / 2) * 13);
1846
+        }
1847
+
1848
+        /**
1849
+         * checkModeKanji
1850
+         * @param int $size
1851
+         * @param array $data
1852
+         * @return boolean true or false
1853
+         */
1854
+            protected function checkModeKanji($size, $data) {
1855
+            if ($size & 1) {
1856
+                return false;
1857
+            }
1858
+            for ($i=0; $i<$size; $i+=2) {
1859
+                $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
1860
+                if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) {
1861
+                    return false;
1862
+                }
1863
+            }
1864
+            return true;
1865
+        }
1866
+
1867
+        /**
1868
+         * Validate the input data.
1869
+         * @param int $mode encoding mode.
1870
+         * @param int $size size of data (byte).
1871
+         * @param array data data to validate
1872
+         * @return boolean true in case of valid data, false otherwise
1873
+         */
1874
+        protected function check($mode, $size, $data) {
1875
+            if ($size <= 0) {
1876
+                return false;
1877
+            }
1878
+            switch($mode) {
1879
+                case QR_MODE_NM: {
1880
+                    return $this->checkModeNum($size, $data);
1881
+                }
1882
+                case QR_MODE_AN: {
1883
+                    return $this->checkModeAn($size, $data);
1884
+                }
1885
+                case QR_MODE_KJ: {
1886
+                    return $this->checkModeKanji($size, $data);
1887
+                }
1888
+                case QR_MODE_8B: {
1889
+                    return true;
1890
+                }
1891
+                case QR_MODE_ST: {
1892
+                    return true;
1893
+                }
1894
+                default: {
1895
+                    break;
1896
+                }
1897
+            }
1898
+            return false;
1899
+        }
1900
+
1901
+        /**
1902
+         * estimateBitStreamSize
1903
+         * @param array $items
1904
+         * @param int $version
1905
+         * @return int bits
1906
+         */
1907
+            protected function estimateBitStreamSize($items, $version) {
1908
+            $bits = 0;
1909
+            if ($version == 0) {
1910
+                $version = 1;
1911
+            }
1912
+            foreach ($items as $item) {
1913
+                switch($item['mode']) {
1914
+                    case QR_MODE_NM: {
1915
+                        $bits = $this->estimateBitsModeNum($item['size']);
1916
+                        break;
1917
+                    }
1918
+                    case QR_MODE_AN: {
1919
+                        $bits = $this->estimateBitsModeAn($item['size']);
1920
+                        break;
1921
+                    }
1922
+                    case QR_MODE_8B: {
1923
+                        $bits = $this->estimateBitsMode8($item['size']);
1924
+                        break;
1925
+                    }
1926
+                    case QR_MODE_KJ: {
1927
+                        $bits = $this->estimateBitsModeKanji($item['size']);
1928
+                        break;
1929
+                    }
1930
+                    case QR_MODE_ST: {
1931
+                        return STRUCTURE_HEADER_BITS;
1932
+                    }
1933
+                    default: {
1934
+                        return 0;
1935
+                    }
1936
+                }
1937
+                $l = $this->lengthIndicator($item['mode'], $version);
1938
+                $m = 1 << $l;
1939
+                $num = (int)(($item['size'] + $m - 1) / $m);
1940
+                $bits += $num * (4 + $l);
1941
+            }
1942
+            return $bits;
1943
+        }
1944
+
1945
+        /**
1946
+         * estimateVersion
1947
+         * @param array $items
1948
+         * @return int version
1949
+         */
1950
+            protected function estimateVersion($items) {
1951
+            $version = 0;
1952
+            $prev = 0;
1953
+            do {
1954
+                $prev = $version;
1955
+                $bits = $this->estimateBitStreamSize($items, $prev);
1956
+                $version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
1957
+                if ($version < 0) {
1958
+                    return -1;
1959
+                }
1960
+            } while ($version > $prev);
1961
+            return $version;
1962
+        }
1963
+
1964
+        /**
1965
+         * lengthOfCode
1966
+         * @param int $mode
1967
+         * @param int $version
1968
+         * @param int $bits
1969
+         * @return int size
1970
+         */
1971
+            protected function lengthOfCode($mode, $version, $bits) {
1972
+            $payload = $bits - 4 - $this->lengthIndicator($mode, $version);
1973
+            switch($mode) {
1974
+                case QR_MODE_NM: {
1975
+                    $chunks = (int)($payload / 10);
1976
+                    $remain = $payload - $chunks * 10;
1977
+                    $size = $chunks * 3;
1978
+                    if ($remain >= 7) {
1979
+                        $size += 2;
1980
+                    } elseif ($remain >= 4) {
1981
+                        $size += 1;
1982
+                    }
1983
+                    break;
1984
+                }
1985
+                case QR_MODE_AN: {
1986
+                    $chunks = (int)($payload / 11);
1987
+                    $remain = $payload - $chunks * 11;
1988
+                    $size = $chunks * 2;
1989
+                    if ($remain >= 6) {
1990
+                        ++$size;
1991
+                    }
1992
+                    break;
1993
+                }
1994
+                case QR_MODE_8B: {
1995
+                    $size = (int)($payload / 8);
1996
+                    break;
1997
+                }
1998
+                case QR_MODE_KJ: {
1999
+                    $size = (int)(($payload / 13) * 2);
2000
+                    break;
2001
+                }
2002
+                case QR_MODE_ST: {
2003
+                    $size = (int)($payload / 8);
2004
+                    break;
2005
+                }
2006
+                default: {
2007
+                    $size = 0;
2008
+                    break;
2009
+                }
2010
+            }
2011
+            $maxsize = $this->maximumWords($mode, $version);
2012
+            if ($size < 0) {
2013
+                $size = 0;
2014
+            }
2015
+            if ($size > $maxsize) {
2016
+                $size = $maxsize;
2017
+            }
2018
+            return $size;
2019
+        }
2020
+
2021
+        /**
2022
+         * createBitStream
2023
+         * @param array $items
2024
+         * @return array of items and total bits
2025
+         */
2026
+            protected function createBitStream($items) {
2027
+            $total = 0;
2028
+            foreach ($items as $key => $item) {
2029
+                $items[$key] = $this->encodeBitStream($item, $this->version);
2030
+                $bits = count($items[$key]['bstream']);
2031
+                $total += $bits;
2032
+            }
2033
+            return array($items, $total);
2034
+        }
2035
+
2036
+        /**
2037
+         * convertData
2038
+         * @param array $items
2039
+         * @return array items
2040
+         */
2041
+            protected function convertData($items) {
2042
+            $ver = $this->estimateVersion($items);
2043
+            if ($ver > $this->version) {
2044
+                $this->version = $ver;
2045
+            }
2046
+            for (;;) {
2047
+                $cbs = $this->createBitStream($items);
2048
+                $items = $cbs[0];
2049
+                $bits = $cbs[1];
2050
+                if ($bits < 0) {
2051
+                    return -1;
2052
+                }
2053
+                $ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
2054
+                if ($ver < 0) {
2055
+                    return -1;
2056
+                } elseif ($ver > $this->version) {
2057
+                    $this->version = $ver;
2058
+                } else {
2059
+                    break;
2060
+                }
2061
+            }
2062
+            return $items;
2063
+        }
2064
+
2065
+        /**
2066
+         * Append Padding Bit to bitstream
2067
+         * @param array $bstream
2068
+         * @return array bitstream
2069
+         */
2070
+            protected function appendPaddingBit($bstream) {
2071
+            $bits = count($bstream);
2072
+            $maxwords = $this->getDataLength($this->version, $this->level);
2073
+            $maxbits = $maxwords * 8;
2074
+            if ($maxbits == $bits) {
2075
+                return 0;
2076
+            }
2077
+            if ($maxbits - $bits < 5) {
2078
+                return $this->appendNum($bstream, $maxbits - $bits, 0);
2079
+            }
2080
+            $bits += 4;
2081
+            $words = (int)(($bits + 7) / 8);
2082
+            $padding = array();
2083
+            $padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0);
2084
+            $padlen = $maxwords - $words;
2085
+            if ($padlen > 0) {
2086
+                $padbuf = array();
2087
+                for ($i=0; $i<$padlen; ++$i) {
2088
+                    $padbuf[$i] = ($i&1)?0x11:0xec;
2089
+                }
2090
+                $padding = $this->appendBytes($padding, $padlen, $padbuf);
2091
+            }
2092
+            return $this->appendBitstream($bstream, $padding);
2093
+        }
2094
+
2095
+        /**
2096
+         * mergeBitStream
2097
+         * @param array $bstream
2098
+         * @return array bitstream
2099
+         */
2100
+            protected function mergeBitStream($items) {
2101
+            $items = $this->convertData($items);
2102
+            $bstream = array();
2103
+            foreach ($items as $item) {
2104
+                $bstream = $this->appendBitstream($bstream, $item['bstream']);
2105
+            }
2106
+            return $bstream;
2107
+        }
2108
+
2109
+        /**
2110
+         * Returns a stream of bits.
2111
+         * @param int $items
2112
+         * @return array padded merged byte stream
2113
+         */
2114
+        protected function getBitStream($items) {
2115
+            $bstream = $this->mergeBitStream($items);
2116
+            return $this->appendPaddingBit($bstream);
2117
+        }
2118
+
2119
+        /**
2120
+         * Pack all bit streams padding bits into a byte array.
2121
+         * @param int $items
2122
+         * @return array padded merged byte stream
2123
+         */
2124
+        protected function getByteStream($items) {
2125
+            $bstream = $this->getBitStream($items);
2126
+            return $this->bitstreamToByte($bstream);
2127
+        }
2128
+
2129
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
2130
+
2131
+        // QRbitstream
2132
+
2133
+        /**
2134
+         * Return an array with zeros
2135
+         * @param int $setLength array size
2136
+         * @return array
2137
+         */
2138
+            protected function allocate($setLength) {
2139
+            return array_fill(0, $setLength, 0);
2140
+        }
2141
+
2142
+        /**
2143
+         * Return new bitstream from number
2144
+         * @param int $bits number of bits
2145
+         * @param int $num number
2146
+         * @return array bitstream
2147
+         */
2148
+            protected function newFromNum($bits, $num) {
2149
+            $bstream = $this->allocate($bits);
2150
+            $mask = 1 << ($bits - 1);
2151
+            for ($i=0; $i<$bits; ++$i) {
2152
+                if ($num & $mask) {
2153
+                    $bstream[$i] = 1;
2154
+                } else {
2155
+                    $bstream[$i] = 0;
2156
+                }
2157
+                $mask = $mask >> 1;
2158
+            }
2159
+            return $bstream;
2160
+        }
2161
+
2162
+        /**
2163
+         * Return new bitstream from bytes
2164
+         * @param int $size size
2165
+         * @param array $data bytes
2166
+         * @return array bitstream
2167
+         */
2168
+            protected function newFromBytes($size, $data) {
2169
+            $bstream = $this->allocate($size * 8);
2170
+            $p=0;
2171
+            for ($i=0; $i<$size; ++$i) {
2172
+                $mask = 0x80;
2173
+                for ($j=0; $j<8; ++$j) {
2174
+                    if ($data[$i] & $mask) {
2175
+                        $bstream[$p] = 1;
2176
+                    } else {
2177
+                        $bstream[$p] = 0;
2178
+                    }
2179
+                    $p++;
2180
+                    $mask = $mask >> 1;
2181
+                }
2182
+            }
2183
+            return $bstream;
2184
+        }
2185
+
2186
+        /**
2187
+         * Append one bitstream to another
2188
+         * @param array $bitstream original bitstream
2189
+         * @param array $append bitstream to append
2190
+         * @return array bitstream
2191
+         */
2192
+            protected function appendBitstream($bitstream, $append) {
2193
+            if ((!is_array($append)) OR (count($append) == 0)) {
2194
+                return $bitstream;
2195
+            }
2196
+            if (count($bitstream) == 0) {
2197
+                return $append;
2198
+            }
2199
+            return array_values(array_merge($bitstream, $append));
2200
+        }
2201
+
2202
+        /**
2203
+         * Append one bitstream created from number to another
2204
+         * @param array $bitstream original bitstream
2205
+         * @param int $bits number of bits
2206
+         * @param int $num number
2207
+         * @return array bitstream
2208
+         */
2209
+            protected function appendNum($bitstream, $bits, $num) {
2210
+            if ($bits == 0) {
2211
+                return 0;
2212
+            }
2213
+            $b = $this->newFromNum($bits, $num);
2214
+            return $this->appendBitstream($bitstream, $b);
2215
+        }
2216
+
2217
+        /**
2218
+         * Append one bitstream created from bytes to another
2219
+         * @param array $bitstream original bitstream
2220
+         * @param int $size size
2221
+         * @param array $data bytes
2222
+         * @return array bitstream
2223
+         */
2224
+            protected function appendBytes($bitstream, $size, $data) {
2225
+            if ($size == 0) {
2226
+                return 0;
2227
+            }
2228
+            $b = $this->newFromBytes($size, $data);
2229
+            return $this->appendBitstream($bitstream, $b);
2230
+        }
2231
+
2232
+        /**
2233
+         * Convert bitstream to bytes
2234
+         * @param array $bitstream original bitstream
2235
+         * @return array of bytes
2236
+         */
2237
+            protected function bitstreamToByte($bstream) {
2238
+            $size = count($bstream);
2239
+            if ($size == 0) {
2240
+                return array();
2241
+            }
2242
+            $data = array_fill(0, (int)(($size + 7) / 8), 0);
2243
+            $bytes = (int)($size / 8);
2244
+            $p = 0;
2245
+            for ($i=0; $i<$bytes; $i++) {
2246
+                $v = 0;
2247
+                for ($j=0; $j<8; $j++) {
2248
+                    $v = $v << 1;
2249
+                    $v |= $bstream[$p];
2250
+                    $p++;
2251
+                }
2252
+                $data[$i] = $v;
2253
+            }
2254
+            if ($size & 7) {
2255
+                $v = 0;
2256
+                for ($j=0; $j<($size & 7); $j++) {
2257
+                    $v = $v << 1;
2258
+                    $v |= $bstream[$p];
2259
+                    $p++;
2260
+                }
2261
+                $data[$bytes] = $v;
2262
+            }
2263
+            return $data;
2264
+        }
2265
+
2266
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
2267
+
2268
+        // QRspec
2269
+
2270
+        /**
2271
+         * Replace a value on the array at the specified position
2272
+         * @param array $srctab
2273
+         * @param int $x X position
2274
+         * @param int $y Y position
2275
+         * @param string $repl value to replace
2276
+         * @param int $replLen length of the repl string
2277
+         * @return array srctab
2278
+         */
2279
+            protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) {
2280
+            $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
2281
+            return $srctab;
2282
+        }
2283
+
2284
+        /**
2285
+         * Return maximum data code length (bytes) for the version.
2286
+         * @param int $version version
2287
+         * @param int $level error correction level
2288
+         * @return int maximum size (bytes)
2289
+         */
2290
+        protected function getDataLength($version, $level) {
2291
+            return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level];
2292
+        }
2293
+
2294
+        /**
2295
+         * Return maximum error correction code length (bytes) for the version.
2296
+         * @param int $version version
2297
+         * @param int $level error correction level
2298
+         * @return int ECC size (bytes)
2299
+         */
2300
+        protected function getECCLength($version, $level){
2301
+            return $this->capacity[$version][QRCAP_EC][$level];
2302
+        }
2303
+
2304
+        /**
2305
+         * Return the width of the symbol for the version.
2306
+         * @param int $version version
2307
+         * @return int width
2308
+         */
2309
+        protected function getWidth($version) {
2310
+            return $this->capacity[$version][QRCAP_WIDTH];
2311
+        }
2312
+
2313
+        /**
2314
+         * Return the numer of remainder bits.
2315
+         * @param int $version version
2316
+         * @return int number of remainder bits
2317
+         */
2318
+        protected function getRemainder($version) {
2319
+            return $this->capacity[$version][QRCAP_REMINDER];
2320
+        }
2321
+
2322
+        /**
2323
+         * Return a version number that satisfies the input code length.
2324
+         * @param int $size input code length (byte)
2325
+         * @param int $level error correction level
2326
+         * @return int version number
2327
+         */
2328
+        protected function getMinimumVersion($size, $level) {
2329
+            for ($i=1; $i <= QRSPEC_VERSION_MAX; ++$i) {
2330
+                $words  = $this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level];
2331
+                if ($words >= $size) {
2332
+                    return $i;
2333
+                }
2334
+            }
2335
+            return -1;
2336
+        }
2337
+
2338
+        /**
2339
+         * Return the size of length indicator for the mode and version.
2340
+         * @param int $mode encoding mode
2341
+         * @param int $version version
2342
+         * @return int the size of the appropriate length indicator (bits).
2343
+         */
2344
+        protected function lengthIndicator($mode, $version) {
2345
+            if ($mode == QR_MODE_ST) {
2346
+                return 0;
2347
+            }
2348
+            if ($version <= 9) {
2349
+                $l = 0;
2350
+            } elseif ($version <= 26) {
2351
+                $l = 1;
2352
+            } else {
2353
+                $l = 2;
2354
+            }
2355
+            return $this->lengthTableBits[$mode][$l];
2356
+        }
2357
+
2358
+        /**
2359
+         * Return the maximum length for the mode and version.
2360
+         * @param int $mode encoding mode
2361
+         * @param int $version version
2362
+         * @return int the maximum length (bytes)
2363
+         */
2364
+        protected function maximumWords($mode, $version) {
2365
+            if ($mode == QR_MODE_ST) {
2366
+                return 3;
2367
+            }
2368
+            if ($version <= 9) {
2369
+                $l = 0;
2370
+            } else if ($version <= 26) {
2371
+                $l = 1;
2372
+            } else {
2373
+                $l = 2;
2374
+            }
2375
+            $bits = $this->lengthTableBits[$mode][$l];
2376
+            $words = (1 << $bits) - 1;
2377
+            if ($mode == QR_MODE_KJ) {
2378
+                $words *= 2; // the number of bytes is required
2379
+            }
2380
+            return $words;
2381
+        }
2382
+
2383
+        /**
2384
+         * Return an array of ECC specification.
2385
+         * @param int $version version
2386
+         * @param int $level error correction level
2387
+         * @param array $spec an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code}
2388
+         * @return array spec
2389
+         */
2390
+        protected function getEccSpec($version, $level, $spec) {
2391
+            if (count($spec) < 5) {
2392
+                $spec = array(0, 0, 0, 0, 0);
2393
+            }
2394
+            $b1 = $this->eccTable[$version][$level][0];
2395
+            $b2 = $this->eccTable[$version][$level][1];
2396
+            $data = $this->getDataLength($version, $level);
2397
+            $ecc = $this->getECCLength($version, $level);
2398
+            if ($b2 == 0) {
2399
+                $spec[0] = $b1;
2400
+                $spec[1] = (int)($data / $b1);
2401
+                $spec[2] = (int)($ecc / $b1);
2402
+                $spec[3] = 0;
2403
+                $spec[4] = 0;
2404
+            } else {
2405
+                $spec[0] = $b1;
2406
+                $spec[1] = (int)($data / ($b1 + $b2));
2407
+                $spec[2] = (int)($ecc  / ($b1 + $b2));
2408
+                $spec[3] = $b2;
2409
+                $spec[4] = $spec[1] + 1;
2410
+            }
2411
+            return $spec;
2412
+        }
2413
+
2414
+        /**
2415
+         * Put an alignment marker.
2416
+         * @param array $frame frame
2417
+         * @param int $width width
2418
+         * @param int $ox X center coordinate of the pattern
2419
+         * @param int $oy Y center coordinate of the pattern
2420
+         * @return array frame
2421
+         */
2422
+        protected function putAlignmentMarker($frame, $ox, $oy) {
2423
+            $finder = array(
2424
+                "\xa1\xa1\xa1\xa1\xa1",
2425
+                "\xa1\xa0\xa0\xa0\xa1",
2426
+                "\xa1\xa0\xa1\xa0\xa1",
2427
+                "\xa1\xa0\xa0\xa0\xa1",
2428
+                "\xa1\xa1\xa1\xa1\xa1"
2429
+                );
2430
+            $yStart = $oy - 2;
2431
+            $xStart = $ox - 2;
2432
+            for ($y=0; $y < 5; $y++) {
2433
+                $frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]);
2434
+            }
2435
+            return $frame;
2436
+        }
2437
+
2438
+        /**
2439
+         * Put an alignment pattern.
2440
+         * @param int $version version
2441
+         * @param array $fram frame
2442
+         * @param int $width width
2443
+         * @return array frame
2444
+         */
2445
+            protected function putAlignmentPattern($version, $frame, $width) {
2446
+            if ($version < 2) {
2447
+                return $frame;
2448
+            }
2449
+            $d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0];
2450
+            if ($d < 0) {
2451
+                $w = 2;
2452
+            } else {
2453
+                $w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2);
2454
+            }
2455
+            if ($w * $w - 3 == 1) {
2456
+                $x = $this->alignmentPattern[$version][0];
2457
+                $y = $this->alignmentPattern[$version][0];
2458
+                $frame = $this->putAlignmentMarker($frame, $x, $y);
2459
+                return $frame;
2460
+            }
2461
+            $cx = $this->alignmentPattern[$version][0];
2462
+            $wo = $w - 1;
2463
+            for ($x=1; $x < $wo; ++$x) {
2464
+                $frame = $this->putAlignmentMarker($frame, 6, $cx);
2465
+                $frame = $this->putAlignmentMarker($frame, $cx,  6);
2466
+                $cx += $d;
2467
+            }
2468
+            $cy = $this->alignmentPattern[$version][0];
2469
+            for ($y=0; $y < $wo; ++$y) {
2470
+                $cx = $this->alignmentPattern[$version][0];
2471
+                for ($x=0; $x < $wo; ++$x) {
2472
+                    $frame = $this->putAlignmentMarker($frame, $cx, $cy);
2473
+                    $cx += $d;
2474
+                }
2475
+                $cy += $d;
2476
+            }
2477
+            return $frame;
2478
+        }
2479
+
2480
+        /**
2481
+         * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits.
2482
+         * @param int $version version
2483
+         * @return BCH encoded version information pattern
2484
+         */
2485
+        protected function getVersionPattern($version) {
2486
+            if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) {
2487
+                return 0;
2488
+            }
2489
+            return $this->versionPattern[($version - 7)];
2490
+        }
2491
+
2492
+        /**
2493
+         * Return BCH encoded format information pattern.
2494
+         * @param array $mask
2495
+         * @param int $level error correction level
2496
+         * @return BCH encoded format information pattern
2497
+         */
2498
+        protected function getFormatInfo($mask, $level) {
2499
+            if (($mask < 0) OR ($mask > 7)) {
2500
+                return 0;
2501
+            }
2502
+            if (($level < 0) OR ($level > 3)) {
2503
+                return 0;
2504
+            }
2505
+            return $this->formatInfo[$level][$mask];
2506
+        }
2507
+
2508
+        /**
2509
+         * Put a finder pattern.
2510
+         * @param array $frame frame
2511
+         * @param int $width width
2512
+         * @param int $ox X center coordinate of the pattern
2513
+         * @param int $oy Y center coordinate of the pattern
2514
+         * @return array frame
2515
+         */
2516
+        protected function putFinderPattern($frame, $ox, $oy) {
2517
+            $finder = array(
2518
+            "\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
2519
+            "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
2520
+            "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
2521
+            "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
2522
+            "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
2523
+            "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
2524
+            "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
2525
+            );
2526
+            for ($y=0; $y < 7; $y++) {
2527
+                $frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]);
2528
+            }
2529
+            return $frame;
2530
+        }
2531
+
2532
+        /**
2533
+         * Return a copy of initialized frame.
2534
+         * @param int $version version
2535
+         * @return Array of unsigned char.
2536
+         */
2537
+        protected function createFrame($version) {
2538
+            $width = $this->capacity[$version][QRCAP_WIDTH];
2539
+            $frameLine = str_repeat ("\0", $width);
2540
+            $frame = array_fill(0, $width, $frameLine);
2541
+            // Finder pattern
2542
+            $frame = $this->putFinderPattern($frame, 0, 0);
2543
+            $frame = $this->putFinderPattern($frame, $width - 7, 0);
2544
+            $frame = $this->putFinderPattern($frame, 0, $width - 7);
2545
+            // Separator
2546
+            $yOffset = $width - 7;
2547
+            for ($y=0; $y < 7; ++$y) {
2548
+                $frame[$y][7] = "\xc0";
2549
+                $frame[$y][$width - 8] = "\xc0";
2550
+                $frame[$yOffset][7] = "\xc0";
2551
+                ++$yOffset;
2552
+            }
2553
+            $setPattern = str_repeat("\xc0", 8);
2554
+            $frame = $this->qrstrset($frame, 0, 7, $setPattern);
2555
+            $frame = $this->qrstrset($frame, $width-8, 7, $setPattern);
2556
+            $frame = $this->qrstrset($frame, 0, $width - 8, $setPattern);
2557
+            // Format info
2558
+            $setPattern = str_repeat("\x84", 9);
2559
+            $frame = $this->qrstrset($frame, 0, 8, $setPattern);
2560
+            $frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8);
2561
+            $yOffset = $width - 8;
2562
+            for ($y=0; $y < 8; ++$y,++$yOffset) {
2563
+                $frame[$y][8] = "\x84";
2564
+                $frame[$yOffset][8] = "\x84";
2565
+            }
2566
+            // Timing pattern
2567
+            $wo = $width - 15;
2568
+            for ($i=1; $i < $wo; ++$i) {
2569
+                $frame[6][7+$i] = chr(0x90 | ($i & 1));
2570
+                $frame[7+$i][6] = chr(0x90 | ($i & 1));
2571
+            }
2572
+            // Alignment pattern
2573
+            $frame = $this->putAlignmentPattern($version, $frame, $width);
2574
+            // Version information
2575
+            if ($version >= 7) {
2576
+                $vinf = $this->getVersionPattern($version);
2577
+                $v = $vinf;
2578
+                for ($x=0; $x<6; ++$x) {
2579
+                    for ($y=0; $y<3; ++$y) {
2580
+                        $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
2581
+                        $v = $v >> 1;
2582
+                    }
2583
+                }
2584
+                $v = $vinf;
2585
+                for ($y=0; $y<6; ++$y) {
2586
+                    for ($x=0; $x<3; ++$x) {
2587
+                        $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
2588
+                        $v = $v >> 1;
2589
+                    }
2590
+                }
2591
+            }
2592
+            // and a little bit...
2593
+            $frame[$width - 8][8] = "\x81";
2594
+            return $frame;
2595
+        }
2596
+
2597
+        /**
2598
+         * Set new frame for the specified version.
2599
+         * @param int $version version
2600
+         * @return Array of unsigned char.
2601
+         */
2602
+        protected function newFrame($version) {
2603
+            if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) {
2604
+                return NULL;
2605
+            }
2606
+            if (!isset($this->frames[$version])) {
2607
+                $this->frames[$version] = $this->createFrame($version);
2608
+            }
2609
+            if (is_null($this->frames[$version])) {
2610
+                return NULL;
2611
+            }
2612
+            return $this->frames[$version];
2613
+        }
2614
+
2615
+        /**
2616
+         * Return block number 0
2617
+         * @param array $spec
2618
+         * @return int value
2619
+         */
2620
+            protected function rsBlockNum($spec) {
2621
+            return ($spec[0] + $spec[3]);
2622
+        }
2623
+
2624
+        /**
2625
+         * Return block number 1
2626
+         * @param array $spec
2627
+         * @return int value
2628
+         */
2629
+            protected function rsBlockNum1($spec) {
2630
+            return $spec[0];
2631
+        }
2632
+
2633
+        /**
2634
+         * Return data codes 1
2635
+         * @param array $spec
2636
+         * @return int value
2637
+         */
2638
+            protected function rsDataCodes1($spec) {
2639
+            return $spec[1];
2640
+        }
2641
+
2642
+        /**
2643
+         * Return ecc codes 1
2644
+         * @param array $spec
2645
+         * @return int value
2646
+         */
2647
+            protected function rsEccCodes1($spec) {
2648
+            return $spec[2];
2649
+        }
2650
+
2651
+        /**
2652
+         * Return block number 2
2653
+         * @param array $spec
2654
+         * @return int value
2655
+         */
2656
+            protected function rsBlockNum2($spec) {
2657
+            return $spec[3];
2658
+        }
2659
+
2660
+        /**
2661
+         * Return data codes 2
2662
+         * @param array $spec
2663
+         * @return int value
2664
+         */
2665
+            protected function rsDataCodes2($spec) {
2666
+            return $spec[4];
2667
+        }
2668
+
2669
+        /**
2670
+         * Return ecc codes 2
2671
+         * @param array $spec
2672
+         * @return int value
2673
+         */
2674
+            protected function rsEccCodes2($spec) {
2675
+            return $spec[2];
2676
+        }
2677
+
2678
+        /**
2679
+         * Return data length
2680
+         * @param array $spec
2681
+         * @return int value
2682
+         */
2683
+            protected function rsDataLength($spec) {
2684
+            return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]);
2685
+        }
2686
+
2687
+        /**
2688
+         * Return ecc length
2689
+         * @param array $spec
2690
+         * @return int value
2691
+         */
2692
+            protected function rsEccLength($spec) {
2693
+            return ($spec[0] + $spec[3]) * $spec[2];
2694
+        }
2695
+
2696
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
2697
+
2698
+        // QRrs
2699
+
2700
+        /**
2701
+         * Initialize a Reed-Solomon codec and add it to existing rsitems
2702
+         * @param int $symsize symbol size, bits
2703
+         * @param int $gfpoly  Field generator polynomial coefficients
2704
+         * @param int $fcr  first root of RS code generator polynomial, index form
2705
+         * @param int $prim  primitive element to generate polynomial roots
2706
+         * @param int $nroots RS code generator polynomial degree (number of roots)
2707
+         * @param int $pad  padding bytes at front of shortened block
2708
+         * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
2709
+         */
2710
+            protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
2711
+            foreach ($this->rsitems as $rs) {
2712
+                if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize)
2713
+                    OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) {
2714
+                    continue;
2715
+                }
2716
+                return $rs;
2717
+            }
2718
+            $rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
2719
+            array_unshift($this->rsitems, $rs);
2720
+            return $rs;
2721
+        }
2722
+
2723
+        // - - - - - - - - - - - - - - - - - - - - - - - - -
2724
+
2725
+        // QRrsItem
2726
+
2727
+        /**
2728
+         * modnn
2729
+         * @param array RS values
2730
+         * @param int $x X position
2731
+         * @return int X osition
2732
+         */
2733
+            protected function modnn($rs, $x) {
2734
+            while ($x >= $rs['nn']) {
2735
+                $x -= $rs['nn'];
2736
+                $x = ($x >> $rs['mm']) + ($x & $rs['nn']);
2737
+            }
2738
+            return $x;
2739
+        }
2740
+
2741
+        /**
2742
+         * Initialize a Reed-Solomon codec and returns an array of values.
2743
+         * @param int $symsize symbol size, bits
2744
+         * @param int $gfpoly  Field generator polynomial coefficients
2745
+         * @param int $fcr  first root of RS code generator polynomial, index form
2746
+         * @param int $prim  primitive element to generate polynomial roots
2747
+         * @param int $nroots RS code generator polynomial degree (number of roots)
2748
+         * @param int $pad  padding bytes at front of shortened block
2749
+         * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
2750
+         */
2751
+        protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
2752
+            // Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2)
2753
+            $rs = null;
2754
+            // Check parameter ranges
2755
+            if (($symsize < 0) OR ($symsize > 8)) {
2756
+                return $rs;
2757
+            }
2758
+            if (($fcr < 0) OR ($fcr >= (1<<$symsize))) {
2759
+                return $rs;
2760
+            }
2761
+            if (($prim <= 0) OR ($prim >= (1<<$symsize))) {
2762
+                return $rs;
2763
+            }
2764
+            if (($nroots < 0) OR ($nroots >= (1<<$symsize))) {
2765
+                return $rs;
2766
+            }
2767
+            if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) {
2768
+                return $rs;
2769
+            }
2770
+            $rs = array();
2771
+            $rs['mm'] = $symsize;
2772
+            $rs['nn'] = (1 << $symsize) - 1;
2773
+            $rs['pad'] = $pad;
2774
+            $rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0);
2775
+            $rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0);
2776
+            // PHP style macro replacement ;)
2777
+            $NN =& $rs['nn'];
2778
+            $A0 =& $NN;
2779
+            // Generate Galois field lookup tables
2780
+            $rs['index_of'][0] = $A0; // log(zero) = -inf
2781
+            $rs['alpha_to'][$A0] = 0; // alpha**-inf = 0
2782
+            $sr = 1;
2783
+            for ($i=0; $i<$rs['nn']; ++$i) {
2784
+                $rs['index_of'][$sr] = $i;
2785
+                $rs['alpha_to'][$i] = $sr;
2786
+                $sr <<= 1;
2787
+                if ($sr & (1 << $symsize)) {
2788
+                    $sr ^= $gfpoly;
2789
+                }
2790
+                $sr &= $rs['nn'];
2791
+            }
2792
+            if ($sr != 1) {
2793
+                // field generator polynomial is not primitive!
2794
+                return NULL;
2795
+            }
2796
+            // Form RS code generator polynomial from its roots
2797
+            $rs['genpoly'] = array_fill(0, ($nroots + 1), 0);
2798
+            $rs['fcr'] = $fcr;
2799
+            $rs['prim'] = $prim;
2800
+            $rs['nroots'] = $nroots;
2801
+            $rs['gfpoly'] = $gfpoly;
2802
+            // Find prim-th root of 1, used in decoding
2803
+            for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) {
2804
+                ; // intentional empty-body loop!
2805
+            }
2806
+            $rs['iprim'] = (int)($iprim / $prim);
2807
+            $rs['genpoly'][0] = 1;
2808
+
2809
+
2810
+            for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
2811
+                $rs['genpoly'][$i+1] = 1;
2812
+                // Multiply rs->genpoly[] by  @**(root + x)
2813
+                for ($j = $i; $j > 0; --$j) {
2814
+                    if ($rs['genpoly'][$j] != 0) {
2815
+                        $rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)];
2816
+                    } else {
2817
+                        $rs['genpoly'][$j] = $rs['genpoly'][$j-1];
2818
+                    }
2819
+                }
2820
+                // rs->genpoly[0] can never be zero
2821
+                $rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)];
2822
+            }
2823
+            // convert rs->genpoly[] to index form for quicker encoding
2824
+            for ($i = 0; $i <= $nroots; ++$i) {
2825
+                $rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]];
2826
+            }
2827
+            return $rs;
2828
+        }
2829
+
2830
+        /**
2831
+         * Encode a Reed-Solomon codec and returns the parity array
2832
+         * @param array $rs RS values
2833
+         * @param array $data data
2834
+         * @param array $parity parity
2835
+         * @return parity array
2836
+         */
2837
+            protected function encode_rs_char($rs, $data, $parity) {
2838
+            $MM       =& $rs['mm']; // bits per symbol
2839
+            $NN       =& $rs['nn']; // the total number of symbols in a RS block
2840
+            $ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form
2841
+            $INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form
2842
+            $GENPOLY  =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form
2843
+            $NROOTS   =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block
2844
+            $FCR      =& $rs['fcr']; // first consecutive root, index form
2845
+            $PRIM     =& $rs['prim']; // primitive element, index form
2846
+            $IPRIM    =& $rs['iprim']; // prim-th root of 1, index form
2847
+            $PAD      =& $rs['pad']; // the number of pad symbols in a block
2848
+            $A0       =& $NN;
2849
+            $parity = array_fill(0, $NROOTS, 0);
2850
+            for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) {
2851
+                $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
2852
+                if ($feedback != $A0) {
2853
+                    // feedback term is non-zero
2854
+                    // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
2855
+                    // always be for the polynomials constructed by init_rs()
2856
+                    $feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback);
2857
+                    for ($j=1; $j < $NROOTS; ++$j) {
2858
+                    $parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])];
2859
+                    }
2860
+                }
2861
+                // Shift
2862
+                array_shift($parity);
2863
+                if ($feedback != $A0) {
2864
+                    array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]);
2865
+                } else {
2866
+                    array_push($parity, 0);
2867
+                }
2868
+            }
2869
+            return $parity;
2870
+        }
2871
+
2872
+    } // end QRcode class
2873 2873
 
2874 2874
 } // END OF "class_exists QRcode"
2875 2875
 ?>
Please login to merge, or discard this patch.
lib/phpqrcode/qrencode.php 4 patches
Switch Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -415,28 +415,28 @@
 block discarded – undo
415 415
             $enc->margin = $margin;
416 416
             
417 417
             switch ($level.'') {
418
-                case '0':
419
-                case '1':
420
-                case '2':
421
-                case '3':
422
-                        $enc->level = $level;
423
-                    break;
424
-                case 'l':
425
-                case 'L':
426
-                        $enc->level = QR_ECLEVEL_L;
427
-                    break;
428
-                case 'm':
429
-                case 'M':
430
-                        $enc->level = QR_ECLEVEL_M;
431
-                    break;
432
-                case 'q':
433
-                case 'Q':
434
-                        $enc->level = QR_ECLEVEL_Q;
435
-                    break;
436
-                case 'h':
437
-                case 'H':
438
-                        $enc->level = QR_ECLEVEL_H;
439
-                    break;
418
+            case '0':
419
+            case '1':
420
+            case '2':
421
+            case '3':
422
+                    $enc->level = $level;
423
+                break;
424
+            case 'l':
425
+            case 'L':
426
+                    $enc->level = QR_ECLEVEL_L;
427
+                break;
428
+            case 'm':
429
+            case 'M':
430
+                    $enc->level = QR_ECLEVEL_M;
431
+                break;
432
+            case 'q':
433
+            case 'Q':
434
+                    $enc->level = QR_ECLEVEL_Q;
435
+                break;
436
+            case 'h':
437
+            case 'H':
438
+                    $enc->level = QR_ECLEVEL_H;
439
+                break;
440 440
             }
441 441
             
442 442
             return $enc;
Please login to merge, or discard this patch.
Spacing   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -58,10 +58,10 @@  discard block
 block discarded – undo
58 58
         //----------------------------------------------------------------------
59 59
         public function __construct(QRinput $input)
60 60
         {
61
-            $spec = array(0,0,0,0,0);
61
+            $spec = array(0, 0, 0, 0, 0);
62 62
             
63 63
             $this->datacode = $input->getByteStream();
64
-            if(is_null($this->datacode)) {
64
+            if (is_null($this->datacode)) {
65 65
                 throw new Exception('null imput string');
66 66
             }
67 67
 
@@ -75,7 +75,7 @@  discard block
 block discarded – undo
75 75
             $this->blocks = QRspec::rsBlockNum($spec);
76 76
             
77 77
             $ret = $this->init($spec);
78
-            if($ret < 0) {
78
+            if ($ret < 0) {
79 79
                 throw new Exception('block alloc error');
80 80
                 return null;
81 81
             }
@@ -94,29 +94,29 @@  discard block
 block discarded – undo
94 94
             $blockNo = 0;
95 95
             $dataPos = 0;
96 96
             $eccPos = 0;
97
-            for($i=0; $i<QRspec::rsBlockNum1($spec); $i++) {
98
-                $ecc = array_slice($this->ecccode,$eccPos);
99
-                $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el,  $ecc, $rs);
100
-                $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
97
+            for ($i = 0; $i < QRspec::rsBlockNum1($spec); $i++) {
98
+                $ecc = array_slice($this->ecccode, $eccPos);
99
+                $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
100
+                $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
101 101
                 
102 102
                 $dataPos += $dl;
103 103
                 $eccPos += $el;
104 104
                 $blockNo++;
105 105
             }
106 106
 
107
-            if(QRspec::rsBlockNum2($spec) == 0)
107
+            if (QRspec::rsBlockNum2($spec) == 0)
108 108
                 return 0;
109 109
 
110 110
             $dl = QRspec::rsDataCodes2($spec);
111 111
             $el = QRspec::rsEccCodes2($spec);
112 112
             $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
113 113
             
114
-            if($rs == NULL) return -1;
114
+            if ($rs == NULL) return -1;
115 115
             
116
-            for($i=0; $i<QRspec::rsBlockNum2($spec); $i++) {
117
-                $ecc = array_slice($this->ecccode,$eccPos);
116
+            for ($i = 0; $i < QRspec::rsBlockNum2($spec); $i++) {
117
+                $ecc = array_slice($this->ecccode, $eccPos);
118 118
                 $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
119
-                $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
119
+                $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
120 120
                 
121 121
                 $dataPos += $dl;
122 122
                 $eccPos += $el;
@@ -131,14 +131,14 @@  discard block
 block discarded – undo
131 131
         {
132 132
             $ret = 0;
133 133
 
134
-            if($this->count < $this->dataLength) {
134
+            if ($this->count < $this->dataLength) {
135 135
                 $row = $this->count % $this->blocks;
136 136
                 $col = $this->count / $this->blocks;
137
-                if($col >= $this->rsblocks[0]->dataLength) {
137
+                if ($col >= $this->rsblocks[0]->dataLength) {
138 138
                     $row += $this->b1;
139 139
                 }
140 140
                 $ret = $this->rsblocks[$row]->data[$col];
141
-            } else if($this->count < $this->dataLength + $this->eccLength) {
141
+            } else if ($this->count < $this->dataLength + $this->eccLength) {
142 142
                 $row = ($this->count - $this->dataLength) % $this->blocks;
143 143
                 $col = ($this->count - $this->dataLength) / $this->blocks;
144 144
                 $ret = $this->rsblocks[$row]->ecc[$col];
@@ -162,10 +162,10 @@  discard block
 block discarded – undo
162 162
         //----------------------------------------------------------------------
163 163
         public function encodeMask(QRinput $input, $mask)
164 164
         {
165
-            if($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) {
165
+            if ($input->getVersion() < 0 || $input->getVersion() > QRSPEC_VERSION_MAX) {
166 166
                 throw new Exception('wrong version');
167 167
             }
168
-            if($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) {
168
+            if ($input->getErrorCorrectionLevel() > QR_ECLEVEL_H) {
169 169
                 throw new Exception('wrong level');
170 170
             }
171 171
 
@@ -178,15 +178,15 @@  discard block
 block discarded – undo
178 178
             $frame = QRspec::newFrame($version);
179 179
             
180 180
             $filler = new FrameFiller($width, $frame);
181
-            if(is_null($filler)) {
181
+            if (is_null($filler)) {
182 182
                 return NULL;
183 183
             }
184 184
 
185 185
             // inteleaved data and ecc codes
186
-            for($i=0; $i<$raw->dataLength + $raw->eccLength; $i++) {
186
+            for ($i = 0; $i < $raw->dataLength + $raw->eccLength; $i++) {
187 187
                 $code = $raw->getCode();
188 188
                 $bit = 0x80;
189
-                for($j=0; $j<8; $j++) {
189
+                for ($j = 0; $j < 8; $j++) {
190 190
                     $addr = $filler->next();
191 191
                     $filler->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
192 192
                     $bit = $bit >> 1;
@@ -199,7 +199,7 @@  discard block
 block discarded – undo
199 199
             
200 200
             // remainder bits
201 201
             $j = QRspec::getRemainder($version);
202
-            for($i=0; $i<$j; $i++) {
202
+            for ($i = 0; $i < $j; $i++) {
203 203
                 $addr = $filler->next();
204 204
                 $filler->setFrameAt($addr, 0x02);
205 205
             }
@@ -210,7 +210,7 @@  discard block
 block discarded – undo
210 210
             
211 211
             // masking
212 212
             $maskObj = new QRmask();
213
-            if($mask < 0) {
213
+            if ($mask < 0) {
214 214
             
215 215
                 if (QR_FIND_BEST_MASK) {
216 216
                     $masked = $maskObj->mask($width, $frame, $input->getErrorCorrectionLevel());
@@ -221,7 +221,7 @@  discard block
 block discarded – undo
221 221
                 $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel());
222 222
             }
223 223
             
224
-            if($masked == NULL) {
224
+            if ($masked == NULL) {
225 225
                 return NULL;
226 226
             }
227 227
             
@@ -243,16 +243,16 @@  discard block
 block discarded – undo
243 243
         //----------------------------------------------------------------------
244 244
         public function encodeString8bit($string, $version, $level)
245 245
         {
246
-            if(string == NULL) {
246
+            if (string == NULL) {
247 247
                 throw new Exception('empty string!');
248 248
                 return NULL;
249 249
             }
250 250
 
251 251
             $input = new QRinput($version, $level);
252
-            if($input == NULL) return NULL;
252
+            if ($input == NULL) return NULL;
253 253
 
254 254
             $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string));
255
-            if($ret < 0) {
255
+            if ($ret < 0) {
256 256
                 unset($input);
257 257
                 return NULL;
258 258
             }
@@ -263,16 +263,16 @@  discard block
 block discarded – undo
263 263
         public function encodeString($string, $version, $level, $hint, $casesensitive)
264 264
         {
265 265
 
266
-            if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) {
266
+            if ($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) {
267 267
                 throw new Exception('bad hint');
268 268
                 return NULL;
269 269
             }
270 270
 
271 271
             $input = new QRinput($version, $level);
272
-            if($input == NULL) return NULL;
272
+            if ($input == NULL) return NULL;
273 273
 
274 274
             $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive);
275
-            if($ret < 0) {
275
+            if ($ret < 0) {
276 276
                 return NULL;
277 277
             }
278 278
 
@@ -280,10 +280,10 @@  discard block
 block discarded – undo
280 280
         }
281 281
         
282 282
         //----------------------------------------------------------------------
283
-        public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false) 
283
+        public static function png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint = false) 
284 284
         {
285 285
             $enc = QRencode::factory($level, $size, $margin);
286
-            return $enc->encodePNG($text, $outfile, $saveandprint=false);
286
+            return $enc->encodePNG($text, $outfile, $saveandprint = false);
287 287
         }
288 288
 
289 289
         //----------------------------------------------------------------------
@@ -340,7 +340,7 @@  discard block
 block discarded – undo
340 340
         {
341 341
             do {
342 342
             
343
-                if($this->bit == -1) {
343
+                if ($this->bit == -1) {
344 344
                     $this->bit = 0;
345 345
                     return array('x'=>$this->x, 'y'=>$this->y);
346 346
                 }
@@ -349,7 +349,7 @@  discard block
 block discarded – undo
349 349
                 $y = $this->y;
350 350
                 $w = $this->width;
351 351
 
352
-                if($this->bit == 0) {
352
+                if ($this->bit == 0) {
353 353
                     $x--;
354 354
                     $this->bit++;
355 355
                 } else {
@@ -358,33 +358,33 @@  discard block
 block discarded – undo
358 358
                     $this->bit--;
359 359
                 }
360 360
 
361
-                if($this->dir < 0) {
362
-                    if($y < 0) {
361
+                if ($this->dir < 0) {
362
+                    if ($y < 0) {
363 363
                         $y = 0;
364 364
                         $x -= 2;
365 365
                         $this->dir = 1;
366
-                        if($x == 6) {
366
+                        if ($x == 6) {
367 367
                             $x--;
368 368
                             $y = 9;
369 369
                         }
370 370
                     }
371 371
                 } else {
372
-                    if($y == $w) {
372
+                    if ($y == $w) {
373 373
                         $y = $w - 1;
374 374
                         $x -= 2;
375 375
                         $this->dir = -1;
376
-                        if($x == 6) {
376
+                        if ($x == 6) {
377 377
                             $x--;
378 378
                             $y -= 8;
379 379
                         }
380 380
                     }
381 381
                 }
382
-                if($x < 0 || $y < 0) return null;
382
+                if ($x < 0 || $y < 0) return null;
383 383
 
384 384
                 $this->x = $x;
385 385
                 $this->y = $y;
386 386
 
387
-            } while(ord($this->frame[$y][$x]) & 0x80);
387
+            } while (ord($this->frame[$y][$x]) & 0x80);
388 388
                         
389 389
             return array('x'=>$x, 'y'=>$y);
390 390
         }
@@ -447,7 +447,7 @@  discard block
 block discarded – undo
447 447
         {
448 448
             $code = new QRcode();
449 449
 
450
-            if($this->eightbit) {
450
+            if ($this->eightbit) {
451 451
                 $code->encodeString8bit($intext, $this->version, $this->level);
452 452
             } else {
453 453
                 $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
@@ -461,7 +461,7 @@  discard block
 block discarded – undo
461 461
         {
462 462
             $code = new QRcode();
463 463
 
464
-            if($this->eightbit) {
464
+            if ($this->eightbit) {
465 465
                 $code->encodeString8bit($intext, $this->version, $this->level);
466 466
             } else {
467 467
                 $code->encodeString($intext, $this->version, $this->level, $this->hint, $this->casesensitive);
@@ -469,7 +469,7 @@  discard block
 block discarded – undo
469 469
             
470 470
             QRtools::markTime('after_encode');
471 471
             
472
-            if ($outfile!== false) {
472
+            if ($outfile !== false) {
473 473
                 file_put_contents($outfile, join("\n", QRtools::binarize($code->data)));
474 474
             } else {
475 475
                 return QRtools::binarize($code->data);
@@ -477,7 +477,7 @@  discard block
 block discarded – undo
477 477
         }
478 478
         
479 479
         //----------------------------------------------------------------------
480
-        public function encodePNG($intext, $outfile = false,$saveandprint=false) 
480
+        public function encodePNG($intext, $outfile = false, $saveandprint = false) 
481 481
         {
482 482
             try {
483 483
             
@@ -489,9 +489,9 @@  discard block
 block discarded – undo
489 489
                 if ($err != '')
490 490
                     QRtools::log($outfile, $err);
491 491
                 
492
-                $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin));
492
+                $maxSize = (int) (QR_PNG_MAXIMUM_SIZE / (count($tab) + 2 * $this->margin));
493 493
                 
494
-                QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin,$saveandprint);
494
+                QRimage::png($tab, $outfile, min(max(1, $this->size), $maxSize), $this->margin, $saveandprint);
495 495
             
496 496
             } catch (Exception $e) {
497 497
             
Please login to merge, or discard this patch.
Upper-Lower-Casing   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -111,7 +111,7 @@  discard block
 block discarded – undo
111 111
             $el = QRspec::rsEccCodes2($spec);
112 112
             $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
113 113
             
114
-            if($rs == NULL) return -1;
114
+            if($rs == null) return -1;
115 115
             
116 116
             for($i=0; $i<QRspec::rsBlockNum2($spec); $i++) {
117 117
                 $ecc = array_slice($this->ecccode,$eccPos);
@@ -179,7 +179,7 @@  discard block
 block discarded – undo
179 179
             
180 180
             $filler = new FrameFiller($width, $frame);
181 181
             if(is_null($filler)) {
182
-                return NULL;
182
+                return null;
183 183
             }
184 184
 
185 185
             // inteleaved data and ecc codes
@@ -221,8 +221,8 @@  discard block
 block discarded – undo
221 221
                 $masked = $maskObj->makeMask($width, $frame, $mask, $input->getErrorCorrectionLevel());
222 222
             }
223 223
             
224
-            if($masked == NULL) {
225
-                return NULL;
224
+            if($masked == null) {
225
+                return null;
226 226
             }
227 227
             
228 228
             QRtools::markTime('after_mask');
@@ -243,18 +243,18 @@  discard block
 block discarded – undo
243 243
         //----------------------------------------------------------------------
244 244
         public function encodeString8bit($string, $version, $level)
245 245
         {
246
-            if(string == NULL) {
246
+            if(string == null) {
247 247
                 throw new Exception('empty string!');
248
-                return NULL;
248
+                return null;
249 249
             }
250 250
 
251 251
             $input = new QRinput($version, $level);
252
-            if($input == NULL) return NULL;
252
+            if($input == null) return null;
253 253
 
254 254
             $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string));
255 255
             if($ret < 0) {
256 256
                 unset($input);
257
-                return NULL;
257
+                return null;
258 258
             }
259 259
             return $this->encodeInput($input);
260 260
         }
@@ -265,15 +265,15 @@  discard block
 block discarded – undo
265 265
 
266 266
             if($hint != QR_MODE_8 && $hint != QR_MODE_KANJI) {
267 267
                 throw new Exception('bad hint');
268
-                return NULL;
268
+                return null;
269 269
             }
270 270
 
271 271
             $input = new QRinput($version, $level);
272
-            if($input == NULL) return NULL;
272
+            if($input == null) return null;
273 273
 
274 274
             $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive);
275 275
             if($ret < 0) {
276
-                return NULL;
276
+                return null;
277 277
             }
278 278
 
279 279
             return $this->encodeInput($input);
Please login to merge, or discard this patch.
Braces   +18 added lines, -8 removed lines patch added patch discarded remove patch
@@ -104,14 +104,17 @@  discard block
 block discarded – undo
104 104
                 $blockNo++;
105 105
             }
106 106
 
107
-            if(QRspec::rsBlockNum2($spec) == 0)
108
-                return 0;
107
+            if(QRspec::rsBlockNum2($spec) == 0) {
108
+                            return 0;
109
+            }
109 110
 
110 111
             $dl = QRspec::rsDataCodes2($spec);
111 112
             $el = QRspec::rsEccCodes2($spec);
112 113
             $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
113 114
             
114
-            if($rs == NULL) return -1;
115
+            if($rs == NULL) {
116
+                return -1;
117
+            }
115 118
             
116 119
             for($i=0; $i<QRspec::rsBlockNum2($spec); $i++) {
117 120
                 $ecc = array_slice($this->ecccode,$eccPos);
@@ -249,7 +252,9 @@  discard block
 block discarded – undo
249 252
             }
250 253
 
251 254
             $input = new QRinput($version, $level);
252
-            if($input == NULL) return NULL;
255
+            if($input == NULL) {
256
+                return NULL;
257
+            }
253 258
 
254 259
             $ret = $input->append($input, QR_MODE_8, strlen($string), str_split($string));
255 260
             if($ret < 0) {
@@ -269,7 +274,9 @@  discard block
 block discarded – undo
269 274
             }
270 275
 
271 276
             $input = new QRinput($version, $level);
272
-            if($input == NULL) return NULL;
277
+            if($input == NULL) {
278
+                return NULL;
279
+            }
273 280
 
274 281
             $ret = QRsplit::splitStringToQRinput($string, $input, $hint, $casesensitive);
275 282
             if($ret < 0) {
@@ -379,7 +386,9 @@  discard block
 block discarded – undo
379 386
                         }
380 387
                     }
381 388
                 }
382
-                if($x < 0 || $y < 0) return null;
389
+                if($x < 0 || $y < 0) {
390
+                    return null;
391
+                }
383 392
 
384 393
                 $this->x = $x;
385 394
                 $this->y = $y;
@@ -486,8 +495,9 @@  discard block
 block discarded – undo
486 495
                 $err = ob_get_contents();
487 496
                 ob_end_clean();
488 497
                 
489
-                if ($err != '')
490
-                    QRtools::log($outfile, $err);
498
+                if ($err != '') {
499
+                                    QRtools::log($outfile, $err);
500
+                }
491 501
                 
492 502
                 $maxSize = (int)(QR_PNG_MAXIMUM_SIZE / (count($tab)+2*$this->margin));
493 503
                 
Please login to merge, or discard this patch.
lib/phpqrcode/qrrscode.php 3 patches
Spacing   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -30,16 +30,16 @@  discard block
 block discarded – undo
30 30
  
31 31
     class QRrsItem {
32 32
     
33
-        public $mm;                  // Bits per symbol 
34
-        public $nn;                  // Symbols per block (= (1<<mm)-1) 
35
-        public $alpha_to = array();  // log lookup table 
36
-        public $index_of = array();  // Antilog lookup table 
37
-        public $genpoly = array();   // Generator polynomial 
38
-        public $nroots;              // Number of generator roots = number of parity symbols 
39
-        public $fcr;                 // First consecutive root, index form 
40
-        public $prim;                // Primitive element, index form 
41
-        public $iprim;               // prim-th root of 1, index form 
42
-        public $pad;                 // Padding bytes in shortened block 
33
+        public $mm; // Bits per symbol 
34
+        public $nn; // Symbols per block (= (1<<mm)-1) 
35
+        public $alpha_to = array(); // log lookup table 
36
+        public $index_of = array(); // Antilog lookup table 
37
+        public $genpoly = array(); // Generator polynomial 
38
+        public $nroots; // Number of generator roots = number of parity symbols 
39
+        public $fcr; // First consecutive root, index form 
40
+        public $prim; // Primitive element, index form 
41
+        public $iprim; // prim-th root of 1, index form 
42
+        public $pad; // Padding bytes in shortened block 
43 43
         public $gfpoly;
44 44
     
45 45
         //----------------------------------------------------------------------
@@ -63,47 +63,47 @@  discard block
 block discarded – undo
63 63
             $rs = null;
64 64
             
65 65
             // Check parameter ranges
66
-            if($symsize < 0 || $symsize > 8)                     return $rs;
67
-            if($fcr < 0 || $fcr >= (1<<$symsize))                return $rs;
68
-            if($prim <= 0 || $prim >= (1<<$symsize))             return $rs;
69
-            if($nroots < 0 || $nroots >= (1<<$symsize))          return $rs; // Can't have more roots than symbol values!
70
-            if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding
66
+            if ($symsize < 0 || $symsize > 8)                     return $rs;
67
+            if ($fcr < 0 || $fcr >= (1 << $symsize))                return $rs;
68
+            if ($prim <= 0 || $prim >= (1 << $symsize))             return $rs;
69
+            if ($nroots < 0 || $nroots >= (1 << $symsize))          return $rs; // Can't have more roots than symbol values!
70
+            if ($pad < 0 || $pad >= ((1 << $symsize) - 1 - $nroots)) return $rs; // Too much padding
71 71
 
72 72
             $rs = new QRrsItem();
73 73
             $rs->mm = $symsize;
74
-            $rs->nn = (1<<$symsize)-1;
74
+            $rs->nn = (1 << $symsize) - 1;
75 75
             $rs->pad = $pad;
76 76
 
77
-            $rs->alpha_to = array_fill(0, $rs->nn+1, 0);
78
-            $rs->index_of = array_fill(0, $rs->nn+1, 0);
77
+            $rs->alpha_to = array_fill(0, $rs->nn + 1, 0);
78
+            $rs->index_of = array_fill(0, $rs->nn + 1, 0);
79 79
           
80 80
             // PHP style macro replacement ;)
81
-            $NN =& $rs->nn;
82
-            $A0 =& $NN;
81
+            $NN = & $rs->nn;
82
+            $A0 = & $NN;
83 83
             
84 84
             // Generate Galois field lookup tables
85 85
             $rs->index_of[0] = $A0; // log(zero) = -inf
86 86
             $rs->alpha_to[$A0] = 0; // alpha**-inf = 0
87 87
             $sr = 1;
88 88
           
89
-            for($i=0; $i<$rs->nn; $i++) {
89
+            for ($i = 0; $i < $rs->nn; $i++) {
90 90
                 $rs->index_of[$sr] = $i;
91 91
                 $rs->alpha_to[$i] = $sr;
92 92
                 $sr <<= 1;
93
-                if($sr & (1<<$symsize)) {
93
+                if ($sr & (1 << $symsize)) {
94 94
                     $sr ^= $gfpoly;
95 95
                 }
96 96
                 $sr &= $rs->nn;
97 97
             }
98 98
             
99
-            if($sr != 1){
99
+            if ($sr != 1) {
100 100
                 // field generator polynomial is not primitive!
101 101
                 $rs = NULL;
102 102
                 return $rs;
103 103
             }
104 104
 
105 105
             /* Form RS code generator polynomial from its roots */
106
-            $rs->genpoly = array_fill(0, $nroots+1, 0);
106
+            $rs->genpoly = array_fill(0, $nroots + 1, 0);
107 107
         
108 108
             $rs->fcr = $fcr;
109 109
             $rs->prim = $prim;
@@ -111,21 +111,21 @@  discard block
 block discarded – undo
111 111
             $rs->gfpoly = $gfpoly;
112 112
 
113 113
             /* Find prim-th root of 1, used in decoding */
114
-            for($iprim=1;($iprim % $prim) != 0;$iprim += $rs->nn)
114
+            for ($iprim = 1; ($iprim % $prim) != 0; $iprim += $rs->nn)
115 115
             ; // intentional empty-body loop!
116 116
             
117
-            $rs->iprim = (int)($iprim / $prim);
117
+            $rs->iprim = (int) ($iprim / $prim);
118 118
             $rs->genpoly[0] = 1;
119 119
             
120
-            for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
121
-                $rs->genpoly[$i+1] = 1;
120
+            for ($i = 0, $root = $fcr * $prim; $i < $nroots; $i++, $root += $prim) {
121
+                $rs->genpoly[$i + 1] = 1;
122 122
 
123 123
                 // Multiply rs->genpoly[] by  @**(root + x)
124 124
                 for ($j = $i; $j > 0; $j--) {
125 125
                     if ($rs->genpoly[$j] != 0) {
126
-                        $rs->genpoly[$j] = $rs->genpoly[$j-1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)];
126
+                        $rs->genpoly[$j] = $rs->genpoly[$j - 1] ^ $rs->alpha_to[$rs->modnn($rs->index_of[$rs->genpoly[$j]] + $root)];
127 127
                     } else {
128
-                        $rs->genpoly[$j] = $rs->genpoly[$j-1];
128
+                        $rs->genpoly[$j] = $rs->genpoly[$j - 1];
129 129
                     }
130 130
                 }
131 131
                 // rs->genpoly[0] can never be zero
@@ -142,38 +142,38 @@  discard block
 block discarded – undo
142 142
         //----------------------------------------------------------------------
143 143
         public function encode_rs_char($data, &$parity)
144 144
         {
145
-            $MM       =& $this->mm;
146
-            $NN       =& $this->nn;
147
-            $ALPHA_TO =& $this->alpha_to;
148
-            $INDEX_OF =& $this->index_of;
149
-            $GENPOLY  =& $this->genpoly;
150
-            $NROOTS   =& $this->nroots;
151
-            $FCR      =& $this->fcr;
152
-            $PRIM     =& $this->prim;
153
-            $IPRIM    =& $this->iprim;
154
-            $PAD      =& $this->pad;
155
-            $A0       =& $NN;
145
+            $MM       = & $this->mm;
146
+            $NN       = & $this->nn;
147
+            $ALPHA_TO = & $this->alpha_to;
148
+            $INDEX_OF = & $this->index_of;
149
+            $GENPOLY  = & $this->genpoly;
150
+            $NROOTS   = & $this->nroots;
151
+            $FCR      = & $this->fcr;
152
+            $PRIM     = & $this->prim;
153
+            $IPRIM    = & $this->iprim;
154
+            $PAD      = & $this->pad;
155
+            $A0       = & $NN;
156 156
 
157 157
             $parity = array_fill(0, $NROOTS, 0);
158 158
 
159
-            for($i=0; $i< ($NN-$NROOTS-$PAD); $i++) {
159
+            for ($i = 0; $i < ($NN - $NROOTS - $PAD); $i++) {
160 160
                 
161 161
                 $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
162
-                if($feedback != $A0) {      
162
+                if ($feedback != $A0) {      
163 163
                     // feedback term is non-zero
164 164
             
165 165
                     // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
166 166
                     // always be for the polynomials constructed by init_rs()
167 167
                     $feedback = $this->modnn($NN - $GENPOLY[$NROOTS] + $feedback);
168 168
             
169
-                    for($j=1;$j<$NROOTS;$j++) {
170
-                        $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS-$j])];
169
+                    for ($j = 1; $j < $NROOTS; $j++) {
170
+                        $parity[$j] ^= $ALPHA_TO[$this->modnn($feedback + $GENPOLY[$NROOTS - $j])];
171 171
                     }
172 172
                 }
173 173
                 
174 174
                 // Shift 
175 175
                 array_shift($parity);
176
-                if($feedback != $A0) {
176
+                if ($feedback != $A0) {
177 177
                     array_push($parity, $ALPHA_TO[$this->modnn($feedback + $GENPOLY[0])]);
178 178
                 } else {
179 179
                     array_push($parity, 0);
@@ -191,13 +191,13 @@  discard block
 block discarded – undo
191 191
         //----------------------------------------------------------------------
192 192
         public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
193 193
         {
194
-            foreach(self::$items as $rs) {
195
-                if($rs->pad != $pad)       continue;
196
-                if($rs->nroots != $nroots) continue;
197
-                if($rs->mm != $symsize)    continue;
198
-                if($rs->gfpoly != $gfpoly) continue;
199
-                if($rs->fcr != $fcr)       continue;
200
-                if($rs->prim != $prim)     continue;
194
+            foreach (self::$items as $rs) {
195
+                if ($rs->pad != $pad)       continue;
196
+                if ($rs->nroots != $nroots) continue;
197
+                if ($rs->mm != $symsize)    continue;
198
+                if ($rs->gfpoly != $gfpoly) continue;
199
+                if ($rs->fcr != $fcr)       continue;
200
+                if ($rs->prim != $prim)     continue;
201 201
 
202 202
                 return $rs;
203 203
             }
Please login to merge, or discard this patch.
Upper-Lower-Casing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -98,7 +98,7 @@
 block discarded – undo
98 98
             
99 99
             if($sr != 1){
100 100
                 // field generator polynomial is not primitive!
101
-                $rs = NULL;
101
+                $rs = null;
102 102
                 return $rs;
103 103
             }
104 104
 
Please login to merge, or discard this patch.
Braces   +38 added lines, -13 removed lines patch added patch discarded remove patch
@@ -63,11 +63,23 @@  discard block
 block discarded – undo
63 63
             $rs = null;
64 64
             
65 65
             // Check parameter ranges
66
-            if($symsize < 0 || $symsize > 8)                     return $rs;
67
-            if($fcr < 0 || $fcr >= (1<<$symsize))                return $rs;
68
-            if($prim <= 0 || $prim >= (1<<$symsize))             return $rs;
69
-            if($nroots < 0 || $nroots >= (1<<$symsize))          return $rs; // Can't have more roots than symbol values!
70
-            if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) return $rs; // Too much padding
66
+            if($symsize < 0 || $symsize > 8) {
67
+                return $rs;
68
+            }
69
+            if($fcr < 0 || $fcr >= (1<<$symsize)) {
70
+                return $rs;
71
+            }
72
+            if($prim <= 0 || $prim >= (1<<$symsize)) {
73
+                return $rs;
74
+            }
75
+            if($nroots < 0 || $nroots >= (1<<$symsize)) {
76
+                return $rs;
77
+            }
78
+            // Can't have more roots than symbol values!
79
+            if($pad < 0 || $pad >= ((1<<$symsize) -1 - $nroots)) {
80
+                return $rs;
81
+            }
82
+            // Too much padding
71 83
 
72 84
             $rs = new QRrsItem();
73 85
             $rs->mm = $symsize;
@@ -133,8 +145,9 @@  discard block
 block discarded – undo
133 145
             }
134 146
             
135 147
             // convert rs->genpoly[] to index form for quicker encoding
136
-            for ($i = 0; $i <= $nroots; $i++)
137
-                $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]];
148
+            for ($i = 0; $i <= $nroots; $i++) {
149
+                            $rs->genpoly[$i] = $rs->index_of[$rs->genpoly[$i]];
150
+            }
138 151
 
139 152
             return $rs;
140 153
         }
@@ -192,12 +205,24 @@  discard block
 block discarded – undo
192 205
         public static function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad)
193 206
         {
194 207
             foreach(self::$items as $rs) {
195
-                if($rs->pad != $pad)       continue;
196
-                if($rs->nroots != $nroots) continue;
197
-                if($rs->mm != $symsize)    continue;
198
-                if($rs->gfpoly != $gfpoly) continue;
199
-                if($rs->fcr != $fcr)       continue;
200
-                if($rs->prim != $prim)     continue;
208
+                if($rs->pad != $pad) {
209
+                    continue;
210
+                }
211
+                if($rs->nroots != $nroots) {
212
+                    continue;
213
+                }
214
+                if($rs->mm != $symsize) {
215
+                    continue;
216
+                }
217
+                if($rs->gfpoly != $gfpoly) {
218
+                    continue;
219
+                }
220
+                if($rs->fcr != $fcr) {
221
+                    continue;
222
+                }
223
+                if($rs->prim != $prim) {
224
+                    continue;
225
+                }
201 226
 
202 227
                 return $rs;
203 228
             }
Please login to merge, or discard this patch.
lib/phpqrcode/qrspec.php 3 patches
Spacing   +154 added lines, -154 removed lines patch added patch discarded remove patch
@@ -32,57 +32,57 @@  discard block
 block discarded – undo
32 32
  */
33 33
  
34 34
     define('QRSPEC_VERSION_MAX', 40);
35
-    define('QRSPEC_WIDTH_MAX',   177);
35
+    define('QRSPEC_WIDTH_MAX', 177);
36 36
 
37
-    define('QRCAP_WIDTH',        0);
38
-    define('QRCAP_WORDS',        1);
39
-    define('QRCAP_REMINDER',     2);
40
-    define('QRCAP_EC',           3);
37
+    define('QRCAP_WIDTH', 0);
38
+    define('QRCAP_WORDS', 1);
39
+    define('QRCAP_REMINDER', 2);
40
+    define('QRCAP_EC', 3);
41 41
 
42 42
     class QRspec {
43 43
     
44 44
         public static $capacity = array(
45
-            array(  0,    0, 0, array(   0,    0,    0,    0)),
46
-            array( 21,   26, 0, array(   7,   10,   13,   17)), // 1
47
-            array( 25,   44, 7, array(  10,   16,   22,   28)),
48
-            array( 29,   70, 7, array(  15,   26,   36,   44)),
49
-            array( 33,  100, 7, array(  20,   36,   52,   64)),
50
-            array( 37,  134, 7, array(  26,   48,   72,   88)), // 5
51
-            array( 41,  172, 7, array(  36,   64,   96,  112)),
52
-            array( 45,  196, 0, array(  40,   72,  108,  130)),
53
-            array( 49,  242, 0, array(  48,   88,  132,  156)),
54
-            array( 53,  292, 0, array(  60,  110,  160,  192)),
55
-            array( 57,  346, 0, array(  72,  130,  192,  224)), //10
56
-            array( 61,  404, 0, array(  80,  150,  224,  264)),
57
-            array( 65,  466, 0, array(  96,  176,  260,  308)),
58
-            array( 69,  532, 0, array( 104,  198,  288,  352)),
59
-            array( 73,  581, 3, array( 120,  216,  320,  384)),
60
-            array( 77,  655, 3, array( 132,  240,  360,  432)), //15
61
-            array( 81,  733, 3, array( 144,  280,  408,  480)),
62
-            array( 85,  815, 3, array( 168,  308,  448,  532)),
63
-            array( 89,  901, 3, array( 180,  338,  504,  588)),
64
-            array( 93,  991, 3, array( 196,  364,  546,  650)),
65
-            array( 97, 1085, 3, array( 224,  416,  600,  700)), //20
66
-            array(101, 1156, 4, array( 224,  442,  644,  750)),
67
-            array(105, 1258, 4, array( 252,  476,  690,  816)),
68
-            array(109, 1364, 4, array( 270,  504,  750,  900)),
69
-            array(113, 1474, 4, array( 300,  560,  810,  960)),
70
-            array(117, 1588, 4, array( 312,  588,  870, 1050)), //25
71
-            array(121, 1706, 4, array( 336,  644,  952, 1110)),
72
-            array(125, 1828, 4, array( 360,  700, 1020, 1200)),
73
-            array(129, 1921, 3, array( 390,  728, 1050, 1260)),
74
-            array(133, 2051, 3, array( 420,  784, 1140, 1350)),
75
-            array(137, 2185, 3, array( 450,  812, 1200, 1440)), //30
76
-            array(141, 2323, 3, array( 480,  868, 1290, 1530)),
77
-            array(145, 2465, 3, array( 510,  924, 1350, 1620)),
78
-            array(149, 2611, 3, array( 540,  980, 1440, 1710)),
79
-            array(153, 2761, 3, array( 570, 1036, 1530, 1800)),
80
-            array(157, 2876, 0, array( 570, 1064, 1590, 1890)), //35
81
-            array(161, 3034, 0, array( 600, 1120, 1680, 1980)),
82
-            array(165, 3196, 0, array( 630, 1204, 1770, 2100)),
83
-            array(169, 3362, 0, array( 660, 1260, 1860, 2220)),
84
-            array(173, 3532, 0, array( 720, 1316, 1950, 2310)),
85
-            array(177, 3706, 0, array( 750, 1372, 2040, 2430)) //40
45
+            array(0, 0, 0, array(0, 0, 0, 0)),
46
+            array(21, 26, 0, array(7, 10, 13, 17)), // 1
47
+            array(25, 44, 7, array(10, 16, 22, 28)),
48
+            array(29, 70, 7, array(15, 26, 36, 44)),
49
+            array(33, 100, 7, array(20, 36, 52, 64)),
50
+            array(37, 134, 7, array(26, 48, 72, 88)), // 5
51
+            array(41, 172, 7, array(36, 64, 96, 112)),
52
+            array(45, 196, 0, array(40, 72, 108, 130)),
53
+            array(49, 242, 0, array(48, 88, 132, 156)),
54
+            array(53, 292, 0, array(60, 110, 160, 192)),
55
+            array(57, 346, 0, array(72, 130, 192, 224)), //10
56
+            array(61, 404, 0, array(80, 150, 224, 264)),
57
+            array(65, 466, 0, array(96, 176, 260, 308)),
58
+            array(69, 532, 0, array(104, 198, 288, 352)),
59
+            array(73, 581, 3, array(120, 216, 320, 384)),
60
+            array(77, 655, 3, array(132, 240, 360, 432)), //15
61
+            array(81, 733, 3, array(144, 280, 408, 480)),
62
+            array(85, 815, 3, array(168, 308, 448, 532)),
63
+            array(89, 901, 3, array(180, 338, 504, 588)),
64
+            array(93, 991, 3, array(196, 364, 546, 650)),
65
+            array(97, 1085, 3, array(224, 416, 600, 700)), //20
66
+            array(101, 1156, 4, array(224, 442, 644, 750)),
67
+            array(105, 1258, 4, array(252, 476, 690, 816)),
68
+            array(109, 1364, 4, array(270, 504, 750, 900)),
69
+            array(113, 1474, 4, array(300, 560, 810, 960)),
70
+            array(117, 1588, 4, array(312, 588, 870, 1050)), //25
71
+            array(121, 1706, 4, array(336, 644, 952, 1110)),
72
+            array(125, 1828, 4, array(360, 700, 1020, 1200)),
73
+            array(129, 1921, 3, array(390, 728, 1050, 1260)),
74
+            array(133, 2051, 3, array(420, 784, 1140, 1350)),
75
+            array(137, 2185, 3, array(450, 812, 1200, 1440)), //30
76
+            array(141, 2323, 3, array(480, 868, 1290, 1530)),
77
+            array(145, 2465, 3, array(510, 924, 1350, 1620)),
78
+            array(149, 2611, 3, array(540, 980, 1440, 1710)),
79
+            array(153, 2761, 3, array(570, 1036, 1530, 1800)),
80
+            array(157, 2876, 0, array(570, 1064, 1590, 1890)), //35
81
+            array(161, 3034, 0, array(600, 1120, 1680, 1980)),
82
+            array(165, 3196, 0, array(630, 1204, 1770, 2100)),
83
+            array(169, 3362, 0, array(660, 1260, 1860, 2220)),
84
+            array(173, 3532, 0, array(720, 1316, 1950, 2310)),
85
+            array(177, 3706, 0, array(750, 1372, 2040, 2430)) //40
86 86
         );
87 87
         
88 88
         //----------------------------------------------------------------------
@@ -113,9 +113,9 @@  discard block
 block discarded – undo
113 113
         public static function getMinimumVersion($size, $level)
114 114
         {
115 115
 
116
-            for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) {
117
-                $words  = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level];
118
-                if($words >= $size) 
116
+            for ($i = 1; $i <= QRSPEC_VERSION_MAX; $i++) {
117
+                $words = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level];
118
+                if ($words >= $size) 
119 119
                     return $i;
120 120
             }
121 121
 
@@ -126,9 +126,9 @@  discard block
 block discarded – undo
126 126
         
127 127
         public static $lengthTableBits = array(
128 128
             array(10, 12, 14),
129
-            array( 9, 11, 13),
130
-            array( 8, 16, 16),
131
-            array( 8, 10, 12)
129
+            array(9, 11, 13),
130
+            array(8, 16, 16),
131
+            array(8, 10, 12)
132 132
         );
133 133
         
134 134
         //----------------------------------------------------------------------
@@ -151,12 +151,12 @@  discard block
 block discarded – undo
151 151
         //----------------------------------------------------------------------
152 152
         public static function maximumWords($mode, $version)
153 153
         {
154
-            if($mode == QR_MODE_STRUCTURE) 
154
+            if ($mode == QR_MODE_STRUCTURE) 
155 155
                 return 3;
156 156
                 
157
-            if($version <= 9) {
157
+            if ($version <= 9) {
158 158
                 $l = 0;
159
-            } else if($version <= 26) {
159
+            } else if ($version <= 26) {
160 160
                 $l = 1;
161 161
             } else {
162 162
                 $l = 2;
@@ -165,7 +165,7 @@  discard block
 block discarded – undo
165 165
             $bits = self::$lengthTableBits[$mode][$l];
166 166
             $words = (1 << $bits) - 1;
167 167
             
168
-            if($mode == QR_MODE_KANJI) {
168
+            if ($mode == QR_MODE_KANJI) {
169 169
                 $words *= 2; // the number of bytes is required
170 170
             }
171 171
 
@@ -177,47 +177,47 @@  discard block
 block discarded – undo
177 177
         // See Table 12-16 (pp.30-36), JIS X0510:2004.
178 178
 
179 179
         public static $eccTable = array(
180
-            array(array( 0,  0), array( 0,  0), array( 0,  0), array( 0,  0)),
181
-            array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), // 1
182
-            array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)),
183
-            array(array( 1,  0), array( 1,  0), array( 2,  0), array( 2,  0)),
184
-            array(array( 1,  0), array( 2,  0), array( 2,  0), array( 4,  0)),
185
-            array(array( 1,  0), array( 2,  0), array( 2,  2), array( 2,  2)), // 5
186
-            array(array( 2,  0), array( 4,  0), array( 4,  0), array( 4,  0)),
187
-            array(array( 2,  0), array( 4,  0), array( 2,  4), array( 4,  1)),
188
-            array(array( 2,  0), array( 2,  2), array( 4,  2), array( 4,  2)),
189
-            array(array( 2,  0), array( 3,  2), array( 4,  4), array( 4,  4)),
190
-            array(array( 2,  2), array( 4,  1), array( 6,  2), array( 6,  2)), //10
191
-            array(array( 4,  0), array( 1,  4), array( 4,  4), array( 3,  8)),
192
-            array(array( 2,  2), array( 6,  2), array( 4,  6), array( 7,  4)),
193
-            array(array( 4,  0), array( 8,  1), array( 8,  4), array(12,  4)),
194
-            array(array( 3,  1), array( 4,  5), array(11,  5), array(11,  5)),
195
-            array(array( 5,  1), array( 5,  5), array( 5,  7), array(11,  7)), //15
196
-            array(array( 5,  1), array( 7,  3), array(15,  2), array( 3, 13)),
197
-            array(array( 1,  5), array(10,  1), array( 1, 15), array( 2, 17)),
198
-            array(array( 5,  1), array( 9,  4), array(17,  1), array( 2, 19)),
199
-            array(array( 3,  4), array( 3, 11), array(17,  4), array( 9, 16)),
200
-            array(array( 3,  5), array( 3, 13), array(15,  5), array(15, 10)), //20
201
-            array(array( 4,  4), array(17,  0), array(17,  6), array(19,  6)),
202
-            array(array( 2,  7), array(17,  0), array( 7, 16), array(34,  0)),
203
-            array(array( 4,  5), array( 4, 14), array(11, 14), array(16, 14)),
204
-            array(array( 6,  4), array( 6, 14), array(11, 16), array(30,  2)),
205
-            array(array( 8,  4), array( 8, 13), array( 7, 22), array(22, 13)), //25
206
-            array(array(10,  2), array(19,  4), array(28,  6), array(33,  4)),
207
-            array(array( 8,  4), array(22,  3), array( 8, 26), array(12, 28)),
208
-            array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)),
209
-            array(array( 7,  7), array(21,  7), array( 1, 37), array(19, 26)),
210
-            array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), //30
211
-            array(array(13,  3), array( 2, 29), array(42,  1), array(23, 28)),
212
-            array(array(17,  0), array(10, 23), array(10, 35), array(19, 35)),
213
-            array(array(17,  1), array(14, 21), array(29, 19), array(11, 46)),
214
-            array(array(13,  6), array(14, 23), array(44,  7), array(59,  1)),
215
-            array(array(12,  7), array(12, 26), array(39, 14), array(22, 41)), //35
216
-            array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)),
217
-            array(array(17,  4), array(29, 14), array(49, 10), array(24, 46)),
218
-            array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)),
219
-            array(array(20,  4), array(40,  7), array(43, 22), array(10, 67)),
220
-            array(array(19,  6), array(18, 31), array(34, 34), array(20, 61)),//40
180
+            array(array(0, 0), array(0, 0), array(0, 0), array(0, 0)),
181
+            array(array(1, 0), array(1, 0), array(1, 0), array(1, 0)), // 1
182
+            array(array(1, 0), array(1, 0), array(1, 0), array(1, 0)),
183
+            array(array(1, 0), array(1, 0), array(2, 0), array(2, 0)),
184
+            array(array(1, 0), array(2, 0), array(2, 0), array(4, 0)),
185
+            array(array(1, 0), array(2, 0), array(2, 2), array(2, 2)), // 5
186
+            array(array(2, 0), array(4, 0), array(4, 0), array(4, 0)),
187
+            array(array(2, 0), array(4, 0), array(2, 4), array(4, 1)),
188
+            array(array(2, 0), array(2, 2), array(4, 2), array(4, 2)),
189
+            array(array(2, 0), array(3, 2), array(4, 4), array(4, 4)),
190
+            array(array(2, 2), array(4, 1), array(6, 2), array(6, 2)), //10
191
+            array(array(4, 0), array(1, 4), array(4, 4), array(3, 8)),
192
+            array(array(2, 2), array(6, 2), array(4, 6), array(7, 4)),
193
+            array(array(4, 0), array(8, 1), array(8, 4), array(12, 4)),
194
+            array(array(3, 1), array(4, 5), array(11, 5), array(11, 5)),
195
+            array(array(5, 1), array(5, 5), array(5, 7), array(11, 7)), //15
196
+            array(array(5, 1), array(7, 3), array(15, 2), array(3, 13)),
197
+            array(array(1, 5), array(10, 1), array(1, 15), array(2, 17)),
198
+            array(array(5, 1), array(9, 4), array(17, 1), array(2, 19)),
199
+            array(array(3, 4), array(3, 11), array(17, 4), array(9, 16)),
200
+            array(array(3, 5), array(3, 13), array(15, 5), array(15, 10)), //20
201
+            array(array(4, 4), array(17, 0), array(17, 6), array(19, 6)),
202
+            array(array(2, 7), array(17, 0), array(7, 16), array(34, 0)),
203
+            array(array(4, 5), array(4, 14), array(11, 14), array(16, 14)),
204
+            array(array(6, 4), array(6, 14), array(11, 16), array(30, 2)),
205
+            array(array(8, 4), array(8, 13), array(7, 22), array(22, 13)), //25
206
+            array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)),
207
+            array(array(8, 4), array(22, 3), array(8, 26), array(12, 28)),
208
+            array(array(3, 10), array(3, 23), array(4, 31), array(11, 31)),
209
+            array(array(7, 7), array(21, 7), array(1, 37), array(19, 26)),
210
+            array(array(5, 10), array(19, 10), array(15, 25), array(23, 25)), //30
211
+            array(array(13, 3), array(2, 29), array(42, 1), array(23, 28)),
212
+            array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)),
213
+            array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)),
214
+            array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)),
215
+            array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), //35
216
+            array(array(6, 14), array(6, 34), array(46, 10), array(2, 64)),
217
+            array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)),
218
+            array(array(4, 18), array(13, 32), array(48, 14), array(42, 32)),
219
+            array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)),
220
+            array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)), //40
221 221
         );                                                                       
222 222
 
223 223
         //----------------------------------------------------------------------
@@ -226,7 +226,7 @@  discard block
 block discarded – undo
226 226
         public static function getEccSpec($version, $level, array &$spec)
227 227
         {
228 228
             if (count($spec) < 5) {
229
-                $spec = array(0,0,0,0,0);
229
+                $spec = array(0, 0, 0, 0, 0);
230 230
             }
231 231
 
232 232
             $b1   = self::$eccTable[$version][$level][0];
@@ -234,16 +234,16 @@  discard block
 block discarded – undo
234 234
             $data = self::getDataLength($version, $level);
235 235
             $ecc  = self::getECCLength($version, $level);
236 236
 
237
-            if($b2 == 0) {
237
+            if ($b2 == 0) {
238 238
                 $spec[0] = $b1;
239
-                $spec[1] = (int)($data / $b1);
240
-                $spec[2] = (int)($ecc / $b1);
239
+                $spec[1] = (int) ($data / $b1);
240
+                $spec[2] = (int) ($ecc / $b1);
241 241
                 $spec[3] = 0; 
242 242
                 $spec[4] = 0;
243 243
             } else {
244 244
                 $spec[0] = $b1;
245
-                $spec[1] = (int)($data / ($b1 + $b2));
246
-                $spec[2] = (int)($ecc  / ($b1 + $b2));
245
+                $spec[1] = (int) ($data / ($b1 + $b2));
246
+                $spec[2] = (int) ($ecc / ($b1 + $b2));
247 247
                 $spec[3] = $b2;
248 248
                 $spec[4] = $spec[1] + 1;
249 249
             }
@@ -259,9 +259,9 @@  discard block
 block discarded – undo
259 259
         // See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
260 260
          
261 261
         public static $alignmentPattern = array(      
262
-            array( 0,  0),
263
-            array( 0,  0), array(18,  0), array(22,  0), array(26,  0), array(30,  0), // 1- 5
264
-            array(34,  0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10
262
+            array(0, 0),
263
+            array(0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5
264
+            array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10
265 265
             array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), //11-15
266 266
             array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), //16-20
267 267
             array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), //21-25
@@ -287,28 +287,28 @@  discard block
 block discarded – undo
287 287
                 "\xa1\xa1\xa1\xa1\xa1"
288 288
             );                        
289 289
             
290
-            $yStart = $oy-2;         
291
-            $xStart = $ox-2;
290
+            $yStart = $oy - 2;         
291
+            $xStart = $ox - 2;
292 292
             
293
-            for($y=0; $y<5; $y++) {
294
-                QRstr::set($frame, $xStart, $yStart+$y, $finder[$y]);
293
+            for ($y = 0; $y < 5; $y++) {
294
+                QRstr::set($frame, $xStart, $yStart + $y, $finder[$y]);
295 295
             }
296 296
         }
297 297
 
298 298
         //----------------------------------------------------------------------
299 299
         public static function putAlignmentPattern($version, &$frame, $width)
300 300
         {
301
-            if($version < 2)
301
+            if ($version < 2)
302 302
                 return;
303 303
 
304 304
             $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0];
305
-            if($d < 0) {
305
+            if ($d < 0) {
306 306
                 $w = 2;
307 307
             } else {
308
-                $w = (int)(($width - self::$alignmentPattern[$version][0]) / $d + 2);
308
+                $w = (int) (($width - self::$alignmentPattern[$version][0]) / $d + 2);
309 309
             }
310 310
 
311
-            if($w * $w - 3 == 1) {
311
+            if ($w * $w - 3 == 1) {
312 312
                 $x = self::$alignmentPattern[$version][0];
313 313
                 $y = self::$alignmentPattern[$version][0];
314 314
                 self::putAlignmentMarker($frame, $x, $y);
@@ -316,16 +316,16 @@  discard block
 block discarded – undo
316 316
             }
317 317
 
318 318
             $cx = self::$alignmentPattern[$version][0];
319
-            for($x=1; $x<$w - 1; $x++) {
319
+            for ($x = 1; $x < $w - 1; $x++) {
320 320
                 self::putAlignmentMarker($frame, 6, $cx);
321
-                self::putAlignmentMarker($frame, $cx,  6);
321
+                self::putAlignmentMarker($frame, $cx, 6);
322 322
                 $cx += $d;
323 323
             }
324 324
 
325 325
             $cy = self::$alignmentPattern[$version][0];
326
-            for($y=0; $y<$w-1; $y++) {
326
+            for ($y = 0; $y < $w - 1; $y++) {
327 327
                 $cx = self::$alignmentPattern[$version][0];
328
-                for($x=0; $x<$w-1; $x++) {
328
+                for ($x = 0; $x < $w - 1; $x++) {
329 329
                     self::putAlignmentMarker($frame, $cx, $cy);
330 330
                     $cx += $d;
331 331
                 }
@@ -351,10 +351,10 @@  discard block
 block discarded – undo
351 351
         //----------------------------------------------------------------------
352 352
         public static function getVersionPattern($version)
353 353
         {
354
-            if($version < 7 || $version > QRSPEC_VERSION_MAX)
354
+            if ($version < 7 || $version > QRSPEC_VERSION_MAX)
355 355
                 return 0;
356 356
 
357
-            return self::$versionPattern[$version -7];
357
+            return self::$versionPattern[$version - 7];
358 358
         }
359 359
 
360 360
         // Format information --------------------------------------------------
@@ -369,10 +369,10 @@  discard block
 block discarded – undo
369 369
 
370 370
         public static function getFormatInfo($mask, $level)
371 371
         {
372
-            if($mask < 0 || $mask > 7)
372
+            if ($mask < 0 || $mask > 7)
373 373
                 return 0;
374 374
                 
375
-            if($level < 0 || $level > 3)
375
+            if ($level < 0 || $level > 3)
376 376
                 return 0;                
377 377
 
378 378
             return self::$formatInfo[$level][$mask];
@@ -401,8 +401,8 @@  discard block
 block discarded – undo
401 401
                 "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
402 402
             );                            
403 403
             
404
-            for($y=0; $y<7; $y++) {
405
-                QRstr::set($frame, $ox, $oy+$y, $finder[$y]);
404
+            for ($y = 0; $y < 7; $y++) {
405
+                QRstr::set($frame, $ox, $oy + $y, $finder[$y]);
406 406
             }
407 407
         }
408 408
 
@@ -410,7 +410,7 @@  discard block
 block discarded – undo
410 410
         public static function createFrame($version)
411 411
         {
412 412
             $width = self::$capacity[$version][QRCAP_WIDTH];
413
-            $frameLine = str_repeat ("\0", $width);
413
+            $frameLine = str_repeat("\0", $width);
414 414
             $frame = array_fill(0, $width, $frameLine);
415 415
 
416 416
             // Finder pattern
@@ -421,7 +421,7 @@  discard block
 block discarded – undo
421 421
             // Separator
422 422
             $yOffset = $width - 7;
423 423
             
424
-            for($y=0; $y<7; $y++) {
424
+            for ($y = 0; $y < 7; $y++) {
425 425
                 $frame[$y][7] = "\xc0";
426 426
                 $frame[$y][$width - 8] = "\xc0";
427 427
                 $frame[$yOffset][7] = "\xc0";
@@ -431,7 +431,7 @@  discard block
 block discarded – undo
431 431
             $setPattern = str_repeat("\xc0", 8);
432 432
             
433 433
             QRstr::set($frame, 0, 7, $setPattern);
434
-            QRstr::set($frame, $width-8, 7, $setPattern);
434
+            QRstr::set($frame, $width - 8, 7, $setPattern);
435 435
             QRstr::set($frame, 0, $width - 8, $setPattern);
436 436
         
437 437
             // Format info
@@ -441,38 +441,38 @@  discard block
 block discarded – undo
441 441
             
442 442
             $yOffset = $width - 8;
443 443
 
444
-            for($y=0; $y<8; $y++,$yOffset++) {
444
+            for ($y = 0; $y < 8; $y++, $yOffset++) {
445 445
                 $frame[$y][8] = "\x84";
446 446
                 $frame[$yOffset][8] = "\x84";
447 447
             }
448 448
 
449 449
             // Timing pattern  
450 450
             
451
-            for($i=1; $i<$width-15; $i++) {
452
-                $frame[6][7+$i] = chr(0x90 | ($i & 1));
453
-                $frame[7+$i][6] = chr(0x90 | ($i & 1));
451
+            for ($i = 1; $i < $width - 15; $i++) {
452
+                $frame[6][7 + $i] = chr(0x90 | ($i & 1));
453
+                $frame[7 + $i][6] = chr(0x90 | ($i & 1));
454 454
             }
455 455
             
456 456
             // Alignment pattern  
457 457
             self::putAlignmentPattern($version, $frame, $width);
458 458
             
459 459
             // Version information 
460
-            if($version >= 7) {
460
+            if ($version >= 7) {
461 461
                 $vinf = self::getVersionPattern($version);
462 462
 
463 463
                 $v = $vinf;
464 464
                 
465
-                for($x=0; $x<6; $x++) {
466
-                    for($y=0; $y<3; $y++) {
467
-                        $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
465
+                for ($x = 0; $x < 6; $x++) {
466
+                    for ($y = 0; $y < 3; $y++) {
467
+                        $frame[($width - 11) + $y][$x] = chr(0x88 | ($v & 1));
468 468
                         $v = $v >> 1;
469 469
                     }
470 470
                 }
471 471
 
472 472
                 $v = $vinf;
473
-                for($y=0; $y<6; $y++) {
474
-                    for($x=0; $x<3; $x++) {
475
-                        $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
473
+                for ($y = 0; $y < 6; $y++) {
474
+                    for ($x = 0; $x < 3; $x++) {
475
+                        $frame[$y][$x + ($width - 11)] = chr(0x88 | ($v & 1));
476 476
                         $v = $v >> 1;
477 477
                     }
478 478
                 }
@@ -506,16 +506,16 @@  discard block
 block discarded – undo
506 506
             } else {
507 507
             
508 508
                 foreach ($frame as &$frameLine) {
509
-                    $frameLine = join('<span class="m">&nbsp;</span>',  explode("\xc0", $frameLine));
509
+                    $frameLine = join('<span class="m">&nbsp;</span>', explode("\xc0", $frameLine));
510 510
                     $frameLine = join('<span class="m">&#9618;</span>', explode("\xc1", $frameLine));
511
-                    $frameLine = join('<span class="p">&nbsp;</span>',  explode("\xa0", $frameLine));
511
+                    $frameLine = join('<span class="p">&nbsp;</span>', explode("\xa0", $frameLine));
512 512
                     $frameLine = join('<span class="p">&#9618;</span>', explode("\xa1", $frameLine));
513 513
                     $frameLine = join('<span class="s">&#9671;</span>', explode("\x84", $frameLine)); //format 0
514 514
                     $frameLine = join('<span class="s">&#9670;</span>', explode("\x85", $frameLine)); //format 1
515 515
                     $frameLine = join('<span class="x">&#9762;</span>', explode("\x81", $frameLine)); //special bit
516
-                    $frameLine = join('<span class="c">&nbsp;</span>',  explode("\x90", $frameLine)); //clock 0
516
+                    $frameLine = join('<span class="c">&nbsp;</span>', explode("\x90", $frameLine)); //clock 0
517 517
                     $frameLine = join('<span class="c">&#9719;</span>', explode("\x91", $frameLine)); //clock 1
518
-                    $frameLine = join('<span class="f">&nbsp;</span>',  explode("\x88", $frameLine)); //version
518
+                    $frameLine = join('<span class="f">&nbsp;</span>', explode("\x88", $frameLine)); //version
519 519
                     $frameLine = join('<span class="f">&#9618;</span>', explode("\x89", $frameLine)); //version
520 520
                     $frameLine = join('&#9830;', explode("\x01", $frameLine));
521 521
                     $frameLine = join('&#8901;', explode("\0", $frameLine));
@@ -553,10 +553,10 @@  discard block
 block discarded – undo
553 553
         //----------------------------------------------------------------------
554 554
         public static function newFrame($version)
555 555
         {
556
-            if($version < 1 || $version > QRSPEC_VERSION_MAX) 
556
+            if ($version < 1 || $version > QRSPEC_VERSION_MAX) 
557 557
                 return null;
558 558
 
559
-            if(!isset(self::$frames[$version])) {
559
+            if (!isset(self::$frames[$version])) {
560 560
                 
561 561
                 $fileName = QR_CACHE_DIR.'frame_'.$version.'.dat';
562 562
                 
@@ -572,21 +572,21 @@  discard block
 block discarded – undo
572 572
                 }
573 573
             }
574 574
             
575
-            if(is_null(self::$frames[$version]))
575
+            if (is_null(self::$frames[$version]))
576 576
                 return null;
577 577
 
578 578
             return self::$frames[$version];
579 579
         }
580 580
 
581 581
         //----------------------------------------------------------------------
582
-        public static function rsBlockNum($spec)     { return $spec[0] + $spec[3]; }
583
-        public static function rsBlockNum1($spec)    { return $spec[0]; }
584
-        public static function rsDataCodes1($spec)   { return $spec[1]; }
585
-        public static function rsEccCodes1($spec)    { return $spec[2]; }
586
-        public static function rsBlockNum2($spec)    { return $spec[3]; }
587
-        public static function rsDataCodes2($spec)   { return $spec[4]; }
588
-        public static function rsEccCodes2($spec)    { return $spec[2]; }
589
-        public static function rsDataLength($spec)   { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]);    }
590
-        public static function rsEccLength($spec)    { return ($spec[0] + $spec[3]) * $spec[2]; }
582
+        public static function rsBlockNum($spec) { return $spec[0] + $spec[3]; }
583
+        public static function rsBlockNum1($spec) { return $spec[0]; }
584
+        public static function rsDataCodes1($spec) { return $spec[1]; }
585
+        public static function rsEccCodes1($spec) { return $spec[2]; }
586
+        public static function rsBlockNum2($spec) { return $spec[3]; }
587
+        public static function rsDataCodes2($spec) { return $spec[4]; }
588
+        public static function rsEccCodes2($spec) { return $spec[2]; }
589
+        public static function rsDataLength($spec) { return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); }
590
+        public static function rsEccLength($spec) { return ($spec[0] + $spec[3]) * $spec[2]; }
591 591
         
592 592
     }
593 593
\ No newline at end of file
Please login to merge, or discard this patch.
Braces   +27 added lines, -18 removed lines patch added patch discarded remove patch
@@ -115,8 +115,9 @@  discard block
 block discarded – undo
115 115
 
116 116
             for($i=1; $i<= QRSPEC_VERSION_MAX; $i++) {
117 117
                 $words  = self::$capacity[$i][QRCAP_WORDS] - self::$capacity[$i][QRCAP_EC][$level];
118
-                if($words >= $size) 
119
-                    return $i;
118
+                if($words >= $size) {
119
+                                    return $i;
120
+                }
120 121
             }
121 122
 
122 123
             return -1;
@@ -134,8 +135,9 @@  discard block
 block discarded – undo
134 135
         //----------------------------------------------------------------------
135 136
         public static function lengthIndicator($mode, $version)
136 137
         {
137
-            if ($mode == QR_MODE_STRUCTURE)
138
-                return 0;
138
+            if ($mode == QR_MODE_STRUCTURE) {
139
+                            return 0;
140
+            }
139 141
                 
140 142
             if ($version <= 9) {
141 143
                 $l = 0;
@@ -151,8 +153,9 @@  discard block
 block discarded – undo
151 153
         //----------------------------------------------------------------------
152 154
         public static function maximumWords($mode, $version)
153 155
         {
154
-            if($mode == QR_MODE_STRUCTURE) 
155
-                return 3;
156
+            if($mode == QR_MODE_STRUCTURE) {
157
+                            return 3;
158
+            }
156 159
                 
157 160
             if($version <= 9) {
158 161
                 $l = 0;
@@ -298,8 +301,9 @@  discard block
 block discarded – undo
298 301
         //----------------------------------------------------------------------
299 302
         public static function putAlignmentPattern($version, &$frame, $width)
300 303
         {
301
-            if($version < 2)
302
-                return;
304
+            if($version < 2) {
305
+                            return;
306
+            }
303 307
 
304 308
             $d = self::$alignmentPattern[$version][1] - self::$alignmentPattern[$version][0];
305 309
             if($d < 0) {
@@ -351,8 +355,9 @@  discard block
 block discarded – undo
351 355
         //----------------------------------------------------------------------
352 356
         public static function getVersionPattern($version)
353 357
         {
354
-            if($version < 7 || $version > QRSPEC_VERSION_MAX)
355
-                return 0;
358
+            if($version < 7 || $version > QRSPEC_VERSION_MAX) {
359
+                            return 0;
360
+            }
356 361
 
357 362
             return self::$versionPattern[$version -7];
358 363
         }
@@ -369,11 +374,13 @@  discard block
 block discarded – undo
369 374
 
370 375
         public static function getFormatInfo($mask, $level)
371 376
         {
372
-            if($mask < 0 || $mask > 7)
373
-                return 0;
377
+            if($mask < 0 || $mask > 7) {
378
+                            return 0;
379
+            }
374 380
                 
375
-            if($level < 0 || $level > 3)
376
-                return 0;                
381
+            if($level < 0 || $level > 3) {
382
+                            return 0;
383
+            }
377 384
 
378 385
             return self::$formatInfo[$level][$mask];
379 386
         }
@@ -553,8 +560,9 @@  discard block
 block discarded – undo
553 560
         //----------------------------------------------------------------------
554 561
         public static function newFrame($version)
555 562
         {
556
-            if($version < 1 || $version > QRSPEC_VERSION_MAX) 
557
-                return null;
563
+            if($version < 1 || $version > QRSPEC_VERSION_MAX) {
564
+                            return null;
565
+            }
558 566
 
559 567
             if(!isset(self::$frames[$version])) {
560 568
                 
@@ -572,8 +580,9 @@  discard block
 block discarded – undo
572 580
                 }
573 581
             }
574 582
             
575
-            if(is_null(self::$frames[$version]))
576
-                return null;
583
+            if(is_null(self::$frames[$version])) {
584
+                            return null;
585
+            }
577 586
 
578 587
             return self::$frames[$version];
579 588
         }
Please login to merge, or discard this patch.
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -335,10 +335,10 @@
 block discarded – undo
335 335
 
336 336
         // Version information pattern -----------------------------------------
337 337
 
338
-		// Version information pattern (BCH coded).
338
+        // Version information pattern (BCH coded).
339 339
         // See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
340 340
         
341
-		// size: [QRSPEC_VERSION_MAX - 6]
341
+        // size: [QRSPEC_VERSION_MAX - 6]
342 342
 		
343 343
         public static $versionPattern = array(
344 344
             0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d,
Please login to merge, or discard this patch.