function csstidy_optimise::cut_color in Advanced CSS/JS Aggregation 7
Same name and namespace in other branches
- 6 advagg_css_compress/csstidy/class.csstidy_optimise.inc \csstidy_optimise::cut_color()
Color compression function. Converts all rgb() values to #-values and uses the short-form if possible. Also replaces 4 color names by #-values.
@version 1.1
Parameters
string $color:
Return value
string
1 call to csstidy_optimise::cut_color()
- csstidy_optimise::subvalue in advagg_css_compress/
csstidy/ class.csstidy_optimise.inc - Optimises a sub-value @access public @version 1.0
File
- advagg_css_compress/
csstidy/ class.csstidy_optimise.inc, line 283
Class
- csstidy_optimise
- CSS Optimising Class
Code
function cut_color($color) {
$replace_colors =& $GLOBALS['csstidy']['replace_colors'];
// rgb(0,0,0) -> #000000 (or #000 in this case later)
if (strtolower(substr($color, 0, 4)) === 'rgb(') {
$color_tmp = substr($color, 4, strlen($color) - 5);
$color_tmp = explode(',', $color_tmp);
for ($i = 0; $i < count($color_tmp); $i++) {
$color_tmp[$i] = trim($color_tmp[$i]);
if (substr($color_tmp[$i], -1) === '%') {
$color_tmp[$i] = round(255 * $color_tmp[$i] / 100);
}
if ($color_tmp[$i] > 255) {
$color_tmp[$i] = 255;
}
}
$color = '#';
for ($i = 0; $i < 3; $i++) {
if ($color_tmp[$i] < 16) {
$color .= '0' . dechex($color_tmp[$i]);
}
else {
$color .= dechex($color_tmp[$i]);
}
}
}
// Fix bad color names
if (isset($replace_colors[strtolower($color)])) {
$color = $replace_colors[strtolower($color)];
}
// #aabbcc -> #abc
if (strlen($color) == 7) {
$color_temp = strtolower($color);
if ($color_temp[0] === '#' && $color_temp[1] == $color_temp[2] && $color_temp[3] == $color_temp[4] && $color_temp[5] == $color_temp[6]) {
$color = '#' . $color[1] . $color[3] . $color[5];
}
}
switch (strtolower($color)) {
/* color name -> hex code */
case 'black':
return '#000';
case 'fuchsia':
return '#f0f';
case 'white':
return '#fff';
case 'yellow':
return '#ff0';
/* hex code -> color name */
case '#800000':
return 'maroon';
case '#ffa500':
return 'orange';
case '#808000':
return 'olive';
case '#800080':
return 'purple';
case '#008000':
return 'green';
case '#000080':
return 'navy';
case '#008080':
return 'teal';
case '#c0c0c0':
return 'silver';
case '#808080':
return 'gray';
case '#f00':
return 'red';
}
return $color;
}