mirror of
https://github.com/chillerlan/php-qrcode.git
synced 2026-08-24 21:37:54 +00:00
🚿
This commit is contained in:
@@ -90,6 +90,8 @@ final class BitBuffer{
|
||||
|
||||
/**
|
||||
* returns the buffer content
|
||||
*
|
||||
* to debug: array_map(fn($v) => sprintf('%08b', $v), $bitBuffer->getBuffer())
|
||||
*/
|
||||
public function getBuffer():array{
|
||||
return $this->buffer;
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@
|
||||
|
||||
namespace chillerlan\QRCode\Common;
|
||||
|
||||
use chillerlan\QRCode\Data\{AlphaNum, Byte, ECI, Hanzi, Kanji, Number};
|
||||
use chillerlan\QRCode\Data\{AlphaNum, Byte, Hanzi, Kanji, Number};
|
||||
use chillerlan\QRCode\QRCodeException;
|
||||
|
||||
/**
|
||||
|
||||
+17
-17
@@ -105,23 +105,6 @@ final class Decoder{
|
||||
if($datamode === Mode::TERMINATOR){
|
||||
break;
|
||||
}
|
||||
elseif($datamode === Mode::ECI){
|
||||
$result .= ECI::decodeSegment($this->bitBuffer, $versionNumber);
|
||||
}
|
||||
elseif($datamode === Mode::FNC1_FIRST || $datamode === Mode::FNC1_SECOND){
|
||||
// We do little with FNC1 except alter the parsed result a bit according to the spec
|
||||
$fc1InEffect = true;
|
||||
}
|
||||
elseif($datamode === Mode::STRCTURED_APPEND){
|
||||
|
||||
if($this->bitBuffer->available() < 16){
|
||||
throw new QRCodeDecoderException('structured append: not enough bits left');
|
||||
}
|
||||
// sequence number and parity is added later to the result metadata
|
||||
// Read next 8 bits (symbol sequence #) and 8 bits (parity data), then continue
|
||||
$symbolSequence = $this->bitBuffer->read(8);
|
||||
$parityData = $this->bitBuffer->read(8);
|
||||
}
|
||||
elseif($datamode === Mode::NUMBER){
|
||||
$result .= Number::decodeSegment($this->bitBuffer, $versionNumber);
|
||||
}
|
||||
@@ -134,6 +117,23 @@ final class Decoder{
|
||||
elseif($datamode === Mode::KANJI){
|
||||
$result .= Kanji::decodeSegment($this->bitBuffer, $versionNumber);
|
||||
}
|
||||
elseif($datamode === Mode::STRCTURED_APPEND){
|
||||
|
||||
if($this->bitBuffer->available() < 16){
|
||||
throw new QRCodeDecoderException('structured append: not enough bits left');
|
||||
}
|
||||
// sequence number and parity is added later to the result metadata
|
||||
// Read next 8 bits (symbol sequence #) and 8 bits (parity data), then continue
|
||||
$symbolSequence = $this->bitBuffer->read(8);
|
||||
$parityData = $this->bitBuffer->read(8);
|
||||
}
|
||||
elseif($datamode === Mode::FNC1_FIRST || $datamode === Mode::FNC1_SECOND){
|
||||
// We do little with FNC1 except alter the parsed result a bit according to the spec
|
||||
$fc1InEffect = true;
|
||||
}
|
||||
elseif($datamode === Mode::ECI){
|
||||
$result .= ECI::decodeSegment($this->bitBuffer, $versionNumber);
|
||||
}
|
||||
elseif($datamode === Mode::HANZI){
|
||||
$result .= Hanzi::decodeSegment($this->bitBuffer, $versionNumber);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ use chillerlan\QRCode\Common\ECICharset;
|
||||
use chillerlan\QRCode\QRCodeException;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class ECICharsetTest extends TestCase{
|
||||
final class ECICharsetTest extends TestCase{
|
||||
|
||||
public static function invalidIdProvider():array{
|
||||
return [[-1], [1000000]];
|
||||
|
||||
@@ -17,7 +17,7 @@ use function bin2hex, chr, defined, sprintf;
|
||||
/**
|
||||
* Tests the Hanzi/GB2312 class
|
||||
*/
|
||||
class HanziTest extends DataInterfaceTestAbstract{
|
||||
final class HanziTest extends DataInterfaceTestAbstract{
|
||||
|
||||
protected string $FQN = Hanzi::class;
|
||||
protected string $testdata = '无可奈何燃花作香';
|
||||
|
||||
@@ -21,7 +21,7 @@ use PHPUnit\Framework\TestCase;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
class QRDataTest extends TestCase{
|
||||
final class QRDataTest extends TestCase{
|
||||
|
||||
/**
|
||||
* tests setting the BitBuffer object directly
|
||||
|
||||
Reference in New Issue
Block a user