mirror of
https://github.com/chillerlan/php-qrcode.git
synced 2026-08-25 02:17:55 +00:00
🚿 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:
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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))]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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],
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user