diff options
Diffstat (limited to 'src/options/cairo_driver.php')
-rw-r--r-- | src/options/cairo_driver.php | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/options/cairo_driver.php b/src/options/cairo_driver.php new file mode 100644 index 0000000..6d5bb68 --- /dev/null +++ b/src/options/cairo_driver.php @@ -0,0 +1,100 @@ +<?php +/** + * File containing the ezcGraphCairoDriverOption class + * + * @package Graph + * @version //autogentag// + * @copyright Copyright (C) 2005-2007 eZ systems as. All rights reserved. + * @license http://ez.no/licenses/new_bsd New BSD License + */ +/** + * Class containing the extended options for the SVG driver. + * + * <code> + * $graph = new ezcGraphPieChart(); + * $graph->background->color = '#FFFFFFFF'; + * $graph->title = 'Access statistics'; + * $graph->legend = false; + * + * $graph->data['Access statistics'] = new ezcGraphArrayDataSet( array( + * 'Mozilla' => 19113, + * 'Explorer' => 10917, + * 'Opera' => 1464, + * 'Safari' => 652, + * 'Konqueror' => 474, + * ) ); + * + * $graph->driver = new ezcGraphCairoDriver(); + * + * // No options yet. + * + * $graph->render( 400, 200, 'tutorial_driver_cairo.png' ); + * </code> + * + * @property float $imageMapResolution + * Degree step used to interpolate round image primitives by + * polygons for image maps + * @property float $circleResolution + * Resolution for circles, until I understand how to draw ellipses + * with SWFShape::curveTo() + * + * @version //autogentag// + * @package Graph + */ +class ezcGraphCairoDriverOptions extends ezcGraphDriverOptions +{ + /** + * Constructor + * + * @param array $options Default option array + * @return void + * @ignore + */ + public function __construct( array $options = array() ) + { + $this->properties['imageMapResolution'] = 10; + $this->properties['circleResolution'] = 2.; + + parent::__construct( $options ); + } + + /** + * Set an option value + * + * @param string $propertyName + * @param mixed $propertyValue + * @throws ezcBasePropertyNotFoundException + * If a property is not defined in this class + * @return void + * @ignore + */ + public function __set( $propertyName, $propertyValue ) + { + switch ( $propertyName ) + { + case 'imageMapResolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue < 1 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'int >= 1' ); + } + + $this->properties['imageMapResolution'] = (int) $propertyValue; + break; + case 'circleResolution': + if ( !is_numeric( $propertyValue ) || + ( $propertyValue <= 0 ) ) + { + throw new ezcBaseValueException( $propertyName, $propertyValue, 'float > 0' ); + } + + $this->properties['circleResolution'] = (float) $propertyValue; + break; + default: + parent::__set( $propertyName, $propertyValue ); + break; + } + } +} + +?> |