0byt3m1n1
Path:
/
data
/
applications
/
aps
/
tikiwiki
/
7.0-0
/
standard
/
htdocs
/
lib
/
graph-engine
/
[
Home
]
File: graph.pie.php
<?php // (c) Copyright 2002-2011 by authors of the Tiki Wiki CMS Groupware Project // // All Rights Reserved. See copyright.txt for details and a complete list of authors. // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. // $Id: graph.pie.php 33195 2011-03-02 17:43:40Z changi67 $ require_once 'lib/graph-engine/core.php'; class PieChartGraphic extends Graphic // {{{1 { var $pie_data; function PieChartGraphic() // {{{2 { Graphic::Graphic(); $this->pie_data = array(); } function getRequiredSeries() // {{{2 { return array( 'label' => false, 'value' => true, 'color' => false, 'style' => false ); } function _handleData( $data ) // {{{2 { $elements = count( $data['value'] ); if( !isset( $data['color'] ) ) { $data['color'] = array(); for( $i = 0; $elements > $i; ++$i ) $data['color'][] = $this->_getColor(); } if( !isset( $data['style'] ) ) for( $i = 0; $elements > $i; ++$i ) $data['style'][] = 'FillStroke-' . $data['color'][$i]; if( isset( $data['label'] ) ) foreach( $data['label'] as $key => $label ) $this->addLegend( $data['color'][$key], $label ); $total = array_sum( $data['value'] ); foreach( $data['value'] as $key => $value ) if( is_numeric( $value ) ) $this->pie_data[] = array( $data['style'][$key], $value / $total * 360 ); return true; } function _drawContent( &$renderer ) // {{{2 { $layout = $this->_layout(); $centerX = $layout['pie-center-x']; $centerY = $layout['pie-center-y']; $radius = $layout['pie-radius']; $base = 0; foreach( $this->pie_data as $info ) { list( $style, $degree ) = $info; $renderer->drawPie( $centerX, $centerY, $radius, $base, $base + $degree, $renderer->getStyle( $style ) ); $base += $degree; } } function _drawLegendBox( &$renderer, $color ) // {{{2 { $renderer->drawRectangle( 0, 0, 1, 1, $renderer->getStyle( "FillStroke-$color" ) ); } function _default() // {{{2 { return array_merge( parent::_default(), array( 'pie-center-x' => 0.5, 'pie-center-y' => 0.5, 'pie-radius' => 0.4 ) ); } } // }}}1