:octocat:

This commit is contained in:
smiley
2023-04-08 23:21:31 +02:00
parent fd4d208c05
commit a2da56402b
2 changed files with 16 additions and 18 deletions
+13 -15
View File
@@ -151,18 +151,15 @@ class QRMatrix{
* @return int[][]|bool[][]
*/
public function getMatrix(bool $boolean = null):array{
if(!$boolean){
return $this->matrix;
}
$matrix = [];
foreach($this->matrix as $y => $row){
$matrix[$y] = [];
foreach($row as $x => $val){
$matrix[$y][$x] = ($val & $this::IS_DARK) === $this::IS_DARK;
$matrix[$y][$x] = $boolean === true
? $this->checkType($x, $y, $this::IS_DARK)
: $this->get($x, $y);
}
}
@@ -303,12 +300,13 @@ class QRMatrix{
* true => $value & $M_TYPE === $M_TYPE
*/
public function checkType(int $x, int $y, int $M_TYPE):bool{
$val = $this->get($x, $y);
if(!isset($this->matrix[$y][$x])){
if($val === -1){
return false;
}
return ($this->matrix[$y][$x] & $M_TYPE) === $M_TYPE;
return ($val & $M_TYPE) === $M_TYPE;
}
/**
@@ -343,21 +341,21 @@ class QRMatrix{
* 8 # 4
* 7 6 5
*/
public function checkNeighbours(int $x, int $y, int $M_TYPE_VALUE = null):int{
public function checkNeighbours(int $x, int $y, int $M_TYPE = null):int{
$bits = 0;
foreach($this::neighbours as $bit => $coord){
[$ix, $iy] = $coord;
// check if the field is the same type
if(
$M_TYPE_VALUE !== null
&& ($this->get(($x + $ix), ($y + $iy)) | $this::IS_DARK) !== ($M_TYPE_VALUE | $this::IS_DARK)
){
$ix += $x;
$iy += $y;
// $M_TYPE is given, skip if the field is not the same type
if($M_TYPE !== null && !$this->checkType($ix, $iy, $M_TYPE)){
continue;
}
if($this->checkType(($x + $ix), ($y + $iy), $this::IS_DARK)){
if($this->checkType($ix, $iy, $this::IS_DARK)){
$bits |= $bit;
}
}
+3 -3
View File
@@ -118,7 +118,7 @@ final class QRMatrixTest extends TestCase{
* Tests if size() returns the actual matrix size/count
*/
public function testSize():void{
$this::assertCount($this->matrix->getSize(), $this->matrix->getMatrix());
$this::assertCount($this->matrix->getSize(), $this->matrix->getMatrix(true));
}
/**
@@ -341,8 +341,8 @@ final class QRMatrixTest extends TestCase{
$s = ($size + 2 * $quietZoneSize);
$this::assertCount($s, $matrix->getMatrix());
$this::assertCount($s, $matrix->getMatrix()[($size - 1)]);
$this::assertCount($s, $matrix->getMatrix(true));
$this::assertCount($s, $matrix->getMatrix(true)[($size - 1)]);
$size = $matrix->getSize();