55 Zeilen
1.2 KiB
PHP
55 Zeilen
1.2 KiB
PHP
|
<?php
|
||
|
declare(strict_types = 1);
|
||
|
|
||
|
namespace BaconQrCode\Renderer\Eye;
|
||
|
|
||
|
use BaconQrCode\Renderer\Path\Path;
|
||
|
|
||
|
/**
|
||
|
* Renders the inner eye as a circle.
|
||
|
*/
|
||
|
final class SimpleCircleEye implements EyeInterface
|
||
|
{
|
||
|
/**
|
||
|
* @var self|null
|
||
|
*/
|
||
|
private static $instance;
|
||
|
|
||
|
private function __construct()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public static function instance() : self
|
||
|
{
|
||
|
return self::$instance ?: self::$instance = new self();
|
||
|
}
|
||
|
|
||
|
public function getExternalPath() : Path
|
||
|
{
|
||
|
return (new Path())
|
||
|
->move(-3.5, -3.5)
|
||
|
->line(3.5, -3.5)
|
||
|
->line(3.5, 3.5)
|
||
|
->line(-3.5, 3.5)
|
||
|
->close()
|
||
|
->move(-2.5, -2.5)
|
||
|
->line(-2.5, 2.5)
|
||
|
->line(2.5, 2.5)
|
||
|
->line(2.5, -2.5)
|
||
|
->close()
|
||
|
;
|
||
|
}
|
||
|
|
||
|
public function getInternalPath() : Path
|
||
|
{
|
||
|
return (new Path())
|
||
|
->move(1.5, 0)
|
||
|
->ellipticArc(1.5, 1.5, 0., false, true, 0., 1.5)
|
||
|
->ellipticArc(1.5, 1.5, 0., false, true, -1.5, 0.)
|
||
|
->ellipticArc(1.5, 1.5, 0., false, true, 0., -1.5)
|
||
|
->ellipticArc(1.5, 1.5, 0., false, true, 1.5, 0.)
|
||
|
->close()
|
||
|
;
|
||
|
}
|
||
|
}
|