public static function hex_rgb($hex_string)
{
$hex_string = ltrim($hex_string, '#');
if (!preg_match('/^[0-9a-f]+$/i', $hex_string)) {
return Error::raise(_t('Not a valid hex color.'));
}
$normalized = '';
switch (strlen($hex_string)) {
case 3:
// 'fed' = 'ffeedd'
for ($i = 0; $i < 3; $i++) {
$normalized .= $hex_string[$i] . $hex_string[$i];
}
break;
case 6:
// already normal
$normalized = $hex_string;
break;
case 2:
case 4:
// who uses this anyway!
$normalized = $hex_string . str_repeat('0', 6 - strlen($hex_string));
break;
default:
return Error::raise(_t('Not a valid color format.'));
}
return self::rgb_rgbarr(hexdec(substr($normalized, 0, 2)), hexdec(substr($normalized, 2, 2)), hexdec(substr($normalized, 4, 2)));
}