mirror of
https://github.com/chillerlan/php-qrcode.git
synced 2026-08-31 04:28:03 +00:00
💄
This commit is contained in:
+26
-28
@@ -109,7 +109,7 @@ class QRMatrix{
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected $maskPattern = -1;
|
||||
protected $maskPattern = QRCode::MASK_PATTERN_AUTO;
|
||||
|
||||
/**
|
||||
* @var int
|
||||
@@ -293,12 +293,10 @@ class QRMatrix{
|
||||
[7, $this->moduleCount - 8],
|
||||
];
|
||||
|
||||
$t = $this::M_SEPARATOR;
|
||||
|
||||
for($c = 0; $c < 3; $c++){
|
||||
for($i = 0; $i < 8; $i++){
|
||||
$this->set($h[$c][0] , $h[$c][1] + $i, false, $t);
|
||||
$this->set($v[$c][0] - $i, $v[$c][1] , false, $t);
|
||||
$this->set($h[$c][0] , $h[$c][1] + $i, false, $this::M_SEPARATOR);
|
||||
$this->set($v[$c][0] - $i, $v[$c][1] , false, $this::M_SEPARATOR);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,10 +349,9 @@ class QRMatrix{
|
||||
}
|
||||
|
||||
$v = $i % 2 === 0;
|
||||
$t = $this::M_TIMING;
|
||||
|
||||
$this->set($i, 6, $v, $t); // h
|
||||
$this->set(6, $i, $v, $t); // v
|
||||
$this->set($i, 6, $v, $this::M_TIMING); // h
|
||||
$this->set(6, $i, $v, $this::M_TIMING); // v
|
||||
}
|
||||
|
||||
return $this;
|
||||
@@ -368,8 +365,7 @@ class QRMatrix{
|
||||
* @return \chillerlan\QRCode\Data\QRMatrix
|
||||
*/
|
||||
public function setVersionNumber(bool $test = null):QRMatrix{
|
||||
$test = $test !== null ? $test : false;
|
||||
|
||||
$test = $test ?? false;
|
||||
$bits = $this::versionPattern[$this->version] ?? false;
|
||||
|
||||
if($bits !== false){
|
||||
@@ -378,10 +374,9 @@ class QRMatrix{
|
||||
$a = (int)floor($i / 3);
|
||||
$b = $i % 3 + $this->moduleCount - 8 - 3;
|
||||
$v = !$test && (($bits >> $i) & 1) === 1;
|
||||
$t = $this::M_VERSION;
|
||||
|
||||
$this->set($b, $a, $v, $t); // ne
|
||||
$this->set($a, $b, $v, $t); // sw
|
||||
$this->set($b, $a, $v, $this::M_VERSION); // ne
|
||||
$this->set($a, $b, $v, $this::M_VERSION); // sw
|
||||
}
|
||||
|
||||
}
|
||||
@@ -398,7 +393,7 @@ class QRMatrix{
|
||||
* @return \chillerlan\QRCode\Data\QRMatrix
|
||||
*/
|
||||
public function setFormatInfo(int $maskPattern, bool $test = null):QRMatrix{
|
||||
$test = $test !== null ? $test : false;
|
||||
$test = $test ?? false;
|
||||
$bits = $this::formatPattern[QRCode::ECC_MODES[$this->eclevel]][$maskPattern] ?? 0;
|
||||
$t = $this::M_FORMAT;
|
||||
|
||||
@@ -438,6 +433,7 @@ class QRMatrix{
|
||||
* @param int|null $size
|
||||
*
|
||||
* @return \chillerlan\QRCode\Data\QRMatrix
|
||||
* @throws \chillerlan\QRCode\Data\QRCodeDataException
|
||||
*/
|
||||
public function setQuietZone(int $size = null):QRMatrix{
|
||||
|
||||
@@ -478,8 +474,8 @@ class QRMatrix{
|
||||
*/
|
||||
public function mapData(array $data, int $maskPattern):QRMatrix{
|
||||
$this->maskPattern = $maskPattern;
|
||||
$byteCount = count($data);
|
||||
$size = $this->moduleCount - 1;
|
||||
$byteCount = count($data);
|
||||
$size = $this->moduleCount - 1;
|
||||
|
||||
for($i = $size, $y = $size, $inc = -1, $byteIndex = 0, $bitIndex = 7; $i > 0; $i -= 2){
|
||||
|
||||
@@ -531,7 +527,6 @@ class QRMatrix{
|
||||
/**
|
||||
* @see \chillerlan\QRCode\QRMatrix::mapData()
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @internal
|
||||
*
|
||||
* @param int $x
|
||||
@@ -539,24 +534,27 @@ class QRMatrix{
|
||||
* @param int $maskPattern
|
||||
*
|
||||
* @return int
|
||||
* @throws \chillerlan\QRCode\Data\QRCodeDataException
|
||||
*/
|
||||
protected function getMask(int $x, int $y, int $maskPattern):int {
|
||||
$a = $y + $x;
|
||||
$m = $y * $x;
|
||||
|
||||
// i hate it so much
|
||||
switch($maskPattern){
|
||||
case 0: return $a % 2;
|
||||
case 1: return $y % 2;
|
||||
case 2: return $x % 3;
|
||||
case 3: return $a % 3;
|
||||
case 4: return (floor($y / 2) + floor($x / 3)) % 2;
|
||||
case 5: return $m % 2 + $m % 3;
|
||||
case 6: return ($m % 2 + $m % 3) % 2;
|
||||
case 7: return ($m % 3 + $a % 2) % 2;
|
||||
if($maskPattern >= 0 && $maskPattern < 8){
|
||||
// this is literally the same as the stupid switch...
|
||||
return [
|
||||
$a % 2,
|
||||
$y % 2,
|
||||
$x % 3,
|
||||
$a % 3,
|
||||
(floor($y / 2) + floor($x / 3)) % 2,
|
||||
$m % 2 + $m % 3,
|
||||
($m % 2 + $m % 3) % 2,
|
||||
($m % 3 + $a % 2) % 2
|
||||
][$maskPattern];
|
||||
}
|
||||
|
||||
throw new QRCodeDataException('invalid mask pattern');
|
||||
throw new QRCodeDataException('invalid mask pattern'); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user