PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.4
Booking for Appointments and Events Calendar – Amelia v2.4.4
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / bacon / bacon-qr-code / src / Renderer / Module / SquareModule.php
ameliabooking / vendor / bacon / bacon-qr-code / src / Renderer / Module Last commit date
EdgeIterator 8 months ago DotsModule.php 8 months ago ModuleInterface.php 8 months ago RoundnessModule.php 8 months ago SquareModule.php 8 months ago
SquareModule.php
48 lines
1 <?php
2 declare(strict_types = 1);
3
4 namespace BaconQrCode\Renderer\Module;
5
6 use BaconQrCode\Encoder\ByteMatrix;
7 use BaconQrCode\Renderer\Module\EdgeIterator\EdgeIterator;
8 use BaconQrCode\Renderer\Path\Path;
9
10 /**
11 * Groups modules together to a single path.
12 */
13 final class SquareModule implements ModuleInterface
14 {
15 /**
16 * @var self|null
17 */
18 private static $instance;
19
20 private function __construct()
21 {
22 }
23
24 public static function instance() : self
25 {
26 return self::$instance ?: self::$instance = new self();
27 }
28
29 public function createPath(ByteMatrix $matrix) : Path
30 {
31 $path = new Path();
32
33 foreach (new EdgeIterator($matrix) as $edge) {
34 $points = $edge->getSimplifiedPoints();
35 $length = count($points);
36 $path = $path->move($points[0][0], $points[0][1]);
37
38 for ($i = 1; $i < $length; ++$i) {
39 $path = $path->line($points[$i][0], $points[$i][1]);
40 }
41
42 $path = $path->close();
43 }
44
45 return $path;
46 }
47 }
48