<?php
function Matriz($tamaņo,$color){
	for($i=0;$i<$tamaņo;$i++){
		for($j=0;$j<$tamaņo;$j++){
			fcontrast($color[$i],$color[$j],$contraste);
			$matriz[$i][$j]=$contraste;
			
			//debug -->
				$m.=$matriz[$i][$j].'<-valor  ';
				$m.=$i.'i  ';
				$m.=$j.'j  ||';
								}//for j
				$m.='<br>';
			//debug <--
			
		}//for i 
		return $m;
}//funcion MatrizContraste
function buscarpos($color1,$color,$tamaņo,&$pos){
 $pos=-1;
 for($i=0;$i<$tamaņo;$i++){
   if($color[$i]==$color1)
      $pos=$i;   
    }//for	

}//function Buscar

function ValuaContraste($color1,$color2,$color,$matriz,$tamaņo,&$bol){
 buscarpos($color1,$color,$tamaņo,$i);
 buscarpos($color2,$color,$tamaņo,$j);
   if ($i<0||$j<0){
	     echo'ERROR no se encuentra el color en la funcion Value contraste <br>';	
    	 $bol=-1;
		}
	else{
	    if ($matriz[$i][$j]>480) 
	   		$bol=1;
		  else
			$bol=0;
	    echo $matriz[$i][$j].'Contraste<br>'; 
		 }
 }
 
function DectoHex($num,&$result){//convierte un valor en hexadecimal a decimal
$pri=floor($num/16);
$seg=floor($num%16);
$result="00";
if ($pri==10) 
    $pri='A';
   else 
	if ($pri==11) 
	    $pri='B';
	    else
		 if ($pri==12) 
			 $pri='C';
			else
		     if ($pri==13) 
				$pri='D';
			   else
			 	if ($pri==14) 
					$pri='E';
			       else
			        if ($pri==15) 
						$pri='F';
if ($seg==10) 
	$seg='A';
  else 
    if ($seg==11) 
	   $seg='B';
	  else
	   if ($seg==12) 
	      $seg='C';
	     else
	       if ($seg==13) 
			   $seg='D';
			  else
				if ($seg==14) 
					$seg='E';
				   else
					if ($seg==15) 
						$seg='F';
	
$result[0]=$pri;
$result[1]=$seg;
}
function hextodec($hex,&$dec){//convierte un valor en hexadecimal a decimal
 	$pri=substr($hex,0,1);
 	$seg=substr($hex,1,1);
  if ($pri==A||$pri==a) 
  	  $pri=10;
  	else 
		  if ($pri==B||$pri==b) 
			  $pri=11;
			else
				if ($pri==C||$pri==c) 
					$pri=12;
				else
					if ($pri==D||$pri==d) 
						$pri=13;
					else
						if ($pri==E||$pri==e) 
							$pri=14;
						else
							if ($pri==F||$pri==f) 
								$pri=15;
	if ($seg==A||$seg==a) 
		  $seg=10;
	  else 
		  if ($seg==B||$seg==b) 
			  $seg=11;
			else
				if ($seg==C||$seg==c) 
					$seg=12;
				else
					if ($seg==D||$seg==d) 
						$seg=13;
					else
						if ($seg==E||$seg==e) 
							$seg=14;
						else
							if ($seg==F||$seg==f) 
								$seg=15;
  
	$dec=16*$pri+$seg;
 }//HextoDec
function minimo($A,$B,&$min){
	$min=$A;
	if($A>$B)
		$min=$B;
	}//minimo
function maximo($A,$B,&$max){
	$max=$A;
	if($A<$B)
		$max=$B;
	}//max
function fcontrast($color1,$color2){//le pasamos $color ke sera con el color ke keremos contrastar
	//calculamos los maximos y minimos de cada componente de los dos colores
	$c1R=substr($color1, 0, 2);		hextodec($c1R,&$c1R);
	$c1G=substr($color1, 2, 2); 	hextodec($c1G,&$c1G);
	$c1B=substr($color1, 4, 2); 	hextodec($c1B,&$c1B);
	
	$c2R=substr($color2, 0, 2);		hextodec($c2R,&$c2R);
	$c2G=substr($color2, 2, 2); 	hextodec($c2G,&$c2G);
	$c2B=substr($color2, 4, 2); 	hextodec($c2B,&$c2B);
	
	maximo($c1R,$c2R,$Cr);minimo($c1R,$c2R,$Cmr);
	maximo($c1G,$c2G,$Cg);minimo($c1G,$c2G,$Cmg);
	maximo($c1B,$c2B,$Cb);minimo($c1B,$c2B,$Cmb);
	
	$contrast=($Cr-$Cmr) + ($Cg-$Cmg) + ($Cb-$Cmb);
return $contrast;
   }//fcontrast
   
function fbrillo($color1,&$brillo){
	$c1R=substr($color1, 0, 2);		hextodec($c1R,&$c1R); echo $c1R.'<-c1R <br>';
	$c1G=substr($color1, 2, 2); 	hextodec($c1G,&$c1G); echo $c1G.'<-c1G <br>';
	$c1B=substr($color1, 4, 2); 	hextodec($c1B,&$c1B); echo $c1B.'<-c1B <br>';
	$brillo=($c1R*299+$c1G*587+$c1B*114)/1000;
	}//fbrillo

function ColorTexto($color){

			$Nnegro=fcontrast($color,'000000',$contraste);
			$Nblanco=fcontrast($color,'FFFFFF',$contraste);

	    if ($Nnegro>$Nblanco) 
	   		return '000000';
		else
	   		return 'FFFFFF';
			
 }
function montar($cR,$cG,$cB){
	//lo pasamos a hexadecimal
	DectoHex($cR,&$cR);
	DectoHex($cG,&$cG);
	DectoHex($cB,&$cB);/*
	echo $cR.'<---  Cr  ';
	echo $cG.'<---  Cg  ';
	echo $cB.'<---  Cb  MONTAR<br>';*/
	$result=$cR;
	$result.=$cG;
	$result.=$cB;
	return $result;
//echo $result.'<-opuesto del color'.$color.'  MONTAR<br>';
}
//divido el color ke entra en RGB y lo paso a decimal
function DivColorDec($color,&$cR,&$cG,&$cB){
	$cR=substr($color, 0, 2);/*	echo $cR.'<---  Cr antes ';*/

	hextodec($cR,&$cR);/*echo $cR.'<---  Cr  despues<br>';*/

	$cG=substr($color, 2, 2);/*	echo $cG.'<---  Cg antes ';*/hextodec($cG,&$cG);/*echo $cG.'<---  Cg  despues<br>';*/
	$cB=substr($color, 4, 2);/* echo $cB.'<---  Cb antes ';*/hextodec($cB,&$cB);/*echo $cB.'<---  Cb  despues<br>';*/
	}
//le paso un color y retorna el opuesto.
//si el color es 128 128 128 Problem!!!
function Opuesto($color){
	//divido el color ke entra en RGB y lo paso a decimal
	DivColorDec($color,$cR,$cG,$cB);
	//calculo su opuesto
	$c1R=255-$cR;
	$c1G=255-$cG;
	$c1B=255-$cB;
	/*echo $c1R.'<---  C1r  ';
	echo $c1G.'<---  C1g  ';
	echo $c1B.'<---  C1b  <br>';*/
	//Montar	
	$result="defect";

	$result=montar($c1R,$c1G,$c1B);	

	return $result;
}
function Triada($color){
	//divido el color ke entra en RGB y lo paso a decimal
	DivColorDec($color,$cR,$cG,$cB);	
	//Organizo los RGB para formar los otros colores
	$result[0]=montar($cG,$cB,$cR);
	$result[1]=montar($cB,$cR,$cG);
	

 return $result; 
}
//si es el blanco o el negro solo dara un color
function Monocromo($color){
	//divido el color ke entra en RGB y lo paso a decimal
	DivColorDec($color,$cR,$cG,$cB);
	//calculo el color inferior
	$c1R=$cR/2;		$c1G=$cG/2;		$c1B=$cB/2;
	//color superior
	$c2R=$cR+(255-$cR)/2;	$c2G=$cG+(255-$cG)/2;	$c2B=$cB+(255-$cB)/2;
	//montar resultados
	
	
	$result[0]=montar($c1R,$c1G,$c1B);
	$result[1]=montar($c2R,$c2G,$c2B);
/*
	echo $color.'<-Monocrome Color   <br>';
	echo $result1.'<-Monocrome inferior<br>';
	echo $result2.'<-Monocrome superior<br>';*/
return $result;
}
//test -->
$re="FFFF00";
$re1="F266Fa";$re2="F266Fa";//si no ago esto me sale Array cuando lo muestro.
//Opuesto($re,$re);'
//Triada($re,$re1,$re2);
//Monocromo($re,$re1,$re2);
//echo $re.'<---  RE <br>';
//echo $re1.'<---  RE1 <br>';
//echo $re2.'<---  RE2 <br>';
/* comprueba resultados
	echo $c1R.'<-    c1R<br>';
	echo $c1G.'<-    c1G<br>';
	echo $c1B.'<-    c1B<br>';
*/


//<--

?>