Convert named constant colors to RGB in Shared/Converter.
Otherwise, colors will not be as expected for RTF and ODT.
This commit is contained in:
parent
2d60f3220d
commit
ebf5cf784f
|
|
@ -272,6 +272,50 @@ class Converter
|
|||
return round($angle / self::DEGREE_TO_ANGLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert colorname as string to RGB
|
||||
*
|
||||
* @param string $value color name
|
||||
* @return string color as hex RGB string, or original value if unknown
|
||||
*/
|
||||
public static function stringToRgb($value)
|
||||
{
|
||||
switch ($value) {
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_YELLOW:
|
||||
return 'FFFF00';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_LIGHTGREEN:
|
||||
return '90EE90';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_CYAN:
|
||||
return '00FFFF';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_MAGENTA:
|
||||
return 'FF00FF';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_BLUE:
|
||||
return '0000FF';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_RED:
|
||||
return 'FF0000';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKBLUE:
|
||||
return '00008B';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKCYAN:
|
||||
return '008B8B';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKGREEN:
|
||||
return '006400';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKMAGENTA:
|
||||
return '8B008B';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKRED:
|
||||
return '8B0000';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKYELLOW:
|
||||
return '8B8B00';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKGRAY:
|
||||
return 'A9A9A9';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_LIGHTGRAY:
|
||||
return 'D3D3D3';
|
||||
case \PhpOffice\PhpWord\Style\Font::FGCOLOR_BLACK:
|
||||
return '000000';
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert HTML hexadecimal to RGB
|
||||
*
|
||||
|
|
@ -283,6 +327,7 @@ class Converter
|
|||
if ($value[0] == '#') {
|
||||
$value = substr($value, 1);
|
||||
}
|
||||
$value = self::stringToRgb($value);
|
||||
|
||||
if (strlen($value) == 6) {
|
||||
list($red, $green, $blue) = array($value[0] . $value[1], $value[2] . $value[3], $value[4] . $value[5]);
|
||||
|
|
|
|||
|
|
@ -114,6 +114,8 @@ class ConverterTest extends \PHPUnit\Framework\TestCase
|
|||
$values[] = array('FF99DD', array(255, 153, 221)); // 6 characters
|
||||
$values[] = array('F9D', array(255, 153, 221)); // 3 characters
|
||||
$values[] = array('0F9D', false); // 4 characters
|
||||
$values[] = array(\PhpOffice\PhpWord\Style\Font::FGCOLOR_DARKMAGENTA, array(139, 0, 139));
|
||||
$values[] = array('unknow', array(0, 0, 0)); // 6 characters, invalid
|
||||
// Conduct test
|
||||
foreach ($values as $value) {
|
||||
$result = Converter::htmlToRgb($value[0]);
|
||||
|
|
|
|||
Loading…
Reference in New Issue