Subversion Repositories eFlore/Applications.cel

Rev

Rev 2388 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2388 jpm 1
<?php
2
/**
3
 * PHPExcel
4
 *
5
 * Copyright (c) 2006 - 2013 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 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)
24
 * @license	http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt	LGPL
25
 * @version	##VERSION##, ##DATE##
26
 */
27
 
28
 
29
/**
30
 * PHPExcel_Style_Fill
31
 *
32
 * @category   PHPExcel
33
 * @package	PHPExcel_Style
34
 * @copyright  Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)
35
 */
36
class 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
}