<?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);
 
    }
 
} 
 
?>
 
 |