// setup some global colors var $r_arr = array(0.1, 1, 0, 1, 0, 1, 0.388235294, 0.4, 0.388235294, 0.929411765); var $g_arr = array(1, 0, 0, 1, 1, 0, 0.8, 0.4, 0.8, 0.439215686); var $b_arr = array(0.25, 0, 1, 0, 1, 1, 1, 0.4, 1, 0.043137255);
var $percents;
function flash_pie($values, $this_file) { //begin constructor // to write out code directly to browser, set content header and use "php://stdout" //swf_openfile ("php://stdout", 700, 250, 30, 1, 1, 1); //header("Content-type: application/x-shockwave-flash");
// set up viewport for flash movie swf_ortho2 (-400, 300 , -90, 250);
// choose the font we will use for pie graph swf_definefont(10, "Mod");
// get sum of array for percents/slices while(list($key,$val) = each($values)) { $sum = $sum + $val; }
for ($i=0; $i<count($values); $i++) { // calculate how big they need to be and then // draw all of our slices if ($i == 0) { // setup parameters for first slice $begin = 0; $val = $values[$i]/$sum; $end = $val*360; swf_translate(-200, 0, 0); } else { // setup parameters for every other slice $begin = $end; $val = $values[$i]/$sum; $end = $end + $val*360; }
// function call to add slice $objID = 1+$i*10; $this->show_slice($i, $objID, $begin, $end);
// put together percent array for all labels $this->percents[$i] = round($values[$i]/$sum*100); }
} //end flash_pie
function show_slice($i, $objID, $begin, $end) { // draws a slice and places it in our frame swf_addcolor($this->r_arr[$i], $this->g_arr[$i], $this->b_arr[$i], 1);
function pie_legend($labels) { // draws the legend and labels and places it in our frame for ($i=0; $i<count($labels); $i++) { swf_addcolor($this->r_arr[$i], $this->g_arr[$i], $this->b_arr[$i], 1);
function pie_text($id, $text, $size, $x, $y) { // simple function to draw text ($text) at ($x,$y) with font size ($size) // set color of text to black swf_addcolor(0,0,0,0);
// set font size and slant swf_fontsize($size); swf_fontslant(0);
// define, position and place text in frame swf_definetext($id, "$text", 1); swf_translate($x, $y, 0); swf_placeobject($id, 1); }
function pie_title($text, $size) { // simple function to draw title and set lineup // $text should not exceed about 25 characters $this->pie_text(99, $text, $size, 0, 150); swf_translate(0, -300, 0); }
function show() { // show the frame swf_showframe(); }
function close() { // flush our buffer and return movie $data = swf_closefile(1); }