source: sourcecode/application/libraries/PHPExcel/Style/Fill.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 8.5 KB
RevLine 
[1]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_Style
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_Style_Fill
31 *
32 * @category   PHPExcel
33 * @package     PHPExcel_Style
34 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_Style_Fill extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable
37{
38        /* Fill types */
39        const FILL_NONE                                                 = 'none';
40        const FILL_SOLID                                                = 'solid';
41        const FILL_GRADIENT_LINEAR                              = 'linear';
42        const FILL_GRADIENT_PATH                                = 'path';
43        const FILL_PATTERN_DARKDOWN                             = 'darkDown';
44        const FILL_PATTERN_DARKGRAY                             = 'darkGray';
45        const FILL_PATTERN_DARKGRID                             = 'darkGrid';
46        const FILL_PATTERN_DARKHORIZONTAL               = 'darkHorizontal';
47        const FILL_PATTERN_DARKTRELLIS                  = 'darkTrellis';
48        const FILL_PATTERN_DARKUP                               = 'darkUp';
49        const FILL_PATTERN_DARKVERTICAL                 = 'darkVertical';
50        const FILL_PATTERN_GRAY0625                             = 'gray0625';
51        const FILL_PATTERN_GRAY125                              = 'gray125';
52        const FILL_PATTERN_LIGHTDOWN                    = 'lightDown';
53        const FILL_PATTERN_LIGHTGRAY                    = 'lightGray';
54        const FILL_PATTERN_LIGHTGRID                    = 'lightGrid';
55        const FILL_PATTERN_LIGHTHORIZONTAL              = 'lightHorizontal';
56        const FILL_PATTERN_LIGHTTRELLIS                 = 'lightTrellis';
57        const FILL_PATTERN_LIGHTUP                              = 'lightUp';
58        const FILL_PATTERN_LIGHTVERTICAL                = 'lightVertical';
59        const FILL_PATTERN_MEDIUMGRAY                   = 'mediumGray';
60
61        /**
62         * Fill type
63         *
64         * @var string
65         */
66        protected $_fillType    = PHPExcel_Style_Fill::FILL_NONE;
67
68        /**
69         * Rotation
70         *
71         * @var double
72         */
73        protected $_rotation    = 0;
74
75        /**
76         * Start color
77         *
78         * @var PHPExcel_Style_Color
79         */
80        protected $_startColor;
81
82        /**
83         * End color
84         *
85         * @var PHPExcel_Style_Color
86         */
87        protected $_endColor;
88
89        /**
90         * Create a new PHPExcel_Style_Fill
91         *
92         * @param       boolean $isSupervisor   Flag indicating if this is a supervisor or not
93         *                                                                      Leave this value at default unless you understand exactly what
94         *                                                                              its ramifications are
95         * @param       boolean $isConditional  Flag indicating if this is a conditional style or not
96         *                                                                      Leave this value at default unless you understand exactly what
97         *                                                                              its ramifications are
98         */
99        public function __construct($isSupervisor = FALSE, $isConditional = FALSE)
100        {
101                // Supervisor?
102                parent::__construct($isSupervisor);
103
104                // Initialise values
105                if ($isConditional) {
106                        $this->_fillType = NULL;
107                }
108                $this->_startColor                      = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_WHITE, $isSupervisor, $isConditional);
109                $this->_endColor                        = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional);
110
111                // bind parent if we are a supervisor
112                if ($isSupervisor) {
113                        $this->_startColor->bindParent($this, '_startColor');
114                        $this->_endColor->bindParent($this, '_endColor');
115                }
116        }
117
118        /**
119         * Get the shared style component for the currently active cell in currently active sheet.
120         * Only used for style supervisor
121         *
122         * @return PHPExcel_Style_Fill
123         */
124        public function getSharedComponent()
125        {
126                return $this->_parent->getSharedComponent()->getFill();
127        }
128
129        /**
130         * Build style array from subcomponents
131         *
132         * @param array $array
133         * @return array
134         */
135        public function getStyleArray($array)
136        {
137                return array('fill' => $array);
138        }
139
140        /**
141         * Apply styles from array
142         *
143         * <code>
144         * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFill()->applyFromArray(
145         *              array(
146         *                      'type'     => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
147         *                      'rotation'   => 0,
148         *                      'startcolor' => array(
149         *                              'rgb' => '000000'
150         *                      ),
151         *                      'endcolor'   => array(
152         *                              'argb' => 'FFFFFFFF'
153         *                      )
154         *              )
155         * );
156         * </code>
157         *
158         * @param       array   $pStyles        Array containing style information
159         * @throws      PHPExcel_Exception
160         * @return PHPExcel_Style_Fill
161         */
162        public function applyFromArray($pStyles = null) {
163                if (is_array($pStyles)) {
164                        if ($this->_isSupervisor) {
165                                $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
166                        } else {
167                                if (array_key_exists('type', $pStyles)) {
168                                        $this->setFillType($pStyles['type']);
169                                }
170                                if (array_key_exists('rotation', $pStyles)) {
171                                        $this->setRotation($pStyles['rotation']);
172                                }
173                                if (array_key_exists('startcolor', $pStyles)) {
174                                        $this->getStartColor()->applyFromArray($pStyles['startcolor']);
175                                }
176                                if (array_key_exists('endcolor', $pStyles)) {
177                                        $this->getEndColor()->applyFromArray($pStyles['endcolor']);
178                                }
179                                if (array_key_exists('color', $pStyles)) {
180                                        $this->getStartColor()->applyFromArray($pStyles['color']);
181                                }
182                        }
183                } else {
184                        throw new PHPExcel_Exception("Invalid style array passed.");
185                }
186                return $this;
187        }
188
189        /**
190         * Get Fill Type
191         *
192         * @return string
193         */
194        public function getFillType() {
195                if ($this->_isSupervisor) {
196                        return $this->getSharedComponent()->getFillType();
197                }
198                return $this->_fillType;
199        }
200
201        /**
202         * Set Fill Type
203         *
204         * @param string $pValue        PHPExcel_Style_Fill fill type
205         * @return PHPExcel_Style_Fill
206         */
207        public function setFillType($pValue = PHPExcel_Style_Fill::FILL_NONE) {
208                if ($this->_isSupervisor) {
209                        $styleArray = $this->getStyleArray(array('type' => $pValue));
210                        $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
211                } else {
212                        $this->_fillType = $pValue;
213                }
214                return $this;
215        }
216
217        /**
218         * Get Rotation
219         *
220         * @return double
221         */
222        public function getRotation() {
223                if ($this->_isSupervisor) {
224                        return $this->getSharedComponent()->getRotation();
225                }
226                return $this->_rotation;
227        }
228
229        /**
230         * Set Rotation
231         *
232         * @param double $pValue
233         * @return PHPExcel_Style_Fill
234         */
235        public function setRotation($pValue = 0) {
236                if ($this->_isSupervisor) {
237                        $styleArray = $this->getStyleArray(array('rotation' => $pValue));
238                        $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
239                } else {
240                        $this->_rotation = $pValue;
241                }
242                return $this;
243        }
244
245        /**
246         * Get Start Color
247         *
248         * @return PHPExcel_Style_Color
249         */
250        public function getStartColor() {
251                return $this->_startColor;
252        }
253
254        /**
255         * Set Start Color
256         *
257         * @param       PHPExcel_Style_Color $pValue
258         * @throws      PHPExcel_Exception
259         * @return PHPExcel_Style_Fill
260         */
261        public function setStartColor(PHPExcel_Style_Color $pValue = null) {
262                // make sure parameter is a real color and not a supervisor
263                $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
264
265                if ($this->_isSupervisor) {
266                        $styleArray = $this->getStartColor()->getStyleArray(array('argb' => $color->getARGB()));
267                        $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
268                } else {
269                        $this->_startColor = $color;
270                }
271                return $this;
272        }
273
274        /**
275         * Get End Color
276         *
277         * @return PHPExcel_Style_Color
278         */
279        public function getEndColor() {
280                return $this->_endColor;
281        }
282
283        /**
284         * Set End Color
285         *
286         * @param       PHPExcel_Style_Color $pValue
287         * @throws      PHPExcel_Exception
288         * @return PHPExcel_Style_Fill
289         */
290        public function setEndColor(PHPExcel_Style_Color $pValue = null) {
291                // make sure parameter is a real color and not a supervisor
292                $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
293
294                if ($this->_isSupervisor) {
295                        $styleArray = $this->getEndColor()->getStyleArray(array('argb' => $color->getARGB()));
296                        $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
297                } else {
298                        $this->_endColor = $color;
299                }
300                return $this;
301        }
302
303        /**
304         * Get hash code
305         *
306         * @return string       Hash code
307         */
308        public function getHashCode() {
309                if ($this->_isSupervisor) {
310                        return $this->getSharedComponent()->getHashCode();
311                }
312                return md5(
313                          $this->getFillType()
314                        . $this->getRotation()
315                        . $this->getStartColor()->getHashCode()
316                        . $this->getEndColor()->getHashCode()
317                        . __CLASS__
318                );
319        }
320
321}
Note: See TracBrowser for help on using the repository browser.