| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 
							- <?php
 
- declare(strict_types = 1);
 
- namespace BaconQrCode\Renderer\Module;
 
- use BaconQrCode\Encoder\ByteMatrix;
 
- use BaconQrCode\Exception\InvalidArgumentException;
 
- use BaconQrCode\Renderer\Path\Path;
 
- /**
 
-  * Renders individual modules as dots.
 
-  */
 
- final class DotsModule implements ModuleInterface
 
- {
 
-     public const LARGE = 1;
 
-     public const MEDIUM = .8;
 
-     public const SMALL = .6;
 
-     /**
 
-      * @var float
 
-      */
 
-     private $size;
 
-     public function __construct(float $size)
 
-     {
 
-         if ($size <= 0 || $size > 1) {
 
-             throw new InvalidArgumentException('Size must between 0 (exclusive) and 1 (inclusive)');
 
-         }
 
-         $this->size = $size;
 
-     }
 
-     public function createPath(ByteMatrix $matrix) : Path
 
-     {
 
-         $width = $matrix->getWidth();
 
-         $height = $matrix->getHeight();
 
-         $path = new Path();
 
-         $halfSize = $this->size / 2;
 
-         $margin = (1 - $this->size) / 2;
 
-         for ($y = 0; $y < $height; ++$y) {
 
-             for ($x = 0; $x < $width; ++$x) {
 
-                 if (! $matrix->get($x, $y)) {
 
-                     continue;
 
-                 }
 
-                 $pathX = $x + $margin;
 
-                 $pathY = $y + $margin;
 
-                 $path = $path
 
-                     ->move($pathX + $this->size, $pathY + $halfSize)
 
-                     ->ellipticArc($halfSize, $halfSize, 0, false, true, $pathX + $halfSize, $pathY + $this->size)
 
-                     ->ellipticArc($halfSize, $halfSize, 0, false, true, $pathX, $pathY + $halfSize)
 
-                     ->ellipticArc($halfSize, $halfSize, 0, false, true, $pathX + $halfSize, $pathY)
 
-                     ->ellipticArc($halfSize, $halfSize, 0, false, true, $pathX + $this->size, $pathY + $halfSize)
 
-                     ->close()
 
-                 ;
 
-             }
 
-         }
 
-         return $path;
 
-     }
 
- }
 
 
  |