diff -r c24a2311f232 -r ce2e9caf2dfa graphing/class.piegraph.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphing/class.piegraph.php Sun Jan 04 16:40:36 2009 -0500 @@ -0,0 +1,159 @@ +graph_width = $this->graph_padding['left'] + $this->graph_areawidth + $this->graph_padding['right']; + $this->graph_height = $this->graph_padding['top'] + $this->graph_areaheight + $this->graph_padding['bottom']; + } + + function SetPieColor($red, $green, $blue) { + $this->pie_color = array($red, $green, $blue); + } + function AddPieColor($red, $green, $blue) { + if (!is_array($this->pie_color[0])) { + $this->pie_color = array($this->pie_color); + } + $this->pie_color[] = array($red, $green, $blue); + } + function SetPieBackgroundColor($red, $green, $blue) { + $this->pie_bgcolor = array($red, $green, $blue); + } + function AddPieBackgroundColor($red, $green, $blue) { + if (!is_array($this->pie_bgcolor[0])) { + $this->pie_bgcolor = array($this->pie_bgcolor); + } + $this->pie_bgcolor[] = array($red, $green, $blue); + } + function SetPieDeepnessColor($red, $green, $blue) { + $this->pie_deepnesscolor = array($red, $green, $blue); + } + function AddPieDeepnessColor($red, $green, $blue) { + if (!is_array($this->pie_deepnesscolor[0])) { + $this->pie_deepnesscolor = array($this->pie_deepnesscolor); + } + $this->pie_deepnesscolor[] = array($red, $green, $blue); + } + function SetPieTotalValue($total) { + $this->pie_total = $total; + } + function SetPieStartOffset($offset) { + if ($offset < 0 || $offset > 359) $offset = 0; + $this->pie_startoffset = $offset; + } + function SetPieData($data) { + CGraph::SetData($data); + } + function DrawGraph($file = "") { + $this->im = imagecreatetruecolor($this->graph_width, $this->graph_height); + + $this->axis_positions = array(0, 0, 0, 0); + $this->axis_xscalevisible = 0; + $this->axis_yscalevisible = 0; + $this->axis_gridlines = 0; + + CGraph::DrawGraph(); + + if ($this->pie_total == 0) { + foreach ($this->data as $name => $value) { + $this->pie_total += $value; + } + } + // deepness + for ($i = $this->pie_deepness; $i > 0; $i--) { + $offset = 0; + $p = 0; + foreach ($this->data as $n => $value) { + if (!$this->pie_deepnesscolor[$p]) { + $this->__AllocateColor("im_pie_deepnesscolor", $this->pie_deepnesscolor[$p], 0, $p); + } + $from = round($this->pie_startoffset - ($offset * 360 / $this->pie_total)); + $to = round($this->pie_startoffset - (($value + $offset) * 360 / $this->pie_total)); + if ($from < 0) $from += 360; + if ($to < 0) $to += 360; + imagefilledarc($this->im, round($this->graph_width / 2), round($this->graph_height / 2) + $i, + $this->graph_areawidth, $this->graph_areaheight, + $to, $from, $this->pie_deepnesscolor[$p], IMG_ARC_PIE); + $offset += $value; + $p++; + } + } + $offset = 0; + $p = 0; + foreach ($this->data as $n => $value) { + $this->__AllocateColor("im_pie_color", $this->pie_color[$p], 0, $p); + + $from = round($this->pie_startoffset - ($offset * 360 / $this->pie_total)); + $to = round($this->pie_startoffset - (($value + $offset) * 360 / $this->pie_total)); + if ($from < 0) $from += 360; + if ($to < 0) $to += 360; + imagefilledarc($this->im, round($this->graph_width / 2), round($this->graph_height / 2), + $this->graph_areawidth, $this->graph_areaheight, + $to, $from, $this->im_pie_color[$p], IMG_ARC_PIE); + $offset += $value; + $p++; + } + + CGraph::DrawGraph2(); + + if (strlen($file)) { + $ret = imagepng($this->im, $file); + } else { + header("Content-Type: image/png"); // thanks to Marcin G. :) + imagepng($this->im); + $ret = true; + } + imagedestroy($this->im); + return $ret; + } + + function __DrawPieSlice($frompercent, $topercent, $color, $deepcolor) { + $from = round(270 - ($frompercent * 3.6)); + $to = round(270 - ($topercent * 3.6)); + if ($from < 0) $from += 360; + if ($to < 0) $to += 360; + //echo "FROM:" . $from . " TO:" . $to . "
\n"; + for ($i = $this->pie_deepness; $i > 0; $i--) { + imagefilledarc($this->im, round($this->graph_width / 2), round($this->graph_height / 2) + $i, + round($this->graph_areawidth / 2), round($this->graph_areaheight / 2), + $to, $from, $deepcolor, IMG_ARC_PIE); + } + imagefilledarc($this->im, round($this->graph_width / 2), round($this->graph_height / 2), + round($this->graph_areawidth / 2), round($this->graph_areaheight / 2), + $to, $from, $color, IMG_ARC_PIE); + } + + /** + * Graph::__LoadPieValues() + * Loads definitions to pie settings + **/ + function __LoadPieValues($data) { + foreach ($data as $name => $value) { + $name = strtolower($name); + switch ($name) { + case 'background-color': + $this->__SetColorToValue("pie_bgcolor", $value); + break; + case 'color': + $this->__SetColorToValue("pie_color", $value); + break; + case 'deepness-color': + $this->__SetColorToValue("pie_depnesscolor", $value); + break; + case 'offset': + $this->SetPieStartOffset($value); + break; + case 'total': + $this->SetPieTotalValue($value); + } + } + } + } +?>