mirror of
https://github.com/chillerlan/php-qrcode.git
synced 2026-08-18 05:30:04 +00:00
:octocat: minor optimizations
This commit is contained in:
@@ -43,10 +43,10 @@ final class BitBuffer{
|
||||
/**
|
||||
* BitBuffer constructor.
|
||||
*
|
||||
* @param int[]|null $bytes
|
||||
* @param int[] $bytes
|
||||
*/
|
||||
public function __construct(array $bytes = null){
|
||||
$this->buffer = ($bytes ?? []);
|
||||
public function __construct(array $bytes = []){
|
||||
$this->buffer = $bytes;
|
||||
$this->length = count($this->buffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -299,7 +299,7 @@ final class MaskPattern{
|
||||
}
|
||||
|
||||
for($y = $from; $y < $to; $y++){
|
||||
if($matrix[$y][$x]){
|
||||
if($matrix[$y][$x] === true){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -317,7 +317,7 @@ final class MaskPattern{
|
||||
|
||||
foreach($matrix as $row){
|
||||
foreach($row as $val){
|
||||
if($val){
|
||||
if($val === true){
|
||||
$darkCells++;
|
||||
}
|
||||
}
|
||||
|
||||
+21
-17
@@ -286,7 +286,14 @@ class QRMatrix{
|
||||
public function set(int $x, int $y, bool $value, int $M_TYPE):self{
|
||||
|
||||
if(isset($this->matrix[$y][$x])){
|
||||
$this->matrix[$y][$x] = (($M_TYPE & ~$this::IS_DARK) | (($value) ? $this::IS_DARK : 0));
|
||||
// we don't know whether the input is dark, so we remove the dark bit
|
||||
$M_TYPE &= ~$this::IS_DARK;
|
||||
|
||||
if($value === true){
|
||||
$M_TYPE |= $this::IS_DARK;
|
||||
}
|
||||
|
||||
$this->matrix[$y][$x] = $M_TYPE;
|
||||
}
|
||||
|
||||
return $this;
|
||||
@@ -322,15 +329,16 @@ class QRMatrix{
|
||||
* Checks whether the module at ($x, $y) is of the given $M_TYPE
|
||||
*
|
||||
* true => $value & $M_TYPE === $M_TYPE
|
||||
*
|
||||
* Also, returns false if the given coordinates are out of range.
|
||||
*/
|
||||
public function checkType(int $x, int $y, int $M_TYPE):bool{
|
||||
$val = $this->get($x, $y);
|
||||
|
||||
if($val === -1){
|
||||
return false;
|
||||
if(isset($this->matrix[$y][$x])){
|
||||
return ($this->matrix[$y][$x] & $M_TYPE) === $M_TYPE;
|
||||
}
|
||||
|
||||
return ($val & $M_TYPE) === $M_TYPE;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -350,14 +358,16 @@ class QRMatrix{
|
||||
|
||||
/**
|
||||
* Checks whether the module at ($x, $y) is true (dark) or false (light)
|
||||
*
|
||||
* Also, returns false if the given coordinates are out of range.
|
||||
*/
|
||||
public function check(int $x, int $y):bool{
|
||||
|
||||
if(!isset($this->matrix[$y][$x])){
|
||||
return false;
|
||||
if(isset($this->matrix[$y][$x])){
|
||||
return $this->isDark($this->matrix[$y][$x]);
|
||||
}
|
||||
|
||||
return $this->isDark($this->matrix[$y][$x]);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -759,14 +769,12 @@ class QRMatrix{
|
||||
continue;
|
||||
}
|
||||
|
||||
$value = 0;
|
||||
$this->matrix[$y][$x] = $this::M_DATA;
|
||||
|
||||
if($iByte < $byteCount && (($data[$iByte] >> $iBit--) & 1) === 1){
|
||||
$value = $this::IS_DARK;
|
||||
$this->matrix[$y][$x] |= $this::IS_DARK;
|
||||
}
|
||||
|
||||
$this->matrix[$y][$x] = ($this::M_DATA | $value);
|
||||
|
||||
if($iBit === -1){
|
||||
$iByte++;
|
||||
$iBit = 7;
|
||||
@@ -792,11 +800,7 @@ class QRMatrix{
|
||||
foreach($this->matrix as $y => $row){
|
||||
foreach($row as $x => $val){
|
||||
// skip non-data modules
|
||||
if(($val & $this::M_DATA) !== $this::M_DATA){
|
||||
continue;
|
||||
}
|
||||
|
||||
if($mask($x, $y)){
|
||||
if(($val & $this::M_DATA) === $this::M_DATA && $mask($x, $y)){
|
||||
$this->flip($x, $y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,12 +48,10 @@ class QRImagick extends QROutputAbstract{
|
||||
*/
|
||||
public function __construct(SettingsContainerInterface $options, QRMatrix $matrix){
|
||||
|
||||
if(!extension_loaded('imagick')){
|
||||
throw new QRCodeOutputException('ext-imagick not loaded'); // @codeCoverageIgnore
|
||||
}
|
||||
|
||||
if(!extension_loaded('fileinfo')){
|
||||
throw new QRCodeOutputException('ext-fileinfo not loaded'); // @codeCoverageIgnore
|
||||
foreach(['fileinfo', 'imagick'] as $ext){
|
||||
if(!extension_loaded($ext)){
|
||||
throw new QRCodeOutputException(sprintf('ext-%s not loaded', $ext)); // @codeCoverageIgnore
|
||||
}
|
||||
}
|
||||
|
||||
parent::__construct($options, $matrix);
|
||||
|
||||
+2
-7
@@ -253,14 +253,9 @@ class QRCode{
|
||||
protected function addMatrixModifications(QRMatrix $matrix):QRMatrix{
|
||||
|
||||
if($this->options->addLogoSpace){
|
||||
$logoSpaceWidth = $this->options->logoSpaceWidth;
|
||||
$logoSpaceHeight = $this->options->logoSpaceHeight;
|
||||
|
||||
// check whether one of the dimensions was omitted
|
||||
if($logoSpaceWidth === null || $logoSpaceHeight === null){
|
||||
$logoSpaceWidth = ($logoSpaceWidth ?? $logoSpaceHeight ?? 0);
|
||||
$logoSpaceHeight = null;
|
||||
}
|
||||
$logoSpaceWidth = ($this->options->logoSpaceWidth ?? $this->options->logoSpaceHeight ?? 0);
|
||||
$logoSpaceHeight = ($this->options->logoSpaceHeight ?? $logoSpaceWidth);
|
||||
|
||||
$matrix->setLogoSpace(
|
||||
$logoSpaceWidth,
|
||||
|
||||
Reference in New Issue
Block a user