aboutsummaryrefslogtreecommitdiffstats
path: root/packages/dspam/pear/Image/Graph/Plotarea.php
diff options
context:
space:
mode:
authorBill Marquette <bill.marquette@gmail.com>2009-02-06 19:18:00 -0600
committerBill Marquette <bill.marquette@gmail.com>2009-02-06 19:18:00 -0600
commit55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1 (patch)
treeba4783bab1dd65f1ceef2dfac9fdbd515531d18b /packages/dspam/pear/Image/Graph/Plotarea.php
parent67780cc9d469288742aea5bc378c29a54edd5ec5 (diff)
downloadpfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.tar.gz
pfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.tar.bz2
pfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.zip
mv packages to config dir to match web layout
Diffstat (limited to 'packages/dspam/pear/Image/Graph/Plotarea.php')
-rw-r--r--packages/dspam/pear/Image/Graph/Plotarea.php1145
1 files changed, 0 insertions, 1145 deletions
diff --git a/packages/dspam/pear/Image/Graph/Plotarea.php b/packages/dspam/pear/Image/Graph/Plotarea.php
deleted file mode 100644
index 42aeb26a..00000000
--- a/packages/dspam/pear/Image/Graph/Plotarea.php
+++ /dev/null
@@ -1,1145 +0,0 @@
-<?php
-
-/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
-
-/**
- * Image_Graph - PEAR PHP OO Graph Rendering Utility.
- *
- * PHP versions 4 and 5
- *
- * LICENSE: This library is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at your
- * option) any later version. This library is distributed in the hope that it
- * will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
- * General Public License for more details. You should have received a copy of
- * the GNU Lesser General Public License along with this library; if not, write
- * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- * 02111-1307 USA
- *
- * @category Images
- * @package Image_Graph
- * @subpackage Plotarea
- * @author Jesper Veggerby <pear.nosey@veggerby.dk>
- * @copyright Copyright (C) 2003, 2004 Jesper Veggerby Hansen
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id$
- * @link http://pear.php.net/package/Image_Graph
- */
-
-/**
- * Include file Image/Graph/Layout.php
- */
-require_once 'Image/Graph/Layout.php';
-
-/**
- * Plot area used for drawing plots.
- *
- * The plotarea consists of an x-axis and an y-axis, the plotarea can plot multiple
- * charts within one plotares, by simply adding them (the axis' will scale to the
- * plots automatically). A graph can consist of more plotareas
- *
- * @category Images
- * @package Image_Graph
- * @subpackage Plotarea
- * @author Jesper Veggerby <pear.nosey@veggerby.dk>
- * @copyright Copyright (C) 2003, 2004 Jesper Veggerby Hansen
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version Release: @package_version@
- * @link http://pear.php.net/package/Image_Graph
- */
-class Image_Graph_Plotarea extends Image_Graph_Layout
-{
-
- /**
- * The left most pixel of the 'real' plot area on the canvas
- * @var int
- * @access private
- */
- var $_plotLeft = 0;
-
- /**
- * The top most pixel of the 'real' plot area on the canvas
- * @var int
- * @access private
- */
- var $_plotTop = 0;
-
- /**
- * The right most pixel of the 'real' plot area on the canvas
- * @var int
- * @access private
- */
- var $_plotRight = 0;
-
- /**
- * The bottom most pixel of the 'real' plot area on the canvas
- * @var int
- * @access private
- */
- var $_plotBottom = 0;
-
- /**
- * The X axis
- * @var Axis
- * @access private
- */
- var $_axisX = null;
-
- /**
- * The Y axis
- * @var Axis
- * @access private
- */
- var $_axisY = null;
-
- /**
- * The secondary Y axis
- * @var Axis
- * @access private
- */
- var $_axisYSecondary = null;
-
- /**
- * The border style of the 'real' plot area
- * @var LineStyle
- * @access private
- */
- var $_plotBorderStyle = null;
-
- /**
- * Does any plot have any data?
- * @var bool
- * @access private
- */
- var $_hasData = false;
-
- /**
- * Is the plotarea horizontal?
- * @var bool
- * @access private
- */
- var $_horizontal = false;
-
- /**
- * Image_Graph_Plotarea [Constructor]
- *
- * @param string $axisX The class of the X axis (if omitted a std. axis is created)
- * @param string $axisY The class of the Y axis (if omitted a std. axis is created)
- * @param string $direction The direction of the plotarea - 'horizontal' or 'vertical' (default)
- */
- function Image_Graph_Plotarea($axisX = 'Image_Graph_Axis_Category', $axisY = 'Image_Graph_Axis', $direction = 'vertical')
- {
- parent::Image_Graph_Layout();
-
- $this->_padding = array('left' => 5, 'top' => 5, 'right' => 5, 'bottom' => 5);;
-
- include_once 'Image/Graph.php';
-
- $this->_axisX =& Image_Graph::factory($axisX, IMAGE_GRAPH_AXIS_X);
- $this->_axisX->_setParent($this);
-
- $this->_axisY =& Image_Graph::factory($axisY, IMAGE_GRAPH_AXIS_Y);
- $this->_axisY->_setParent($this);
- $this->_axisY->_setMinimum(0);
-
- $this->_fillStyle = false;
-
- if ($direction == 'horizontal') {
- $this->_horizontal = true;
- $this->_axisX->_transpose = true;
- $this->_axisY->_transpose = true;
- }
- }
-
- /**
- * Sets the parent. The parent chain should ultimately be a GraPHP object
- *
- * @see Image_Graph_Common
- * @param Image_Graph_Common $parent The parent
- * @access private
- */
- function _setParent(& $parent)
- {
- parent::_setParent($parent);
- if ($this->_axisX !== null) {
- $this->_axisX->_setParent($this);
- }
- if ($this->_axisY !== null) {
- $this->_axisY->_setParent($this);
- }
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setParent($this);
- }
- }
-
- /**
- * Sets the plot border line style of the element.
- *
- * @param Image_Graph_Line $lineStyle The line style of the border
- * @deprecated 0.3.0dev2 - 2004-12-16
- */
- function setPlotBorderStyle(& $plotBorderStyle)
- {
- }
-
- /**
- * Adds an element to the plotarea
- *
- * @param Image_Graph_Element $element The element to add
- * @param int $axis The axis to associate the element with, either
- * IMAGE_GRAPH_AXIS_X, IMAGE_GRAPH_AXIS_Y, IMAGE_GRAPH_AXIS_Y_SECONDARY
- * or the shorter string notations 'x', 'y' or 'ysec' (defaults to
- * IMAGE_GRAPH_AXIS_Y)
- * @return Image_Graph_Element The added element
- * @see Image_Graph_Common::add()
- */
- function &add(& $element, $axis = IMAGE_GRAPH_AXIS_Y)
- {
- if ($axis == 'x') {
- $axis = IMAGE_GRAPH_AXIS_X;
- }
- if ($axis == 'y') {
- $axis = IMAGE_GRAPH_AXIS_Y;
- }
- if ($axis == 'ysec') {
- $axis = IMAGE_GRAPH_AXIS_Y_SECONDARY;
- }
- if (($axis == IMAGE_GRAPH_AXIS_Y_SECONDARY) &&
- ($this->_axisYSecondary == null))
- {
- $this->_axisYSecondary =& Image_Graph::factory('axis', IMAGE_GRAPH_AXIS_Y_SECONDARY);
- $this->_axisYSecondary->_setMinimum(0);
- if ($this->_horizontal) {
- $this->_axisYSecondary->_transpose = true;
- }
- }
-
- parent::add($element);
-
- if (is_a($element, 'Image_Graph_Plot')) {
- $element->_setAxisY($axis);
- // postpone extrema calculation until we calculate coordinates
- //$this->_setExtrema($element);
- } elseif (is_a($element, 'Image_Graph_Grid')) {
- switch ($axis) {
- case IMAGE_GRAPH_AXIS_X:
- if ($this->_axisX != null) {
- $element->_setPrimaryAxis($this->_axisX);
- if ($this->_axisY != null) {
- $element->_setSecondaryAxis($this->_axisY);
- }
- }
- break;
- case IMAGE_GRAPH_AXIS_Y:
- if ($this->_axisY != null) {
- $element->_setPrimaryAxis($this->_axisY);
- if ($this->_axisX != null) {
- $element->_setSecondaryAxis($this->_axisX);
- }
- }
- break;
- case IMAGE_GRAPH_AXIS_Y_SECONDARY:
- if ($this->_axisYSecondary != null) {
- $element->_setPrimaryAxis($this->_axisYSecondary);
- if ($this->_axisX != null) {
- $element->_setSecondaryAxis($this->_axisX);
- }
- }
- break;
- }
- } elseif (is_a($element, 'Image_Graph_Axis')) {
- switch ($element->_type) {
- case IMAGE_GRAPH_AXIS_X:
- $this->_axisX =& $element;
- break;
-
- case IMAGE_GRAPH_AXIS_Y:
- $this->_axisY =& $element;
- break;
-
- case IMAGE_GRAPH_AXIS_Y_SECONDARY:
- $this->_axisYSecondary =& $element;
- break;
-
- }
- if ($element->_getMinimum() == $element->_getMaximum()) {
- $element->_setMinimum(0);
- $element->_setMaximum(1);
- }
- }
- return $element;
- }
-
- /**
- * Get the width of the 'real' plotarea
- *
- * @return int The width of the 'real' plotarea, ie not including space occupied by padding and axis
- * @access private
- */
- function _plotWidth()
- {
- return abs($this->_plotRight - $this->_plotLeft);
- }
-
- /**
- * Get the height of the 'real' plotarea
- *
- * @return int The height of the 'real' plotarea, ie not including space
- * occupied by padding and axis
- * @access private
- */
- function _plotHeight()
- {
- return abs($this->_plotBottom - $this->_plotTop);
- }
-
- /**
- * Set the extrema of the axis
- *
- * @param Image_Graph_Plot $plot The plot that 'hold' the values
- * @access private
- */
- function _setExtrema(& $plot)
- {
- if (($this->_axisX != null) && ($this->_axisX->_isNumeric())) {
- $this->_axisX->_setMinimum($plot->_minimumX());
- $this->_axisX->_setMaximum($plot->_maximumX());
- }
-
- if (($plot->_axisY == IMAGE_GRAPH_AXIS_Y_SECONDARY) &&
- ($this->_axisYSecondary !== null) &&
- ($this->_axisYSecondary->_isNumeric()))
- {
- $this->_axisYSecondary->_setMinimum($plot->_minimumY());
- $this->_axisYSecondary->_setMaximum($plot->_maximumY());
- } elseif (($this->_axisY != null) && ($this->_axisY->_isNumeric())) {
- $this->_axisY->_setMinimum($plot->_minimumY());
- $this->_axisY->_setMaximum($plot->_maximumY());
- }
-
- $datasets =& $plot->dataset();
- if (!is_array($datasets)) {
- $datasets = array($datasets);
- }
-
- $keys = array_keys($datasets);
- foreach ($keys as $key) {
- $dataset =& $datasets[$key];
- if ($dataset->count() > 0) {
- $this->_hasData = true;
- }
-
- if (is_a($dataset, 'Image_Graph_Dataset')) {
- if (($this->_axisX != null) && (!$this->_axisX->_isNumeric())) {
- $this->_axisX->_applyDataset($dataset);
- }
-
- if (($plot->_axisY == IMAGE_GRAPH_AXIS_Y_SECONDARY) &&
- ($this->_axisYSecondary !== null) &&
- (!$this->_axisYSecondary->_isNumeric()))
- {
- $this->_axisYSecondary->_applyDataset($dataset);
- } elseif (($this->_axisY != null) && (!$this->_axisY->_isNumeric())) {
- $this->_axisY->_applyDataset($dataset);
- }
- }
- }
- unset($keys);
- }
-
- /**
- * Left boundary of the background fill area
- *
- * @return int Leftmost position on the canvas
- * @access private
- */
- function _fillLeft()
- {
- return $this->_plotLeft;
- }
-
- /**
- * Top boundary of the background fill area
- *
- * @return int Topmost position on the canvas
- * @access private
- */
- function _fillTop()
- {
- return $this->_plotTop;
- }
-
- /**
- * Right boundary of the background fill area
- *
- * @return int Rightmost position on the canvas
- * @access private
- */
- function _fillRight()
- {
- return $this->_plotRight;
- }
-
- /**
- * Bottom boundary of the background fill area
- *
- * @return int Bottommost position on the canvas
- * @access private
- */
- function _fillBottom()
- {
- return $this->_plotBottom;
- }
-
- /**
- * Get the point from the x-axis
- * @param array $value The value array
- * @param int $min The minimum pixel position possible
- * @param int $max The maximum pixel position possible
- * @return int The pixel position from the axis
- * @access private
- */
- function _axisPointX($value, $min, $max)
- {
- if (($this->_axisX == null) || (!isset($value['X']))) {
- return false;
- }
-
- if ($value['X'] === '#min#') {
- return $min;
- }
- if ($value['X'] === '#max#') {
- return $max;
- }
-
- return $this->_axisX->_point($value['X']);
- }
-
- /**
- * Get the point from the x-axis
- * @param array $value The value array
- * @param int $min The minimum pixel position possible
- * @param int $max The maximum pixel position possible
- * @return int The pixel position from the axis
- * @access private
- */
- function _axisPointY($value, $min, $max)
- {
- if (!isset($value['Y'])) {
- return false;
- }
-
- if (($value['Y'] === '#min_pos#') || ($value['Y'] === '#max_nex#')) {
- // return the minimum (bottom) position or if negative then zero
- // or the maxmum (top) position or if positive then zero
- if ((isset($value['AXIS_Y'])) &&
- ($value['AXIS_Y'] == IMAGE_GRAPH_AXIS_Y_SECONDARY) &&
- ($this->_axisYSecondary !== null)
- ) {
- $axisY =& $this->_axisYSecondary;
- } else {
- $axisY =& $this->_axisY;
- }
- if ($value['Y'] === '#min_pos#') {
- return $axisY->_point(max(0, $axisY->_getMinimum()));
- } else {
- return $axisY->_point(min(0, $axisY->_getMaximum()));
- }
- }
-
- if ($value['Y'] === '#min#') {
- return $min;
- }
- if ($value['Y'] === '#max#') {
- return $max;
- }
-
- if ((isset($value['AXIS_Y'])) &&
- ($value['AXIS_Y'] == IMAGE_GRAPH_AXIS_Y_SECONDARY)
- ) {
- if ($this->_axisYSecondary !== null) {
- return $this->_axisYSecondary->_point($value['Y']);
- }
- } else {
- if ($this->_axisY !== null) {
- return $this->_axisY->_point($value['Y']);
- }
- }
- return false;
- }
-
- /**
- * Get the X pixel position represented by a value
- *
- * @param double Value the value to get the pixel-point for
- * @return double The pixel position along the axis
- * @access private
- */
- function _pointX($value)
- {
- if ($this->_horizontal) {
- return $this->_axisPointY($value, $this->_plotLeft, $this->_plotRight);
- }
- else {
- return $this->_axisPointX($value, $this->_plotLeft, $this->_plotRight);
- }
- }
-
- /**
- * Get the Y pixel position represented by a value
- *
- * @param double Value the value to get the pixel-point for
- * @return double The pixel position along the axis
- * @access private
- */
- function _pointY($value)
- {
- if ($this->_horizontal) {
- return $this->_axisPointX($value, $this->_plotBottom, $this->_plotTop);
- }
- else {
- return $this->_axisPointY($value, $this->_plotBottom, $this->_plotTop);
- }
- }
-
- /**
- * Return the minimum value of the specified axis
- *
- * @param int $axis The axis to return the minimum value of (see {$link
- * Image_Graph_Plotarea::getAxis()})
- * @return double The minimum value of the axis
- * @access private
- */
- function _getMinimum($axis = IMAGE_GRAPH_AXIS_Y)
- {
- $axis =& $this->getAxis($axis);
- if ($axis !== null) {
- return $axis->_getMinimum();
- } else {
- return 0;
- }
- }
-
- /**
- * Return the maximum value of the specified axis
- *
- * @param int $axis The axis to return the maximum value of(see {$link
- * Image_Graph_Plotarea::getAxis()})
- * @return double The maximum value of the axis
- * @access private
- */
- function _getMaximum($axis = IMAGE_GRAPH_AXIS_Y)
- {
- $axis =& $this->getAxis($axis);
- if ($axis !== null) {
- return $axis->_getMaximum();
- } else {
- return 0;
- }
- }
-
- /**
- * Return the label distance for the specified axis.
- *
- * @param int $axis The axis to return the label distance for
- * @return int The distance between 2 adjacent labels
- * @access private
- */
- function _labelDistance($axis)
- {
- $axis =& $this->getAxis($axis);
- if ($axis !== null) {
- return $axis->_labelDistance();
- }
-
- return false;
- }
-
- /**
- * Hides the axis
- */
- function hideAxis($axis = false)
- {
- if (((!$axis) || ($axis === $this->_axisX) || ($axis === 'x')) && ($this->_axisX != null)) {
- $this->_axisX->hide();
- }
- if (((!$axis) || ($axis === $this->_axisY) || ($axis === 'y')) && ($this->_axisY != null)) {
- $this->_axisY->hide();
- }
- if (((!$axis) || ($axis === $this->_axisYSecondary) || ($axis === 'y_sec')) && ($this->_axisYSecondary != null)) {
- $this->_axisYSecondary->hide();
- }
- }
-
- /**
- * Clears/removes the axis
- */
- function clearAxis()
- {
- $this->_axisX = $this->_axisY = $this->_axisYSecondary = null;
- }
-
- /**
- * Get axis.
- *
- * Possible values are IMAGE_GRAPH_AXIS_X, IMAGE_GRAPH_AXIS_Y,
- * IMAGE_GRAPH_AXIS_Y_SECONDARY or a short hand notation using
- * string identifiers: 'x', 'y', 'ysec'
- *
- * @param int $axis The axis to return
- * @return Image_Graph_Axis The axis
- */
- function &getAxis($axis = IMAGE_GRAPH_AXIS_X)
- {
- switch ($axis) {
- case IMAGE_GRAPH_AXIS_X:
- case 'x':
- return $this->_axisX;
-
- case IMAGE_GRAPH_AXIS_Y:
- case 'y':
- return $this->_axisY;
-
- case IMAGE_GRAPH_AXIS_Y_SECONDARY:
- case 'ysec':
- return $this->_axisYSecondary;
-
- }
- return null;
- }
-
- /**
- * Update coordinates
- *
- * @access private
- */
- function _updateCoords()
- {
- if (is_array($this->_elements)) {
- $keys = array_keys($this->_elements);
- foreach ($keys as $key) {
- $element =& $this->_elements[$key];
- if (is_a($element, 'Image_Graph_Plot')) {
- if (((is_a($element, 'Image_Graph_Plot_Bar')) ||
- (is_a($element, 'Image_Graph_Plot_Step')) ||
- (is_a($element, 'Image_Graph_Plot_Dot')) ||
- (is_a($element, 'Image_Graph_Plot_CandleStick')) ||
- (is_a($element, 'Image_Graph_Plot_BoxWhisker')) ||
- (is_a($element, 'Image_Graph_Plot_Impulse'))) &&
- ($this->_axisX != null) &&
- (strtolower(get_class($this->_axisX)) != 'image_graph_axis') // do not push plot if x-axis is linear
- )
- {
- $this->_axisX->_pushValues();
- }
- $this->_setExtrema($element);
- }
- }
- unset($keys);
- }
-
- $this->_calcEdges();
-
- $pctWidth = (int) ($this->width() * 0.05);
- $pctHeight = (int) ($this->height() * 0.05);
-
- $left = $this->_left + $this->_padding['left'];
- $top = $this->_top + $this->_padding['top'];
- $right = $this->_right - $this->_padding['right'];
- $bottom = $this->_bottom - $this->_padding['bottom'];
-
- // temporary place holder for axis point calculations
- $axisPoints['x'] = array($left, $top, $right, $bottom);
- $axisPoints['y'] = $axisPoints['x'];
- $axisPoints['y2'] = $axisPoints['x'];
-
- if ($this->_axisX !== null) {
- $intersectX = $this->_axisX->_getAxisIntersection();
- $sizeX = $this->_axisX->_size();
- $this->_axisX->_setCoords($left, $top, $right, $bottom);
- $this->_axisX->_updateCoords();
- }
-
- if ($this->_axisY !== null) {
- $intersectY = $this->_axisY->_getAxisIntersection();
- $sizeY = $this->_axisY->_size();
- $this->_axisY->_setCoords($left, $top, $right, $bottom);
- $this->_axisY->_updateCoords();
- }
-
- if ($this->_axisYSecondary !== null) {
- $intersectYsec = $this->_axisYSecondary->_getAxisIntersection();
- $sizeYsec = $this->_axisYSecondary->_size();
- $this->_axisYSecondary->_setCoords($left, $top, $right, $bottom);
- $this->_axisYSecondary->_updateCoords();
- }
-
- $axisCoordAdd = array('left' => 0, 'right' => 0, 'top' => 0, 'bottom' => 0);
-
- if ($this->_axisY != null) {
- if ($this->_axisX != null) {
- $pos = $this->_axisX->_intersectPoint($intersectY['value']);
- } else {
- $pos = ($this->_horizontal ? $bottom : $left);
- }
-
- if ($this->_horizontal) {
- if (($pos + $sizeY) > $bottom) {
- $axisCoordAdd['bottom'] = ($pos + $sizeY) - $bottom;
- // the y-axis position needs to be recalculated!
- } else {
- // top & bottom may need to be adjusted when the x-axis has been
- // calculated!
- $this->_axisY->_setCoords(
- $left,
- $pos,
- $right,
- $pos + $sizeY
- );
- $this->_axisY->_updateCoords();
- }
- }
- else {
- if (($pos - $sizeY) < $left) {
- $axisCoordAdd['left'] = $left - ($pos - $sizeY);
- // the y-axis position needs to be recalculated!
- } else {
- // top & bottom may need to be adjusted when the x-axis has been
- // calculated!
- $this->_axisY->_setCoords(
- $pos - $sizeY,
- $top,
- $pos,
- $bottom
- );
- $this->_axisY->_updateCoords();
- }
- }
- }
-
- if ($this->_axisYSecondary != null) {
- if ($this->_axisX != null) {
- $pos = $this->_axisX->_intersectPoint($intersectYsec['value']);
- } else {
- $pos = ($this->_horizontal ? $top : $right);
- }
-
- if ($this->_horizontal) {
- if (($pos - $sizeYsec) < $top) {
- $axisCoordAdd['top'] = $top - ($pos - $sizeYsec);
- // the secondary y-axis position need to be recalculated
- } else {
- // top & bottom may need to be adjusted when the x-axis has been
- // calculated!
- $this->_axisYSecondary->_setCoords(
- $left,
- $pos - $sizeY,
- $right,
- $pos
- );
- $this->_axisYSecondary->_updateCoords();
- }
- }
- else {
- if (($pos + $sizeYsec) > $right) {
- $axisCoordAdd['right'] = ($pos + $sizeYsec) - $right;
- // the secondary y-axis position need to be recalculated
- } else {
- // top & bottom may need to be adjusted when the x-axis has been
- // calculated!
- $this->_axisYSecondary->_setCoords(
- $pos,
- $top,
- $pos + $sizeY,
- $bottom
- );
- $this->_axisYSecondary->_updateCoords();
- }
- }
- }
-
- if ($this->_axisX != null) {
- if (($intersectX['axis'] == IMAGE_GRAPH_AXIS_Y_SECONDARY) &&
- ($this->_axisYSecondary !== null)
- ) {
- $axis =& $this->_axisYSecondary;
- } elseif ($this->_axisY !== null) {
- $axis =& $this->_axisY;
- } else {
- $axis = false;
- }
-
- if ($axis !== false) {
- $pos = $axis->_intersectPoint($intersectX['value']);
- } else {
- $pos = ($this->_horizontal ? $left : $bottom);
- }
-
- if ($this->_horizontal) {
- if (($pos - $sizeX) < $left) {
- $axisCoordAdd['left'] = $left - ($pos - $sizeX);
- $pos = $left + $sizeX;
- }
-
- $this->_axisX->_setCoords(
- $pos - $sizeX,
- $top + $axisCoordAdd['top'],
- $pos,
- $bottom - $axisCoordAdd['bottom']
- );
- $this->_axisX->_updateCoords();
- }
- else {
- if (($pos + $sizeX) > $bottom) {
- $axisCoordAdd['bottom'] = ($pos + $sizeX) - $bottom;
- $pos = $bottom - $sizeX;
- }
-
- $this->_axisX->_setCoords(
- $left + $axisCoordAdd['left'],
- $pos,
- $right - $axisCoordAdd['right'],
- $pos + $sizeX
- );
- $this->_axisX->_updateCoords();
- }
- }
-
- if ($this->_horizontal) {
- if (($this->_axisX !== null) &&
- (($axisCoordAdd['top'] != 0) ||
- ($axisCoordAdd['bottom'] != 0))
- ) {
- // readjust y-axis for better estimate of position
- if ($this->_axisY !== null) {
- $pos = $this->_axisX->_intersectPoint($intersectY['value']);
- $this->_axisY->_setCoords(
- false,
- $pos,
- false,
- $pos + $sizeY
- );
- $this->_axisY->_updateCoords();
- }
-
- if ($this->_axisYSecondary !== null) {
- $pos = $this->_axisX->_intersectPoint($intersectYsec['value']);
- $this->_axisYSecondary->_setCoords(
- false,
- $pos - $sizeYsec,
- false,
- $pos
- );
- $this->_axisYSecondary->_updateCoords();
- }
- }
-
- // adjust top and bottom of y-axis
- if ($this->_axisY !== null) {
- $this->_axisY->_setCoords(
- $left + $axisCoordAdd['left'],
- false,
- $right - $axisCoordAdd['right'],
- false
- );
- $this->_axisY->_updateCoords();
- }
-
- // adjust top and bottom of y-axis
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setCoords(
- $left + $axisCoordAdd['left'],
- false,
- $right - $axisCoordAdd['right'],
- false
- );
- $this->_axisYSecondary->_updateCoords();
- }
-
- if ($this->_axisX !== null) {
- $this->_plotTop = $this->_axisX->_top;
- $this->_plotBottom = $this->_axisX->_bottom;
- } else {
- $this->_plotTop = $top;
- $this->_plotBottom = $bottom;
- }
-
- if ($this->_axisY !== null) {
- $this->_plotLeft = $this->_axisY->_left;
- $this->_plotRight = $this->_axisY->_right;
- } elseif ($this->_axisYSecondary !== null) {
- $this->_plotLeft = $this->_axisYSecondary->_left;
- $this->_plotRight = $this->_axisYSecondary->_right;
- } else {
- $this->_plotLeft = $this->_left;
- $this->_plotRight = $this->_right;
- }
- }
- else {
- if (($this->_axisX !== null) &&
- (($axisCoordAdd['left'] != 0) ||
- ($axisCoordAdd['right'] != 0))
- ) {
- // readjust y-axis for better estimate of position
- if ($this->_axisY !== null) {
- $pos = $this->_axisX->_intersectPoint($intersectY['value']);
- $this->_axisY->_setCoords(
- $pos - $sizeY,
- false,
- $pos,
- false
- );
- $this->_axisY->_updateCoords();
- }
-
- if ($this->_axisYSecondary !== null) {
- $pos = $this->_axisX->_intersectPoint($intersectYsec['value']);
- $this->_axisYSecondary->_setCoords(
- $pos,
- false,
- $pos + $sizeYsec,
- false
- );
- $this->_axisYSecondary->_updateCoords();
- }
- }
-
- // adjust top and bottom of y-axis
- if ($this->_axisY !== null) {
- $this->_axisY->_setCoords(
- false,
- $top + $axisCoordAdd['top'],
- false,
- $bottom - $axisCoordAdd['bottom']
- );
- $this->_axisY->_updateCoords();
- }
-
- // adjust top and bottom of y-axis
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setCoords(
- false,
- $top + $axisCoordAdd['top'],
- false,
- $bottom - $axisCoordAdd['bottom']
- );
- $this->_axisYSecondary->_updateCoords();
- }
-
- if ($this->_axisX !== null) {
- $this->_plotLeft = $this->_axisX->_left;
- $this->_plotRight = $this->_axisX->_right;
- } else {
- $this->_plotLeft = $left;
- $this->_plotRight = $right;
- }
-
- if ($this->_axisY !== null) {
- $this->_plotTop = $this->_axisY->_top;
- $this->_plotBottom = $this->_axisY->_bottom;
- } elseif ($this->_axisYSecondary !== null) {
- $this->_plotTop = $this->_axisYSecondary->_top;
- $this->_plotBottom = $this->_axisYSecondary->_bottom;
- } else {
- $this->_plotTop = $this->_top;
- $this->_plotBottom = $this->_bottom;
- }
- }
-
- Image_Graph_Element::_updateCoords();
-/*
- if ($this->_axisX != null) {
- $this->_axisX->_updateCoords();
- }
- if ($this->_axisY != null) {
- $this->_axisY->_updateCoords();
- }
- if ($this->_axisYSecondary != null) {
- $this->_axisYSecondary->_updateCoords();
- }*/
- }
-
- /**
- * Set the axis padding for a specified position.
- *
- * The axis padding is padding "inside" the plotarea (i.e. to put some space
- * between the axis line and the actual plot).
- *
- * This can be specified in a number of ways:
- *
- * 1) Specify an associated array with 'left', 'top', 'right' and 'bottom'
- * indices with values for the paddings. Leave out 2nd parameter.
- *
- * 2) Specify an overall padding as the first parameter
- *
- * 3) Specify the padding and position with position values as mentioned
- * above
- *
- * Normally you'd only consider applying axis padding to a category x-axis.
- *
- * @param mixed $value The value/padding
- * @param mixed $position The "position" of the padding
- */
- function setAxisPadding($value, $position = false)
- {
- if ($position === false) {
- if (is_array($value)) {
- if ($this->_horizontal) {
- if ((isset($value['top'])) && ($this->_axisX !== null)) {
- $this->_axisX->_setAxisPadding('low', $value['top']);
- }
- if ((isset($value['bottom'])) && ($this->_axisX !== null)) {
- $this->_axisX->_setAxisPadding('high', $value['bottom']);
- }
- if ((isset($value['left'])) && ($this->_axisY !== null)) {
- $this->_axisY->_setAxisPadding('low', $value['left']);
- }
- if ((isset($value['right'])) && ($this->_axisY !== null)) {
- $this->_axisY->_setAxisPadding('high', $value['right']);
- }
- if ((isset($value['left'])) && ($this->_axisYSecondary !== null)) {
- $this->_axisYSecondary->_setAxisPadding('low', $value['left']);
- }
- if ((isset($value['right'])) && ($this->_axisYSecondary !== null)) {
- $this->_axisYSecondary->_setAxisPadding('high', $value['right']);
- }
- }
- else {
- if ((isset($value['left'])) && ($this->_axisX !== null)) {
- $this->_axisX->_setAxisPadding('low', $value['left']);
- }
- if ((isset($value['right'])) && ($this->_axisX !== null)) {
- $this->_axisX->_setAxisPadding('high', $value['right']);
- }
- if ((isset($value['bottom'])) && ($this->_axisY !== null)) {
- $this->_axisY->_setAxisPadding('low', $value['bottom']);
- }
- if ((isset($value['top'])) && ($this->_axisY !== null)) {
- $this->_axisY->_setAxisPadding('high', $value['top']);
- }
- if ((isset($value['bottom'])) && ($this->_axisYSecondary !== null)) {
- $this->_axisYSecondary->_setAxisPadding('low', $value['bottom']);
- }
- if ((isset($value['top'])) && ($this->_axisYSecondary !== null)) {
- $this->_axisYSecondary->_setAxisPadding('high', $value['top']);
- }
- }
- } else {
- if ($this->_axisX !== null) {
- $this->_axisX->_setAxisPadding('low', $value);
- $this->_axisX->_setAxisPadding('high', $value);
- }
- if ($this->_axisY !== null) {
- $this->_axisY->_setAxisPadding('low', $value);
- $this->_axisY->_setAxisPadding('high', $value);
- }
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setAxisPadding('low', $value);
- $this->_axisYSecondary->_setAxisPadding('high', $value);
- }
- }
- } else {
- switch ($position) {
- case 'left':
- if ($this->_horizontal) {
- if ($this->_axisY !== null) {
- $this->_axisY->_setAxisPadding('low', $value);
- }
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setAxisPadding('low', $value);
- }
- }
- else if ($this->_axisX !== null) {
- $this->_axisX->_setAxisPadding('low', $value);
- }
- break;
-
- case 'right':
- if ($this->_horizontal) {
- if ($this->_axisY !== null) {
- $this->_axisY->_setAxisPadding('high', $value);
- }
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setAxisPadding('high', $value);
- }
- }
- else if ($this->_axisX !== null) {
- $this->_axisX->_setAxisPadding('high', $value);
- }
- break;
-
- case 'top':
- if (!$this->_horizontal) {
- if ($this->_axisY !== null) {
- $this->_axisY->_setAxisPadding('high', $value);
- }
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setAxisPadding('high', $value);
- }
- }
- else if ($this->_axisX !== null) {
- $this->_axisX->_setAxisPadding('high', $value);
- }
- break;
-
- case 'bottom':
- if (!$this->_horizontal) {
- if ($this->_axisY !== null) {
- $this->_axisY->_setAxisPadding('low', $value);
- }
- if ($this->_axisYSecondary !== null) {
- $this->_axisYSecondary->_setAxisPadding('low', $value);
- }
- }
- else if ($this->_axisX !== null) {
- $this->_axisX->_setAxisPadding('low', $value);
- }
- break;
- }
- }
- }
-
- /**
- * Output the plotarea to the canvas
- *
- * @return bool Was the output 'good' (true) or 'bad' (false).
- * @access private
- */
- function _done()
- {
- if ($this->_hasData) {
- $this->_canvas->startGroup(get_class($this));
-
- if ($this->_axisX != null) {
- $this->add($this->_axisX);
- }
- if ($this->_axisY != null) {
- $this->add($this->_axisY);
- }
- if ($this->_axisYSecondary != null) {
- $this->add($this->_axisYSecondary);
- }
-
- $this->_getFillStyle();
- $this->_canvas->rectangle(
- array(
- 'x0' => $this->_plotLeft,
- 'y0' => $this->_plotTop,
- 'x1' => $this->_plotRight,
- 'y1' => $this->_plotBottom
- )
- );
- $result = parent::_done();
- $this->_canvas->endGroup();
- return $result;
- } else {
- // no data -> do nothing at all!
- return true;
- }
- }
-
-}
-
-?> \ No newline at end of file