$cm_max_statlist) { $cm_chart_elements =$cm_max_statlist; } $cm_chart_curcolor = array (); $cm_chart_centerX = round ($cm_chart_X / 2); $cm_chart_centerY = round ($cm_chart_Y / 2); $cm_chart_finalX = round ($cm_chart_X / $cm_chart_reduction); $cm_chart_finalY = round ($cm_chart_Y / $cm_chart_reduction); // Create the image set some parameters and colors... if ($cm_jpeg_truecolors) { $cm_chart_pie = imagecreatetruecolor ($cm_chart_X, $cm_chart_Y); imagealphablending ($cm_chart_pie, true); $cm_chart_backcolor = imagecolorexactalpha ($cm_chart_pie, 255, 255, 255, 0); $cm_chart_outlinecolor = imagecolorexactalpha ($cm_chart_pie, 0, 0, 0, 0); imagesetthickness ($cm_chart_pie, ($cm_chart_reduction - 1)); } else { $cm_chart_pie = imagecreate ($cm_chart_X, $cm_chart_Y); $cm_chart_backcolor = imagecolorallocate ($cm_chart_pie, 255, 255, 255); $cm_chart_outlinecolor = imagecolorallocate ($cm_chart_pie, 0, 0, 0); } // Draw background and a frame... imagefilledrectangle ($cm_chart_pie, 0, 0, $cm_chart_X - 1, $cm_chart_Y - 1, $cm_chart_backcolor); imagerectangle ($cm_chart_pie, 0, 0, $cm_chart_X - 1, $cm_chart_Y - 1, $cm_chart_outlinecolor); // Generate the random colors... for ($cm_count = 0; $cm_count < $cm_chart_elements; $cm_count++) { $cm_chart_curcolor[$cm_count][1] = rand ($cm_chart_mincolor, $cm_chart_maxcolor); $cm_chart_curcolor[$cm_count][2] = rand ($cm_chart_mincolor, $cm_chart_maxcolor); $cm_chart_curcolor[$cm_count][3] = rand ($cm_chart_mincolor, $cm_chart_maxcolor); if ($cm_jpeg_truecolors) { $cm_chart_curcolor[$cm_count][0] = imagecolorexactalpha ($cm_chart_pie, $cm_chart_curcolor[$cm_count][1], $cm_chart_curcolor[$cm_count][2], $cm_chart_curcolor[$cm_count][3], 0); } else { $cm_chart_curcolor[$cm_count][0] = imagecolorallocate ($cm_chart_pie, $cm_chart_curcolor[$cm_count][1], $cm_chart_curcolor[$cm_count][2], $cm_chart_curcolor[$cm_count][3]); } } // Draw each pie segments... $cm_chart_curpos = 0; for ($cm_count = 0; $cm_count < $cm_chart_elements; $cm_count++) { if ($cm_jpeg_truecolors) { $cm_chart_pieval = round (3.6 * $cm_chart_values[$cm_count]); imagefilledarc ($cm_chart_pie, round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), $cm_chart_curpos, $cm_chart_curpos + $cm_chart_pieval, $cm_chart_curcolor[$cm_count][0], IMG_ARC_PIE); imagefilledarc ($cm_chart_pie, round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), $cm_chart_curpos, $cm_chart_curpos + $cm_chart_pieval, $cm_chart_outlinecolor, IMG_ARC_EDGED | IMG_ARC_NOFILL); $cm_chart_curpos += $cm_chart_pieval; } else { $cm_chart_pieval = round (3.6 * $cm_chart_values[$cm_count]); $cm_pieend_x = round (($cm_chart_centerX * $cm_chart_pieposfraction) + (($cm_chart_centerX * $cm_chart_pieposfraction)/2) * cos(($cm_chart_curpos + $cm_chart_pieval) * pi() / 180)); $cm_pieend_y = round (($cm_chart_centerY * $cm_chart_pieposfraction) + (($cm_chart_centerY * $cm_chart_pieposfraction)/2) * sin(($cm_chart_curpos + $cm_chart_pieval) * pi() / 180)); imagearc ($cm_chart_pie, round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), $cm_chart_curpos, $cm_chart_curpos + $cm_chart_pieval, $cm_chart_outlinecolor); imageline ($cm_chart_pie, round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), $cm_pieend_x, $cm_pieend_y, $cm_chart_outlinecolor); $cm_chart_curpos += $cm_chart_pieval; } } // if using old GD lib, we need to draw the first line and fill the segments... if (!$cm_jpeg_truecolors) { $cm_pieend_x = round (($cm_chart_centerX * $cm_chart_pieposfraction) + (($cm_chart_centerX * $cm_chart_pieposfraction)/2) * cos(0)); $cm_pieend_y = round (($cm_chart_centerY * $cm_chart_pieposfraction) + (($cm_chart_centerY * $cm_chart_pieposfraction)/2) * sin(0)); imageline ($cm_chart_pie, round ($cm_chart_centerX * $cm_chart_pieposfraction), round ($cm_chart_centerY * $cm_chart_pieposfraction), $cm_pieend_x, $cm_pieend_y, $cm_chart_outlinecolor); $cm_chart_curpos = 0; for ($cm_count = 0; $cm_count < $cm_chart_elements; $cm_count++) { $cm_chart_pieval = round (3.6 * $cm_chart_values[$cm_count]); $cm_pieend_x = round (($cm_chart_centerX * $cm_chart_pieposfraction) + ((($cm_chart_centerX * $cm_chart_pieposfraction)/2) * cos(($cm_chart_curpos + ($cm_chart_pieval / 2)) * pi() / 180) / 2)); $cm_pieend_y = round (($cm_chart_centerY * $cm_chart_pieposfraction) + ((($cm_chart_centerY * $cm_chart_pieposfraction)/2) * sin(($cm_chart_curpos + ($cm_chart_pieval / 2)) * pi() / 180) / 2)); imagefilltoborder ($cm_chart_pie, $cm_pieend_x, $cm_pieend_y, $cm_chart_outlinecolor, $cm_chart_curcolor[$cm_count][0]); $cm_chart_curpos += $cm_chart_pieval; } } if ($cm_jpeg_truecolors) { $cm_chart_finalpie = imagecreatetruecolor ($cm_chart_finalX, $cm_chart_finalY); imagealphablending ($cm_chart_finalpie, true); $cm_chart_outlinecolor = imagecolorexactalpha ($cm_chart_finalpie, 0, 0, 0, 0); $cm_chart_alphacolor = imagecolorexactalpha ($cm_chart_finalpie, 0, 0, 0, 70); imagecopyresampled ($cm_chart_finalpie, $cm_chart_pie, 0, 0, 0, 0, $cm_chart_finalX, $cm_chart_finalY, $cm_chart_X, $cm_chart_Y); } else { $cm_chart_finalpie = imagecreate ($cm_chart_finalX, $cm_chart_finalY); imagecopyresized ($cm_chart_finalpie, $cm_chart_pie, 0, 0, 0, 0, $cm_chart_finalX, $cm_chart_finalY, $cm_chart_X, $cm_chart_Y); imagepalettecopy ($cm_chart_finalpie, $cm_chart_pie); $cm_chart_outlinecolor = imagecolorallocate ($cm_chart_finalpie, 0, 0, 0); $cm_chart_alphacolor = imagecolorallocate ($cm_chart_finalpie, 0, 0, 0); } imagestring ($cm_chart_finalpie, $cm_chart_fonttitle, 10, 10, $cm_chart_title, $cm_chart_outlinecolor); imagestring ($cm_chart_finalpie, $cm_chart_fontfooter, 10, ($cm_chart_finalY - imagefontheight ($cm_chart_fontfooter) - 5), fcm_curdate_string (), $cm_chart_outlinecolor); for ($cm_count = 0; $cm_count < $cm_chart_elements; $cm_count++) { $cm_chart_recX1 = 10; $cm_chart_recY1 = 20 + 15 + ($cm_count * imagefontheight ($cm_chart_fontlegend)); $cm_chart_recX2 = 20; $cm_chart_recY2 = 20 + 15 + ($cm_count * imagefontheight ($cm_chart_fontlegend) + imagefontheight ($cm_chart_fontlegend)); imagefilledrectangle ($cm_chart_finalpie, $cm_chart_recX1, $cm_chart_recY1, $cm_chart_recX2, $cm_chart_recY2, $cm_chart_curcolor[$cm_count][0]); imagerectangle ($cm_chart_finalpie, $cm_chart_recX1, $cm_chart_recY1, $cm_chart_recX2, $cm_chart_recY2, $cm_chart_outlinecolor); imagestring ($cm_chart_finalpie, $cm_chart_fontlegend, 25, $cm_chart_recY1, $cm_chart_series[$cm_count] . " (" . $cm_chart_values[$cm_count] . "%)", $cm_chart_alphacolor); } imageinterlace($cm_chart_finalpie, 1); if (function_exists ("imagepng") && ($cm_chart_forcejpeg == false)) { header("Content-type: image/png"); header("Content-Disposition: attachment; filename=x.png"); imagepng ($cm_chart_finalpie); } elseif (function_exists ("imagejpeg")) { header("Content-type: image/jpeg"); header("Content-Disposition: filename=x.jpg"); imagejpeg ($cm_chart_finalpie, "", $cm_jpeg_quality); } else { echo "

{$cm_text["errorcreatingimg"]}

"; } } else { header("Content-type: image/gif"); header("Content-Disposition: filename=x.gif"); readfile ($cm_imgpath . "/t.gif"); } ?>