Skip to content

Commit 4c7f1e5

Browse files
author
Corey McCormick
committed
Add formatters
1 parent a61c6b6 commit 4c7f1e5

1 file changed

Lines changed: 27 additions & 3 deletions

File tree

src/SimpleSoftwareIO/QrCode/Generator.php

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,17 @@
2323
use BaconQrCode\Writer;
2424
use InvalidArgumentException;
2525
use BaconQrCode\Renderer\Color\Gray;
26+
use BaconQrCode\Renderer\Image\EpsImageBackEnd;
27+
use BaconQrCode\Renderer\Image\ImageBackEndInterface;
28+
use BaconQrCode\Renderer\Image\ImagickImageBackEnd;
2629
use BaconQrCode\Renderer\RendererStyle\EyeFill;
2730
use BaconQrCode\Renderer\RendererStyle\Gradient;
2831
use BaconQrCode\Renderer\RendererStyle\GradientType;
2932

3033
class Generator
3134
{
35+
protected $format = 'svg';
36+
3237
protected $pixels = 100;
3338

3439
protected $margin = 0;
@@ -65,9 +70,15 @@ public function size(int $pixels): self
6570
return $this;
6671
}
6772

68-
public function format(): self
73+
public function format(string $format): self
6974
{
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;
7182
}
7283

7384
public function color(int $red, int $green, int $blue, ?int $alpha = null): self
@@ -161,12 +172,25 @@ protected function getRenderer(): ImageRenderer
161172
{
162173
$renderer = new ImageRenderer(
163174
new RendererStyle($this->pixels, $this->margin, $this->getModule(), $this->getEye(), $this->getFill()),
164-
new SvgImageBackEnd
175+
$this->getFormatter()
165176
);
166177

167178
return $renderer;
168179
}
169180

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+
170194
protected function getModule(): ModuleInterface
171195
{
172196
if ($this->style === 'dot') {

0 commit comments

Comments
 (0)