PluginProbe ʕ •ᴥ•ʔ
WP 2FA – Two-factor authentication for WordPress / 2.9.2
WP 2FA – Two-factor authentication for WordPress v2.9.2
4.0.0 1.7.1 2.0.0 2.0.1 2.1.0 2.2.0 2.2.1 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.8.0 2.9.0 2.9.1 2.9.2 2.9.3 3.0.0 3.0.1 3.1.0 3.1.1 3.1.1.2 trunk 1.2.0 1.3.0 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.6.0 1.6.1 1.6.2 1.7.0
wp-2fa / includes / classes / bacon / bacon-qr-code / src / Renderer / PlainTextRenderer.php
wp-2fa / includes / classes / bacon / bacon-qr-code / src / Renderer Last commit date
Color 11 months ago Eye 11 months ago Image 11 months ago Module 11 months ago Path 11 months ago RendererStyle 11 months ago ImageRenderer.php 11 months ago PlainTextRenderer.php 11 months ago RendererInterface.php 11 months ago
PlainTextRenderer.php
69 lines
1 <?php
2
3 declare (strict_types=1);
4 namespace WP2FA_Vendor\BaconQrCode\Renderer;
5
6 use WP2FA_Vendor\BaconQrCode\Encoder\QrCode;
7 use WP2FA_Vendor\BaconQrCode\Exception\InvalidArgumentException;
8 final class PlainTextRenderer implements RendererInterface
9 {
10 /**
11 * UTF-8 full block (U+2588)
12 */
13 private const FULL_BLOCK = "";
14 /**
15 * UTF-8 upper half block (U+2580)
16 */
17 private const UPPER_HALF_BLOCK = "";
18 /**
19 * UTF-8 lower half block (U+2584)
20 */
21 private const LOWER_HALF_BLOCK = "";
22 /**
23 * UTF-8 no-break space (U+00A0)
24 */
25 private const EMPTY_BLOCK = " ";
26 /**
27 * @var int
28 */
29 private $margin;
30 public function __construct(int $margin = 2)
31 {
32 $this->margin = $margin;
33 }
34 /**
35 * @throws InvalidArgumentException if matrix width doesn't match height
36 */
37 public function render(QrCode $qrCode) : string
38 {
39 $matrix = $qrCode->getMatrix();
40 $matrixSize = $matrix->getWidth();
41 if ($matrixSize !== $matrix->getHeight()) {
42 throw new InvalidArgumentException('Matrix must have the same width and height');
43 }
44 $rows = $matrix->getArray()->toArray();
45 if (0 !== $matrixSize % 2) {
46 $rows[] = \array_fill(0, $matrixSize, 0);
47 }
48 $horizontalMargin = \str_repeat(self::EMPTY_BLOCK, $this->margin);
49 $result = \str_repeat("\n", (int) \ceil($this->margin / 2));
50 for ($i = 0; $i < $matrixSize; $i += 2) {
51 $result .= $horizontalMargin;
52 $upperRow = $rows[$i];
53 $lowerRow = $rows[$i + 1];
54 for ($j = 0; $j < $matrixSize; ++$j) {
55 $upperBit = $upperRow[$j];
56 $lowerBit = $lowerRow[$j];
57 if ($upperBit) {
58 $result .= $lowerBit ? self::FULL_BLOCK : self::UPPER_HALF_BLOCK;
59 } else {
60 $result .= $lowerBit ? self::LOWER_HALF_BLOCK : self::EMPTY_BLOCK;
61 }
62 }
63 $result .= $horizontalMargin . "\n";
64 }
65 $result .= \str_repeat("\n", (int) \ceil($this->margin / 2));
66 return $result;
67 }
68 }
69