Page MenuHomeIn-Portal Phabricator

in-portal
No OneTemporary

File Metadata

Created
Sun, Jan 5, 6:54 PM

in-portal

This document is not UTF8. It was detected as Shift JIS and converted to UTF8 for display.
Index: branches/RC/core/units/general/helpers/chart_helper.php
===================================================================
--- branches/RC/core/units/general/helpers/chart_helper.php (nonexistent)
+++ branches/RC/core/units/general/helpers/chart_helper.php (revision 10155)
@@ -0,0 +1,35 @@
+<?php
+
+class kChartHelper extends kHelper {
+
+ function kChartHelper()
+ {
+ parent::kHelper();
+ $prefix = realpath(dirname(__FILE__).'/../').'/libchart/classes/';
+ require_once $prefix.'model/Point.php';
+ require_once $prefix.'model/DataSet.php';
+ require_once $prefix.'model/XYDataSet.php';
+ require_once $prefix.'model/XYSeriesDataSet.php';
+
+ require_once $prefix.'view/primitive/Padding.php';
+ require_once $prefix.'view/primitive/Rectangle.php';
+ require_once $prefix.'view/primitive/Primitive.php';
+ require_once $prefix.'view/text/Text.php';
+ require_once $prefix.'view/color/Color.php';
+ require_once $prefix.'view/color/ColorSet.php';
+ require_once $prefix.'view/color/Palette.php';
+ require_once $prefix.'view/axis/Bound.php';
+ require_once $prefix.'view/axis/Axis.php';
+ require_once $prefix.'view/plot/Plot.php';
+ require_once $prefix.'view/caption/Caption.php';
+ require_once $prefix.'view/chart/Chart.php';
+ require_once $prefix.'view/chart/BarChart.php';
+ require_once $prefix.'view/chart/VerticalBarChart.php';
+ require_once $prefix.'view/chart/HorizontalBarChart.php';
+ require_once $prefix.'view/chart/LineChart.php';
+ require_once $prefix.'view/chart/PieChart.php';
+ }
+
+}
+
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/helpers/chart_helper.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/helpers/helpers_config.php
===================================================================
--- branches/RC/core/units/general/helpers/helpers_config.php (revision 10154)
+++ branches/RC/core/units/general/helpers/helpers_config.php (revision 10155)
@@ -1,29 +1,30 @@
<?php
$config = Array(
'Prefix' => 'helpers',
'EventHandlerClass' => Array('class' => 'kEventHandler', 'file' => '', 'build_event' => 'OnBuild'),
'RegisterClasses' => Array(
Array('pseudo'=>'kMultiLanguageHelper','class'=>'kMultiLanguageHelper','file'=>'multilanguage.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'SearchHelper','class'=>'kSearchHelper','file'=>'search_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'SectionsHelper','class'=>'kSectionsHelper','file'=>'sections_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'PermissionsHelper','class'=>'kPermissionsHelper','file'=>'permissions_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'ModulesHelper','class'=>'kModulesHelper','file'=>'modules.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'ModRewriteHelper','class'=>'kModRewriteHelper','file'=>'mod_rewrite_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'RecursiveHelper','class'=>'kRecursiveHelper','file'=>'recursive_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'FilenamesHelper','class'=>'kFilenamesHelper','file'=>'filenames_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'ClipboardHelper','class'=>'kClipboardHelper','file'=>'clipboard_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'ColumnPickerHelper','class'=>'kColumnPickerHelper','file'=>'col_picker_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'ThemesHelper','class'=>'kThemesHelper','file'=>'themes_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'CaptchaHelper','class'=>'kCaptchaHelper','file'=>'captcha_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'PriorityHelper','class'=>'kPriorityHelper','file'=>'priority_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo' => 'CurlHelper', 'class' => 'kCurlHelper','file' => 'curl_helper.php', 'build_event' => '', 'require_classes' => Array('kHelper')),
Array('pseudo'=>'CountHelper','class'=>'kCountHelper','file'=>'count_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'ImageHelper','class'=>'ImageHelper','file'=>'image_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo' => 'FileHelper', 'class' => 'FileHelper','file' => 'file_helper.php', 'build_event' => '', 'require_classes' => Array('kHelper')),
Array('pseudo'=>'CategoryHelper','class'=>'CategoryHelper','file'=>'category_helper.php','build_event'=>'','require_classes'=>'kHelper'),
Array('pseudo'=>'CSVHelper','class'=>'kCSVHelper','file'=>'csv_helper.php','build_event'=>'','require_classes'=>'kHelper'),
+ Array('pseudo'=>'ChartHelper','class'=>'kChartHelper','file'=>'chart_helper.php','build_event'=>'','require_classes'=>'kHelper'),
),
);
\ No newline at end of file
Property changes on: branches/RC/core/units/general/helpers/helpers_config.php
___________________________________________________________________
Modified: cvs2svn:cvs-rev
## -1 +1 ##
-1.9.2.2
\ No newline at end of property
+1.9.2.3
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/images/PoweredBy.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/RC/core/units/general/libchart/images/PoweredBy.png
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/ChangeLog
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/RC/core/units/general/libchart/ChangeLog
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/COPYING
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/RC/core/units/general/libchart/COPYING
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/fonts/DejaVuSansCondensed-Bold.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/RC/core/units/general/libchart/fonts/DejaVuSansCondensed-Bold.ttf
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/fonts/DejaVuSansCondensed.ttf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/RC/core/units/general/libchart/fonts/DejaVuSansCondensed.ttf
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/README
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes on: branches/RC/core/units/general/libchart/README
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/model/Point.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/model/Point.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/model/Point.php (revision 10155)
@@ -0,0 +1,59 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Point of coordinates (X,Y).
+ * The value of X isn't really of interest, but X is used as a label to display on the horizontal axis.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartPoint {
+ private $x;
+ private $y;
+
+ /**
+ * Creates a new sampling point of coordinates (x, y)
+ *
+ * @param integer x coordinate (label)
+ * @param integer y coordinate (value)
+ */
+ public function LibchartPoint($x, $y) {
+ $this->x = $x;
+ $this->y = $y;
+ }
+
+ /**
+ * Gets the x coordinate (label).
+ *
+ * @return integer x coordinate (label)
+ */
+ public function getX() {
+ return $this->x;
+ }
+
+ /**
+ * Gets the y coordinate (value).
+ *
+ * @return integer y coordinate (value)
+ */
+ public function getY() {
+ return $this->y;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/model/Point.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/model/XYSeriesDataSet.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/model/XYSeriesDataSet.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/model/XYSeriesDataSet.php (revision 10155)
@@ -0,0 +1,76 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * This dataset comprises several series of points and is used to plot multiple lines charts.
+ * Each serie is a XYDataSet.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 20 july 2007
+ */
+ class LibchartXYSeriesDataSet extends LibchartDataSet {
+ /**
+ * List of titles
+ */
+ private $titleList;
+
+ /**
+ * List of XYDataSet.
+ */
+ private $serieList;
+
+ /**
+ * Constructor of XYSeriesDataSet.
+ *
+ */
+ public function LibchartXYSeriesDataSet() {
+ $this->titleList = array();
+ $this->serieList = array();
+ }
+
+ /**
+ * Add a new serie to the dataset.
+ *
+ * @param string Title (label) of the serie.
+ * @param XYDataSet Serie of points to add
+ */
+ public function addSerie($title, $serie) {
+ array_push($this->titleList, $title);
+ array_push($this->serieList, $serie);
+ }
+
+ /**
+ * Getter of titleList.
+ *
+ * @return List of titles.
+ */
+ public function getTitleList() {
+ return $this->titleList;
+ }
+
+ /**
+ * Getter of serieList.
+ *
+ * @return List of series.
+ */
+ public function getSerieList() {
+ return $this->serieList;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/model/XYSeriesDataSet.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/model/DataSet.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/model/DataSet.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/model/DataSet.php (revision 10155)
@@ -0,0 +1,28 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Superclass of all data sets.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 10 may 2007
+ */
+ abstract class LibchartDataSet {
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/model/DataSet.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/model/XYDataSet.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/model/XYDataSet.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/model/XYDataSet.php (revision 10155)
@@ -0,0 +1,56 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Set of data in the form of (x, y) items.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 10 may 2007
+ */
+ class LibchartXYDataSet extends LibchartDataSet {
+ private $pointList;
+
+ /**
+ * Constructor of XYDataSet.
+ *
+ */
+ public function LibchartXYDataSet() {
+ $this->pointList = array();
+ }
+
+ /**
+ * Add a new point to the dataset.
+ *
+ * @param Point Point to add to the dataset
+ */
+
+ public function addPoint($point) {
+ array_push($this->pointList, $point);
+ }
+
+ /**
+ * Getter of pointList.
+ *
+ * @return List of points.
+ */
+ public function getPointList() {
+ return $this->pointList;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/model/XYDataSet.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/chart/LineChart.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/chart/LineChart.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/chart/LineChart.php (revision 10155)
@@ -0,0 +1,200 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Line chart.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartLineChart extends LibchartBarChart {
+ /**
+ * Creates a new line chart.
+ * Line charts allow for XYDataSet and XYSeriesDataSet in order to plot several lines.
+ *
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+ public function LibchartLineChart($width = 600, $height = 250) {
+ parent::LibchartBarChart($width, $height);
+
+ $this->plot->setGraphPadding(new LibchartPadding(5, 30, 50, 50));
+ }
+
+ /**
+ * Computes the layout.
+ */
+ protected function computeLayout() {
+ if ($this->hasSeveralSerie) {
+ $this->plot->setHasCaption(true);
+ }
+ $this->plot->computeLayout();
+ }
+
+ /**
+ * Print the axis.
+ */
+ protected function printAxis() {
+ $minValue = $this->axis->getLowerBoundary();
+ $maxValue = $this->axis->getUpperBoundary();
+ $stepValue = $this->axis->getTics();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ // Vertical axis
+ for ($value = $minValue; $value <= $maxValue; $value += $stepValue) {
+ $y = $graphArea->y2 - ($value - $minValue) * ($graphArea->y2 - $graphArea->y1) / ($this->axis->displayDelta);
+
+ imagerectangle($img, $graphArea->x1 - 3, $y, $graphArea->x1 - 2, $y + 1, $palette->axisColor[0]->getColor($img));
+ imagerectangle($img, $graphArea->x1 - 1, $y, $graphArea->x1, $y + 1, $palette->axisColor[1]->getColor($img));
+
+ $text->printText($img, $graphArea->x1 - 5, $y, $this->plot->getTextColor(), $value, $text->fontCondensed, $text->HORIZONTAL_RIGHT_ALIGN | $text->VERTICAL_CENTER_ALIGN);
+ }
+
+ // Get first serie of a list
+ $pointList = $this->getFirstSerieOfList();
+
+ // Horizontal Axis
+ $pointCount = count($pointList);
+ reset($pointList);
+ $columnWidth = ($graphArea->x2 - $graphArea->x1) / ($pointCount - 1);
+
+ for ($i = 0; $i < $pointCount; $i++) {
+ $x = $graphArea->x1 + $i * $columnWidth;
+
+ imagerectangle($img, $x - 1, $graphArea->y2 + 2, $x, $graphArea->y2 + 3, $palette->axisColor[0]->getColor($img));
+ imagerectangle($img, $x - 1, $graphArea->y2, $x, $graphArea->y2 + 1, $palette->axisColor[1]->getColor($img));
+
+ $point = current($pointList);
+ next($pointList);
+
+ $label = $point->getX();
+
+ $text->printDiagonal($img, $x - 5, $graphArea->y2 + 10, $this->plot->getTextColor(), $label);
+ }
+ }
+
+ /**
+ * Print the lines.
+ */
+ protected function printLine() {
+ $minValue = $this->axis->getLowerBoundary();
+ $maxValue = $this->axis->getUpperBoundary();
+
+ // Get the data as a list of series for consistency
+ $serieList = $this->getDataAsSerieList();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+ $primitive = $this->plot->getPrimitive();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ $lineColorSet = $palette->lineColorSet;
+ $lineColorSet->reset();
+ for ($j = 0; $j < count($serieList); $j++) {
+ $serie = $serieList[$j];
+ $pointList = $serie->getPointList();
+ $pointCount = count($pointList);
+ reset($pointList);
+
+ $columnWidth = ($graphArea->x2 - $graphArea->x1) / ($pointCount - 1);
+
+ $lineColor = $lineColorSet->currentColor();
+ $lineColorShadow = $lineColorSet->currentShadowColor();
+ $lineColorSet->next();
+ $x1 = null;
+ $y1 = null;
+ for ($i = 0; $i < $pointCount; $i++) {
+ $x2 = $graphArea->x1 + $i * $columnWidth;
+
+ $point = current($pointList);
+ next($pointList);
+
+ $value = $point->getY();
+
+ $y2 = $graphArea->y2 - ($value - $minValue) * ($graphArea->y2 - $graphArea->y1) / ($this->axis->displayDelta);
+
+ // Draw line
+ if ($x1) {
+ $primitive->line($x1, $y1, $x2, $y2, $lineColor, 4);
+ $primitive->line($x1, $y1 - 1, $x2, $y2 - 1, $lineColorShadow, 2);
+ }
+
+ $x1 = $x2;
+ $y1 = $y2;
+ }
+ }
+ }
+
+ /**
+ * Renders the caption.
+ */
+ protected function printCaption() {
+ // Get the list of labels
+ $labelList = $this->dataSet->getTitleList();
+
+ // Create the caption
+ $caption = new LibchartCaption();
+ $caption->setPlot($this->plot);
+ $caption->setLabelList($labelList);
+
+ $palette = $this->plot->getPalette();
+ $lineColorSet = $palette->lineColorSet;
+ $caption->setColorSet($lineColorSet);
+
+ // Render the caption
+ $caption->render();
+ }
+
+ /**
+ * Render the chart image.
+ *
+ * @param string name of the file to render the image to (optional)
+ */
+ public function render($fileName = null) {
+ // Check the data model
+ $this->checkDataModel();
+
+ $this->bound->computeBound($this->dataSet);
+ $this->computeAxis();
+ $this->computeLayout();
+ $this->createImage();
+ $this->plot->printLogo();
+ $this->plot->printTitle();
+ if (!$this->isEmptyDataSet(2)) {
+ $this->printAxis();
+ $this->printLine();
+ if ($this->hasSeveralSerie) {
+ $this->printCaption();
+ }
+ }
+
+ $this->plot->render($fileName);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/chart/LineChart.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/chart/PieChart.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/chart/PieChart.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/chart/PieChart.php (revision 10155)
@@ -0,0 +1,253 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Pie chart.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartPieChart extends LibchartChart {
+ protected $pieCenterX;
+ protected $pieCenterY;
+
+ /**
+ * Constructor of a pie chart.
+ *
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+ public function LibchartPieChart($width = 600, $height = 250) {
+ parent::LibchartChart($width, $height);
+ $this->plot->setGraphPadding(new LibchartPadding(15, 10, 30, 30));
+ }
+
+ /**
+ * Computes the layout.
+ */
+ protected function computeLayout() {
+ $this->plot->setHasCaption(true);
+ $this->plot->computeLayout();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ // Compute the coordinates of the pie
+ $this->pieCenterX = $graphArea->x1 + ($graphArea->x2 - $graphArea->x1) / 2;
+ $this->pieCenterY = $graphArea->y1 + ($graphArea->y2 - $graphArea->y1) / 2;
+
+ $this->pieWidth = round(($graphArea->x2 - $graphArea->x1) * 4 / 5);
+ $this->pieHeight = round(($graphArea->y2 - $graphArea->y1) * 3.7 / 5);
+ $this->pieDepth = round($this->pieWidth * 0.05);
+ }
+
+ /**
+ * Compare two sampling point values, order from biggest to lowest value.
+ *
+ * @param double first value
+ * @param double second value
+ * @return integer result of the comparison
+ */
+ protected function sortPie($v1, $v2) {
+ return $v1[0] == $v2[0] ? 0 :
+ $v1[0] > $v2[0] ? -1 :
+ 1;
+ }
+
+ /**
+ * Compute pie values in percentage and sort them.
+ */
+ protected function computePercent() {
+ $this->total = 0;
+ $this->percent = array();
+
+ $pointList = $this->dataSet->getPointList();
+ foreach ($pointList as $point) {
+ $this->total += $point->getY();
+ }
+
+ foreach ($pointList as $point) {
+ $percent = $this->total == 0 ? 0 : 100 * $point->getY() / $this->total;
+
+ array_push($this->percent, array($percent, $point));
+ }
+
+ usort($this->percent, array("PieChart", "sortPie"));
+ }
+
+ /**
+ * Creates the pie chart image.
+ */
+ protected function createImage() {
+ parent::createImage();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $primitive = $this->plot->getPrimitive();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ // Legend box
+ $primitive->outlinedBox($graphArea->x1, $graphArea->y1, $graphArea->x2, $graphArea->y2, $palette->axisColor[0], $palette->axisColor[1]);
+
+ // Aqua-like background
+ for ($i = $graphArea->y1 + 2; $i < $graphArea->y2 - 1; $i++) {
+ $color = $palette->aquaColor[($i + 3) % 4];
+ $primitive->line($graphArea->x1 + 2, $i, $graphArea->x2 - 2, $i, $color);
+ }
+ }
+
+ /**
+ * Renders the caption.
+ */
+ protected function printCaption() {
+ // Create a list of labels
+ $labelList = array();
+ foreach($this->percent as $percent) {
+ list($percent, $point) = $percent;
+ $label = $point->getX();
+
+ array_push($labelList, $label);
+ }
+
+ // Create the caption
+ $caption = new LibchartCaption();
+ $caption->setPlot($this->plot);
+ $caption->setLabelList($labelList);
+
+ $palette = $this->plot->getPalette();
+ $pieColorSet = $palette->pieColorSet;
+ $caption->setColorSet($pieColorSet);
+
+ // Render the caption
+ $caption->render();
+ }
+
+ /**
+ * Draw a 2D disc.
+ *
+ * @param integer center coordinate (y)
+ * @param array colors for each portion
+ * @param bitfield drawing mode
+ */
+ protected function drawDisc($cy, $colorArray, $mode) {
+ // Get graphical obects
+ $img = $this->plot->getImg();
+
+ $i = 0;
+ $angle1 = 0;
+ $percentTotal = 0;
+
+ foreach ($this->percent as $a) {
+ list ($percent, $point) = $a;
+
+ $color = $colorArray[$i % count($colorArray)];
+
+ $percentTotal += $percent;
+ $angle2 = $percentTotal * 360 / 100;
+
+ imagefilledarc($img, $this->pieCenterX, $cy, $this->pieWidth, $this->pieHeight, $angle1, $angle2, $color->getColor($img), $mode);
+
+ $angle1 = $angle2;
+
+ $i++;
+ }
+ }
+
+ /**
+ * Print the percentage text.
+ */
+ protected function drawPercent() {
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+ $primitive = $this->plot->getPrimitive();
+
+ $angle1 = 0;
+ $percentTotal = 0;
+
+ foreach ($this->percent as $a) {
+ list ($percent, $point) = $a;
+
+ // If value is null, don't print percentage
+ if ($percent <= 0) {
+ continue;
+ }
+
+ $percentTotal += $percent;
+ $angle2 = $percentTotal * 2 * M_PI / 100;
+
+ $angle = $angle1 + ($angle2 - $angle1) / 2;
+ $label = number_format($percent) . "%";
+
+ $x = cos($angle) * ($this->pieWidth + 35) / 2 + $this->pieCenterX;
+ $y = sin($angle) * ($this->pieHeight + 35) / 2 + $this->pieCenterY;
+
+ $text->printText($img, $x, $y, $this->plot->getTextColor(), $label, $text->fontCondensed, $text->HORIZONTAL_CENTER_ALIGN | $text->VERTICAL_CENTER_ALIGN);
+
+ $angle1 = $angle2;
+ }
+ }
+
+ /**
+ * Print the pie chart.
+ */
+ protected function printPie() {
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+ $primitive = $this->plot->getPrimitive();
+
+ // Get the pie color set
+ $pieColorSet = $palette->pieColorSet;
+ $pieColorSet->reset();
+
+ // Silhouette
+ for ($cy = $this->pieCenterY + $this->pieDepth / 2; $cy >= $this->pieCenterY - $this->pieDepth / 2; $cy--) {
+ $this->drawDisc($cy, $palette->pieColorSet->shadowColorList, IMG_ARC_EDGED);
+ }
+
+ // Top
+ $this->drawDisc($this->pieCenterY - $this->pieDepth / 2, $palette->pieColorSet->colorList, IMG_ARC_PIE);
+
+ // Top Outline
+ $this->drawPercent();
+ }
+
+ /**
+ * Render the chart image.
+ *
+ * @param string name of the file to render the image to (optional)
+ */
+ public function render($fileName = null) {
+ $this->computePercent();
+ $this->computeLayout();
+ $this->createImage();
+ $this->plot->printLogo();
+ $this->plot->printTitle();
+ $this->printPie();
+ $this->printCaption();
+
+ $this->plot->render($fileName);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/chart/PieChart.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/chart/HorizontalBarChart.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/chart/HorizontalBarChart.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/chart/HorizontalBarChart.php (revision 10155)
@@ -0,0 +1,213 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Horizontal bar chart
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartHorizontalBarChart extends LibchartBarChart {
+ /**
+ * Ratio of empty space beside the bars.
+ */
+ private $emptyToFullRatio;
+
+ /**
+ * Creates a new horizontal bar chart.
+ *
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+ public function LibchartHorizontalBarChart($width = 600, $height = 250) {
+ parent::BarChart($width, $height);
+
+ $this->emptyToFullRatio = 1 / 5;
+ $this->plot->setGraphPadding(new Padding(5, 30, 30, 50));
+ }
+
+ /**
+ * Computes the layout.
+ */
+ protected function computeLayout() {
+ if ($this->hasSeveralSerie) {
+ $this->plot->setHasCaption(true);
+ }
+ $this->plot->computeLayout();
+ }
+
+ /**
+ * Print the axis.
+ */
+ protected function printAxis() {
+ $minValue = $this->axis->getLowerBoundary();
+ $maxValue = $this->axis->getUpperBoundary();
+ $stepValue = $this->axis->getTics();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ // Horizontal axis
+ for ($value = $minValue; $value <= $maxValue; $value += $stepValue) {
+ $x = $graphArea->x1 + ($value - $minValue) * ($graphArea->x2 - $graphArea->x1) / ($this->axis->displayDelta);
+
+ imagerectangle($img, $x - 1, $graphArea->y2 + 2, $x, $graphArea->y2 + 3, $palette->axisColor[0]->getColor($img));
+ imagerectangle($img, $x - 1, $graphArea->y2, $x, $graphArea->y2 + 1, $palette->axisColor[1]->getColor($img));
+
+ $text->printText($img, $x, $graphArea->y2 + 5, $this->plot->getTextColor(), $value, $text->fontCondensed, $text->HORIZONTAL_CENTER_ALIGN);
+ }
+
+ // Get first serie of a list
+ $pointList = $this->getFirstSerieOfList();
+
+ // Vertical Axis
+ $pointCount = count($pointList);
+ reset($pointList);
+ $rowHeight = ($graphArea->y2 - $graphArea->y1) / $pointCount;
+ reset($pointList);
+ for ($i = 0; $i <= $pointCount; $i++) {
+ $y = $graphArea->y2 - $i * $rowHeight;
+
+ imagerectangle($img, $graphArea->x1 - 3, $y, $graphArea->x1 - 2, $y + 1, $palette->axisColor[0]->getColor($img));
+ imagerectangle($img, $graphArea->x1 - 1, $y, $graphArea->x1, $y + 1, $palette->axisColor[1]->getColor($img));
+
+ if ($i < $pointCount) {
+ $point = current($pointList);
+ next($pointList);
+
+ $label = $point->getX();
+
+ $text->printText($img, $graphArea->x1 - 5, $y - $rowHeight / 2, $this->plot->getTextColor(), $label, $text->fontCondensed, $text->HORIZONTAL_RIGHT_ALIGN | $text->VERTICAL_CENTER_ALIGN);
+ }
+ }
+ }
+
+ /**
+ * Print the bars.
+ */
+ protected function printBar() {
+ // Get the data as a list of series for consistency
+ $serieList = $this->getDataAsSerieList();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ $minValue = $this->axis->getLowerBoundary();
+ $maxValue = $this->axis->getUpperBoundary();
+ $stepValue = $this->axis->getTics();
+
+ $barColorSet = $palette->barColorSet;
+ $barColorSet->reset();
+
+ $serieCount = count($serieList);
+ for ($j = 0; $j < $serieCount; $j++) {
+ $serie = $serieList[$j];
+ $pointList = $serie->getPointList();
+ $pointCount = count($pointList);
+ reset($pointList);
+
+ // Get the next color
+ $color = $barColorSet->currentColor();
+ $shadowColor = $barColorSet->currentShadowColor();
+ $barColorSet->next();
+
+ $rowHeight = ($graphArea->y2 - $graphArea->y1) / $pointCount;
+ for ($i = 0; $i < $pointCount; $i++) {
+ $y = $graphArea->y2 - $i * $rowHeight;
+
+ $point = current($pointList);
+ next($pointList);
+
+ $value = $point->getY();
+
+ $xmax = $graphArea->x1 + ($value - $minValue) * ($graphArea->x2 - $graphArea->x1) / ($this->axis->displayDelta);
+
+ // Bar dimensions
+ $yWithMargin = $y - $rowHeight * $this->emptyToFullRatio;
+ $rowWidthWithMargin = $rowHeight * (1 - $this->emptyToFullRatio * 2);
+ $barWidth = $rowWidthWithMargin / $serieCount;
+ $barOffset = $barWidth * $j;
+ $y1 = $yWithMargin - $barWidth - $barOffset;
+ $y2 = $yWithMargin - $barOffset - 1;
+
+ // Text
+ $text->printText($img, $xmax + 5, $y2 - $barWidth / 2, $this->plot->getTextColor(), $value, $text->fontCondensed, $text->VERTICAL_CENTER_ALIGN);
+
+ imagefilledrectangle($img, $graphArea->x1 + 1, $y1, $xmax, $y2, $shadowColor->getColor($img));
+ imagefilledrectangle($img, $graphArea->x1 + 2, $y1 + 1, $xmax - 4, $y2, $color->getColor($img));
+ }
+ }
+ }
+
+ /**
+ * Renders the caption.
+ */
+ protected function printCaption() {
+ // Get the list of labels
+ $labelList = $this->dataSet->getTitleList();
+
+ // Create the caption
+ $caption = new LibchartCaption();
+ $caption->setPlot($this->plot);
+ $caption->setLabelList($labelList);
+
+ $palette = $this->plot->getPalette();
+ $barColorSet = $palette->barColorSet;
+ $caption->setColorSet($barColorSet);
+
+ // Render the caption
+ $caption->render();
+ }
+
+ /**
+ * Render the chart image.
+ *
+ * @param string name of the file to render the image to (optional)
+ */
+ public function render($fileName = null) {
+ // Check the data model
+ $this->checkDataModel();
+
+ $this->bound->computeBound($this->dataSet);
+ $this->computeAxis();
+ $this->computeLayout();
+ $this->createImage();
+ $this->plot->printLogo();
+ $this->plot->printTitle();
+ if (!$this->isEmptyDataSet(1)) {
+ $this->printAxis();
+ $this->printBar();
+ if ($this->hasSeveralSerie) {
+ $this->printCaption();
+ }
+ }
+
+ $this->plot->render($fileName);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/chart/HorizontalBarChart.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/chart/VerticalBarChart.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/chart/VerticalBarChart.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/chart/VerticalBarChart.php (revision 10155)
@@ -0,0 +1,213 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Chart composed of vertical bars.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartVerticalBarChart extends LibchartBarChart {
+ /**
+ * Ratio of empty space beside the bars.
+ */
+ private $emptyToFullRatio;
+
+ /**
+ * Creates a new vertical bar chart
+ *
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+ public function LibchartVerticalBarChart($width = 600, $height = 250) {
+ parent::LibchartBarChart($width, $height);
+
+ $this->emptyToFullRatio = 1 / 5;
+ $this->plot->setGraphPadding(new LibchartPadding(5, 30, 50, 50));
+ }
+
+ /**
+ * Computes the layout.
+ */
+ protected function computeLayout() {
+ if ($this->hasSeveralSerie) {
+ $this->plot->setHasCaption(true);
+ }
+ $this->plot->computeLayout();
+ }
+
+ /**
+ * Print the horizontal and veritcal axis.
+ */
+ protected function printAxis() {
+ $minValue = $this->axis->getLowerBoundary();
+ $maxValue = $this->axis->getUpperBoundary();
+ $stepValue = $this->axis->getTics();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ // Vertical axis
+ for ($value = $minValue; $value <= $maxValue; $value += $stepValue) {
+ $y = $graphArea->y2 - ($value - $minValue) * ($graphArea->y2 - $graphArea->y1) / ($this->axis->displayDelta);
+
+ imagerectangle($img, $graphArea->x1 - 3, $y, $graphArea->x1 - 2, $y + 1, $palette->axisColor[0]->getColor($img));
+ imagerectangle($img, $graphArea->x1 - 1, $y, $graphArea->x1, $y + 1, $palette->axisColor[1]->getColor($img));
+
+ $text->printText($img, $graphArea->x1 - 5, $y, $this->plot->getTextColor(), $value, $text->fontCondensed, $text->HORIZONTAL_RIGHT_ALIGN | $text->VERTICAL_CENTER_ALIGN);
+ }
+
+ // Get first serie of a list
+ $pointList = $this->getFirstSerieOfList();
+
+ // Horizontal Axis
+ $pointCount = count($pointList);
+ reset($pointList);
+ $columnWidth = ($graphArea->x2 - $graphArea->x1) / $pointCount;
+ for ($i = 0; $i <= $pointCount; $i++) {
+ $x = $graphArea->x1 + $i * $columnWidth;
+
+ imagerectangle($img, $x - 1, $graphArea->y2 + 2, $x, $graphArea->y2 + 3, $palette->axisColor[0]->getColor($img));
+ imagerectangle($img, $x - 1, $graphArea->y2, $x, $graphArea->y2 + 1, $palette->axisColor[1]->getColor($img));
+
+ if ($i < $pointCount) {
+ $point = current($pointList);
+ next($pointList);
+
+ $label = $point->getX();
+
+ $text->printDiagonal($img, $x + $columnWidth * 1 / 3, $graphArea->y2 + 10, $this->plot->getTextColor(), $label);
+ }
+ }
+ }
+
+ /**
+ * Print the bars.
+ */
+ protected function printBar() {
+ // Get the data as a list of series for consistency
+ $serieList = $this->getDataAsSerieList();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ $barColorSet = $palette->barColorSet;
+ $barColorSet->reset();
+
+ $minValue = $this->axis->getLowerBoundary();
+ $maxValue = $this->axis->getUpperBoundary();
+ $stepValue = $this->axis->getTics();
+
+ $serieCount = count($serieList);
+ for ($j = 0; $j < $serieCount; $j++) {
+ $serie = $serieList[$j];
+ $pointList = $serie->getPointList();
+ $pointCount = count($pointList);
+ reset($pointList);
+
+ // Get the next color
+ $color = $barColorSet->currentColor();
+ $shadowColor = $barColorSet->currentShadowColor();
+ $barColorSet->next();
+
+ $columnWidth = ($graphArea->x2 - $graphArea->x1) / $pointCount;
+ for ($i = 0; $i < $pointCount; $i++) {
+ $x = $graphArea->x1 + $i * $columnWidth;
+
+ $point = current($pointList);
+ next($pointList);
+
+ $value = $point->getY();
+
+ $ymin = $graphArea->y2 - ($value - $minValue) * ($graphArea->y2 - $graphArea->y1) / ($this->axis->displayDelta);
+
+ // Bar dimensions
+ $xWithMargin = $x + $columnWidth * $this->emptyToFullRatio;
+ $columnWidthWithMargin = $columnWidth * (1 - $this->emptyToFullRatio * 2);
+ $barWidth = $columnWidthWithMargin / $serieCount;
+ $barOffset = $barWidth * $j;
+ $x1 = $xWithMargin + $barOffset;
+ $x2 = $xWithMargin + $barWidth + $barOffset - 1;
+
+ // Text
+ $text->printText($img, $x1 + $barWidth / 2 , $ymin - 5, $this->plot->getTextColor(), $value, $text->fontCondensed, $text->HORIZONTAL_CENTER_ALIGN | $text->VERTICAL_BOTTOM_ALIGN);
+
+ // Vertical bar
+ imagefilledrectangle($img, $x1, $ymin, $x2, $graphArea->y2 - 1, $shadowColor->getColor($img));
+ imagefilledrectangle($img, $x1 + 1, $ymin + 1, $x2 - 4, $graphArea->y2 - 1, $color->getColor($img));
+ }
+ }
+ }
+
+ /**
+ * Renders the caption.
+ */
+ protected function printCaption() {
+ // Get the list of labels
+ $labelList = $this->dataSet->getTitleList();
+
+ // Create the caption
+ $caption = new LibchartCaption();
+ $caption->setPlot($this->plot);
+ $caption->setLabelList($labelList);
+
+ $palette = $this->plot->getPalette();
+ $barColorSet = $palette->barColorSet;
+ $caption->setColorSet($barColorSet);
+
+ // Render the caption
+ $caption->render();
+ }
+
+ /**
+ * Render the chart image.
+ *
+ * @param string name of the file to render the image to (optional)
+ */
+ public function render($fileName = null) {
+ // Check the data model
+ $this->checkDataModel();
+
+ $this->bound->computeBound($this->dataSet);
+ $this->computeAxis();
+ $this->computeLayout();
+ $this->createImage();
+ $this->plot->printLogo();
+ $this->plot->printTitle();
+ if (!$this->isEmptyDataSet(1)) {
+ $this->printAxis();
+ $this->printBar();
+ if ($this->hasSeveralSerie) {
+ $this->printCaption();
+ }
+ }
+
+ $this->plot->render($fileName);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/chart/VerticalBarChart.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/chart/Chart.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/chart/Chart.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/chart/Chart.php (revision 10155)
@@ -0,0 +1,102 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /*! \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 LibchartChart {
+ /**
+ * The data set.
+ */
+ protected $dataSet;
+
+ /**
+ * Plot (holds graphical attributes).
+ */
+ protected $plot;
+
+ /**
+ * Abstract constructor of Chart.
+ *
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+ protected function LibchartChart($width, $height) {
+ // Creates the plot
+ $this->plot = new LibchartPlot($width, $height);
+ $this->plot->setTitle("Untitled chart");
+ $this->plot->setLogoFileName(dirname(__FILE__) . "/../../../images/PoweredBy.png");
+ }
+
+ /**
+ * Checks the data model before rendering the graph.
+ */
+ protected function checkDataModel() {
+ // Check if a dataset was defined
+ if (!$this->dataSet) {
+ die("Error: No dataset defined.");
+ }
+
+ // Maybe no points are defined, but that's ok. This will yield and empty graph with default boundaries.
+ }
+
+ /**
+ * Create the image.
+ */
+ protected function createImage() {
+ $this->plot->createImage();
+ }
+
+ /**
+ * Sets the data set.
+ *
+ * @param DataSet The data set
+ */
+ public function setDataSet($dataSet) {
+ $this->dataSet = $dataSet;
+ }
+
+ /**
+ * Return the plot.
+ *
+ * @return plot
+ */
+ public function getPlot() {
+ return $this->plot;
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param string New title
+ */
+ public function setTitle($title) {
+ $this->plot->setTitle($title);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/chart/Chart.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/chart/BarChart.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/chart/BarChart.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/chart/BarChart.php (revision 10155)
@@ -0,0 +1,174 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Base abstract class for rendering both horizontal and vertical bar charts.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ abstract class LibchartBarChart extends LibchartChart {
+ protected $bound;
+ protected $axis;
+ protected $hasSeveralSerie;
+
+ /**
+ * Creates a new bar chart.
+ *
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+ protected function LibchartBarChart($width, $height) {
+ parent::LibchartChart($width, $height);
+
+ // Initialize the bounds
+ $this->bound = new LibchartBound();
+ $this->bound->setLowerBound(0);
+ }
+
+ /**
+ * Compute the axis.
+ */
+ protected function computeAxis() {
+ $this->axis = new LibchartAxis($this->bound->getYMinValue(), $this->bound->getYMaxValue());
+ $this->axis->computeBoundaries();
+ }
+
+ /**
+ * Create the image.
+ */
+ protected function createImage() {
+ parent::createImage();
+
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+ $primitive = $this->plot->getPrimitive();
+
+ // Get the graph area
+ $graphArea = $this->plot->getGraphArea();
+
+ // Aqua-like background
+ for ($i = $graphArea->y1; $i < $graphArea->y2; $i++) {
+ $color = $palette->aquaColor[($i + 3) % 4];
+ $primitive->line($graphArea->x1, $i, $graphArea->x2, $i, $color);
+ }
+
+ // Axis
+ imagerectangle($img, $graphArea->x1 - 1, $graphArea->y1, $graphArea->x1, $graphArea->y2, $palette->axisColor[0]->getColor($img));
+ imagerectangle($img, $graphArea->x1 - 1, $graphArea->y2, $graphArea->x2, $graphArea->y2 + 1, $palette->axisColor[0]->getColor($img));
+ }
+
+ /**
+ * Returns true if the data set has some data.
+ * @param minNumberOfPoint Minimum number of points (1 for bars, 2 for lines).
+ *
+ * @return true if data set empty
+ */
+ protected function isEmptyDataSet($minNumberOfPoint) {
+ if ($this->dataSet instanceof LibchartXYDataSet) {
+ $pointList = $this->dataSet->getPointList();
+ $pointCount = count($pointList);
+ return $pointCount < $minNumberOfPoint;
+ } else if ($this->dataSet instanceof LibchartXYSeriesDataSet) {
+ $serieList = $this->dataSet->getSerieList();
+ reset($serieList);
+ if (count($serieList) > 0) {
+ $serie = current($serieList);
+ $pointList = $serie->getPointList();
+ $pointCount = count($pointList);
+ return $pointCount < $minNumberOfPoint;
+ }
+ } else {
+ die("Error: unknown dataset type");
+ }
+ }
+
+ /**
+ * Checks the data model before rendering the graph.
+ */
+ protected function checkDataModel() {
+ // Check if a dataset was defined
+ if (!$this->dataSet) {
+ die("Error: No dataset defined.");
+ }
+
+ // Bar charts accept both XYDataSet and XYSeriesDataSet
+ if ($this->dataSet instanceof LibchartXYDataSet) {
+ // The dataset contains only one serie
+ $this->hasSeveralSerie = false;
+ } else if ($this->dataSet instanceof LibchartXYSeriesDataSet) {
+ // Check if each series has the same number of points
+ unset($lastPointCount);
+ $serieList = $this->dataSet->getSerieList();
+ for ($i = 0; $i < count($serieList); $i++) {
+ $serie = $serieList[$i];
+ $pointCount = count($serie->getPointList());
+ if (isset($lastPointCount) && $pointCount != $lastPointCount) {
+ die("Error: serie <" . $i . "> doesn't have the same number of points as last serie (last one: <" . $lastPointCount. ">, this one: <" . $pointCount. ">).");
+ }
+ $lastPointCount = $pointCount;
+ }
+
+ // The dataset contains several series
+ $this->hasSeveralSerie = true;
+ } else {
+ die("Error: Bar chart accept only XYDataSet and XYSeriesDataSet");
+ }
+ }
+
+ /**
+ * Return the data as a series list (for consistency).
+ *
+ * @return List of series
+ */
+ protected function getDataAsSerieList() {
+ // Get the data as a series list
+ $serieList = null;
+ if ($this->dataSet instanceof LibchartXYSeriesDataSet) {
+ $serieList = $this->dataSet->getSerieList();
+ } else if ($this->dataSet instanceof LibchartXYDataSet) {
+ $serieList = array();
+ array_push($serieList, $this->dataSet);
+ }
+
+ return $serieList;
+ }
+
+ /**
+ * Return the first serie of the list, or the dataSet itself if there is no serie.
+ *
+ * @return XYDataSet
+ */
+ protected function getFirstSerieOfList() {
+ $pointList = null;
+ if ($this->dataSet instanceof LibchartXYSeriesDataSet) {
+ // For a series dataset, print the legend from the first serie
+ $serieList = $this->dataSet->getSerieList();
+ reset($serieList);
+ $serie = current($serieList);
+ $pointList = $serie->getPointList();
+ } else if ($this->dataSet instanceof LibchartXYDataSet) {
+ $pointList = $this->dataSet->getPointList();
+ }
+
+ return $pointList;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/chart/BarChart.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/axis/Axis.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/axis/Axis.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/axis/Axis.php (revision 10155)
@@ -0,0 +1,130 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Automatic axis boundaries and ticks calibration
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartAxis {
+ private $min;
+ private $max;
+ private $guide;
+ private $delta;
+ private $magnitude;
+ private $displayMin;
+ private $displayMax;
+ private $tics;
+
+ /**
+ * Creates a new axis formatter.
+ *
+ * @param integer minimum value on the axis
+ * @param integer maximum value on the axis
+ */
+ public function LibchartAxis($min, $max) {
+ $this->min = $min;
+ $this->max = $max;
+
+ $this->guide = 10;
+ }
+
+ /**
+ * Computes value between two ticks.
+ */
+ public function quantizeTics() {
+ // Approximate number of decades, in [1..10[
+ $norm = $this->delta / $this->magnitude;
+
+ // Approximate number of tics per decade
+ $posns = $this->guide / $norm;
+
+ if ($posns > 20) {
+ $tics = 0.05; // e.g. 0, .05, .10, ...
+ } else if ($posns > 10) {
+ $tics = 0.2; // e.g. 0, .1, .2, ...
+ } else if ($posns > 5) {
+ $tics = 0.4; // e.g. 0, 0.2, 0.4, ...
+ } else if ($posns > 3) {
+ $tics = 0.5; // e.g. 0, 0.5, 1, ...
+ } else if ($posns > 2) {
+ $tics = 1; // e.g. 0, 1, 2, ...
+ } else if ($posns > 0.25) {
+ $tics = 2; // e.g. 0, 2, 4, 6
+ } else {
+ $tics = ceil($norm);
+ }
+
+ $this->tics = $tics * $this->magnitude;
+ }
+
+ /**
+ * Computes automatic boundaries on the axis
+ */
+ public function computeBoundaries() {
+ // Range
+ $this->delta = abs($this->max - $this->min);
+
+ // Check for null distribution
+ if ($this->delta == 0)
+ $this->delta = 1;
+
+ // Order of magnitude of range
+ $this->magnitude = pow(10, floor(log10($this->delta)));
+
+ $this->quantizeTics();
+
+ $this->displayMin = floor($this->min / $this->tics) * $this->tics;
+ $this->displayMax = ceil($this->max / $this->tics) * $this->tics;
+ $this->displayDelta = $this->displayMax - $this->displayMin;
+
+ // Check for null distribution
+ if ($this->displayDelta == 0) {
+ $this->displayDelta = 1;
+ }
+ }
+
+ /**
+ * Get the lower boundary on the axis3
+ *
+ * @return integer lower boundary on the axis
+ */
+ public function getLowerBoundary() {
+ return $this->displayMin;
+ }
+
+ /**
+ * Get the upper boundary on the axis3
+ *
+ * @return integer upper boundary on the axis
+ */
+ public function getUpperBoundary() {
+ return $this->displayMax;
+ }
+
+ /**
+ * Get the value between two ticks3
+ *
+ * @return integer value between two ticks
+ */
+ public function getTics() {
+ return $this->tics;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/axis/Axis.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/axis/Bound.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/axis/Bound.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/axis/Bound.php (revision 10155)
@@ -0,0 +1,146 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Object representing the bounds of a dataset (its minimal and maximal values) on its vertical axis.
+ * The bounds are automatically calculated from a XYDataSet or XYSeriesDataSet.
+ * Default (calculated) bounds can be overriden using the setLowerBound() and setUpperBound() methods.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 25 july 2007
+ */
+ class LibchartBound {
+ /**
+ * Manually set lower bound, overrides the value calculated by computeBound().
+ */
+ private $lowerBound = null;
+
+ /**
+ * Manually set upper bound, overrides the value calculated by computeBound().
+ */
+ private $upperBound = null;
+
+ /**
+ * Computed min bound.
+ */
+ private $yMinValue = null;
+
+ /**
+ * Computed max bound.
+ */
+ private $yMaxValue = null;
+
+ /**
+ * Compute the boundaries on the axis.
+ *
+ * @param dataSet The data set
+ */
+ public function computeBound($dataSet) {
+ // Check if the data set is empty
+ $dataSetEmpty = true;
+ $serieList = null;
+ if ($dataSet instanceof LibchartXYDataSet) {
+ $pointList = $dataSet->getPointList();
+ $dataSetEmpty = count($pointList) == 0;
+
+ if (!$dataSetEmpty) {
+ // Process it as a serie
+ $serieList = array();
+ array_push($serieList, $dataSet);
+ }
+ } else if ($dataSet instanceof LibchartXYSeriesDataSet) {
+ $serieList = $dataSet->getSerieList();
+ if (count($serieList) > 0) {
+ $serie = current($serieList);
+ $dataSetEmpty = count($serie) == 0;
+ }
+ } else {
+ die("Error: unknown dataset type");
+ }
+
+ // If the dataset is empty, default some bounds
+ $yMin = 0;
+ $yMax = 1;
+ if (!$dataSetEmpty) {
+ // Compute lower and upper bound on the value axis
+ unset($yMin);
+ unset($yMax);
+
+ foreach ($serieList as $serie) {
+ foreach ($serie->getPointList() as $point) {
+ $y = $point->getY();
+
+ if (!isset($yMin)) {
+ $yMin = $y;
+ $yMax = $y;
+ } else {
+ if ($y < $yMin) {
+ $yMin = $y;
+ }
+
+ if ($y > $yMax) {
+ $yMax = $y;
+ }
+ }
+ }
+ }
+ }
+
+ $this->yMinValue = isset($this->lowerBound) ? $this->lowerBound : $yMin;
+ $this->yMaxValue = isset($this->upperBound) ? $this->upperBound : $yMax;
+ }
+
+ /**
+ * Getter of yMinValue.
+ *
+ * @return min bound
+ */
+ public function getYMinValue() {
+ return $this->yMinValue;
+ }
+
+ /**
+ * Getter of yMaxValue.
+ *
+ * @return max bound
+ */
+ public function getYMaxValue() {
+ return $this->yMaxValue;
+ }
+
+ /**
+ * Set manually the lower boundary value (overrides the automatic formatting).
+ * Typical usage is to set the bars starting from zero.
+ *
+ * @param double lower boundary value
+ */
+ public function setLowerBound($lowerBound) {
+ $this->lowerBound = $lowerBound;
+ }
+
+ /**
+ * Set manually the upper boundary value (overrides the automatic formatting).
+ *
+ * @param double upper boundary value
+ */
+ public function setUpperBound($upperBound) {
+ $this->upperBound = $upperBound;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/axis/Bound.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/text/Text.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/text/Text.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/text/Text.php (revision 10155)
@@ -0,0 +1,129 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Text drawing helper
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartText {
+ public $HORIZONTAL_LEFT_ALIGN = 1;
+ public $HORIZONTAL_CENTER_ALIGN = 2;
+ public $HORIZONTAL_RIGHT_ALIGN = 4;
+ public $VERTICAL_TOP_ALIGN = 8;
+ public $VERTICAL_CENTER_ALIGN = 16;
+ public $VERTICAL_BOTTOM_ALIGN = 32;
+
+ /**
+ * Creates a new text drawing helper.
+ */
+ public function LibchartText() {
+ $baseDir = dirname(__FILE__) . "/../../../";
+
+ // Free low-res fonts based on Bitstream Vera <http://dejavu.sourceforge.net/wiki/>
+ $this->fontCondensed = $baseDir . "fonts/DejaVuSansCondensed.ttf";
+ $this->fontCondensedBold = $baseDir . "fonts/DejaVuSansCondensed-Bold.ttf";
+ }
+
+ /**
+ * Print text.
+ *
+ * @param Image GD image
+ * @param integer text coordinate (x)
+ * @param integer text coordinate (y)
+ * @param Color text color
+ * @param string text value
+ * @param string font file name
+ * @param bitfield text alignment
+ */
+ public function printText($img, $px, $py, $color, $text, $fontFileName, $align = 0) {
+ if (!($align & $this->HORIZONTAL_CENTER_ALIGN) && !($align & $this->HORIZONTAL_RIGHT_ALIGN)) {
+ $align |= $this->HORIZONTAL_LEFT_ALIGN;
+ }
+
+ if (!($align & $this->VERTICAL_CENTER_ALIGN) && !($align & $this->VERTICAL_BOTTOM_ALIGN)) {
+ $align |= $this->VERTICAL_TOP_ALIGN;
+ }
+
+ $fontSize = 8;
+ $lineSpacing = 1;
+
+ list ($llx, $lly, $lrx, $lry, $urx, $ury, $ulx, $uly) = imageftbbox($fontSize, 0, $fontFileName, $text, array("linespacing" => $lineSpacing));
+
+ $textWidth = $lrx - $llx;
+ $textHeight = $lry - $ury;
+
+ $angle = 0;
+
+ if ($align & $this->HORIZONTAL_CENTER_ALIGN) {
+ $px -= $textWidth / 2;
+ }
+
+ if ($align & $this->HORIZONTAL_RIGHT_ALIGN) {
+ $px -= $textWidth;
+ }
+
+ if ($align & $this->VERTICAL_CENTER_ALIGN) {
+ $py += $textHeight / 2;
+ }
+
+ if ($align & $this->VERTICAL_TOP_ALIGN) {
+ $py += $textHeight;
+ }
+
+ imagettftext($img, $fontSize, $angle, $px, $py, $color->getColor($img), $fontFileName, $text);
+ }
+
+ /**
+ * Print text centered horizontally on the image.
+ *
+ * @param Image GD image
+ * @param integer text coordinate (y)
+ * @param Color text color
+ * @param string text value
+ * @param string font file name
+ */
+ public function printCentered($img, $py, $color, $text, $fontFileName) {
+ $this->printText($img, imagesx($img) / 2, $py, $color, $text, $fontFileName, $this->HORIZONTAL_CENTER_ALIGN | $this->VERTICAL_CENTER_ALIGN);
+ }
+
+ /**
+ * Print text in diagonal.
+ *
+ * @param Image GD image
+ * @param integer text coordinate (x)
+ * @param integer text coordinate (y)
+ * @param Color text color
+ * @param string text value
+ */
+ public function printDiagonal($img, $px, $py, $color, $text) {
+ $fontSize = 8;
+ $fontFileName = $this->fontCondensed;
+
+ $lineSpacing = 1;
+
+ list ($lx, $ly, $rx, $ry) = imageftbbox($fontSize, 0, $fontFileName, $text, array("linespacing" => $lineSpacing));
+ $textWidth = $rx - $lx;
+
+ $angle = -45;
+
+ imagettftext($img, $fontSize, $angle, $px, $py, $color->getColor($img), $fontFileName, $text);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/text/Text.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/primitive/Rectangle.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/primitive/Rectangle.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/primitive/Rectangle.php (revision 10155)
@@ -0,0 +1,76 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * A rectangle identified by the top-left and the bottom-right corners.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * @Created on 27 july 2007
+ */
+ class LibchartRectangle {
+ /**
+ * Top left X
+ */
+ public $x1;
+
+ /**
+ * Top left Y
+ */
+ public $y1;
+
+ /**
+ * Bottom right X
+ */
+ public $x2;
+
+ /**
+ * Bottom right Y
+ */
+ public $y2;
+
+ /**
+ * Creates a new rectangle
+ *
+ * @param resource GD image resource
+ */
+ public function LibchartRectangle($x1, $y1, $x2, $y2) {
+ $this->x1 = $x1;
+ $this->y1 = $y1;
+ $this->x2 = $x2;
+ $this->y2 = $y2;
+ }
+
+ /**
+ * Apply a padding and returns the resulting rectangle.
+ *
+ * @return Resulting rectangle
+ */
+ public function getPaddedRectangle($padding) {
+ $rectangle = new LibchartRectangle(
+ $this->x1 + $padding->left,
+ $this->y1 + $padding->top,
+ $this->x2 - $padding->right,
+ $this->y2 - $padding->bottom
+ );
+
+ //echo "(" . $this->x1 . "," . $this->y1 . ") (" . $this->x2 . "," . $this->y2 . ")<br>";
+ return $rectangle;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/primitive/Rectangle.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/primitive/Padding.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/primitive/Padding.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/primitive/Padding.php (revision 10155)
@@ -0,0 +1,68 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * A padding.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * @Created on 27 july 2007
+ */
+ class LibchartPadding {
+ /**
+ * Top padding
+ */
+ public $top;
+
+ /**
+ * Right padding
+ */
+ public $right;
+
+ /**
+ * Bottom padding
+ */
+ public $bottom;
+
+ /**
+ * Left padding
+ */
+ public $left;
+
+ /**
+ * Creates a new padding.
+ *
+ * @param integer Top padding
+ * @param integer Right padding
+ * @param integer Bottom padding
+ * @param integer Left padding
+ */
+ public function LibchartPadding($top, $right = null, $bottom = null, $left = null) {
+ $this->top = $top;
+ if ($right == null) {
+ $this->right = $top;
+ $this->bottom = $top;
+ $this->left = $top;
+ } else {
+ $this->right = $right;
+ $this->bottom = $bottom;
+ $this->left = $left;
+ }
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/primitive/Padding.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/primitive/Primitive.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/primitive/Primitive.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/primitive/Primitive.php (revision 10155)
@@ -0,0 +1,70 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Graphic primitives, extends GD with chart related primitives.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartPrimitive {
+ private $img;
+
+ /**
+ * Creates a new primitive object
+ *
+ * @param resource GD image resource
+ */
+ public function LibchartPrimitive($img) {
+ $this->img = $img;
+ }
+
+ /**
+ * Draws a straight line.
+ *
+ * @param integer line start (X)
+ * @param integer line start (Y)
+ * @param integer line end (X)
+ * @param integer line end (Y)
+ * @param Color line color
+ */
+ public function line($x1, $y1, $x2, $y2, $color, $width = 1) {
+ imagefilledpolygon($this->img, array($x1, $y1 - $width / 2, $x1, $y1 + $width / 2, $x2, $y2 + $width / 2, $x2, $y2 - $width / 2), 4, $color->getColor($this->img));
+ // imageline($this->img, $x1, $y1, $x2, $y2, $color->getColor($this->img));
+ }
+
+ /**
+ * Draw a filled gray box with thick borders and darker corners.
+ *
+ * @param integer top left coordinate (x)
+ * @param integer top left coordinate (y)
+ * @param integer bottom right coordinate (x)
+ * @param integer bottom right coordinate (y)
+ * @param Color edge color
+ * @param Color corner color
+ */
+ public function outlinedBox($x1, $y1, $x2, $y2, $color0, $color1) {
+ imagefilledrectangle($this->img, $x1, $y1, $x2, $y2, $color0->getColor($this->img));
+ imagerectangle($this->img, $x1, $y1, $x1 + 1, $y1 + 1, $color1->getColor($this->img));
+ imagerectangle($this->img, $x2 - 1, $y1, $x2, $y1 + 1, $color1->getColor($this->img));
+ imagerectangle($this->img, $x1, $y2 - 1, $x1 + 1, $y2, $color1->getColor($this->img));
+ imagerectangle($this->img, $x2 - 1, $y2 - 1, $x2, $y2, $color1->getColor($this->img));
+ }
+
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/primitive/Primitive.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/caption/Caption.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/caption/Caption.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/caption/Caption.php (revision 10155)
@@ -0,0 +1,112 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Caption.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 30 july 2007
+ */
+ class LibchartCaption {
+ protected $labelBoxWidth;
+ protected $labelBoxHeight;
+
+ // Plot
+ protected $plot;
+
+ // Label list
+ protected $labelList;
+
+ // Color set
+ protected $colorSet;
+
+ /**
+ * Constructor of Caption
+ */
+ public function LibchartCaption() {
+ $this->labelBoxWidth = 15;
+ $this->labelBoxHeight = 15;
+ }
+
+ /**
+ * Render the caption.
+ */
+ public function render() {
+ // Get graphical obects
+ $img = $this->plot->getImg();
+ $palette = $this->plot->getPalette();
+ $text = $this->plot->getText();
+ $primitive = $this->plot->getPrimitive();
+
+ // Get the caption area
+ $captionArea = $this->plot->getCaptionArea();
+
+ // Get the pie color set
+ $colorSet = $this->colorSet;
+ $colorSet->reset();
+
+ $i = 0;
+ foreach ($this->labelList as $label) {
+ // Get the next color
+ $color = $colorSet->currentColor();
+ $colorSet->next();
+
+ $boxX1 = $captionArea->x1;
+ $boxX2 = $boxX1 + $this->labelBoxWidth;
+ $boxY1 = $captionArea->y1 + 5 + $i * ($this->labelBoxHeight + 5);
+ $boxY2 = $boxY1 + $this->labelBoxHeight;
+
+ $primitive->outlinedBox($boxX1, $boxY1, $boxX2, $boxY2, $palette->axisColor[0], $palette->axisColor[1]);
+ imagefilledrectangle($img, $boxX1 + 2, $boxY1 + 2, $boxX2 - 2, $boxY2 - 2, $color->getColor($img));
+
+ $text->printText($img, $boxX2 + 5, $boxY1 + $this->labelBoxHeight / 2, $this->plot->getTextColor(), $label, $text->fontCondensed, $text->VERTICAL_CENTER_ALIGN);
+
+ $i++;
+ }
+ }
+
+ /**
+ * Sets the plot.
+ *
+ * @param Plot The plot
+ */
+ public function setPlot($plot) {
+ $this->plot = $plot;
+ }
+
+ /**
+ * Sets the label list.
+ *
+ * @param Array label list
+ */
+ public function setLabelList($labelList) {
+ $this->labelList = $labelList;
+ }
+
+
+ /**
+ * Sets the color set.
+ *
+ * @param Array Color set
+ */
+ public function setColorSet($colorSet) {
+ $this->colorSet = $colorSet;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/caption/Caption.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/color/ColorSet.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/color/ColorSet.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/color/ColorSet.php (revision 10155)
@@ -0,0 +1,83 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * A set of colors, used for drawing series of data.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 26 july 2007
+ */
+ class LibchartColorSet {
+ public $colorList;
+ public $shadowColorList;
+
+ /**
+ * ColorSet constructor.
+ *
+ * @param $shadowFactor Shadow factor
+ * @param $colorArray Colors as an array
+ */
+ public function LibchartColorSet($colorList, $shadowFactor) {
+ $this->colorList = $colorList;
+ $this->shadowColorList = array();
+
+ // Generate the shadow color set
+ foreach ($colorList as $color) {
+ $shadowColor = $color->getShadowColor($shadowFactor);
+
+ array_push($this->shadowColorList, $shadowColor);
+ }
+ }
+
+ /**
+ * Reset the iterator over the collections of colors.
+ */
+ public function reset() {
+ reset($this->colorList);
+ reset($this->shadowColorList);
+ }
+
+ /**
+ * Iterate over the colors and shadow colors. When we go after the last one, loop over (TODO).
+ *
+ */
+ public function next() {
+ next($this->colorList);
+ next($this->shadowColorList);
+ }
+
+ /**
+ * Returns the current color.
+ *
+ * @return Current color
+ */
+ public function currentColor() {
+ return current($this->colorList);
+ }
+
+ /**
+ * Returns the current shadow color.
+ *
+ * @return Current shadow color
+ */
+ public function currentShadowColor() {
+ return current($this->shadowColorList);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/color/ColorSet.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/color/Color.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/color/Color.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/color/Color.php (revision 10155)
@@ -0,0 +1,99 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Color.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ */
+ class LibchartColor {
+ private $red;
+ private $green;
+ private $blue;
+ private $alpha;
+ private $gdColor;
+
+ /**
+ * Creates a new color
+ *
+ * @param integer red [0..255]
+ * @param integer green [0..255]
+ * @param integer blue [0..255]
+ * @param integer alpha [0..255]
+ */
+ public function LibchartColor($red, $green, $blue, $alpha = 0) {
+ $this->red = (int) $red;
+ $this->green = (int) $green;
+ $this->blue = (int) $blue;
+ $this->alpha = (int) round($alpha * 127.0 / 255);
+
+ $this->gdColor = null;
+ }
+
+ /**
+ * Get GD color.
+ *
+ * @param $img GD image resource
+ */
+ public function getColor($img) {
+ // Checks if color has already been allocated
+ if (!$this->gdColor) {
+ if ($this->alpha == 0 || !function_exists('imagecolorallocatealpha')) {
+ $this->gdColor = imagecolorallocate($img, $this->red, $this->green, $this->blue);
+ } else {
+ $this->gdColor = imagecolorallocatealpha($img, $this->red, $this->green, $this->blue, $this->alpha);
+ }
+ }
+
+ // Returns GD color
+ return $this->gdColor;
+ }
+
+ /**
+ * Clip a color component in the interval [0..255]
+ *
+ * @param integer Component
+ * @return Clipped component
+ */
+ public function clip($component) {
+ if ($component < 0) {
+ $component = 0;
+ } else if ($component > 255) {
+ $component = 255;
+ }
+
+ return $component;
+ }
+
+ /**
+ * Return a new color, which is a shadow of this one.
+ *
+ * @param double Multiplication factor
+ * @return Shadow color
+ */
+ public function getShadowColor($shadowFactor) {
+ $red = $this->clip($this->red * $shadowFactor);
+ $green = $this->clip($this->green * $shadowFactor);
+ $blue = $this->clip($this->blue * $shadowFactor);
+ $shadowColor = new LibchartColor($red, $green, $blue);
+
+ return $shadowColor;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/color/Color.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/color/Palette.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/color/Palette.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/color/Palette.php (revision 10155)
@@ -0,0 +1,110 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * Color palette shared by all chart types.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 25 july 2007
+ */
+ class LibchartPalette {
+ public $red;
+ public $axisColor;
+ public $aquaColor;
+
+ public $barColorSet;
+ public $lineColorSet;
+ public $pieColorSet;
+
+ /**
+ * Palette constructor.
+ */
+ public function LibchartPalette() {
+ $this->red = new LibchartColor(255, 0, 0);
+
+ // Colors for the horizontal and vertical axis
+ $this->axisColor = array(
+ new LibchartColor(201, 201, 201),
+ new LibchartColor(158, 158, 158)
+ );
+
+ // Colors for the background
+ $this->aquaColor = array(
+ new LibchartColor(242, 242, 242),
+ new LibchartColor(231, 231, 231),
+ new LibchartColor(239, 239, 239),
+ new LibchartColor(253, 253, 253)
+ );
+
+ // Colors for the bars
+ $this->barColorSet = new LibchartColorSet(array(
+ new LibchartColor(42, 71, 181),
+ new LibchartColor(243, 198, 118),
+ new LibchartColor(128, 63, 35),
+ new LibchartColor(128, 63, 35),
+ new LibchartColor(195, 45, 28),
+ new LibchartColor(224, 198, 165),
+ new LibchartColor(239, 238, 218),
+ new LibchartColor(40, 72, 59),
+ new LibchartColor(71, 112, 132),
+ new LibchartColor(167, 192, 199),
+ new LibchartColor(218, 233, 202)
+ ), 0.75);
+
+ // Colors for the lines
+ $this->lineColorSet = new LibchartColorSet(array(
+ new LibchartColor(172, 172, 210),
+ new LibchartColor(2, 78, 0),
+ new LibchartColor(148, 170, 36),
+ new LibchartColor(233, 191, 49),
+ new LibchartColor(240, 127, 41),
+ new LibchartColor(243, 63, 34),
+ new LibchartColor(190, 71, 47),
+ new LibchartColor(135, 81, 60),
+ new LibchartColor(128, 78, 162),
+ new LibchartColor(121, 75, 255),
+ new LibchartColor(142, 165, 250),
+ new LibchartColor(162, 254, 239),
+ new LibchartColor(137, 240, 166),
+ new LibchartColor(104, 221, 71),
+ new LibchartColor(98, 174, 35),
+ new LibchartColor(93, 129, 1)
+ ), 0.75);
+
+ // Colors for the pie
+ $this->pieColorSet = new LibchartColorSet(array(
+ new LibchartColor(2, 78, 0),
+ new LibchartColor(148, 170, 36),
+ new LibchartColor(233, 191, 49),
+ new LibchartColor(240, 127, 41),
+ new LibchartColor(243, 63, 34),
+ new LibchartColor(190, 71, 47),
+ new LibchartColor(135, 81, 60),
+ new LibchartColor(128, 78, 162),
+ new LibchartColor(121, 75, 255),
+ new LibchartColor(142, 165, 250),
+ new LibchartColor(162, 254, 239),
+ new LibchartColor(137, 240, 166),
+ new LibchartColor(104, 221, 71),
+ new LibchartColor(98, 174, 35),
+ new LibchartColor(93, 129, 1)
+ ), 0.7);
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/color/Palette.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/view/plot/Plot.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/view/plot/Plot.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/view/plot/Plot.php (revision 10155)
@@ -0,0 +1,415 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ /**
+ * The plot holds graphical attributes, and is responsible for computing the layout of the graph.
+ * The layout is quite simple right now, with 4 areas laid out like that:
+ * (of course this is subject to change in the future).
+ *
+ * output area------------------------------------------------|
+ * | (outer padding) |
+ * | image area--------------------------------------------| |
+ * | | (title padding) | |
+ * | | title area----------------------------------------| | |
+ * | | |-------------------------------------------------| | |
+ * | | | |
+ * | | (graph padding) (caption padding) | |
+ * | | graph area----------------| caption area---------| | |
+ * | | | | | | | |
+ * | | | | | | | |
+ * | | | | | | | |
+ * | | | | | | | |
+ * | | | | | | | |
+ * | | |-------------------------| |--------------------| | |
+ * | | | |
+ * | |-----------------------------------------------------| |
+ * | |
+ * |----------------------------------------------------------|
+ *
+ * All area dimensions are known in advance , and the optional logo is drawn in absolute coordinates.
+ *
+ * @author Jean-Marc Tr?スmeaux (jm.tremeaux at gmail.com)
+ * Created on 27 july 2007
+ */
+ class LibchartPlot {
+ // Style properties
+ protected $title;
+ protected $logoFileName;
+
+ // Outer area, whose dimension is the same as the PNG returned
+ protected $outputArea;
+
+ // Outer padding surrounding the whole image, everything outside is blank
+ protected $outerPadding;
+
+ // Coordinates of the area inside the outer padding
+ protected $imageArea;
+
+ // Fixed title height in pixels
+ protected $titleHeight;
+
+ // Padding of the title area
+ protected $titlePadding;
+
+ // Coordinates of the title area
+ protected $titleArea;
+
+ // True if the plot has a caption
+ protected $hasCaption;
+
+ // Ratio of graph/caption in width
+ protected $graphCaptionRatio;
+
+ // Padding of the graph area
+ protected $graphPadding;
+
+ // Coordinates of the graph area
+ protected $graphArea;
+
+ // Padding of the caption area
+ protected $captionPadding;
+
+ // Coordinates of the caption area
+ protected $captionArea;
+
+ /**
+ * Text writer.
+ */
+ protected $text;
+
+ /**
+ * Color palette.
+ */
+ protected $palette;
+
+ /**
+ * GD image
+ */
+ protected $img;
+
+ /**
+ * Drawing primitives
+ */
+ protected $primitive;
+
+ protected $backGroundColor;
+ protected $textColor;
+
+ /**
+ * Constructor of Plot.
+ *
+ * @param integer width of the image
+ * @param integer height of the image
+ */
+ public function LibchartPlot($width, $height) {
+ $this->width = $width;
+ $this->height = $height;
+
+ $this->text = new LibchartText();
+ $this->palette = new LibchartPalette();
+
+ // Default layout
+ $this->outputArea = new LibchartRectangle(0, 0, $width - 1, $height - 1);
+ $this->outerPadding = new LibchartPadding(5);
+ $this->titleHeight = 26;
+ $this->titlePadding = new LibchartPadding(5);
+ $this->hasCaption = false;
+ $this->graphCaptionRatio = 0.50;
+ $this->graphPadding = new LibchartPadding(50);
+ $this->captionPadding = new LibchartPadding(15);
+ }
+
+ /**
+ * Compute the area inside the outer padding (outside is white).
+ */
+ private function computeImageArea() {
+ $this->imageArea = $this->outputArea->getPaddedRectangle($this->outerPadding);
+ }
+
+ /**
+ * Compute the title area.
+ */
+ private function computeTitleArea() {
+ $titleUnpaddedBottom = $this->imageArea->y1 + $this->titleHeight + $this->titlePadding->top + $this->titlePadding->bottom;
+ $titleArea = new LibchartRectangle(
+ $this->imageArea->x1,
+ $this->imageArea->y1,
+ $this->imageArea->x2,
+ $titleUnpaddedBottom - 1
+ );
+ $this->titleArea = $titleArea->getPaddedRectangle($this->titlePadding);
+ }
+
+ /**
+ * Compute the graph area.
+ */
+ private function computeGraphArea() {
+ $titleUnpaddedBottom = $this->imageArea->y1 + $this->titleHeight + $this->titlePadding->top + $this->titlePadding->bottom;
+ $graphArea = null;
+ if ($this->hasCaption) {
+ $graphUnpaddedRight = $this->imageArea->x1 + ($this->imageArea->x2 - $this->imageArea->x1) * $this->graphCaptionRatio
+ + $this->graphPadding->left + $this->graphPadding->right;
+ $graphArea = new LibchartRectangle(
+ $this->imageArea->x1,
+ $titleUnpaddedBottom,
+ $graphUnpaddedRight - 1,
+ $this->imageArea->y2
+ );
+ } else {
+ $graphArea = new LibchartRectangle(
+ $this->imageArea->x1,
+ $titleUnpaddedBottom,
+ $this->imageArea->x2,
+ $this->imageArea->y2
+ );
+ }
+ $this->graphArea = $graphArea->getPaddedRectangle($this->graphPadding);
+ }
+
+ /**
+ * Compute the caption area.
+ */
+ private function computeCaptionArea() {
+ $graphUnpaddedRight = $this->imageArea->x1 + ($this->imageArea->x2 - $this->imageArea->x1) * $this->graphCaptionRatio
+ + $this->graphPadding->left + $this->graphPadding->right;
+ $titleUnpaddedBottom = $this->imageArea->y1 + $this->titleHeight + $this->titlePadding->top + $this->titlePadding->bottom;
+ $captionArea = new LibchartRectangle(
+ $graphUnpaddedRight,
+ $titleUnpaddedBottom,
+ $this->imageArea->x2,
+ $this->imageArea->y2
+ );
+ $this->captionArea = $captionArea->getPaddedRectangle($this->captionPadding);
+ }
+
+ /**
+ * Compute the layout of all areas of the graph.
+ */
+ public function computeLayout() {
+ $this->computeImageArea();
+ $this->computeTitleArea();
+ $this->computeGraphArea();
+ if ($this->hasCaption) {
+ $this->computeCaptionArea();
+ }
+ }
+
+ /**
+ * Creates and initialize the image.
+ */
+ public function createImage() {
+ $this->img = imagecreatetruecolor($this->width, $this->height);
+
+ $this->primitive = new LibchartPrimitive($this->img);
+
+ $this->backGroundColor = new LibchartColor(255, 255, 255);
+ $this->textColor = new LibchartColor(0, 0, 0);
+
+ // White background
+ imagefilledrectangle($this->img, 0, 0, $this->width - 1, $this->height - 1, $this->backGroundColor->getColor($this->img));
+
+ //imagerectangle($this->img, $this->imageArea->x1, $this->imageArea->y1, $this->imageArea->x2, $this->imageArea->y2, $this->palette->red->getColor($this->img));
+ }
+
+ /**
+ * Print the title to the image.
+ */
+ public function printTitle() {
+ $yCenter = $this->titleArea->y1 + ($this->titleArea->y2 - $this->titleArea->y1) / 2;
+ $this->text->printCentered($this->img, $yCenter, $this->textColor, $this->title, $this->text->fontCondensedBold);
+ }
+
+ /**
+ * Print the logo image to the image.
+ */
+ public function printLogo() {
+ @$logoImage = imageCreateFromPNG($this->logoFileName);
+
+ if ($logoImage) {
+ imagecopymerge($this->img, $logoImage, 2 * $this->outerPadding->left, $this->outerPadding->top, 0, 0, imagesx($logoImage), imagesy($logoImage), 100);
+ }
+ }
+
+ /**
+ * Renders to a file or to standard output.
+ *
+ * @param fileName File name (optional)
+ */
+ public function render($fileName) {
+ if (isset($fileName)) {
+ imagepng($this->img, $fileName);
+ } else {
+ imagepng($this->img);
+ }
+ }
+
+ /**
+ * Sets the title.
+ *
+ * @param string New title
+ */
+ public function setTitle($title) {
+ $this->title = $title;
+ }
+
+ /**
+ * Sets the logo image file name.
+ *
+ * @param string New logo image file name
+ */
+ public function setLogoFileName($logoFileName) {
+ $this->logoFileName = $logoFileName;
+ }
+
+ /**
+ * Return the GD image.
+ *
+ * @return GD Image
+ */
+ public function getImg() {
+ return $this->img;
+ }
+
+ /**
+ * Return the palette.
+ *
+ * @return palette
+ */
+ public function getPalette() {
+ return $this->palette;
+ }
+
+ /**
+ * Return the text.
+ *
+ * @return text
+ */
+ public function getText() {
+ return $this->text;
+ }
+
+ /**
+ * Return the primitive.
+ *
+ * @return primitive
+ */
+ public function getPrimitive() {
+ return $this->primitive;
+ }
+
+ /**
+ * Return the outer padding.
+ *
+ * @param integer Outer padding value in pixels
+ */
+ public function getOuterPadding() {
+ return $outerPadding;
+ }
+
+ /**
+ * Set the outer padding.
+ *
+ * @param integer Outer padding value in pixels
+ */
+ public function setOuterPadding($outerPadding) {
+ $this->outerPadding = $outerPadding;
+ }
+
+ /**
+ * Return the title height.
+ *
+ * @param integer title height
+ */
+ public function setTitleHeight($titleHeight) {
+ $this->titleHeight = $titleHeight;
+ }
+
+ /**
+ * Return the title padding.
+ *
+ * @param integer title padding
+ */
+ public function setTitlePadding($titlePadding) {
+ $this->titlePadding = $titlePadding;
+ }
+
+ /**
+ * Return the graph padding.
+ *
+ * @param integer graph padding
+ */
+ public function setGraphPadding($graphPadding) {
+ $this->graphPadding = $graphPadding;
+ }
+
+ /**
+ * Set if the graph has a caption.
+ *
+ * @param boolean graph has a caption
+ */
+ public function setHasCaption($hasCaption) {
+ $this->hasCaption = $hasCaption;
+ }
+
+ /**
+ * Set the caption padding.
+ *
+ * @param integer caption padding
+ */
+ public function setCaptionPadding($captionPadding) {
+ $this->captionPadding = $captionPadding;
+ }
+
+ /**
+ * Set the graph/caption ratio.
+ *
+ * @param integer caption padding
+ */
+ public function setGraphCaptionRatio($graphCaptionRatio) {
+ $this->graphCaptionRatio = $graphCaptionRatio;
+ }
+
+ /**
+ * Return the graph area.
+ *
+ * @return graph area
+ */
+ public function getGraphArea() {
+ return $this->graphArea;
+ }
+
+ /**
+ * Return the caption area.
+ *
+ * @return caption area
+ */
+ public function getCaptionArea() {
+ return $this->captionArea;
+ }
+
+ /**
+ * Return the text color.
+ *
+ * @return text color
+ */
+ public function getTextColor() {
+ return $this->textColor;
+ }
+ }
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/view/plot/Plot.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: branches/RC/core/units/general/libchart/classes/libchart.php
===================================================================
--- branches/RC/core/units/general/libchart/classes/libchart.php (nonexistent)
+++ branches/RC/core/units/general/libchart/classes/libchart.php (revision 10155)
@@ -0,0 +1,42 @@
+<?php
+ /* Libchart - PHP chart library
+ * Copyright (C) 2005-2007 Jean-Marc Tr駑eaux (jm.tremeaux at gmail.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+ require_once 'model/Point.php';
+ require_once 'model/DataSet.php';
+ require_once 'model/XYDataSet.php';
+ require_once 'model/XYSeriesDataSet.php';
+
+ require_once 'view/primitive/Padding.php';
+ require_once 'view/primitive/Rectangle.php';
+ require_once 'view/primitive/Primitive.php';
+ require_once 'view/text/Text.php';
+ require_once 'view/color/Color.php';
+ require_once 'view/color/ColorSet.php';
+ require_once 'view/color/Palette.php';
+ require_once 'view/axis/Bound.php';
+ require_once 'view/axis/Axis.php';
+ require_once 'view/plot/Plot.php';
+ require_once 'view/caption/Caption.php';
+ require_once 'view/chart/Chart.php';
+ require_once 'view/chart/BarChart.php';
+ require_once 'view/chart/VerticalBarChart.php';
+ require_once 'view/chart/HorizontalBarChart.php';
+ require_once 'view/chart/LineChart.php';
+ require_once 'view/chart/PieChart.php';
+?>
\ No newline at end of file
Property changes on: branches/RC/core/units/general/libchart/classes/libchart.php
___________________________________________________________________
Added: cvs2svn:cvs-rev
## -0,0 +1 ##
+1.1.4.1
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property

Event Timeline