diff --git a/src/Common/MaskPattern.php b/src/Common/MaskPattern.php index 23e569562..dea00543d 100644 --- a/src/Common/MaskPattern.php +++ b/src/Common/MaskPattern.php @@ -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; diff --git a/src/Common/Version.php b/src/Common/Version.php index 10d72758c..58f2d3dcc 100644 --- a/src/Common/Version.php +++ b/src/Common/Version.php @@ -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 * diff --git a/src/Data/QRData.php b/src/Data/QRData.php index 594dffb86..d389cf06f 100644 --- a/src/Data/QRData.php +++ b/src/Data/QRData.php @@ -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; diff --git a/src/QRCode.php b/src/QRCode.php index 5ac86eaeb..fa0b5d318 100755 --- a/src/QRCode.php +++ b/src/QRCode.php @@ -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); diff --git a/src/QROptionsTrait.php b/src/QROptionsTrait.php index e78e4756a..f92b64908 100644 --- a/src/QROptionsTrait.php +++ b/src/QROptionsTrait.php @@ -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)); } diff --git a/tests/Data/DatainterfaceTestAbstract.php b/tests/Data/DatainterfaceTestAbstract.php index 184849ce1..70db90f29 100644 --- a/tests/Data/DatainterfaceTestAbstract.php +++ b/tests/Data/DatainterfaceTestAbstract.php @@ -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))] ); } diff --git a/tests/QROptionsTest.php b/tests/QROptionsTest.php index 446809da3..add8403a1 100644 --- a/tests/QROptionsTest.php +++ b/tests/QROptionsTest.php @@ -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], ]; }