Просмотр исходного кода

:octocat: refactor/remove QRConst::class

smiley 8 лет назад
Родитель
Сommit
c5283fb1fa

+ 2 - 2
src/Data/AlphaNum.php

@@ -12,7 +12,7 @@
 
 namespace chillerlan\QRCode\Data;
 
-use chillerlan\QRCode\{BitBuffer, QRConst};
+use chillerlan\QRCode\BitBuffer;
 
 /**
  *
@@ -34,7 +34,7 @@ class AlphaNum extends QRDataAbstract{
 	/**
 	 * @var int
 	 */
-	public $mode = QRConst::MODE_ALPHANUM;
+	public $mode = self::MODE_ALPHANUM;
 
 	/**
 	 * @var array

+ 2 - 2
src/Data/Byte.php

@@ -12,7 +12,7 @@
 
 namespace chillerlan\QRCode\Data;
 
-use chillerlan\QRCode\{BitBuffer, QRConst};
+use chillerlan\QRCode\BitBuffer;
 
 /**
  *
@@ -22,7 +22,7 @@ class Byte extends QRDataAbstract{
 	/**
 	 * @var int
 	 */
-	public $mode = QRConst::MODE_BYTE;
+	public $mode = self::MODE_BYTE;
 
 	/**
 	 * @var array

+ 2 - 2
src/Data/Kanji.php

@@ -12,7 +12,7 @@
 
 namespace chillerlan\QRCode\Data;
 
-use chillerlan\QRCode\{BitBuffer, QRConst};
+use chillerlan\QRCode\BitBuffer;
 
 /**
  *
@@ -22,7 +22,7 @@ class Kanji extends QRDataAbstract{
 	/**
 	 * @var int
 	 */
-	public $mode = QRConst::MODE_KANJI;
+	public $mode = self::MODE_KANJI;
 
 	/**
 	 * @var array

+ 2 - 2
src/Data/Number.php

@@ -12,7 +12,7 @@
 
 namespace chillerlan\QRCode\Data;
 
-use chillerlan\QRCode\{BitBuffer, QRConst};
+use chillerlan\QRCode\BitBuffer;
 
 /**
  *
@@ -22,7 +22,7 @@ class Number extends QRDataAbstract{
 	/**
 	 * @var int
 	 */
-	public $mode = QRConst::MODE_NUMBER;
+	public $mode = self::MODE_NUMBER;
 
 	/**
 	 * @var array

+ 12 - 0
src/Data/QRDataInterface.php

@@ -21,6 +21,18 @@ use chillerlan\QRCode\BitBuffer;
  */
 interface QRDataInterface{
 
+	const MODE_NUMBER   = 1 << 0;
+	const MODE_ALPHANUM = 1 << 1;
+	const MODE_BYTE     = 1 << 2;
+	const MODE_KANJI    = 1 << 3;
+
+	const MODE = [
+		self::MODE_NUMBER   => 0,
+		self::MODE_ALPHANUM => 1,
+		self::MODE_BYTE     => 2,
+		self::MODE_KANJI    => 3,
+	];
+
 	/**
 	 * @param \chillerlan\QRCode\BitBuffer $buffer
 	 * @return void

+ 93 - 24
src/QRCode.php

@@ -12,12 +12,16 @@
 
 namespace chillerlan\QRCode;
 
-use chillerlan\QRCode\Data\{AlphaNum, Byte, Kanji, Number};
+use chillerlan\QRCode\Data\{
+	AlphaNum, Byte, Kanji, Number, QRDataInterface
+};
 use chillerlan\QRCode\Output\QROutputInterface;
 
 /**
  * @link https://github.com/kazuhikoarase/qrcode-generator/tree/master/php
  * @link http://www.thonky.com/qr-code-tutorial/
+ *
+ * const ALL THE THINGS! ~John Carmack
  */
 class QRCode{
 
@@ -52,6 +56,70 @@ class QRCode{
 	const TYPE_09 =  9; // 1856 1456 1056  800
 	const TYPE_10 = 10; // 2192 1728 1232  976
 
+
+	const MAX_BITS = [
+		self::TYPE_01 => [ 128,  152,   72,  104],
+		self::TYPE_02 => [ 224,  272,  128,  176],
+		self::TYPE_03 => [ 352,  440,  208,  272],
+		self::TYPE_04 => [ 512,  640,  288,  384],
+		self::TYPE_05 => [ 688,  864,  368,  496],
+		self::TYPE_06 => [ 864, 1088,  480,  608],
+		self::TYPE_07 => [ 992, 1248,  528,  704],
+		self::TYPE_08 => [1232, 1552,  688,  880],
+		self::TYPE_09 => [1456, 1856,  800, 1056],
+		self::TYPE_10 => [1728, 2192,  976, 1232],
+	];
+
+	const RSBLOCK = [
+		self::ERROR_CORRECT_LEVEL_L => 0,
+		self::ERROR_CORRECT_LEVEL_M => 1,
+		self::ERROR_CORRECT_LEVEL_Q => 2,
+		self::ERROR_CORRECT_LEVEL_H => 3,
+	];
+
+	const PATTERN_POSITION = [
+		[],
+		[6, 18],
+		[6, 22],
+		[6, 26],
+		[6, 30],
+		[6, 34],
+		[6, 22, 38],
+		[6, 24, 42],
+		[6, 26, 46],
+		[6, 28, 50],
+		[6, 30, 54],
+		[6, 32, 58],
+		[6, 34, 62],
+		[6, 26, 46, 66],
+		[6, 26, 48, 70],
+		[6, 26, 50, 74],
+		[6, 30, 54, 78],
+		[6, 30, 56, 82],
+		[6, 30, 58, 86],
+		[6, 34, 62, 90],
+		[6, 28, 50, 72, 94],
+		[6, 26, 50, 74, 98],
+		[6, 30, 54, 78, 102],
+		[6, 28, 54, 80, 106],
+		[6, 32, 58, 84, 110],
+		[6, 30, 58, 86, 114],
+		[6, 34, 62, 90, 118],
+		[6, 26, 50, 74, 98, 122],
+		[6, 30, 54, 78, 102, 126],
+		[6, 26, 52, 78, 104, 130],
+		[6, 30, 56, 82, 108, 134],
+		[6, 34, 60, 86, 112, 138],
+		[6, 30, 58, 86, 114, 142],
+		[6, 34, 62, 90, 118, 146],
+		[6, 30, 54, 78, 102, 126, 150],
+		[6, 24, 50, 76, 102, 128, 154],
+		[6, 28, 54, 80, 106, 132, 158],
+		[6, 32, 58, 84, 110, 136, 162],
+		[6, 26, 54, 82, 110, 138, 166],
+		[6, 30, 58, 86, 114, 142, 170],
+	];
+
 	/**
 	 * @var array
 	 */
@@ -138,7 +206,7 @@ class QRCode{
 			$options = new QROptions;
 		}
 
-		if(!in_array($options->errorCorrectLevel, QRConst::RSBLOCK, true)){
+		if(!in_array($options->errorCorrectLevel, self::RSBLOCK, true)){
 			throw new QRCodeException('Invalid error correct level: '.$options->errorCorrectLevel);
 		}
 
@@ -146,22 +214,21 @@ class QRCode{
 
 		switch(true){
 			case Util::isAlphaNum($data):
-				$mode = Util::isNumber($data) ? QRConst::MODE_NUMBER : QRConst::MODE_ALPHANUM;
+				$mode = Util::isNumber($data) ? QRDataInterface::MODE_NUMBER : QRDataInterface::MODE_ALPHANUM;
 				break;
 			case Util::isKanji($data):
-				$mode = QRConst::MODE_KANJI;
+				$mode = QRDataInterface::MODE_KANJI;
 				break;
 			default:
-				$mode = QRConst::MODE_BYTE;
+				$mode = QRDataInterface::MODE_BYTE;
 				break;
 		}
 
-		// see, Scrunitizer, it is concrete! :P
 		$qrDataInterface = [
-			QRConst::MODE_ALPHANUM => AlphaNum::class,
-			QRConst::MODE_BYTE     => Byte::class,
-			QRConst::MODE_KANJI    => Kanji::class,
-			QRConst::MODE_NUMBER   => Number::class,
+			QRDataInterface::MODE_ALPHANUM => AlphaNum::class,
+			QRDataInterface::MODE_BYTE     => Byte::class,
+			QRDataInterface::MODE_KANJI    => Kanji::class,
+			QRDataInterface::MODE_NUMBER   => Number::class,
 		][$mode];
 
 		$this->qrDataInterface = new $qrDataInterface($data);
@@ -183,7 +250,7 @@ class QRCode{
 	protected function getTypeNumber(int $mode):int {
 		$length = $this->qrDataInterface->dataLength;
 
-		if($this->qrDataInterface->mode === QRConst::MODE_KANJI){
+		if($this->qrDataInterface->mode === QRDataInterface::MODE_KANJI){
 			$length = floor($length / 2);
 		}
 
@@ -433,7 +500,7 @@ class QRCode{
 		$this->bitBuffer->clear();
 		$this->bitBuffer->put($this->qrDataInterface->mode, 4);
 		$this->bitBuffer->put(
-			$this->qrDataInterface->mode === QRConst::MODE_KANJI
+			$this->qrDataInterface->mode === QRDataInterface::MODE_KANJI
 				? floor($this->qrDataInterface->dataLength / 2)
 				: $this->qrDataInterface->dataLength,
 			$this->qrDataInterface->getLengthInBits($this->typeNumber)
@@ -441,7 +508,7 @@ class QRCode{
 
 		$this->qrDataInterface->write($this->bitBuffer);
 
-		$MAX_BITS = QRConst::MAX_BITS[$this->typeNumber][$this->errorCorrectLevel];
+		$MAX_BITS = self::MAX_BITS[$this->typeNumber][$this->errorCorrectLevel];
 
 		if($this->bitBuffer->length > $MAX_BITS){
 			throw new QRCodeException('code length overflow. ('.$this->bitBuffer->length.' > '.$MAX_BITS.'bit)');
@@ -458,19 +525,21 @@ class QRCode{
 		}
 
 		// padding
+		$PAD0 = 0xEC;
+		$PAD1 = 0x11;
 		while(true){
 
 			if($this->bitBuffer->length >= $MAX_BITS){
 				break;
 			}
 
-			$this->bitBuffer->put(QRConst::PAD0, 8);
+			$this->bitBuffer->put($PAD0, 8);
 
 			if($this->bitBuffer->length >= $MAX_BITS){
 				break;
 			}
 
-			$this->bitBuffer->put(QRConst::PAD1, 8);
+			$this->bitBuffer->put($PAD1, 8);
 		}
 
 	}
@@ -578,14 +647,14 @@ class QRCode{
 						$a = $row + $_col;
 						$m = $row * $_col;
 						$MASK_PATTERN = [
-							QRConst::MASK_PATTERN000 => $a % 2,
-							QRConst::MASK_PATTERN001 => $row % 2,
-							QRConst::MASK_PATTERN010 => $_col % 3,
-							QRConst::MASK_PATTERN011 => $a % 3,
-							QRConst::MASK_PATTERN100 => (floor($row / 2) + floor($_col / 3)) % 2,
-							QRConst::MASK_PATTERN101 => $m % 2 + $m % 3,
-							QRConst::MASK_PATTERN110 => ($m % 2 + $m % 3) % 2,
-							QRConst::MASK_PATTERN111 => ($m % 3 + $a % 2) % 2,
+							0 => $a % 2,
+							1 => $row % 2,
+							2 => $_col % 3,
+							3 => $a % 3,
+							4 => (floor($row / 2) + floor($_col / 3)) % 2,
+							5 => $m % 2 + $m % 3,
+							6 => ($m % 2 + $m % 3) % 2,
+							7 => ($m % 3 + $a % 2) % 2,
 						][$pattern];
 
 						if($MASK_PATTERN === 0){
@@ -644,7 +713,7 @@ class QRCode{
 	 * @return void
 	 */
 	protected function setupPositionAdjustPattern(){
-		$range = QRConst::PATTERN_POSITION[$this->typeNumber - 1];
+		$range = self::PATTERN_POSITION[$this->typeNumber - 1];
 
 		foreach($range as $i => $posI){
 			foreach($range as $j => $posJ){

+ 0 - 177
src/QRConst.php

@@ -1,177 +0,0 @@
-<?php
-/**
- * Class QRConst
- *
- * @filesource   QRConst.php
- * @created      26.11.2015
- * @package      chillerlan\QRCode
- * @author       Smiley <smiley@chillerlan.net>
- * @copyright    2015 Smiley
- * @license      MIT
- */
-
-namespace chillerlan\QRCode;
-
-/**
- * const ALL THE THINGS! ~John Carmack
- */
-class QRConst{
-
-	const RSBLOCK = [
-		QRCode::ERROR_CORRECT_LEVEL_L => 0,
-		QRCode::ERROR_CORRECT_LEVEL_M => 1,
-		QRCode::ERROR_CORRECT_LEVEL_Q => 2,
-		QRCode::ERROR_CORRECT_LEVEL_H => 3,
-	];
-
-	const MAX_BITS = [
-		QRCode::TYPE_01 => [ 128,  152,   72,  104],
-		QRCode::TYPE_02 => [ 224,  272,  128,  176],
-		QRCode::TYPE_03 => [ 352,  440,  208,  272],
-		QRCode::TYPE_04 => [ 512,  640,  288,  384],
-		QRCode::TYPE_05 => [ 688,  864,  368,  496],
-		QRCode::TYPE_06 => [ 864, 1088,  480,  608],
-		QRCode::TYPE_07 => [ 992, 1248,  528,  704],
-		QRCode::TYPE_08 => [1232, 1552,  688,  880],
-		QRCode::TYPE_09 => [1456, 1856,  800, 1056],
-		QRCode::TYPE_10 => [1728, 2192,  976, 1232],
-	];
-
-	const MODE_NUMBER   = 1 << 0;
-	const MODE_ALPHANUM = 1 << 1;
-	const MODE_BYTE     = 1 << 2;
-	const MODE_KANJI    = 1 << 3;
-
-	const MODE = [
-		self::MODE_NUMBER   => 0,
-		self::MODE_ALPHANUM => 1,
-		self::MODE_BYTE     => 2,
-		self::MODE_KANJI    => 3,
-	];
-
-	const MASK_PATTERN000 = 0;
-	const MASK_PATTERN001 = 1;
-	const MASK_PATTERN010 = 2;
-	const MASK_PATTERN011 = 3;
-	const MASK_PATTERN100 = 4;
-	const MASK_PATTERN101 = 5;
-	const MASK_PATTERN110 = 6;
-	const MASK_PATTERN111 = 7;
-
-	const G15_MASK = (1 << 14)|(1 << 12)|(1 << 10)|(1 << 4)|(1 << 1);
-	const G15 = (1 << 10)|(1 << 8)|(1 << 5)|(1 << 4)|(1 << 2)|(1 << 1)|(1 << 0);
-	const G18 = (1 << 12)|(1 << 11)|(1 << 10)|(1 << 9)|(1 << 8)|(1 << 5)|(1 << 2)|(1 << 0);
-
-	const PAD0 = 0xEC;
-	const PAD1 = 0x11;
-
-	const MAX_LENGTH = [
-		[[ 41,  25,  17,  10], [ 34,  20,  14,   8], [ 27,  16,  11,   7], [ 17,  10,   7,   4]],
-		[[ 77,  47,  32,  20], [ 63,  38,  26,  16], [ 48,  29,  20,  12], [ 34,  20,  14,   8]],
-		[[127,  77,  53,  32], [101,  61,  42,  26], [ 77,  47,  32,  20], [ 58,  35,  24,  15]],
-		[[187, 114,  78,  48], [149,  90,  62,  38], [111,  67,  46,  28], [ 82,  50,  34,  21]],
-		[[255, 154, 106,  65], [202, 122,  84,  52], [144,  87,  60,  37], [106,  64,  44,  27]],
-		[[322, 195, 134,  82], [255, 154, 106,  65], [178, 108,  74,  45], [139,  84,  58,  36]],
-		[[370, 224, 154,  95], [293, 178, 122,  75], [207, 125,  86,  53], [154,  93,  64,  39]],
-		[[461, 279, 192, 118], [365, 221, 152,  93], [259, 157, 108,  66], [202, 122,  84,  52]],
-		[[552, 335, 230, 141], [432, 262, 180, 111], [312, 189, 130,  80], [235, 143,  98,  60]],
-		[[652, 395, 271, 167], [513, 311, 213, 131], [364, 221, 151,  93], [288, 174, 119,  74]],
-	];
-
-	const BLOCK_TABLE = [
-		// 1
-		[1, 26, 19], // L
-		[1, 26, 16], // M
-		[1, 26, 13], // Q
-		[1, 26,  9], // H
-		// 2
-		[1, 44, 34],
-		[1, 44, 28],
-		[1, 44, 22],
-		[1, 44, 16],
-		// 3
-		[1, 70, 55],
-		[1, 70, 44],
-		[2, 35, 17],
-		[2, 35, 13],
-		// 4
-		[1, 100, 80],
-		[2,  50, 32],
-		[2,  50, 24],
-		[4,  25,  9],
-		// 5
-		[1, 134, 108],
-		[2,  67,  43],
-		[2,  33,  15, 2, 34, 16],
-		[2,  33,  11, 2, 34, 12],
-		// 6
-		[2, 86, 68],
-		[4, 43, 27],
-		[4, 43, 19],
-		[4, 43, 15],
-		// 7
-		[2, 98, 78],
-		[4, 49, 31],
-		[2, 32, 14, 4, 33, 15],
-		[4, 39, 13, 1, 40, 14],
-		// 8
-		[2, 121, 97],
-		[2,  60, 38, 2, 61, 39],
-		[4,  40, 18, 2, 41, 19],
-		[4,  40, 14, 2, 41, 15],
-		// 9
-		[2, 146, 116],
-		[3,  58,  36, 2, 59, 37],
-		[4,  36,  16, 4, 37, 17],
-		[4,  36,  12, 4, 37, 13],
-		// 10
-		[2, 86, 68, 2, 87, 69],
-		[4, 69, 43, 1, 70, 44],
-		[6, 43, 19, 2, 44, 20],
-		[6, 43, 15, 2, 44, 16],
-	];
-
-	const PATTERN_POSITION = [
-		[],
-		[6, 18],
-		[6, 22],
-		[6, 26],
-		[6, 30],
-		[6, 34],
-		[6, 22, 38],
-		[6, 24, 42],
-		[6, 26, 46],
-		[6, 28, 50],
-		[6, 30, 54],
-		[6, 32, 58],
-		[6, 34, 62],
-		[6, 26, 46, 66],
-		[6, 26, 48, 70],
-		[6, 26, 50, 74],
-		[6, 30, 54, 78],
-		[6, 30, 56, 82],
-		[6, 30, 58, 86],
-		[6, 34, 62, 90],
-		[6, 28, 50, 72, 94],
-		[6, 26, 50, 74, 98],
-		[6, 30, 54, 78, 102],
-		[6, 28, 54, 80, 106],
-		[6, 32, 58, 84, 110],
-		[6, 30, 58, 86, 114],
-		[6, 34, 62, 90, 118],
-		[6, 26, 50, 74, 98, 122],
-		[6, 30, 54, 78, 102, 126],
-		[6, 26, 52, 78, 104, 130],
-		[6, 30, 56, 82, 108, 134],
-		[6, 34, 60, 86, 112, 138],
-		[6, 30, 58, 86, 114, 142],
-		[6, 34, 62, 90, 118, 146],
-		[6, 30, 54, 78, 102, 126, 150],
-		[6, 24, 50, 76, 102, 128, 154],
-		[6, 28, 54, 80, 106, 132, 158],
-		[6, 32, 58, 84, 110, 136, 162],
-		[6, 26, 54, 82, 110, 138, 166],
-		[6, 30, 58, 86, 114, 142, 170],
-	];
-
-}

+ 80 - 7
src/Util.php

@@ -12,11 +12,79 @@
 
 namespace chillerlan\QRCode;
 
+use chillerlan\QRCode\Data\QRDataInterface;
+
 /**
  *
  */
 class Util{
 
+	const MAX_LENGTH = [
+		[[ 41,  25,  17,  10], [ 34,  20,  14,   8], [ 27,  16,  11,   7], [ 17,  10,   7,   4]],
+		[[ 77,  47,  32,  20], [ 63,  38,  26,  16], [ 48,  29,  20,  12], [ 34,  20,  14,   8]],
+		[[127,  77,  53,  32], [101,  61,  42,  26], [ 77,  47,  32,  20], [ 58,  35,  24,  15]],
+		[[187, 114,  78,  48], [149,  90,  62,  38], [111,  67,  46,  28], [ 82,  50,  34,  21]],
+		[[255, 154, 106,  65], [202, 122,  84,  52], [144,  87,  60,  37], [106,  64,  44,  27]],
+		[[322, 195, 134,  82], [255, 154, 106,  65], [178, 108,  74,  45], [139,  84,  58,  36]],
+		[[370, 224, 154,  95], [293, 178, 122,  75], [207, 125,  86,  53], [154,  93,  64,  39]],
+		[[461, 279, 192, 118], [365, 221, 152,  93], [259, 157, 108,  66], [202, 122,  84,  52]],
+		[[552, 335, 230, 141], [432, 262, 180, 111], [312, 189, 130,  80], [235, 143,  98,  60]],
+		[[652, 395, 271, 167], [513, 311, 213, 131], [364, 221, 151,  93], [288, 174, 119,  74]],
+	];
+
+	const BLOCK_TABLE = [
+		// 1
+		[1, 26, 19], // L
+		[1, 26, 16], // M
+		[1, 26, 13], // Q
+		[1, 26,  9], // H
+		// 2
+		[1, 44, 34],
+		[1, 44, 28],
+		[1, 44, 22],
+		[1, 44, 16],
+		// 3
+		[1, 70, 55],
+		[1, 70, 44],
+		[2, 35, 17],
+		[2, 35, 13],
+		// 4
+		[1, 100, 80],
+		[2,  50, 32],
+		[2,  50, 24],
+		[4,  25,  9],
+		// 5
+		[1, 134, 108],
+		[2,  67,  43],
+		[2,  33,  15, 2, 34, 16],
+		[2,  33,  11, 2, 34, 12],
+		// 6
+		[2, 86, 68],
+		[4, 43, 27],
+		[4, 43, 19],
+		[4, 43, 15],
+		// 7
+		[2, 98, 78],
+		[4, 49, 31],
+		[2, 32, 14, 4, 33, 15],
+		[4, 39, 13, 1, 40, 14],
+		// 8
+		[2, 121, 97],
+		[2,  60, 38, 2, 61, 39],
+		[4,  40, 18, 2, 41, 19],
+		[4,  40, 14, 2, 41, 15],
+		// 9
+		[2, 146, 116],
+		[3,  58,  36, 2, 59, 37],
+		[4,  36,  16, 4, 37, 17],
+		[4,  36,  12, 4, 37, 13],
+		// 10
+		[2, 86, 68, 2, 87, 69],
+		[4, 69, 43, 1, 70, 44],
+		[6, 43, 19, 2, 44, 20],
+		[6, 43, 15, 2, 44, 16],
+	];
+
 	/**
 	 * @param string $string
 	 *
@@ -92,7 +160,10 @@ class Util{
 	 * @return int
 	 */
 	public static function getBCHTypeInfo(int $data):int {
-		return (($data << 10)|self::getBCHT($data, 10, QRConst::G15))^QRConst::G15_MASK;
+		$G15_MASK = (1 << 14)|(1 << 12)|(1 << 10)|(1 << 4)|(1 << 1);
+		$G15      = (1 << 10)|(1 << 8)|(1 << 5)|(1 << 4)|(1 << 2)|(1 << 1)|(1 << 0);
+
+		return (($data << 10)|self::getBCHT($data, 10, $G15))^$G15_MASK;
 	}
 
 	/**
@@ -101,7 +172,9 @@ class Util{
 	 * @return int
 	 */
 	public static function getBCHTypeNumber(int $data):int{
-		return ($data << 12)|self::getBCHT($data, 12, QRConst::G18);
+		$G18 = (1 << 12)|(1 << 11)|(1 << 10)|(1 << 9)|(1 << 8)|(1 << 5)|(1 << 2)|(1 << 0);
+
+		return ($data << 12)|self::getBCHT($data, 12, $G18);
 	}
 
 	/**
@@ -146,11 +219,11 @@ class Util{
 	 */
 	public static function getRSBlocks(int $typeNumber, int $errorCorrectLevel):array {
 
-		if(!array_key_exists($errorCorrectLevel, QRConst::RSBLOCK)){
+		if(!array_key_exists($errorCorrectLevel, QRCode::RSBLOCK)){
 			throw new QRCodeException('$typeNumber: '.$typeNumber.' / $errorCorrectLevel: '.$errorCorrectLevel);
 		}
 
-		$rsBlock = QRConst::BLOCK_TABLE[($typeNumber - 1) * 4 + QRConst::RSBLOCK[$errorCorrectLevel]];
+		$rsBlock = self::BLOCK_TABLE[($typeNumber - 1) * 4 + QRCode::RSBLOCK[$errorCorrectLevel]];
 		$list = [];
 		$length = count($rsBlock) / 3;
 
@@ -173,15 +246,15 @@ class Util{
 	 */
 	public static function getMaxLength(int $typeNumber, int $mode, int $errorCorrectLevel):int {
 
-		if(!array_key_exists($errorCorrectLevel, QRConst::RSBLOCK)){
+		if(!array_key_exists($errorCorrectLevel, QRCode::RSBLOCK)){
 			throw new QRCodeException('Invalid error correct level: '.$errorCorrectLevel);
 		}
 
-		if(!array_key_exists($mode, QRConst::MODE)){
+		if(!array_key_exists($mode, QRDataInterface::MODE)){
 			throw new QRCodeException('Invalid mode: '.$mode);
 		}
 
-		return QRConst::MAX_LENGTH[$typeNumber - 1][QRConst::RSBLOCK[$errorCorrectLevel]][QRConst::MODE[$mode]];
+		return self::MAX_LENGTH[$typeNumber - 1][QRCode::RSBLOCK[$errorCorrectLevel]][QRDataInterface::MODE[$mode]];
 	}
 
 }

+ 5 - 5
tests/BitBufferTest.php

@@ -10,7 +10,7 @@
 namespace chillerlan\QRCodeTest;
 
 use chillerlan\QRCode\BitBuffer;
-use chillerlan\QRCode\QRConst;
+use chillerlan\QRCode\Data\QRDataInterface;
 use PHPUnit\Framework\TestCase;
 
 class BitBufferTest extends TestCase{
@@ -26,10 +26,10 @@ class BitBufferTest extends TestCase{
 
 	public function bitProvider(){
 		return [
-			[QRConst::MODE_NUMBER,    16],
-			[QRConst::MODE_ALPHANUM,  32],
-			[QRConst::MODE_BYTE,      64],
-			[QRConst::MODE_KANJI,    128],
+			[QRDataInterface::MODE_NUMBER,    16],
+			[QRDataInterface::MODE_ALPHANUM,  32],
+			[QRDataInterface::MODE_BYTE,      64],
+			[QRDataInterface::MODE_KANJI,    128],
 		];
 	}
 

+ 7 - 7
tests/Data/DataTest.php

@@ -11,11 +11,11 @@
 namespace chillerlan\QRCodeTest\Data;
 
 use chillerlan\QRCode\BitBuffer;
-use chillerlan\QRCode\QRConst;
 use chillerlan\QRCode\Data\AlphaNum;
 use chillerlan\QRCode\Data\Byte;
 use chillerlan\QRCode\Data\Kanji;
 use chillerlan\QRCode\Data\Number;
+use chillerlan\QRCode\Data\QRDataInterface;
 use PHPUnit\Framework\TestCase;
 
 class DataTest extends TestCase{
@@ -32,12 +32,12 @@ class DataTest extends TestCase{
 
 	public function bitProviderMode(){
 		return [
-			[QRConst::MODE_NUMBER, Number::class, '123456789'],
-			[QRConst::MODE_NUMBER, Number::class, '1234567890'],
-			[QRConst::MODE_NUMBER, Number::class, '12345678901'],
-			[QRConst::MODE_ALPHANUM, AlphaNum::class, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 $%*+-./:'],
-			[QRConst::MODE_BYTE, Byte::class, '#\\'],
-			[QRConst::MODE_KANJI, Kanji::class, '茗荷'],
+			[QRDataInterface::MODE_NUMBER, Number::class, '123456789'],
+			[QRDataInterface::MODE_NUMBER, Number::class, '1234567890'],
+			[QRDataInterface::MODE_NUMBER, Number::class, '12345678901'],
+			[QRDataInterface::MODE_ALPHANUM, AlphaNum::class, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 $%*+-./:'],
+			[QRDataInterface::MODE_BYTE, Byte::class, '#\\'],
+			[QRDataInterface::MODE_KANJI, Kanji::class, '茗荷'],
 		];
 	}
 

+ 3 - 3
tests/QRCodeTest.php

@@ -13,7 +13,6 @@ namespace chillerlan\QRCodeTest;
 
 use chillerlan\QRCode\Output\QRString;
 use chillerlan\QRCode\QRCode;
-use chillerlan\QRCode\QRConst;
 use chillerlan\QRCode\QROptions;
 use ReflectionClass;
 use PHPUnit\Framework\TestCase;
@@ -68,8 +67,9 @@ class QRCodeTest extends TestCase{
 	 * @dataProvider stringDataProvider
 	 */
 	public function testTypeAndErrorcorrectlevelCoverage($data){
-		foreach(QRConst::MAX_BITS as $type => $x){
-			foreach(QRConst::RSBLOCK as $eclevel => $y){
+
+		foreach(range(1, 10) as $type){
+			foreach(range(0, 3) as $eclevel){
 				$this->options->typeNumber = $type;
 				$this->options->errorCorrectLevel = $eclevel;
 				$this->assertInstanceOf(QRCode::class, new QRCode($data, $this->output, $this->options));

+ 2 - 2
tests/UtilTest.php

@@ -10,7 +10,7 @@
 namespace chillerlan\QRCodeTest;
 
 use chillerlan\QRCode\QRCode;
-use chillerlan\QRCode\QRConst;
+use chillerlan\QRCode\Data\QRDataInterface;
 use chillerlan\QRCode\Util;
 use PHPUnit\Framework\TestCase;
 
@@ -52,7 +52,7 @@ class UtilTest extends TestCase{
 	 * @expectedExceptionMessage Invalid error correct level: 42
 	 */
 	public static function testGetMaxLengthECLevelException(){
-		Util::getMaxLength(QRCode::TYPE_01, QRConst::MODE_BYTE, 42);
+		Util::getMaxLength(QRCode::TYPE_01, QRDataInterface::MODE_BYTE, 42);
 	}
 
 	/**