Skip to content

Commit 1a6071e

Browse files
committed
Add ColorHelper to convert textual colors
1 parent 8fdf289 commit 1a6071e

11 files changed

Lines changed: 76 additions & 22 deletions

src/BarcodeGeneratorDynamicHTML.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Picqer\Barcode;
44

55
use Picqer\Barcode\Exceptions\UnknownTypeException;
6+
use Picqer\Barcode\Helpers\ColorHelper;
67

78
class BarcodeGeneratorDynamicHTML extends BarcodeGenerator
89
{
@@ -21,7 +22,7 @@ public function getBarcode(string $barcode, $type, string $foregroundColor = 'bl
2122
$barcodeData = $this->getBarcodeData($barcode, $type);
2223

2324
$renderer = new \Picqer\Barcode\Renderers\DynamicHtmlRenderer();
24-
$renderer->setForegroundColor($foregroundColor);
25+
$renderer->setForegroundColor(ColorHelper::getArrayFromColorString($foregroundColor));
2526

2627
return $renderer->render($barcodeData);
2728
}

src/BarcodeGeneratorHTML.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Picqer\Barcode;
44

55
use Picqer\Barcode\Exceptions\UnknownTypeException;
6+
use Picqer\Barcode\Helpers\ColorHelper;
67

78
class BarcodeGeneratorHTML extends BarcodeGenerator
89
{
@@ -25,7 +26,7 @@ public function getBarcode(string $barcode, $type, int $widthFactor = 2, int $he
2526
$width = round(($barcodeData->getWidth() * $widthFactor), 3);
2627

2728
$renderer = new \Picqer\Barcode\Renderers\HtmlRenderer();
28-
$renderer->setForegroundColor($foregroundColor);
29+
$renderer->setForegroundColor(ColorHelper::getArrayFromColorString($foregroundColor));
2930

3031
return $renderer->render($barcodeData, $width, $height);
3132
}

src/BarcodeGeneratorJPG.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function getBarcode(string $barcode, $type, int $widthFactor = 2, int $he
3434
}
3535
}
3636

37-
return $renderer->render($barcodeData, $widthFactor, $height);
37+
return $renderer->render($barcodeData, $barcodeData->getWidth() * $widthFactor, $height);
3838
}
3939

4040
/**

src/BarcodeGeneratorPNG.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function getBarcode(string $barcode, $type, int $widthFactor = 2, int $he
3434
}
3535
}
3636

37-
return $renderer->render($barcodeData, $widthFactor, $height);
37+
return $renderer->render($barcodeData, $barcodeData->getWidth() * $widthFactor, $height);
3838
}
3939

4040
/**

src/BarcodeGeneratorSVG.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Picqer\Barcode;
44

55
use Picqer\Barcode\Exceptions\UnknownTypeException;
6+
use Picqer\Barcode\Helpers\ColorHelper;
67

78
class BarcodeGeneratorSVG extends BarcodeGenerator
89
{
@@ -25,7 +26,7 @@ public function getBarcode(string $barcode, $type, float $widthFactor = 2, float
2526
$width = round(($barcodeData->getWidth() * $widthFactor), 3);
2627

2728
$renderer = new \Picqer\Barcode\Renderers\SvgRenderer();
28-
$renderer->setForegroundColor($foregroundColor);
29+
$renderer->setForegroundColor(ColorHelper::getArrayFromColorString($foregroundColor));
2930

3031
return $renderer->render($barcodeData, $width, $height);
3132
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
3+
namespace Picqer\Barcode\Exceptions;
4+
5+
class UnknownColorException extends BarcodeException {}

src/Helpers/ColorHelper.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
3+
namespace Picqer\Barcode\Helpers;
4+
5+
use Picqer\Barcode\Exceptions\UnknownColorException;
6+
7+
class ColorHelper
8+
{
9+
// Convert textual color values, to array of 3 colors 0-255
10+
// Can be "red", "#333" or "#009945" styles
11+
public static function getArrayFromColorString(string $color): array {
12+
if ($color == 'black') {
13+
return [0, 0, 0];
14+
} elseif ($color == 'white') {
15+
return [255, 255, 255];
16+
} elseif ($color == 'red') {
17+
return [255, 0, 0];
18+
} elseif ($color == 'green') {
19+
return [0, 255, 0];
20+
} elseif ($color == 'blue') {
21+
return [0, 0, 255];
22+
} elseif ($color == 'yellow') {
23+
return [255, 255, 0];
24+
}
25+
26+
// #333 style
27+
if (str_starts_with($color, '#') && strlen($color) === 4) {
28+
return [
29+
hexdec(substr($color, 1, 1) . substr($color, 1, 1)),
30+
hexdec(substr($color, 2, 1) . substr($color, 2, 1)),
31+
hexdec(substr($color, 3, 1) . substr($color, 3, 1)),
32+
];
33+
}
34+
35+
// #009933 style
36+
if (str_starts_with($color, '#') && strlen($color) === 7) {
37+
return [
38+
hexdec(substr($color, 1, 2)),
39+
hexdec(substr($color, 2, 2)),
40+
hexdec(substr($color, 3, 2)),
41+
];
42+
}
43+
44+
throw new UnknownColorException('Only basic string-based colors are supported in v3.');
45+
}
46+
}

tests/HtmlRendererTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public function test_html_barcode_generator_with_background()
2929
$barcode = (new Picqer\Barcode\Types\TypeCode128())->getBarcode('081231723897');
3030

3131
$renderer = new Picqer\Barcode\Renderers\HtmlRenderer();
32-
$renderer->setBackgroundColor('red');
32+
$renderer->setBackgroundColor([255, 0, 0]);
3333
$generated = $renderer->render($barcode, $barcode->getWidth() * 2);
3434

3535
$this->assertStringEqualsFile('tests/verified-files/081231723897-code128-red-background.html', $generated);

tests/JpgRendererTest.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public function test_jpg_barcode_generator_can_generate_code_128_barcode()
1010

1111
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
1212
$renderer->useGd();
13-
$generated = $renderer->render($barcode);
13+
$generated = $renderer->render($barcode, $barcode->getWidth() * 2);
1414

1515
$imageInfo = getimagesizefromstring($generated);
1616

@@ -27,7 +27,7 @@ public function test_jpg_barcode_generator_can_generate_code_39_barcode()
2727

2828
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
2929
$renderer->useGd();
30-
$generated = $renderer->render($barcode, 1);
30+
$generated = $renderer->render($barcode, $barcode->getWidth());
3131

3232
$imageInfo = getimagesizefromstring($generated);
3333

@@ -43,7 +43,7 @@ public function test_jpg_barcode_generator_can_use_different_height()
4343

4444
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
4545
$renderer->useGd();
46-
$generated = $renderer->render($barcode, 2, 45);
46+
$generated = $renderer->render($barcode, $barcode->getWidth() * 2, 45);
4747

4848
$imageInfo = getimagesizefromstring($generated);
4949

@@ -59,7 +59,7 @@ public function test_jpg_barcode_generator_can_use_different_width_factor()
5959

6060
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
6161
$renderer->useGd();
62-
$generated = $renderer->render($barcode, 5);
62+
$generated = $renderer->render($barcode, $barcode->getWidth() * 5);
6363

6464
$imageInfo = getimagesizefromstring($generated);
6565

@@ -81,7 +81,7 @@ public function test_jpg_barcode_generator_can_generate_code_128_barcode_imagick
8181

8282
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
8383
$renderer->useImagick();
84-
$generated = $renderer->render($barcode);
84+
$generated = $renderer->render($barcode, $barcode->getWidth() * 2);
8585

8686
$imageInfo = getimagesizefromstring($generated);
8787

@@ -101,7 +101,7 @@ public function test_jpg_barcode_generator_can_generate_code_39_barcode_imagick(
101101

102102
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
103103
$renderer->useImagick();
104-
$generated = $renderer->render($barcode, 1);
104+
$generated = $renderer->render($barcode, $barcode->getWidth());
105105

106106
$imageInfo = getimagesizefromstring($generated);
107107

@@ -121,7 +121,7 @@ public function test_jpg_barcode_generator_can_use_different_height_imagick()
121121

122122
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
123123
$renderer->useGd();
124-
$generated = $renderer->render($barcode, 2, 45);
124+
$generated = $renderer->render($barcode, $barcode->getWidth() * 2, 45);
125125

126126
$imageInfo = getimagesizefromstring($generated);
127127

@@ -141,7 +141,7 @@ public function test_jpg_barcode_generator_can_use_different_width_factor_imagic
141141

142142
$renderer = new Picqer\Barcode\Renderers\JpgRenderer();
143143
$renderer->useGd();
144-
$generated = $renderer->render($barcode, 5);
144+
$generated = $renderer->render($barcode, $barcode->getWidth() * 5);
145145

146146
$imageInfo = getimagesizefromstring($generated);
147147

tests/PngRendererTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function test_png_barcode_generator_can_generate_code_39_barcode()
2222

2323
$renderer = new Picqer\Barcode\Renderers\PngRenderer();
2424
$renderer->useGd();
25-
$generated = $renderer->render($barcode, 1);
25+
$generated = $renderer->render($barcode, $barcode->getWidth());
2626

2727
$imageInfo = getimagesizefromstring($generated);
2828

@@ -38,7 +38,7 @@ public function test_png_barcode_generator_can_use_different_height()
3838

3939
$renderer = new Picqer\Barcode\Renderers\PngRenderer();
4040
$renderer->useGd();
41-
$generated = $renderer->render($barcode, 2, 45);
41+
$generated = $renderer->render($barcode, $barcode->getWidth() * 2, 45);
4242

4343
$imageInfo = getimagesizefromstring($generated);
4444

@@ -54,7 +54,7 @@ public function test_png_barcode_generator_can_use_different_width_factor()
5454

5555
$renderer = new Picqer\Barcode\Renderers\PngRenderer();
5656
$renderer->useGd();
57-
$generated = $renderer->render($barcode, 5);
57+
$generated = $renderer->render($barcode, $barcode->getWidth() * 5);
5858

5959
$imageInfo = getimagesizefromstring($generated);
6060

@@ -76,7 +76,7 @@ public function test_png_barcode_generator_can_generate_code_128_barcode_imagick
7676

7777
$renderer = new Picqer\Barcode\Renderers\PngRenderer();
7878
$renderer->useImagick();
79-
$generated = $renderer->render($barcode);
79+
$generated = $renderer->render($barcode, $barcode->getWidth() * 2);
8080

8181
$this->assertEquals('PNG', substr($generated, 1, 3));
8282
}
@@ -91,7 +91,7 @@ public function test_png_barcode_generator_can_generate_code_39_barcode_imagick(
9191

9292
$renderer = new Picqer\Barcode\Renderers\PngRenderer();
9393
$renderer->useImagick();
94-
$generated = $renderer->render($barcode, 1);
94+
$generated = $renderer->render($barcode, $barcode->getWidth());
9595

9696
$imageInfo = getimagesizefromstring($generated);
9797

@@ -111,7 +111,7 @@ public function test_png_barcode_generator_can_use_different_height_imagick()
111111

112112
$renderer = new Picqer\Barcode\Renderers\PngRenderer();
113113
$renderer->useGd();
114-
$generated = $renderer->render($barcode, 2, 45);
114+
$generated = $renderer->render($barcode, $barcode->getWidth() * 2, 45);
115115

116116
$imageInfo = getimagesizefromstring($generated);
117117

@@ -131,7 +131,7 @@ public function test_png_barcode_generator_can_use_different_width_factor_imagic
131131

132132
$renderer = new Picqer\Barcode\Renderers\PngRenderer();
133133
$renderer->useGd();
134-
$generated = $renderer->render($barcode, 5);
134+
$generated = $renderer->render($barcode, $barcode->getWidth() * 5);
135135

136136
$imageInfo = getimagesizefromstring($generated);
137137

0 commit comments

Comments
 (0)