function contraster(&$backgroundcolor, &$textcolor) { if ($textcolor == "#000000") { $c_backgroundcolor = new color(); $c_backgroundcolor->set_from_rgbhex(substr($backgroundcolor, 1, 6)); // il y a un bug dans la méthode set_from_rgbhex de la classe color (à cause de #) // je fixe ici en utilisant substr mais il faudrait le faire dans la classe //$c_backgroundcolor->set_from_rgb(0,0,255); //echo "avant="; //print_r($c_backgroundcolor->get_luv()); //echo "<br/>"; //echo "apres="; //print_r($c_backgroundcolor->get_luv()); //echo "<br/>"; $luv = $c_backgroundcolor->get_luv(); /* si la luminosité est supérieur à une certaine valeur on ne la change pas si elle est inférieur on la fixe à une constante */ $lum_min = 50; if ($luv[0] < $lum_min) { $luv[0] = $lum_min; } $c_backgroundcolor->set_from_luv($luv[0], $luv[1], $luv[2]); $backgroundcolor = "#" . $c_backgroundcolor->get_rgbhex(); } else { throw new Exception('Impossible car la couleur de texte n\'est pas noire !!!'); } }
for ($v3 = 0; $v3 < $max[2]; $v3 += $steps[2]) { if ($type_test == "xyz") { $c->set_from_xyz($v1, $v2, $v3); $values = $c->get_xyz(); } if ($type_test == "cmy") { $c->set_from_cmy($v1, $v2, $v3); $values = $c->get_cmy(); } if ($type_test == "cmyk") { $c->set_from_cmyk($v1, $v2, $v3, 0.5); $values = $c->get_cmyk(); } if ($type_test == "luv") { $c->set_from_luv($v1, $v2, $v3); $values = $c->get_luv(); } if ($type_test == "hsl") { $c->set_from_hsl($v1, $v2, $v3); $values = $c->get_hsl(); } echo "<td bgcolor=#" . $c->get_rgbhex() . ">"; if (round($v1, 2) != round($values[0], 2)) { echo $v1 . "-" . $values[0] . "<br>\n"; } if (round($v2, 2) != round($values[1], 2)) { echo $v2 . "-" . $values[1] . "<br>\n"; } if (round($v3, 2) != round($values[2], 2)) { echo $v3 . "-" . $values[2]; }