Exemple #1
0
 public function appendPaddingBit(&$bstream)
 {
     $bits = $bstream->size();
     $maxwords = weixin_qrcode_QRspec::getDataLength($this->version, $this->level);
     $maxbits = $maxwords * 8;
     if ($maxbits == $bits) {
         return 0;
     }
     if ($maxbits - $bits < 5) {
         return $bstream->appendNum($maxbits - $bits, 0);
     }
     $bits += 4;
     $words = (int) (($bits + 7) / 8);
     $padding = new weixin_qrcode_QRbitstream();
     $ret = $padding->appendNum($words * 8 - $bits + 4, 0);
     if ($ret < 0) {
         return $ret;
     }
     $padlen = $maxwords - $words;
     if ($padlen > 0) {
         $padbuf = array();
         for ($i = 0; $i < $padlen; $i++) {
             $padbuf[$i] = $i & 1 ? 0x11 : 0xec;
         }
         $ret = $padding->appendBytes($padlen, $padbuf);
         if ($ret < 0) {
             return $ret;
         }
     }
     $ret = $bstream->append($padding);
     return $ret;
 }