ConLite/conlite/external/bacon/bacon-qr-code/src/Renderer/RendererStyle/EyeFill.php

75 Zeilen
1.7 KiB
PHP

<?php
declare(strict_types = 1);
namespace BaconQrCode\Renderer\RendererStyle;
use BaconQrCode\Exception\RuntimeException;
use BaconQrCode\Renderer\Color\ColorInterface;
final class EyeFill
{
/**
* @var ColorInterface|null
*/
private $externalColor;
/**
* @var ColorInterface|null
*/
private $internalColor;
/**
* @var self|null
*/
private static $inherit;
public function __construct(?ColorInterface $externalColor, ?ColorInterface $internalColor)
{
$this->externalColor = $externalColor;
$this->internalColor = $internalColor;
}
public static function uniform(ColorInterface $color) : self
{
return new self($color, $color);
}
public static function inherit() : self
{
return self::$inherit ?: self::$inherit = new self(null, null);
}
public function inheritsBothColors() : bool
{
return null === $this->externalColor && null === $this->internalColor;
}
public function inheritsExternalColor() : bool
{
return null === $this->externalColor;
}
public function inheritsInternalColor() : bool
{
return null === $this->internalColor;
}
public function getExternalColor() : ColorInterface
{
if (null === $this->externalColor) {
throw new RuntimeException('External eye color inherits foreground color');
}
return $this->externalColor;
}
public function getInternalColor() : ColorInterface
{
if (null === $this->internalColor) {
throw new RuntimeException('Internal eye color inherits foreground color');
}
return $this->internalColor;
}
}