<?php
class simplepie
{
function __construct($width, $height, $dataArr)
{
$font = './verdana.ttf'; /** get it from c:/windows/fonts dir */
$this->image = imagecreate($width,$height);
$piewidth = $width * 0.70;/* pie area */
$x = round($piewidth/2);
$y = round($height/2);
$total = array_sum($dataArr);
$angle_start = 0;
$ylegend = 2;
imagefilledrectangle($this->image, 0, 0, $width, $piewidth, imagecolorallocate($this->image, 128, 128, 128));
foreach($dataArr as $label=>$value) {
$angle_done = ($value/$total) * 360; /** angle calculated for 360 degrees */
$perc = round(($value/$total) * 100, 1); /** percentage calculated */
$color = imagecolorallocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));
imagefilledarc($this->image, $x, $y, $piewidth, $height, $angle_start, $angle_done+= $angle_start, $color, IMG_ARC_PIE);
$xtext = $x + (cos(deg2rad(($angle_start+$angle_done)/2))*($piewidth/4));
$ytext = $y + (sin(deg2rad(($angle_start+$angle_done)/2))*($height/4));
imagettftext($this->image, 6, 0, $xtext, $ytext, imagecolorallocate($this->image, 0, 0, 0), $font, "$perc %");
imagefilledrectangle($this->image, $piewidth+2, $ylegend, $piewidth+20, $ylegend+=20, $color);
imagettftext($this->image, 8, 0, $piewidth+22, $ylegend, imagecolorallocate($this->image, 0, 0, 0), $font, $label);
$ylegend += 4;
$angle_start = $angle_done;
}
}
function render()
{
header('Content-type: image/png');
imagepng($this->image);
}
}
?>
|