pct = ($i*1.0) / $nb_colors; $vColor[$i]->color = imagecolorallocate($vImage, $rgbval[0], $rgbval[1], $rgbval[2]); } // Récup des données $data = blockchain::getTransactionData($the_block, $type); $n_data = count($data); // Calcul des min max foreach($data as $v) { if ($v['value'] > $max) $max = $v['value']; if (($v['value'] < $min)||($min == -1)) $min = $v['value']; $somme += $v['value']; } if ($min == $max) $max = $min + 1; if ($somme == 0) return; $coef = ($height - (2*$marge_y)) / $somme; $limite_x = $x + ($width - (2*$marge_x)); $dx = round(($width - (2*$marge_x)) / (TX_HASH_LEN)); $h0 = 0; $hauteur = $y + $marge_y; $special_draw = (count($data) == 1); foreach($data as $transaction) { // // La nouvelle hauteur : cumule des montants de transaction // $hauteur += $coef * $transaction['value']; // // Cas des blocks qui n'ont qu'une seule transaction // On se cale au milieu // if ($special_draw) $hauteur = $y + ($height / 2); // // Ne pas tracer 2 lignes à la même hauteur // => c'est possible du fait de l'arrondi // si la transaction a un montant faible // if ((floor($hauteur)-$h0)<2) continue; $h0 = floor($hauteur); // // On trace // $x0 = $x + $marge_x; while($x0 < $limite_x) { $pct = (($x0 - $x)*1.0) / ($limite_x - $x); $index = floor($pct*$nb_colors); imageline($vImage, $x0, $h0, $x0+$dx, $h0, $vColor[$index]->color); $x0 += $dx; } } } ?>