?????????????? ?????????????? ?????????????? ?????????????? inc/filtres_images_compat.php000066600000010271151451631460012401 0ustar00inc/filtres_images.php000066600000002320151451631460011032 0ustar00modeles/favicon.html000066600000000406151451631460010521 0ustar00[] filtres/images_lib.php000066600000022340151451631460011033 0ustar00 1 ) $H = $H - 1; } $ret["h"] = $H; $ret["s"] = $S; $ret["v"] = $V; return $ret; } /** * Transformation d'une couleur vectorielle HSV en RGB * HSV float entre 0 et 1 * RGB entiers entre 0 et 255 * * @param float $H * @param float $S * @param float $V * @return array */ function _couleur_hsv2rgb ($H,$S,$V) { if ( $S == 0 ) //HSV values = 0 ÷ 1 { $R = $V * 255; $G = $V * 255; $B = $V * 255; } else { $var_h = $H * 6; if ( $var_h == 6 ) $var_h = 0 ; //H must be < 1 $var_i = floor( $var_h ) ; //Or ... var_i = floor( var_h ) $var_1 = $V * ( 1 - $S ); $var_2 = $V * ( 1 - $S * ( $var_h - $var_i ) ); $var_3 = $V * ( 1 - $S * ( 1 - ( $var_h - $var_i ) ) ); if ( $var_i == 0 ) { $var_r = $V ; $var_g = $var_3 ; $var_b = $var_1 ; } else if ( $var_i == 1 ) { $var_r = $var_2 ; $var_g = $V ; $var_b = $var_1 ; } else if ( $var_i == 2 ) { $var_r = $var_1 ; $var_g = $V ; $var_b = $var_3 ; } else if ( $var_i == 3 ) { $var_r = $var_1 ; $var_g = $var_2 ; $var_b = $V ; } else if ( $var_i == 4 ) { $var_r = $var_3 ; $var_g = $var_1 ; $var_b = $V ; } else { $var_r = $V ; $var_g = $var_1 ; $var_b = $var_2; } $R = $var_r * 255; //RGB results = 0 ÷ 255 $G = $var_g * 255; $B = $var_b * 255; } $ret["r"] = floor($R); $ret["g"] = floor($G); $ret["b"] = floor($B); return $ret; } /** * Transformation d'une couleur RGB en HSL * HSL float entre 0 et 1 * RGB entiers entre 0 et 255 * * @param int $R * @param int $G * @param int $B * @return array */ function _couleur_rgb2hsl ($R,$G,$B) { $var_R = ( $R / 255 ) ; //Where RGB values = 0 ÷ 255 $var_G = ( $G / 255 ); $var_B = ( $B / 255 ); $var_Min = min( $var_R, $var_G, $var_B ) ; //Min. value of RGB $var_Max = max( $var_R, $var_G, $var_B ) ; //Max. value of RGB $del_Max = $var_Max - $var_Min ; //Delta RGB value $L = ( $var_Max + $var_Min ) / 2; if ( $del_Max == 0 ) //This is a gray, no chroma... { $H = 0 ; //HSL results = 0 ÷ 1 $S = 0 ; } else //Chromatic data... { if ($L < 0.5 ) $S = $del_Max / ( $var_Max+ $var_Min); else $S = $del_Max/ ( 2 - $var_Max - $var_Min); $del_R = ( ( ( $var_Max- $var_R) / 6 ) + ( $del_Max / 2 ) ) / $del_Max; $del_G = ( ( ( $var_Max- $var_G) / 6 ) + ( $del_Max / 2 ) ) / $del_Max; $del_B = ( ( ( $var_Max- $var_B) / 6 ) + ( $del_Max / 2 ) ) / $del_Max; if ( $var_R == $var_Max) $H= $del_B - $del_G; else if ( $var_G == $var_Max) $H= ( 1 / 3 ) + $del_R - $del_B; else if ( $var_B == $var_Max) $H= ( 2 / 3 ) + $del_G - $del_R; if ( $H < 0 ) $H+= 1; if ( $H > 1 ) $H-= 1; } $ret["h"] = $H; $ret["s"] = $S; $ret["l"] = $L; return $ret; } /** * Calcul d'une composante R, G ou B * * @param unknown_type $v1 * @param unknown_type $v2 * @param unknown_type $vH * @return float */ function hue_2_rgb( $v1, $v2, $vH ) { if ( $vH < 0 ) $vH += 1; if ( $vH > 1 ) $vH -= 1; if ( ( 6 * $vH ) < 1 ) return ( $v1 + ( $v2 - $v1 ) * 6 * $vH ); if ( ( 2 * $vH ) < 1 ) return ( $v2 ); if ( ( 3 * $vH ) < 2 ) return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 ); return ( $v1 ); } /** * Transformation d'une couleur HSL en RGB * HSL float entre 0 et 1 * RGB entiers entre 0 et 255 * * @param float $H * @param float $S * @param float $L * @return array */ function _couleur_hsl2rgb ($H,$S,$L) { if ( $S == 0 ) //HSV values = 0 -> 1 { $R = $V * 255; $G = $V * 255; $B = $V * 255; } else { if ( $L < 0.5 ) $var_2 = $L * ( 1 + $S ); else $var_2 = ( $L + $S ) - ( $S * $L ); $var_1 = 2 * $L - $var_2; $R = 255 * hue_2_rgb( $var_1, $var_2, $H + ( 1 / 3 ) ) ; $G = 255 * hue_2_rgb( $var_1, $var_2, $H ); $B = 255 * hue_2_rgb( $var_1, $var_2, $H - ( 1 / 3 ) ); } $ret["r"] = floor($R); $ret["g"] = floor($G); $ret["b"] = floor($B); return $ret; } // A partir d'une image, // recupere une couleur // renvoit sous la forme hexadecimale ("F26C4E" par exemple). // Par defaut, la couleur choisie se trouve un peu au-dessus du centre de l'image. // On peut forcer un point en fixant $x et $y, entre 0 et 20. // http://doc.spip.org/@image_couleur_extraire function _image_couleur_extraire($img, $x=10, $y=6) { static $couleur_extraite = array(); if (isset($couleur_extraite["$img-$x-$y"])) return $couleur_extraite["$img-$x-$y"]; // valeur par defaut si l'image ne peut etre lue $defaut = "F26C4E"; $cache = _image_valeurs_trans($img, "coul-$x-$y", "txt"); if (!$cache) return $couleur_extraite["$img-$x-$y"] = $defaut; $fichier = $cache["fichier"]; $dest = $cache["fichier_dest"]; if (isset($couleur_extraite["$fichier-$x-$y"])) return $couleur_extraite["$fichier-$x-$y"]; $creer = $cache["creer"]; if ($creer) { if (@file_exists($fichier)) { $width = $cache["largeur"]; $height = $cache["hauteur"]; $newwidth = 20; $newheight = 20; $thumb = imagecreate($newwidth, $newheight); $source = $cache["fonction_imagecreatefrom"]($fichier); imagepalettetotruecolor($source); imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); do { // get a color $color_index = imagecolorat($thumb, $x, $y); // make it human readable $color_tran = imagecolorsforindex($thumb, $color_index); $x++; $y++; } while ($color_tran['alpha']==127 AND $x<$newwidth AND $y<$newheight); $couleur = _couleur_dec_to_hex($color_tran["red"], $color_tran["green"], $color_tran["blue"]); } else { $couleur = $defaut; } // Mettre en cache le resultat $couleur_extraite["$fichier-$x-$y"] = $couleur; ecrire_fichier($dest,$couleur_extraite["$fichier-$x-$y"]); } else { lire_fichier($dest,$couleur_extraite["$fichier-$x-$y"]); } return $couleur_extraite["$img-$x-$y"]=$couleur_extraite["$fichier-$x-$y"]; } // $src_img - a GD image resource // $angle - degrees to rotate clockwise, in degrees // returns a GD image resource // script de php.net lourdement corrig'e // (le bicubic deconnait completement, // et j'ai ajoute la ponderation par la distance au pixel) function _image_distance_pixel($xo, $yo, $x0, $y0) { $vx = $xo - $x0; $vy = $yo - $y0; $d = 1 - (sqrt(($vx)*($vx) + ($vy)*($vy)) / sqrt(2)); return $d; } /** * Decale une composante de couleur * entier de 0 a 255 * * @param int $coul * @param int $gamma * @return int */ function _image_decale_composante($coul, $gamma) { $coul = $coul + $gamma; if ($coul > 255) $coul = 255; if ($coul < 0) $coul = 0; return $coul; } /** * Decalage d'une composante de couleur en sepia * entier de 0 a 255 * * @param int $coul * @param int $val * @return int */ function _image_decale_composante_127($coul, $val) { if ($coul < 127) $y = round((($coul - 127) / 127) * $val) + $val; else if ($coul >= 127) $y = round((($coul - 127) / 128) * (255-$val)) + $val; else $y= $coul; if ($y < 0) $y = 0; if ($y > 255) $y = 255; return $y; } ?>filtres/couleurs.php000066600000011617151451631460010606 0ustar00 donc couleur foncee devient noire // et couleur claire devient blanche // -> la limite est une valeur de 0 a 255, permettant de regler le point limite entre le passage noir ou blanc $couleurs = _couleur_hex_to_dec($couleur); $red = $couleurs["red"]; $green = $couleurs["green"]; $blue = $couleurs["blue"]; /* $moyenne = round(($red+$green+$blue)/3); if ($moyenne > $limite) $couleur_texte = "ffffff"; else $couleur_texte = "000000"; */ include_spip('filtres/images_lib'); $hsl = _couleur_rgb2hsl ($red, $green, $blue); if ($hsl["l"] > $limite) $couleur_texte = "ffffff"; else $couleur_texte = "000000"; return $couleur_texte; } // http://doc.spip.org/@couleur_inverser function couleur_inverser ($couleur) { $couleurs = _couleur_hex_to_dec($couleur); $red = 255 - $couleurs["red"]; $green = 255 - $couleurs["green"]; $blue = 255 - $couleurs["blue"]; $couleur = _couleur_dec_to_hex($red, $green, $blue); return $couleur; } // http://doc.spip.org/@couleur_foncer_si_claire function couleur_foncer_si_claire ($couleur) { // ne foncer que les couleurs claires // utile pour ecrire sur fond blanc, // mais sans changer quand la couleur est deja foncee $couleurs = _couleur_hex_to_dec($couleur); $red = $couleurs["red"]; $green = $couleurs["green"]; $blue = $couleurs["blue"]; $moyenne = round(($red+$green+$blue)/3); if ($moyenne > 122) { include_spip("inc/filtres_images_mini"); return couleur_foncer($couleur); } else return $couleur; } // http://doc.spip.org/@couleur_eclaircir_si_foncee function couleur_eclaircir_si_foncee ($couleur) { $couleurs = _couleur_hex_to_dec($couleur); $red = $couleurs["red"]; $green = $couleurs["green"]; $blue = $couleurs["blue"]; $moyenne = round(($red+$green+$blue)/3); if ($moyenne < 123) { include_spip("inc/filtres_images_mini"); return couleur_eclaircir($couleur); } else return $couleur; } // http://doc.spip.org/@couleur_saturation function couleur_saturation($couleur, $val) { if ($couleur == "ffffff") $couleur = "eeeeee"; $couleurs = _couleur_hex_to_dec($couleur); $r= 255 - $couleurs["red"]; $g= 255 - $couleurs["green"]; $b= 255 - $couleurs["blue"]; $max = max($r,$g,$b); $r = 255 - $r / $max * 255 * $val; $g = 255 - $g / $max * 255 * $val; $b = 255 - $b / $max * 255 * $val; $couleur = _couleur_dec_to_hex($r, $g, $b); return $couleur; } // http://doc.spip.org/@couleur_luminance function couleur_luminance($couleur, $val) { include_spip('filtres/images_lib'); $couleurs = _couleur_hex_to_dec($couleur); $r= $couleurs["red"]; $g= $couleurs["green"]; $b= $couleurs["blue"]; // Cas etonnant: quand gris parfait, la correction de HSL ne fonctionne pas // en revanche, couleur_saturation retourne exactement la bonne valeur if ($r == $g && $g == $b) return couleur_saturation($couleur, $val); $couleur = _couleur_rgb2hsl($r, $g, $b); $h = $couleur["h"]; $s = $couleur["s"]; $l = $couleur["l"]; $rgb = _couleur_hsl2rgb ($h, $s, 1-$val); $r = $rgb["r"]; $g = $rgb["g"]; $b = $rgb["b"]; $retour = _couleur_dec_to_hex($r, $g, $b); return $retour; } ?>filtres/images_transforme.php000066600000132666151451631460012462 0ustar00> 24) & 0xFF; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $a = (127-$a) / 127; if ($a == 1) { // Limiter calculs $r = $r; $g = $g; $b = $b; } else if ($a == 0) { // Limiter calculs $r = $dr; $g = $dv; $b = $db; $transp_x = $x; // Memoriser un point transparent $transp_y = $y; } else { $r = round($a * $r + $dr * (1-$a)); $g = round($a * $g + $dv * (1-$a)); $b = round($a * $b + $db * (1-$a)); } $a = (1-$a) *127; $color = ImageColorAllocateAlpha( $im_, $r, $g, $b, $a); imagesetpixel ($im_, $x, $y, $color); } } // passer en palette si besoin if ($format=='gif' OR ($format=='png' AND $qualite!==0)){ // creer l'image finale a palette (on recycle l'image initiale) @imagetruecolortopalette($im,true,$qualite); //$im = imagecreate($x_i, $y_i); // copier l'image true color vers la palette imagecopy($im, $im_, 0, 0, 0, 0, $x_i, $y_i); // matcher les couleurs au mieux par rapport a l'image initiale // si la fonction est disponible (php>=4.3) if (function_exists('imagecolormatch')) @imagecolormatch($im_, $im); if ($format=='gif' && $transparence && $transp_x) { $color_t = ImagecolorAt( $im, $transp_x, $transp_y); if ($format == "gif" && $transparence) @imagecolortransparent($im, $color_t); } // produire le resultat _image_gd_output($im, $image, $qualite); } else _image_gd_output($im_, $image, $qualite); imagedestroy($im_); imagedestroy($im); } return _image_ecrire_tag($image,array('src'=>$dest)); } // Enregistrer une image dans un format donne // (conserve la transparence gif, png, ico) // utilise [->@image_aplatir] // http://doc.spip.org/@image_format function image_format($img, $format='png') { $qualite = null; if ($format=='png8') {$format='png';$qualite=128;} return image_aplatir($img, $format, 'cccccc', $qualite, true); } // Transforme l'image en PNG transparent // alpha = 0: aucune transparence // alpha = 127: completement transparent // http://doc.spip.org/@image_alpha function image_alpha($im, $alpha = 63) { $fonction = array('image_alpha', func_get_args()); $image = _image_valeurs_trans($im, "alpha-$alpha", "png",$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im2 = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im2, false); @imagesavealpha($im2,true); $color_t = ImageColorAllocateAlpha( $im2, 255, 255, 255 , 127 ); imagefill ($im2, 0, 0, $color_t); imagecopy($im2, $im, 0, 0, 0, 0, $x_i, $y_i); $im_ = imagecreatetruecolor($x_i, $y_i); imagealphablending ($im_, FALSE ); imagesavealpha ( $im_, TRUE ); for ($x = 0; $x < $x_i; $x++) { for ($y = 0; $y < $y_i; $y++) { $rgb = ImageColorAt($im2, $x, $y); if (function_exists('imagecolorallocatealpha')) { $a = ($rgb >> 24) & 0xFF; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $a_ = $alpha + $a - round($a*$alpha/127); $rgb = imagecolorallocatealpha($im_, $r, $g, $b, $a_); } imagesetpixel ( $im_, $x, $y, $rgb ); } } _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); imagedestroy($im2); } return _image_ecrire_tag($image,array('src'=>$dest)); } // http://doc.spip.org/@image_recadre function image_recadre($im,$width,$height,$position='center', $background_color='white') { $fonction = array('image_recadre', func_get_args()); $image = _image_valeurs_trans($im, "recadre-$width-$height-$position-$background_color",false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; if ($width==0) $width=$x_i; if ($height==0) $height=$y_i; $offset_width = $x_i-$width; $offset_height = $y_i-$height; $position=strtolower($position); if (strpos($position,'left')!==FALSE){ if (preg_match(';left=(\d{1}\d+);', $position, $left)){ $offset_width=$left[1]; } else{ $offset_width=0; } } elseif (strpos($position,'right')!==FALSE) $offset_width=$offset_width; else $offset_width=intval(ceil($offset_width/2)); if (strpos($position,'top')!==FALSE){ if (preg_match(';top=(\d{1}\d+);', $position, $top)){ $offset_height=$top[1]; } else{ $offset_height=0; } } elseif (strpos($position,'bottom')!==FALSE) $offset_height=$offset_height; else $offset_height=intval(ceil($offset_height/2)); $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($width, $height); @imagealphablending($im_, false); @imagesavealpha($im_,true); if ($background_color=='transparent') $color_t = imagecolorallocatealpha( $im_, 255, 255, 255 , 127 ); else { $bg = _couleur_hex_to_dec($background_color); $color_t = imagecolorallocate( $im_, $bg['red'], $bg['green'], $bg['blue']); } imagefill ($im_, 0, 0, $color_t); imagecopy($im_, $im, max(0,-$offset_width), max(0,-$offset_height), max(0,$offset_width), max(0,$offset_height), min($width,$x_i), min($height,$y_i)); _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); } return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$width,'height'=>$height)); } /** * Recadrer une image dans le rectangle le plus petit possible sans perte * de pixels non transparent * * @param string $im * @return string */ function image_recadre_mini($im) { $fonction = array('image_recadre_mini', func_get_args()); $image = _image_valeurs_trans($im, "recadre_mini",false,$fonction); if (!$image) return(""); $width = $image["largeur"]; $height = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); // trouver le rectangle mini qui contient des infos de couleur // recherche optimisee qui ne balaye que par zone $min_x = $width; $min_y = $height; $max_y = $max_x = 0; $yy = 0; while ($yy<=$height/2 AND $max_y<=$min_y){ if($yy<$min_y) for ($xx = 0; $xx < $width; $xx++) { $color_index = imagecolorat($im, $xx, $yy); $color_tran = imagecolorsforindex($im, $color_index); if ($color_tran['alpha']!==127){ $min_y = min($yy,$min_y); $max_y = max($height-1-$yy,$max_y); break; } } if($height-1-$yy>$max_y) for ($xx = 0; $xx < $width; $xx++) { $color_index = imagecolorat($im, $xx, $height-1-$yy); $color_tran = imagecolorsforindex($im, $color_index); if ($color_tran['alpha']!==127){ $min_y = min($yy,$min_y); $max_y = max($height-1-$yy,$max_y); break; } } $yy++; } $min_y = min($max_y,$min_y); // tout a 0 aucun pixel trouve $xx = 0; while ($xx<=$width/2 AND $max_x<=$min_x){ if ($xx<$min_x) for ($yy = $min_y; $yy < $max_y; $yy++) { $color_index = imagecolorat($im, $xx, $yy); $color_tran = imagecolorsforindex($im, $color_index); if ($color_tran['alpha']!==127){ $min_x = min($xx,$min_x); $max_x = max($xx,$max_x); break; // inutile de continuer sur cette colonne } } if ($width-1-$xx>$max_x) for ($yy = $min_y; $yy < $max_y; $yy++) { $color_index = imagecolorat($im, $width-1-$xx, $yy); $color_tran = imagecolorsforindex($im, $color_index); if ($color_tran['alpha']!==127){ $min_x = min($width-1-$xx,$min_x); $max_x = max($width-1-$xx,$max_x); break; // inutile de continuer sur cette colonne } } $xx++; } $min_x = min($max_x,$min_x); // tout a 0 aucun pixel trouve $width = $max_x-$min_x+1; $height = $max_y-$min_y+1; $im_ = imagecreatetruecolor($width, $height); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = imagecolorallocatealpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); imagecopy($im_, $im, 0, 0, $min_x, $min_y, $width, $height); _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); } else { list ($height,$width) = taille_image($image['fichier_dest']); } return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$width,'height'=>$height)); } // http://doc.spip.org/@image_flip_vertical function image_flip_vertical($im) { $fonction = array('image_flip_vertical', func_get_args()); $image = _image_valeurs_trans($im, "flip_v", false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); for ($x = 0; $x < $x_i; $x++) { for ($y = 0; $y < $y_i; $y++) { imagecopy($im_, $im, $x_i - $x - 1, $y, $x, $y, 1, 1); } } _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); } return _image_ecrire_tag($image,array('src'=>$dest)); } // http://doc.spip.org/@image_flip_horizontal function image_flip_horizontal($im) { $fonction = array('image_flip_horizontal', func_get_args()); $image = _image_valeurs_trans($im, "flip_h",false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); for ($x = 0; $x < $x_i; $x++) { for ($y = 0; $y < $y_i; $y++) { imagecopy($im_, $im, $x, $y_i - $y - 1, $x, $y, 1, 1); } } _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); } return _image_ecrire_tag($image,array('src'=>$dest)); } // http://doc.spip.org/@image_masque function image_masque($im, $masque, $pos="") { // Passer, en plus de l'image d'origine, // une image de "masque": un fichier PNG24 transparent. // Le decoupage se fera selon la transparence du "masque", // et les couleurs seront eclaircies/foncees selon de couleur du masque. // Pour ne pas modifier la couleur, le masque doit etre en gris 50%. // // Si l'image source est plus grande que le masque, alors cette image est reduite a la taille du masque. // Sinon, c'est la taille de l'image source qui est utilisee. // // $pos est une variable libre, qui permet de passer left=..., right=..., bottom=..., top=... // dans ce cas, le pasque est place a ces positions sur l'image d'origine, // et evidemment cette image d'origine n'est pas redimensionnee // // Positionnement horizontal: text-align=left, right, center // Positionnement vertical : vertical-align: top, bottom, middle // (les positionnements left, right, top, left sont relativement inutiles, mais coherence avec CSS) // // Choix du mode de fusion: mode=masque, normal, eclaircir, obscurcir, produit, difference // masque: mode par defaut // normal: place la nouvelle image par dessus l'ancienne // eclaircir: place uniquement les points plus clairs // obscurcir: place uniquement les points plus fonc'es // produit: multiplie par le masque (points noirs rendent l'image noire, points blancs ne changent rien) // difference: remplit avec l'ecart entre les couleurs d'origine et du masque $mode = "masque"; $numargs = func_num_args(); $arg_list = func_get_args(); $texte = $arg_list[0]; for ($i = 1; $i < $numargs; $i++) { if ( ($p = strpos($arg_list[$i],"=")) !==false) { $nom_variable = substr($arg_list[$i], 0, $p); $val_variable = substr($arg_list[$i], $p+1); $variable["$nom_variable"] = $val_variable; $defini["$nom_variable"] = 1; } } if ($defini["mode"]) $mode = $variable["mode"]; $masque = find_in_path($masque); $pos = md5(serialize($variable).@filemtime($masque)); $fonction = array('image_masque', func_get_args()); $image = _image_valeurs_trans($im, "masque-$masque-$pos", "png",$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($defini["right"] OR $defini["left"] OR $defini["bottom"] OR $defini["top"] OR $defini["text-align"] OR $defini["vertical-align"]) { $placer = true; } else $placer = false; if ($creer) { $mask = _image_valeurs_trans($masque,""); if (!is_array($mask)) return(""); $im_m = $mask["fichier"]; $x_m = $mask["largeur"]; $y_m = $mask["hauteur"]; $im2 = $mask["fonction_imagecreatefrom"]($masque); if ($mask["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { $im2_ = imagecreatetruecolor($x_m, $y_m); // Si un GIF est transparent, // fabriquer un PNG transparent // Conserver la transparence if (function_exists("imageAntiAlias")) imageAntiAlias($im2_,true); @imagealphablending($im2_, false); @imagesavealpha($im2_,true); @ImageCopyResampled($im2_, $im2, 0, 0, 0, 0, $x_m, $y_m, $x_m, $y_m); imagedestroy($im2); $im2 = $im2_; } if ($placer) { // On fabriquer une version "agrandie" du masque, // aux dimensions de l'image source // et on "installe" le masque dans cette image // ainsi: aucun redimensionnement $dx = 0; $dy = 0; if ($defini["right"]) { $right = $variable["right"]; $dx = ($x_i - $x_m) - $right; } if ($defini["bottom"]) { $bottom = $variable["bottom"]; $dy = ($y_i - $y_m) - $bottom; } if ($defini["top"]) { $top = $variable["top"]; $dy = $top; } if ($defini["left"]) { $left = $variable["left"]; $dx = $left; } if ($defini["text-align"]) { $align = $variable["text-align"]; if ($align == "right") { $right = 0; $dx = ($x_i - $x_m); } else if ($align == "left") { $left = 0; $dx = 0; } else if ($align = "center") { $dx = round( ($x_i - $x_m) / 2 ) ; } } if ($defini["vertical-align"]) { $valign = $variable["vertical-align"]; if ($valign == "bottom") { $bottom = 0; $dy = ($y_i - $y_m); } else if ($valign == "top") { $top = 0; $dy = 0; } else if ($valign = "middle") { $dy = round( ($y_i - $y_m) / 2 ) ; } } $im3 = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im3, false); @imagesavealpha($im3,true); if ($mode == "masque") $color_t = ImageColorAllocateAlpha( $im3, 128, 128, 128 , 0 ); else $color_t = ImageColorAllocateAlpha( $im3, 128, 128, 128 , 127 ); imagefill ($im3, 0, 0, $color_t); imagecopy ( $im3, $im2, $dx, $dy, 0, 0, $x_m, $y_m); imagedestroy($im2); $im2 = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im2, false); @imagesavealpha($im2,true); imagecopy ( $im2, $im3, 0, 0, 0, 0, $x_i, $y_i); imagedestroy($im3); $x_m = $x_i; $y_m = $y_i; } $rapport = $x_i / $x_m; if (($y_i / $y_m) < $rapport ) { $rapport = $y_i / $y_m; } $x_d = ceil($x_i / $rapport); $y_d = ceil($y_i / $rapport); if ($x_i < $x_m OR $y_i < $y_m) { $x_dest = $x_i; $y_dest = $y_i; $x_dec = 0; $y_dec = 0; } else { $x_dest = $x_m; $y_dest = $y_m; $x_dec = round(($x_d - $x_m) /2); $y_dec = round(($y_d - $y_m) /2); } $nouveau = _image_valeurs_trans(image_reduire($im, $x_d, $y_d),""); if (!is_array($nouveau)) return(""); $im_n = $nouveau["fichier"]; $im = $nouveau["fonction_imagecreatefrom"]($im_n); imagepalettetotruecolor($im); if ($nouveau["format_source"] == "gif" AND function_exists('ImageCopyResampled')) { $im_ = imagecreatetruecolor($x_dest, $y_dest); // Si un GIF est transparent, // fabriquer un PNG transparent // Conserver la transparence if (function_exists("imageAntiAlias")) imageAntiAlias($im_,true); @imagealphablending($im_, false); @imagesavealpha($im_,true); @ImageCopyResampled($im_, $im, 0, 0, 0, 0, $x_dest, $y_dest, $x_dest, $y_dest); imagedestroy($im); $im = $im_; } $im_ = imagecreatetruecolor($x_dest, $y_dest); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); for ($x = 0; $x < $x_dest; $x++) { for ($y=0; $y < $y_dest; $y++) { $rgb = ImageColorAt($im2, $x, $y); $a = ($rgb >> 24) & 0xFF; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $rgb2 = ImageColorAt($im, $x+$x_dec, $y+$y_dec); $a2 = ($rgb2 >> 24) & 0xFF; $r2 = ($rgb2 >> 16) & 0xFF; $g2 = ($rgb2 >> 8) & 0xFF; $b2 = $rgb2 & 0xFF; if ($mode == "normal") { $v = (127 - $a) / 127; if ($v == 1) { $r_ = $r; $g_ = $g; $b_ = $b; } else { $v2 = (127 - $a2) / 127; if ($v+$v2 == 0) { $r_ = $r2; $g_ = $g2; $b_ = $b2; } else if ($v2 ==0) { $r_ = $r; $g_ = $g; $b_ = $b; } else if ($v == 0) { $r_ = $r2; $g_ = $g2; $b_ = $b2; }else { $r_ = $r + (($r2 - $r) * $v2 * (1 - $v)); $g_ = $g + (($g2 - $g) * $v2 * (1 - $v)); $b_ = $b + (($b2 - $b) * $v2 * (1 - $v)); } } $a_ = min($a,$a2); } elseif ($mode == "produit" OR $mode == "difference") { if ($mode == "produit") { $r = ($r/255) * $r2; $g = ($g/255) * $g2; $b = ($b/255) * $b2; } else if ($mode == "difference") { $r = abs($r-$r2); $g = abs($g-$g2); $b = abs($b-$b2); } $r = max(0, min($r, 255)); $g = max(0, min($g, 255)); $b = max(0, min($b, 255)); $v = (127 - $a) / 127; if ($v == 1) { $r_ = $r; $g_ = $g; $b_ = $b; } else { $v2 = (127 - $a2) / 127; if ($v+$v2 == 0) { $r_ = $r2; $g_ = $g2; $b_ = $b2; } else { $r_ = $r + (($r2 - $r) * $v2 * (1 - $v)); $g_ = $g + (($g2 - $g) * $v2 * (1 - $v)); $b_ = $b + (($b2 - $b) * $v2 * (1 - $v)); } } $a_ = $a2; } elseif ($mode == "eclaircir" OR $mode == "obscurcir") { $v = (127 - $a) / 127; if ($v == 1) { $r_ = $r; $g_ = $g; $b_ = $b; } else { $v2 = (127 - $a2) / 127; if ($v+$v2 == 0) { $r_ = $r2; $g_ = $g2; $b_ = $b2; } else { $r_ = $r + (($r2 - $r) * $v2 * (1 - $v)); $g_ = $g + (($g2 - $g) * $v2 * (1 - $v)); $b_ = $b + (($b2 - $b) * $v2 * (1 - $v)); } } if ($mode == "eclaircir") { $r_ = max ($r_, $r2); $g_ = max ($g_, $g2); $b_ = max ($b_, $b2); } else { $r_ = min ($r_, $r2); $g_ = min ($g_, $g2); $b_ = min ($b_, $b2); } $a_ = min($a,$a2); } else { $r_ = $r2 + 1 * ($r - 127); $r_ = max(0, min($r_, 255)); $g_ = $g2 + 1 * ($g - 127); $g_ = max(0, min($g_, 255)); $b_ = $b2 + 1 * ($b - 127); $b_ = max(0, min($b_, 255)); $a_ = $a + $a2 - round($a*$a2/127); } $color = ImageColorAllocateAlpha( $im_, $r_, $g_, $b_ , $a_ ); imagesetpixel ($im_, $x, $y, $color); } } _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); imagedestroy($im2); } $x_dest = largeur($dest); $y_dest = hauteur($dest); return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$x_dest,'height'=>$y_dest)); } // Passage de l'image en noir et blanc // un noir & blanc "photo" n'est pas "neutre": les composantes de couleur sont // ponderees pour obtenir le niveau de gris; // on peut ici regler cette ponderation en "pour mille" // http://doc.spip.org/@image_nb function image_nb($im, $val_r = 299, $val_g = 587, $val_b = 114) { $fonction = array('image_nb', func_get_args()); $image = _image_valeurs_trans($im, "nb-$val_r-$val_g-$val_b",false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; // Methode precise // resultat plus beau, mais tres lourd // Et: indispensable pour preserver transparence! if ($creer) { // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); imagecopy($im_, $im, 0, 0, 0, 0, $x_i, $y_i); for ($x = 0; $x < $x_i; $x++) { for ($y=0; $y < $y_i; $y++) { $rgb = ImageColorAt($im_, $x, $y); $a = ($rgb >> 24) & 0xFF; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $c = round(($val_r * $r / 1000) + ($val_g * $g / 1000) + ($val_b * $b / 1000)); if ($c < 0) $c = 0; if ($c > 254) $c = 254; $color = ImageColorAllocateAlpha( $im_, $c, $c, $c , $a ); imagesetpixel ($im_, $x, $y, $color); } } _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); } return _image_ecrire_tag($image,array('src'=>$dest)); } // http://doc.spip.org/@image_flou function image_flou($im,$niveau=3) { // Il s'agit d'une modification du script blur qu'on trouve un peu partout: // + la transparence est geree correctement // + les dimensions de l'image sont augmentees pour flouter les bords $coeffs = array ( array ( 1), array ( 1, 1), array ( 1, 2, 1), array ( 1, 3, 3, 1), array ( 1, 4, 6, 4, 1), array ( 1, 5, 10, 10, 5, 1), array ( 1, 6, 15, 20, 15, 6, 1), array ( 1, 7, 21, 35, 35, 21, 7, 1), array ( 1, 8, 28, 56, 70, 56, 28, 8, 1), array ( 1, 9, 36, 84, 126, 126, 84, 36, 9, 1), array ( 1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1), array ( 1, 11, 55, 165, 330, 462, 462, 330, 165, 55, 11, 1) ); $fonction = array('image_flou', func_get_args()); $image = _image_valeurs_trans($im, "flou-$niveau", false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $sum = pow (2, $niveau); $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; // Methode precise // resultat plus beau, mais tres lourd // Et: indispensable pour preserver transparence! if ($creer) { // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $temp1 = imagecreatetruecolor($x_i+$niveau, $y_i); $temp2 = imagecreatetruecolor($x_i+$niveau, $y_i+$niveau); @imagealphablending($temp1, false); @imagesavealpha($temp1,true); @imagealphablending($temp2, false); @imagesavealpha($temp2,true); for ($i = 0; $i < $x_i+$niveau; $i++) { for ($j=0; $j < $y_i; $j++) { $suma=0; $sumr=0; $sumg=0; $sumb=0; $sum = 0; $sum_ = 0; for ( $k=0 ; $k <= $niveau ; ++$k ) { $color = imagecolorat($im, $i_ = ($i-$niveau)+$k , $j); $a = ($color >> 24) & 0xFF; $r = ($color >> 16) & 0xFF; $g = ($color >> 8) & 0xFF; $b = ($color) & 0xFF; if ($i_ < 0 OR $i_ >= $x_i) $a = 127; $coef = $coeffs[$niveau][$k]; $suma += $a*$coef; $ac = ((127-$a) / 127); $ac = $ac*$ac; $sumr += $r * $coef * $ac; $sumg += $g * $coef * $ac; $sumb += $b * $coef * $ac; $sum += $coef * $ac; $sum_ += $coef; } if ($sum > 0) $color = ImageColorAllocateAlpha ($temp1, $sumr/$sum, $sumg/$sum, $sumb/$sum, $suma/$sum_); else $color = ImageColorAllocateAlpha ($temp1, 255, 255, 255, 127); imagesetpixel($temp1,$i,$j,$color); } } imagedestroy($im); for ($i = 0; $i < $x_i+$niveau; $i++) { for ($j=0; $j < $y_i+$niveau; $j++) { $suma=0; $sumr=0; $sumg=0; $sumb=0; $sum = 0; $sum_ = 0; for ( $k=0 ; $k <= $niveau ; ++$k ) { $color = imagecolorat($temp1, $i, $j_ = $j-$niveau+$k); $a = ($color >> 24) & 0xFF; $r = ($color >> 16) & 0xFF; $g = ($color >> 8) & 0xFF; $b = ($color) & 0xFF; if ($j_ < 0 OR $j_ >= $y_i) $a = 127; $suma += $a*$coeffs[$niveau][$k]; $ac = ((127-$a) / 127); $sumr += $r * $coeffs[$niveau][$k] * $ac; $sumg += $g * $coeffs[$niveau][$k] * $ac; $sumb += $b * $coeffs[$niveau][$k] * $ac; $sum += $coeffs[$niveau][$k] * $ac; $sum_ += $coeffs[$niveau][$k]; } if ($sum > 0) $color = ImageColorAllocateAlpha ($temp2, $sumr/$sum, $sumg/$sum, $sumb/$sum, $suma/$sum_); else $color = ImageColorAllocateAlpha ($temp2, 255, 255, 255, 127); imagesetpixel($temp2,$i,$j,$color); } } _image_gd_output($temp2,$image); imagedestroy($temp1); imagedestroy($temp2); } return _image_ecrire_tag($image,array('src'=>$dest,'width'=>($x_i+$niveau),'height'=>($y_i+$niveau))); } // http://doc.spip.org/@image_RotateBicubic function image_RotateBicubic($src_img, $angle, $bicubic=0) { include_spip('filtres/images_lib'); if (round($angle/90)*90 == $angle) { $droit = true; if (round($angle/180)*180 == $angle) $rot = 180; else $rot = 90; } else $droit = false; // convert degrees to radians $angle = $angle + 180; $angle = deg2rad($angle); $src_x = imagesx($src_img); $src_y = imagesy($src_img); $center_x = floor(($src_x-1)/2); $center_y = floor(($src_y-1)/2); $cosangle = cos($angle); $sinangle = sin($angle); // calculer dimensions en simplifiant angles droits, ce qui evite "floutage" // des rotations a angle droit if (!$droit) { $corners=array(array(0,0), array($src_x,0), array($src_x,$src_y), array(0,$src_y)); foreach($corners as $key=>$value) { $value[0]-=$center_x; //Translate coords to center for rotation $value[1]-=$center_y; $temp=array(); $temp[0]=$value[0]*$cosangle+$value[1]*$sinangle; $temp[1]=$value[1]*$cosangle-$value[0]*$sinangle; $corners[$key]=$temp; } $min_x=1000000000000000; $max_x=-1000000000000000; $min_y=1000000000000000; $max_y=-1000000000000000; foreach($corners as $key => $value) { if($value[0]<$min_x) $min_x=$value[0]; if($value[0]>$max_x) $max_x=$value[0]; if($value[1]<$min_y) $min_y=$value[1]; if($value[1]>$max_y) $max_y=$value[1]; } $rotate_width=ceil($max_x-$min_x); $rotate_height=ceil($max_y-$min_y); } else { if ($rot == 180) { $rotate_height = $src_y; $rotate_width = $src_x; } else { $rotate_height = $src_x; $rotate_width = $src_y; } $bicubic = false; } $rotate=imagecreatetruecolor($rotate_width,$rotate_height); imagealphablending($rotate, false); imagesavealpha($rotate, true); $cosangle = cos($angle); $sinangle = sin($angle); // arrondir pour rotations angle droit (car cos et sin dans {-1,0,1}) if ($droit) { $cosangle = round($cosangle); $sinangle = round($sinangle); } $newcenter_x = ($rotate_width-1)/2; $newcenter_y = ($rotate_height-1)/2; for ($y = 0; $y < $rotate_height; $y++) { for ($x = 0; $x < $rotate_width; $x++) { // rotate... $old_x = ((($newcenter_x-$x) * $cosangle + ($newcenter_y-$y) * $sinangle)) + $center_x; $old_y = ((($newcenter_y-$y) * $cosangle - ($newcenter_x-$x) * $sinangle)) + $center_y; $old_x = ceil($old_x); $old_y = ceil($old_y); if ( $old_x >= 0 && $old_x < $src_x && $old_y >= 0 && $old_y < $src_y ) { if ($bicubic == true) { $xo = $old_x; $x0 = floor($xo); $x1 = ceil($xo); $yo = $old_y; $y0 = floor($yo); $y1 = ceil($yo); // on prend chaque point, mais on pondere en fonction de la distance $rgb = ImageColorAt($src_img, $x0, $y0); $a1 = ($rgb >> 24) & 0xFF; $r1 = ($rgb >> 16) & 0xFF; $g1 = ($rgb >> 8) & 0xFF; $b1 = $rgb & 0xFF; $d1 = _image_distance_pixel($xo, $yo, $x0, $y0); $rgb = ImageColorAt($src_img, $x1, $y0); $a2 = ($rgb >> 24) & 0xFF; $r2 = ($rgb >> 16) & 0xFF; $g2 = ($rgb >> 8) & 0xFF; $b2 = $rgb & 0xFF; $d2 = _image_distance_pixel($xo, $yo, $x1, $y0); $rgb = ImageColorAt($src_img,$x0, $y1); $a3 = ($rgb >> 24) & 0xFF; $r3 = ($rgb >> 16) & 0xFF; $g3 = ($rgb >> 8) & 0xFF; $b3 = $rgb & 0xFF; $d3 = _image_distance_pixel($xo, $yo, $x0, $y1); $rgb = ImageColorAt($src_img,$x1, $y1); $a4 = ($rgb >> 24) & 0xFF; $r4 = ($rgb >> 16) & 0xFF; $g4 = ($rgb >> 8) & 0xFF; $b4 = $rgb & 0xFF; $d4 = _image_distance_pixel($xo, $yo, $x1, $y1); $ac1 = ((127-$a1) / 127); $ac2 = ((127-$a2) / 127); $ac3 = ((127-$a3) / 127); $ac4 = ((127-$a4) / 127); // limiter impact des couleurs transparentes, // mais attention tout transp: division par 0 if ($ac1*$d1 + $ac2*$d2 + $ac3+$d3 + $ac4+$d4 > 0) { if ($ac1 > 0) $d1 = $d1 * $ac1; if ($ac2 > 0) $d2 = $d2 * $ac2; if ($ac3 > 0) $d3 = $d3 * $ac3; if ($ac4 > 0) $d4 = $d4 * $ac4; } $tot = $d1 + $d2 + $d3 + $d4; $r = round((($d1*$r1)+($d2*$r2)+($d3*$r3)+($d4*$r4))/$tot); $g = round((($d1*$g1+($d2*$g2)+$d3*$g3+$d4*$g4))/$tot); $b = round((($d1*$b1+($d2*$b2)+$d3*$b3+$d4*$b4))/$tot); $a = round((($d1*$a1+($d2*$a2)+$d3*$a3+$d4*$a4))/$tot); $color = imagecolorallocatealpha($src_img, $r,$g,$b,$a); } else { $color = imagecolorat($src_img, round($old_x), round($old_y)); } } else { // this line sets the background colour $color = imagecolorallocatealpha($src_img, 255, 255, 255, 127); } @imagesetpixel($rotate, $x, $y, $color); } } return $rotate; } // permet de faire tourner une image d'un angle quelconque // la fonction "crop" n'est pas implementee... // http://doc.spip.org/@image_rotation function image_rotation($im, $angle, $crop=false) { $fonction = array('image_rotation', func_get_args()); $image = _image_valeurs_trans($im, "rot-$angle-$crop", "png", $fonction); if (!$image) return(""); $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { $effectuer_gd = true; if(is_callable(array('Imagick','rotateImage'))){ $imagick = new Imagick(); $imagick->readImage($im); $imagick->rotateImage(new ImagickPixel('none'), $angle); $imagick->writeImage($dest); $effectuer_gd = false; } else if ($GLOBALS['meta']['image_process'] == "convert") { if (_CONVERT_COMMAND!='') { @define ('_CONVERT_COMMAND', 'convert'); @define ('_ROTATE_COMMAND', _CONVERT_COMMAND.' -background none -rotate %t %src %dest'); } else @define ('_ROTATE_COMMAND', ''); if (_ROTATE_COMMAND!=='') { $commande = str_replace( array('%t', '%src', '%dest'), array( $angle, escapeshellcmd($im), escapeshellcmd($dest) ), _ROTATE_COMMAND); spip_log($commande); exec($commande); if (file_exists($dest)) // precaution $effectuer_gd = false; } } // cette variante genere-t-elle un fond transparent // dans les coins vide issus de la rotation ? elseif (function_exists('imagick_rotate')) { $handle = imagick_readimage ($im); if ($handle && imagick_isopaqueimage( $handle )) { imagick_setfillcolor($handle, 'transparent'); imagick_rotate( $handle, $angle); imagick_writeimage( $handle, $dest); $effectuer_gd = false; } } if ($effectuer_gd) { // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im = image_RotateBicubic($im, $angle, true); _image_gd_output($im,$image); imagedestroy($im); } } list ($src_y,$src_x) = taille_image($dest); return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$src_x,'height'=>$src_y)); } // Permet d'appliquer un filtre php_imagick a une image // par exemple: [(#LOGO_ARTICLE|image_imagick{imagick_wave,20,60})] // liste des fonctions: http://www.linux-nantes.org/~fmonnier/doc/imagick/ // http://doc.spip.org/@image_imagick function image_imagick () { $tous = func_get_args(); $img = $tous[0]; $fonc = $tous[1]; $tous[0]=""; $tous_var = join($tous, "-"); $fonction = array('image_imagick', func_get_args()); $image = _image_valeurs_trans($img, "$tous_var", "png",$fonction); if (!$image) return(""); $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { if (function_exists($fonc)) { $handle = imagick_readimage ($im); $arr[0] = $handle; for ($i=2; $i < count($tous); $i++) $arr[] = $tous[$i]; call_user_func_array($fonc, $arr); // Creer image dans fichier temporaire, puis renommer vers "bon" fichier // de facon a eviter time_out pendant creation de l'image definitive $tmp = preg_replace(",[.]png$,i", "-tmp.png", $dest); imagick_writeimage( $handle, $tmp); rename($tmp, $dest); ecrire_fichier($dest.".src",serialize($image)); } } list ($src_y,$src_x) = taille_image($dest); return _image_ecrire_tag($image,array('src'=>$dest,'width'=>$src_x,'height'=>$src_y)); } // Permet de rendre une image // plus claire (gamma > 0) // ou plus foncee (gamma < 0) // http://doc.spip.org/@image_gamma function image_gamma($im, $gamma = 0){ include_spip('filtres/images_lib'); $fonction = array('image_gamma', func_get_args()); $image = _image_valeurs_trans($im, "gamma-$gamma",false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); imagecopy($im_, $im, 0, 0, 0, 0, $x_i, $y_i); for ($x = 0; $x < $x_i; $x++) { for ($y=0; $y < $y_i; $y++) { $rgb = ImageColorAt($im_, $x, $y); $a = ($rgb >> 24) & 0xFF; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $r = _image_decale_composante($r, $gamma); $g = _image_decale_composante($g, $gamma); $b = _image_decale_composante($b, $gamma); $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a ); imagesetpixel ($im_, $x, $y, $color); } } _image_gd_output($im_,$image); } return _image_ecrire_tag($image,array('src'=>$dest)); } // Passe l'image en "sepia" // On peut fixer les valeurs RGB // de la couleur "complementaire" pour forcer une dominante //function image_sepia($im, $dr = 137, $dv = 111, $db = 94) // http://doc.spip.org/@image_sepia function image_sepia($im, $rgb = "896f5e"){ include_spip('filtres/images_lib'); if (!function_exists("imagecreatetruecolor")) return $im; $couleurs = _couleur_hex_to_dec($rgb); $dr= $couleurs["red"]; $dv= $couleurs["green"]; $db= $couleurs["blue"]; $fonction = array('image_sepia', func_get_args()); $image = _image_valeurs_trans($im, "sepia-$dr-$dv-$db",false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); imagecopy($im_, $im, 0, 0, 0, 0, $x_i, $y_i); for ($x = 0; $x < $x_i; $x++) { for ($y=0; $y < $y_i; $y++) { $rgb = ImageColorAt($im_, $x, $y); $a = ($rgb >> 24) & 0xFF; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $r = round(.299 * $r + .587 * $g + .114 * $b); $g = $r; $b = $r; $r = _image_decale_composante_127($r, $dr); $g = _image_decale_composante_127($g, $dv); $b = _image_decale_composante_127($b, $db); $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a ); imagesetpixel ($im_, $x, $y, $color); } } _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); } return _image_ecrire_tag($image,array('src'=>$dest)); } // Renforcer la nettete d'une image // http://doc.spip.org/@image_renforcement function image_renforcement($im, $k=0.5) { $fonction = array('image_flou', func_get_args()); $image = _image_valeurs_trans($im, "renforcement-$k",false,$fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if ($creer) { $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im_ = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im_, false); @imagesavealpha($im_,true); $color_t = ImageColorAllocateAlpha( $im_, 255, 255, 255 , 127 ); imagefill ($im_, 0, 0, $color_t); for ($x = 0; $x < $x_i; $x++) { for ($y=0; $y < $y_i; $y++) { $rgb[1][0]=imagecolorat($im,$x,$y-1); $rgb[0][1]=imagecolorat($im,$x-1,$y); $rgb[1][1]=imagecolorat($im,$x,$y); $rgb[2][1]=imagecolorat($im,$x+1,$y); $rgb[1][2]=imagecolorat($im,$x,$y+1); if ($x-1 < 0) $rgb[0][1] = $rgb[1][1]; if ($y-1 < 0) $rgb[1][0] = $rgb[1][1]; if ($x+1 == $x_i) $rgb[2][1] = $rgb[1][1]; if ($y+1 == $y_i) $rgb[1][2] = $rgb[1][1]; $a = ($rgb[1][1] >> 24) & 0xFF; $r = -$k *(($rgb[1][0] >> 16) & 0xFF) + -$k *(($rgb[0][1] >> 16) & 0xFF) + (1+4*$k) *(($rgb[1][1] >> 16) & 0xFF) + -$k *(($rgb[2][1] >> 16) & 0xFF) + -$k *(($rgb[1][2] >> 16) & 0xFF) ; $g = -$k *(($rgb[1][0] >> 8) & 0xFF) + -$k *(($rgb[0][1] >> 8) & 0xFF) + (1+4*$k) *(($rgb[1][1] >> 8) & 0xFF) + -$k *(($rgb[2][1] >> 8) & 0xFF) + -$k *(($rgb[1][2] >> 8) & 0xFF) ; $b = -$k *($rgb[1][0] & 0xFF) + -$k *($rgb[0][1] & 0xFF) + (1+4*$k) *($rgb[1][1] & 0xFF) + -$k *($rgb[2][1] & 0xFF) + -$k *($rgb[1][2] & 0xFF) ; $r=min(255,max(0,$r)); $g=min(255,max(0,$g)); $b=min(255,max(0,$b)); $color = ImageColorAllocateAlpha( $im_, $r, $g, $b , $a ); imagesetpixel ($im_, $x, $y, $color); } } _image_gd_output($im_,$image); } return _image_ecrire_tag($image,array('src'=>$dest)); } // // alpha = 0: aucune transparence // alpha = 127: completement transparent /** * Transforme la couleur de fond de l'image en transparence * Le filtre ne g�re pas la notion de contiguite aux bords, et affectera tous les pixels de l'image dans la couleur visee * $background_color : couleur cible * $tolerance : distance L1 dans l'espace RGB des couleur autour de la couleur $background_color pour lequel la transparence sera appliquee * $alpha : transparence a appliquer pour les pixels de la couleur cibles avec la tolerance ci-dessus * $coeff_lissage : coeff applique a la tolerance pour determiner la decroissance de la transparence fonction de la distance L1 entre la couleur du pixel et la couleur cible * * @param string $im * @param string $background_color * @param int $tolerance * @param int $alpha * @param float $coeff_lissage * @return string */ function image_fond_transparent($im, $background_color, $tolerance=12, $alpha = 127, $coeff_lissage=7) { $fonction = array('image_fond_transparent', func_get_args()); $image = _image_valeurs_trans($im, "fond_transparent-$background_color-$tolerance-$coeff_lissage-$alpha", "png", $fonction); if (!$image) return(""); $x_i = $image["largeur"]; $y_i = $image["hauteur"]; $im = $image["fichier"]; $dest = $image["fichier_dest"]; $creer = $image["creer"]; if (true OR $creer) { $bg = _couleur_hex_to_dec($background_color); $bg_r = $bg['red']; $bg_g = $bg['green']; $bg_b = $bg['blue']; // Creation de l'image en deux temps // de facon a conserver les GIF transparents $im = $image["fonction_imagecreatefrom"]($im); imagepalettetotruecolor($im); $im2 = imagecreatetruecolor($x_i, $y_i); @imagealphablending($im2, false); @imagesavealpha($im2,true); $color_t = ImageColorAllocateAlpha( $im2, 255, 255, 255 , 127 ); imagefill ($im2, 0, 0, $color_t); imagecopy($im2, $im, 0, 0, 0, 0, $x_i, $y_i); $im_ = imagecreatetruecolor($x_i, $y_i); imagealphablending ($im_, FALSE ); imagesavealpha ( $im_, TRUE ); $color_f = ImageColorAllocateAlpha( $im_, 255, 255, 255 , $alpha ); for ($x = 0; $x < $x_i; $x++) { for ($y = 0; $y < $y_i; $y++) { $rgb = ImageColorAt($im2, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; if ((($d=abs($r-$bg_r)+abs($g-$bg_g)+abs($b-$bg_b))<=$tolerance)){ imagesetpixel ( $im_, $x, $y, $color_f ); } elseif ($tolerance AND $d<=($coeff_lissage+1)*$tolerance){ $transp = round($alpha*(1-($d-$tolerance)/($coeff_lissage*$tolerance))); $color_p = ImageColorAllocateAlpha( $im_, $r, $g, $b , $transp); imagesetpixel ( $im_, $x, $y, $color_p ); } else imagesetpixel ( $im_, $x, $y, $rgb ); } } _image_gd_output($im_,$image); imagedestroy($im_); imagedestroy($im); imagedestroy($im2); } return _image_ecrire_tag($image,array('src'=>$dest)); } ?> filtres/images_typo.php000066600000046020151451631460011261 0ustar00$lettre - $code"; if (($code >= 54928 && $code <= 56767) || ($code >= 15707294 && $code <= 15711164)) { $rtl = true; } else $rtl = false; if ($lettre == "٠" || $lettre == "١" || $lettre == "٢" || $lettre == "٣" || $lettre == "٤" || $lettre == "٥" || $lettre == "٦" || $lettre == "٧" || $lettre == "٨" || $lettre == "٩") $rtl = false; if ($ponctuation[$lettre]) { # le truc mega casse-gueule de l'inversion unicode: # traiter le sens de placement en fonction de la lettre precedente # (et non automatiquement le rtl_global) $rtl = $rtl_prec; if ($rtl) { switch ($lettre) { case "(": $lettre = ")"; break; case ")": $lettre = "("; break; case "«": $lettre = "»"; break; case "»": $lettre = "«"; break; case "“": $lettre = "”"; break; case "”": $lettre = "“"; break; } } } if ($rtl) $res = $lettre.$res; else $res = $res.$lettre; $rtl_prec = $rtl; } return $res; } // http://doc.spip.org/@rtl_visuel function rtl_visuel($texte, $rtl_global) { // hebreu + arabe: 54928 => 56767 // hebreu + presentation A: 15707294 => 15710140 // arabe presentation: 15708336 => 15711164 # echo hexdec("efb7bc"); // premiere passe pour determiner s'il y a du rtl // de facon a placer ponctuation et mettre les mots dans l'ordre $arabic_letters = array( array("ي", // lettre 0 "ﻱ", // isolee 1 "ﻳ", // debut 2 "ﻴ", // milieu 3 "ﻲ"), array("ب", // lettre 0 "ﺏ", // isolee 1 "ﺑ", // debut 2 "ﺒ", // milieu 3 "ﺐ"), array("ا", // lettre 0 "ا", // isolee 1 "ﺍ", // debut 2 "ﺍ", // milieu 3 "ﺎ"), array("إ", // lettre 0 "إ", // isolee 1 "إ", // debut 2 "ﺈ", // milieu 3 "ﺈ"), array("ل", // lettre 0 "ﻝ", // isolee 1 "ﻟ", // debut 2 "ﻠ", // milieu 3 "ﻞ"), array("خ", // lettre 0 "ﺥ", // isolee 1 "ﺧ", // debut 2 "ﺨ", // milieu 3 "ﺦ"), array("ج", // lettre 0 "ﺝ", // isolee 1 "ﺟ", // debut 2 "ﺠ", // milieu 3 "ﺞ"), array("س", // lettre 0 "ﺱ", // isolee 1 "ﺳ", // debut 2 "ﺴ", // milieu 3 "ﺲ"), array("ن", // lettre 0 "ﻥ", // isolee 1 "ﻧ", // debut 2 "ﻨ", // milieu 3 "ﻦ"), array("ش", // lettre 0 "ﺵ", // isolee 1 "ﺷ", // debut 2 "ﺸ", // milieu 3 "ﺶ"), array("ق", // lettre 0 "ﻕ", // isolee 1 "ﻗ", // debut 2 "ﻘ", // milieu 3 "ﻖ"), array("ح", // lettre 0 "ﺡ", // isolee 1 "ﺣ", // debut 2 "ﺤ", // milieu 3 "ﺢ"), array("م", // lettre 0 "ﻡ", // isolee 1 "ﻣ", // debut 2 "ﻤ", // milieu 3 "ﻢ"), array("ر", // lettre 0 "ر", // isolee 1 "ﺭ", // debut 2 "ﺮ", // milieu 3 "ﺮ"), array("ع", // lettre 0 "ع", // isolee 1 "ﻋ", // debut 2 "ﻌ", // milieu 3 "ﻊ"), array("و", // lettre 0 "و", // isolee 1 "ﻭ", // debut 2 "ﻮ", // milieu 3 "ﻮ"), array("ة", // lettre 0 "ة", // isolee 1 "ة", // debut 2 "ﺔ", // milieu 3 "ﺔ"), array("ف", // lettre 0 "ﻑ", // isolee 1 "ﻓ", // debut 2 "ﻔ", // milieu 3 "ﻒ"), array("ﻻ", // lettre 0 "ﻻ", // isolee 1 "ﻻ", // debut 2 "ﻼ", // milieu 3 "ﻼ"), array("ح", // lettre 0 "ﺡ", // isolee 1 "ﺣ", // debut 2 "ﺤ", // milieu 3 "ﺢ"), array("ت", // lettre 0 "ﺕ", // isolee 1 "ﺗ", // debut 2 "ﺘ", // milieu 3 "ﺖ"), array("ض", // lettre 0 "ﺽ", // isolee 1 "ﺿ", // debut 2 "ﻀ", // milieu 3 "ﺾ"), array("ك", // lettre 0 "ك", // isolee 1 "ﻛ", // debut 2 "ﻜ", // milieu 3 "ﻚ"), array("ه", // lettre 0 "ﻩ", // isolee 1 "ﻫ", // debut 2 "ﻬ", // milieu 3 "ﻪ"), array("ي", // lettre 0 "ي", // isolee 1 "ﻳ", // debut 2 "ﻴ", // milieu 3 "ﻲ"), array("ئ", // lettre 0 "ﺉ", // isolee 1 "ﺋ", // debut 2 "ﺌ", // milieu 3 "ﺊ"), array("ص", // lettre 0 "ﺹ", // isolee 1 "ﺻ", // debut 2 "ﺼ", // milieu 3 "ﺺ"), array("ث", // lettre 0 "ﺙ", // isolee 1 "ﺛ", // debut 2 "ﺜ", // milieu 3 "ﺚ"), array("ﻷ", // lettre 0 "ﻷ", // isolee 1 "ﻷ", // debut 2 "ﻸ", // milieu 3 "ﻸ"), array("د", // lettre 0 "ﺩ", // isolee 1 "ﺩ", // debut 2 "ﺪ", // milieu 3 "ﺪ"), array("ذ", // lettre 0 "ﺫ", // isolee 1 "ﺫ", // debut 2 "ﺬ", // milieu 3 "ﺬ"), array("ط", // lettre 0 "ﻁ", // isolee 1 "ﻃ", // debut 2 "ﻄ", // milieu 3 "ﻂ"), array("آ", // lettre 0 "آ", // isolee 1 "آ", // debut 2 "ﺂ", // milieu 3 "ﺂ"), array("أ", // lettre 0 "أ", // isolee 1 "أ", // debut 2 "ﺄ", // milieu 3 "ﺄ"), array("ؤ", // lettre 0 "ؤ", // isolee 1 "ؤ", // debut 2 "ﺆ", // milieu 3 "ﺆ"), array("ز", // lettre 0 "ز", // isolee 1 "ز", // debut 2 "ﺰ", // milieu 3 "ﺰ"), array("ظ", // lettre 0 "ظ", // isolee 1 "ﻇ", // debut 2 "ﻈ", // milieu 3 "ﻆ"), array("غ", // lettre 0 "غ", // isolee 1 "ﻏ", // debut 2 "ﻐ", // milieu 3 "ﻎ"), array("ى", // lettre 0 "ى", // isolee 1 "ﯨ", // debut 2 "ﯩ", // milieu 3 "ﻰ"), array("پ", // lettre 0 "پ", // isolee 1 "ﭘ", // debut 2 "ﭙ", // milieu 3 "ﭗ"), array("چ", // lettre 0 "چ", // isolee 1 "ﭼ", // debut 2 "ﭽ", // milieu 3 "ﭻ") ); if(init_mb_string() AND mb_regex_encoding() !== "UTF-8") echo "Attention: dans php.ini, il faut indiquer:
mbstring.internal_encoding = UTF-8"; $texte = explode(" ", $texte); foreach ($texte as $mot) { $res = ""; // Inserer des indicateurs de debut/fin $mot = "^".$mot."^"; $mot = preg_replace(", ,u", " ", $mot); $mot = preg_replace(",«,u", "«", $mot); $mot = preg_replace(",»,u", "»", $mot); // ponctuations $ponctuations = array("/", "-", "«","»", "“", "”", ",", ".", " ", ":", ";", "(", ")", "،", "؟", "?", "!"," "); foreach($ponctuations as $ponct) { $mot = str_replace("$ponct", "^$ponct^", $mot); } // lettres forcant coupure $mot = preg_replace(",ا,u", "ا^", $mot); $mot = preg_replace(",د,u", "د^", $mot); $mot = preg_replace(",أ,u", "أ^", $mot); $mot = preg_replace(",إ,u", "إ^", $mot); $mot = preg_replace(",أ,u", "أ^", $mot); $mot = preg_replace(",ر,u", "ر^", $mot); $mot = preg_replace(",ذ,u", "ذ^", $mot); $mot = preg_replace(",ز,u", "ز^", $mot); $mot = preg_replace(",و,u", "و^", $mot); $mot = preg_replace(",و,u", "و^", $mot); $mot = preg_replace(",ؤ,u", "ؤ^", $mot); $mot = preg_replace(",ة,u", "ة^", $mot); // $mot = preg_replace(",ل,u", "^ل", $mot); // $mot = preg_replace(",,", "^", $mot); $mot = preg_replace(",٠,u", "^٠^", $mot); $mot = preg_replace(",١,u", "^١^", $mot); $mot = preg_replace(",٢,u", "^٢^", $mot); $mot = preg_replace(",٣,u", "^٣^", $mot); $mot = preg_replace(",٤,u", "^٤^", $mot); $mot = preg_replace(",٥,u", "^٥^", $mot); $mot = preg_replace(",٦,u", "^٦^", $mot); $mot = preg_replace(",٧,u", "^٧^", $mot); $mot = preg_replace(",٨,u", "^٨^", $mot); $mot = preg_replace(",٩,u", "^٩^", $mot); // Ligatures $mot = preg_replace(",لا,u", "ﻻ", $mot); $mot = preg_replace(",لأ,u", "ﻷ", $mot); foreach ($arabic_letters as $a_l) { $mot = preg_replace(",([^\^])".$a_l[0]."([^\^]),u", "\\1".$a_l[3]."\\2", $mot); $mot = preg_replace(",\^".$a_l[0]."([^\^]),u", "^".$a_l[2]."\\1", $mot); $mot = preg_replace(",([^\^])".$a_l[0]."\^,u", "\\1".$a_l[4]."^", $mot); // il semble qu'il ne soit pas necessaire de remplacer // la lettre isolee // $mot = preg_replace(",\^".$a_l[0]."\^,u", "^".$a_l[1]."^", $mot); } $mot = preg_replace(",\^,u", "", $mot); $res = $mot; $res = rtl_reverse($mot, $rtl_global); /* $rtl = false; for ($i = 0; $i < spip_strlen($mot); $i++) { $lettre = spip_substr($mot, $i, 1); $code = rtl_mb_ord($lettre); if (($code >= 54928 && $code <= 56767) || ($code >= 15708336 && $code <= 15711164)) $rtl = true; } */ if ($rtl_global) $retour = $res . " " . $retour; else $retour = $retour. " ".$res; } return $retour; } // http://doc.spip.org/@printWordWrapped function printWordWrapped($image, $top, $left, $maxWidth, $font, $couleur, $text, $textSize, $align="left", $hauteur_ligne = 0) { static $memps = array(); // imageftbbox exige un float, et settype aime le double pour php < 4.2.0 settype($textSize, 'double'); // calculer les couleurs ici, car fonctionnement different selon TTF ou PS $black = imagecolorallocatealpha($image, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 0); $grey2 = imagecolorallocatealpha($image, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 127); // Gaffe, T1Lib ne fonctionne carrement pas bien des qu'on sort de ASCII // C'est dommage, parce que la rasterisation des caracteres est autrement plus jolie qu'avec TTF. // A garder sous le coude en attendant que ca ne soit plus une grosse bouse. // Si police Postscript et que fonction existe... if ( false AND strtolower(substr($font,-4)) == ".pfb" AND function_exists("imagepstext")) { // Traitement specifique pour polices PostScript (experimental) $textSizePs = round(1.32 * $textSize); if (!$fontps = $memps["$font"]) { $fontps = imagepsloadfont($font); // Est-ce qu'il faut reencoder? Pas testable proprement, alors... // imagepsencodefont($fontps,find_in_path('polices/standard.enc')); $memps["$font"] = $fontps; } } $rtl_global = false; for ($i = 0; $i < spip_strlen($text); $i++) { $lettre = spip_substr($text, $i, 1); $code = rtl_mb_ord($lettre); if (($code >= 54928 && $code <= 56767) || ($code >= 15707294 && $code <= 15711164)) { $rtl_global = true; } } // split the text into an array of single words $words = explode(' ', $text); // les espaces foreach($words as $k=>$v) $words[$k] = str_replace(array('~'), array(' '), $v); if ($hauteur_ligne == 0) $lineHeight = floor($textSize * 1.3); else $lineHeight = $hauteur_ligne; $dimensions_espace = imageftbbox($textSize, 0, $font, ' ', array()); if ($dimensions_espace[2] < 0) $dimensions_espace = imageftbbox($textSize, 0, $font, $line, array()); $largeur_espace = $dimensions_espace[2] - $dimensions_espace[0]; $retour["espace"] = $largeur_espace; $line = ''; while (count($words) > 0) { $mot = $words[0]; if ($rtl_global) $mot = rtl_visuel($mot,$rtl_global); $dimensions = imageftbbox($textSize, 0, $font, $line.' '.$mot, array()); $lineWidth = $dimensions[2] - $dimensions[0]; // get the length of this line, if the word is to be included if ($lineWidth > $maxWidth) { // if this makes the text wider that anticipated $lines[] = $line; // add the line to the others $line = ''; // empty it (the word will be added outside the loop) } $line .= ' '.$words[0]; // add the word to the current sentence $words = array_slice($words, 1); // remove the word from the array } if ($line != '') { $lines[] = $line; } // add the last line to the others, if it isn't empty $height = count($lines) * $lineHeight; // the height of all the lines total // do the actual printing $i = 0; // Deux passes pour recuperer, d'abord, largeur_ligne // necessaire pour alignement right et center foreach ($lines as $line) { if ($rtl_global) $line = rtl_visuel($line, $rtl_global); $dimensions = imageftbbox($textSize, 0, $font, $line, array()); $largeur_ligne = $dimensions[2] - $dimensions[0]; if ($largeur_ligne > $largeur_max) $largeur_max = $largeur_ligne; } foreach ($lines as $i => $line) { if ($rtl_global) $line = rtl_visuel($line, $rtl_global); $dimensions = imageftbbox($textSize, 0, $font, $line, array()); $largeur_ligne = $dimensions[2] - $dimensions[0]; if ($align == "right") $left_pos = $largeur_max - $largeur_ligne; else if ($align == "center") $left_pos = floor(($largeur_max - $largeur_ligne)/2); else $left_pos = 0; if ($fontps) { $line = trim($line); imagepstext ($image, "$line", $fontps, $textSizePs, $black, $grey2, $left + $left_pos, $top + $lineHeight * $i, 0, 0, 0, 16); } else imagefttext($image, $textSize, 0, $left + $left_pos, $top + $lineHeight * $i, $black, $font, trim($line), array()); } $retour["height"] = $height;# + round(0.3 * $hauteur_ligne); $retour["width"] = $largeur_max; return $retour; } //array imagefttext ( resource image, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo] ) //array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text ) // http://doc.spip.org/@produire_image_typo function produire_image_typo() { /* arguments autorises: $texte : le texte a transformer; attention: c'est toujours le premier argument, et c'est automatique dans les filtres $couleur : la couleur du texte dans l'image - pas de dieze $police: nom du fichier de la police (inclure terminaison) $largeur: la largeur maximale de l'image ; attention, l'image retournee a une largeur inferieure, selon les limites reelles du texte $hauteur_ligne: la hauteur de chaque ligne de texte si texte sur plusieurs lignes (equivalent a "line-height") $padding: forcer de l'espace autour du placement du texte; necessaire pour polices a la con qui "depassent" beaucoup de leur boite $padding_vertical: forcer de l'espace autour du placement du texte en vertical; necessaire pour polices a la con qui "depassent" beaucoup de leur boite $padding_horizontal: forcer de l'espace autour du placement du texte en horizontal; necessaire pour polices a la con qui "depassent" beaucoup de leur boite $align: alignement left, right, center */ // Recuperer les differents arguments $numargs = func_num_args(); $arg_list = func_get_args(); $texte = $arg_list[0]; for ($i = 1; $i < $numargs; $i++) { if (($p = strpos($arg_list[$i], "="))!==FALSE) { $nom_variable = substr($arg_list[$i], 0, $p); $val_variable = substr($arg_list[$i], $p+1); $variable["$nom_variable"] = $val_variable; } } // Construire requete et nom fichier $text = str_replace(" ", "~", $texte); $text = preg_replace(",(\r|\n)+,ms", " ", $text); include_spip('inc/charsets'); $text = html2unicode(strip_tags($text)); if (strlen($text) == 0) return ""; $taille = $variable["taille"]; if ($taille < 1) $taille = 16; $couleur = couleur_html_to_hex($variable["couleur"]); if (strlen($couleur) < 6) $couleur = "000000"; $alt = $texte; $align = $variable["align"]; if (!$variable["align"]) $align="left"; $police = $variable["police"]; if (strlen($police) < 2) $police = "dustismo.ttf"; $largeur = $variable["largeur"]; if ($largeur < 5) $largeur = 600; if ($variable["hauteur_ligne"] > 0) $hauteur_ligne = $variable["hauteur_ligne"]; else $hauteur_ligne = 0; if ($variable["padding"] > 0) $padding = $variable["padding"]; else $padding = 0; if ($variable["padding_vertical"] > 0) $padding_vertical = $variable["padding_vertical"]; else $padding_vertical = 0; if ($variable["padding_horizontal"] > 0) $padding_horizontal = $variable["padding_horizontal"]; else $padding_horizontal = 0; if ($padding_horizontal == 0 AND $padding_vertical == 0 AND $padding > 0) { $padding_horizontal = $padding; $padding_vertical = $padding; } $string = "$text-$taille-$couleur-$align-$police-$largeur-$hauteur_ligne-$padding-$padding_vertical-$padding_horizontal"; $query = md5($string); $dossier = sous_repertoire(_DIR_VAR, 'cache-texte'); $fichier = "$dossier$query.png"; $flag_gd_typo = function_exists("imageftbbox") && function_exists('imageCreateTrueColor'); if (@file_exists($fichier)) $image = $fichier; else if (!$flag_gd_typo) return $texte; else { $font = find_in_path('polices/'.$police); if (!$font) { spip_log(_T('fichier_introuvable', array('fichier' => $police))); $font = find_in_path('polices/'."dustismo.ttf"); } $imgbidon = imageCreateTrueColor($largeur, 45); $retour = printWordWrapped($imgbidon, $taille+5, 0, $largeur, $font, $couleur, $text, $taille, 'left', $hauteur_ligne); $hauteur = $retour["height"]; $largeur_reelle = $retour["width"]; $espace = $retour["espace"]; imagedestroy($imgbidon); $im = imageCreateTrueColor($largeur_reelle-$espace+(2*$padding_horizontal), $hauteur+5+(2*$padding_vertical)); imagealphablending ($im, FALSE ); imagesavealpha ( $im, TRUE ); // Creation de quelques couleurs $grey2 = imagecolorallocatealpha($im, hexdec("0x{".substr($couleur, 0,2)."}"), hexdec("0x{".substr($couleur, 2,2)."}"), hexdec("0x{".substr($couleur, 4,2)."}"), 127); ImageFilledRectangle ($im,0,0,$largeur_reelle+(2*$padding_horizontal),$hauteur+5+(2*$padding_vertical),$grey2); // Le texte a dessiner printWordWrapped($im, $taille+5+$padding_vertical, $padding_horizontal, $largeur, $font, $couleur, $text, $taille, $align, $hauteur_ligne); // Utiliser imagepng() donnera un texte plus claire, // compare a l'utilisation de la fonction imagejpeg() _image_gd_output($im,array('fichier_dest'=>$fichier,'format_dest'=>'png')); imagedestroy($im); $image = $fichier; } $dimensions = getimagesize($image); $largeur = $dimensions[0]; $hauteur = $dimensions[1]; return inserer_attribut("", 'alt', $alt); } ?> images_fonctions.php000066600000007766151451631460010636 0ustar00 image $GLOBALS['spip_matrice']['image_recadre'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_recadre_mini'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_alpha'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_flip_vertical'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_flip_horizontal'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_masque'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_nb'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_flou'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_RotateBicubic'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_rotation'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_gamma'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_sepia'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_aplatir'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_format'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_renforcement'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_imagick'] = 'filtres/images_transforme.php'; $GLOBALS['spip_matrice']['image_fond_transparent'] = 'filtres/images_transforme.php'; // Filtres couleur -> couleur $GLOBALS['spip_matrice']['couleur_extraire'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_extreme'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_inverser'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_foncer_si_claire'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_eclaircir_si_foncee'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_saturation'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_luminance'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_web'] = 'filtres/couleurs.php'; $GLOBALS['spip_matrice']['couleur_4096'] = 'filtres/couleurs.php'; // ces filtres la ne devraient jamais etre appeles dans les squelettes en direct // et n'ont rien a faire dans la matrice /* $GLOBALS['spip_matrice']['_image_couleur_extraire'] = 'filtres/images_lib.php'; $GLOBALS['spip_matrice']['_couleur_dec_to_hex'] = 'filtres/images_lib.php'; $GLOBALS['spip_matrice']['_couleur_hex_to_dec'] = 'filtres/images_lib.php'; $GLOBALS['spip_matrice']['_image_distance_pixel'] = 'filtres/images_lib.php'; $GLOBALS['spip_matrice']['_image_decale_composante'] = 'filtres/images_lib.php'; $GLOBALS['spip_matrice']['_image_decale_composante_127'] = 'filtres/images_lib.php'; */ /** * Nommages maintenus pour compatibilite. */ /** * Extraire une couleur d'une image * * @param string $img * @param int $x * @param int $y * @return string */ function extraire_image_couleur($img, $x=10, $y=6) { include_spip('filtres/images_lib'); return _image_couleur_extraire($img, $x, $y); } /** * creer une image typo * * @return string */ function image_typo() { include_spip('filtres/images_typo'); $tous = func_get_args(); return call_user_func_array('produire_image_typo', $tous); } ?>favicon.ico.html000066600000000370151451631460007642 0ustar00#HTTP_HEADER{Content-Type: image/x-icon} [(#CHEMIN{favicon.ico}|sinon{[(#LOGO_SITE_SPIP |image_passe_partout{32,32} |image_recadre{32,32,center} |image_format{ico}|extraire_attribut{src} )]}|sinon{#CHEMIN{spip.ico}} |spip_file_get_contents)] images/image_filtre-32.png000066600000010536151451631460011407 0ustar00PNG  IHDR szzgAMA|Q =iCCPiccxڝSgTS=BKKoR RBTi@숨"q"Ay((6T}7o9g}>F`DdJ<6.'w T @- m@n8P $ B2r22 t%[j;eOv$(S*@@&X`(ʑs`̔`)d` SGE3(xW\!Sd咔Tn!\]x87CP؄ ee3FvD9;:;8:|?E񋖴e /B_TBfgk+ m_ _׃  2r<[&q?.wL'bPGKĹi ˒$ IHk`~B[P. %w߂1w0hْ 4P6h>؀#;x̆P8XBHLC.,UP%BZF8-p<^0 o`A2DX6b"ֈ#Ef!~H0!H "ERd5R#U^9E.!==F~C>@٨jڡ\ Bh G h%ZBѳڋ>G03l0.Bx,c˱b6b#{";!0 $,",'̈́ Ba$nD>1B%+uc[!\H8Ri D:C!d6ٚA% ry;4:yBP)xR@\ RƩjTS5*.Qkmԫ8MfNEhhFyC+:nDw%JaEz=Ca1J~=+&ib3 z9c; _EBZY U| գWUGԨjfj<5rjjwY/i544D4i01VjYYlۜgK߱٣34545Ojr0qpns>Lћ=Ejkh4km8ndn4ר1͘klŸx$dI}S)4ti[3sf-fCZ||L OE57-I\t˝׬P+'Tj֨zu44ii50lmrlll9-/L6u}wϰ0ۡ7G+GcWLor ]3:B:;}rvq;7:$pesø܋DW'\߻9)܎n~}hLڙFY4xx>2yy z[zy~c#9[;vi{o?$L 10(pS_ȯvlvG#(2*IU<- 999-(yr`GryPGTԊ OR%y;mzh􉌘LJfbq4]ڑ#z-ںhT$Fg* Ki\˙S.7:hz4k]BX"\Ҿp骥}˼],OZ޾xEኁ+J_S}Ay1 W XPR$/}uuu맯߾sr}IERaofbC2]Ioot\<s--.zbFmmmMo*VOuw)y}׮zKv#swo}}9Fv~N~:],k@ Ç]FƽMpXy>t(h?8:V܌4/nmImmk9>x{{۱mDI͓eh OM?=vFvflŞ}> uzwq%K/s/\qu'u;w7_uzZ[̞S={M+=; wz˸~+?R{TXqϖ?7:zA?q)iŠ`Љak=x.{>>R/;^XW_FcG^_NVJ3^=~fm;wsw~08姶ANdNL%c3 cHRMz%u0`:o_FbKGD pHYs   vpAg IDATXnSU=A%)J@AIA&~ /ddLj!Ca;PHp;P'^:ݍBU9|7߇<|;o*pVd@%x*~$Ǐ?pWwןG_#(šS/_ :S(pߵ;v?p_&dGDRlP-ș"iY~˸.&@,%d fBbUe"{*@Lǁb #ѭ=-&hL P! Lb Vv & B''7 "9:f@B%N՗SG_0K f& 5`A{M4ɟv.Q^(X*)51gowyhIUD/M$ )\?;{?iDYp/|1a]SZzT| y9:/4:3)3IrD7X6Y}qhͺQXHVLN$TĐm8YEcðS|xG`gorGQׄl;gqɵY4ah-4g,ZX1pj\9gsx1'\t,.D,bd9_pun_45$% Pő%9? ˳ ,!_r~fw{>g*NޠOXM޹DY͆IN+jlT_Ya(&0r[È{|>'OuX^ 1Hx'ܸRs&kHg6>GaH,|zq4%ϊ_S']v>+K45 zUXv_l]pvw{E$beoàs9/>2g8 5qz5 /c`=d"X A [-xzNn~N;6 s3{YJb-:`]ԇVaAD AgEѲ#+4B =\dh8s09{88e e0'5j5G= cdYPې< 5'h"8b{ A-FZ!tUXTI4s\5@BwI2|@E bz)ݫKqN# k B.+։uff:7 wew;ƪTw+NPYxu.,Vnm="w`}}oknZߍ/h #E.zTXtcreate-datex320552 1222620B$.zTXtmodify-datex32005454 102120620A IENDB`images/image_filtre-128.png000066600000051706151451631460011501 0ustar00PNG  IHDR>a pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FHIDATxygu9woy3f;H-Ri-eˑC+.Eˎ;T*G/qWv\JoeY,SHJ"}_go_~]X$;%[{os{Xk9~^rdGp4 GptudGב]GptudGב]GptudGב]Gpt5>,|.I1-x衇{ynEk-M^DPJaz{'ooSkC+Zńr2 flyS.wrb8nZ\q&T~+/QqiΕzW:W +0d'R)_jT&57ayyTe>bӥ+> `>OL8ڍbx]MJi,J*+=b#aH*Xq&ۭ6BmܑRծTF4!\֤Jj~TmVs6VYx:loK72rGb녭S-,uv*z-2.TǩA"1_k%j7U%Pkꬆ?kJ_ed>T>Hє2&NQr E" $1t-c84XLo +~+%/w+ztJ[s)tU]%{ت.u %Rr #B^1ۄrpQM*rSx7}@` :)pQJJ*uj.MȬ"i{;ꤘjN8bE^.8QďDov]mvR;^(|_QYz&Tcc(q2UWVJ/  R;n2r3ZQΛ^x鞔a[7WDw ss\MZdUVVa2WPu}/ M(%:35TƚO/*[[z i[ڳ*nV,6348la[lYCzyu;U֥KSk5*:9{UbJo]^w^ʑtK/d*5i+VRx)xKj@-Y*N܍(Kh7pާ bjGR 'nz"xNi-km5µZ{8UROTaT`,w9WQ5s ^(5YVA2/([%S1Ou'IJ$1eӖ&(JLUe[wBaP7͂T%f1JF|jlWL畮u]H&6cpFsE"sxJtXV42"m,X'%kv=Md 3V-d>Qb*mtu & {XQn.5ReUt2=skJ&OBW`MάeHm#5-I;co)9nIKPECi1T gUj:ܥ$C:}euU$w]]JJ`eJ'֘:T56]QIӊR2UW>J!r$uAh IEݽmvKՐ!N%fhT*=}#pήSTt@.GU(yV7%ֲJH>,JZ9vIl%As.}eXǕ`'w%\M5 Zɬ˂XqD4qhGKԤBdTơ+]99EŚ{Tu qKjT),[ZYV6RbK\s,k"_5sɸl֒=ĨdNWʁW\{pI;qM'& R{0Nۛ A\~©Z';GDssgHF Zha!li+JN5p:&en+KU/bk5Hs̫k}uZQ]!}%m\`iVcSak/C/_c3},ɕ&hk9ckqjeBAӎE#]SJWknK(6s س̋R#Qw(K!M~%~A"Q[%UV̊ .Qr6\C"L9o*{/ ڿNϳ =NK( O_fmO>>Tn"΋Dds; V VZe&!M1knc8-;e@׾E+ആ hhFikKPyVukkzu 6d m6xʲb_ _ƇzU4Sʦ[oʄA!~3Ҩ94Xrb5:zFڞʫj+C+a>S<@:]?UKؽTѣTq|\wRJЪiU17I6/`9>&M䬮4yʩ ][ . jS_^ ;(?A)]SkTWn"(UMFF*M^T/) 9%XUT-MK㾕.Et~QϵRNY'm!A}nWN.s.$whktQlԩi3n>K$x>ZQ Yl0b//3MZOh/nY.]3=s&FJ`3x.CpHL NC@M~ P^qʉI W_} {*[SWc]nyMܤu:zZWH mܗ'{^*!JRY;bx5ɌaL7ҌVKcL5o,`gsƯ*+qGϧ{pQJ?TthT]{/<078y +I6W]0:(+G|WC3wK RNA{i~`|&?PLf1| Y]Q,Y[r2W_ w= M6n[N3S,sM&1zt*\0i=+O1xEF{W̓lm^<1M1GM68VQ*Ijڸ. UnV@U ;}A(Y)& 7û^$ڣ+b>`rOȓh_ЉO]~oϜN*@9BMlYVu٭#9n7Qr9b-B2T;=Kҋ/pgye.=[WоQj{nP9I8.|'o|`]u*]4Ԇ8tqڊCcm_AfEaLBfNKCch0-ki>IbeYKL/YQai:PVA.iE%uc||7z0"yd}Ək%'WO"Lj>c|ׯl*$M2.q3+җ?xZpyJuqk9a`PR0p'yW~7^~8vvs^R( Da,fMtp~'Oz} НK˂4r)[?R.s͐Y&s?A%1A#!S$Ewέ-'㾏?@j &4/-Q"ͷq57P"r-ē'~+#ܸ4+HQ,.pbL,BɔqbӐV[88&Zmla$%VNl^O=v9ɍ ֑KEVfSk4(O(+tY5g_761I%|C!|P:lΦ$qR7G;>6q*&Lvv39~~i 6k!aޡ _oo3qoNsg9en=x2%"z5N,rt:%SV' w NdF9^7wOH 0`d/jն9EcQ\:1]g 47fqr/d%L Y=K7Y<}iU8@0OHO;Լxa)Y~ 6y+d2il,wh9u۽Oq~KSlyϻ7{V_x\x<_}B_8[Ħ|{s/^d=/`ihk4HҜnw|N]#F а7Ǿ '=|1ϟP N6;Wy*Re[WrW<^,Pz'HӼ,").^{?|~QK<˽mև,JѢ.(P)tDyҐ[^WO%\fhOH'#{\|WX]sx>AGJ0ysd ?8g~W2W:}r2 '΁h:JVv9/qygIK!^4c7"eX`f h >xW_]gs˵ݫ|鱇REdzM[q'A>-LEG6_b30xL%sKqqR_kzny I[_LF'{<.^)No{G{@19uFdEF{yK/#_OrGḓEOgټKO>+O͋ Ґ{VoaeIRzWiR&YFX:Z%M-!f` Ɠ[ϝֵU.M)=W@q,,O09ic H#@4еZ>ǙBNb8#2{l<^dsx Y2rOxo<yv'dàزF͹q?mqRȥ,uzۥXuࣵFc,W{6V"'o;|[DhB $yF;3am/_}r+dQJA9w)Yn9Z>Q[It|Yϕ"F_z4X=|QLLg 839y^ș3Ǹ̆#v#~2ƀRreYb-'N`og -}Y2#߻Y3:_klȓ#;>QD[mG(th-0% aL×QsUVIBhxxhJ#-tLܜ0P 6Y6\<`,@l6wdH=h^1W#s*=l(XX KwØd2eעmZг,ax=_*d³^bw 3H-LrIFֳǍɁi]6I֤&% MRIFPc >;шt`'ūOlsoUwp#-8$_b +zőia-:<$Yi|]"7nxē/h3KX<_t,o Qnqǖ4-Z \Xcr0d=% Uo2CEfG>3Zv98!B%z/xO_kYBbSD ;C< :>'O2DQxQB壭ec|!ycܸϥ2{n`}z_PsUCxu+*VP8J8"9zDYey $ዢ2eY[dkk7xX`<%7tXvK##gt-Vu3\Ah<+3ZH>z>K1_5n)AAZOF1if|lfiw4ݠMJFeX\Z#`k{m?`- G$ŢJx)nU iFٜc=&3,EQ $ISڡf66L1!~ԋY)BF;=~11vv9cgIȫQcf3;1p6׶PZȒ$ZXڭ8!c0d:4+k-СbiNxY'iiDetYͭ=Nwq[a+`weql1xUΦ7vX2>0TT圻mbp녴aIDiƳ SLv/d\go"wqș3V$]xk_xw p1@ ᾳ,ucϟ%IJC{~ǿU2ُ!cI1J֘'X|ݞB0L #4O{KJBg~₇̦:е!3•8Y.UnksׯO =^޹LW8>[?hɰ0q +%G ){m% + ![#v&raﻓm[pcY K66re$V]u{$j]e8gVI}6RZ',`4#2Fєj{08X[]B<1Gkw8'fqhwk66{.䞅3~Π_hLZP2ݟOf",;pg'gxz F)} ooD3[c tWn<`W|&_م@sx:Ž_{e1q~>?#NS? >m 5XWW|}(2Rn,hN|A^z4kgO/Eau%dQ&qN,v;vx7"8&Cb识fmKb'+ܼ4*ǐuy^ 6r8v gFJS25m<>ýQ. pd}WYON76%/^!ܣ]رdIF19ةLJ0'?Q>{;t>1k?./M;?gxJ΅ aHw"Gy=?`q=uN)v,On=sO} >$•Qݝk,m8O?-w5i4G𳴃4" q-t)M <u.8~.C>v_c/:#?$vn2ù%֎-r[&S?p= 4a6 _ϳw=/p4eg݃:᳖?||ES/~/]wϞ};mwyW(SO9+ހ/I?~Y," ^%JR6ni_Q>>ډ[P^Gテze6.deڄswݷ-Uw6QL?G f#^ɟɟ _z8{+DrX=|.LӔ^, y{>_(?\x%&|'?ݟñ~ß.o~ȃ3V̩c+l\;'>&_xOvY.v^,r<1qlklĉ[Nsix}o}o:'_x\v@ZDf劽Q_ ;{7x|㼺qǟ Ǩi(?Y){'њW.xܼ]VKnplG"~.]q]n^|x k˧XOz*uߝs../i __z;n=\qj>(?ᙗ_`_Mt; i .xmlxj@3|._BLS>|߇IN:Jgo;E8oINL J9?\rT˯sُx3yqp=|5v6p)N,/qֈ'xF=^y >xv{Yظr/#<ĩN1fC-^}mdARFY^ߺN8e{ؼ8*X^Y&iK0qqwwpc{$*siA`mRvټw슏gcD[$cgkvsryk&EZ98jK3F<@Vˀ43;=w~'|7X$uA6M8}g|1[^d򽟸p}k;̲"& <~̒JƠsk=d3/ƍk'hwI"py;ًOs-z7=~ÝgVw_yc|ADA笇'JCVVƒA<qWmsBn' ]V$nF{LӘ`qF #rtoõME|QYhqNf3< )ؼ\oHZ,hb33gbWxG"1asi1)ِ#mv gFdf(cx^"*ϱ? fY8 6&͉PLR,{18E K؞Z2x@2ZxZsa>ŞnTF5Xǿ¿}FID/XȕGa)3 PFAO~,IZ3[œn a6JNt iфkvS䊽=4z)U/^@C݅ĵ+JEEH@*~6 [QNC@/D-Qd>(3 آ@3c D)o^z|P'X6ZvoY|,.z2Usmn䖖vĠZT`9|hNlZX|IJxddDQuNxDQpZƣbmvqkS@,왔 ߈]B1|dW'mVL+ԤmgHV4k!-'Irr5~sx$fo7a3,xxQlf1mK7^Nggc=fa؊-Mn,yDzJ33Z2ߣI´0ތȱ@hM4ٟn}ù3*DQFh[E oٍ3ȅ &EiXY',e ExeA@K)F#Ke)cC72he4TA[،-[e34BJ܅ tVr?#s28u2.[lmL"BXX갰dؿ>b[:-7{O2Q_iY^9hb mO-&ӜiY! ~Ki ʒ ;)/ bVҠC0s*NJG8feՅBrtdPƢ-펇j)" =I i"Ŕ/ Yn)`YHD GhX.?̇c'7,{W,[ dejY@+#g8^!Tϰv,$&T#1m8!M /5wXKFڔHf@9>7O$A;`0IҔV&:Vξ5!ah`3V98ECKb)䉐 aC0$X&F[tĂ׃DY8\0L%-ݞBkDGX(Fe<^KPe SL~h3vip umBTR$!7̲x&B8& ,6t,+̰ aM }=Ej`w{H@RC' ؒjM qxtdݰeF3%y J1Pp e71MHxZ*BAfr,#ZHX^vb4?Xzhз'= ~l 9Sȴ%굋']zHP蜝!HR,d cߒ) e+ˆeO׆ D% [:ZŢQc 2*#0cEf2"մ{rϣ;il zm]oRŀ4Oi&і!s֎eahuq8R@ƉLR<]Gkt :5ޏbX%`63gz!}akhZ6H2 Qt{QB:lg)&3tBGK{d\2)SBNjE,hb BH ʣӷ䓌L %`+Z=ؙPȬK= a["mYz˚fgd3CYCX 4)90%A4kOnҒ[V =y7ZRCA+)B񮰼he6-R@k,і4/o9uNF ~ؓ v`T߂Ipq+0a!q#"JS Z|H)ӌՀԐlOɴh! u8!K A802? qnZE'!ZZ0{Hxr]RK&i)au ף g, 1=)G{ ض`fbH -v765,t:t '1 dY ewf0e޳ԷLD#l)MbΞ|ԏ}aqSϠca$zҰr~bqgf2R^&9gNjSΞ(@F%Id91Pń,ǭ .o& `g8F|mF1 {HvG@XV&IB[PaIS%vׅ'C3`a}=i;eE` ,b<Èf bC@{i'[/Kχx͍Ŏe7g8}'r6w mp%c !Lb8؃VB)LưmgNgeq0Xd^8x#W[rN.3la߲7`u ]oB-mK!_*9-+]Huh䱌㌉2~{HM=ޛ"(RV;M>x^=V}־,o:v8hgs|g͟v$9r~ӷ;y]o~ӛ'GGI=ssjm ]'.h ~_Gƿ%d5V+loQ~흾p 6yjSO=}.HTgW} {o7^kZ~"bm^qEQ*s|=w`މ. d0bEk-!"z=1|cedY?'MCM]o u= h :2#8 :2#8 :2#8 xv=XIENDB`tests/masque-305x85.png000066600000000451151451631460010573 0ustar00PNG  IHDR1UDtEXtSoftwareAdobe ImageReadyqe<IDATx1 1@KG C+$1'O'O'O'O'OOOOO< < < < < < x< x< x< x< x$x$x$x$x$x$I$I$I$I$IIIIII'''''O'O'`*!IENDB`tests/_couleur_rgb2hsl.php000066600000162034151451631460011677 0ustar00' . join('', $err) . ''); } echo "OK"; function essais__couleur_rgb2hsl(){ $essais = array ( 0 => array ( 0 => array ( 'h' => 0, 's' => 0, 'l' => 0, ), 1 => 0, 2 => 0, 3 => 0, ), 1 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.0137254901961, ), 1 => 0, 2 => 0, 3 => 7, ), 2 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.0294117647059, ), 1 => 0, 2 => 0, 3 => 15, ), 3 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.123529411765, ), 1 => 0, 2 => 0, 3 => 63, ), 4 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 0, 3 => 127, ), 5 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 0, 3 => 191, ), 6 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 0, 3 => 255, ), 7 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.0137254901961, ), 1 => 0, 2 => 7, 3 => 0, ), 8 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.0137254901961, ), 1 => 0, 2 => 7, 3 => 7, ), 9 => array ( 0 => array ( 'h' => 0.588888888889, 's' => 1, 'l' => 0.0294117647059, ), 1 => 0, 2 => 7, 3 => 15, ), 10 => array ( 0 => array ( 'h' => 0.648148148148, 's' => 1, 'l' => 0.123529411765, ), 1 => 0, 2 => 7, 3 => 63, ), 11 => array ( 0 => array ( 'h' => 0.657480314961, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 7, 3 => 127, ), 12 => array ( 0 => array ( 'h' => 0.660558464223, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 7, 3 => 191, ), 13 => array ( 0 => array ( 'h' => 0.662091503268, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 7, 3 => 255, ), 14 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.0294117647059, ), 1 => 0, 2 => 15, 3 => 0, ), 15 => array ( 0 => array ( 'h' => 0.411111111111, 's' => 1, 'l' => 0.0294117647059, ), 1 => 0, 2 => 15, 3 => 7, ), 16 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.0294117647059, ), 1 => 0, 2 => 15, 3 => 15, ), 17 => array ( 0 => array ( 'h' => 0.626984126984, 's' => 1, 'l' => 0.123529411765, ), 1 => 0, 2 => 15, 3 => 63, ), 18 => array ( 0 => array ( 'h' => 0.646981627297, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 15, 3 => 127, ), 19 => array ( 0 => array ( 'h' => 0.653577661431, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 15, 3 => 191, ), 20 => array ( 0 => array ( 'h' => 0.656862745098, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 15, 3 => 255, ), 21 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.123529411765, ), 1 => 0, 2 => 63, 3 => 0, ), 22 => array ( 0 => array ( 'h' => 0.351851851852, 's' => 1, 'l' => 0.123529411765, ), 1 => 0, 2 => 63, 3 => 7, ), 23 => array ( 0 => array ( 'h' => 0.373015873016, 's' => 1, 'l' => 0.123529411765, ), 1 => 0, 2 => 63, 3 => 15, ), 24 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.123529411765, ), 1 => 0, 2 => 63, 3 => 63, ), 25 => array ( 0 => array ( 'h' => 0.583989501312, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 63, 3 => 127, ), 26 => array ( 0 => array ( 'h' => 0.611692844677, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 63, 3 => 191, ), 27 => array ( 0 => array ( 'h' => 0.625490196078, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 63, 3 => 255, ), 28 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 127, 3 => 0, ), 29 => array ( 0 => array ( 'h' => 0.342519685039, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 127, 3 => 7, ), 30 => array ( 0 => array ( 'h' => 0.353018372703, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 127, 3 => 15, ), 31 => array ( 0 => array ( 'h' => 0.416010498688, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 127, 3 => 63, ), 32 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.249019607843, ), 1 => 0, 2 => 127, 3 => 127, ), 33 => array ( 0 => array ( 'h' => 0.555846422339, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 127, 3 => 191, ), 34 => array ( 0 => array ( 'h' => 0.583660130719, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 127, 3 => 255, ), 35 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 191, 3 => 0, ), 36 => array ( 0 => array ( 'h' => 0.339441535777, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 191, 3 => 7, ), 37 => array ( 0 => array ( 'h' => 0.346422338569, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 191, 3 => 15, ), 38 => array ( 0 => array ( 'h' => 0.388307155323, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 191, 3 => 63, ), 39 => array ( 0 => array ( 'h' => 0.444153577661, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 191, 3 => 127, ), 40 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.374509803922, ), 1 => 0, 2 => 191, 3 => 191, ), 41 => array ( 0 => array ( 'h' => 0.541830065359, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 191, 3 => 255, ), 42 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 255, 3 => 0, ), 43 => array ( 0 => array ( 'h' => 0.337908496732, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 255, 3 => 7, ), 44 => array ( 0 => array ( 'h' => 0.343137254902, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 255, 3 => 15, ), 45 => array ( 0 => array ( 'h' => 0.374509803922, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 255, 3 => 63, ), 46 => array ( 0 => array ( 'h' => 0.416339869281, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 255, 3 => 127, ), 47 => array ( 0 => array ( 'h' => 0.458169934641, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 255, 3 => 191, ), 48 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.5, ), 1 => 0, 2 => 255, 3 => 255, ), 49 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.0137254901961, ), 1 => 7, 2 => 0, 3 => 0, ), 50 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.0137254901961, ), 1 => 7, 2 => 0, 3 => 7, ), 51 => array ( 0 => array ( 'h' => 0.744444444444, 's' => 1, 'l' => 0.0294117647059, ), 1 => 7, 2 => 0, 3 => 15, ), 52 => array ( 0 => array ( 'h' => 0.685185185185, 's' => 1, 'l' => 0.123529411765, ), 1 => 7, 2 => 0, 3 => 63, ), 53 => array ( 0 => array ( 'h' => 0.675853018373, 's' => 1, 'l' => 0.249019607843, ), 1 => 7, 2 => 0, 3 => 127, ), 54 => array ( 0 => array ( 'h' => 0.67277486911, 's' => 1, 'l' => 0.374509803922, ), 1 => 7, 2 => 0, 3 => 191, ), 55 => array ( 0 => array ( 'h' => 0.671241830065, 's' => 1, 'l' => 0.5, ), 1 => 7, 2 => 0, 3 => 255, ), 56 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.0137254901961, ), 1 => 7, 2 => 7, 3 => 0, ), 57 => array ( 0 => array ( 'h' => 0, 's' => 0, 'l' => 0.0274509803922, ), 1 => 7, 2 => 7, 3 => 7, ), 58 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.363636363636, 'l' => 0.043137254902, ), 1 => 7, 2 => 7, 3 => 15, ), 59 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 7, 2 => 7, 3 => 63, ), 60 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 7, 2 => 7, 3 => 127, ), 61 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 7, 3 => 191, ), 62 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 7, 3 => 255, ), 63 => array ( 0 => array ( 'h' => 0.255555555556, 's' => 1, 'l' => 0.0294117647059, ), 1 => 7, 2 => 15, 3 => 0, ), 64 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.363636363636, 'l' => 0.043137254902, ), 1 => 7, 2 => 15, 3 => 7, ), 65 => array ( 0 => array ( 'h' => 0.5, 's' => 0.363636363636, 'l' => 0.043137254902, ), 1 => 7, 2 => 15, 3 => 15, ), 66 => array ( 0 => array ( 'h' => 0.642857142857, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 7, 2 => 15, 3 => 63, ), 67 => array ( 0 => array ( 'h' => 0.655555555556, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 7, 2 => 15, 3 => 127, ), 68 => array ( 0 => array ( 'h' => 0.659420289855, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 15, 3 => 191, ), 69 => array ( 0 => array ( 'h' => 0.661290322581, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 15, 3 => 255, ), 70 => array ( 0 => array ( 'h' => 0.314814814815, 's' => 1, 'l' => 0.123529411765, ), 1 => 7, 2 => 63, 3 => 0, ), 71 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 7, 2 => 63, 3 => 7, ), 72 => array ( 0 => array ( 'h' => 0.357142857143, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 7, 2 => 63, 3 => 15, ), 73 => array ( 0 => array ( 'h' => 0.5, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 7, 2 => 63, 3 => 63, ), 74 => array ( 0 => array ( 'h' => 0.588888888889, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 7, 2 => 63, 3 => 127, ), 75 => array ( 0 => array ( 'h' => 0.615942028986, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 63, 3 => 191, ), 76 => array ( 0 => array ( 'h' => 0.629032258065, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 63, 3 => 255, ), 77 => array ( 0 => array ( 'h' => 0.324146981627, 's' => 1, 'l' => 0.249019607843, ), 1 => 7, 2 => 127, 3 => 0, ), 78 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 7, 2 => 127, 3 => 7, ), 79 => array ( 0 => array ( 'h' => 0.344444444444, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 7, 2 => 127, 3 => 15, ), 80 => array ( 0 => array ( 'h' => 0.411111111111, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 7, 2 => 127, 3 => 63, ), 81 => array ( 0 => array ( 'h' => 0.5, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 7, 2 => 127, 3 => 127, ), 82 => array ( 0 => array ( 'h' => 0.557971014493, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 127, 3 => 191, ), 83 => array ( 0 => array ( 'h' => 0.586021505376, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 127, 3 => 255, ), 84 => array ( 0 => array ( 'h' => 0.32722513089, 's' => 1, 'l' => 0.374509803922, ), 1 => 7, 2 => 191, 3 => 0, ), 85 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 191, 3 => 7, ), 86 => array ( 0 => array ( 'h' => 0.340579710145, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 191, 3 => 15, ), 87 => array ( 0 => array ( 'h' => 0.384057971014, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 191, 3 => 63, ), 88 => array ( 0 => array ( 'h' => 0.442028985507, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 191, 3 => 127, ), 89 => array ( 0 => array ( 'h' => 0.5, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 7, 2 => 191, 3 => 191, ), 90 => array ( 0 => array ( 'h' => 0.543010752688, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 191, 3 => 255, ), 91 => array ( 0 => array ( 'h' => 0.328758169935, 's' => 1, 'l' => 0.5, ), 1 => 7, 2 => 255, 3 => 0, ), 92 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 255, 3 => 7, ), 93 => array ( 0 => array ( 'h' => 0.338709677419, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 255, 3 => 15, ), 94 => array ( 0 => array ( 'h' => 0.370967741935, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 255, 3 => 63, ), 95 => array ( 0 => array ( 'h' => 0.413978494624, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 255, 3 => 127, ), 96 => array ( 0 => array ( 'h' => 0.456989247312, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 255, 3 => 191, ), 97 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.513725490196, ), 1 => 7, 2 => 255, 3 => 255, ), 98 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.0294117647059, ), 1 => 15, 2 => 0, 3 => 0, ), 99 => array ( 0 => array ( 'h' => 0.922222222222, 's' => 1, 'l' => 0.0294117647059, ), 1 => 15, 2 => 0, 3 => 7, ), 100 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.0294117647059, ), 1 => 15, 2 => 0, 3 => 15, ), 101 => array ( 0 => array ( 'h' => 0.706349206349, 's' => 1, 'l' => 0.123529411765, ), 1 => 15, 2 => 0, 3 => 63, ), 102 => array ( 0 => array ( 'h' => 0.686351706037, 's' => 1, 'l' => 0.249019607843, ), 1 => 15, 2 => 0, 3 => 127, ), 103 => array ( 0 => array ( 'h' => 0.679755671902, 's' => 1, 'l' => 0.374509803922, ), 1 => 15, 2 => 0, 3 => 191, ), 104 => array ( 0 => array ( 'h' => 0.676470588235, 's' => 1, 'l' => 0.5, ), 1 => 15, 2 => 0, 3 => 255, ), 105 => array ( 0 => array ( 'h' => 0.0777777777778, 's' => 1, 'l' => 0.0294117647059, ), 1 => 15, 2 => 7, 3 => 0, ), 106 => array ( 0 => array ( 'h' => 0, 's' => 0.363636363636, 'l' => 0.043137254902, ), 1 => 15, 2 => 7, 3 => 7, ), 107 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.363636363636, 'l' => 0.043137254902, ), 1 => 15, 2 => 7, 3 => 15, ), 108 => array ( 0 => array ( 'h' => 0.690476190476, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 15, 2 => 7, 3 => 63, ), 109 => array ( 0 => array ( 'h' => 0.677777777778, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 15, 2 => 7, 3 => 127, ), 110 => array ( 0 => array ( 'h' => 0.673913043478, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 15, 2 => 7, 3 => 191, ), 111 => array ( 0 => array ( 'h' => 0.672043010753, 's' => 1, 'l' => 0.513725490196, ), 1 => 15, 2 => 7, 3 => 255, ), 112 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.0294117647059, ), 1 => 15, 2 => 15, 3 => 0, ), 113 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.363636363636, 'l' => 0.043137254902, ), 1 => 15, 2 => 15, 3 => 7, ), 114 => array ( 0 => array ( 'h' => 0, 's' => 0, 'l' => 0.0588235294118, ), 1 => 15, 2 => 15, 3 => 15, ), 115 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.615384615385, 'l' => 0.152941176471, ), 1 => 15, 2 => 15, 3 => 63, ), 116 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 15, 2 => 15, 3 => 127, ), 117 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 15, 2 => 15, 3 => 191, ), 118 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 15, 3 => 255, ), 119 => array ( 0 => array ( 'h' => 0.293650793651, 's' => 1, 'l' => 0.123529411765, ), 1 => 15, 2 => 63, 3 => 0, ), 120 => array ( 0 => array ( 'h' => 0.309523809524, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 15, 2 => 63, 3 => 7, ), 121 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.615384615385, 'l' => 0.152941176471, ), 1 => 15, 2 => 63, 3 => 15, ), 122 => array ( 0 => array ( 'h' => 0.5, 's' => 0.615384615385, 'l' => 0.152941176471, ), 1 => 15, 2 => 63, 3 => 63, ), 123 => array ( 0 => array ( 'h' => 0.595238095238, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 15, 2 => 63, 3 => 127, ), 124 => array ( 0 => array ( 'h' => 0.621212121212, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 15, 2 => 63, 3 => 191, ), 125 => array ( 0 => array ( 'h' => 0.633333333333, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 63, 3 => 255, ), 126 => array ( 0 => array ( 'h' => 0.313648293963, 's' => 1, 'l' => 0.249019607843, ), 1 => 15, 2 => 127, 3 => 0, ), 127 => array ( 0 => array ( 'h' => 0.322222222222, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 15, 2 => 127, 3 => 7, ), 128 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 15, 2 => 127, 3 => 15, ), 129 => array ( 0 => array ( 'h' => 0.404761904762, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 15, 2 => 127, 3 => 63, ), 130 => array ( 0 => array ( 'h' => 0.5, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 15, 2 => 127, 3 => 127, ), 131 => array ( 0 => array ( 'h' => 0.560606060606, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 15, 2 => 127, 3 => 191, ), 132 => array ( 0 => array ( 'h' => 0.588888888889, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 127, 3 => 255, ), 133 => array ( 0 => array ( 'h' => 0.320244328098, 's' => 1, 'l' => 0.374509803922, ), 1 => 15, 2 => 191, 3 => 0, ), 134 => array ( 0 => array ( 'h' => 0.326086956522, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 15, 2 => 191, 3 => 7, ), 135 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 15, 2 => 191, 3 => 15, ), 136 => array ( 0 => array ( 'h' => 0.378787878788, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 15, 2 => 191, 3 => 63, ), 137 => array ( 0 => array ( 'h' => 0.439393939394, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 15, 2 => 191, 3 => 127, ), 138 => array ( 0 => array ( 'h' => 0.5, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 15, 2 => 191, 3 => 191, ), 139 => array ( 0 => array ( 'h' => 0.544444444444, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 191, 3 => 255, ), 140 => array ( 0 => array ( 'h' => 0.323529411765, 's' => 1, 'l' => 0.5, ), 1 => 15, 2 => 255, 3 => 0, ), 141 => array ( 0 => array ( 'h' => 0.327956989247, 's' => 1, 'l' => 0.513725490196, ), 1 => 15, 2 => 255, 3 => 7, ), 142 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 255, 3 => 15, ), 143 => array ( 0 => array ( 'h' => 0.366666666667, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 255, 3 => 63, ), 144 => array ( 0 => array ( 'h' => 0.411111111111, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 255, 3 => 127, ), 145 => array ( 0 => array ( 'h' => 0.455555555556, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 255, 3 => 191, ), 146 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.529411764706, ), 1 => 15, 2 => 255, 3 => 255, ), 147 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.123529411765, ), 1 => 63, 2 => 0, 3 => 0, ), 148 => array ( 0 => array ( 'h' => 0.981481481481, 's' => 1, 'l' => 0.123529411765, ), 1 => 63, 2 => 0, 3 => 7, ), 149 => array ( 0 => array ( 'h' => 0.960317460317, 's' => 1, 'l' => 0.123529411765, ), 1 => 63, 2 => 0, 3 => 15, ), 150 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.123529411765, ), 1 => 63, 2 => 0, 3 => 63, ), 151 => array ( 0 => array ( 'h' => 0.749343832021, 's' => 1, 'l' => 0.249019607843, ), 1 => 63, 2 => 0, 3 => 127, ), 152 => array ( 0 => array ( 'h' => 0.721640488656, 's' => 1, 'l' => 0.374509803922, ), 1 => 63, 2 => 0, 3 => 191, ), 153 => array ( 0 => array ( 'h' => 0.707843137255, 's' => 1, 'l' => 0.5, ), 1 => 63, 2 => 0, 3 => 255, ), 154 => array ( 0 => array ( 'h' => 0.0185185185185, 's' => 1, 'l' => 0.123529411765, ), 1 => 63, 2 => 7, 3 => 0, ), 155 => array ( 0 => array ( 'h' => 0, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 63, 2 => 7, 3 => 7, ), 156 => array ( 0 => array ( 'h' => 0.97619047619, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 63, 2 => 7, 3 => 15, ), 157 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 63, 2 => 7, 3 => 63, ), 158 => array ( 0 => array ( 'h' => 0.744444444444, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 63, 2 => 7, 3 => 127, ), 159 => array ( 0 => array ( 'h' => 0.717391304348, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 63, 2 => 7, 3 => 191, ), 160 => array ( 0 => array ( 'h' => 0.704301075269, 's' => 1, 'l' => 0.513725490196, ), 1 => 63, 2 => 7, 3 => 255, ), 161 => array ( 0 => array ( 'h' => 0.0396825396825, 's' => 1, 'l' => 0.123529411765, ), 1 => 63, 2 => 15, 3 => 0, ), 162 => array ( 0 => array ( 'h' => 0.0238095238095, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 63, 2 => 15, 3 => 7, ), 163 => array ( 0 => array ( 'h' => 0, 's' => 0.615384615385, 'l' => 0.152941176471, ), 1 => 63, 2 => 15, 3 => 15, ), 164 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.615384615385, 'l' => 0.152941176471, ), 1 => 63, 2 => 15, 3 => 63, ), 165 => array ( 0 => array ( 'h' => 0.738095238095, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 63, 2 => 15, 3 => 127, ), 166 => array ( 0 => array ( 'h' => 0.712121212121, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 63, 2 => 15, 3 => 191, ), 167 => array ( 0 => array ( 'h' => 0.7, 's' => 1, 'l' => 0.529411764706, ), 1 => 63, 2 => 15, 3 => 255, ), 168 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.123529411765, ), 1 => 63, 2 => 63, 3 => 0, ), 169 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.8, 'l' => 0.137254901961, ), 1 => 63, 2 => 63, 3 => 7, ), 170 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.615384615385, 'l' => 0.152941176471, ), 1 => 63, 2 => 63, 3 => 15, ), 171 => array ( 0 => array ( 'h' => 0, 's' => 0, 'l' => 0.247058823529, ), 1 => 63, 2 => 63, 3 => 63, ), 172 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.336842105263, 'l' => 0.372549019608, ), 1 => 63, 2 => 63, 3 => 127, ), 173 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 63, 2 => 63, 3 => 191, ), 174 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.623529411765, ), 1 => 63, 2 => 63, 3 => 255, ), 175 => array ( 0 => array ( 'h' => 0.250656167979, 's' => 1, 'l' => 0.249019607843, ), 1 => 63, 2 => 127, 3 => 0, ), 176 => array ( 0 => array ( 'h' => 0.255555555556, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 63, 2 => 127, 3 => 7, ), 177 => array ( 0 => array ( 'h' => 0.261904761905, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 63, 2 => 127, 3 => 15, ), 178 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.336842105263, 'l' => 0.372549019608, ), 1 => 63, 2 => 127, 3 => 63, ), 179 => array ( 0 => array ( 'h' => 0.5, 's' => 0.336842105263, 'l' => 0.372549019608, ), 1 => 63, 2 => 127, 3 => 127, ), 180 => array ( 0 => array ( 'h' => 0.583333333333, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 63, 2 => 127, 3 => 191, ), 181 => array ( 0 => array ( 'h' => 0.611111111111, 's' => 1, 'l' => 0.623529411765, ), 1 => 63, 2 => 127, 3 => 255, ), 182 => array ( 0 => array ( 'h' => 0.278359511344, 's' => 1, 'l' => 0.374509803922, ), 1 => 63, 2 => 191, 3 => 0, ), 183 => array ( 0 => array ( 'h' => 0.282608695652, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 63, 2 => 191, 3 => 7, ), 184 => array ( 0 => array ( 'h' => 0.287878787879, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 63, 2 => 191, 3 => 15, ), 185 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 63, 2 => 191, 3 => 63, ), 186 => array ( 0 => array ( 'h' => 0.416666666667, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 63, 2 => 191, 3 => 127, ), 187 => array ( 0 => array ( 'h' => 0.5, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 63, 2 => 191, 3 => 191, ), 188 => array ( 0 => array ( 'h' => 0.555555555556, 's' => 1, 'l' => 0.623529411765, ), 1 => 63, 2 => 191, 3 => 255, ), 189 => array ( 0 => array ( 'h' => 0.292156862745, 's' => 1, 'l' => 0.5, ), 1 => 63, 2 => 255, 3 => 0, ), 190 => array ( 0 => array ( 'h' => 0.295698924731, 's' => 1, 'l' => 0.513725490196, ), 1 => 63, 2 => 255, 3 => 7, ), 191 => array ( 0 => array ( 'h' => 0.3, 's' => 1, 'l' => 0.529411764706, ), 1 => 63, 2 => 255, 3 => 15, ), 192 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.623529411765, ), 1 => 63, 2 => 255, 3 => 63, ), 193 => array ( 0 => array ( 'h' => 0.388888888889, 's' => 1, 'l' => 0.623529411765, ), 1 => 63, 2 => 255, 3 => 127, ), 194 => array ( 0 => array ( 'h' => 0.444444444444, 's' => 1, 'l' => 0.623529411765, ), 1 => 63, 2 => 255, 3 => 191, ), 195 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.623529411765, ), 1 => 63, 2 => 255, 3 => 255, ), 196 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 0, 3 => 0, ), 197 => array ( 0 => array ( 'h' => 0.990813648294, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 0, 3 => 7, ), 198 => array ( 0 => array ( 'h' => 0.98031496063, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 0, 3 => 15, ), 199 => array ( 0 => array ( 'h' => 0.917322834646, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 0, 3 => 63, ), 200 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 0, 3 => 127, ), 201 => array ( 0 => array ( 'h' => 0.777486910995, 's' => 1, 'l' => 0.374509803922, ), 1 => 127, 2 => 0, 3 => 191, ), 202 => array ( 0 => array ( 'h' => 0.749673202614, 's' => 1, 'l' => 0.5, ), 1 => 127, 2 => 0, 3 => 255, ), 203 => array ( 0 => array ( 'h' => 0.00918635170604, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 7, 3 => 0, ), 204 => array ( 0 => array ( 'h' => 0, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 127, 2 => 7, 3 => 7, ), 205 => array ( 0 => array ( 'h' => 0.988888888889, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 127, 2 => 7, 3 => 15, ), 206 => array ( 0 => array ( 'h' => 0.922222222222, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 127, 2 => 7, 3 => 63, ), 207 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 127, 2 => 7, 3 => 127, ), 208 => array ( 0 => array ( 'h' => 0.775362318841, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 127, 2 => 7, 3 => 191, ), 209 => array ( 0 => array ( 'h' => 0.747311827957, 's' => 1, 'l' => 0.513725490196, ), 1 => 127, 2 => 7, 3 => 255, ), 210 => array ( 0 => array ( 'h' => 0.0196850393701, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 15, 3 => 0, ), 211 => array ( 0 => array ( 'h' => 0.0111111111111, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 127, 2 => 15, 3 => 7, ), 212 => array ( 0 => array ( 'h' => 0, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 127, 2 => 15, 3 => 15, ), 213 => array ( 0 => array ( 'h' => 0.928571428571, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 127, 2 => 15, 3 => 63, ), 214 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 127, 2 => 15, 3 => 127, ), 215 => array ( 0 => array ( 'h' => 0.772727272727, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 127, 2 => 15, 3 => 191, ), 216 => array ( 0 => array ( 'h' => 0.744444444444, 's' => 1, 'l' => 0.529411764706, ), 1 => 127, 2 => 15, 3 => 255, ), 217 => array ( 0 => array ( 'h' => 0.0826771653543, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 63, 3 => 0, ), 218 => array ( 0 => array ( 'h' => 0.0777777777778, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 127, 2 => 63, 3 => 7, ), 219 => array ( 0 => array ( 'h' => 0.0714285714286, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 127, 2 => 63, 3 => 15, ), 220 => array ( 0 => array ( 'h' => 0, 's' => 0.336842105263, 'l' => 0.372549019608, ), 1 => 127, 2 => 63, 3 => 63, ), 221 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.336842105263, 'l' => 0.372549019608, ), 1 => 127, 2 => 63, 3 => 127, ), 222 => array ( 0 => array ( 'h' => 0.75, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 127, 2 => 63, 3 => 191, ), 223 => array ( 0 => array ( 'h' => 0.722222222222, 's' => 1, 'l' => 0.623529411765, ), 1 => 127, 2 => 63, 3 => 255, ), 224 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.249019607843, ), 1 => 127, 2 => 127, 3 => 0, ), 225 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.89552238806, 'l' => 0.262745098039, ), 1 => 127, 2 => 127, 3 => 7, ), 226 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.788732394366, 'l' => 0.278431372549, ), 1 => 127, 2 => 127, 3 => 15, ), 227 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.336842105263, 'l' => 0.372549019608, ), 1 => 127, 2 => 127, 3 => 63, ), 228 => array ( 0 => array ( 'h' => 0, 's' => 0, 'l' => 0.498039215686, ), 1 => 127, 2 => 127, 3 => 127, ), 229 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.333333333333, 'l' => 0.623529411765, ), 1 => 127, 2 => 127, 3 => 191, ), 230 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.749019607843, ), 1 => 127, 2 => 127, 3 => 255, ), 231 => array ( 0 => array ( 'h' => 0.222513089005, 's' => 1, 'l' => 0.374509803922, ), 1 => 127, 2 => 191, 3 => 0, ), 232 => array ( 0 => array ( 'h' => 0.224637681159, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 127, 2 => 191, 3 => 7, ), 233 => array ( 0 => array ( 'h' => 0.227272727273, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 127, 2 => 191, 3 => 15, ), 234 => array ( 0 => array ( 'h' => 0.25, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 127, 2 => 191, 3 => 63, ), 235 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.333333333333, 'l' => 0.623529411765, ), 1 => 127, 2 => 191, 3 => 127, ), 236 => array ( 0 => array ( 'h' => 0.5, 's' => 0.333333333333, 'l' => 0.623529411765, ), 1 => 127, 2 => 191, 3 => 191, ), 237 => array ( 0 => array ( 'h' => 0.583333333333, 's' => 1, 'l' => 0.749019607843, ), 1 => 127, 2 => 191, 3 => 255, ), 238 => array ( 0 => array ( 'h' => 0.250326797386, 's' => 1, 'l' => 0.5, ), 1 => 127, 2 => 255, 3 => 0, ), 239 => array ( 0 => array ( 'h' => 0.252688172043, 's' => 1, 'l' => 0.513725490196, ), 1 => 127, 2 => 255, 3 => 7, ), 240 => array ( 0 => array ( 'h' => 0.255555555556, 's' => 1, 'l' => 0.529411764706, ), 1 => 127, 2 => 255, 3 => 15, ), 241 => array ( 0 => array ( 'h' => 0.277777777778, 's' => 1, 'l' => 0.623529411765, ), 1 => 127, 2 => 255, 3 => 63, ), 242 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.749019607843, ), 1 => 127, 2 => 255, 3 => 127, ), 243 => array ( 0 => array ( 'h' => 0.416666666667, 's' => 1, 'l' => 0.749019607843, ), 1 => 127, 2 => 255, 3 => 191, ), 244 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.749019607843, ), 1 => 127, 2 => 255, 3 => 255, ), 245 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 0, 3 => 0, ), 246 => array ( 0 => array ( 'h' => 0.993891797557, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 0, 3 => 7, ), 247 => array ( 0 => array ( 'h' => 0.986910994764, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 0, 3 => 15, ), 248 => array ( 0 => array ( 'h' => 0.94502617801, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 0, 3 => 63, ), 249 => array ( 0 => array ( 'h' => 0.889179755672, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 0, 3 => 127, ), 250 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 0, 3 => 191, ), 251 => array ( 0 => array ( 'h' => 0.791503267974, 's' => 1, 'l' => 0.5, ), 1 => 191, 2 => 0, 3 => 255, ), 252 => array ( 0 => array ( 'h' => 0.00610820244328, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 7, 3 => 0, ), 253 => array ( 0 => array ( 'h' => 0, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 7, 3 => 7, ), 254 => array ( 0 => array ( 'h' => 0.992753623188, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 7, 3 => 15, ), 255 => array ( 0 => array ( 'h' => 0.949275362319, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 7, 3 => 63, ), 256 => array ( 0 => array ( 'h' => 0.891304347826, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 7, 3 => 127, ), 257 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 7, 3 => 191, ), 258 => array ( 0 => array ( 'h' => 0.790322580645, 's' => 1, 'l' => 0.513725490196, ), 1 => 191, 2 => 7, 3 => 255, ), 259 => array ( 0 => array ( 'h' => 0.0130890052356, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 15, 3 => 0, ), 260 => array ( 0 => array ( 'h' => 0.00724637681159, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 15, 3 => 7, ), 261 => array ( 0 => array ( 'h' => 0, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 191, 2 => 15, 3 => 15, ), 262 => array ( 0 => array ( 'h' => 0.954545454545, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 191, 2 => 15, 3 => 63, ), 263 => array ( 0 => array ( 'h' => 0.893939393939, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 191, 2 => 15, 3 => 127, ), 264 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 191, 2 => 15, 3 => 191, ), 265 => array ( 0 => array ( 'h' => 0.788888888889, 's' => 1, 'l' => 0.529411764706, ), 1 => 191, 2 => 15, 3 => 255, ), 266 => array ( 0 => array ( 'h' => 0.0549738219895, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 63, 3 => 0, ), 267 => array ( 0 => array ( 'h' => 0.0507246376812, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 63, 3 => 7, ), 268 => array ( 0 => array ( 'h' => 0.0454545454545, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 191, 2 => 63, 3 => 15, ), 269 => array ( 0 => array ( 'h' => 0, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 191, 2 => 63, 3 => 63, ), 270 => array ( 0 => array ( 'h' => 0.916666666667, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 191, 2 => 63, 3 => 127, ), 271 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 191, 2 => 63, 3 => 191, ), 272 => array ( 0 => array ( 'h' => 0.777777777778, 's' => 1, 'l' => 0.623529411765, ), 1 => 191, 2 => 63, 3 => 255, ), 273 => array ( 0 => array ( 'h' => 0.110820244328, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 127, 3 => 0, ), 274 => array ( 0 => array ( 'h' => 0.108695652174, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 127, 3 => 7, ), 275 => array ( 0 => array ( 'h' => 0.106060606061, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 191, 2 => 127, 3 => 15, ), 276 => array ( 0 => array ( 'h' => 0.0833333333333, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 191, 2 => 127, 3 => 63, ), 277 => array ( 0 => array ( 'h' => 0, 's' => 0.333333333333, 'l' => 0.623529411765, ), 1 => 191, 2 => 127, 3 => 127, ), 278 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.333333333333, 'l' => 0.623529411765, ), 1 => 191, 2 => 127, 3 => 191, ), 279 => array ( 0 => array ( 'h' => 0.75, 's' => 1, 'l' => 0.749019607843, ), 1 => 191, 2 => 127, 3 => 255, ), 280 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.374509803922, ), 1 => 191, 2 => 191, 3 => 0, ), 281 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.929292929293, 'l' => 0.388235294118, ), 1 => 191, 2 => 191, 3 => 7, ), 282 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.854368932039, 'l' => 0.403921568627, ), 1 => 191, 2 => 191, 3 => 15, ), 283 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.503937007874, 'l' => 0.498039215686, ), 1 => 191, 2 => 191, 3 => 63, ), 284 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.333333333333, 'l' => 0.623529411765, ), 1 => 191, 2 => 191, 3 => 127, ), 285 => array ( 0 => array ( 'h' => 0, 's' => 0, 'l' => 0.749019607843, ), 1 => 191, 2 => 191, 3 => 191, ), 286 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'l' => 0.874509803922, ), 1 => 191, 2 => 191, 3 => 255, ), 287 => array ( 0 => array ( 'h' => 0.208496732026, 's' => 1, 'l' => 0.5, ), 1 => 191, 2 => 255, 3 => 0, ), 288 => array ( 0 => array ( 'h' => 0.209677419355, 's' => 1, 'l' => 0.513725490196, ), 1 => 191, 2 => 255, 3 => 7, ), 289 => array ( 0 => array ( 'h' => 0.211111111111, 's' => 1, 'l' => 0.529411764706, ), 1 => 191, 2 => 255, 3 => 15, ), 290 => array ( 0 => array ( 'h' => 0.222222222222, 's' => 1, 'l' => 0.623529411765, ), 1 => 191, 2 => 255, 3 => 63, ), 291 => array ( 0 => array ( 'h' => 0.25, 's' => 1, 'l' => 0.749019607843, ), 1 => 191, 2 => 255, 3 => 127, ), 292 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'l' => 0.874509803922, ), 1 => 191, 2 => 255, 3 => 191, ), 293 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'l' => 0.874509803922, ), 1 => 191, 2 => 255, 3 => 255, ), 294 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 0, 3 => 0, ), 295 => array ( 0 => array ( 'h' => 0.995424836601, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 0, 3 => 7, ), 296 => array ( 0 => array ( 'h' => 0.990196078431, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 0, 3 => 15, ), 297 => array ( 0 => array ( 'h' => 0.958823529412, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 0, 3 => 63, ), 298 => array ( 0 => array ( 'h' => 0.916993464052, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 0, 3 => 127, ), 299 => array ( 0 => array ( 'h' => 0.875163398693, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 0, 3 => 191, ), 300 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 0, 3 => 255, ), 301 => array ( 0 => array ( 'h' => 0.00457516339869, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 7, 3 => 0, ), 302 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 7, 3 => 7, ), 303 => array ( 0 => array ( 'h' => 0.994623655914, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 7, 3 => 15, ), 304 => array ( 0 => array ( 'h' => 0.962365591398, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 7, 3 => 63, ), 305 => array ( 0 => array ( 'h' => 0.91935483871, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 7, 3 => 127, ), 306 => array ( 0 => array ( 'h' => 0.876344086022, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 7, 3 => 191, ), 307 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 7, 3 => 255, ), 308 => array ( 0 => array ( 'h' => 0.00980392156863, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 15, 3 => 0, ), 309 => array ( 0 => array ( 'h' => 0.00537634408602, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 15, 3 => 7, ), 310 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 15, 3 => 15, ), 311 => array ( 0 => array ( 'h' => 0.966666666667, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 15, 3 => 63, ), 312 => array ( 0 => array ( 'h' => 0.922222222222, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 15, 3 => 127, ), 313 => array ( 0 => array ( 'h' => 0.877777777778, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 15, 3 => 191, ), 314 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 15, 3 => 255, ), 315 => array ( 0 => array ( 'h' => 0.0411764705882, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 63, 3 => 0, ), 316 => array ( 0 => array ( 'h' => 0.0376344086022, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 63, 3 => 7, ), 317 => array ( 0 => array ( 'h' => 0.0333333333333, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 63, 3 => 15, ), 318 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.623529411765, ), 1 => 255, 2 => 63, 3 => 63, ), 319 => array ( 0 => array ( 'h' => 0.944444444444, 's' => 1, 'l' => 0.623529411765, ), 1 => 255, 2 => 63, 3 => 127, ), 320 => array ( 0 => array ( 'h' => 0.888888888889, 's' => 1, 'l' => 0.623529411765, ), 1 => 255, 2 => 63, 3 => 191, ), 321 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.623529411765, ), 1 => 255, 2 => 63, 3 => 255, ), 322 => array ( 0 => array ( 'h' => 0.0830065359477, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 127, 3 => 0, ), 323 => array ( 0 => array ( 'h' => 0.0806451612903, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 127, 3 => 7, ), 324 => array ( 0 => array ( 'h' => 0.0777777777778, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 127, 3 => 15, ), 325 => array ( 0 => array ( 'h' => 0.0555555555556, 's' => 1, 'l' => 0.623529411765, ), 1 => 255, 2 => 127, 3 => 63, ), 326 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.749019607843, ), 1 => 255, 2 => 127, 3 => 127, ), 327 => array ( 0 => array ( 'h' => 0.916666666667, 's' => 1, 'l' => 0.749019607843, ), 1 => 255, 2 => 127, 3 => 191, ), 328 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.749019607843, ), 1 => 255, 2 => 127, 3 => 255, ), 329 => array ( 0 => array ( 'h' => 0.124836601307, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 191, 3 => 0, ), 330 => array ( 0 => array ( 'h' => 0.123655913978, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 191, 3 => 7, ), 331 => array ( 0 => array ( 'h' => 0.122222222222, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 191, 3 => 15, ), 332 => array ( 0 => array ( 'h' => 0.111111111111, 's' => 1, 'l' => 0.623529411765, ), 1 => 255, 2 => 191, 3 => 63, ), 333 => array ( 0 => array ( 'h' => 0.0833333333333, 's' => 1, 'l' => 0.749019607843, ), 1 => 255, 2 => 191, 3 => 127, ), 334 => array ( 0 => array ( 'h' => 0, 's' => 1, 'l' => 0.874509803922, ), 1 => 255, 2 => 191, 3 => 191, ), 335 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'l' => 0.874509803922, ), 1 => 255, 2 => 191, 3 => 255, ), 336 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.5, ), 1 => 255, 2 => 255, 3 => 0, ), 337 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.513725490196, ), 1 => 255, 2 => 255, 3 => 7, ), 338 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.529411764706, ), 1 => 255, 2 => 255, 3 => 15, ), 339 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.623529411765, ), 1 => 255, 2 => 255, 3 => 63, ), 340 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.749019607843, ), 1 => 255, 2 => 255, 3 => 127, ), 341 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'l' => 0.874509803922, ), 1 => 255, 2 => 255, 3 => 191, ), 342 => array ( 0 => array ( 'h' => 0, 's' => 0, 'l' => 1, ), 1 => 255, 2 => 255, 3 => 255, ), ); return $essais; } ?>tests/multiple_de_trois.php000066600000002716151451631460012162 0ustar00' . join('', $err) . ''); } echo "OK"; function essais_multiple_de_trois(){ $essais = array ( 0 => array ( 0 => 0, 1 => 0, ), 1 => array ( 0 => -0, 1 => -1, ), 2 => array ( 0 => 0, 1 => 1, ), 3 => array ( 0 => 3, 1 => 2, ), 4 => array ( 0 => 3, 1 => 3, ), 5 => array ( 0 => 3, 1 => 4, ), 6 => array ( 0 => 6, 1 => 5, ), 7 => array ( 0 => 6, 1 => 6, ), 8 => array ( 0 => 6, 1 => 7, ), 9 => array ( 0 => 9, 1 => 10, ), 10 => array ( 0 => 21, 1 => 20, ), 11 => array ( 0 => 30, 1 => 30, ), 12 => array ( 0 => 51, 1 => 50, ), 13 => array ( 0 => 99, 1 => 100, ), 14 => array ( 0 => 999, 1 => 1000, ), 15 => array ( 0 => 9999, 1 => 10000, ), ); return $essais; } ?>tests/imagetest.jpg000066600000105376151451631460010420 0ustar00JFIF;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 85 C  !"$"$C" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?QmޮfN$]K%yw=֭eֵ2סx/d",Tw=OokWsկO 1vvVv|蜧='ڼ%y}Y>V+9Zqf,=?5]W"|/W+[M~&YotusxWkFD 1-Is;Xb{]=v׽x/ñ$hZ/ Yo ݮ**18SZu>A,^k)]<s4C}-=j+]@ǸV-Mcnj(_W 1GMx$_mUaQoj_18hW[Jn^L5slRDMqwUOŌ6fOּt:˚HϛUv K?h28r2=kt[vU(,v=S,WJxovᮡ5.ӶړGÛw= ?_.EE4/HlƜp?qluMH aqQBu߆""]~R=GjTnwBQW{9aRM%YnXN~wi>VۘLbuw ,\VOV?sj~,jz/5&gIa3YI+1\\WI.\ 3SJC^_$;B>Ԭ}ޚ0_RRC ,P?׊~ŗeqLwBАAd*C;BkX}7Ⅶy&ߵ^;TM25d)󗎣g]VcM-]mwᏌ$o%ޜaa4T].| s+[.cc%;[]l*Ķ{\)\;|U}: P0Mo| Eť' W4_an-dQxdU|yǵ kqvc~}M&a~zzCuizZIbzr+y9lr]^&R2ɻ}quZm ̾JZ|ׅm&EQWVғwV-"KEd=寎S۟M}u}5|Dx, d 1gKџ5G^>6NTW:F0=1U~H7MDlq\1-*^mm*m3\Ko\'uOTՕyYvn>lUU8#z0|nM>_8ِ6=ka\𮱢kR+Ml 9F:i2W9u 3M*}A 7͓^)iSX;.i߆'' ]÷;YbfWa];Y~tlX m`WPhZ6uȯ:PWc:s[LʒGv"xI[[~ՍfZǓ}koZk\}(Jz$[n[lr:6+V]ެBV-&s嚹VYrGB'ql2еlmX"mڟ]\=Y9U)j{[k]*מxM*Wiuk|(Akjv_ckӉdIy!/^/20qtaHv^;W z/t8v4qT`N#d!ג7^k v_nmG])UN WA5`Vf t%@-p8Ѣ=)4_ˣ5%-o"dݕn֮ǚJXBn8ojxzԊv&e=j\VŬZ:Nc>^mrwop][ ZԴoN,*Uax3돁~Z>&ۤ\#]Oko<'tL2|I.$"0*V񮥩Z۾\bgmдwͤ;p rf:^E]zW\&Vv,Nn|홶'YК6t"F?Z?|#5-Y$S`Eg\ߐ>O5sI~5vxV%C3½Z}|Sn1asF]>?l-4ώIk,,~E<QJv6ӷF?/Ϟl7Zʺfp\_vzmzeAŻɕ-6j N&qlA VO4o-:f;{?źr;ٌ?Z>?iN`sE:V1I.H˩ߵ˝[UV7 :#^U_NVM9Ϡaص9p$AX\錗H*Omè7C)=c]r-nh"e9+q_"xl/";,hix85˵K\]lrvW}{/⸘pjA3ZX[p&ԑ#WN?FbTx4;kkȧ8a }:}jȿp?EV 'W]3u G5y'\i5$Xי|dUۖ۹ (",J#r9^˚nuoڬh$v(Cgާ|B +?ze_'!\הS\jx6 8tؖUF1]ǔ#>"-%"{$xZ-BhQ8<Ӈ_}ڽ,z(fFuf|77#~$~ᇵ}}(VmˀMqh{ >tZ5<%myc,3|*Aesf.@ak兼.c?_ xlebV5Jj$t۵"f}yi=Nn?޾y~|FVs2å}S9uP&j2n#{_kNp̟ޯ3x{\%VxX!iNKDI[#Py&O"lM}q39c^gz|</3wy~Z$c'KoC*y$s,BDOŅa3uom?ʶ7ћIf]6oھ* gjgV4hh[r..Ȍ봊noz~ >#xmBWP[jq|84>%kee.C*wӡ"f$fbvc?jKK|yxOJeMrL|ޮ~+-ϷyW_f %4,f'$^ +M f;zQfrJ<,Z Fai[+HML-k4vEB+꿀#\fJBwkҾjwHkTnRCq>t[M.V/ 㟉zz,./pq[7ۚ/tk[v9&{#:]Ω$2|ש3¨,.yz坄6Z|qյcZ1Wlz5Ү8cVE\_Ak短yhZt\H]lI#Ҹ Kwsfin1GV W7?; WT1-qnu~U¬9wƭ9"r1jt櫱Rc"XQZ7ybظZt~mכI{{פiukɼ>cJ]PʵkZڹ5J;Zvx kT;znjE^dhK/|Xl^A7֘kJ&r8V +eG] ʞG? |6Ez*׎|#~k~jp.*>/ȹZ|A /].>Z֢-]NjOƋe^޽ y]"^e۵B1-^%[ޑ_ir-U)cj+Ap֨f9Jw@{tO|j/MOp} .kH'^:*s_T't{m?l9Rx>aj tb~F/{O4><gĝ#UDٽ}ʰ5x mukq;HpF ¶_.Vπs'~ 2ݣ*W*]՝ZI=UPmh|k4_^՝%9T vwW#ǖj" :VyjA7_aaU>&Go:gS% АȾm&_&vc도?l<goj^6ן :O)·Zk7.ߚѰLu&d{8۹M(vW`|9~q<2+|5D-5RVw>jmcjC|¾|e}Hxi‘l_9ݮM9.Ɠ~Zx۳p_gnQ&k )f mڽֽ>6^j>],MU .E$ʐ:E ,\ki:_Q5 V?7N"YCY}Rhw`UC5;[j2܎\{ iyk0Ӡ2k[QHTnYQվO-s5Ht_"ԧ]0U?̥UiO=6bFU\WōVZM#juQ3Gz|εNC]KK[mJTqXCt:߇,=]}AvaG_4/h3? ȯ|76m-$+҈r͹Zp?>EslJ)85g=An_VZ>,6#u|\-F͹J1W;[_?6W7$;-n!Q#!Qco/'Ԯ+O'Wu4`+еygowG(rZʚ׎lQ]?l2n'KN+׼"2mRAlDULJ\6]0rX̻}k5+/Dj>`>:]lcVSjZ#8 g 쎖:^5k[Ͱܿ&8?Sxo^}q5M'MmleEUʌ6[8Ú[rn z$6lj.+GlѕJ.05 bazW_=*K܉^6:4(l[h*u+͟Jz麖fH|5꣓ϞW&^jhp3Ar$]v۶![شHbO|iaag-B8?ޭTTw8EkiŎ_>CIan\=XΒ/KN9-nwӷQqTj 4^ty2sثsle5Zɗ rmT RWsWxO12\g쥩e8cqҵapV}UIUvtwJWWJ8gNmkX1jIqF:jBixw =ֲ|۩&.Mc7s »Uh|)ZkmUUvᖻHG?ftZ_>ϝ6!_B'tk\N/t\|Eڵ=@nЖw>_]^M9|Me5ߴe﷑_;xvo#V^-H|h/tEA5t+6w+>j+%xӥN7 wCEn}xŞ[ܿ4xn|5f ¾)v\\S'ZJ]ik𞺡u!ձw?c\<={:RR^b=.ZjqGtpVF/zViċWɞ ו.父9Ğ͗SѤܧڕ K 7N]z)t/XxxyzQV,\a֯nsojس'M.;O^pdjm۱_ՄW? IdQHA"z;Ks+񣧉>Q!%YW#WI:cIf@%aly4ѡ~Q cw; g~>K}I)% u}jHo}MQe 9?ƽr>1kەet'I#:0NZy?U]WK5M59 10ߗZcᏉ[U&uTЄ`w_)Gk7NJĺeLl:3,?hoxPVJe4KV}@8.kũpەʌۖ5U}N^~|}"ƚ/8kݵf_,H7:Jҳ6:j)|ɬ߀=N՝75JQ[JZυܺ{S5\ܗ.u>eY#,]hs-m8Ylm5坳۸xnI \ҕ~{j_iTޯ|W|thz 5>|72h\D^m_|sgpʳEhW/-r.{a:)*kJq~5x d6 WzNԱe;:rUԤWQ9?+(<ȒM"UF+Ooiؽ@ݷ S>nؚ+q޷q<0 Rk3D]z5gYqB*Mvi$ 85t[[2 neZ[qʨNF-B7fjH噟5iv gJ6՝MY x+3+}m~,i?p, iFlRHS3+뿆M&LvȾԿDс>IOkª <ϛpחM|9nFVS_ RKlrc5lpNS&~c!Tnk1mM3kMyl]&{XwgpU=cEG:?t촓Q`>xMM{;FVcRb27rT#|&}=y K77g"ܟ=Mn-z oǰ7b1^i4ܪ5tdt_\_hzuJ ?E]õ^5O\oK=oCn;EqxQkYmaܰtxa*U"¬:zWk,(3Kѵ UZobwK߀OZ|h^Kyfu^|g> uO&v}j,c>Jzeq-]"2Oh_695k+}쯫|LZ+u=M7 IL ,r:vT8gxb`]FWe %p .ږ9W5L*p}?*I^)y_iŻ.Ʈ5ّ^JEaU{۟Wi!Vf/5yV㤚wI?RB<-OubEE^>ա6oFqT}3QFX)hڳk}n5z>gͺ_1|>Mi\x^gV#L^~H~2zoҾR*־l&{-|sq_J^\#_Y;ϴfz|^73 ]x9^1mO+o?w7x~.Uш[]zKoe=#g{8u[mwas_|3tHcU5}xyx8B+}ְ;n\8F6W4MBU]OeP0_VrmΗ6oˈ,W׾kxFB6䗨*J1rL񆍧j$frSڼym9tv8UN]niR{ŧ0j[Kh?`_ \xc/P%=[ړo0csgZ?cMo.oeI ŪQNwѶș6{~ ٻ/BԃEGqi: LN=ԕ{[5c0@}o/㿎|8j_&#_2N]r[E+ǸۜVG8W~ x=u=BMNC\uKmode7Lgjg"w1}_`~~)ñX\n7,;UF|1{0Tx%FuiXAr謧>$Ğ+I焬O=Fo6t#MjǖK6ˢkiw+1\=ݬ3/Jf<:>AYfI4Z?kW;Xh_0( 5ɫGRVy'闺oU$"|3XmַA/!Zr>Ro8'^}nHnN3Pt |Dܳ+x#59F+ֹnd#ֽ:$f~\iKFMH_^[,KW_Wd0VV^&s,-N>͵m"rEo-m ۖ4vE\m#EwG>;?}3:Jx.jI'5ELv>߉i5EnA*׵]^G,X(-l{]IGSgRi? 1Dtc殚RRyEIr"K'Uj+kKI޳s\>'4KV{W`yWX^jK5©(պ}v[ҋo}~W>7j{kdF ~0[}bZ\T]Jm7VmrN*Z" իρ ߤss'_*#5}=O a2tH/7s/<fyhXh}y,"寗;k1Š6/g}a[ K-R)x s=s:Mhe j},L_J(5[7MGɑfik~GU-@>6?ֈۖ)gzkR\[ ]VkjO GQ[? ŤZ\ YN.3{T'V5~ 5{ ¯ jZg|Eow  EKVH;k5J?s^Z\Jұ?`Ǧw(۳+S֯7F^߂{*Ul%/v {Lju;n^z2"+zρ| f}>]t%؎q]Tp2^mY/{Iaۆ5-2| cZ[Jm6ks^_M23sڊЌuhOm1a񗍼s΅خKufj/?|'QL5A=[c7ZóÝ_7XRFk?Z"sU_SC-rӮ9ZzKc- GSoh7Cn:m0?5+6dfꦾ/Mtw:};=_ݥ^_HZZ__ēC}"ԅ6]FqeǮ"ђv~WCM?>UyxW~|A-?#Kgq_^n_>xM!о6%_"\Escԃ{loTp_>iPjW pŸF]Z굓~&ܕkivz-U!OO#6?C[S;'5U)lĨ/>ůyVf'FiǬxnRD{`HBWd74aR|=73ڼ^ v x!8lQTCwqǺ ##9mAF4eROnj5l;pv ._)qy\*$Wf$nkX5-/88EAA>u?:W6s,'׍|bm#^j>!l|k>x|;y4W1iHu5M*q"W,$i%u |Lu5ѯ@qPxgwSB2csݴx t^zƒeܬ$LW*8KttuGx~͕w:ֹ>PݒدJaki+6pn'maUEHw߳*_J͙y{:T>_<ׄ͛d&٠b7 8ud0 ^Qtշ8*/zn *>DvVk>"k7pRC_4x77vsl/+6\s:֖ڝ/ Y[3j_ oc^TӮ?i-.ƒW<`'+Y|Jm{/j,6eO]Wpn9R52Ƭ\7om[ ?5b9M VLYՎj[jV~7VmsDݷB7O^Tirm>SWEg]\My,-[\;(|;i}6 ],^$13+GU }kkߌO`־$ /%y\U 6hgIKm[g|mvW?ѧ;tڶc5#Ƭ ho :MhDk[^ʏ|P1ҷMYw&WoǑ_*iWaT\z=wFuK[w\@vgeGUh1a k%9B<膽6 ֩uIWBo۾SCuJ'\-]F[uFr.Q`g^2KZWNa^c7>g pk6\ -oZ/3ھ]^O[q^kvw>&+v5om*F6`wЩ?u#kM/v6kjkKǎee~ Ag/fwW ztI)_p4np g }aq,c#Zon(i6R>͂ڮc*})Izmbf+Ҽwu+5Yc=kj4$RXo%A7wHT_T~KMi<zVB W_;mW/׹d;j95?ufUڛ^̤lWbg.ݤl]VA#awk̚;&P6}#2V׌%gJ͕[Rx:2y,s{8dwE%:@Ӵ_,FY\ͬDOaykJ.#fW=k>;Mc^T++/ז&RLEmk&ۖ?uռOjK,ۥ'u W[ݮ9OccIw* 4jve*gϑ麭ڳ2Mmwn^"I My'ҴH+)ÓeB>Yڀޭm?r&DP\g:@y;J+E=6U}]u<ʏ]K}2z!&W}-?:~_ssֆSZ@xŶZY$zZvlV˹)R=ɫU[;5y~"UNCWu8!zTK{+w1I 076OҾÛjܺFZ igRQ;ٸ}ڼCR*xHϘ `&om|'\ٛS/IV)GjE~Q_"~ 4^e?^%YHo+rW|a%xS'3wT/KndЊKhqc3.Ȍ3y؊|+ٟ;^kglmx@2WmoAr^ܕIo`W_Hx͚!u(W s*3a;_;|<jiW*~kz[~Q15FİGKxt?+.]W>.Mʓs_5M# n|LdfTO䤜/{{|mWfwԺ>9O5㑷^t獢χq}kۤ]k8+/FE>a$W {s޾xU:$uߡ&^=3iCI6M-DK *|lc~2h:Ϋʐ_'YKm2tl3%]s_|W_^m/+D$rsJybGsnE|gk/2JUOP^?Pƭhm"ѣW|t>q7 צɯȵ?MVmXնu\y4s٢#Fkx&XmEo,n&+Κ7H}9:UN T"5c۾n&F.qagP+WyXiK68x-XbD]w8$F^}wmUvk<OqNq\t՜d**HsMl̯}mwW4xIo/}8,amS`zzs?|]c鲠ݒGm"L%bum+/ڂ{'XamWZJ4x W?h2k+u4Z)+*+ (s j=/SY~>yʓBt}+'>?7ZZ?^Փ#ŷ!*q[ n|;rxa a8a[*y e~btNK}ź~3ѫoM4tmsW~usy_\m;z pv<(^wݫ4ۧQ6k蟋 Ů5 %M|kj ҉E͸;[ceOTMΕg[Ro$n|%M*m;Ut&H|O[xNkey#T!kɝ[hex7Ok#ǽzhDz}+5Z&Z|Km^ۥ#ޔA5nW>Ljtm|skSuGnMTR_3PQZfeN]M{y^oQ-~m ": ӗo%w5i^iVX[^4 7~B?XZZC Y-+ب> M~g;X-_)AU?0zՇ*-J855"T]%-1iԀ[4ئ-?ԫ-WBF3/zk#u>9k)Rdl.Nֳ#`' c*R/qVCJ<#:pګ[aSC>R+tB8զ[ZpekQQ[cmZf?ݨfT_!33Sjqm"2tIH$5_^k>*K1;Ҽrx r:5v>񮵣Z;RیQʹ=x]9sVq{}Z4Ъw??Y7.[u9X~П,6KҦhd`zM\0;_WШp?=燼Q}[rӈ.0\$UۍIukzkU,WU8. }5_lMrֶob6i{U}h҃WZa6qWi~ WMmqͥڬr΋4^5Gx6n{y7uA^s$~~)db?'EչA\ulמGTEic.&PFWKŸ(׶|vD jS=TY87mݱԟ⢷D) 62Dӛ^|+sW:o fDI6~*0;s_Vz:nf͕ _%x~4KoK"~6B?1YOSٿ'_ E m5IV+72zuS5)Nv&۷}}+뿎ǯϺWY% :nܚox^px}=e&@ll70X%(IBZZ%ylﴛhגHQ)"s M'f+ FNKc?O%Wx\6C܏Wי8'͹}=ߊ5-+XK[_9_Wh͚>Zs{_mۑ:[uثׄNBfGM7V7nu5 F֥KegbrkIvɿ͌ڄ1õF$& 6>dпoặkπ~5}t]{V02r*RJHTykX^2.HU@ZZ}\[һ)o|I6=?pDP7Pr{Wn:fLpq5I5m(,ESӺ;ktX|{ j򶸔"?yE.[X8'{FKI&㶼ƚj ۫PiV*9:>kT93~f$ubMHsƗv73_h| |;n*& 4کΆZݾ/ jڃ+2;}+?h:? V JMm? Z(}X θ\ZGk;u XbRS߅4xY{]NiY=L6Z?.t=55:|S]QqľnkeΖ{Tq^R] JXsܖ!c*ntҵ&w|K/KG:yii5T.J鴂>u.fmsia1pXwNuu_^xkmx| ]kgnw= /l͒K5m[0/Դٮ1nx7ΏqvQ ;V}-?LSO9s?t[Utr)j0~d˚Hk]3GHb\U.m;, 4J7s^|AמfXerR>}2i[']Gdeɮj,fN:nAY*rZo)afpخIԔRIYݔn{4,}z xzV}ו<Z&0rz㰞[Wݚ7ZVudb+W?Г}C[KV8[mUJKOU^rW0(RcT7TM٢vb 3ZaPQOL۩?Epj+H4Dn͍|>oe_+ai D6vtoVmX9S55nN֬6_qh᛭T}7@$b}|] ֶu"Zsr-B4y%s0wsqa+M ^Y=y#IPϞ[Һoopl"''?z^ax_d--JI_Zgni.Ÿfyx^ _(_ɫÿhxNde56l̲~=z5ſĉ`eܒ΄+\7j{M0oPcX 8ֶͯ3:{%g-G嚣w콩i\FS~ϷCU鲯26?. ?f~̒ D*zWQN[rox2_@l8?ZR!yx+/bC5o*?1\ ;_ vpI-ggNZkqN<]Uemo+[~ %Ιy ;mQiR&x~{yWx'ҸOv"/=YY~RFx׍j~j4vkX~*^toIiVJ=̖i;sXK$~lUaum8t:eCXKs,V ?}AWǺ }If_K.F8Ƨr;4f[Dx\/ OxJF6w?nY\zWYMsӿ2>G!HoDixUM#VϥeE0uy.l OM;Qa Q[ך |?|1ym%č^?ױNM6c5ϜiobVoϊo5.ّI|\^}{oJü3i7En}cUtxe[yQ_"xv4Fc]&ۏ,* ILMBaF7fÙXKԬ7啝V.V&|۫?gWy77j>=~`u{Cs J/Emڹ iLjֱ}w-^kӺ2|DŽҚ;ҭ#e.oJT ?4*_c\TvheUy*9$vrs>S$BZ홷^94pT#QEYEUvB/b~ң&o{|~d:ihqq ͂)]YVxQBXD+-q_K =qViɄ2&~M+zTVTX\m9cJh{Ńiy/^&`|%vO_[^IUn-<дk_I9lqU40i6}|;WJA++NODY&ڂI}Y&lx־H/2S^?:O*u- ㏉ ʶKjڬڦ-}ؓ_cj t͒kO O dE&֌aUiiE -ŵګ~xyEYŗRwF=cŷڊ$OUZqgYZK=Tm4ֱ dWI]+9fjH;75뾈ן=p ~k^0gytNiۅ{O[>iE{zi3T3W.<14J&vΗ4{KW85նPQJn:,T[kJ]ԴMUѬZ0ҹyC}=t I|Mqs4uoV*]7zzWS^Tθr'}/VZEqomxme,YG"7;-|?2${U$h]Z3o|o[>%'JC]SV&b#7<kbL}V, yһ/X1X[D^G5t;[sC&m]I6[2am:\pi%ţswbiva*ǘ7+Kv "C\j]6j "ck-O!Glt{u7sWexcDմCgTj554˛}s"𾴯ŞX[?.+ߋ>'dsc^esg*`C)+ѯ%V^R$ԖQFtj2sAՏw/h&%%alCa؂W 74mwVD*AK^ >jLq(d|tP0b 殴IFI~$Iѯ/k(Z$`iGBOVZ߳+wtG+!_>x"4]'pk_KtՊOߥ)7͜޺]KUp{;*ϋ1|əWƴh.WjhMyǀwgqCISJdܱgwHX–ڷy2E:FH7w6Qsǵz«ԾinKp[hjμmsUiٛN;XfIkWOݺ⇂Eiis մۍ>Ue">d-jǢwJXۿ6^ikY[KN-UW%kCVtÖqc+;g^5Lդ(VesM-8fMr3╥^ct)?ֿ aռ`]^*g|[j: $˽=Uc?빡s3,%-tu1VK\o^*qR?:7$ݳ_mxV,SG*yu Vh"7J&4Ğr)Ogk^)Yk No ڴ;wiayW6~ͨ͊ /^32N} ykY4!⻪8i7s+~5/|Qip5O6u4Mù#ܽopQJz-ϻiEtVuk{=Ƈjcʵqi5:OjoJKނ֟v\Z?^ v6ˍ➌0.4R[{1jˉ-FGysGKk${'YZKs޾URg{T[f,ھ4إ=įA[Q=>/hT㋄$&!I/7q_NhﴷDY|ZwXD+'ޢoA/l__|ygFK= |zף$޵C w4M[riF3J͕7;WOsj .Mkki_o&M;K{FێkG4RI/W[í>!=m?b].%;9֍5$z\̒zbv澍f3nUƒb|D&m5Upi*1}<mq n\U_|-{33|JM2+_(Ek:֜}MMczn}oeh@r}i"cY h|ZCTزp+ Wy\Υ8썯k]|ޟzZމ+&ZmFQX) EsM R5ϽBW9>,3|jUZ}b-q5ДO?ԓ Չ7ޮX_݇8j1jU5Ի\C ~fj꽦YTَ;w|k{Օw]>+6hxm"/+;oiwL"\}m^-bm&WzncЂOcҽAk=ei{=kcqjTrI+{ |?;ĺ?ghK;W(xXXaImclB_qY g ű\خޙhLK$i WxO+EB͂xgU}?R%\qZ֣B6vIL'8z]qiZ^Ȋ$+_X_uҠB%?e.8;Az)|G YM;޶?L7O]1\kR&jEKC3kZ=\=͵*&bΡFc ffR1 ğֶt?kyipK}XJ$qRp@{^$t;!sAפW4ќ\B#or5ZU𾧡"[oV^maYnRx# Kgup2^<ƬgZ2iJ7=7h-kψmď L$R?*Dx~n*Ůt20lM9T^ʒ>d꥾`k,hP,1ζK8sީx[252voeg\h0ɽ]ݛ:o/m~V;q\w4s ôK Ҵj-oנ~ͺUq4cny$%` V{gnUR[J<;ycȻCy:۾lf-ca ªN+$ ߎk?4_Ҽ靊כWY7k=?g?XZe]ȨZ"X0V~&WFM}-Q-uq1Fcĩc2G8񇌵Yu_\\ʻIs_s^xx+㗄!m+-}|7w*_L)N?:$ZΓ(vͧu|MiI:ˉEdiJ-rR;;c=i2/QWM*J ƭYMĢ+S =Vp;Ғ*2qL|+}ui;c {mńƓf_1k뭡\0 /h1:jQ$p?JmfsL^ .dbCWWп4bt)R%|9s({_½:R M>(T<3ͦIq 26AQtF]ե&]Iz,,hٷßUX}9mKwLr8~6RsWRZ$Lvg;^gQh:<˹4t~eԵNMn8gY@Re݂+=xT!]uz~LIr)XK{$E$IԘS=X%t<Βk÷$WZmⴶ-n"捕r?ta#h9=.Bn渟xW \jf-NJԞZ/yg551G͖ uPTQyROMGv#|^J>a$f5!Ҳwe"gE]r i>^Yi+}-U륶>dFZY>_8;ןI-eVܒW%XRLvԖ qf\ T~ *+qY8-#5ӌDPꏛGSl_tɚ5ުom})V.-S~"M6XmOw65}o2EY5hƑES_O~ds_0]| ?ڭpLt5KUv ҽGƞ Iy#w뷚/ٞV-ב_J%+8x˞SNvm%Uد}CL n3=ƛ,cRWKue|I)U`zף~Vu$ʼtX.?@N;є{3?zǚEʹ7K(9Ԛ}(&{L^Z[-|_*~iPD*W^jͫ,1>3Y?~(^[ NEsٮ}m>35 MEͩ~(\h쮤/"_o4m#ڏcN#n4خgG^/>Mt6ʚ׮]O.f:\7ٯv3j"-3<;WX<0L׷~ΩdVzujRDgTle\Ks"kf6s(麽أj;Ur+Z}&gU̶^zE|H[ƿ8澵NV-ucT})&k7J2+ [WZԙemծcސ}KD/lEKcThǞ;_Ur>pamRW*Bӂ+>k4kFe'V\Vw3WmW|A5rx_.޵_/CsJ?]̒6",Ix~\H5z~^;˵/wl.݇ QjkrnzX;T;`zFx|YGDG5yޠ1!N|^i5mrvXN{|s?ޯ|w/.ۤ菆75x5W%cբMءmo)^\Wkm2]52(G(eYP5t6e\fSG4&{K sC̳_uZ_q_VxNU?ݮZ>VRG|litY} Y6^:_d|^N7&>2l[ю#ފg|?wu⾶]i, >kS7Rjդ3埋P>*vj 6p+Vu_'=WnYP~-WNñPpˏ\'v eo(ܭʝ]Űg9I}P?o>#"i B|I%H~9v*^AmqԘ1צj5̋{K={h#i(Ţ'?=v? B꿳,61z=~k(_35g7ZUտfh߼1oPϨ~Κᓍ>+ȫ߲LJF"Y!%GCqzcmטku6L]|/mdXR法v$*WIu:7 C-p郏aɧ;&xo4S/d~FxB[utiV=וm}q;-w~$+fn+(k-xSdn+7M6wچU8+ג ]Z}̧ i\xmvnaԭ㗣}14lodYCr5N$N1ٿt;=!_hO>媴*+^'Gmr+Bٮ]&Dw>rǜzfc/ttnhfhߨa:Ooo/Wq⯉*ZfӂkEu-ě!LdzZͷl%[SXys&:>L muhE?*;Qp:O^Ju~FZ뮶*>_3ZQIIJ/ʣz[6U\[V#xe'֭u=/Zq'QCS;4j[9_WxN{Yck5yuUTTT}Aff:O֩LmZ^Xb&[z ,q,r(J}M./=jw̏Ş R#pq\O<$6rEjgk\g͡ ͸z-SZid=KEX6izZ`v{k\+%S3EL_E~~'r{QEyΜ9'scQE^Ұfşu47Q]Q5ydU%OTf{Gyo<+$&+Œ'mmf+|FjE3QEndQEQEQEQEQE>/^3EC?>ѠZ xH x#4Q]1O|yqxFFŠ+> <Î8y~ݢ„gߴ}ܺ'vQykVQEB3}y۩<3iwowQEwTK/C}lu,]:zQEkI+ g9'Wԍ9cZ޹eMkX嶄I{+ҹ=GRr=(1? H伹5?袼屣tests/_couleur_rgb2hsv.php000066600000162137151451631460011715 0ustar00' . join('', $err) . ''); } echo "OK"; function essais__couleur_rgb2hsv(){ $essais = array ( 0 => array ( 0 => array ( 'h' => 0, 's' => 0, 'v' => 0, ), 1 => 0, 2 => 0, 3 => 0, ), 1 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'v' => 0.0274509803922, ), 1 => 0, 2 => 0, 3 => 7, ), 2 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'v' => 0.0588235294118, ), 1 => 0, 2 => 0, 3 => 15, ), 3 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'v' => 0.247058823529, ), 1 => 0, 2 => 0, 3 => 63, ), 4 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 0, 3 => 127, ), 5 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 0, 3 => 191, ), 6 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 0, 3 => 255, ), 7 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'v' => 0.0274509803922, ), 1 => 0, 2 => 7, 3 => 0, ), 8 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'v' => 0.0274509803922, ), 1 => 0, 2 => 7, 3 => 7, ), 9 => array ( 0 => array ( 'h' => 0.588888888889, 's' => 1, 'v' => 0.0588235294118, ), 1 => 0, 2 => 7, 3 => 15, ), 10 => array ( 0 => array ( 'h' => 0.648148148148, 's' => 1, 'v' => 0.247058823529, ), 1 => 0, 2 => 7, 3 => 63, ), 11 => array ( 0 => array ( 'h' => 0.657480314961, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 7, 3 => 127, ), 12 => array ( 0 => array ( 'h' => 0.660558464223, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 7, 3 => 191, ), 13 => array ( 0 => array ( 'h' => 0.662091503268, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 7, 3 => 255, ), 14 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'v' => 0.0588235294118, ), 1 => 0, 2 => 15, 3 => 0, ), 15 => array ( 0 => array ( 'h' => 0.411111111111, 's' => 1, 'v' => 0.0588235294118, ), 1 => 0, 2 => 15, 3 => 7, ), 16 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'v' => 0.0588235294118, ), 1 => 0, 2 => 15, 3 => 15, ), 17 => array ( 0 => array ( 'h' => 0.626984126984, 's' => 1, 'v' => 0.247058823529, ), 1 => 0, 2 => 15, 3 => 63, ), 18 => array ( 0 => array ( 'h' => 0.646981627297, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 15, 3 => 127, ), 19 => array ( 0 => array ( 'h' => 0.653577661431, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 15, 3 => 191, ), 20 => array ( 0 => array ( 'h' => 0.656862745098, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 15, 3 => 255, ), 21 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'v' => 0.247058823529, ), 1 => 0, 2 => 63, 3 => 0, ), 22 => array ( 0 => array ( 'h' => 0.351851851852, 's' => 1, 'v' => 0.247058823529, ), 1 => 0, 2 => 63, 3 => 7, ), 23 => array ( 0 => array ( 'h' => 0.373015873016, 's' => 1, 'v' => 0.247058823529, ), 1 => 0, 2 => 63, 3 => 15, ), 24 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'v' => 0.247058823529, ), 1 => 0, 2 => 63, 3 => 63, ), 25 => array ( 0 => array ( 'h' => 0.583989501312, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 63, 3 => 127, ), 26 => array ( 0 => array ( 'h' => 0.611692844677, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 63, 3 => 191, ), 27 => array ( 0 => array ( 'h' => 0.625490196078, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 63, 3 => 255, ), 28 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 127, 3 => 0, ), 29 => array ( 0 => array ( 'h' => 0.342519685039, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 127, 3 => 7, ), 30 => array ( 0 => array ( 'h' => 0.353018372703, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 127, 3 => 15, ), 31 => array ( 0 => array ( 'h' => 0.416010498688, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 127, 3 => 63, ), 32 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'v' => 0.498039215686, ), 1 => 0, 2 => 127, 3 => 127, ), 33 => array ( 0 => array ( 'h' => 0.555846422339, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 127, 3 => 191, ), 34 => array ( 0 => array ( 'h' => 0.583660130719, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 127, 3 => 255, ), 35 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 191, 3 => 0, ), 36 => array ( 0 => array ( 'h' => 0.339441535777, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 191, 3 => 7, ), 37 => array ( 0 => array ( 'h' => 0.346422338569, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 191, 3 => 15, ), 38 => array ( 0 => array ( 'h' => 0.388307155323, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 191, 3 => 63, ), 39 => array ( 0 => array ( 'h' => 0.444153577661, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 191, 3 => 127, ), 40 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'v' => 0.749019607843, ), 1 => 0, 2 => 191, 3 => 191, ), 41 => array ( 0 => array ( 'h' => 0.541830065359, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 191, 3 => 255, ), 42 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 255, 3 => 0, ), 43 => array ( 0 => array ( 'h' => 0.337908496732, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 255, 3 => 7, ), 44 => array ( 0 => array ( 'h' => 0.343137254902, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 255, 3 => 15, ), 45 => array ( 0 => array ( 'h' => 0.374509803922, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 255, 3 => 63, ), 46 => array ( 0 => array ( 'h' => 0.416339869281, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 255, 3 => 127, ), 47 => array ( 0 => array ( 'h' => 0.458169934641, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 255, 3 => 191, ), 48 => array ( 0 => array ( 'h' => 0.5, 's' => 1, 'v' => 1, ), 1 => 0, 2 => 255, 3 => 255, ), 49 => array ( 0 => array ( 'h' => 0, 's' => 1, 'v' => 0.0274509803922, ), 1 => 7, 2 => 0, 3 => 0, ), 50 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'v' => 0.0274509803922, ), 1 => 7, 2 => 0, 3 => 7, ), 51 => array ( 0 => array ( 'h' => 0.744444444444, 's' => 1, 'v' => 0.0588235294118, ), 1 => 7, 2 => 0, 3 => 15, ), 52 => array ( 0 => array ( 'h' => 0.685185185185, 's' => 1, 'v' => 0.247058823529, ), 1 => 7, 2 => 0, 3 => 63, ), 53 => array ( 0 => array ( 'h' => 0.675853018373, 's' => 1, 'v' => 0.498039215686, ), 1 => 7, 2 => 0, 3 => 127, ), 54 => array ( 0 => array ( 'h' => 0.67277486911, 's' => 1, 'v' => 0.749019607843, ), 1 => 7, 2 => 0, 3 => 191, ), 55 => array ( 0 => array ( 'h' => 0.671241830065, 's' => 1, 'v' => 1, ), 1 => 7, 2 => 0, 3 => 255, ), 56 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'v' => 0.0274509803922, ), 1 => 7, 2 => 7, 3 => 0, ), 57 => array ( 0 => array ( 'h' => 0, 's' => 0, 'v' => 0.0274509803922, ), 1 => 7, 2 => 7, 3 => 7, ), 58 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.533333333333, 'v' => 0.0588235294118, ), 1 => 7, 2 => 7, 3 => 15, ), 59 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 7, 2 => 7, 3 => 63, ), 60 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 7, 2 => 7, 3 => 127, ), 61 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 7, 3 => 191, ), 62 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 7, 3 => 255, ), 63 => array ( 0 => array ( 'h' => 0.255555555556, 's' => 1, 'v' => 0.0588235294118, ), 1 => 7, 2 => 15, 3 => 0, ), 64 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.533333333333, 'v' => 0.0588235294118, ), 1 => 7, 2 => 15, 3 => 7, ), 65 => array ( 0 => array ( 'h' => 0.5, 's' => 0.533333333333, 'v' => 0.0588235294118, ), 1 => 7, 2 => 15, 3 => 15, ), 66 => array ( 0 => array ( 'h' => 0.642857142857, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 7, 2 => 15, 3 => 63, ), 67 => array ( 0 => array ( 'h' => 0.655555555556, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 7, 2 => 15, 3 => 127, ), 68 => array ( 0 => array ( 'h' => 0.659420289855, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 15, 3 => 191, ), 69 => array ( 0 => array ( 'h' => 0.661290322581, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 15, 3 => 255, ), 70 => array ( 0 => array ( 'h' => 0.314814814815, 's' => 1, 'v' => 0.247058823529, ), 1 => 7, 2 => 63, 3 => 0, ), 71 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 7, 2 => 63, 3 => 7, ), 72 => array ( 0 => array ( 'h' => 0.357142857143, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 7, 2 => 63, 3 => 15, ), 73 => array ( 0 => array ( 'h' => 0.5, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 7, 2 => 63, 3 => 63, ), 74 => array ( 0 => array ( 'h' => 0.588888888889, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 7, 2 => 63, 3 => 127, ), 75 => array ( 0 => array ( 'h' => 0.615942028986, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 63, 3 => 191, ), 76 => array ( 0 => array ( 'h' => 0.629032258065, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 63, 3 => 255, ), 77 => array ( 0 => array ( 'h' => 0.324146981627, 's' => 1, 'v' => 0.498039215686, ), 1 => 7, 2 => 127, 3 => 0, ), 78 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 7, 2 => 127, 3 => 7, ), 79 => array ( 0 => array ( 'h' => 0.344444444444, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 7, 2 => 127, 3 => 15, ), 80 => array ( 0 => array ( 'h' => 0.411111111111, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 7, 2 => 127, 3 => 63, ), 81 => array ( 0 => array ( 'h' => 0.5, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 7, 2 => 127, 3 => 127, ), 82 => array ( 0 => array ( 'h' => 0.557971014493, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 127, 3 => 191, ), 83 => array ( 0 => array ( 'h' => 0.586021505376, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 127, 3 => 255, ), 84 => array ( 0 => array ( 'h' => 0.32722513089, 's' => 1, 'v' => 0.749019607843, ), 1 => 7, 2 => 191, 3 => 0, ), 85 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 191, 3 => 7, ), 86 => array ( 0 => array ( 'h' => 0.340579710145, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 191, 3 => 15, ), 87 => array ( 0 => array ( 'h' => 0.384057971014, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 191, 3 => 63, ), 88 => array ( 0 => array ( 'h' => 0.442028985507, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 191, 3 => 127, ), 89 => array ( 0 => array ( 'h' => 0.5, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 7, 2 => 191, 3 => 191, ), 90 => array ( 0 => array ( 'h' => 0.543010752688, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 191, 3 => 255, ), 91 => array ( 0 => array ( 'h' => 0.328758169935, 's' => 1, 'v' => 1, ), 1 => 7, 2 => 255, 3 => 0, ), 92 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 255, 3 => 7, ), 93 => array ( 0 => array ( 'h' => 0.338709677419, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 255, 3 => 15, ), 94 => array ( 0 => array ( 'h' => 0.370967741935, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 255, 3 => 63, ), 95 => array ( 0 => array ( 'h' => 0.413978494624, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 255, 3 => 127, ), 96 => array ( 0 => array ( 'h' => 0.456989247312, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 255, 3 => 191, ), 97 => array ( 0 => array ( 'h' => 0.5, 's' => 0.972549019608, 'v' => 1, ), 1 => 7, 2 => 255, 3 => 255, ), 98 => array ( 0 => array ( 'h' => 0, 's' => 1, 'v' => 0.0588235294118, ), 1 => 15, 2 => 0, 3 => 0, ), 99 => array ( 0 => array ( 'h' => 0.922222222222, 's' => 1, 'v' => 0.0588235294118, ), 1 => 15, 2 => 0, 3 => 7, ), 100 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'v' => 0.0588235294118, ), 1 => 15, 2 => 0, 3 => 15, ), 101 => array ( 0 => array ( 'h' => 0.706349206349, 's' => 1, 'v' => 0.247058823529, ), 1 => 15, 2 => 0, 3 => 63, ), 102 => array ( 0 => array ( 'h' => 0.686351706037, 's' => 1, 'v' => 0.498039215686, ), 1 => 15, 2 => 0, 3 => 127, ), 103 => array ( 0 => array ( 'h' => 0.679755671902, 's' => 1, 'v' => 0.749019607843, ), 1 => 15, 2 => 0, 3 => 191, ), 104 => array ( 0 => array ( 'h' => 0.676470588235, 's' => 1, 'v' => 1, ), 1 => 15, 2 => 0, 3 => 255, ), 105 => array ( 0 => array ( 'h' => 0.0777777777778, 's' => 1, 'v' => 0.0588235294118, ), 1 => 15, 2 => 7, 3 => 0, ), 106 => array ( 0 => array ( 'h' => 0, 's' => 0.533333333333, 'v' => 0.0588235294118, ), 1 => 15, 2 => 7, 3 => 7, ), 107 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.533333333333, 'v' => 0.0588235294118, ), 1 => 15, 2 => 7, 3 => 15, ), 108 => array ( 0 => array ( 'h' => 0.690476190476, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 15, 2 => 7, 3 => 63, ), 109 => array ( 0 => array ( 'h' => 0.677777777778, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 15, 2 => 7, 3 => 127, ), 110 => array ( 0 => array ( 'h' => 0.673913043478, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 15, 2 => 7, 3 => 191, ), 111 => array ( 0 => array ( 'h' => 0.672043010753, 's' => 0.972549019608, 'v' => 1, ), 1 => 15, 2 => 7, 3 => 255, ), 112 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'v' => 0.0588235294118, ), 1 => 15, 2 => 15, 3 => 0, ), 113 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.533333333333, 'v' => 0.0588235294118, ), 1 => 15, 2 => 15, 3 => 7, ), 114 => array ( 0 => array ( 'h' => 0, 's' => 0, 'v' => 0.0588235294118, ), 1 => 15, 2 => 15, 3 => 15, ), 115 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.761904761905, 'v' => 0.247058823529, ), 1 => 15, 2 => 15, 3 => 63, ), 116 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 15, 2 => 15, 3 => 127, ), 117 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 15, 2 => 15, 3 => 191, ), 118 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 15, 3 => 255, ), 119 => array ( 0 => array ( 'h' => 0.293650793651, 's' => 1, 'v' => 0.247058823529, ), 1 => 15, 2 => 63, 3 => 0, ), 120 => array ( 0 => array ( 'h' => 0.309523809524, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 15, 2 => 63, 3 => 7, ), 121 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.761904761905, 'v' => 0.247058823529, ), 1 => 15, 2 => 63, 3 => 15, ), 122 => array ( 0 => array ( 'h' => 0.5, 's' => 0.761904761905, 'v' => 0.247058823529, ), 1 => 15, 2 => 63, 3 => 63, ), 123 => array ( 0 => array ( 'h' => 0.595238095238, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 15, 2 => 63, 3 => 127, ), 124 => array ( 0 => array ( 'h' => 0.621212121212, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 15, 2 => 63, 3 => 191, ), 125 => array ( 0 => array ( 'h' => 0.633333333333, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 63, 3 => 255, ), 126 => array ( 0 => array ( 'h' => 0.313648293963, 's' => 1, 'v' => 0.498039215686, ), 1 => 15, 2 => 127, 3 => 0, ), 127 => array ( 0 => array ( 'h' => 0.322222222222, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 15, 2 => 127, 3 => 7, ), 128 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 15, 2 => 127, 3 => 15, ), 129 => array ( 0 => array ( 'h' => 0.404761904762, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 15, 2 => 127, 3 => 63, ), 130 => array ( 0 => array ( 'h' => 0.5, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 15, 2 => 127, 3 => 127, ), 131 => array ( 0 => array ( 'h' => 0.560606060606, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 15, 2 => 127, 3 => 191, ), 132 => array ( 0 => array ( 'h' => 0.588888888889, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 127, 3 => 255, ), 133 => array ( 0 => array ( 'h' => 0.320244328098, 's' => 1, 'v' => 0.749019607843, ), 1 => 15, 2 => 191, 3 => 0, ), 134 => array ( 0 => array ( 'h' => 0.326086956522, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 15, 2 => 191, 3 => 7, ), 135 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 15, 2 => 191, 3 => 15, ), 136 => array ( 0 => array ( 'h' => 0.378787878788, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 15, 2 => 191, 3 => 63, ), 137 => array ( 0 => array ( 'h' => 0.439393939394, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 15, 2 => 191, 3 => 127, ), 138 => array ( 0 => array ( 'h' => 0.5, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 15, 2 => 191, 3 => 191, ), 139 => array ( 0 => array ( 'h' => 0.544444444444, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 191, 3 => 255, ), 140 => array ( 0 => array ( 'h' => 0.323529411765, 's' => 1, 'v' => 1, ), 1 => 15, 2 => 255, 3 => 0, ), 141 => array ( 0 => array ( 'h' => 0.327956989247, 's' => 0.972549019608, 'v' => 1, ), 1 => 15, 2 => 255, 3 => 7, ), 142 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 255, 3 => 15, ), 143 => array ( 0 => array ( 'h' => 0.366666666667, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 255, 3 => 63, ), 144 => array ( 0 => array ( 'h' => 0.411111111111, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 255, 3 => 127, ), 145 => array ( 0 => array ( 'h' => 0.455555555556, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 255, 3 => 191, ), 146 => array ( 0 => array ( 'h' => 0.5, 's' => 0.941176470588, 'v' => 1, ), 1 => 15, 2 => 255, 3 => 255, ), 147 => array ( 0 => array ( 'h' => 0, 's' => 1, 'v' => 0.247058823529, ), 1 => 63, 2 => 0, 3 => 0, ), 148 => array ( 0 => array ( 'h' => 0.981481481481, 's' => 1, 'v' => 0.247058823529, ), 1 => 63, 2 => 0, 3 => 7, ), 149 => array ( 0 => array ( 'h' => 0.960317460317, 's' => 1, 'v' => 0.247058823529, ), 1 => 63, 2 => 0, 3 => 15, ), 150 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'v' => 0.247058823529, ), 1 => 63, 2 => 0, 3 => 63, ), 151 => array ( 0 => array ( 'h' => 0.749343832021, 's' => 1, 'v' => 0.498039215686, ), 1 => 63, 2 => 0, 3 => 127, ), 152 => array ( 0 => array ( 'h' => 0.721640488656, 's' => 1, 'v' => 0.749019607843, ), 1 => 63, 2 => 0, 3 => 191, ), 153 => array ( 0 => array ( 'h' => 0.707843137255, 's' => 1, 'v' => 1, ), 1 => 63, 2 => 0, 3 => 255, ), 154 => array ( 0 => array ( 'h' => 0.0185185185185, 's' => 1, 'v' => 0.247058823529, ), 1 => 63, 2 => 7, 3 => 0, ), 155 => array ( 0 => array ( 'h' => 0, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 63, 2 => 7, 3 => 7, ), 156 => array ( 0 => array ( 'h' => 0.97619047619, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 63, 2 => 7, 3 => 15, ), 157 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 63, 2 => 7, 3 => 63, ), 158 => array ( 0 => array ( 'h' => 0.744444444444, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 63, 2 => 7, 3 => 127, ), 159 => array ( 0 => array ( 'h' => 0.717391304348, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 63, 2 => 7, 3 => 191, ), 160 => array ( 0 => array ( 'h' => 0.704301075269, 's' => 0.972549019608, 'v' => 1, ), 1 => 63, 2 => 7, 3 => 255, ), 161 => array ( 0 => array ( 'h' => 0.0396825396825, 's' => 1, 'v' => 0.247058823529, ), 1 => 63, 2 => 15, 3 => 0, ), 162 => array ( 0 => array ( 'h' => 0.0238095238095, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 63, 2 => 15, 3 => 7, ), 163 => array ( 0 => array ( 'h' => 0, 's' => 0.761904761905, 'v' => 0.247058823529, ), 1 => 63, 2 => 15, 3 => 15, ), 164 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.761904761905, 'v' => 0.247058823529, ), 1 => 63, 2 => 15, 3 => 63, ), 165 => array ( 0 => array ( 'h' => 0.738095238095, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 63, 2 => 15, 3 => 127, ), 166 => array ( 0 => array ( 'h' => 0.712121212121, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 63, 2 => 15, 3 => 191, ), 167 => array ( 0 => array ( 'h' => 0.7, 's' => 0.941176470588, 'v' => 1, ), 1 => 63, 2 => 15, 3 => 255, ), 168 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'v' => 0.247058823529, ), 1 => 63, 2 => 63, 3 => 0, ), 169 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.888888888889, 'v' => 0.247058823529, ), 1 => 63, 2 => 63, 3 => 7, ), 170 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.761904761905, 'v' => 0.247058823529, ), 1 => 63, 2 => 63, 3 => 15, ), 171 => array ( 0 => array ( 'h' => 0, 's' => 0, 'v' => 0.247058823529, ), 1 => 63, 2 => 63, 3 => 63, ), 172 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.503937007874, 'v' => 0.498039215686, ), 1 => 63, 2 => 63, 3 => 127, ), 173 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 63, 2 => 63, 3 => 191, ), 174 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.752941176471, 'v' => 1, ), 1 => 63, 2 => 63, 3 => 255, ), 175 => array ( 0 => array ( 'h' => 0.250656167979, 's' => 1, 'v' => 0.498039215686, ), 1 => 63, 2 => 127, 3 => 0, ), 176 => array ( 0 => array ( 'h' => 0.255555555556, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 63, 2 => 127, 3 => 7, ), 177 => array ( 0 => array ( 'h' => 0.261904761905, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 63, 2 => 127, 3 => 15, ), 178 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.503937007874, 'v' => 0.498039215686, ), 1 => 63, 2 => 127, 3 => 63, ), 179 => array ( 0 => array ( 'h' => 0.5, 's' => 0.503937007874, 'v' => 0.498039215686, ), 1 => 63, 2 => 127, 3 => 127, ), 180 => array ( 0 => array ( 'h' => 0.583333333333, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 63, 2 => 127, 3 => 191, ), 181 => array ( 0 => array ( 'h' => 0.611111111111, 's' => 0.752941176471, 'v' => 1, ), 1 => 63, 2 => 127, 3 => 255, ), 182 => array ( 0 => array ( 'h' => 0.278359511344, 's' => 1, 'v' => 0.749019607843, ), 1 => 63, 2 => 191, 3 => 0, ), 183 => array ( 0 => array ( 'h' => 0.282608695652, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 63, 2 => 191, 3 => 7, ), 184 => array ( 0 => array ( 'h' => 0.287878787879, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 63, 2 => 191, 3 => 15, ), 185 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 63, 2 => 191, 3 => 63, ), 186 => array ( 0 => array ( 'h' => 0.416666666667, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 63, 2 => 191, 3 => 127, ), 187 => array ( 0 => array ( 'h' => 0.5, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 63, 2 => 191, 3 => 191, ), 188 => array ( 0 => array ( 'h' => 0.555555555556, 's' => 0.752941176471, 'v' => 1, ), 1 => 63, 2 => 191, 3 => 255, ), 189 => array ( 0 => array ( 'h' => 0.292156862745, 's' => 1, 'v' => 1, ), 1 => 63, 2 => 255, 3 => 0, ), 190 => array ( 0 => array ( 'h' => 0.295698924731, 's' => 0.972549019608, 'v' => 1, ), 1 => 63, 2 => 255, 3 => 7, ), 191 => array ( 0 => array ( 'h' => 0.3, 's' => 0.941176470588, 'v' => 1, ), 1 => 63, 2 => 255, 3 => 15, ), 192 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.752941176471, 'v' => 1, ), 1 => 63, 2 => 255, 3 => 63, ), 193 => array ( 0 => array ( 'h' => 0.388888888889, 's' => 0.752941176471, 'v' => 1, ), 1 => 63, 2 => 255, 3 => 127, ), 194 => array ( 0 => array ( 'h' => 0.444444444444, 's' => 0.752941176471, 'v' => 1, ), 1 => 63, 2 => 255, 3 => 191, ), 195 => array ( 0 => array ( 'h' => 0.5, 's' => 0.752941176471, 'v' => 1, ), 1 => 63, 2 => 255, 3 => 255, ), 196 => array ( 0 => array ( 'h' => 0, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 0, 3 => 0, ), 197 => array ( 0 => array ( 'h' => 0.990813648294, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 0, 3 => 7, ), 198 => array ( 0 => array ( 'h' => 0.98031496063, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 0, 3 => 15, ), 199 => array ( 0 => array ( 'h' => 0.917322834646, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 0, 3 => 63, ), 200 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 0, 3 => 127, ), 201 => array ( 0 => array ( 'h' => 0.777486910995, 's' => 1, 'v' => 0.749019607843, ), 1 => 127, 2 => 0, 3 => 191, ), 202 => array ( 0 => array ( 'h' => 0.749673202614, 's' => 1, 'v' => 1, ), 1 => 127, 2 => 0, 3 => 255, ), 203 => array ( 0 => array ( 'h' => 0.00918635170604, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 7, 3 => 0, ), 204 => array ( 0 => array ( 'h' => 0, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 127, 2 => 7, 3 => 7, ), 205 => array ( 0 => array ( 'h' => 0.988888888889, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 127, 2 => 7, 3 => 15, ), 206 => array ( 0 => array ( 'h' => 0.922222222222, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 127, 2 => 7, 3 => 63, ), 207 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 127, 2 => 7, 3 => 127, ), 208 => array ( 0 => array ( 'h' => 0.775362318841, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 127, 2 => 7, 3 => 191, ), 209 => array ( 0 => array ( 'h' => 0.747311827957, 's' => 0.972549019608, 'v' => 1, ), 1 => 127, 2 => 7, 3 => 255, ), 210 => array ( 0 => array ( 'h' => 0.0196850393701, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 15, 3 => 0, ), 211 => array ( 0 => array ( 'h' => 0.0111111111111, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 127, 2 => 15, 3 => 7, ), 212 => array ( 0 => array ( 'h' => 0, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 127, 2 => 15, 3 => 15, ), 213 => array ( 0 => array ( 'h' => 0.928571428571, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 127, 2 => 15, 3 => 63, ), 214 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 127, 2 => 15, 3 => 127, ), 215 => array ( 0 => array ( 'h' => 0.772727272727, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 127, 2 => 15, 3 => 191, ), 216 => array ( 0 => array ( 'h' => 0.744444444444, 's' => 0.941176470588, 'v' => 1, ), 1 => 127, 2 => 15, 3 => 255, ), 217 => array ( 0 => array ( 'h' => 0.0826771653543, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 63, 3 => 0, ), 218 => array ( 0 => array ( 'h' => 0.0777777777778, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 127, 2 => 63, 3 => 7, ), 219 => array ( 0 => array ( 'h' => 0.0714285714286, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 127, 2 => 63, 3 => 15, ), 220 => array ( 0 => array ( 'h' => 0, 's' => 0.503937007874, 'v' => 0.498039215686, ), 1 => 127, 2 => 63, 3 => 63, ), 221 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.503937007874, 'v' => 0.498039215686, ), 1 => 127, 2 => 63, 3 => 127, ), 222 => array ( 0 => array ( 'h' => 0.75, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 127, 2 => 63, 3 => 191, ), 223 => array ( 0 => array ( 'h' => 0.722222222222, 's' => 0.752941176471, 'v' => 1, ), 1 => 127, 2 => 63, 3 => 255, ), 224 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'v' => 0.498039215686, ), 1 => 127, 2 => 127, 3 => 0, ), 225 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.944881889764, 'v' => 0.498039215686, ), 1 => 127, 2 => 127, 3 => 7, ), 226 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.88188976378, 'v' => 0.498039215686, ), 1 => 127, 2 => 127, 3 => 15, ), 227 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.503937007874, 'v' => 0.498039215686, ), 1 => 127, 2 => 127, 3 => 63, ), 228 => array ( 0 => array ( 'h' => 0, 's' => 0, 'v' => 0.498039215686, ), 1 => 127, 2 => 127, 3 => 127, ), 229 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.335078534031, 'v' => 0.749019607843, ), 1 => 127, 2 => 127, 3 => 191, ), 230 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.501960784314, 'v' => 1, ), 1 => 127, 2 => 127, 3 => 255, ), 231 => array ( 0 => array ( 'h' => 0.222513089005, 's' => 1, 'v' => 0.749019607843, ), 1 => 127, 2 => 191, 3 => 0, ), 232 => array ( 0 => array ( 'h' => 0.224637681159, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 127, 2 => 191, 3 => 7, ), 233 => array ( 0 => array ( 'h' => 0.227272727273, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 127, 2 => 191, 3 => 15, ), 234 => array ( 0 => array ( 'h' => 0.25, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 127, 2 => 191, 3 => 63, ), 235 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.335078534031, 'v' => 0.749019607843, ), 1 => 127, 2 => 191, 3 => 127, ), 236 => array ( 0 => array ( 'h' => 0.5, 's' => 0.335078534031, 'v' => 0.749019607843, ), 1 => 127, 2 => 191, 3 => 191, ), 237 => array ( 0 => array ( 'h' => 0.583333333333, 's' => 0.501960784314, 'v' => 1, ), 1 => 127, 2 => 191, 3 => 255, ), 238 => array ( 0 => array ( 'h' => 0.250326797386, 's' => 1, 'v' => 1, ), 1 => 127, 2 => 255, 3 => 0, ), 239 => array ( 0 => array ( 'h' => 0.252688172043, 's' => 0.972549019608, 'v' => 1, ), 1 => 127, 2 => 255, 3 => 7, ), 240 => array ( 0 => array ( 'h' => 0.255555555556, 's' => 0.941176470588, 'v' => 1, ), 1 => 127, 2 => 255, 3 => 15, ), 241 => array ( 0 => array ( 'h' => 0.277777777778, 's' => 0.752941176471, 'v' => 1, ), 1 => 127, 2 => 255, 3 => 63, ), 242 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.501960784314, 'v' => 1, ), 1 => 127, 2 => 255, 3 => 127, ), 243 => array ( 0 => array ( 'h' => 0.416666666667, 's' => 0.501960784314, 'v' => 1, ), 1 => 127, 2 => 255, 3 => 191, ), 244 => array ( 0 => array ( 'h' => 0.5, 's' => 0.501960784314, 'v' => 1, ), 1 => 127, 2 => 255, 3 => 255, ), 245 => array ( 0 => array ( 'h' => 0, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 0, 3 => 0, ), 246 => array ( 0 => array ( 'h' => 0.993891797557, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 0, 3 => 7, ), 247 => array ( 0 => array ( 'h' => 0.986910994764, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 0, 3 => 15, ), 248 => array ( 0 => array ( 'h' => 0.94502617801, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 0, 3 => 63, ), 249 => array ( 0 => array ( 'h' => 0.889179755672, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 0, 3 => 127, ), 250 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 0, 3 => 191, ), 251 => array ( 0 => array ( 'h' => 0.791503267974, 's' => 1, 'v' => 1, ), 1 => 191, 2 => 0, 3 => 255, ), 252 => array ( 0 => array ( 'h' => 0.00610820244328, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 7, 3 => 0, ), 253 => array ( 0 => array ( 'h' => 0, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 7, 3 => 7, ), 254 => array ( 0 => array ( 'h' => 0.992753623188, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 7, 3 => 15, ), 255 => array ( 0 => array ( 'h' => 0.949275362319, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 7, 3 => 63, ), 256 => array ( 0 => array ( 'h' => 0.891304347826, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 7, 3 => 127, ), 257 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 7, 3 => 191, ), 258 => array ( 0 => array ( 'h' => 0.790322580645, 's' => 0.972549019608, 'v' => 1, ), 1 => 191, 2 => 7, 3 => 255, ), 259 => array ( 0 => array ( 'h' => 0.0130890052356, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 15, 3 => 0, ), 260 => array ( 0 => array ( 'h' => 0.00724637681159, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 15, 3 => 7, ), 261 => array ( 0 => array ( 'h' => 0, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 191, 2 => 15, 3 => 15, ), 262 => array ( 0 => array ( 'h' => 0.954545454545, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 191, 2 => 15, 3 => 63, ), 263 => array ( 0 => array ( 'h' => 0.893939393939, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 191, 2 => 15, 3 => 127, ), 264 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 191, 2 => 15, 3 => 191, ), 265 => array ( 0 => array ( 'h' => 0.788888888889, 's' => 0.941176470588, 'v' => 1, ), 1 => 191, 2 => 15, 3 => 255, ), 266 => array ( 0 => array ( 'h' => 0.0549738219895, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 63, 3 => 0, ), 267 => array ( 0 => array ( 'h' => 0.0507246376812, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 63, 3 => 7, ), 268 => array ( 0 => array ( 'h' => 0.0454545454545, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 191, 2 => 63, 3 => 15, ), 269 => array ( 0 => array ( 'h' => 0, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 191, 2 => 63, 3 => 63, ), 270 => array ( 0 => array ( 'h' => 0.916666666667, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 191, 2 => 63, 3 => 127, ), 271 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 191, 2 => 63, 3 => 191, ), 272 => array ( 0 => array ( 'h' => 0.777777777778, 's' => 0.752941176471, 'v' => 1, ), 1 => 191, 2 => 63, 3 => 255, ), 273 => array ( 0 => array ( 'h' => 0.110820244328, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 127, 3 => 0, ), 274 => array ( 0 => array ( 'h' => 0.108695652174, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 127, 3 => 7, ), 275 => array ( 0 => array ( 'h' => 0.106060606061, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 191, 2 => 127, 3 => 15, ), 276 => array ( 0 => array ( 'h' => 0.0833333333333, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 191, 2 => 127, 3 => 63, ), 277 => array ( 0 => array ( 'h' => 0, 's' => 0.335078534031, 'v' => 0.749019607843, ), 1 => 191, 2 => 127, 3 => 127, ), 278 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.335078534031, 'v' => 0.749019607843, ), 1 => 191, 2 => 127, 3 => 191, ), 279 => array ( 0 => array ( 'h' => 0.75, 's' => 0.501960784314, 'v' => 1, ), 1 => 191, 2 => 127, 3 => 255, ), 280 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'v' => 0.749019607843, ), 1 => 191, 2 => 191, 3 => 0, ), 281 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.96335078534, 'v' => 0.749019607843, ), 1 => 191, 2 => 191, 3 => 7, ), 282 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.921465968586, 'v' => 0.749019607843, ), 1 => 191, 2 => 191, 3 => 15, ), 283 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.670157068063, 'v' => 0.749019607843, ), 1 => 191, 2 => 191, 3 => 63, ), 284 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.335078534031, 'v' => 0.749019607843, ), 1 => 191, 2 => 191, 3 => 127, ), 285 => array ( 0 => array ( 'h' => 0, 's' => 0, 'v' => 0.749019607843, ), 1 => 191, 2 => 191, 3 => 191, ), 286 => array ( 0 => array ( 'h' => 0.666666666667, 's' => 0.250980392157, 'v' => 1, ), 1 => 191, 2 => 191, 3 => 255, ), 287 => array ( 0 => array ( 'h' => 0.208496732026, 's' => 1, 'v' => 1, ), 1 => 191, 2 => 255, 3 => 0, ), 288 => array ( 0 => array ( 'h' => 0.209677419355, 's' => 0.972549019608, 'v' => 1, ), 1 => 191, 2 => 255, 3 => 7, ), 289 => array ( 0 => array ( 'h' => 0.211111111111, 's' => 0.941176470588, 'v' => 1, ), 1 => 191, 2 => 255, 3 => 15, ), 290 => array ( 0 => array ( 'h' => 0.222222222222, 's' => 0.752941176471, 'v' => 1, ), 1 => 191, 2 => 255, 3 => 63, ), 291 => array ( 0 => array ( 'h' => 0.25, 's' => 0.501960784314, 'v' => 1, ), 1 => 191, 2 => 255, 3 => 127, ), 292 => array ( 0 => array ( 'h' => 0.333333333333, 's' => 0.250980392157, 'v' => 1, ), 1 => 191, 2 => 255, 3 => 191, ), 293 => array ( 0 => array ( 'h' => 0.5, 's' => 0.250980392157, 'v' => 1, ), 1 => 191, 2 => 255, 3 => 255, ), 294 => array ( 0 => array ( 'h' => 0, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 0, 3 => 0, ), 295 => array ( 0 => array ( 'h' => 0.995424836601, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 0, 3 => 7, ), 296 => array ( 0 => array ( 'h' => 0.990196078431, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 0, 3 => 15, ), 297 => array ( 0 => array ( 'h' => 0.958823529412, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 0, 3 => 63, ), 298 => array ( 0 => array ( 'h' => 0.916993464052, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 0, 3 => 127, ), 299 => array ( 0 => array ( 'h' => 0.875163398693, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 0, 3 => 191, ), 300 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 0, 3 => 255, ), 301 => array ( 0 => array ( 'h' => 0.00457516339869, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 7, 3 => 0, ), 302 => array ( 0 => array ( 'h' => 0, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 7, 3 => 7, ), 303 => array ( 0 => array ( 'h' => 0.994623655914, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 7, 3 => 15, ), 304 => array ( 0 => array ( 'h' => 0.962365591398, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 7, 3 => 63, ), 305 => array ( 0 => array ( 'h' => 0.91935483871, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 7, 3 => 127, ), 306 => array ( 0 => array ( 'h' => 0.876344086022, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 7, 3 => 191, ), 307 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 7, 3 => 255, ), 308 => array ( 0 => array ( 'h' => 0.00980392156863, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 15, 3 => 0, ), 309 => array ( 0 => array ( 'h' => 0.00537634408602, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 15, 3 => 7, ), 310 => array ( 0 => array ( 'h' => 0, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 15, 3 => 15, ), 311 => array ( 0 => array ( 'h' => 0.966666666667, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 15, 3 => 63, ), 312 => array ( 0 => array ( 'h' => 0.922222222222, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 15, 3 => 127, ), 313 => array ( 0 => array ( 'h' => 0.877777777778, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 15, 3 => 191, ), 314 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 15, 3 => 255, ), 315 => array ( 0 => array ( 'h' => 0.0411764705882, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 63, 3 => 0, ), 316 => array ( 0 => array ( 'h' => 0.0376344086022, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 63, 3 => 7, ), 317 => array ( 0 => array ( 'h' => 0.0333333333333, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 63, 3 => 15, ), 318 => array ( 0 => array ( 'h' => 0, 's' => 0.752941176471, 'v' => 1, ), 1 => 255, 2 => 63, 3 => 63, ), 319 => array ( 0 => array ( 'h' => 0.944444444444, 's' => 0.752941176471, 'v' => 1, ), 1 => 255, 2 => 63, 3 => 127, ), 320 => array ( 0 => array ( 'h' => 0.888888888889, 's' => 0.752941176471, 'v' => 1, ), 1 => 255, 2 => 63, 3 => 191, ), 321 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.752941176471, 'v' => 1, ), 1 => 255, 2 => 63, 3 => 255, ), 322 => array ( 0 => array ( 'h' => 0.0830065359477, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 127, 3 => 0, ), 323 => array ( 0 => array ( 'h' => 0.0806451612903, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 127, 3 => 7, ), 324 => array ( 0 => array ( 'h' => 0.0777777777778, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 127, 3 => 15, ), 325 => array ( 0 => array ( 'h' => 0.0555555555556, 's' => 0.752941176471, 'v' => 1, ), 1 => 255, 2 => 127, 3 => 63, ), 326 => array ( 0 => array ( 'h' => 0, 's' => 0.501960784314, 'v' => 1, ), 1 => 255, 2 => 127, 3 => 127, ), 327 => array ( 0 => array ( 'h' => 0.916666666667, 's' => 0.501960784314, 'v' => 1, ), 1 => 255, 2 => 127, 3 => 191, ), 328 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.501960784314, 'v' => 1, ), 1 => 255, 2 => 127, 3 => 255, ), 329 => array ( 0 => array ( 'h' => 0.124836601307, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 191, 3 => 0, ), 330 => array ( 0 => array ( 'h' => 0.123655913978, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 191, 3 => 7, ), 331 => array ( 0 => array ( 'h' => 0.122222222222, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 191, 3 => 15, ), 332 => array ( 0 => array ( 'h' => 0.111111111111, 's' => 0.752941176471, 'v' => 1, ), 1 => 255, 2 => 191, 3 => 63, ), 333 => array ( 0 => array ( 'h' => 0.0833333333333, 's' => 0.501960784314, 'v' => 1, ), 1 => 255, 2 => 191, 3 => 127, ), 334 => array ( 0 => array ( 'h' => 0, 's' => 0.250980392157, 'v' => 1, ), 1 => 255, 2 => 191, 3 => 191, ), 335 => array ( 0 => array ( 'h' => 0.833333333333, 's' => 0.250980392157, 'v' => 1, ), 1 => 255, 2 => 191, 3 => 255, ), 336 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 1, 'v' => 1, ), 1 => 255, 2 => 255, 3 => 0, ), 337 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.972549019608, 'v' => 1, ), 1 => 255, 2 => 255, 3 => 7, ), 338 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.941176470588, 'v' => 1, ), 1 => 255, 2 => 255, 3 => 15, ), 339 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.752941176471, 'v' => 1, ), 1 => 255, 2 => 255, 3 => 63, ), 340 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.501960784314, 'v' => 1, ), 1 => 255, 2 => 255, 3 => 127, ), 341 => array ( 0 => array ( 'h' => 0.166666666667, 's' => 0.250980392157, 'v' => 1, ), 1 => 255, 2 => 255, 3 => 191, ), 342 => array ( 0 => array ( 'h' => 0, 's' => 0, 'v' => 1, ), 1 => 255, 2 => 255, 3 => 255, ), ); return $essais; } ?>tests/imagesrc.html000066600000001271151451631460010401 0ustar00[(#REM) Squelette (c) 2009 xxx Distribue sous licence GPL ] #SET{img1,#CHEMIN{tests/imagetest.jpg}|image_masque{tests/masque-305x85.png}|image_renforcement{0.1}|image_aplatir{jpg}|extraire_attribut{src}} #SET{img2,#CHEMIN{tests/imagetest.jpg}|image_masque{tests/masque-305x85.png}|image_renforcement{0.1}|image_aplatir{jpg}|extraire_attribut{src}} #SET{ok,OK} [(#GET{img1}|file_exists|non) Image [(#GET{img1})] inexistante
#SET{ok,''}] [(#GET{img2}|file_exists|non) Image [(#GET{img2})] inexistante
#SET{ok,''}] [(#GET{img1}|=={#GET{img2}}|non) Resultat incoherent : meme chaine de filtre produit 2 images differentes [(#GET{img1})]<>[(#GET{img2})]
#SET{ok,''}] #GET{ok} tests/_couleur_hsv2rgb.php000066600000044704151451631460011714 0ustar00' . join('', $err) . ''); } echo "OK"; function essais__couleur_hsv2rgb(){ $essais = array ( 0 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0, 3 => 0, ), 1 => array ( 0 => array ( 'r' => 63, 'g' => 63, 'b' => 63, ), 1 => 0, 2 => 0, 3 => 0.25, ), 2 => array ( 0 => array ( 'r' => 127, 'g' => 127, 'b' => 127, ), 1 => 0, 2 => 0, 3 => 0.5, ), 3 => array ( 0 => array ( 'r' => 191, 'g' => 191, 'b' => 191, ), 1 => 0, 2 => 0, 3 => 0.75, ), 4 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0, 2 => 0, 3 => 1, ), 5 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0.25, 3 => 0, ), 6 => array ( 0 => array ( 'r' => 63, 'g' => 47, 'b' => 47, ), 1 => 0, 2 => 0.25, 3 => 0.25, ), 7 => array ( 0 => array ( 'r' => 127, 'g' => 95, 'b' => 95, ), 1 => 0, 2 => 0.25, 3 => 0.5, ), 8 => array ( 0 => array ( 'r' => 191, 'g' => 143, 'b' => 143, ), 1 => 0, 2 => 0.25, 3 => 0.75, ), 9 => array ( 0 => array ( 'r' => 255, 'g' => 191, 'b' => 191, ), 1 => 0, 2 => 0.25, 3 => 1, ), 10 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0.5, 3 => 0, ), 11 => array ( 0 => array ( 'r' => 63, 'g' => 31, 'b' => 31, ), 1 => 0, 2 => 0.5, 3 => 0.25, ), 12 => array ( 0 => array ( 'r' => 127, 'g' => 63, 'b' => 63, ), 1 => 0, 2 => 0.5, 3 => 0.5, ), 13 => array ( 0 => array ( 'r' => 191, 'g' => 95, 'b' => 95, ), 1 => 0, 2 => 0.5, 3 => 0.75, ), 14 => array ( 0 => array ( 'r' => 255, 'g' => 127, 'b' => 127, ), 1 => 0, 2 => 0.5, 3 => 1, ), 15 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0.75, 3 => 0, ), 16 => array ( 0 => array ( 'r' => 63, 'g' => 15, 'b' => 15, ), 1 => 0, 2 => 0.75, 3 => 0.25, ), 17 => array ( 0 => array ( 'r' => 127, 'g' => 31, 'b' => 31, ), 1 => 0, 2 => 0.75, 3 => 0.5, ), 18 => array ( 0 => array ( 'r' => 191, 'g' => 47, 'b' => 47, ), 1 => 0, 2 => 0.75, 3 => 0.75, ), 19 => array ( 0 => array ( 'r' => 255, 'g' => 63, 'b' => 63, ), 1 => 0, 2 => 0.75, 3 => 1, ), 20 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 0, ), 21 => array ( 0 => array ( 'r' => 63, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 0.25, ), 22 => array ( 0 => array ( 'r' => 127, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 0.5, ), 23 => array ( 0 => array ( 'r' => 191, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 0.75, ), 24 => array ( 0 => array ( 'r' => 255, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 1, ), 25 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0, 3 => 0, ), 26 => array ( 0 => array ( 'r' => 63, 'g' => 63, 'b' => 63, ), 1 => 0.25, 2 => 0, 3 => 0.25, ), 27 => array ( 0 => array ( 'r' => 127, 'g' => 127, 'b' => 127, ), 1 => 0.25, 2 => 0, 3 => 0.5, ), 28 => array ( 0 => array ( 'r' => 191, 'g' => 191, 'b' => 191, ), 1 => 0.25, 2 => 0, 3 => 0.75, ), 29 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.25, 2 => 0, 3 => 1, ), 30 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0.25, 3 => 0, ), 31 => array ( 0 => array ( 'r' => 55, 'g' => 63, 'b' => 47, ), 1 => 0.25, 2 => 0.25, 3 => 0.25, ), 32 => array ( 0 => array ( 'r' => 111, 'g' => 127, 'b' => 95, ), 1 => 0.25, 2 => 0.25, 3 => 0.5, ), 33 => array ( 0 => array ( 'r' => 167, 'g' => 191, 'b' => 143, ), 1 => 0.25, 2 => 0.25, 3 => 0.75, ), 34 => array ( 0 => array ( 'r' => 223, 'g' => 255, 'b' => 191, ), 1 => 0.25, 2 => 0.25, 3 => 1, ), 35 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0.5, 3 => 0, ), 36 => array ( 0 => array ( 'r' => 47, 'g' => 63, 'b' => 31, ), 1 => 0.25, 2 => 0.5, 3 => 0.25, ), 37 => array ( 0 => array ( 'r' => 95, 'g' => 127, 'b' => 63, ), 1 => 0.25, 2 => 0.5, 3 => 0.5, ), 38 => array ( 0 => array ( 'r' => 143, 'g' => 191, 'b' => 95, ), 1 => 0.25, 2 => 0.5, 3 => 0.75, ), 39 => array ( 0 => array ( 'r' => 191, 'g' => 255, 'b' => 127, ), 1 => 0.25, 2 => 0.5, 3 => 1, ), 40 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0.75, 3 => 0, ), 41 => array ( 0 => array ( 'r' => 39, 'g' => 63, 'b' => 15, ), 1 => 0.25, 2 => 0.75, 3 => 0.25, ), 42 => array ( 0 => array ( 'r' => 79, 'g' => 127, 'b' => 31, ), 1 => 0.25, 2 => 0.75, 3 => 0.5, ), 43 => array ( 0 => array ( 'r' => 119, 'g' => 191, 'b' => 47, ), 1 => 0.25, 2 => 0.75, 3 => 0.75, ), 44 => array ( 0 => array ( 'r' => 159, 'g' => 255, 'b' => 63, ), 1 => 0.25, 2 => 0.75, 3 => 1, ), 45 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 0, ), 46 => array ( 0 => array ( 'r' => 31, 'g' => 63, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 0.25, ), 47 => array ( 0 => array ( 'r' => 63, 'g' => 127, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 0.5, ), 48 => array ( 0 => array ( 'r' => 95, 'g' => 191, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 0.75, ), 49 => array ( 0 => array ( 'r' => 127, 'g' => 255, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 1, ), 50 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0, 3 => 0, ), 51 => array ( 0 => array ( 'r' => 63, 'g' => 63, 'b' => 63, ), 1 => 0.5, 2 => 0, 3 => 0.25, ), 52 => array ( 0 => array ( 'r' => 127, 'g' => 127, 'b' => 127, ), 1 => 0.5, 2 => 0, 3 => 0.5, ), 53 => array ( 0 => array ( 'r' => 191, 'g' => 191, 'b' => 191, ), 1 => 0.5, 2 => 0, 3 => 0.75, ), 54 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 0, 3 => 1, ), 55 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0.25, 3 => 0, ), 56 => array ( 0 => array ( 'r' => 47, 'g' => 63, 'b' => 63, ), 1 => 0.5, 2 => 0.25, 3 => 0.25, ), 57 => array ( 0 => array ( 'r' => 95, 'g' => 127, 'b' => 127, ), 1 => 0.5, 2 => 0.25, 3 => 0.5, ), 58 => array ( 0 => array ( 'r' => 143, 'g' => 191, 'b' => 191, ), 1 => 0.5, 2 => 0.25, 3 => 0.75, ), 59 => array ( 0 => array ( 'r' => 191, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 0.25, 3 => 1, ), 60 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0.5, 3 => 0, ), 61 => array ( 0 => array ( 'r' => 31, 'g' => 63, 'b' => 63, ), 1 => 0.5, 2 => 0.5, 3 => 0.25, ), 62 => array ( 0 => array ( 'r' => 63, 'g' => 127, 'b' => 127, ), 1 => 0.5, 2 => 0.5, 3 => 0.5, ), 63 => array ( 0 => array ( 'r' => 95, 'g' => 191, 'b' => 191, ), 1 => 0.5, 2 => 0.5, 3 => 0.75, ), 64 => array ( 0 => array ( 'r' => 127, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 0.5, 3 => 1, ), 65 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0.75, 3 => 0, ), 66 => array ( 0 => array ( 'r' => 15, 'g' => 63, 'b' => 63, ), 1 => 0.5, 2 => 0.75, 3 => 0.25, ), 67 => array ( 0 => array ( 'r' => 31, 'g' => 127, 'b' => 127, ), 1 => 0.5, 2 => 0.75, 3 => 0.5, ), 68 => array ( 0 => array ( 'r' => 47, 'g' => 191, 'b' => 191, ), 1 => 0.5, 2 => 0.75, 3 => 0.75, ), 69 => array ( 0 => array ( 'r' => 63, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 0.75, 3 => 1, ), 70 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 1, 3 => 0, ), 71 => array ( 0 => array ( 'r' => 0, 'g' => 63, 'b' => 63, ), 1 => 0.5, 2 => 1, 3 => 0.25, ), 72 => array ( 0 => array ( 'r' => 0, 'g' => 127, 'b' => 127, ), 1 => 0.5, 2 => 1, 3 => 0.5, ), 73 => array ( 0 => array ( 'r' => 0, 'g' => 191, 'b' => 191, ), 1 => 0.5, 2 => 1, 3 => 0.75, ), 74 => array ( 0 => array ( 'r' => 0, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 1, 3 => 1, ), 75 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0, 3 => 0, ), 76 => array ( 0 => array ( 'r' => 63, 'g' => 63, 'b' => 63, ), 1 => 0.75, 2 => 0, 3 => 0.25, ), 77 => array ( 0 => array ( 'r' => 127, 'g' => 127, 'b' => 127, ), 1 => 0.75, 2 => 0, 3 => 0.5, ), 78 => array ( 0 => array ( 'r' => 191, 'g' => 191, 'b' => 191, ), 1 => 0.75, 2 => 0, 3 => 0.75, ), 79 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.75, 2 => 0, 3 => 1, ), 80 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0.25, 3 => 0, ), 81 => array ( 0 => array ( 'r' => 55, 'g' => 47, 'b' => 63, ), 1 => 0.75, 2 => 0.25, 3 => 0.25, ), 82 => array ( 0 => array ( 'r' => 111, 'g' => 95, 'b' => 127, ), 1 => 0.75, 2 => 0.25, 3 => 0.5, ), 83 => array ( 0 => array ( 'r' => 167, 'g' => 143, 'b' => 191, ), 1 => 0.75, 2 => 0.25, 3 => 0.75, ), 84 => array ( 0 => array ( 'r' => 223, 'g' => 191, 'b' => 255, ), 1 => 0.75, 2 => 0.25, 3 => 1, ), 85 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0.5, 3 => 0, ), 86 => array ( 0 => array ( 'r' => 47, 'g' => 31, 'b' => 63, ), 1 => 0.75, 2 => 0.5, 3 => 0.25, ), 87 => array ( 0 => array ( 'r' => 95, 'g' => 63, 'b' => 127, ), 1 => 0.75, 2 => 0.5, 3 => 0.5, ), 88 => array ( 0 => array ( 'r' => 143, 'g' => 95, 'b' => 191, ), 1 => 0.75, 2 => 0.5, 3 => 0.75, ), 89 => array ( 0 => array ( 'r' => 191, 'g' => 127, 'b' => 255, ), 1 => 0.75, 2 => 0.5, 3 => 1, ), 90 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0.75, 3 => 0, ), 91 => array ( 0 => array ( 'r' => 39, 'g' => 15, 'b' => 63, ), 1 => 0.75, 2 => 0.75, 3 => 0.25, ), 92 => array ( 0 => array ( 'r' => 79, 'g' => 31, 'b' => 127, ), 1 => 0.75, 2 => 0.75, 3 => 0.5, ), 93 => array ( 0 => array ( 'r' => 119, 'g' => 47, 'b' => 191, ), 1 => 0.75, 2 => 0.75, 3 => 0.75, ), 94 => array ( 0 => array ( 'r' => 159, 'g' => 63, 'b' => 255, ), 1 => 0.75, 2 => 0.75, 3 => 1, ), 95 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 1, 3 => 0, ), 96 => array ( 0 => array ( 'r' => 31, 'g' => 0, 'b' => 63, ), 1 => 0.75, 2 => 1, 3 => 0.25, ), 97 => array ( 0 => array ( 'r' => 63, 'g' => 0, 'b' => 127, ), 1 => 0.75, 2 => 1, 3 => 0.5, ), 98 => array ( 0 => array ( 'r' => 95, 'g' => 0, 'b' => 191, ), 1 => 0.75, 2 => 1, 3 => 0.75, ), 99 => array ( 0 => array ( 'r' => 127, 'g' => 0, 'b' => 255, ), 1 => 0.75, 2 => 1, 3 => 1, ), 100 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0, 3 => 0, ), 101 => array ( 0 => array ( 'r' => 63, 'g' => 63, 'b' => 63, ), 1 => 1, 2 => 0, 3 => 0.25, ), 102 => array ( 0 => array ( 'r' => 127, 'g' => 127, 'b' => 127, ), 1 => 1, 2 => 0, 3 => 0.5, ), 103 => array ( 0 => array ( 'r' => 191, 'g' => 191, 'b' => 191, ), 1 => 1, 2 => 0, 3 => 0.75, ), 104 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 1, 2 => 0, 3 => 1, ), 105 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0.25, 3 => 0, ), 106 => array ( 0 => array ( 'r' => 63, 'g' => 47, 'b' => 47, ), 1 => 1, 2 => 0.25, 3 => 0.25, ), 107 => array ( 0 => array ( 'r' => 127, 'g' => 95, 'b' => 95, ), 1 => 1, 2 => 0.25, 3 => 0.5, ), 108 => array ( 0 => array ( 'r' => 191, 'g' => 143, 'b' => 143, ), 1 => 1, 2 => 0.25, 3 => 0.75, ), 109 => array ( 0 => array ( 'r' => 255, 'g' => 191, 'b' => 191, ), 1 => 1, 2 => 0.25, 3 => 1, ), 110 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0.5, 3 => 0, ), 111 => array ( 0 => array ( 'r' => 63, 'g' => 31, 'b' => 31, ), 1 => 1, 2 => 0.5, 3 => 0.25, ), 112 => array ( 0 => array ( 'r' => 127, 'g' => 63, 'b' => 63, ), 1 => 1, 2 => 0.5, 3 => 0.5, ), 113 => array ( 0 => array ( 'r' => 191, 'g' => 95, 'b' => 95, ), 1 => 1, 2 => 0.5, 3 => 0.75, ), 114 => array ( 0 => array ( 'r' => 255, 'g' => 127, 'b' => 127, ), 1 => 1, 2 => 0.5, 3 => 1, ), 115 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0.75, 3 => 0, ), 116 => array ( 0 => array ( 'r' => 63, 'g' => 15, 'b' => 15, ), 1 => 1, 2 => 0.75, 3 => 0.25, ), 117 => array ( 0 => array ( 'r' => 127, 'g' => 31, 'b' => 31, ), 1 => 1, 2 => 0.75, 3 => 0.5, ), 118 => array ( 0 => array ( 'r' => 191, 'g' => 47, 'b' => 47, ), 1 => 1, 2 => 0.75, 3 => 0.75, ), 119 => array ( 0 => array ( 'r' => 255, 'g' => 63, 'b' => 63, ), 1 => 1, 2 => 0.75, 3 => 1, ), 120 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 0, ), 121 => array ( 0 => array ( 'r' => 63, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 0.25, ), 122 => array ( 0 => array ( 'r' => 127, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 0.5, ), 123 => array ( 0 => array ( 'r' => 191, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 0.75, ), 124 => array ( 0 => array ( 'r' => 255, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 1, ), ); return $essais; } ?>tests/degrade-bleu.jpg000066600000001365151451631460010747 0ustar00JFIF;CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 85 C  !"$"$Cd" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?O+f|*-x[sEbhVj(iնZvݨ&tЇEsH%dɚ"J(tests/_couleur_hsl2rgb.php000066600000044615151451631460011703 0ustar00' . join('', $err) . ''); } echo "OK"; function essais__couleur_hsl2rgb(){ $essais = array ( 0 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0, 3 => 0, ), 1 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0, 3 => 0.25, ), 2 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0, 3 => 0.5, ), 3 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0, 3 => 0.75, ), 4 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0, 3 => 1, ), 5 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0.25, 3 => 0, ), 6 => array ( 0 => array ( 'r' => 79, 'g' => 47, 'b' => 47, ), 1 => 0, 2 => 0.25, 3 => 0.25, ), 7 => array ( 0 => array ( 'r' => 159, 'g' => 95, 'b' => 95, ), 1 => 0, 2 => 0.25, 3 => 0.5, ), 8 => array ( 0 => array ( 'r' => 207, 'g' => 175, 'b' => 175, ), 1 => 0, 2 => 0.25, 3 => 0.75, ), 9 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0, 2 => 0.25, 3 => 1, ), 10 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0.5, 3 => 0, ), 11 => array ( 0 => array ( 'r' => 95, 'g' => 31, 'b' => 31, ), 1 => 0, 2 => 0.5, 3 => 0.25, ), 12 => array ( 0 => array ( 'r' => 191, 'g' => 63, 'b' => 63, ), 1 => 0, 2 => 0.5, 3 => 0.5, ), 13 => array ( 0 => array ( 'r' => 223, 'g' => 159, 'b' => 159, ), 1 => 0, 2 => 0.5, 3 => 0.75, ), 14 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0, 2 => 0.5, 3 => 1, ), 15 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 0.75, 3 => 0, ), 16 => array ( 0 => array ( 'r' => 111, 'g' => 15, 'b' => 15, ), 1 => 0, 2 => 0.75, 3 => 0.25, ), 17 => array ( 0 => array ( 'r' => 223, 'g' => 31, 'b' => 31, ), 1 => 0, 2 => 0.75, 3 => 0.5, ), 18 => array ( 0 => array ( 'r' => 239, 'g' => 143, 'b' => 143, ), 1 => 0, 2 => 0.75, 3 => 0.75, ), 19 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0, 2 => 0.75, 3 => 1, ), 20 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 0, ), 21 => array ( 0 => array ( 'r' => 127, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 0.25, ), 22 => array ( 0 => array ( 'r' => 255, 'g' => 0, 'b' => 0, ), 1 => 0, 2 => 1, 3 => 0.5, ), 23 => array ( 0 => array ( 'r' => 255, 'g' => 127, 'b' => 127, ), 1 => 0, 2 => 1, 3 => 0.75, ), 24 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0, 2 => 1, 3 => 1, ), 25 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0, 3 => 0, ), 26 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0, 3 => 0.25, ), 27 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0, 3 => 0.5, ), 28 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0, 3 => 0.75, ), 29 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0, 3 => 1, ), 30 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0.25, 3 => 0, ), 31 => array ( 0 => array ( 'r' => 63, 'g' => 79, 'b' => 47, ), 1 => 0.25, 2 => 0.25, 3 => 0.25, ), 32 => array ( 0 => array ( 'r' => 127, 'g' => 159, 'b' => 95, ), 1 => 0.25, 2 => 0.25, 3 => 0.5, ), 33 => array ( 0 => array ( 'r' => 191, 'g' => 207, 'b' => 175, ), 1 => 0.25, 2 => 0.25, 3 => 0.75, ), 34 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.25, 2 => 0.25, 3 => 1, ), 35 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0.5, 3 => 0, ), 36 => array ( 0 => array ( 'r' => 63, 'g' => 95, 'b' => 31, ), 1 => 0.25, 2 => 0.5, 3 => 0.25, ), 37 => array ( 0 => array ( 'r' => 127, 'g' => 191, 'b' => 63, ), 1 => 0.25, 2 => 0.5, 3 => 0.5, ), 38 => array ( 0 => array ( 'r' => 191, 'g' => 223, 'b' => 159, ), 1 => 0.25, 2 => 0.5, 3 => 0.75, ), 39 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.25, 2 => 0.5, 3 => 1, ), 40 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 0.75, 3 => 0, ), 41 => array ( 0 => array ( 'r' => 63, 'g' => 111, 'b' => 15, ), 1 => 0.25, 2 => 0.75, 3 => 0.25, ), 42 => array ( 0 => array ( 'r' => 127, 'g' => 223, 'b' => 31, ), 1 => 0.25, 2 => 0.75, 3 => 0.5, ), 43 => array ( 0 => array ( 'r' => 191, 'g' => 239, 'b' => 143, ), 1 => 0.25, 2 => 0.75, 3 => 0.75, ), 44 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.25, 2 => 0.75, 3 => 1, ), 45 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 0, ), 46 => array ( 0 => array ( 'r' => 63, 'g' => 127, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 0.25, ), 47 => array ( 0 => array ( 'r' => 127, 'g' => 255, 'b' => 0, ), 1 => 0.25, 2 => 1, 3 => 0.5, ), 48 => array ( 0 => array ( 'r' => 191, 'g' => 255, 'b' => 127, ), 1 => 0.25, 2 => 1, 3 => 0.75, ), 49 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.25, 2 => 1, 3 => 1, ), 50 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0, 3 => 0, ), 51 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0, 3 => 0.25, ), 52 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0, 3 => 0.5, ), 53 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0, 3 => 0.75, ), 54 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0, 3 => 1, ), 55 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0.25, 3 => 0, ), 56 => array ( 0 => array ( 'r' => 47, 'g' => 79, 'b' => 79, ), 1 => 0.5, 2 => 0.25, 3 => 0.25, ), 57 => array ( 0 => array ( 'r' => 95, 'g' => 159, 'b' => 159, ), 1 => 0.5, 2 => 0.25, 3 => 0.5, ), 58 => array ( 0 => array ( 'r' => 175, 'g' => 207, 'b' => 207, ), 1 => 0.5, 2 => 0.25, 3 => 0.75, ), 59 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 0.25, 3 => 1, ), 60 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0.5, 3 => 0, ), 61 => array ( 0 => array ( 'r' => 31, 'g' => 95, 'b' => 95, ), 1 => 0.5, 2 => 0.5, 3 => 0.25, ), 62 => array ( 0 => array ( 'r' => 63, 'g' => 191, 'b' => 191, ), 1 => 0.5, 2 => 0.5, 3 => 0.5, ), 63 => array ( 0 => array ( 'r' => 159, 'g' => 223, 'b' => 223, ), 1 => 0.5, 2 => 0.5, 3 => 0.75, ), 64 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 0.5, 3 => 1, ), 65 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 0.75, 3 => 0, ), 66 => array ( 0 => array ( 'r' => 15, 'g' => 111, 'b' => 111, ), 1 => 0.5, 2 => 0.75, 3 => 0.25, ), 67 => array ( 0 => array ( 'r' => 31, 'g' => 223, 'b' => 223, ), 1 => 0.5, 2 => 0.75, 3 => 0.5, ), 68 => array ( 0 => array ( 'r' => 143, 'g' => 239, 'b' => 239, ), 1 => 0.5, 2 => 0.75, 3 => 0.75, ), 69 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 0.75, 3 => 1, ), 70 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.5, 2 => 1, 3 => 0, ), 71 => array ( 0 => array ( 'r' => 0, 'g' => 127, 'b' => 127, ), 1 => 0.5, 2 => 1, 3 => 0.25, ), 72 => array ( 0 => array ( 'r' => 0, 'g' => 254, 'b' => 255, ), 1 => 0.5, 2 => 1, 3 => 0.5, ), 73 => array ( 0 => array ( 'r' => 127, 'g' => 254, 'b' => 255, ), 1 => 0.5, 2 => 1, 3 => 0.75, ), 74 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.5, 2 => 1, 3 => 1, ), 75 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0, 3 => 0, ), 76 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0, 3 => 0.25, ), 77 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0, 3 => 0.5, ), 78 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0, 3 => 0.75, ), 79 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0, 3 => 1, ), 80 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0.25, 3 => 0, ), 81 => array ( 0 => array ( 'r' => 63, 'g' => 47, 'b' => 79, ), 1 => 0.75, 2 => 0.25, 3 => 0.25, ), 82 => array ( 0 => array ( 'r' => 127, 'g' => 95, 'b' => 159, ), 1 => 0.75, 2 => 0.25, 3 => 0.5, ), 83 => array ( 0 => array ( 'r' => 191, 'g' => 175, 'b' => 207, ), 1 => 0.75, 2 => 0.25, 3 => 0.75, ), 84 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.75, 2 => 0.25, 3 => 1, ), 85 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0.5, 3 => 0, ), 86 => array ( 0 => array ( 'r' => 63, 'g' => 31, 'b' => 95, ), 1 => 0.75, 2 => 0.5, 3 => 0.25, ), 87 => array ( 0 => array ( 'r' => 127, 'g' => 63, 'b' => 191, ), 1 => 0.75, 2 => 0.5, 3 => 0.5, ), 88 => array ( 0 => array ( 'r' => 191, 'g' => 159, 'b' => 223, ), 1 => 0.75, 2 => 0.5, 3 => 0.75, ), 89 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.75, 2 => 0.5, 3 => 1, ), 90 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 0.75, 3 => 0, ), 91 => array ( 0 => array ( 'r' => 63, 'g' => 15, 'b' => 111, ), 1 => 0.75, 2 => 0.75, 3 => 0.25, ), 92 => array ( 0 => array ( 'r' => 127, 'g' => 31, 'b' => 223, ), 1 => 0.75, 2 => 0.75, 3 => 0.5, ), 93 => array ( 0 => array ( 'r' => 191, 'g' => 143, 'b' => 239, ), 1 => 0.75, 2 => 0.75, 3 => 0.75, ), 94 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.75, 2 => 0.75, 3 => 1, ), 95 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 0.75, 2 => 1, 3 => 0, ), 96 => array ( 0 => array ( 'r' => 63, 'g' => 0, 'b' => 127, ), 1 => 0.75, 2 => 1, 3 => 0.25, ), 97 => array ( 0 => array ( 'r' => 127, 'g' => 0, 'b' => 255, ), 1 => 0.75, 2 => 1, 3 => 0.5, ), 98 => array ( 0 => array ( 'r' => 191, 'g' => 127, 'b' => 255, ), 1 => 0.75, 2 => 1, 3 => 0.75, ), 99 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 0.75, 2 => 1, 3 => 1, ), 100 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0, 3 => 0, ), 101 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0, 3 => 0.25, ), 102 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0, 3 => 0.5, ), 103 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0, 3 => 0.75, ), 104 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0, 3 => 1, ), 105 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0.25, 3 => 0, ), 106 => array ( 0 => array ( 'r' => 79, 'g' => 47, 'b' => 47, ), 1 => 1, 2 => 0.25, 3 => 0.25, ), 107 => array ( 0 => array ( 'r' => 159, 'g' => 95, 'b' => 95, ), 1 => 1, 2 => 0.25, 3 => 0.5, ), 108 => array ( 0 => array ( 'r' => 207, 'g' => 175, 'b' => 175, ), 1 => 1, 2 => 0.25, 3 => 0.75, ), 109 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 1, 2 => 0.25, 3 => 1, ), 110 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0.5, 3 => 0, ), 111 => array ( 0 => array ( 'r' => 95, 'g' => 31, 'b' => 31, ), 1 => 1, 2 => 0.5, 3 => 0.25, ), 112 => array ( 0 => array ( 'r' => 191, 'g' => 63, 'b' => 63, ), 1 => 1, 2 => 0.5, 3 => 0.5, ), 113 => array ( 0 => array ( 'r' => 223, 'g' => 159, 'b' => 159, ), 1 => 1, 2 => 0.5, 3 => 0.75, ), 114 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 1, 2 => 0.5, 3 => 1, ), 115 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 0.75, 3 => 0, ), 116 => array ( 0 => array ( 'r' => 111, 'g' => 15, 'b' => 15, ), 1 => 1, 2 => 0.75, 3 => 0.25, ), 117 => array ( 0 => array ( 'r' => 223, 'g' => 31, 'b' => 31, ), 1 => 1, 2 => 0.75, 3 => 0.5, ), 118 => array ( 0 => array ( 'r' => 239, 'g' => 143, 'b' => 143, ), 1 => 1, 2 => 0.75, 3 => 0.75, ), 119 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 1, 2 => 0.75, 3 => 1, ), 120 => array ( 0 => array ( 'r' => 0, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 0, ), 121 => array ( 0 => array ( 'r' => 127, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 0.25, ), 122 => array ( 0 => array ( 'r' => 255, 'g' => 0, 'b' => 0, ), 1 => 1, 2 => 1, 3 => 0.5, ), 123 => array ( 0 => array ( 'r' => 255, 'g' => 127, 'b' => 127, ), 1 => 1, 2 => 1, 3 => 0.75, ), 124 => array ( 0 => array ( 'r' => 255, 'g' => 255, 'b' => 255, ), 1 => 1, 2 => 1, 3 => 1, ), ); return $essais; } ?>tests/bonnetaille.html000066600000000731151451631460011103 0ustar00[(#REM) Une image recadree a 50 doit faire 50. ] [(#CHEMIN{tests/imagetest.jpg} |image_passe_partout{54,54} |image_recadre{50,50,center} |image_aplatir{jpg,6C6C6C} |extraire_attribut{width} |=={50} |?{'',NOK!})] [(#CHEMIN{tests/imagetest.jpg} |image_passe_partout{54,54} |image_recadre{50,50,center} |image_aplatir{jpg,6C6C6C} |extraire_attribut{width} |=={50} |?{OK,NOK!})]tests/couleur_extraire.php000066600000001576151451631460012023 0ustar00' . join('', $err) . ''); } echo "OK"; function essais_couleur_extraire(){ $essais = array ( 0 => array ( 0 => '759bc8', 1 => url_absolue(find_in_path('tests/degrade-bleu.jpg')), ), 1 => array ( 0 => '759bc8', 1 => find_in_path('tests/degrade-bleu.jpg'), ), ); return $essais; } ?>plugin.xml000066600000001002151451631460006567 0ustar00 Filtres Images et Couleurs Filtres de transformation d'image et de couleurs Collectif SPIP images/image_filtre-32.png GPL 1.0.1 stable Filtres de transformation d'image et de couleurs images images_fonctions.php multimedia