* @author Stefan Neufeind * @copyright 2003-2009 The PHP Group * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 * @version SVN: $Id: Array.php 291170 2009-11-23 03:50:22Z neufeind $ * @link http://pear.php.net/package/Image_Graph */ /** * Include file Image/Graph/Common.php */ require_once 'Image/Graph/Common.php'; /** * A sequential array of linestyles. * * This is used for multiple objects within the same element with different line * styles. This is done by adding multiple line styles to a LineArrray * structure. The linearray will then when requested return the 'next' linestyle * in sequential order. It is possible to specify ID tags to each linestyle, * which is used to make sure some data uses a specific linestyle (i.e. in a * multiple-/stackedbarchart you name the {@link Image_Graph_Dataset}s and uses * this name as ID tag when adding the dataset's associated linestyle to the * linearray. * * @category Images * @package Image_Graph * @subpackage Line * @author Jesper Veggerby * @author Stefan Neufeind * @copyright 2003-2009 The PHP Group * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 * @version Release: 0.8.0 * @link http://pear.php.net/package/Image_Graph */ class Image_Graph_Line_Array extends Image_Graph_Common { /** * The fill array * @var array * @access private */ var $_lineStyles = array (); /** * Add a line style to the array * * @param Image_Graph_Line &$style The style to add * @param ??? $id ??? * * @return void */ function add(& $style, $id = false) { if (is_a($style, 'Image_Graph_Element')) { parent::add($style); } if ($id === false) { $this->_lineStyles[] =& $style; } else { $this->_lineStyles[$id] =& $style; } reset($this->_lineStyles); } /** * Add a color to the array * * @param int $color The color * @param string $id The id or name of the color * * @return void */ function addColor($color, $id = false) { if ($id !== false) { $this->_lineStyles[$id] = $color; } else { $this->_lineStyles[] = $color; } reset($this->_lineStyles); } /** * Return the linestyle * * @param ??? $ID ??? * * @return int A GD Linestyle * @access private */ function _getLineStyle($ID = false) { if (($ID === false) || (!isset($this->_lineStyles[$ID]))) { $ID = key($this->_lineStyles); if (!next($this->_lineStyles)) { reset($this->_lineStyles); } } $lineStyle =& $this->_lineStyles[$ID]; if (is_object($lineStyle)) { return $lineStyle->_getLineStyle($ID); } elseif ($lineStyle !== null) { return $lineStyle; } else { return parent::_getLineStyle($ID); } } } ?>