note 66767 added to function.dechex

From: Date: Sun, 28 May 2006 18:06:28 +0000
Subject: note 66767 added to function.dechex
Groups: php.notes 
Request: Send a blank email to php-notes+get-112452@lists.php.net to get a copy of this message
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. ---- Server IP: 213.92.11.19 Probable Submitter: 84.223.156.155 ---- X-Spam-Status: No, hits=3.3 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER, HTML_MESSAGE autolearn=no version=2.64 ---- Manual Page -- http://www.php.net/manual/en/function.dechex.php Edit -- http://master.php.net/note/edit/66767 Del: integrated -- http://master.php.net/note/delete/66767/integrated Del: useless -- http://master.php.net/note/delete/66767/useless Del: bad code -- http://master.php.net/note/delete/66767/bad+code Del: spam -- http://master.php.net/note/delete/66767/spam Del: non-english -- http://master.php.net/note/delete/66767/non-english Del: in docs -- http://master.php.net/note/delete/66767/in+docs Del: other reasons-- http://master.php.net/note/delete/66767 Reject -- http://master.php.net/note/reject/66767 Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#112452) next »