|
23 | 23 | use BaconQrCode\Writer; |
24 | 24 | use InvalidArgumentException; |
25 | 25 | use BaconQrCode\Renderer\Color\Gray; |
| 26 | +use BaconQrCode\Renderer\Image\EpsImageBackEnd; |
| 27 | +use BaconQrCode\Renderer\Image\ImageBackEndInterface; |
| 28 | +use BaconQrCode\Renderer\Image\ImagickImageBackEnd; |
26 | 29 | use BaconQrCode\Renderer\RendererStyle\EyeFill; |
27 | 30 | use BaconQrCode\Renderer\RendererStyle\Gradient; |
28 | 31 | use BaconQrCode\Renderer\RendererStyle\GradientType; |
29 | 32 |
|
30 | 33 | class Generator |
31 | 34 | { |
| 35 | + protected $format = 'svg'; |
| 36 | + |
32 | 37 | protected $pixels = 100; |
33 | 38 |
|
34 | 39 | protected $margin = 0; |
@@ -65,9 +70,15 @@ public function size(int $pixels): self |
65 | 70 | return $this; |
66 | 71 | } |
67 | 72 |
|
68 | | - public function format(): self |
| 73 | + public function format(string $format): self |
69 | 74 | { |
70 | | - //png, eps, svg, jpg |
| 75 | + if (! in_array($format, ['svg', 'eps', 'png'])) { |
| 76 | + throw new InvalidArgumentException("\$format must be svg, eps, or png. {$format} is not a valid."); |
| 77 | + } |
| 78 | + |
| 79 | + $this->format = $format; |
| 80 | + |
| 81 | + return $this; |
71 | 82 | } |
72 | 83 |
|
73 | 84 | public function color(int $red, int $green, int $blue, ?int $alpha = null): self |
@@ -161,12 +172,25 @@ protected function getRenderer(): ImageRenderer |
161 | 172 | { |
162 | 173 | $renderer = new ImageRenderer( |
163 | 174 | new RendererStyle($this->pixels, $this->margin, $this->getModule(), $this->getEye(), $this->getFill()), |
164 | | - new SvgImageBackEnd |
| 175 | + $this->getFormatter() |
165 | 176 | ); |
166 | 177 |
|
167 | 178 | return $renderer; |
168 | 179 | } |
169 | 180 |
|
| 181 | + protected function getFormatter(): ImageBackEndInterface |
| 182 | + { |
| 183 | + if ($this->format === 'png') { |
| 184 | + return new ImagickImageBackEnd('png'); |
| 185 | + } |
| 186 | + |
| 187 | + if ($this->format === 'eps') { |
| 188 | + return new EpsImageBackEnd; |
| 189 | + } |
| 190 | + |
| 191 | + return new SvgImageBackEnd; |
| 192 | + } |
| 193 | + |
170 | 194 | protected function getModule(): ModuleInterface |
171 | 195 | { |
172 | 196 | if ($this->style === 'dot') { |
|
0 commit comments