note 66767 deleted from function.dechex by bjori

From: Date: Sun, 28 May 2006 19:28:40 +0000
Subject: note 66767 deleted from function.dechex by bjori
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-112460@lists.php.net to get a copy of this message
Note Submitter: repley at freemail dot it ---- BugFix of my previous post. <?php function MultiColorFade($hex_array, $steps, $debug=false) { $tot = count($hex_array); $gradient = array(); $fixend = 2; $passages = $tot-1; if($debug){echo 'Passages = ' . $passages . '<br />';} $stepsforpassage = floor($steps/$passages); if($debug){echo 'Steps for passage = ' . ($steps/$passages) . ', rounded at next lowest integer = ' . $stepsforpassage . '<br />';} $stepsremain = $steps - ($stepsforpassage*$passages); if($debug){echo 'Steps to add = ' . $stepsremain . '<br />';} for($pointer = 0; $pointer < $tot-1 ; $pointer++) { $hexstart = $hex_array[$pointer]; $hexend = $hex_array[$pointer + 1]; if($stepsremain > 0){ if($stepsremain--){ $stepsforthis = $stepsforpassage + 1; } }else{ $stepsforthis = $stepsforpassage; } if($debug){echo '<br />Passage number = ' . $pointer . '. Steps for this passage = ' . $stepsforthis . '<br />';} if($pointer > 0){ $fixend = 1; } $start['r'] = hexdec(substr($hexstart, 0, 2)); $start['g'] = hexdec(substr($hexstart, 2, 2)); $start['b'] = hexdec(substr($hexstart, 4, 2)); $end['r'] = hexdec(substr($hexend, 0, 2)); $end['g'] = hexdec(substr($hexend, 2, 2)); $end['b'] = hexdec(substr($hexend, 4, 2)); $step['r'] = ($start['r'] - $end['r']) / ($stepsforthis); $step['g'] = ($start['g'] - $end['g']) / ($stepsforthis); $step['b'] = ($start['b'] - $end['b']) / ($stepsforthis); for($i = 0; $i <= $stepsforthis-$fixend; $i++) { $rgb['r'] = floor($start['r'] - ($step['r'] * $i)); $rgb['g'] = floor($start['g'] - ($step['g'] * $i)); $rgb['b'] = floor($start['b'] - ($step['b'] * $i)); $hex['r'] = sprintf('%02x', ($rgb['r'])); $hex['g'] = sprintf('%02x', ($rgb['g'])); $hex['b'] = sprintf('%02x', ($rgb['b'])); $gradient[] = strtoupper(implode(NULL, $hex)); } } $gradient[] = $hex_array[$tot-1]; return $gradient; } //end MultiColorFade() //start test $multi_hex_array = array(); $multi_hex_array[] = array('FF0000','FFFF00'); $multi_hex_array[] = array('FF0000','FFFF00','00FF00'); $multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF'); $multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF','0000FF'); $multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF','0000FF','000000'); $multi_hex_array[] = array('FF0000','FFFF00','00FF00','00FFFF','0000FF','000000','FFFFFF'); foreach($multi_hex_array as $hex_array){ $totcolors = count($hex_array); $steps = 15; $debug = false; //true for debug $a = MultiColorFade($hex_array, $steps, $debug); $tot = count($a); $table = '<table border=1 width="300">' . "\n"; for ($i = 0; $i < $tot; $i++){ $table .= ' <tr><td bgcolor="' . $a[$i] . '">' . ($i+1) .'</td><td><pre>' . $a[$i] . '</pre></td></tr>' . "\n"; } $table .= '</table><br /><br />'; echo '<br />Demanded steps = ' . $steps . '<br />'; echo 'Returned steps = ' . $tot; if($steps == $tot){ echo '<br />OK.' . $steps . ' = ' . $tot . '<br />'; }else{ echo '<br /><span style="color:#FF0000">FAILED! Demanded steps and returned steps are NOT equal!: ' . $steps . ' != ' . $tot . '</span><br />'; } echo $table; } //end test ?> Repley.

« previous php.notes (#112460) next »