aboutsummaryrefslogtreecommitdiff
path: root/src/libchart/classes/Chart.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/libchart/classes/Chart.php')
-rw-r--r--src/libchart/classes/Chart.php213
1 files changed, 213 insertions, 0 deletions
diff --git a/src/libchart/classes/Chart.php b/src/libchart/classes/Chart.php
new file mode 100644
index 0000000..639eabd
--- /dev/null
+++ b/src/libchart/classes/Chart.php
@@ -0,0 +1,213 @@
+<?php
+ /** Libchart - PHP chart library
+ *
+ * Copyright (C) 2005-2006 Jean-Marc Trémeaux (jm.tremeaux at gmail.com)
+ *
+ * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+ /*! \mainpage Libchart
+ *
+ * This is the reference API, automatically compiled by <a href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</a>.
+ * You can find here information that is not covered by the <a href="../samplecode/">tutorial</a>.
+ *
+ */
+
+ /**
+ * Base chart class
+ *
+ * @author Jean-Marc Trémeaux (jm.tremeaux at gmail.com)
+ * @abstract
+ */
+
+ class Chart
+ {
+ /**
+ * Creates a new chart
+ *
+ * @access protected
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+
+ function chart($width, $height)
+ {
+ $this->width = $width;
+ $this->height = $height;
+
+ $this->reset();
+ }
+
+ /**
+ * Initialize the chart
+ *
+ * @access private
+ */
+
+ function reset()
+ {
+ $this->text = new Text();
+ $this->point = array();
+
+ unset($this->lowerBound);
+ unset($this->upperBound);
+
+ $this->setTitle("Untitled chart");
+ $this->setLogo(dirname(__FILE__) . "/../images/PoweredBy.png");
+ }
+
+ /**
+ * Add a new sampling point to the chart
+ *
+ * @access public
+ * @param Point sampling point to add
+ */
+
+ function addPoint($point)
+ {
+ array_push($this->point, $point);
+ }
+
+ /**
+ * Sets the title
+ *
+ * @access public
+ * @param string new title
+ */
+
+ function setTitle($title)
+ {
+ $this->title = $title;
+ }
+
+ /**
+ * Sets the logo image file name
+ *
+ * @access public
+ * @param string new logo image file name
+ */
+
+ function setLogo($logoFileName)
+ {
+ $this->logoFileName = $logoFileName;
+ }
+
+ /**
+ * Print the title to the image
+ *
+ * @access private
+ */
+
+ function printTitle()
+ {
+ $this->text->printCentered($this->img, ($this->labelMarginTop + $this->margin) / 2, $this->textColor, $this->title, $this->text->fontCondensedBold);
+ }
+
+ /**
+ * Print the logo image to the image
+ *
+ * @access private
+ */
+
+ function printLogo()
+ {
+ @$logoImage = imageCreateFromPNG($this->logoFileName);
+
+ if($logoImage)
+ imagecopymerge($this->img, $logoImage, 2*$this->margin, $this->margin, 0, 0, imagesx($logoImage), imagesy($logoImage), 100);
+ }
+
+ /**
+ * Set the outer margin
+ *
+ * @access public
+ * @param integer outer margin value in pixels
+ */
+
+ function setMargin($margin)
+ {
+ $this->margin = $margin;
+ }
+
+ /**
+ * Set the label left margin
+ *
+ * @access public
+ * @param integer label left margin value in pixels
+ */
+
+ function setLabelMarginLeft($labelMarginLeft)
+ {
+ $this->labelMarginLeft = $labelMarginLeft;
+ }
+
+ /**
+ * Set the label right margin
+ *
+ * @access public
+ * @param integer label right margin value in pixels
+ */
+
+ function setLabelMarginRight($labelMarginRight)
+ {
+ $this->labelMarginRight = $labelMarginRight;
+ }
+
+ /**
+ * Set the label top margin
+ *
+ * @access public
+ * @param integer label top margin value in pixels
+ */
+
+ function setLabelMarginTop($labelMarginTop)
+ {
+ $this->labelMarginTop = $labelMarginTop;
+ }
+
+ /**
+ * Set the label bottom margin
+ *
+ * @access public
+ * @param integer label bottom margin value in pixels
+ */
+
+ function setLabelMarginBottom($labelMarginBottom)
+ {
+ $this->labelMarginBottom = $labelMarginBottom;
+ }
+
+ /**
+ * Creates and initialize the image
+ *
+ * @access protected
+ */
+
+ function createImage()
+ {
+ $this->img = imagecreatetruecolor($this->width, $this->height);
+
+ $this->primitive = new Primitive($this->img);
+
+ $this->backGroundColor = new Color(255, 255, 255);
+ $this->textColor = new Color(0, 0, 0);
+
+ // White background
+
+ imagefilledrectangle($this->img, 0, 0, $this->width - 1, $this->height - 1, $this->backGroundColor->getColor($this->img));
+ }
+ }
+?>