Skip to content

Commit bf0382a

Browse files
committed
🔧 fixes for #45
1 parent 5f6cbb5 commit bf0382a

File tree

5 files changed

+80
-77
lines changed

5 files changed

+80
-77
lines changed

src/Data/MaskPatternTester.php

+49-66
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public function testPattern():int{
5656
$penalty = 0;
5757

5858
for($level = 1; $level <= 4; $level++){
59-
$penalty += call_user_func([$this, 'testLevel'.$level]);
59+
$penalty += call_user_func_array([$this, 'testLevel'.$level], [$this->matrix->matrix(true)]);
6060
}
6161

6262
return (int)$penalty;
@@ -65,12 +65,12 @@ public function testPattern():int{
6565
/**
6666
* Checks for each group of five or more same-colored modules in a row (or column)
6767
*
68-
* @return float
68+
* @return int
6969
*/
70-
protected function testLevel1():float{
70+
protected function testLevel1(array $m):int{
7171
$penalty = 0;
7272

73-
foreach($this->matrix->matrix() as $y => $row){
73+
foreach($m as $y => $row){
7474
foreach($row as $x => $val){
7575
$count = 0;
7676

@@ -82,11 +82,11 @@ protected function testLevel1():float{
8282

8383
for($rx = -1; $rx <= 1; $rx++){
8484

85-
if(($ry === 0 && $rx === 0) || ($x + $rx < 0 || $this->moduleCount <= $x + $rx)){
85+
if(($ry === 0 && $rx === 0) || (($x + $rx) < 0 || $this->moduleCount <= ($x + $rx))){
8686
continue;
8787
}
8888

89-
if($this->matrix->check($x + $rx, $y + $ry) === ($val >> 8 > 0)){
89+
if($m[$y + $ry][$x + $rx] === $val){
9090
$count++;
9191
}
9292

@@ -106,107 +106,90 @@ protected function testLevel1():float{
106106
/**
107107
* Checks for each 2x2 area of same-colored modules in the matrix
108108
*
109-
* @return float
109+
* @return int
110110
*/
111-
protected function testLevel2():float{
111+
protected function testLevel2(array $m):int{
112112
$penalty = 0;
113113

114-
foreach($this->matrix->matrix() as $y => $row){
114+
foreach($m as $y => $row){
115115

116-
if($y > $this->moduleCount - 2){
116+
if($y > ($this->moduleCount - 2)){
117117
break;
118118
}
119119

120120
foreach($row as $x => $val){
121121

122-
if($x > $this->moduleCount - 2){
122+
if($x > ($this->moduleCount - 2)){
123123
break;
124124
}
125125

126-
$count = 0;
127-
128-
if($val >> 8 > 0){
129-
$count++;
130-
}
131-
132-
if($this->matrix->check($y, $x + 1)){
133-
$count++;
134-
}
135-
136-
if($this->matrix->check($y + 1, $x)){
137-
$count++;
138-
}
139-
140-
if($this->matrix->check($y + 1, $x + 1)){
141-
$count++;
126+
if(
127+
$val === $m[$y][$x + 1]
128+
&& $val === $m[$y + 1][$x]
129+
&& $val === $m[$y + 1][$x + 1]
130+
){
131+
$penalty++;
142132
}
143-
144-
if($count === 0 || $count === 4){
145-
$penalty += 3;
146-
}
147-
148133
}
149134
}
150135

151-
return $penalty;
136+
return 3 * $penalty;
152137
}
153138

154139
/**
155-
* Checks if there are patterns that look similar to the finder patterns
140+
* Checks if there are patterns that look similar to the finder patterns (1:1:3:1:1 ratio)
156141
*
157-
* @return float
142+
* @return int
158143
*/
159-
protected function testLevel3():float{
160-
$penalty = 0;
144+
protected function testLevel3(array $m):int{
145+
$penalties = 0;
161146

162-
foreach($this->matrix->matrix() as $y => $row){
147+
foreach($m as $y => $row){
163148
foreach($row as $x => $val){
164149

165-
if($x <= $this->moduleCount - 7){
166-
if(
167-
$this->matrix->check($x , $y)
168-
&& !$this->matrix->check($x + 1, $y)
169-
&& $this->matrix->check($x + 2, $y)
170-
&& $this->matrix->check($x + 3, $y)
171-
&& $this->matrix->check($x + 4, $y)
172-
&& !$this->matrix->check($x + 5, $y)
173-
&& $this->matrix->check($x + 6, $y)
174-
){
175-
$penalty += 40;
176-
}
150+
if(
151+
($x + 6) < $this->moduleCount
152+
&& $val
153+
&& !$m[$y][$x + 1]
154+
&& $m[$y][$x + 2]
155+
&& $m[$y][$x + 3]
156+
&& $m[$y][$x + 4]
157+
&& !$m[$y][$x + 5]
158+
&& $m[$y][$x + 6]
159+
){
160+
$penalties++;
177161
}
178162

179-
if($y <= $this->moduleCount - 7){
180-
if(
181-
$this->matrix->check($x, $y)
182-
&& !$this->matrix->check($x, $y + 1)
183-
&& $this->matrix->check($x, $y + 2)
184-
&& $this->matrix->check($x, $y + 3)
185-
&& $this->matrix->check($x, $y + 4)
186-
&& !$this->matrix->check($x, $y + 5)
187-
&& $this->matrix->check($x, $y + 6)
188-
){
189-
$penalty += 40;
190-
}
163+
if(
164+
($y + 6) < $this->moduleCount
165+
&& $val
166+
&& !$m[$y + 1][$x]
167+
&& $m[$y + 2][$x]
168+
&& $m[$y + 3][$x]
169+
&& $m[$y + 4][$x]
170+
&& !$m[$y + 5][$x]
171+
&& $m[$y + 6][$x]
172+
){
173+
$penalties++;
191174
}
192175

193176
}
194177
}
195178

196-
return $penalty;
179+
return $penalties * 40;
197180
}
198181

199182
/**
200183
* Checks if more than half of the modules are dark or light, with a larger penalty for a larger difference
201184
*
202185
* @return float
203186
*/
204-
protected function testLevel4():float {
187+
protected function testLevel4(array $m):float{
205188
$count = 0;
206189

207-
foreach($this->matrix->matrix() as $y => $row){
190+
foreach($m as $y => $row){
208191
foreach($row as $x => $val){
209-
if($val >> 8 > 0){
192+
if($val){
210193
$count++;
211194
}
212195
}

src/Data/QRMatrix.php

+26-6
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,27 @@ public function __construct(int $version, int $eclevel){
150150
}
151151

152152
/**
153-
* @return array
153+
* Returns the data matrix, returns a pure boolean representation if $boolean is set to true
154+
*
155+
* @return int[][]|bool[][]
154156
*/
155-
public function matrix():array {
156-
return $this->matrix;
157+
public function matrix(bool $boolean = false):array{
158+
159+
if(!$boolean){
160+
return $this->matrix;
161+
}
162+
163+
$matrix = [];
164+
165+
foreach($this->matrix as $y => $row){
166+
$matrix[$y] = [];
167+
168+
foreach($row as $x => $val){
169+
$matrix[$y][$x] = ($val >> 8) > 0;
170+
}
171+
}
172+
173+
return $matrix;
157174
}
158175

159176
/**
@@ -532,6 +549,9 @@ public function mapData(array $data, int $maskPattern):QRMatrix{
532549
/**
533550
* ISO/IEC 18004:2000 Section 8.8.1
534551
*
552+
* Note that some versions of the QR code standard have had errors in the section about mask patterns.
553+
* The information below has been corrected. (https://www.thonky.com/qr-code-tutorial/mask-patterns)
554+
*
535555
* @see \chillerlan\QRCode\QRMatrix::mapData()
536556
*
537557
* @internal
@@ -549,10 +569,10 @@ protected function getMask(int $maskPattern):Closure{
549569

550570
return [
551571
0b000 => function($x, $y):int{ return ($x + $y) % 2; },
552-
0b001 => function($x, $y):int{ return $x % 2; },
553-
0b010 => function($x, $y):int{ return $y % 3; },
572+
0b001 => function($x, $y):int{ return $y % 2; },
573+
0b010 => function($x, $y):int{ return $x % 3; },
554574
0b011 => function($x, $y):int{ return ($x + $y) % 3; },
555-
0b100 => function($x, $y):int{ return ((int)($x / 2) + (int)($y / 3)) % 2; },
575+
0b100 => function($x, $y):int{ return ((int)($y / 2) + (int)($x / 3)) % 2; },
556576
0b101 => function($x, $y):int{ return (($x * $y) % 2) + (($x * $y) % 3); },
557577
0b110 => function($x, $y):int{ return ((($x * $y) % 2) + (($x * $y) % 3)) % 2; },
558578
0b111 => function($x, $y):int{ return ((($x * $y) % 3) + (($x + $y) % 2)) % 2; },

tests/Data/MaskPatternTesterTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ class MaskPatternTesterTest extends QRTestAbstract{
2323

2424
// coverage
2525
public function testMaskpattern(){
26-
$matrix = (new Byte(new QROptions(['version' => 10]), 'test'))->initMatrix(0, true);
26+
$matrix = (new Byte(new QROptions(['version' => 10]), 'test'))->initMatrix(3, true);
2727

28-
$this->assertSame(6178, (new MaskPatternTester($matrix))->testPattern());
28+
$this->assertSame(4243, (new MaskPatternTester($matrix))->testPattern());
2929
}
3030

3131

tests/QRCodeTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public function testCustomOutput(){
116116
'outputInterface' => MyCustomOutput::class,
117117
]);
118118

119-
$expected = '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111110101011110100001011110011111110000000010000010011111001010011111001010000010000000010111010111000001101011000001010111010000000010111010111010110000011010110010111010000000010111010100110101100000110101010111010000000010000010001101011000001101011010000010000000011111110101010101010101010101011111110000000000000000001010011111001010011000000000000000011110010101111010000101111010100111010000000001110001001011110100001011110110010010000000001100010011111001010011111001011110010000000011010000101000001101011000001011001010000000001101011010010110000011010110100000100000000000001001001110101100000110101101011100000000011100010100101011000001101011001100000000000000001000101100101001111100101111101010000000000111011111010111101000010111101100000000000001111000010000101111010000101101001110000000000100011110001111100101001111101000110000000010001001001101100000110101100110100010000000011100111001001101011000001101111011000000000010110101000000011010110000011011101100000000001111011110000110101100000110100001000000000010111100001111110010100111110100110100000000011001011111100001011110100001011010110000000000100101001101000010111101000000100110000000001011011100010100111110010100110011100000000010010101010011010110000011010000010010000000000111011101100000110101100001111110000000000000000000111011000001101011001000110110000000011111110000110000011010110011010111110000000010000010010010011111001010011000111100000000010111010010111010000101111011111101100000000010111010101011110100001011111100010010000000010111010111111001010011111011101010100000000010000010111000001101011000011001101000000000011111110111010110000011010110111100110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
119+
$expected = '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111110111010000101111010000011111110000000010000010111000001101011000001010000010000000010111010101101011000001101011010111010000000010111010110100111110010100111010111010000000010111010000001101011000001101010111010000000010000010100111110010100111110010000010000000011111110101010101010101010101011111110000000000000000010010100111110010100000000000000000011001110000101111010000101111001011110000000000000000111010000101111010000111100010000000001011010100111110010100111110011001010000000010000101111101011000001101011110011110000000000011010100011000001101011000101110100000000011001100001001101011000001101010011010000000010110111110000001101011000001100110100000000010000100100010100111110010100001100100000000011111110111101111010000101111010100110000000011010000111010000101111010000111100100000000010101111111111110010100111110011001000000000010110001110101011000001101011110011010000000001001111100011000001101011000101110010000000011000100110001101011000001101010011100000000001000011001000001101011000001100110000000000011101001011010100111110010100001100000000000010111010001101111010000101111010100110000000011100000001010000101111010000111100000000000000001110110111110010100111110011001000000000000011001011101011000001101011110011100000000011111110101011000001101011001111110110000000000000000110001101011000001101000111100000000011111110001000001101011000011010110000000000010000010101010100111110010101000100100000000010111010111101111010000101111111100110000000010111010011010000101111010001101100010000000010111010000111110010100111100101101100000000010000010101101011000001101001100111100000000011111110101011000001101011000110010110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
120120

121121
$this->assertSame($expected, $this->reflection->newInstanceArgs([$options])->render('test'));
122122
}

tests/Traits/QRAuthenticatorTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ protected function setUp(){}
2323
public function testGetURI(){
2424
$this->authenticatorSecret = 'SECRETTEST234567';
2525

26-
$expected = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAABnRSTlMA/wD/AP83WBt9AAAFgElEQVR4nO3dzU7tOBCF0abV7//K3MkdZeBW5L/vwFpTIAmwZZ1SOeWv7+/vfyDs39sPAP9DRqmTUepklDoZpU5GqZNR6mSUOhmlTkapk1HqZJQ6GaVORqmTUepklDoZpU5GqZNR6v6b+eGvr69VzzH2eOlqfN9Xb2g9LvXqRuP7Hrvy+JvHbv0HX7GOUiej1MkodTJK3VTN9LBwnMTCz/KvKoyZQufVz878rfaN7Wj+B62j1MkodTJKnYxSt7Jmephppey777FSZqb8WtiUmnHrvg/WUepklDoZpU5GqdtYMx2zb1NcZOvaTDmysCi8xTpKnYxSJ6PUySh1H1kzzRRJ46Jh5ptf/ey+l64eX/3EIunBOkqdjFIno9TJKHUba6Z9n9Zn2j8zVdHDuHZZ2KN6VX59xItTr1hHqZNR6mSUOhmlbmXNdGwn20NkYN3Cpzr21Ydb/8Ex6yh1MkqdjFIno9R9RXoJx0ReUYrMGv8I1lHqZJQ6GaVORqnbeD7TvqJh4WMs3Nj2am/evt7YjH2P4XwmfjIZpU5GqZNR6jb2mY4NX9jn2KSGGQuHmr+60fhSC39f6yh1MkqdjFIno9Rdm5t37PiihYO6xxZ2ZY797MI3pR4WFoXWUepklDoZpU5GqTs3N2/fx/PxfR+O3ejY/IiHhbP+bm0RfLCOUiej1MkodTJKXeV8plcfz29t5Nt3o1dnLO1rwu3rb9mbx08mo9TJKHUySt3U+0z7ZkDcOttp4fazY321sVu9Invz+EVklDoZpU5GqVs5A+LYKLzxpRbOvvsB8xSOjcLTZ+L3klHqZJQ6GaVu5d68mTJo30f7VwXHsTrg2Ny8VzdaWI0tZB2lTkapk1HqZJS6jX2mYwPrHo4NXzj21fFDPtzafbevhLKOUiej1MkodTJK3cb3mR4i4+zG9x1fat8euRm3zoUaP8aDvXn8ZDJKnYxSJ6PUbdybN55jPTYzGe/YZrzmGIvxYzTPDh6zjlIno9TJKHUySt21WeP79qq9enFqbGH5daz9c2xf37F6yzpKnYxSJ6PUySh1UzXTsRbOvgbPwnOhFp4pNePYZDwzIOAvGaVORqmTUeqmaqaFvYSF5ciMY2dKzRQcx+qtW4/xYB2lTkapk1HqZJS6jXvzZhoex4bOLZxi/srMRIyxfX/nV8zN4xeRUepklDoZpW7j3rxjU/Vm3Dq19pVIZXNrBIZ1lDoZpU5GqZNR6jaezzR2axfc+FLHhprvG2e3b9jErbaTdZQ6GaVORqmTUepWns90bL/ZsabUrVJm3xtazUkcY9ZR6mSUOhmlTkap23im7bE6YMa+84r2dbCOFSu3Dhp+sI5SJ6PUySh1Mkrdyr15t9w6W3YsUtmMv3lsX4/qFesodTJKnYxSJ6PUbZyb9xFdmYWPMb7Uw8Jtb/v6eZFi1DpKnYxSJ6PUySh1H9lnurVnbN8I8H0vXR0bWz6mz8RPJqPUySh1Mkpd5UzbsXFnZfzNYzMdnfGlbg0kXHg+09i+/taDdZQ6GaVORqmTUepW7s07ViXs6yQdazu9uvI++/44C1lHqZNR6mSUOhmlLvo+0yvjhse4spmZrr2w4Dg21HymGjtWyT1YR6mTUepklDoZpW5jzbRP85WdffXWw75+z8JBeQtZR6mTUepklDoZpe4ja6axhYPyZsqghR2dhYfJ7ntjaV8lZx2lTkapk1HqZJS6jTXTvg/RtzaJPewbTP6qdHtlYTPsWAllHaVORqmTUepklLqVNdOtUmbfJrFjUw+axcpMu8uZtvwiMkqdjFIno9R95PlM/CrWUepklDoZpU5GqZNR6mSUOhmlTkapk1HqZJQ6GaVORqmTUepklDoZpU5GqZNR6mSUOhml7g8cUKnnQ7fywQAAAABJRU5ErkJggg==';
26+
$expected = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAIAAACx0UUtAAAABnRSTlMA/wD/AP83WBt9AAAFh0lEQVR4nO3dy47rNhBF0XSQ///lm0lGGjAg+NC2e61pW5KTe0C4QFXx58+fP39B2N9vfwH4HzJKnYxSJ6PUySh1MkqdjFIno9TJKHUySp2MUiej1MkodTJKnYxSJ6PUySh1MkqdjFL3z8rFPz8/u77H2KPpauW5U7daee64Uexxq6musvG1U3d+619winWUOhmlTkapk1Hqlmqmh43jJKZKmalbrRQrK8/daKpImvrvvfYvOMU6Sp2MUiej1MkodTtrpoeNuzJTD5oqC6YKjnO3Gpu6dqUoXHnuuQGM1lHqZJQ6GaVORqk7WDNds7E6Gd/5YWN1Mr7zQ+R1u2uso9TJKHUySp2MUvcNNdOUc2+ybdxJ2tje9AWso9TJKHUySp2MUnewZrr24/2thp5z8yPOtXOd6986xzpKnYxSJ6PUySh1O2uma2+FrRRJ1/46dq0XakrzvT7rKHUySp2MUiej1P1E9hKmnGv3WdmjGj/orW/1BW/uWUepk1HqZJQ6GaVuqWba+HLatbLg2qC8jTaeRzW+87kxFs5n4pvJKHUySp2MUrezZrp28uxKofPw1vG4Y28Vo9dGDk6xjlIno9TJKHUySt29uXlTP883jnWYuvP4w2PnTrzdOE6iufk3Zh2lTkapk1HqZJS6yqzxlXlu5ybjXXvNb8rGUmblW117NdE6Sp2MUiej1MkodUs108Yf/g9vzb6bcu70pnPj+869P3mOdZQ6GaVORqmTUeqWaqZzo6mvlUHn3pF7fPjcrI0VzY20B+sodTJKnYxSJ6PU7Zw1fm0E+DnX2ozGt3r4xB6slQc9WEepk1HqZJQ6GaXu4Ny8qWsfrk3ze2tAeKRIeuvaKdZR6mSUOhmlTkap2zkDYmUWw+PajZXNW81PK3MCp3xii9IU6yh1MkqdjFIno9TtnAGxUhZc26Pa2Bu08ayjc3O7z9WI1zbwrKPUySh1MkqdjFK3cwbExo2lsY1HPUWcOydp5bkrQy6cz8QvIqPUySh1MkrdvfOZru0znZv2du1Fvre81fs1Zh2lTkapk1HqZJS6e+czXZv2tnHLKtJ0NXXt1F+nvFVCWUepk1HqZJQ6GaXu4AyIh3On+2ystz7x5Kfxc69NE9fPxO8lo9TJKHUySt3Bd/NW6o+VomHjHLmHje/mrbRzTXnr1Cj9TPwiMkqdjFIno9R9//lMY2/N6zu3VzS2sdnL+UzwHxmlTkapk1HqDs4an9oNethYNJzbdjp357Frdc+5ncIp1lHqZJQ6GaVORqk7uM907XDVt1qjVh608Wuc64VaoZ+JX0RGqZNR6mSUup0108O5bphzfUUfMZj8XEU1vnbs3MuW1lHqZJQ6GaVORqm7188U2f/Y+Nxzw7bP9RWNvbVTOGYdpU5GqZNR6mSUuoNz86Z+cV+rqM6Nd3vrhbqNhc659qYV1lHqZJQ6GaVORqlb2md6y7UX6sbXbmznOjdzb+pBU7cas8/ELyKj1MkodTJK3dI+07VJcY8f4M3Z2xu/xtSHx/9zxne+Np9QPxPfTEapk1HqZJS6ne/mvVVDjK3srEQ2lqZcOzbp2qh16yh1MkqdjFIno9RV+pk2VjZThc74w1ObNBtNVVQb+8aarKPUySh1MkqdjFJ3sGa65tpZq5HBgOemp48f9NYUQesodTJKnYxSJ6PUfWTNtPGNsoe3zuFdaUIaf42VD187JWvMOkqdjFIno9TJKHUHa6a3ji9a0RxqvvKq3rkHTf11hXWUOhmlTkapk1HqdtZMb/XKbNzgWfnwNVMbPG/VeRvDYB2lTkapk1HqZJS6jzyfiV/FOkqdjFIno9TJKHUySp2MUiej1MkodTJKnYxSJ6PUySh1MkqdjFIno9TJKHUySp2MUiej1P0LqTXB8AO7a6AAAAAASUVORK5CYII=';
2727

2828
// PHP >= 7.2 produces different PNGs???
2929
if(PHP_MINOR_VERSION >= 2){
30-
$expected = 'data:image/png;base64,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';
30+
$expected = 'data:image/png;base64,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';
3131
}
3232

3333
$this->assertSame($expected, $this->getURIQRCode('testlabel', 'example.com'));

0 commit comments

Comments
 (0)