<?

// The 16 current colors for HTML
// names and #rrggbb hex values !
$colors_16 = array(
"white" => "ffffff",
"black" => "000000",
"navy" => "000080",
"green" => "008000",
"maroon" => "80000",
"silver" => "c0c0c0",
"blue" => "0000ff",
"lime" => "00ff00",
"red" => "ff0000",
"gray" => "808080",
"purple" => "800080",
"teal" => "008080",
"olive" => "808000",
"fuchsia" => "ff00ff",
"cyan" => "00ffff",
"yellow" => "ffff00");


// Below are the X11COLORS and the SVG colors
// names and #rrggbb hex values  !
// they include the 16 current colors for HTML
// (147 couleurs);
$colors=array(
    
"aliceblue" => "#f0f8ff",
    
"antiquewhite" => "#faebd7",
    
"aqua" => "#00ffff",
    
"aquamarine" => "#7fffd4",
    
"azure" => "#f0ffff",
    
"beige" => "#f5f5dc",
    
"bisque" => "#ffe4c4",
    
"black" => "#000000",
    
"blanchedalmond" => "#ffebcd",
    
"blue" => "#0000ff",
    
"blueviolet" => "#8a2be2",
    
"brown" => "#a52a2a",
    
"burlywood" => "#deb887",
    
"cadetblue" => "#5f9ea0",
    
"chartreuse" => "#7fff00",
    
"chocolate" => "#d2691e",
    
"coral" => "#ff7f50",
    
"cornflowerblue" => "#6495ed",
    
"cornsilk" => "#fff8dc",
    
"crimson" => "#dc143c",
    
"cyan" => "#00ffff",
    
"darkblue" => "#00008b",
    
"darkcyan" => "#008b8b",
    
"darkgoldenrod" => "#b8860b",
    
"darkgray" => "#a9a9a9",
    
"darkgreen" => "#006400",
    
"darkgrey" => "#a9a9a9",
    
"darkkhaki" => "#bdb76b",
    
"darkmagenta" => "#8b008b",
    
"darkolivegreen" => "#556b2f",
    
"darkorange" => "#ff8c00",
    
"darkorchid" => "#9932cc",
    
"darkred" => "#8b0000",
    
"darksalmon" => "#e9967a",
    
"darkseagreen" => "#8fbc8f",
    
"darkslateblue" => "#483d8b",
    
"darkslategray" => "#2f4f4f",
    
"darkslategrey" => "#2f4f4f",
    
"darkturquoise" => "#00ced1",
    
"darkviolet" => "#9400d3",
    
"deeppink" => "#ff1493",
    
"deepskyblue" => "#00bfff",
    
"dimgray" => "#696969",
    
"dimgrey" => "#696969",
    
"dodgerblue" => "#1e90ff",
    
"firebrick" => "#b22222",
    
"floralwhite" => "#fffaf0",
    
"forestgreen" => "#228b22",
    
"fuchsia" => "#ff00ff",
    
"gainsboro" => "#dcdcdc",
    
"ghostwhite" => "#f8f8ff",
    
"gold" => "#ffd700",
    
"goldenrod" => "#daa520",
    
"gray" => "#808080",
    
"green" => "#008000",
    
"greenyellow" => "#adff2f",
    
"grey" => "#808080",
    
"honeydew" => "#f0fff0",
    
"hotpink" => "#ff69b4",
    
"indianred" => "#cd5c5c",
    
"indigo" => "#4b0082",
    
"ivory" => "#fffff0",
    
"khaki" => "#f0e68c",
    
"lavender" => "#e6e6fa",
    
"lavenderblush" => "#fff0f5",
    
"lawngreen" => "#7cfc00",
    
"lemonchiffon" => "#fffacd",
    
"lightblue" => "#add8e6",
    
"lightcoral" => "#f08080",
    
"lightcyan" => "#e0ffff",
    
"lightgoldenrodyellow" => "#fafad2",
    
"lightgray" => "#d3d3d3",
    
"lightgreen" => "#90ee90",
    
"lightgrey" => "#d3d3d3",
    
"lightpink" => "#ffb6c1",
    
"lightsalmon" => "#ffa07a",
    
"lightseagreen" => "#20b2aa",
    
"lightskyblue" => "#87cefa",
    
"lightslategray" => "#778899",
    
"lightslategrey" => "#778899",
    
"lightsteelblue" => "#b0c4de",
    
"lightyellow" => "#ffffe0",
    
"lime" => "#00ff00",
    
"limegreen" => "#32cd32",
    
"linen" => "#faf0e6",
    
"magenta" => "#ff00ff",
    
"maroon" => "#800000",
    
"mediumaquamarine" => "#66cdaa",
    
"mediumblue" => "#0000cd",
    
"mediumorchid" => "#ba55d3",
    
"mediumpurple" => "#9370db",
    
"mediumseagreen" => "#3cb371",
    
"mediumslateblue" => "#7b68ee",
    
"mediumspringgreen" => "#00fa9a",
    
"mediumturquoise" => "#48d1cc",
    
"mediumvioletred" => "#c71585",
    
"midnightblue" => "#191970",
    
"mintcream" => "#f5fffa",
    
"mistyrose" => "#ffe4e1",
    
"moccasin" => "#ffe4b5",
    
"navajowhite" => "#ffdead",
    
"navy" => "#000080",
    
"oldlace" => "#fdf5e6",
    
"olive" => "#808000",
    
"olivedrab" => "#6b8e23",
    
"orange" => "#ffa500",
    
"orangered" => "#ff4500",
    
"orchid" => "#da70d6",
    
"palegoldenrod" => "#eee8aa",
    
"palegreen" => "#98fb98",
    
"paleturquoise" => "#afeeee",
    
"palevioletred" => "#db7093",
    
"papayawhip" => "#ffefd5",
    
"peachpuff" => "#ffdab9",
    
"peru" => "#cd853f",
    
"pink" => "#ffc0cb",
    
"plum" => "#dda0dd",
    
"powderblue" => "#b0e0e6",
    
"purple" => "#800080",
    
"red" => "#ff0000",
    
"rosybrown" => "#bc8f8f",
    
"royalblue" => "#4169e1",
    
"saddlebrown" => "#8b4513",
    
"salmon" => "#fa8072",
    
"sandybrown" => "#f4a460",
    
"seagreen" => "#2e8b57",
    
"seashell" => "#fff5ee",
    
"sienna" => "#a0522d",
    
"silver" => "#c0c0c0",
    
"skyblue" => "#87ceeb",
    
"slateblue" => "#6a5acd",
    
"slategray" => "#708090",
    
"slategrey" => "#708090",
    
"snow" => "#fffafa",
    
"springgreen" => "#00ff7f",
    
"steelblue" => "#4682b4",
    
"tan" => "#d2b48c",
    
"teal" => "#008080",
    
"thistle" => "#d8bfd8",
    
"tomato" => "#ff6347",
    
"turquoise" => "#40e0d0",
    
"violet" => "#ee82ee",
    
"wheat" => "#f5deb3",
    
"white" => "#ffffff",
    
"whitesmoke" => "#f5f5f5",
    
"yellow" => "#ffff00",
    
"yellowgreen" => "#9acd32"
);

// color_convert : version 1.1
// 27 Apr 2004 Raphaël MAVILLE
// returns :    string
// on error :   returns false
// obligatory argument : $color
// facultative arguments  : $ret, $color_html,
// convert the html colors from 'color to 'rrggbb'
// or from 'rrggbb' to 'color'
// eg 'red' to 'ff0000'
// or eg '008000' to 'green'
function color_convert(    $color,    $ret=1) {
         
//PARAMETERS
    // $color: color to translate
    // $ret: facultative argument
    // $ret: direction of translation
    // $ret=false : from 'rrggbb' to  'color'
    // $ret=true : from 'color' to 'rrggbb'
    
global $colors;
    
// INSTRUCTIONS
    
if ($ret == 1) {
    foreach (
$colors as $key=>$value) {  if ($color==$key) { return $value; } }
    }
    if (
$ret == 0) {
           foreach (
$colors as $key=>$value) {  if ($color==$value) { return $key; } }
        }
    
// on errors :
        
return false;
}
//test: OK
//echo color_convert("red");

// color_2_rgb : version 1.0
// 27 Apr 2004 Raphaël MAVILLE
// returns :    array('red'=> rr, 'green'=> gg,'blue' => bb)
// on error :   returns false
// action :     Transform an html 'color' in RGB format
// depends :    function "color_html"
function color_2_rgb($color) {
         
// 'rrggbb' eg 'ff0000'
          // ereg : we want only 6 characters between 0 and f
         
if (ereg("^([a-fA-F0-9]{6})$",$color)) {
                
sscanf($color"%2x%2x%2x"$red$green$blue);
                return  array(
"R" => $red,"G" => $green,"B" => $blue); }
         
// '#rrggbb' eg '#ff0000'
         // ereg : we want only the character # (diese)
         //        followed by 6 characters between 0 and f
         
if (ereg("^(#[a-fA-F0-9]{6})$",$color)) {
                
// if color is "#rrggbb", transform it in "rrggbb"
                
$the_color=substr($color,1,6);
                
sscanf($the_color"%2x%2x%2x"$red$green$blue);
                return  array(
"R" => $red,"G" => $green,"B" => $blue); }
        
// 'color' eg 'red' :translating in 'rrggbb' and relanching this function
        
if (false!=($ret_color=color_convert($color))) {
                return 
color_2_rgb($ret_color);
        } else { return 
false ; }
//END function color_html2rgb

// get_red : version 1.0
// 27 Apr 2004 Raphaël MAVILLE
// returns :    decimal range in [0-255] ([0xOO-0xFF])
// on error :   returns false
// action : get the red part of a RGB color
// depends on : color_html2rgb
function get_red($color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                
// $color[0] is assumed to be the Red data of a RGB
                
return $color[0];
        } elseif (
is_string($color) && (!false==($ret=color_html2rgb($color)))) {
                return 
$ret['R'];
        } else { return 
false; }
}

// get_green : version 1.0
// 27 Apr 2004 Raphaël MAVILLE
// returns :    decimal range in [0-255] ([0xOO-0xFF])
// on error :   returns false
// action :     get the green part of a RGB color
// depends on : color_html2rgb
function get_green($color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                
// $color[1] is assumed to be the Green data of a RGB
                
return $color[1];
        } elseif (
is_string($color) && (!false==($ret=color_html2rgb($color)))) {
                return 
$ret['G'];
        } else { return 
false; }
}

// get_blue : version 1.0
// 27 Apr 2004 Raphaël MAVILLE
// returns :    decimal range in [0-255] ([0xOO-0xFF])
// on error :   returns false
// action : get the blue part of a RGB color
// depends on : color_html2rgb
function get_blue($color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                
// $color[0] is assumed to be the Blue data of a RGB
                
return $color[2];
        } elseif (
is_string($color) && (!false==($ret=color_html2rgb($color)))) {
                return 
$ret['B'];
        } else { return 
false; }
}

// gd_imagecolorallocate : version 1.0
// 27 Apr 2004 Raphaël MAVILLE
// returns :    array('red'=> rr, 'green'=> gg,'blue' => bb)
// on error :   returns false
// action :     imagecolorallocate with arrayed color
// depends on :    function imagecolorallocate from GD library
// PARAMETERS:
// $image : the resource image
// $color : can be an array, a color value in [#]rrggbb format or a color name
function gd_imagecolorallocate($image,$color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorallocate($image,$color['R'],$color['G'],$color['B']);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorallocate($image,$ret['R'],$ret['G'],$ret['B']);
        } else { return 
false; }
}

// BELOW ARE REDEFINED ALL THE GD FUNCTIONS ASKING FOR
// THE THREE VALUES OF THE COLORS

function gd_imagecolorclosest($image,$color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorclosest($image,$color['R'],$color['G'],$color['B']);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorclosest($image,$ret['R'],$ret['G'],$ret['B']);
        } else { return 
false; }
}

function 
gd_imagecolorclosestalpha($image,$color,$alpha) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorclosestalpha($image,$color['R'],$color['G'],$color['B'],$alpha);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorclosestalpha($image,$ret['R'],$ret['G'],$ret['B'],$alpha);
        } else { return 
false; }
}


function 
gd_imagecolorclosesthwb($image,$color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorclosesthwb($image,$color['R'],$color['G'],$color['B']);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorclosesthwb($image,$ret['R'],$ret['G'],$ret['B']);
        } else { return 
false; }
}


function 
gd_imagecolorexact($image,$color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorexact($image,$color['R'],$color['G'],$color['B']);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorexact($image,$ret['R'],$ret['G'],$ret['B']);
        } else { return 
false; }
}


function 
gd_imagecolorexactalpha($image,$color,$alpha) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorexactalpha($image,$color['R'],$color['G'],$color['B'],$alpha);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorexactalpha($image,$ret['R'],$ret['G'],$ret['B'],$alpha);
        } else { return 
false; }
}

function 
gd_imagecolorresolve($image,$color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorresolve($image,$color['R'],$color['G'],$color['B']);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorresolve($image,$ret['R'],$ret['G'],$ret['B']);
        } else { return 
false; }
}

function 
gd_imagecolorresolvealpha($image,$color,$alpha) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorresolvealpha($image,$color['R'],$color['G'],$color['B'],$alpha);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorresolvealpha($image,$ret['R'],$ret['G'],$ret['B'],$alpha);
        } else { return 
false; }
}

function 
gd_imagecolorset($image,$color) {
        if (
is_array($color) && (sizeof($color) ==3)) {
                return 
imagecolorset($image,$color['R'],$color['G'],$color['B']);
        } elseif (
is_string($color) && (!false==($ret=color_2_rgb($color)))) {
                return 
imagecolorset($image,$ret['R'],$ret['G'],$ret['B']);
        } else { return 
false; }
}

?>