| <?php |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| namespace Zxing\Qrcode\Decoder; |
|
|
| |
| |
| |
| |
| |
| |
| class Mode |
| { |
| public static $TERMINATOR; |
| public static $NUMERIC; |
| public static $ALPHANUMERIC; |
| public static $STRUCTURED_APPEND; |
| public static $BYTE; |
| public static $ECI; |
| public static $KANJI; |
| public static $FNC1_FIRST_POSITION; |
| public static $FNC1_SECOND_POSITION; |
| public static $HANZI; |
|
|
| private $characterCountBitsForVersions; |
| private $bits; |
|
|
| public function __construct($characterCountBitsForVersions, $bits) |
| { |
| $this->characterCountBitsForVersions = $characterCountBitsForVersions; |
| $this->bits = $bits; |
| } |
|
|
| public static function Init() |
| { |
|
|
|
|
| self::$TERMINATOR = new Mode([0, 0, 0], 0x00); |
| self::$NUMERIC = new Mode([10, 12, 14], 0x01); |
| self::$ALPHANUMERIC = new Mode([9, 11, 13], 0x02); |
| self::$STRUCTURED_APPEND = new Mode([0, 0, 0], 0x03); |
| self::$BYTE = new Mode([8, 16, 16], 0x04); |
| self::$ECI = new Mode([0, 0, 0], 0x07); |
| self::$KANJI = new Mode([8, 10, 12], 0x08); |
| self::$FNC1_FIRST_POSITION = new Mode([0, 0, 0], 0x05); |
| self::$FNC1_SECOND_POSITION = new Mode([0, 0, 0], 0x09); |
| |
| self::$HANZI = new Mode([8, 10, 12], 0x0D); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public static function forBits($bits) |
| { |
| switch ($bits) { |
| case 0x0: |
| return self::$TERMINATOR; |
| case 0x1: |
| return self::$NUMERIC; |
| case 0x2: |
| return self::$ALPHANUMERIC; |
| case 0x3: |
| return self::$STRUCTURED_APPEND; |
| case 0x4: |
| return self::$BYTE; |
| case 0x5: |
| return self::$FNC1_FIRST_POSITION; |
| case 0x7: |
| return self::$ECI; |
| case 0x8: |
| return self::$KANJI; |
| case 0x9: |
| return self::$FNC1_SECOND_POSITION; |
| case 0xD: |
| |
| return self::$HANZI; |
| default: |
| throw new \InvalidArgumentException(); |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| |
| public function getCharacterCountBits($version) |
| { |
| $number = $version->getVersionNumber(); |
| $offset = 0; |
| if ($number <= 9) { |
| $offset = 0; |
| } else if ($number <= 26) { |
| $offset = 1; |
| } else { |
| $offset = 2; |
| } |
|
|
| return $this->characterCountBitsForVersions[$offset]; |
| } |
|
|
| public function getBits() |
| { |
| return $this->bits; |
| } |
|
|
| } |
|
|
| Mode::Init(); |
|
|