:octocat: allow coloring the finder pattern dot individually (#52)

This commit is contained in:
codemasher
2020-11-15 15:11:29 +01:00
parent 5408403576
commit 607a13620f
3 changed files with 21 additions and 9 deletions
+6 -3
View File
@@ -17,15 +17,16 @@ require_once __DIR__.'/../vendor/autoload.php';
$data = 'https://www.youtube.com/watch?v=DLzxrzFCyOs&t=43s';
$options = new QROptions([
'version' => 7,
'version' => 10,
'outputType' => QRCode::OUTPUT_IMAGE_PNG,
'eccLevel' => QRCode::ECC_L,
'eccLevel' => QRCode::ECC_H,
'scale' => 5,
'imageBase64' => false,
'moduleValues' => [
// finder
1536 => [0, 63, 255], // dark (true)
6 => [255, 255, 255], // light (false), white is the transparency color and is enabled by default
5632 => [241, 28, 163], // finder dot, dark (true)
// alignment
2560 => [255, 0, 255],
10 => [255, 255, 255],
@@ -33,7 +34,7 @@ $options = new QROptions([
3072 => [255, 0, 0],
12 => [255, 255, 255],
// format
3584 => [67, 191, 84],
3584 => [67, 99, 84],
14 => [255, 255, 255],
// version
4096 => [62, 174, 190],
@@ -47,6 +48,8 @@ $options = new QROptions([
8 => [255, 255, 255],
// quietzone
18 => [255, 255, 255],
// logo
20 => [255, 255, 255],
],
]);
+14 -6
View File
@@ -48,6 +48,8 @@ final class QRMatrix{
/** @var int */
public const M_LOGO = 0x14;
/** @var int */
public const M_FINDER_DOT = 0x16;
/** @var int */
public const M_TEST = 0xff;
/**
@@ -369,12 +371,18 @@ final class QRMatrix{
foreach($pos as $c){
for($y = 0; $y < 7; $y++){
for($x = 0; $x < 7; $x++){
$this->set(
$c[0] + $y,
$c[1] + $x,
!(($x > 0 && $x < 6 && ($y === 1 || $y === 5)) || ($y > 0 && $y < 6 && ($x === 1 || $x === 5))),
$this::M_FINDER
);
// outer (dark) 7*7 square
if($x === 0 || $x === 6 || $y === 0 || $y === 6){
$this->set($c[0] + $y, $c[1] + $x, true, $this::M_FINDER);
}
// inner (light) 5*5 square
elseif($x === 1 || $x === 5 || $y === 1 || $y === 5){
$this->set($c[0] + $y, $c[1] + $x, false, $this::M_FINDER);
}
// 3*3 dot
else{
$this->set($c[0] + $y, $c[1] + $x, true, $this::M_FINDER_DOT);
}
}
}
}
+1
View File
@@ -40,6 +40,7 @@ interface QROutputInterface{
QRMatrix::M_TIMING << 8 => true, // 3072
QRMatrix::M_FORMAT << 8 => true, // 3584
QRMatrix::M_VERSION << 8 => true, // 4096
QRMatrix::M_FINDER_DOT << 8 => true, // 5632
QRMatrix::M_TEST << 8 => true, // 65280
];