| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | <?phpdeclare(strict_types = 1);namespace BaconQrCode\Common;use DASPRiD\Enum\AbstractEnum;/** * Enum representing various modes in which data can be encoded to bits. * * @method static self TERMINATOR() * @method static self NUMERIC() * @method static self ALPHANUMERIC() * @method static self STRUCTURED_APPEND() * @method static self BYTE() * @method static self ECI() * @method static self KANJI() * @method static self FNC1_FIRST_POSITION() * @method static self FNC1_SECOND_POSITION() * @method static self HANZI() */final class Mode extends AbstractEnum{    protected const TERMINATOR = [[0, 0, 0], 0x00];    protected const NUMERIC = [[10, 12, 14], 0x01];    protected const ALPHANUMERIC = [[9, 11, 13], 0x02];    protected const STRUCTURED_APPEND = [[0, 0, 0], 0x03];    protected const BYTE = [[8, 16, 16], 0x04];    protected const ECI = [[0, 0, 0], 0x07];    protected const KANJI = [[8, 10, 12], 0x08];    protected const FNC1_FIRST_POSITION = [[0, 0, 0], 0x05];    protected const FNC1_SECOND_POSITION = [[0, 0, 0], 0x09];    protected const HANZI = [[8, 10, 12], 0x0d];    /**     * @var int[]     */    private $characterCountBitsForVersions;    /**     * @var int     */    private $bits;    protected function __construct(array $characterCountBitsForVersions, int $bits)    {        $this->characterCountBitsForVersions = $characterCountBitsForVersions;        $this->bits = $bits;    }    /**     * Returns the number of bits used in a specific QR code version.     */    public function getCharacterCountBits(Version $version) : int    {        $number = $version->getVersionNumber();        if ($number <= 9) {            $offset = 0;        } elseif ($number <= 26) {            $offset = 1;        } else {            $offset = 2;        }        return $this->characterCountBitsForVersions[$offset];    }    /**     * Returns the four bits used to encode this mode.     */    public function getBits() : int    {        return $this->bits;    }}
 |