🚿 extract version and mask pattern constants from QRCode to their respective classes and mark QRCode::VERSION_AUTO and QRCode::MASK_PATTERN_AUTO as deprecated

This commit is contained in:
smiley
2022-07-14 19:22:37 +02:00
parent 3cd977b2b2
commit b48a58462c
7 changed files with 33 additions and 22 deletions
+2
View File
@@ -25,6 +25,8 @@ use function abs, array_search, count, min;
*/
final class MaskPattern{
public const AUTO = -1;
public const PATTERN_000 = 0b000;
public const PATTERN_001 = 0b001;
public const PATTERN_010 = 0b010;
+2
View File
@@ -17,6 +17,8 @@ use chillerlan\QRCode\QRCodeException;
*/
final class Version{
public const AUTO = -1;
/**
* ISO/IEC 18004:2000 Annex E, Table E.1 - Row/column coordinates of center module of Alignment Patterns
*
+1 -2
View File
@@ -11,7 +11,6 @@
namespace chillerlan\QRCode\Data;
use chillerlan\QRCode\Common\{BitBuffer, EccLevel, MaskPattern, Mode, Version};
use chillerlan\QRCode\QRCode;
use chillerlan\Settings\SettingsContainerInterface;
use function sprintf;
@@ -79,7 +78,7 @@ final class QRData{
public function setData(array $dataSegments):self{
$this->dataSegments = $dataSegments;
$version = $this->options->version === QRCode::VERSION_AUTO
$version = $this->options->version === Version::AUTO
? $this->getMinimumVersion()
: $this->options->version;
+15 -6
View File
@@ -10,7 +10,7 @@
namespace chillerlan\QRCode;
use chillerlan\QRCode\Common\{EccLevel, ECICharset, MaskPattern, Mode};
use chillerlan\QRCode\Common\{EccLevel, ECICharset, MaskPattern, Mode, Version};
use chillerlan\QRCode\Data\{AlphaNum, Byte, ECI, Kanji, Number, QRCodeDataException, QRData, QRDataModeInterface, QRMatrix};
use chillerlan\QRCode\Decoder\{Decoder, DecoderResult, LuminanceSourceInterface};
use chillerlan\QRCode\Output\{
@@ -30,10 +30,19 @@ use function class_exists, class_implements, in_array, mb_convert_encoding, mb_d
*/
class QRCode{
/** @var int */
public const VERSION_AUTO = -1;
/** @var int */
public const MASK_PATTERN_AUTO = -1;
/**
* @deprecated 5.0.0 use Version::AUTO instead
* @see \chillerlan\QRCode\Common\Version::AUTO
* @var int
*/
public const VERSION_AUTO = Version::AUTO;
/**
* @deprecated 5.0.0 use MaskPattern::AUTO instead
* @see \chillerlan\QRCode\Common\MaskPattern::AUTO
* @var int
*/
public const MASK_PATTERN_AUTO = MaskPattern::AUTO;
/**
* @deprecated 5.0.0 use EccLevel::L instead
@@ -163,7 +172,7 @@ class QRCode{
}
$dataInterface = new QRData($this->options, $this->dataSegments);
$maskPattern = $this->options->maskPattern === $this::MASK_PATTERN_AUTO
$maskPattern = $this->options->maskPattern === MaskPattern::AUTO
? MaskPattern::getBestPattern($dataInterface)
: new MaskPattern($this->options->maskPattern);
+7 -8
View File
@@ -12,8 +12,7 @@
namespace chillerlan\QRCode;
use chillerlan\QRCode\Common\EccLevel;
use chillerlan\QRCode\Common\{EccLevel, MaskPattern, Version};
use chillerlan\QRCode\Decoder\{GDLuminanceSource, IMagickLuminanceSource};
use function array_values, count, extension_loaded, in_array, is_numeric, max, min, sprintf, strtolower;
@@ -25,9 +24,9 @@ trait QROptionsTrait{
/**
* QR Code version number
*
* [1 ... 40] or QRCode::VERSION_AUTO
* [1 ... 40] or Version::AUTO
*/
protected int $version = QRCode::VERSION_AUTO;
protected int $version = Version::AUTO;
/**
* Minimum QR version
@@ -56,9 +55,9 @@ trait QROptionsTrait{
/**
* Mask Pattern to use (no value in using, mostly for unit testing purposes)
*
* [0...7] or QRCode::MASK_PATTERN_AUTO
* [0...7] or MaskPattern::PATTERN_AUTO
*/
protected int $maskPattern = QRCode::MASK_PATTERN_AUTO;
protected int $maskPattern = MaskPattern::AUTO;
/**
* Add a "quiet zone" (margin) according to the QR code spec
@@ -368,7 +367,7 @@ trait QROptionsTrait{
*/
protected function set_version(int $version):void{
if($version !== QRCode::VERSION_AUTO){
if($version !== Version::AUTO){
$this->version = max(1, min(40, $version));
}
@@ -393,7 +392,7 @@ trait QROptionsTrait{
*/
protected function set_maskPattern(int $maskPattern):void{
if($maskPattern !== QRCode::MASK_PATTERN_AUTO){
if($maskPattern !== MaskPattern::AUTO){
$this->maskPattern = max(0, min(7, $maskPattern));
}
+2 -3
View File
@@ -10,8 +10,7 @@
namespace chillerlan\QRCodeTest\Data;
use chillerlan\QRCode\Common\MaskPattern;
use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\Common\{MaskPattern, Version};
use chillerlan\QRCode\QROptions;
use PHPUnit\Framework\TestCase;
use chillerlan\QRCode\Data\{QRCodeDataException, QRData, QRMatrix};
@@ -93,7 +92,7 @@ abstract class DatainterfaceTestAbstract extends TestCase{
$this->expectExceptionMessage('data exceeds');
$this->QRData = new QRData(
new QROptions(['version' => QRCode::VERSION_AUTO]),
new QROptions(['version' => Version::AUTO]),
[new $this->FQN(str_repeat($this->testdata, 1337))]
);
}
+4 -3
View File
@@ -12,7 +12,8 @@
namespace chillerlan\QRCodeTest;
use chillerlan\QRCode\{QRCode, QRCodeException, QROptions};
use chillerlan\QRCode\{QRCodeException, QROptions};
use chillerlan\QRCode\Common\{MaskPattern, Version};
use PHPUnit\Framework\TestCase;
/**
@@ -28,7 +29,7 @@ final class QROptionsTest extends TestCase{
'values > 40 should be clamped to 40' => [42, 40],
'values < 1 should be clamped to 1' => [-42, 1],
'values in between shold not be touched' => [21, 21],
'value -1 should be treated as is (default)' => [QRCode::VERSION_AUTO, -1],
'value -1 should be treated as is (default)' => [Version::AUTO, -1],
];
}
@@ -74,7 +75,7 @@ final class QROptionsTest extends TestCase{
return [
'exceed max' => [42, 7,],
'exceed min' => [-42, 0],
'default (-1)' => [QRCode::MASK_PATTERN_AUTO, -1],
'default (-1)' => [MaskPattern::AUTO, -1],
];
}