Prozentwert in hsla-Farbwert

Eine einfach Funktion zum übersetzten einer Prozentzahl in einen Farbwert im hsla-Farbmodus



//Prozentwert zu hsla String (Farbwert Grün->Gelb->Rot / Rot->Gelb->Grün)
//************************************************************************************************************
//	string bg_pro_col(double $pro, int $mid, int $mid, int $max,bool $flag, int $s, int $l, float $a)
//
//	$pro = Przentwert der umgerechnet werden soll.
//	$flag 	(default 0) 	= 0 => Rot und 100 => Grün; 0 => Grün und 100 => Rot.
//	$min 	(default 0) 	= Unterer Grenzbereich. Unterhalb werden 
//				  alle Werte als Rot(flag=0) bzw. Grün(flag=1) ausgegeben.
//	$mid 	(default 50) 	= Der Wert gibt an an welchem Punkt von 
//				  die Hauptbereiche gewechselt werden.
//	$max 	(default 100) 	= Oberer Grenzbereich. Überhalb werden 
//				  alle Werte als Grün(flag=0) bzw. Rot(flag=1) ausgegeben.
//	$s	(default 100)	= Farbsättigung; 100 entspricht der Voltonfarbe; 
//		                  gegen 0 über Grau zu Schwarz. 
//	$l	(default 50)	= Helligkeit; 100 => Weiß; 0 => Schwarz.
//	$a	(default 1.00)	= Der Alphawert regelt die Transparenz. 1.00 => Voll sichtbar; 
//				  0.00 => Volle Transparenz
//	
//	Rückgabe = hsla([Farbwert],[Sättigung]%,[Helligkeit]%,Transperenz)
//	(es werden keinen Leerzeichen vor oder nach dem Sting angehängt)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
function bg_pro_col($pro,$min="0",$mid="50",$max="100",$flag="0",$s="100",$l="50",$a="1.00"){
		$versatz = ($max-$min)/100;
		if ($pro<=$min&&$flag == 0){
			$string = 'hsla(0,'.$s.'%,'.$l.'%,'.$a.')';
			return $string;
		}
		if ($pro>=$max&&$flag == 0){
			$string = 'hsla(100,'.$s.'%,'.$l.'%,'.$a.')';
			return $string;
		}
		if ($pro<=$min&&$flag == 1){
			$string = 'hsla(100,'.$s.'%,'.$l.'%,'.$a.')';
			return $string;
		}
		if ($pro>=$max&&$flag == 1){
			$string = 'hsla(0,'.$s.'%,'.$l.'%,'.$a.')';
			return $string;
		}
		if($pro>$min&&$pro<$max&&$flag == 0){
			$pro = ((($max-$min)*$pro)/100)+$min;
			$mid = ((($max-$min)*$mid)/100)+$min;
			if ($pro<=$mid){
				$var = 50/$mid*$pro;
				$string = 'hsla('.$var.','.$s.'%,'.$l.'%,'.$a.')';
				return $string;
			}
			else{
				$var = $mid+((50/$mid)*($pro-$mid));
				$string = 'hsla('.$var.','.$s.'%,'.$l.'%,'.$a.')';
				return $string;
			}
		}
		if($pro>$min&&$pro<$max&&$flag == 1){
			$pro = ((($max-$min)*$pro)/100)+$min;
			$mid = ((($max-$min)*$mid)/100)+$min;
			if ($pro<=$mid){
				$var = 50/$mid*$pro;
				$string = 'hsla('.(100-$var).','.$s.'%,'.$l.'%,'.$a.')';
				return $string;
			}
			else{
				$var = $mid+((50/$mid)*($pro-$mid));
				$string = 'hsla('.(100-$var).','.$s.'%,'.$l.'%,'.$a.')';
				return $string;
			}
		}
	return 0;
	}

Beispiel: