71 lines
2.0 KiB
PHP
71 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* BaconQrCode
|
|
*
|
|
* @link http://github.com/Bacon/BaconQrCode For the canonical source repository
|
|
* @copyright 2013 Ben 'DASPRiD' Scholzen
|
|
* @license http://opensource.org/licenses/BSD-2-Clause Simplified BSD License
|
|
*/
|
|
|
|
namespace BaconQrCode\Common;
|
|
|
|
/**
|
|
* Enum representing various modes in which data can be encoded to bits.
|
|
*/
|
|
class Mode extends AbstractEnum
|
|
{
|
|
/**#@+
|
|
* Mode constants.
|
|
*/
|
|
const TERMINATOR = 0x0;
|
|
const NUMERIC = 0x1;
|
|
const ALPHANUMERIC = 0x2;
|
|
const STRUCTURED_APPEND = 0x3;
|
|
const BYTE = 0x4;
|
|
const ECI = 0x7;
|
|
const KANJI = 0x8;
|
|
const FNC1_FIRST_POSITION = 0x5;
|
|
const FNC1_SECOND_POSITION = 0x9;
|
|
const HANZI = 0xd;
|
|
/**#@-*/
|
|
|
|
/**
|
|
* Character count bits for each version.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected static $characterCountBitsForVersions = array(
|
|
self::TERMINATOR => array(0, 0, 0),
|
|
self::NUMERIC => array(10, 12, 14),
|
|
self::ALPHANUMERIC => array(9, 11, 13),
|
|
self::STRUCTURED_APPEND => array(0, 0, 0),
|
|
self::BYTE => array(8, 16, 16),
|
|
self::ECI => array(0, 0, 0),
|
|
self::KANJI => array(8, 10, 12),
|
|
self::FNC1_FIRST_POSITION => array(0, 0, 0),
|
|
self::FNC1_SECOND_POSITION => array(0, 0, 0),
|
|
self::HANZI => array(8, 10, 12),
|
|
);
|
|
|
|
/**
|
|
* Gets the number of bits used in a specific QR code version.
|
|
*
|
|
* @param Version $version
|
|
* @return integer
|
|
*/
|
|
public function getCharacterCountBits(Version $version)
|
|
{
|
|
$number = $version->getVersionNumber();
|
|
|
|
if ($number <= 9) {
|
|
$offset = 0;
|
|
} elseif ($number <= 26) {
|
|
$offset = 1;
|
|
} else {
|
|
$offset = 2;
|
|
}
|
|
|
|
return self::$characterCountBitsForVersions[$this->value][$offset];
|
|
}
|
|
}
|