Skip to content

Commit 4b1ccc9

Browse files
authored
Added nameToHex method (#55)
1 parent 37a374e commit 4b1ccc9

3 files changed

Lines changed: 336 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ echo $myBlue->getCssGradient(10, TRUE);
167167
- primozcigler
168168
- thedavidmeister
169169
- tylercd100
170+
- Braunson
170171

171172
# License
172173
See LICENSE file or [arlo.mit-license.org](http://arlo.mit-license.org)

src/Mexitek/PHPColors/Color.php

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,171 @@ public static function rgbToString(array $rgb = array()): string
232232
$rgb['B'] . ')';
233233
}
234234

235+
/**
236+
* Given a standard color name, return hex code
237+
*
238+
* @param string $color_name
239+
* @return string
240+
*/
241+
public static function nameToHex(string $color_name): string
242+
{
243+
$colors = array(
244+
'aliceblue' => 'F0F8FF',
245+
'antiquewhite' => 'FAEBD7',
246+
'aqua' => '00FFFF',
247+
'aquamarine' => '7FFFD4',
248+
'azure' => 'F0FFFF',
249+
'beige' => 'F5F5DC',
250+
'bisque' => 'FFE4C4',
251+
'black' => '000000',
252+
'blanchedalmond' => 'FFEBCD',
253+
'blue' => '0000FF',
254+
'blueviolet' => '8A2BE2',
255+
'brown' => 'A52A2A',
256+
'burlywood' => 'DEB887',
257+
'cadetblue' => '5F9EA0',
258+
'chartreuse' => '7FFF00',
259+
'chocolate' => 'D2691E',
260+
'coral' => 'FF7F50',
261+
'cornflowerblue' => '6495ED',
262+
'cornsilk' => 'FFF8DC',
263+
'crimson' => 'DC143C',
264+
'cyan' => '00FFFF',
265+
'darkblue' => '00008B',
266+
'darkcyan' => '008B8B',
267+
'darkgoldenrod' => 'B8860B',
268+
'darkgray' => 'A9A9A9',
269+
'darkgreen' => '006400',
270+
'darkgrey' => 'A9A9A9',
271+
'darkkhaki' => 'BDB76B',
272+
'darkmagenta' => '8B008B',
273+
'darkolivegreen' => '556B2F',
274+
'darkorange' => 'FF8C00',
275+
'darkorchid' => '9932CC',
276+
'darkred' => '8B0000',
277+
'darksalmon' => 'E9967A',
278+
'darkseagreen' => '8FBC8F',
279+
'darkslateblue' => '483D8B',
280+
'darkslategray' => '2F4F4F',
281+
'darkslategrey' => '2F4F4F',
282+
'darkturquoise' => '00CED1',
283+
'darkviolet' => '9400D3',
284+
'deeppink' => 'FF1493',
285+
'deepskyblue' => '00BFFF',
286+
'dimgray' => '696969',
287+
'dimgrey' => '696969',
288+
'dodgerblue' => '1E90FF',
289+
'firebrick' => 'B22222',
290+
'floralwhite' => 'FFFAF0',
291+
'forestgreen' => '228B22',
292+
'fuchsia' => 'FF00FF',
293+
'gainsboro' => 'DCDCDC',
294+
'ghostwhite' => 'F8F8FF',
295+
'gold' => 'FFD700',
296+
'goldenrod' => 'DAA520',
297+
'gray' => '808080',
298+
'green' => '008000',
299+
'greenyellow' => 'ADFF2F',
300+
'grey' => '808080',
301+
'honeydew' => 'F0FFF0',
302+
'hotpink' => 'FF69B4',
303+
'indianred' => 'CD5C5C',
304+
'indigo' => '4B0082',
305+
'ivory' => 'FFFFF0',
306+
'khaki' => 'F0E68C',
307+
'lavender' => 'E6E6FA',
308+
'lavenderblush' => 'FFF0F5',
309+
'lawngreen' => '7CFC00',
310+
'lemonchiffon' => 'FFFACD',
311+
'lightblue' => 'ADD8E6',
312+
'lightcoral' => 'F08080',
313+
'lightcyan' => 'E0FFFF',
314+
'lightgoldenrodyellow' => 'FAFAD2',
315+
'lightgray' => 'D3D3D3',
316+
'lightgreen' => '90EE90',
317+
'lightgrey' => 'D3D3D3',
318+
'lightpink' => 'FFB6C1',
319+
'lightsalmon' => 'FFA07A',
320+
'lightseagreen' => '20B2AA',
321+
'lightskyblue' => '87CEFA',
322+
'lightslategray' => '778899',
323+
'lightslategrey' => '778899',
324+
'lightsteelblue' => 'B0C4DE',
325+
'lightyellow' => 'FFFFE0',
326+
'lime' => '00FF00',
327+
'limegreen' => '32CD32',
328+
'linen' => 'FAF0E6',
329+
'magenta' => 'FF00FF',
330+
'maroon' => '800000',
331+
'mediumaquamarine' => '66CDAA',
332+
'mediumblue' => '0000CD',
333+
'mediumorchid' => 'BA55D3',
334+
'mediumpurple' => '9370D0',
335+
'mediumseagreen' => '3CB371',
336+
'mediumslateblue' => '7B68EE',
337+
'mediumspringgreen' => '00FA9A',
338+
'mediumturquoise' => '48D1CC',
339+
'mediumvioletred' => 'C71585',
340+
'midnightblue' => '191970',
341+
'mintcream' => 'F5FFFA',
342+
'mistyrose' => 'FFE4E1',
343+
'moccasin' => 'FFE4B5',
344+
'navajowhite' => 'FFDEAD',
345+
'navy' => '000080',
346+
'oldlace' => 'FDF5E6',
347+
'olive' => '808000',
348+
'olivedrab' => '6B8E23',
349+
'orange' => 'FFA500',
350+
'orangered' => 'FF4500',
351+
'orchid' => 'DA70D6',
352+
'palegoldenrod' => 'EEE8AA',
353+
'palegreen' => '98FB98',
354+
'paleturquoise' => 'AFEEEE',
355+
'palevioletred' => 'DB7093',
356+
'papayawhip' => 'FFEFD5',
357+
'peachpuff' => 'FFDAB9',
358+
'peru' => 'CD853F',
359+
'pink' => 'FFC0CB',
360+
'plum' => 'DDA0DD',
361+
'powderblue' => 'B0E0E6',
362+
'purple' => '800080',
363+
'red' => 'FF0000',
364+
'rosybrown' => 'BC8F8F',
365+
'royalblue' => '4169E1',
366+
'saddlebrown' => '8B4513',
367+
'salmon' => 'FA8072',
368+
'sandybrown' => 'F4A460',
369+
'seagreen' => '2E8B57',
370+
'seashell' => 'FFF5EE',
371+
'sienna' => 'A0522D',
372+
'silver' => 'C0C0C0',
373+
'skyblue' => '87CEEB',
374+
'slateblue' => '6A5ACD',
375+
'slategray' => '708090',
376+
'slategrey' => '708090',
377+
'snow' => 'FFFAFA',
378+
'springgreen' => '00FF7F',
379+
'steelblue' => '4682B4',
380+
'tan' => 'D2B48C',
381+
'teal' => '008080',
382+
'thistle' => 'D8BFD8',
383+
'tomato' => 'FF6347',
384+
'turquoise' => '40E0D0',
385+
'violet' => 'EE82EE',
386+
'wheat' => 'F5DEB3',
387+
'white' => 'FFFFFF',
388+
'whitesmoke' => 'F5F5F5',
389+
'yellow' => 'FFFF00',
390+
'yellowgreen' => '9ACD32'
391+
);
392+
393+
$color_name = strtolower($color_name);
394+
if (isset($colors[$color_name])) {
395+
return '#' . $colors[$color_name];
396+
}
397+
398+
return $color_name;
399+
}
235400

236401
/**
237402
* Given a HEX value, returns a darker color. If no desired amount provided, then the color halfway between

tests/colorConvertHex.phpt

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
<?php
2+
3+
require __DIR__ . '/bootstrap.php';
4+
5+
use Mexitek\PHPColors\Color;
6+
use Tester\Assert;
7+
8+
// Test cases.
9+
$colorsToConvert = array(
10+
'aliceblue' => 'F0F8FF',
11+
'antiquewhite' => 'FAEBD7',
12+
'aqua' => '00FFFF',
13+
'aquamarine' => '7FFFD4',
14+
'azure' => 'F0FFFF',
15+
'beige' => 'F5F5DC',
16+
'bisque' => 'FFE4C4',
17+
'black' => '000000',
18+
'blanchedalmond' => 'FFEBCD',
19+
'blue' => '0000FF',
20+
'blueviolet' => '8A2BE2',
21+
'brown' => 'A52A2A',
22+
'burlywood' => 'DEB887',
23+
'cadetblue' => '5F9EA0',
24+
'chartreuse' => '7FFF00',
25+
'chocolate' => 'D2691E',
26+
'coral' => 'FF7F50',
27+
'cornflowerblue' => '6495ED',
28+
'cornsilk' => 'FFF8DC',
29+
'crimson' => 'DC143C',
30+
'cyan' => '00FFFF',
31+
'darkblue' => '00008B',
32+
'darkcyan' => '008B8B',
33+
'darkgoldenrod' => 'B8860B',
34+
'darkgray' => 'A9A9A9',
35+
'darkgreen' => '006400',
36+
'darkgrey' => 'A9A9A9',
37+
'darkkhaki' => 'BDB76B',
38+
'darkmagenta' => '8B008B',
39+
'darkolivegreen' => '556B2F',
40+
'darkorange' => 'FF8C00',
41+
'darkorchid' => '9932CC',
42+
'darkred' => '8B0000',
43+
'darksalmon' => 'E9967A',
44+
'darkseagreen' => '8FBC8F',
45+
'darkslateblue' => '483D8B',
46+
'darkslategray' => '2F4F4F',
47+
'darkslategrey' => '2F4F4F',
48+
'darkturquoise' => '00CED1',
49+
'darkviolet' => '9400D3',
50+
'deeppink' => 'FF1493',
51+
'deepskyblue' => '00BFFF',
52+
'dimgray' => '696969',
53+
'dimgrey' => '696969',
54+
'dodgerblue' => '1E90FF',
55+
'firebrick' => 'B22222',
56+
'floralwhite' => 'FFFAF0',
57+
'forestgreen' => '228B22',
58+
'fuchsia' => 'FF00FF',
59+
'gainsboro' => 'DCDCDC',
60+
'ghostwhite' => 'F8F8FF',
61+
'gold' => 'FFD700',
62+
'goldenrod' => 'DAA520',
63+
'gray' => '808080',
64+
'green' => '008000',
65+
'greenyellow' => 'ADFF2F',
66+
'grey' => '808080',
67+
'honeydew' => 'F0FFF0',
68+
'hotpink' => 'FF69B4',
69+
'indianred' => 'CD5C5C',
70+
'indigo' => '4B0082',
71+
'ivory' => 'FFFFF0',
72+
'khaki' => 'F0E68C',
73+
'lavender' => 'E6E6FA',
74+
'lavenderblush' => 'FFF0F5',
75+
'lawngreen' => '7CFC00',
76+
'lemonchiffon' => 'FFFACD',
77+
'lightblue' => 'ADD8E6',
78+
'lightcoral' => 'F08080',
79+
'lightcyan' => 'E0FFFF',
80+
'lightgoldenrodyellow' => 'FAFAD2',
81+
'lightgray' => 'D3D3D3',
82+
'lightgreen' => '90EE90',
83+
'lightgrey' => 'D3D3D3',
84+
'lightpink' => 'FFB6C1',
85+
'lightsalmon' => 'FFA07A',
86+
'lightseagreen' => '20B2AA',
87+
'lightskyblue' => '87CEFA',
88+
'lightslategray' => '778899',
89+
'lightslategrey' => '778899',
90+
'lightsteelblue' => 'B0C4DE',
91+
'lightyellow' => 'FFFFE0',
92+
'lime' => '00FF00',
93+
'limegreen' => '32CD32',
94+
'linen' => 'FAF0E6',
95+
'magenta' => 'FF00FF',
96+
'maroon' => '800000',
97+
'mediumaquamarine' => '66CDAA',
98+
'mediumblue' => '0000CD',
99+
'mediumorchid' => 'BA55D3',
100+
'mediumpurple' => '9370D0',
101+
'mediumseagreen' => '3CB371',
102+
'mediumslateblue' => '7B68EE',
103+
'mediumspringgreen' => '00FA9A',
104+
'mediumturquoise' => '48D1CC',
105+
'mediumvioletred' => 'C71585',
106+
'midnightblue' => '191970',
107+
'mintcream' => 'F5FFFA',
108+
'mistyrose' => 'FFE4E1',
109+
'moccasin' => 'FFE4B5',
110+
'navajowhite' => 'FFDEAD',
111+
'navy' => '000080',
112+
'oldlace' => 'FDF5E6',
113+
'olive' => '808000',
114+
'olivedrab' => '6B8E23',
115+
'orange' => 'FFA500',
116+
'orangered' => 'FF4500',
117+
'orchid' => 'DA70D6',
118+
'palegoldenrod' => 'EEE8AA',
119+
'palegreen' => '98FB98',
120+
'paleturquoise' => 'AFEEEE',
121+
'palevioletred' => 'DB7093',
122+
'papayawhip' => 'FFEFD5',
123+
'peachpuff' => 'FFDAB9',
124+
'peru' => 'CD853F',
125+
'pink' => 'FFC0CB',
126+
'plum' => 'DDA0DD',
127+
'powderblue' => 'B0E0E6',
128+
'purple' => '800080',
129+
'red' => 'FF0000',
130+
'rosybrown' => 'BC8F8F',
131+
'royalblue' => '4169E1',
132+
'saddlebrown' => '8B4513',
133+
'salmon' => 'FA8072',
134+
'sandybrown' => 'F4A460',
135+
'seagreen' => '2E8B57',
136+
'seashell' => 'FFF5EE',
137+
'sienna' => 'A0522D',
138+
'silver' => 'C0C0C0',
139+
'skyblue' => '87CEEB',
140+
'slateblue' => '6A5ACD',
141+
'slategray' => '708090',
142+
'slategrey' => '708090',
143+
'snow' => 'FFFAFA',
144+
'springgreen' => '00FF7F',
145+
'steelblue' => '4682B4',
146+
'tan' => 'D2B48C',
147+
'teal' => '008080',
148+
'thistle' => 'D8BFD8',
149+
'tomato' => 'FF6347',
150+
'turquoise' => '40E0D0',
151+
'violet' => 'EE82EE',
152+
'wheat' => 'F5DEB3',
153+
'white' => 'FFFFFF',
154+
'whitesmoke' => 'F5F5F5',
155+
'yellow' => 'FFFF00',
156+
'yellowgreen' => '9ACD32'
157+
);
158+
159+
foreach ($colorsToConvert as $name => $hex) {
160+
$hex = '#' . $hex;
161+
162+
$answer = Color::nameToHex($name);
163+
Assert::same(
164+
$hex,
165+
$answer,
166+
'Incorrect hex result: "' . Color::nameToHex($name) .
167+
'" should convert to "' . $hex .
168+
'", but output was: "' . $answer . '".'
169+
);
170+
}

0 commit comments

Comments
 (0)