public function appendPaddingBit(&$bstream) { $bits = $bstream->size(); $maxwords = 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 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; }
public function encodeModeStructure() { try { $bs = new QRbitstream(); $bs->appendNum(4, 0x3); $bs->appendNum(4, ord($this->data[1]) - 1); $bs->appendNum(4, ord($this->data[0]) - 1); $bs->appendNum(8, ord($this->data[2])); $this->bstream = $bs; return 0; } catch (Exception $e) { return -1; } }