| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | 
							- <?php
 
- declare(strict_types = 1);
 
- namespace BaconQrCode\Renderer\RendererStyle;
 
- use BaconQrCode\Exception\RuntimeException;
 
- use BaconQrCode\Renderer\Color\ColorInterface;
 
- use BaconQrCode\Renderer\Color\Gray;
 
- final class Fill
 
- {
 
-     /**
 
-      * @var ColorInterface
 
-      */
 
-     private $backgroundColor;
 
-     /**
 
-      * @var ColorInterface|null
 
-      */
 
-     private $foregroundColor;
 
-     /**
 
-      * @var Gradient|null
 
-      */
 
-     private $foregroundGradient;
 
-     /**
 
-      * @var EyeFill
 
-      */
 
-     private $topLeftEyeFill;
 
-     /**
 
-      * @var EyeFill
 
-      */
 
-     private $topRightEyeFill;
 
-     /**
 
-      * @var EyeFill
 
-      */
 
-     private $bottomLeftEyeFill;
 
-     /**
 
-      * @var self|null
 
-      */
 
-     private static $default;
 
-     private function __construct(
 
-         ColorInterface $backgroundColor,
 
-         ?ColorInterface $foregroundColor,
 
-         ?Gradient $foregroundGradient,
 
-         EyeFill $topLeftEyeFill,
 
-         EyeFill $topRightEyeFill,
 
-         EyeFill $bottomLeftEyeFill
 
-     ) {
 
-         $this->backgroundColor = $backgroundColor;
 
-         $this->foregroundColor = $foregroundColor;
 
-         $this->foregroundGradient = $foregroundGradient;
 
-         $this->topLeftEyeFill = $topLeftEyeFill;
 
-         $this->topRightEyeFill = $topRightEyeFill;
 
-         $this->bottomLeftEyeFill = $bottomLeftEyeFill;
 
-     }
 
-     public static function default() : self
 
-     {
 
-         return self::$default ?: self::$default = self::uniformColor(new Gray(100), new Gray(0));
 
-     }
 
-     public static function withForegroundColor(
 
-         ColorInterface $backgroundColor,
 
-         ColorInterface $foregroundColor,
 
-         EyeFill $topLeftEyeFill,
 
-         EyeFill $topRightEyeFill,
 
-         EyeFill $bottomLeftEyeFill
 
-     ) : self {
 
-         return new self(
 
-             $backgroundColor,
 
-             $foregroundColor,
 
-             null,
 
-             $topLeftEyeFill,
 
-             $topRightEyeFill,
 
-             $bottomLeftEyeFill
 
-         );
 
-     }
 
-     public static function withForegroundGradient(
 
-         ColorInterface $backgroundColor,
 
-         Gradient $foregroundGradient,
 
-         EyeFill $topLeftEyeFill,
 
-         EyeFill $topRightEyeFill,
 
-         EyeFill $bottomLeftEyeFill
 
-     ) : self {
 
-         return new self(
 
-             $backgroundColor,
 
-             null,
 
-             $foregroundGradient,
 
-             $topLeftEyeFill,
 
-             $topRightEyeFill,
 
-             $bottomLeftEyeFill
 
-         );
 
-     }
 
-     public static function uniformColor(ColorInterface $backgroundColor, ColorInterface $foregroundColor) : self
 
-     {
 
-         return new self(
 
-             $backgroundColor,
 
-             $foregroundColor,
 
-             null,
 
-             EyeFill::inherit(),
 
-             EyeFill::inherit(),
 
-             EyeFill::inherit()
 
-         );
 
-     }
 
-     public static function uniformGradient(ColorInterface $backgroundColor, Gradient $foregroundGradient) : self
 
-     {
 
-         return new self(
 
-             $backgroundColor,
 
-             null,
 
-             $foregroundGradient,
 
-             EyeFill::inherit(),
 
-             EyeFill::inherit(),
 
-             EyeFill::inherit()
 
-         );
 
-     }
 
-     public function hasGradientFill() : bool
 
-     {
 
-         return null !== $this->foregroundGradient;
 
-     }
 
-     public function getBackgroundColor() : ColorInterface
 
-     {
 
-         return $this->backgroundColor;
 
-     }
 
-     public function getForegroundColor() : ColorInterface
 
-     {
 
-         if (null === $this->foregroundColor) {
 
-             throw new RuntimeException('Fill uses a gradient, thus no foreground color is available');
 
-         }
 
-         return $this->foregroundColor;
 
-     }
 
-     public function getForegroundGradient() : Gradient
 
-     {
 
-         if (null === $this->foregroundGradient) {
 
-             throw new RuntimeException('Fill uses a single color, thus no foreground gradient is available');
 
-         }
 
-         return $this->foregroundGradient;
 
-     }
 
-     public function getTopLeftEyeFill() : EyeFill
 
-     {
 
-         return $this->topLeftEyeFill;
 
-     }
 
-     public function getTopRightEyeFill() : EyeFill
 
-     {
 
-         return $this->topRightEyeFill;
 
-     }
 
-     public function getBottomLeftEyeFill() : EyeFill
 
-     {
 
-         return $this->bottomLeftEyeFill;
 
-     }
 
- }
 
 
  |