source: sourcecode/application/libraries/PHPExcel/Chart.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 10.8 KB
Line 
1<?php
2/**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20 *
21 * @category    PHPExcel
22 * @package             PHPExcel_Chart
23 * @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license             http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt   LGPL
25 * @version             1.8.0, 2014-03-02
26 */
27
28
29/**
30 * PHPExcel_Chart
31 *
32 * @category    PHPExcel
33 * @package             PHPExcel_Chart
34 * @copyright   Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_Chart
37{
38        /**
39         * Chart Name
40         *
41         * @var string
42         */
43        private $_name = '';
44
45        /**
46         * Worksheet
47         *
48         * @var PHPExcel_Worksheet
49         */
50        private $_worksheet = null;
51
52        /**
53         * Chart Title
54         *
55         * @var PHPExcel_Chart_Title
56         */
57        private $_title = null;
58
59        /**
60         * Chart Legend
61         *
62         * @var PHPExcel_Chart_Legend
63         */
64        private $_legend = null;
65
66        /**
67         * X-Axis Label
68         *
69         * @var PHPExcel_Chart_Title
70         */
71        private $_xAxisLabel = null;
72
73        /**
74         * Y-Axis Label
75         *
76         * @var PHPExcel_Chart_Title
77         */
78        private $_yAxisLabel = null;
79
80        /**
81         * Chart Plot Area
82         *
83         * @var PHPExcel_Chart_PlotArea
84         */
85        private $_plotArea = null;
86
87        /**
88         * Plot Visible Only
89         *
90         * @var boolean
91         */
92        private $_plotVisibleOnly = true;
93
94        /**
95         * Display Blanks as
96         *
97         * @var string
98         */
99        private $_displayBlanksAs = '0';
100
101
102        /**
103         * Top-Left Cell Position
104         *
105         * @var string
106         */
107        private $_topLeftCellRef = 'A1';
108
109
110        /**
111         * Top-Left X-Offset
112         *
113         * @var integer
114         */
115        private $_topLeftXOffset = 0;
116
117
118        /**
119         * Top-Left Y-Offset
120         *
121         * @var integer
122         */
123        private $_topLeftYOffset = 0;
124
125
126        /**
127         * Bottom-Right Cell Position
128         *
129         * @var string
130         */
131        private $_bottomRightCellRef = 'A1';
132
133
134        /**
135         * Bottom-Right X-Offset
136         *
137         * @var integer
138         */
139        private $_bottomRightXOffset = 10;
140
141
142        /**
143         * Bottom-Right Y-Offset
144         *
145         * @var integer
146         */
147        private $_bottomRightYOffset = 10;
148
149
150        /**
151         * Create a new PHPExcel_Chart
152         */
153        public function __construct($name, PHPExcel_Chart_Title $title = null, PHPExcel_Chart_Legend $legend = null, PHPExcel_Chart_PlotArea $plotArea = null, $plotVisibleOnly = true, $displayBlanksAs = '0', PHPExcel_Chart_Title $xAxisLabel = null, PHPExcel_Chart_Title $yAxisLabel = null)
154        {
155                $this->_name = $name;
156                $this->_title = $title;
157                $this->_legend = $legend;
158                $this->_xAxisLabel = $xAxisLabel;
159                $this->_yAxisLabel = $yAxisLabel;
160                $this->_plotArea = $plotArea;
161                $this->_plotVisibleOnly = $plotVisibleOnly;
162                $this->_displayBlanksAs = $displayBlanksAs;
163        }
164
165        /**
166         * Get Name
167         *
168         * @return string
169         */
170        public function getName() {
171                return $this->_name;
172        }
173
174        /**
175         * Get Worksheet
176         *
177         * @return PHPExcel_Worksheet
178         */
179        public function getWorksheet() {
180                return $this->_worksheet;
181        }
182
183        /**
184         * Set Worksheet
185         *
186         * @param       PHPExcel_Worksheet      $pValue
187         * @throws      PHPExcel_Chart_Exception
188         * @return PHPExcel_Chart
189         */
190        public function setWorksheet(PHPExcel_Worksheet $pValue = null) {
191                $this->_worksheet = $pValue;
192
193                return $this;
194        }
195
196        /**
197         * Get Title
198         *
199         * @return PHPExcel_Chart_Title
200         */
201        public function getTitle() {
202                return $this->_title;
203        }
204
205        /**
206         * Set Title
207         *
208         * @param       PHPExcel_Chart_Title $title
209         * @return      PHPExcel_Chart
210         */
211        public function setTitle(PHPExcel_Chart_Title $title) {
212                $this->_title = $title;
213
214                return $this;
215        }
216
217        /**
218         * Get Legend
219         *
220         * @return PHPExcel_Chart_Legend
221         */
222        public function getLegend() {
223                return $this->_legend;
224        }
225
226        /**
227         * Set Legend
228         *
229         * @param       PHPExcel_Chart_Legend $legend
230         * @return      PHPExcel_Chart
231         */
232        public function setLegend(PHPExcel_Chart_Legend $legend) {
233                $this->_legend = $legend;
234
235                return $this;
236        }
237
238        /**
239         * Get X-Axis Label
240         *
241         * @return PHPExcel_Chart_Title
242         */
243        public function getXAxisLabel() {
244                return $this->_xAxisLabel;
245        }
246
247        /**
248         * Set X-Axis Label
249         *
250         * @param       PHPExcel_Chart_Title $label
251         * @return      PHPExcel_Chart
252         */
253        public function setXAxisLabel(PHPExcel_Chart_Title $label) {
254                $this->_xAxisLabel = $label;
255
256                return $this;
257        }
258
259        /**
260         * Get Y-Axis Label
261         *
262         * @return PHPExcel_Chart_Title
263         */
264        public function getYAxisLabel() {
265                return $this->_yAxisLabel;
266        }
267
268        /**
269         * Set Y-Axis Label
270         *
271         * @param       PHPExcel_Chart_Title $label
272         * @return      PHPExcel_Chart
273         */
274        public function setYAxisLabel(PHPExcel_Chart_Title $label) {
275                $this->_yAxisLabel = $label;
276
277                return $this;
278        }
279
280        /**
281         * Get Plot Area
282         *
283         * @return PHPExcel_Chart_PlotArea
284         */
285        public function getPlotArea() {
286                return $this->_plotArea;
287        }
288
289        /**
290         * Get Plot Visible Only
291         *
292         * @return boolean
293         */
294        public function getPlotVisibleOnly() {
295                return $this->_plotVisibleOnly;
296        }
297
298        /**
299         * Set Plot Visible Only
300         *
301         * @param boolean $plotVisibleOnly
302         * @return PHPExcel_Chart
303         */
304        public function setPlotVisibleOnly($plotVisibleOnly = true) {
305                $this->_plotVisibleOnly = $plotVisibleOnly;
306
307                return $this;
308        }
309
310        /**
311         * Get Display Blanks as
312         *
313         * @return string
314         */
315        public function getDisplayBlanksAs() {
316                return $this->_displayBlanksAs;
317        }
318
319        /**
320         * Set Display Blanks as
321         *
322         * @param string $displayBlanksAs
323         * @return PHPExcel_Chart
324         */
325        public function setDisplayBlanksAs($displayBlanksAs = '0') {
326                $this->_displayBlanksAs = $displayBlanksAs;
327        }
328
329
330        /**
331         * Set the Top Left position for the chart
332         *
333         * @param       string  $cell
334         * @param       integer $xOffset
335         * @param       integer $yOffset
336         * @return PHPExcel_Chart
337         */
338        public function setTopLeftPosition($cell, $xOffset=null, $yOffset=null) {
339                $this->_topLeftCellRef = $cell;
340                if (!is_null($xOffset))
341                        $this->setTopLeftXOffset($xOffset);
342                if (!is_null($yOffset))
343                        $this->setTopLeftYOffset($yOffset);
344
345                return $this;
346        }
347
348        /**
349         * Get the top left position of the chart
350         *
351         * @return array        an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell
352         */
353        public function getTopLeftPosition() {
354                return array( 'cell'    => $this->_topLeftCellRef,
355                                          'xOffset'     => $this->_topLeftXOffset,
356                                          'yOffset'     => $this->_topLeftYOffset
357                                        );
358        }
359
360        /**
361         * Get the cell address where the top left of the chart is fixed
362         *
363         * @return string
364         */
365        public function getTopLeftCell() {
366                return $this->_topLeftCellRef;
367        }
368
369        /**
370         * Set the Top Left cell position for the chart
371         *
372         * @param       string  $cell
373         * @return PHPExcel_Chart
374         */
375        public function setTopLeftCell($cell) {
376                $this->_topLeftCellRef = $cell;
377
378                return $this;
379        }
380
381        /**
382         * Set the offset position within the Top Left cell for the chart
383         *
384         * @param       integer $xOffset
385         * @param       integer $yOffset
386         * @return PHPExcel_Chart
387         */
388        public function setTopLeftOffset($xOffset=null,$yOffset=null) {
389                if (!is_null($xOffset))
390                        $this->setTopLeftXOffset($xOffset);
391                if (!is_null($yOffset))
392                        $this->setTopLeftYOffset($yOffset);
393
394                return $this;
395        }
396
397        /**
398         * Get the offset position within the Top Left cell for the chart
399         *
400         * @return integer[]
401         */
402        public function getTopLeftOffset() {
403                return array( 'X' => $this->_topLeftXOffset,
404                                          'Y' => $this->_topLeftYOffset
405                                        );
406        }
407
408        public function setTopLeftXOffset($xOffset) {
409                $this->_topLeftXOffset = $xOffset;
410
411                return $this;
412        }
413
414        public function getTopLeftXOffset() {
415                return $this->_topLeftXOffset;
416        }
417
418        public function setTopLeftYOffset($yOffset) {
419                $this->_topLeftYOffset = $yOffset;
420
421                return $this;
422        }
423
424        public function getTopLeftYOffset() {
425                return $this->_topLeftYOffset;
426        }
427
428        /**
429         * Set the Bottom Right position of the chart
430         *
431         * @param       string  $cell
432         * @param       integer $xOffset
433         * @param       integer $yOffset
434         * @return PHPExcel_Chart
435         */
436        public function setBottomRightPosition($cell, $xOffset=null, $yOffset=null) {
437                $this->_bottomRightCellRef = $cell;
438                if (!is_null($xOffset))
439                        $this->setBottomRightXOffset($xOffset);
440                if (!is_null($yOffset))
441                        $this->setBottomRightYOffset($yOffset);
442
443                return $this;
444        }
445
446        /**
447         * Get the bottom right position of the chart
448         *
449         * @return array        an associative array containing the cell address, X-Offset and Y-Offset from the top left of that cell
450         */
451        public function getBottomRightPosition() {
452                return array( 'cell'    => $this->_bottomRightCellRef,
453                                          'xOffset'     => $this->_bottomRightXOffset,
454                                          'yOffset'     => $this->_bottomRightYOffset
455                                        );
456        }
457
458        public function setBottomRightCell($cell) {
459                $this->_bottomRightCellRef = $cell;
460
461                return $this;
462        }
463
464        /**
465         * Get the cell address where the bottom right of the chart is fixed
466         *
467         * @return string
468         */
469        public function getBottomRightCell() {
470                return $this->_bottomRightCellRef;
471        }
472
473        /**
474         * Set the offset position within the Bottom Right cell for the chart
475         *
476         * @param       integer $xOffset
477         * @param       integer $yOffset
478         * @return PHPExcel_Chart
479         */
480        public function setBottomRightOffset($xOffset=null,$yOffset=null) {
481                if (!is_null($xOffset))
482                        $this->setBottomRightXOffset($xOffset);
483                if (!is_null($yOffset))
484                        $this->setBottomRightYOffset($yOffset);
485
486                return $this;
487        }
488
489        /**
490         * Get the offset position within the Bottom Right cell for the chart
491         *
492         * @return integer[]
493         */
494        public function getBottomRightOffset() {
495                return array( 'X' => $this->_bottomRightXOffset,
496                                          'Y' => $this->_bottomRightYOffset
497                                        );
498        }
499
500        public function setBottomRightXOffset($xOffset) {
501                $this->_bottomRightXOffset = $xOffset;
502
503                return $this;
504        }
505
506        public function getBottomRightXOffset() {
507                return $this->_bottomRightXOffset;
508        }
509
510        public function setBottomRightYOffset($yOffset) {
511                $this->_bottomRightYOffset = $yOffset;
512
513                return $this;
514        }
515
516        public function getBottomRightYOffset() {
517                return $this->_bottomRightYOffset;
518        }
519
520
521        public function refresh() {
522                if ($this->_worksheet !== NULL) {
523                        $this->_plotArea->refresh($this->_worksheet);
524                }
525        }
526
527        public function render($outputDestination = null) {
528                $libraryName = PHPExcel_Settings::getChartRendererName();
529                if (is_null($libraryName)) {
530                        return false;
531                }
532                //      Ensure that data series values are up-to-date before we render
533                $this->refresh();
534
535                $libraryPath = PHPExcel_Settings::getChartRendererPath();
536                $includePath = str_replace('\\','/',get_include_path());
537                $rendererPath = str_replace('\\','/',$libraryPath);
538                if (strpos($rendererPath,$includePath) === false) {
539                        set_include_path(get_include_path() . PATH_SEPARATOR . $libraryPath);
540                }
541
542                $rendererName = 'PHPExcel_Chart_Renderer_'.$libraryName;
543                $renderer = new $rendererName($this);
544
545                if ($outputDestination == 'php://output') {
546                        $outputDestination = null;
547                }
548                return $renderer->render($outputDestination);
549        }
550
551}
Note: See TracBrowser for help on using the repository browser.