Overview

Packages

  • JAMA
  • None
  • PHP
  • PHPExcel
    • CachedObjectStorage
    • Calculation
    • Cell
    • Chart
      • Renderer
    • Reader
      • Excel2007
      • Excel5
    • RichText
    • Settings
    • Shared
      • Escher
      • OLE
      • Trend
      • ZipArchive
    • Style
    • Worksheet
      • Drawing
    • Writer
      • 2007
      • CSV
      • Excel2007
      • Excel5
      • HTML
      • PDF

Classes

  • CholeskyDecomposition
  • Dao
  • DateTime
  • DateTimeZone
  • DOMNode
  • EigenvalueDecomposition
  • Elemento
  • Historial
  • Irradiacion
  • Latitud
  • MotorPhp
  • Panel
  • PclZip
  • Periodo
  • PHPExcel
  • PHPExcel_Autoloader
  • PHPExcel_Best_Fit
  • PHPExcel_CachedObjectStorage_APC
  • PHPExcel_CachedObjectStorage_CacheBase
  • PHPExcel_CachedObjectStorage_DiscISAM
  • PHPExcel_CachedObjectStorage_Igbinary
  • PHPExcel_CachedObjectStorage_Memcache
  • PHPExcel_CachedObjectStorage_Memory
  • PHPExcel_CachedObjectStorage_MemoryGZip
  • PHPExcel_CachedObjectStorage_MemorySerialized
  • PHPExcel_CachedObjectStorage_PHPTemp
  • PHPExcel_CachedObjectStorage_SQLite
  • PHPExcel_CachedObjectStorage_SQLite3
  • PHPExcel_CachedObjectStorage_Wincache
  • PHPExcel_CachedObjectStorageFactory
  • PHPExcel_CalcEngine_CyclicReferenceStack
  • PHPExcel_CalcEngine_Logger
  • PHPExcel_Calculation
  • PHPExcel_Calculation_Database
  • PHPExcel_Calculation_DateTime
  • PHPExcel_Calculation_Engineering
  • PHPExcel_Calculation_ExceptionHandler
  • PHPExcel_Calculation_Financial
  • PHPExcel_Calculation_FormulaParser
  • PHPExcel_Calculation_FormulaToken
  • PHPExcel_Calculation_Function
  • PHPExcel_Calculation_Functions
  • PHPExcel_Calculation_Logical
  • PHPExcel_Calculation_LookupRef
  • PHPExcel_Calculation_MathTrig
  • PHPExcel_Calculation_Statistical
  • PHPExcel_Calculation_TextData
  • PHPExcel_Calculation_Token_Stack
  • PHPExcel_Cell
  • PHPExcel_Cell_AdvancedValueBinder
  • PHPExcel_Cell_DataType
  • PHPExcel_Cell_DataValidation
  • PHPExcel_Cell_DefaultValueBinder
  • PHPExcel_Cell_Hyperlink
  • PHPExcel_Chart
  • PHPExcel_Chart_DataSeries
  • PHPExcel_Chart_DataSeriesValues
  • PHPExcel_Chart_Layout
  • PHPExcel_Chart_Legend
  • PHPExcel_Chart_PlotArea
  • PHPExcel_Chart_Renderer_jpgraph
  • PHPExcel_Chart_Title
  • PHPExcel_Comment
  • PHPExcel_DocumentProperties
  • PHPExcel_DocumentSecurity
  • PHPExcel_Exponential_Best_Fit
  • PHPExcel_HashTable
  • PHPExcel_IOFactory
  • PHPExcel_Linear_Best_Fit
  • PHPExcel_Logarithmic_Best_Fit
  • PHPExcel_NamedRange
  • PHPExcel_Polynomial_Best_Fit
  • PHPExcel_Power_Best_Fit
  • PHPExcel_Reader_Abstract
  • PHPExcel_Reader_CSV
  • PHPExcel_Reader_DefaultReadFilter
  • PHPExcel_Reader_Excel2003XML
  • PHPExcel_Reader_Excel2007
  • PHPExcel_Reader_Excel2007_Chart
  • PHPExcel_Reader_Excel2007_Theme
  • PHPExcel_Reader_Excel5
  • PHPExcel_Reader_Excel5_Escher
  • PHPExcel_Reader_Excel5_MD5
  • PHPExcel_Reader_Excel5_RC4
  • PHPExcel_Reader_Gnumeric
  • PHPExcel_Reader_HTML
  • PHPExcel_Reader_OOCalc
  • PHPExcel_Reader_SYLK
  • PHPExcel_ReferenceHelper
  • PHPExcel_RichText
  • PHPExcel_RichText_Run
  • PHPExcel_RichText_TextElement
  • PHPExcel_Settings
  • PHPExcel_Shared_CodePage
  • PHPExcel_Shared_Date
  • PHPExcel_Shared_Drawing
  • PHPExcel_Shared_Escher
  • PHPExcel_Shared_Escher_DgContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer
  • PHPExcel_Shared_Escher_DgContainer_SpgrContainer_SpContainer
  • PHPExcel_Shared_Escher_DggContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE
  • PHPExcel_Shared_Escher_DggContainer_BstoreContainer_BSE_Blip
  • PHPExcel_Shared_Excel5
  • PHPExcel_Shared_File
  • PHPExcel_Shared_Font
  • PHPExcel_Shared_JAMA_LUDecomposition
  • PHPExcel_Shared_JAMA_Matrix
  • PHPExcel_Shared_JAMA_QRDecomposition
  • PHPExcel_Shared_OLE
  • PHPExcel_Shared_OLE_ChainedBlockStream
  • PHPExcel_Shared_OLE_PPS
  • PHPExcel_Shared_OLE_PPS_File
  • PHPExcel_Shared_OLE_PPS_Root
  • PHPExcel_Shared_OLERead
  • PHPExcel_Shared_PasswordHasher
  • PHPExcel_Shared_String
  • PHPExcel_Shared_TimeZone
  • PHPExcel_Shared_XMLWriter
  • PHPExcel_Shared_ZipArchive
  • PHPExcel_Shared_ZipStreamWrapper
  • PHPExcel_Style
  • PHPExcel_Style_Alignment
  • PHPExcel_Style_Border
  • PHPExcel_Style_Borders
  • PHPExcel_Style_Color
  • PHPExcel_Style_Conditional
  • PHPExcel_Style_Fill
  • PHPExcel_Style_Font
  • PHPExcel_Style_NumberFormat
  • PHPExcel_Style_Protection
  • PHPExcel_Style_Supervisor
  • PHPExcel_Worksheet
  • PHPExcel_Worksheet_AutoFilter
  • PHPExcel_Worksheet_AutoFilter_Column
  • PHPExcel_Worksheet_AutoFilter_Column_Rule
  • PHPExcel_Worksheet_BaseDrawing
  • PHPExcel_Worksheet_CellIterator
  • PHPExcel_Worksheet_ColumnDimension
  • PHPExcel_Worksheet_Drawing
  • PHPExcel_Worksheet_Drawing_Shadow
  • PHPExcel_Worksheet_HeaderFooter
  • PHPExcel_Worksheet_HeaderFooterDrawing
  • PHPExcel_Worksheet_MemoryDrawing
  • PHPExcel_Worksheet_PageMargins
  • PHPExcel_Worksheet_PageSetup
  • PHPExcel_Worksheet_Protection
  • PHPExcel_Worksheet_Row
  • PHPExcel_Worksheet_RowDimension
  • PHPExcel_Worksheet_RowIterator
  • PHPExcel_Worksheet_SheetView
  • PHPExcel_WorksheetIterator
  • PHPExcel_Writer_Abstract
  • PHPExcel_Writer_CSV
  • PHPExcel_Writer_Excel2007
  • PHPExcel_Writer_Excel2007_Chart
  • PHPExcel_Writer_Excel2007_Comments
  • PHPExcel_Writer_Excel2007_ContentTypes
  • PHPExcel_Writer_Excel2007_DocProps
  • PHPExcel_Writer_Excel2007_Drawing
  • PHPExcel_Writer_Excel2007_Rels
  • PHPExcel_Writer_Excel2007_RelsRibbon
  • PHPExcel_Writer_Excel2007_RelsVBA
  • PHPExcel_Writer_Excel2007_StringTable
  • PHPExcel_Writer_Excel2007_Style
  • PHPExcel_Writer_Excel2007_Theme
  • PHPExcel_Writer_Excel2007_Workbook
  • PHPExcel_Writer_Excel2007_Worksheet
  • PHPExcel_Writer_Excel2007_WriterPart
  • PHPExcel_Writer_Excel5
  • PHPExcel_Writer_Excel5_BIFFwriter
  • PHPExcel_Writer_Excel5_Escher
  • PHPExcel_Writer_Excel5_Font
  • PHPExcel_Writer_Excel5_Parser
  • PHPExcel_Writer_Excel5_Workbook
  • PHPExcel_Writer_Excel5_Worksheet
  • PHPExcel_Writer_Excel5_Xf
  • PHPExcel_Writer_HTML
  • PHPExcel_Writer_PDF
  • PHPExcel_Writer_PDF_Core
  • PHPExcel_Writer_PDF_DomPDF
  • PHPExcel_Writer_PDF_mPDF
  • PHPExcel_Writer_PDF_tcPDF
  • Provincia
  • Radiacion
  • SingularValueDecomposition
  • Sistema
  • trendClass
  • xajax
  • xajaxArgumentManager
  • xajaxCallableObject
  • xajaxCallableObjectPlugin
  • xajaxControl
  • xajaxControlContainer
  • xajaxCustomRequest
  • xajaxCustomResponse
  • xajaxEvent
  • xajaxEventPlugin
  • xajaxFunctionPlugin
  • xajaxIncludeClientScriptPlugin
  • xajaxLanguageManager
  • xajaxPlugin
  • xajaxPluginManager
  • xajaxRequest
  • xajaxRequestPlugin
  • xajaxResponse
  • xajaxResponseManager
  • xajaxResponsePlugin
  • xajaxScriptPlugin
  • xajaxUserFunction
  • XMLWriter

Interfaces

  • DateTimeInterface
  • Iterator
  • PHPExcel_CachedObjectStorage_ICache
  • PHPExcel_Cell_IValueBinder
  • PHPExcel_IComparable
  • PHPExcel_Reader_IReader
  • PHPExcel_Reader_IReadFilter
  • PHPExcel_RichText_ITextElement
  • PHPExcel_Writer_IWriter
  • Throwable
  • Traversable

Exceptions

  • Exception
  • PHPExcel_Calculation_Exception
  • PHPExcel_Chart_Exception
  • PHPExcel_Exception
  • PHPExcel_Reader_Exception
  • PHPExcel_Writer_Exception

Functions

  • acosh
  • agregar_elemento
  • asinh
  • atanh
  • borrar_elementos
  • borrar_gdm_ab
  • borrar_irradiacion
  • borrar_latitud
  • borrar_panel
  • borrar_periodo
  • borrar_pmp_min_pmp_max
  • borrar_radiacion
  • borrar_resumen
  • borrar_sistema
  • borrar_sombra
  • gdm_ab
  • grabar_resumen
  • historial
  • hypo
  • irradiacion
  • JAMAError
  • latitud
  • limpiar_historial
  • login
  • mb_str_replace
  • mostrar_energia_total_ch
  • mostrar_panel_md_th
  • mostrar_panel_th
  • mostrar_radiacion_md_th
  • mostrar_radiacion_th
  • mostrar_resumen_th
  • panel
  • PclZipUtilCopyBlock
  • PclZipUtilOptionText
  • PclZipUtilPathInclusion
  • PclZipUtilPathReduction
  • PclZipUtilRename
  • PclZipUtilTranslateWinPath
  • periodo
  • pmp_min_pmp_max
  • preparar_panel
  • preparar_radiacion
  • preparar_radiacion_media
  • radiacion
  • resumen
  • sistema
  • sombra
  • xajaxCompressFile
  • xajaxErrorHandler
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
  1: <?php
  2: 
  3: /**
  4:  * PHPExcel
  5:  *
  6:  * Copyright (c) 2006 - 2014 PHPExcel
  7:  *
  8:  * This library is free software; you can redistribute it and/or
  9:  * modify it under the terms of the GNU Lesser General Public
 10:  * License as published by the Free Software Foundation; either
 11:  * version 2.1 of the License, or (at your option) any later version.
 12:  *
 13:  * This library is distributed in the hope that it will be useful,
 14:  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 15:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 16:  * Lesser General Public License for more details.
 17:  *
 18:  * You should have received a copy of the GNU Lesser General Public
 19:  * License along with this library; if not, write to the Free Software
 20:  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 21:  *
 22:  * @category    PHPExcel
 23:  * @package     PHPExcel_Chart_Renderer
 24:  * @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 25:  * @license     http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt   LGPL
 26:  * @version     1.8.0, 2014-03-02
 27:  */
 28: 
 29: 
 30: require_once(PHPExcel_Settings::getChartRendererPath().'/jpgraph.php');
 31: 
 32: 
 33: /**
 34:  * PHPExcel_Chart_Renderer_jpgraph
 35:  *
 36:  * @category    PHPExcel
 37:  * @package     PHPExcel_Chart_Renderer
 38:  * @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
 39:  */
 40: class PHPExcel_Chart_Renderer_jpgraph
 41: {
 42:     private static $_width  = 640;
 43: 
 44:     private static $_height = 480;
 45: 
 46:     private static $_colourSet = array( 'mediumpurple1',    'palegreen3',   'gold1',        'cadetblue1',
 47:                                         'darkmagenta',      'coral',        'dodgerblue3',  'eggplant',
 48:                                         'mediumblue',       'magenta',      'sandybrown',   'cyan',
 49:                                         'firebrick1',       'forestgreen',  'deeppink4',    'darkolivegreen',
 50:                                         'goldenrod2'
 51:                                       );
 52: 
 53:     private static $_markSet = array(   'diamond'   => MARK_DIAMOND,
 54:                                         'square'    => MARK_SQUARE,
 55:                                         'triangle'  => MARK_UTRIANGLE,
 56:                                         'x'         => MARK_X,
 57:                                         'star'      => MARK_STAR,
 58:                                         'dot'       => MARK_FILLEDCIRCLE,
 59:                                         'dash'      => MARK_DTRIANGLE,
 60:                                         'circle'    => MARK_CIRCLE,
 61:                                         'plus'      => MARK_CROSS
 62:                                     );
 63: 
 64: 
 65:     private $_chart = null;
 66: 
 67:     private $_graph = null;
 68: 
 69:     private static $_plotColour = 0;
 70: 
 71:     private static $_plotMark   = 0;
 72: 
 73: 
 74:     private function _formatPointMarker($seriesPlot,$markerID) {
 75:         $plotMarkKeys = array_keys(self::$_markSet);
 76:         if (is_null($markerID)) {
 77:             //  Use default plot marker (next marker in the series)
 78:             self::$_plotMark %= count(self::$_markSet);
 79:             $seriesPlot->mark->SetType(self::$_markSet[$plotMarkKeys[self::$_plotMark++]]);
 80:         } elseif ($markerID !== 'none') {
 81:             //  Use specified plot marker (if it exists)
 82:             if (isset(self::$_markSet[$markerID])) {
 83:                 $seriesPlot->mark->SetType(self::$_markSet[$markerID]);
 84:             } else {
 85:                 //  If the specified plot marker doesn't exist, use default plot marker (next marker in the series)
 86:                 self::$_plotMark %= count(self::$_markSet);
 87:                 $seriesPlot->mark->SetType(self::$_markSet[$plotMarkKeys[self::$_plotMark++]]);
 88:             }
 89:         } else {
 90:             //  Hide plot marker
 91:             $seriesPlot->mark->Hide();
 92:         }
 93:         $seriesPlot->mark->SetColor(self::$_colourSet[self::$_plotColour]);
 94:         $seriesPlot->mark->SetFillColor(self::$_colourSet[self::$_plotColour]);
 95:         $seriesPlot->SetColor(self::$_colourSet[self::$_plotColour++]);
 96: 
 97:         return $seriesPlot;
 98:     }   //  function _formatPointMarker()
 99: 
100: 
101:     private function _formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation = '') {
102:         $datasetLabelFormatCode = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getFormatCode();
103:         if (!is_null($datasetLabelFormatCode)) {
104:             //  Retrieve any label formatting code
105:             $datasetLabelFormatCode = stripslashes($datasetLabelFormatCode);
106:         }
107: 
108:         $testCurrentIndex = 0;
109:         foreach($datasetLabels as $i => $datasetLabel) {
110:             if (is_array($datasetLabel)) {
111:                 if ($rotation == 'bar') {
112:                     $datasetLabels[$i] = implode(" ",$datasetLabel);
113:                 } else {
114:                     $datasetLabel = array_reverse($datasetLabel);
115:                     $datasetLabels[$i] = implode("\n",$datasetLabel);
116:                 }
117:             } else {
118:                 //  Format labels according to any formatting code
119:                 if (!is_null($datasetLabelFormatCode)) {
120:                     $datasetLabels[$i] = PHPExcel_Style_NumberFormat::toFormattedString($datasetLabel,$datasetLabelFormatCode);
121:                 }
122:             }
123:             ++$testCurrentIndex;
124:         }
125: 
126:         return $datasetLabels;
127:     }   //  function _formatDataSetLabels()
128: 
129: 
130:     private function _percentageSumCalculation($groupID,$seriesCount) {
131:         //  Adjust our values to a percentage value across all series in the group
132:         for($i = 0; $i < $seriesCount; ++$i) {
133:             if ($i == 0) {
134:                 $sumValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
135:             } else {
136:                 $nextValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
137:                 foreach($nextValues as $k => $value) {
138:                     if (isset($sumValues[$k])) {
139:                         $sumValues[$k] += $value;
140:                     } else {
141:                         $sumValues[$k] = $value;
142:                     }
143:                 }
144:             }
145:         }
146: 
147:         return $sumValues;
148:     }   //  function _percentageSumCalculation()
149: 
150: 
151:     private function _percentageAdjustValues($dataValues,$sumValues) {
152:         foreach($dataValues as $k => $dataValue) {
153:             $dataValues[$k] = $dataValue / $sumValues[$k] * 100;
154:         }
155: 
156:         return $dataValues;
157:     }   //  function _percentageAdjustValues()
158: 
159: 
160:     private function _getCaption($captionElement) {
161:         //  Read any caption
162:         $caption = (!is_null($captionElement)) ? $captionElement->getCaption() : NULL;
163:         //  Test if we have a title caption to display
164:         if (!is_null($caption)) {
165:             //  If we do, it could be a plain string or an array
166:             if (is_array($caption)) {
167:                 //  Implode an array to a plain string
168:                 $caption = implode('',$caption);
169:             }
170:         }
171:         return $caption;
172:     }   //  function _getCaption()
173: 
174: 
175:     private function _renderTitle() {
176:         $title = $this->_getCaption($this->_chart->getTitle());
177:         if (!is_null($title)) {
178:             $this->_graph->title->Set($title);
179:         }
180:     }   //  function _renderTitle()
181: 
182: 
183:     private function _renderLegend() {
184:         $legend = $this->_chart->getLegend();
185:         if (!is_null($legend)) {
186:             $legendPosition = $legend->getPosition();
187:             $legendOverlay = $legend->getOverlay();
188:             switch ($legendPosition) {
189:                 case 'r'    :
190:                     $this->_graph->legend->SetPos(0.01,0.5,'right','center');   //  right
191:                     $this->_graph->legend->SetColumns(1);
192:                     break;
193:                 case 'l'    :
194:                     $this->_graph->legend->SetPos(0.01,0.5,'left','center');    //  left
195:                     $this->_graph->legend->SetColumns(1);
196:                     break;
197:                 case 't'    :
198:                     $this->_graph->legend->SetPos(0.5,0.01,'center','top'); //  top
199:                     break;
200:                 case 'b'    :
201:                     $this->_graph->legend->SetPos(0.5,0.99,'center','bottom');  //  bottom
202:                     break;
203:                 default     :
204:                     $this->_graph->legend->SetPos(0.01,0.01,'right','top'); //  top-right
205:                     $this->_graph->legend->SetColumns(1);
206:                     break;
207:             }
208:         } else {
209:             $this->_graph->legend->Hide();
210:         }
211:     }   //  function _renderLegend()
212: 
213: 
214:     private function _renderCartesianPlotArea($type='textlin') {
215:         $this->_graph = new Graph(self::$_width,self::$_height);
216:         $this->_graph->SetScale($type);
217: 
218:         $this->_renderTitle();
219: 
220:         //  Rotate for bar rather than column chart
221:         $rotation = $this->_chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotDirection();
222:         $reverse = ($rotation == 'bar') ? true : false;
223: 
224:         $xAxisLabel = $this->_chart->getXAxisLabel();
225:         if (!is_null($xAxisLabel)) {
226:             $title = $this->_getCaption($xAxisLabel);
227:             if (!is_null($title)) {
228:                 $this->_graph->xaxis->SetTitle($title,'center');
229:                 $this->_graph->xaxis->title->SetMargin(35);
230:                 if ($reverse) {
231:                     $this->_graph->xaxis->title->SetAngle(90);
232:                     $this->_graph->xaxis->title->SetMargin(90);
233:                 }
234:             }
235:         }
236: 
237:         $yAxisLabel = $this->_chart->getYAxisLabel();
238:         if (!is_null($yAxisLabel)) {
239:             $title = $this->_getCaption($yAxisLabel);
240:             if (!is_null($title)) {
241:                 $this->_graph->yaxis->SetTitle($title,'center');
242:                 if ($reverse) {
243:                     $this->_graph->yaxis->title->SetAngle(0);
244:                     $this->_graph->yaxis->title->SetMargin(-55);
245:                 }
246:             }
247:         }
248:     }   //  function _renderCartesianPlotArea()
249: 
250: 
251:     private function _renderPiePlotArea($doughnut = False) {
252:         $this->_graph = new PieGraph(self::$_width,self::$_height);
253: 
254:         $this->_renderTitle();
255:     }   //  function _renderPiePlotArea()
256: 
257: 
258:     private function _renderRadarPlotArea() {
259:         $this->_graph = new RadarGraph(self::$_width,self::$_height);
260:         $this->_graph->SetScale('lin');
261: 
262:         $this->_renderTitle();
263:     }   //  function _renderRadarPlotArea()
264: 
265: 
266:     private function _renderPlotLine($groupID, $filled = false, $combination = false, $dimensions = '2d') {
267:         $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
268: 
269:         $labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
270:         if ($labelCount > 0) {
271:             $datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
272:             $datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount);
273:             $this->_graph->xaxis->SetTickLabels($datasetLabels);
274:         }
275: 
276:         $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
277:         $seriesPlots = array();
278:         if ($grouping == 'percentStacked') {
279:             $sumValues = $this->_percentageSumCalculation($groupID,$seriesCount);
280:         }
281: 
282:         //  Loop through each data series in turn
283:         for($i = 0; $i < $seriesCount; ++$i) {
284:             $dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
285:             $marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();
286: 
287:             if ($grouping == 'percentStacked') {
288:                 $dataValues = $this->_percentageAdjustValues($dataValues,$sumValues);
289:             }
290: 
291:             //  Fill in any missing values in the $dataValues array
292:             $testCurrentIndex = 0;
293:             foreach($dataValues as $k => $dataValue) {
294:                 while($k != $testCurrentIndex) {
295:                     $dataValues[$testCurrentIndex] = null;
296:                     ++$testCurrentIndex;
297:                 }
298:                 ++$testCurrentIndex;
299:             }
300: 
301:             $seriesPlot = new LinePlot($dataValues);
302:             if ($combination) {
303:                 $seriesPlot->SetBarCenter();
304:             }
305: 
306:             if ($filled) {
307:                 $seriesPlot->SetFilled(true);
308:                 $seriesPlot->SetColor('black');
309:                 $seriesPlot->SetFillColor(self::$_colourSet[self::$_plotColour++]);
310:             } else {
311:                 //  Set the appropriate plot marker
312:                 $this->_formatPointMarker($seriesPlot,$marker);
313:             }
314:             $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue();
315:             $seriesPlot->SetLegend($dataLabel);
316: 
317:             $seriesPlots[] = $seriesPlot;
318:         }
319: 
320:         if ($grouping == 'standard') {
321:             $groupPlot = $seriesPlots;
322:         } else {
323:             $groupPlot = new AccLinePlot($seriesPlots);
324:         }
325:         $this->_graph->Add($groupPlot);
326:     }   //  function _renderPlotLine()
327: 
328: 
329:     private function _renderPlotBar($groupID, $dimensions = '2d') {
330:         $rotation = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotDirection();
331:         //  Rotate for bar rather than column chart
332:         if (($groupID == 0) && ($rotation == 'bar')) {
333:             $this->_graph->Set90AndMargin();
334:         }
335:         $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
336: 
337:         $labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
338:         if ($labelCount > 0) {
339:             $datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
340:             $datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount, $rotation);
341:             //  Rotate for bar rather than column chart
342:             if ($rotation == 'bar') {
343:                 $datasetLabels = array_reverse($datasetLabels);
344:                 $this->_graph->yaxis->SetPos('max');
345:                 $this->_graph->yaxis->SetLabelAlign('center','top');
346:                 $this->_graph->yaxis->SetLabelSide(SIDE_RIGHT);
347:             }
348:             $this->_graph->xaxis->SetTickLabels($datasetLabels);
349:         }
350: 
351: 
352:         $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
353:         $seriesPlots = array();
354:         if ($grouping == 'percentStacked') {
355:             $sumValues = $this->_percentageSumCalculation($groupID,$seriesCount);
356:         }
357: 
358:         //  Loop through each data series in turn
359:         for($j = 0; $j < $seriesCount; ++$j) {
360:             $dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues();
361:             if ($grouping == 'percentStacked') {
362:                 $dataValues = $this->_percentageAdjustValues($dataValues,$sumValues);
363:             }
364: 
365:             //  Fill in any missing values in the $dataValues array
366:             $testCurrentIndex = 0;
367:             foreach($dataValues as $k => $dataValue) {
368:                 while($k != $testCurrentIndex) {
369:                     $dataValues[$testCurrentIndex] = null;
370:                     ++$testCurrentIndex;
371:                 }
372:                 ++$testCurrentIndex;
373:             }
374: 
375:             //  Reverse the $dataValues order for bar rather than column chart
376:             if ($rotation == 'bar') {
377:                 $dataValues = array_reverse($dataValues);
378:             }
379:             $seriesPlot = new BarPlot($dataValues);
380:             $seriesPlot->SetColor('black');
381:             $seriesPlot->SetFillColor(self::$_colourSet[self::$_plotColour++]);
382:             if ($dimensions == '3d') {
383:                 $seriesPlot->SetShadow();
384:             }
385:             if (!$this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)) {
386:                 $dataLabel = '';
387:             } else {
388:                 $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($j)->getDataValue();
389:             }
390:             $seriesPlot->SetLegend($dataLabel);
391: 
392:             $seriesPlots[] = $seriesPlot;
393:         }
394:         //  Reverse the plot order for bar rather than column chart
395:         if (($rotation == 'bar') && (!($grouping == 'percentStacked'))) {
396:             $seriesPlots = array_reverse($seriesPlots);
397:         }
398: 
399:         if ($grouping == 'clustered') {
400:             $groupPlot = new GroupBarPlot($seriesPlots);
401:         } elseif ($grouping == 'standard') {
402:             $groupPlot = new GroupBarPlot($seriesPlots);
403:         } else {
404:             $groupPlot = new AccBarPlot($seriesPlots);
405:             if ($dimensions == '3d') {
406:                 $groupPlot->SetShadow();
407:             }
408:         }
409: 
410:         $this->_graph->Add($groupPlot);
411:     }   //  function _renderPlotBar()
412: 
413: 
414:     private function _renderPlotScatter($groupID,$bubble) {
415:         $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
416:         $scatterStyle = $bubbleSize = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
417: 
418:         $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
419:         $seriesPlots = array();
420: 
421:         //  Loop through each data series in turn
422:         for($i = 0; $i < $seriesCount; ++$i) {
423:             $dataValuesY = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues();
424:             $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
425: 
426:             foreach($dataValuesY as $k => $dataValueY) {
427:                 $dataValuesY[$k] = $k;
428:             }
429: 
430:             $seriesPlot = new ScatterPlot($dataValuesX,$dataValuesY);
431:             if ($scatterStyle == 'lineMarker') {
432:                 $seriesPlot->SetLinkPoints();
433:                 $seriesPlot->link->SetColor(self::$_colourSet[self::$_plotColour]);
434:             } elseif ($scatterStyle == 'smoothMarker') {
435:                 $spline = new Spline($dataValuesY,$dataValuesX);
436:                 list($splineDataY,$splineDataX) = $spline->Get(count($dataValuesX) * self::$_width / 20);
437:                 $lplot = new LinePlot($splineDataX,$splineDataY);
438:                 $lplot->SetColor(self::$_colourSet[self::$_plotColour]);
439: 
440:                 $this->_graph->Add($lplot);
441:             }
442: 
443:             if ($bubble) {
444:                 $this->_formatPointMarker($seriesPlot,'dot');
445:                 $seriesPlot->mark->SetColor('black');
446:                 $seriesPlot->mark->SetSize($bubbleSize);
447:             } else {
448:                 $marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();
449:                 $this->_formatPointMarker($seriesPlot,$marker);
450:             }
451:             $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue();
452:             $seriesPlot->SetLegend($dataLabel);
453: 
454:             $this->_graph->Add($seriesPlot);
455:         }
456:     }   //  function _renderPlotScatter()
457: 
458: 
459:     private function _renderPlotRadar($groupID) {
460:         $radarStyle = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
461: 
462:         $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
463:         $seriesPlots = array();
464: 
465:         //  Loop through each data series in turn
466:         for($i = 0; $i < $seriesCount; ++$i) {
467:             $dataValuesY = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues();
468:             $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
469:             $marker = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getPointMarker();
470: 
471:             $dataValues = array();
472:             foreach($dataValuesY as $k => $dataValueY) {
473:                 $dataValues[$k] = implode(' ',array_reverse($dataValueY));
474:             }
475:             $tmp = array_shift($dataValues);
476:             $dataValues[] = $tmp;
477:             $tmp = array_shift($dataValuesX);
478:             $dataValuesX[] = $tmp;
479: 
480:             $this->_graph->SetTitles(array_reverse($dataValues));
481: 
482:             $seriesPlot = new RadarPlot(array_reverse($dataValuesX));
483: 
484:             $dataLabel = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotLabelByIndex($i)->getDataValue();
485:             $seriesPlot->SetColor(self::$_colourSet[self::$_plotColour++]);
486:             if ($radarStyle == 'filled') {
487:                 $seriesPlot->SetFillColor(self::$_colourSet[self::$_plotColour]);
488:             }
489:             $this->_formatPointMarker($seriesPlot,$marker);
490:             $seriesPlot->SetLegend($dataLabel);
491: 
492:             $this->_graph->Add($seriesPlot);
493:         }
494:     }   //  function _renderPlotRadar()
495: 
496: 
497:     private function _renderPlotContour($groupID) {
498:         $contourStyle = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
499: 
500:         $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
501:         $seriesPlots = array();
502: 
503:         $dataValues = array();
504:         //  Loop through each data series in turn
505:         for($i = 0; $i < $seriesCount; ++$i) {
506:             $dataValuesY = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex($i)->getDataValues();
507:             $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($i)->getDataValues();
508: 
509:             $dataValues[$i] = $dataValuesX;
510:         }
511:         $seriesPlot = new ContourPlot($dataValues);
512: 
513:         $this->_graph->Add($seriesPlot);
514:     }   //  function _renderPlotContour()
515: 
516: 
517:     private function _renderPlotStock($groupID) {
518:         $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
519:         $plotOrder = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotOrder();
520: 
521:         $dataValues = array();
522:         //  Loop through each data series in turn and build the plot arrays
523:         foreach($plotOrder as $i => $v) {
524:             $dataValuesX = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($v)->getDataValues();
525:             foreach($dataValuesX as $j => $dataValueX) {
526:                 $dataValues[$plotOrder[$i]][$j] = $dataValueX;
527:             }
528:         }
529:         if(empty($dataValues)) {
530:             return;
531:         }
532: 
533:         $dataValuesPlot = array();
534:         // Flatten the plot arrays to a single dimensional array to work with jpgraph
535:         for($j = 0; $j < count($dataValues[0]); $j++) {
536:             for($i = 0; $i < $seriesCount; $i++) {
537:                 $dataValuesPlot[] = $dataValues[$i][$j];
538:             }
539:         }
540: 
541:         // Set the x-axis labels
542:         $labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
543:         if ($labelCount > 0) {
544:             $datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
545:             $datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount);
546:             $this->_graph->xaxis->SetTickLabels($datasetLabels);
547:         }
548: 
549:         $seriesPlot = new StockPlot($dataValuesPlot);
550:         $seriesPlot->SetWidth(20);
551: 
552:         $this->_graph->Add($seriesPlot);
553:     }   //  function _renderPlotStock()
554: 
555: 
556:     private function _renderAreaChart($groupCount, $dimensions = '2d') {
557:         require_once('jpgraph_line.php');
558: 
559:         $this->_renderCartesianPlotArea();
560: 
561:         for($i = 0; $i < $groupCount; ++$i) {
562:             $this->_renderPlotLine($i,True,False,$dimensions);
563:         }
564:     }   //  function _renderAreaChart()
565: 
566: 
567:     private function _renderLineChart($groupCount, $dimensions = '2d') {
568:         require_once('jpgraph_line.php');
569: 
570:         $this->_renderCartesianPlotArea();
571: 
572:         for($i = 0; $i < $groupCount; ++$i) {
573:             $this->_renderPlotLine($i,False,False,$dimensions);
574:         }
575:     }   //  function _renderLineChart()
576: 
577: 
578:     private function _renderBarChart($groupCount, $dimensions = '2d') {
579:         require_once('jpgraph_bar.php');
580: 
581:         $this->_renderCartesianPlotArea();
582: 
583:         for($i = 0; $i < $groupCount; ++$i) {
584:             $this->_renderPlotBar($i,$dimensions);
585:         }
586:     }   //  function _renderBarChart()
587: 
588: 
589:     private function _renderScatterChart($groupCount) {
590:         require_once('jpgraph_scatter.php');
591:         require_once('jpgraph_regstat.php');
592:         require_once('jpgraph_line.php');
593: 
594:         $this->_renderCartesianPlotArea('linlin');
595: 
596:         for($i = 0; $i < $groupCount; ++$i) {
597:             $this->_renderPlotScatter($i,false);
598:         }
599:     }   //  function _renderScatterChart()
600: 
601: 
602:     private function _renderBubbleChart($groupCount) {
603:         require_once('jpgraph_scatter.php');
604: 
605:         $this->_renderCartesianPlotArea('linlin');
606: 
607:         for($i = 0; $i < $groupCount; ++$i) {
608:             $this->_renderPlotScatter($i,true);
609:         }
610:     }   //  function _renderBubbleChart()
611: 
612: 
613:     private function _renderPieChart($groupCount, $dimensions = '2d', $doughnut = False, $multiplePlots = False) {
614:         require_once('jpgraph_pie.php');
615:         if ($dimensions == '3d') {
616:             require_once('jpgraph_pie3d.php');
617:         }
618: 
619:         $this->_renderPiePlotArea($doughnut);
620: 
621:         $iLimit = ($multiplePlots) ? $groupCount : 1;
622:         for($groupID = 0; $groupID < $iLimit; ++$groupID) {
623:             $grouping = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotGrouping();
624:             $exploded = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotStyle();
625:             if ($groupID == 0) {
626:                 $labelCount = count($this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex(0)->getPointCount());
627:                 if ($labelCount > 0) {
628:                     $datasetLabels = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotCategoryByIndex(0)->getDataValues();
629:                     $datasetLabels = $this->_formatDataSetLabels($groupID, $datasetLabels, $labelCount);
630:                 }
631:             }
632: 
633:             $seriesCount = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotSeriesCount();
634:             $seriesPlots = array();
635:             //  For pie charts, we only display the first series: doughnut charts generally display all series
636:             $jLimit = ($multiplePlots) ? $seriesCount : 1;
637:             //  Loop through each data series in turn
638:             for($j = 0; $j < $jLimit; ++$j) {
639:                 $dataValues = $this->_chart->getPlotArea()->getPlotGroupByIndex($groupID)->getPlotValuesByIndex($j)->getDataValues();
640: 
641:                 //  Fill in any missing values in the $dataValues array
642:                 $testCurrentIndex = 0;
643:                 foreach($dataValues as $k => $dataValue) {
644:                     while($k != $testCurrentIndex) {
645:                         $dataValues[$testCurrentIndex] = null;
646:                         ++$testCurrentIndex;
647:                     }
648:                     ++$testCurrentIndex;
649:                 }
650: 
651:                 if ($dimensions == '3d') {
652:                     $seriesPlot = new PiePlot3D($dataValues);
653:                 } else {
654:                     if ($doughnut) {
655:                         $seriesPlot = new PiePlotC($dataValues);
656:                     } else {
657:                         $seriesPlot = new PiePlot($dataValues);
658:                     }
659:                 }
660: 
661:                 if ($multiplePlots) {
662:                     $seriesPlot->SetSize(($jLimit-$j) / ($jLimit * 4));
663:                 }
664: 
665:                 if ($doughnut) {
666:                     $seriesPlot->SetMidColor('white');
667:                 }
668: 
669:                 $seriesPlot->SetColor(self::$_colourSet[self::$_plotColour++]);
670:                 if (count($datasetLabels) > 0)
671:                     $seriesPlot->SetLabels(array_fill(0,count($datasetLabels),''));
672:                 if ($dimensions != '3d') {
673:                     $seriesPlot->SetGuideLines(false);
674:                 }
675:                 if ($j == 0) {
676:                     if ($exploded) {
677:                         $seriesPlot->ExplodeAll();
678:                     }
679:                     $seriesPlot->SetLegends($datasetLabels);
680:                 }
681: 
682:                 $this->_graph->Add($seriesPlot);
683:             }
684:         }
685:     }   //  function _renderPieChart()
686: 
687: 
688:     private function _renderRadarChart($groupCount) {
689:         require_once('jpgraph_radar.php');
690: 
691:         $this->_renderRadarPlotArea();
692: 
693:         for($groupID = 0; $groupID < $groupCount; ++$groupID) {
694:             $this->_renderPlotRadar($groupID);
695:         }
696:     }   //  function _renderRadarChart()
697: 
698: 
699:     private function _renderStockChart($groupCount) {
700:         require_once('jpgraph_stock.php');
701: 
702:         $this->_renderCartesianPlotArea('intint');
703: 
704:         for($groupID = 0; $groupID < $groupCount; ++$groupID) {
705:             $this->_renderPlotStock($groupID);
706:         }
707:     }   //  function _renderStockChart()
708: 
709: 
710:     private function _renderContourChart($groupCount,$dimensions) {
711:         require_once('jpgraph_contour.php');
712: 
713:         $this->_renderCartesianPlotArea('intint');
714: 
715:         for($i = 0; $i < $groupCount; ++$i) {
716:             $this->_renderPlotContour($i);
717:         }
718:     }   //  function _renderContourChart()
719: 
720: 
721:     private function _renderCombinationChart($groupCount,$dimensions,$outputDestination) {
722:         require_once('jpgraph_line.php');
723:         require_once('jpgraph_bar.php');
724:         require_once('jpgraph_scatter.php');
725:         require_once('jpgraph_regstat.php');
726:         require_once('jpgraph_line.php');
727: 
728:         $this->_renderCartesianPlotArea();
729: 
730:         for($i = 0; $i < $groupCount; ++$i) {
731:             $dimensions = null;
732:             $chartType = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType();
733:             switch ($chartType) {
734:                 case 'area3DChart' :
735:                     $dimensions = '3d';
736:                 case 'areaChart' :
737:                     $this->_renderPlotLine($i,True,True,$dimensions);
738:                     break;
739:                 case 'bar3DChart' :
740:                     $dimensions = '3d';
741:                 case 'barChart' :
742:                     $this->_renderPlotBar($i,$dimensions);
743:                     break;
744:                 case 'line3DChart' :
745:                     $dimensions = '3d';
746:                 case 'lineChart' :
747:                     $this->_renderPlotLine($i,False,True,$dimensions);
748:                     break;
749:                 case 'scatterChart' :
750:                     $this->_renderPlotScatter($i,false);
751:                     break;
752:                 case 'bubbleChart' :
753:                     $this->_renderPlotScatter($i,true);
754:                     break;
755:                 default :
756:                     $this->_graph = null;
757:                     return false;
758:             }
759:         }
760: 
761:         $this->_renderLegend();
762: 
763:         $this->_graph->Stroke($outputDestination);
764:         return true;
765:     }   //  function _renderCombinationChart()
766: 
767: 
768:     public function render($outputDestination) {
769:         self::$_plotColour = 0;
770: 
771:         $groupCount = $this->_chart->getPlotArea()->getPlotGroupCount();
772: 
773:         $dimensions = null;
774:         if ($groupCount == 1) {
775:             $chartType = $this->_chart->getPlotArea()->getPlotGroupByIndex(0)->getPlotType();
776:         } else {
777:             $chartTypes = array();
778:             for($i = 0; $i < $groupCount; ++$i) {
779:                 $chartTypes[] = $this->_chart->getPlotArea()->getPlotGroupByIndex($i)->getPlotType();
780:             }
781:             $chartTypes = array_unique($chartTypes);
782:             if (count($chartTypes) == 1) {
783:                 $chartType = array_pop($chartTypes);
784:             } elseif (count($chartTypes) == 0) {
785:                 echo 'Chart is not yet implemented<br />';
786:                 return false;
787:             } else {
788:                 return $this->_renderCombinationChart($groupCount,$dimensions,$outputDestination);
789:             }
790:         }
791: 
792:         switch ($chartType) {
793:             case 'area3DChart' :
794:                 $dimensions = '3d';
795:             case 'areaChart' :
796:                 $this->_renderAreaChart($groupCount,$dimensions);
797:                 break;
798:             case 'bar3DChart' :
799:                 $dimensions = '3d';
800:             case 'barChart' :
801:                 $this->_renderBarChart($groupCount,$dimensions);
802:                 break;
803:             case 'line3DChart' :
804:                 $dimensions = '3d';
805:             case 'lineChart' :
806:                 $this->_renderLineChart($groupCount,$dimensions);
807:                 break;
808:             case 'pie3DChart' :
809:                 $dimensions = '3d';
810:             case 'pieChart' :
811:                 $this->_renderPieChart($groupCount,$dimensions,False,False);
812:                 break;
813:             case 'doughnut3DChart' :
814:                 $dimensions = '3d';
815:             case 'doughnutChart' :
816:                 $this->_renderPieChart($groupCount,$dimensions,True,True);
817:                 break;
818:             case 'scatterChart' :
819:                 $this->_renderScatterChart($groupCount);
820:                 break;
821:             case 'bubbleChart' :
822:                 $this->_renderBubbleChart($groupCount);
823:                 break;
824:             case 'radarChart' :
825:                 $this->_renderRadarChart($groupCount);
826:                 break;
827:             case 'surface3DChart' :
828:                 $dimensions = '3d';
829:             case 'surfaceChart' :
830:                 $this->_renderContourChart($groupCount,$dimensions);
831:                 break;
832:             case 'stockChart' :
833:                 $this->_renderStockChart($groupCount,$dimensions);
834:                 break;
835:             default :
836:                 echo $chartType.' is not yet implemented<br />';
837:                 return false;
838:         }
839:         $this->_renderLegend();
840: 
841:         $this->_graph->Stroke($outputDestination);
842:         return true;
843:     }   //  function render()
844: 
845: 
846:     /**
847:      * Create a new PHPExcel_Chart_Renderer_jpgraph
848:      */
849:     public function __construct(PHPExcel_Chart $chart)
850:     {
851:         $this->_graph   = null;
852:         $this->_chart   = $chart;
853:     }   //  function __construct()
854: 
855: }   //  PHPExcel_Chart_Renderer_jpgraph
856: 
Autene API documentation generated by ApiGen