Example #1
0
 public function init(array $spec)
 {
     $dl = QRspec::rsDataCodes1($spec);
     $el = QRspec::rsEccCodes1($spec);
     $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
     $blockNo = 0;
     $dataPos = 0;
     $eccPos = 0;
     for ($i = 0; $i < QRspec::rsBlockNum1($spec); $i++) {
         $ecc = array_slice($this->ecccode, $eccPos);
         $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
         $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
         $dataPos += $dl;
         $eccPos += $el;
         $blockNo++;
     }
     if (QRspec::rsBlockNum2($spec) == 0) {
         return 0;
     }
     $dl = QRspec::rsDataCodes2($spec);
     $el = QRspec::rsEccCodes2($spec);
     $rs = QRrs::init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
     if ($rs == NULL) {
         return -1;
     }
     for ($i = 0; $i < QRspec::rsBlockNum2($spec); $i++) {
         $ecc = array_slice($this->ecccode, $eccPos);
         $this->rsblocks[$blockNo] = new QRrsblock($dl, array_slice($this->datacode, $dataPos), $el, $ecc, $rs);
         $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
         $dataPos += $dl;
         $eccPos += $el;
         $blockNo++;
     }
     return 0;
 }