mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-15 22:11:36 +01:00
SwissQR: add Sprain\SwissQrBill and dependencies
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Endroid\QrCode\Bacon;
|
||||
|
||||
use BaconQrCode\Common\ErrorCorrectionLevel;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelHigh;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelInterface;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelLow;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelMedium;
|
||||
use Endroid\QrCode\ErrorCorrectionLevel\ErrorCorrectionLevelQuartile;
|
||||
|
||||
final class ErrorCorrectionLevelConverter
|
||||
{
|
||||
public static function convertToBaconErrorCorrectionLevel(ErrorCorrectionLevelInterface $errorCorrectionLevel): ErrorCorrectionLevel
|
||||
{
|
||||
if ($errorCorrectionLevel instanceof ErrorCorrectionLevelLow) {
|
||||
return ErrorCorrectionLevel::valueOf('L');
|
||||
} elseif ($errorCorrectionLevel instanceof ErrorCorrectionLevelMedium) {
|
||||
return ErrorCorrectionLevel::valueOf('M');
|
||||
} elseif ($errorCorrectionLevel instanceof ErrorCorrectionLevelQuartile) {
|
||||
return ErrorCorrectionLevel::valueOf('Q');
|
||||
} elseif ($errorCorrectionLevel instanceof ErrorCorrectionLevelHigh) {
|
||||
return ErrorCorrectionLevel::valueOf('H');
|
||||
}
|
||||
|
||||
throw new \Exception('Error correction level could not be converted');
|
||||
}
|
||||
}
|
||||
32
htdocs/includes/endroid/qr-code/src/Bacon/MatrixFactory.php
Normal file
32
htdocs/includes/endroid/qr-code/src/Bacon/MatrixFactory.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Endroid\QrCode\Bacon;
|
||||
|
||||
use BaconQrCode\Encoder\Encoder;
|
||||
use Endroid\QrCode\Matrix\Matrix;
|
||||
use Endroid\QrCode\Matrix\MatrixFactoryInterface;
|
||||
use Endroid\QrCode\Matrix\MatrixInterface;
|
||||
use Endroid\QrCode\QrCodeInterface;
|
||||
|
||||
final class MatrixFactory implements MatrixFactoryInterface
|
||||
{
|
||||
public function create(QrCodeInterface $qrCode): MatrixInterface
|
||||
{
|
||||
$baconErrorCorrectionLevel = ErrorCorrectionLevelConverter::convertToBaconErrorCorrectionLevel($qrCode->getErrorCorrectionLevel());
|
||||
$baconMatrix = Encoder::encode($qrCode->getData(), $baconErrorCorrectionLevel, strval($qrCode->getEncoding()))->getMatrix();
|
||||
|
||||
$blockValues = [];
|
||||
$columnCount = $baconMatrix->getWidth();
|
||||
$rowCount = $baconMatrix->getHeight();
|
||||
for ($rowIndex = 0; $rowIndex < $rowCount; ++$rowIndex) {
|
||||
$blockValues[$rowIndex] = [];
|
||||
for ($columnIndex = 0; $columnIndex < $columnCount; ++$columnIndex) {
|
||||
$blockValues[$rowIndex][$columnIndex] = $baconMatrix->get($columnIndex, $rowIndex);
|
||||
}
|
||||
}
|
||||
|
||||
return new Matrix($blockValues, $qrCode->getSize(), $qrCode->getMargin(), $qrCode->getRoundBlockSizeMode());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user