Files
FHC-Core/include/ezcomponents/Graph/src/element/text.php
T
Andreas Österreicher 0a8e90a8b3 EZ-Components
2009-02-17 15:27:43 +00:00

123 lines
3.5 KiB
PHP

<?php
/**
* File containing the ezcGraphChartElementText class
*
* @package Graph
* @version 1.3
* @copyright Copyright (C) 2005-2008 eZ systems as. All rights reserved.
* @license http://ez.no/licenses/new_bsd New BSD License
*/
/**
* Chart element to display texts in a chart
*
* @property float $maxHeight
* Maximum percent of bounding used to display the text.
*
* @version 1.3
* @package Graph
* @mainclass
*/
class ezcGraphChartElementText extends ezcGraphChartElement
{
/**
* Constructor
*
* @param array $options Default option array
* @return void
* @ignore
*/
public function __construct( array $options = array() )
{
$this->properties['maxHeight'] = .1;
parent::__construct( $options );
}
/**
* __set
*
* @param mixed $propertyName
* @param mixed $propertyValue
* @throws ezcBaseValueException
* If a submitted parameter was out of range or type.
* @throws ezcBasePropertyNotFoundException
* If a the value for the property options is not an instance of
* @return void
*/
public function __set( $propertyName, $propertyValue )
{
switch ( $propertyName )
{
case 'maxHeight':
if ( !is_numeric( $propertyValue ) ||
( $propertyValue < 0 ) ||
( $propertyValue > 1 ) )
{
throw new ezcBaseValueException( $propertyName, $propertyValue, '0 <= float <= 1' );
}
$this->properties['maxHeight'] = (float) $propertyValue;
break;
default:
parent::__set( $propertyName, $propertyValue );
break;
}
}
/**
* Render the text
*
* @param ezcGraphRenderer $renderer Renderer
* @param ezcGraphBoundings $boundings Boundings for the axis
* @return ezcGraphBoundings Remaining boundings
*/
public function render( ezcGraphRenderer $renderer, ezcGraphBoundings $boundings )
{
$height = (int) min(
round( $this->properties['maxHeight'] * ( $boundings->y1 - $boundings->y0 ) ),
$this->properties['font']->maxFontSize + $this->padding * 2 + $this->margin * 2
);
switch ( $this->properties['position'] )
{
case ezcGraph::TOP:
$textBoundings = new ezcGraphBoundings(
$boundings->x0,
$boundings->y0,
$boundings->x1,
$boundings->y0 + $height
);
$boundings->y0 += $height + $this->properties['margin'];
break;
case ezcGraph::BOTTOM:
$textBoundings = new ezcGraphBoundings(
$boundings->x0,
$boundings->y1 - $height,
$boundings->x1,
$boundings->y1
);
$boundings->y1 -= $height + $this->properties['margin'];
break;
}
$textBoundings = $renderer->drawBox(
$textBoundings,
$this->properties['background'],
$this->properties['border'],
$this->properties['borderWidth'],
$this->properties['margin'],
$this->properties['padding']
);
$renderer->drawText(
$textBoundings,
$this->properties['title'],
ezcGraph::CENTER | ezcGraph::MIDDLE
);
return $boundings;
}
}
?>