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_Borders
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_Borders extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable
37
{
38
	/* Diagonal directions */
39
	const DIAGONAL_NONE		= 0;
40
	const DIAGONAL_UP		= 1;
41
	const DIAGONAL_DOWN		= 2;
42
	const DIAGONAL_BOTH		= 3;
43
 
44
	/**
45
	 * Left
46
	 *
47
	 * @var PHPExcel_Style_Border
48
	 */
49
	protected $_left;
50
 
51
	/**
52
	 * Right
53
	 *
54
	 * @var PHPExcel_Style_Border
55
	 */
56
	protected $_right;
57
 
58
	/**
59
	 * Top
60
	 *
61
	 * @var PHPExcel_Style_Border
62
	 */
63
	protected $_top;
64
 
65
	/**
66
	 * Bottom
67
	 *
68
	 * @var PHPExcel_Style_Border
69
	 */
70
	protected $_bottom;
71
 
72
	/**
73
	 * Diagonal
74
	 *
75
	 * @var PHPExcel_Style_Border
76
	 */
77
	protected $_diagonal;
78
 
79
	/**
80
	 * DiagonalDirection
81
	 *
82
	 * @var int
83
	 */
84
	protected $_diagonalDirection;
85
 
86
	/**
87
	 * All borders psedo-border. Only applies to supervisor.
88
	 *
89
	 * @var PHPExcel_Style_Border
90
	 */
91
	protected $_allBorders;
92
 
93
	/**
94
	 * Outline psedo-border. Only applies to supervisor.
95
	 *
96
	 * @var PHPExcel_Style_Border
97
	 */
98
	protected $_outline;
99
 
100
	/**
101
	 * Inside psedo-border. Only applies to supervisor.
102
	 *
103
	 * @var PHPExcel_Style_Border
104
	 */
105
	protected $_inside;
106
 
107
	/**
108
	 * Vertical pseudo-border. Only applies to supervisor.
109
	 *
110
	 * @var PHPExcel_Style_Border
111
	 */
112
	protected $_vertical;
113
 
114
	/**
115
	 * Horizontal pseudo-border. Only applies to supervisor.
116
	 *
117
	 * @var PHPExcel_Style_Border
118
	 */
119
	protected $_horizontal;
120
 
121
	/**
122
     * Create a new PHPExcel_Style_Borders
123
	 *
124
	 * @param	boolean	$isSupervisor	Flag indicating if this is a supervisor or not
125
	 *									Leave this value at default unless you understand exactly what
126
	 *										its ramifications are
127
	 * @param	boolean	$isConditional	Flag indicating if this is a conditional style or not
128
	 *									Leave this value at default unless you understand exactly what
129
	 *										its ramifications are
130
     */
131
    public function __construct($isSupervisor = FALSE, $isConditional = FALSE)
132
    {
133
    	// Supervisor?
134
		parent::__construct($isSupervisor);
135
 
136
    	// Initialise values
137
    	$this->_left				= new PHPExcel_Style_Border($isSupervisor, $isConditional);
138
    	$this->_right				= new PHPExcel_Style_Border($isSupervisor, $isConditional);
139
    	$this->_top					= new PHPExcel_Style_Border($isSupervisor, $isConditional);
140
    	$this->_bottom				= new PHPExcel_Style_Border($isSupervisor, $isConditional);
141
    	$this->_diagonal			= new PHPExcel_Style_Border($isSupervisor, $isConditional);
142
		$this->_diagonalDirection	= PHPExcel_Style_Borders::DIAGONAL_NONE;
143
 
144
		// Specially for supervisor
145
		if ($isSupervisor) {
146
			// Initialize pseudo-borders
147
			$this->_allBorders			= new PHPExcel_Style_Border(TRUE);
148
			$this->_outline				= new PHPExcel_Style_Border(TRUE);
149
			$this->_inside				= new PHPExcel_Style_Border(TRUE);
150
			$this->_vertical			= new PHPExcel_Style_Border(TRUE);
151
			$this->_horizontal			= new PHPExcel_Style_Border(TRUE);
152
 
153
			// bind parent if we are a supervisor
154
			$this->_left->bindParent($this, '_left');
155
			$this->_right->bindParent($this, '_right');
156
			$this->_top->bindParent($this, '_top');
157
			$this->_bottom->bindParent($this, '_bottom');
158
			$this->_diagonal->bindParent($this, '_diagonal');
159
			$this->_allBorders->bindParent($this, '_allBorders');
160
			$this->_outline->bindParent($this, '_outline');
161
			$this->_inside->bindParent($this, '_inside');
162
			$this->_vertical->bindParent($this, '_vertical');
163
			$this->_horizontal->bindParent($this, '_horizontal');
164
		}
165
    }
166
 
167
	/**
168
	 * Get the shared style component for the currently active cell in currently active sheet.
169
	 * Only used for style supervisor
170
	 *
171
	 * @return PHPExcel_Style_Borders
172
	 */
173
	public function getSharedComponent()
174
	{
175
		return $this->_parent->getSharedComponent()->getBorders();
176
	}
177
 
178
	/**
179
	 * Build style array from subcomponents
180
	 *
181
	 * @param array $array
182
	 * @return array
183
	 */
184
	public function getStyleArray($array)
185
	{
186
		return array('borders' => $array);
187
	}
188
 
189
	/**
190
     * Apply styles from array
191
     *
192
     * <code>
193
     * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray(
194
     * 		array(
195
     * 			'bottom'     => array(
196
     * 				'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
197
     * 				'color' => array(
198
     * 					'rgb' => '808080'
199
     * 				)
200
     * 			),
201
     * 			'top'     => array(
202
     * 				'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
203
     * 				'color' => array(
204
     * 					'rgb' => '808080'
205
     * 				)
206
     * 			)
207
     * 		)
208
     * );
209
     * </code>
210
     * <code>
211
     * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->applyFromArray(
212
     * 		array(
213
     * 			'allborders' => array(
214
     * 				'style' => PHPExcel_Style_Border::BORDER_DASHDOT,
215
     * 				'color' => array(
216
     * 					'rgb' => '808080'
217
     * 				)
218
     * 			)
219
     * 		)
220
     * );
221
     * </code>
222
     *
223
     * @param	array	$pStyles	Array containing style information
224
     * @throws	PHPExcel_Exception
225
     * @return PHPExcel_Style_Borders
226
     */
227
	public function applyFromArray($pStyles = null) {
228
		if (is_array($pStyles)) {
229
			if ($this->_isSupervisor) {
230
				$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
231
			} else {
232
				if (array_key_exists('left', $pStyles)) {
233
					$this->getLeft()->applyFromArray($pStyles['left']);
234
				}
235
				if (array_key_exists('right', $pStyles)) {
236
					$this->getRight()->applyFromArray($pStyles['right']);
237
				}
238
				if (array_key_exists('top', $pStyles)) {
239
					$this->getTop()->applyFromArray($pStyles['top']);
240
				}
241
				if (array_key_exists('bottom', $pStyles)) {
242
					$this->getBottom()->applyFromArray($pStyles['bottom']);
243
				}
244
				if (array_key_exists('diagonal', $pStyles)) {
245
					$this->getDiagonal()->applyFromArray($pStyles['diagonal']);
246
				}
247
				if (array_key_exists('diagonaldirection', $pStyles)) {
248
					$this->setDiagonalDirection($pStyles['diagonaldirection']);
249
				}
250
				if (array_key_exists('allborders', $pStyles)) {
251
					$this->getLeft()->applyFromArray($pStyles['allborders']);
252
					$this->getRight()->applyFromArray($pStyles['allborders']);
253
					$this->getTop()->applyFromArray($pStyles['allborders']);
254
					$this->getBottom()->applyFromArray($pStyles['allborders']);
255
				}
256
			}
257
		} else {
258
			throw new PHPExcel_Exception("Invalid style array passed.");
259
		}
260
		return $this;
261
	}
262
 
263
    /**
264
     * Get Left
265
     *
266
     * @return PHPExcel_Style_Border
267
     */
268
    public function getLeft() {
269
		return $this->_left;
270
    }
271
 
272
    /**
273
     * Get Right
274
     *
275
     * @return PHPExcel_Style_Border
276
     */
277
    public function getRight() {
278
		return $this->_right;
279
    }
280
 
281
    /**
282
     * Get Top
283
     *
284
     * @return PHPExcel_Style_Border
285
     */
286
    public function getTop() {
287
		return $this->_top;
288
    }
289
 
290
    /**
291
     * Get Bottom
292
     *
293
     * @return PHPExcel_Style_Border
294
     */
295
    public function getBottom() {
296
		return $this->_bottom;
297
    }
298
 
299
    /**
300
     * Get Diagonal
301
     *
302
     * @return PHPExcel_Style_Border
303
     */
304
    public function getDiagonal() {
305
		return $this->_diagonal;
306
    }
307
 
308
    /**
309
     * Get AllBorders (pseudo-border). Only applies to supervisor.
310
     *
311
     * @return PHPExcel_Style_Border
312
     * @throws PHPExcel_Exception
313
     */
314
    public function getAllBorders() {
315
		if (!$this->_isSupervisor) {
316
			throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.');
317
		}
318
		return $this->_allBorders;
319
    }
320
 
321
    /**
322
     * Get Outline (pseudo-border). Only applies to supervisor.
323
     *
324
     * @return boolean
325
     * @throws PHPExcel_Exception
326
     */
327
    public function getOutline() {
328
		if (!$this->_isSupervisor) {
329
			throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.');
330
		}
331
    	return $this->_outline;
332
    }
333
 
334
    /**
335
     * Get Inside (pseudo-border). Only applies to supervisor.
336
     *
337
     * @return boolean
338
     * @throws PHPExcel_Exception
339
     */
340
    public function getInside() {
341
		if (!$this->_isSupervisor) {
342
			throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.');
343
		}
344
    	return $this->_inside;
345
    }
346
 
347
    /**
348
     * Get Vertical (pseudo-border). Only applies to supervisor.
349
     *
350
     * @return PHPExcel_Style_Border
351
     * @throws PHPExcel_Exception
352
     */
353
    public function getVertical() {
354
		if (!$this->_isSupervisor) {
355
			throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.');
356
		}
357
		return $this->_vertical;
358
    }
359
 
360
    /**
361
     * Get Horizontal (pseudo-border). Only applies to supervisor.
362
     *
363
     * @return PHPExcel_Style_Border
364
     * @throws PHPExcel_Exception
365
     */
366
    public function getHorizontal() {
367
		if (!$this->_isSupervisor) {
368
			throw new PHPExcel_Exception('Can only get pseudo-border for supervisor.');
369
		}
370
		return $this->_horizontal;
371
    }
372
 
373
    /**
374
     * Get DiagonalDirection
375
     *
376
     * @return int
377
     */
378
    public function getDiagonalDirection() {
379
		if ($this->_isSupervisor) {
380
			return $this->getSharedComponent()->getDiagonalDirection();
381
		}
382
    	return $this->_diagonalDirection;
383
    }
384
 
385
    /**
386
     * Set DiagonalDirection
387
     *
388
     * @param int $pValue
389
     * @return PHPExcel_Style_Borders
390
     */
391
    public function setDiagonalDirection($pValue = PHPExcel_Style_Borders::DIAGONAL_NONE) {
392
        if ($pValue == '') {
393
    		$pValue = PHPExcel_Style_Borders::DIAGONAL_NONE;
394
    	}
395
		if ($this->_isSupervisor) {
396
			$styleArray = $this->getStyleArray(array('diagonaldirection' => $pValue));
397
			$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
398
		} else {
399
			$this->_diagonalDirection = $pValue;
400
		}
401
		return $this;
402
    }
403
 
404
	/**
405
	 * Get hash code
406
	 *
407
	 * @return string	Hash code
408
	 */
409
	public function getHashCode() {
410
		if ($this->_isSupervisor) {
411
			return $this->getSharedComponent()->getHashcode();
412
		}
413
    	return md5(
414
    		  $this->getLeft()->getHashCode()
415
    		. $this->getRight()->getHashCode()
416
    		. $this->getTop()->getHashCode()
417
    		. $this->getBottom()->getHashCode()
418
    		. $this->getDiagonal()->getHashCode()
419
    		. $this->getDiagonalDirection()
420
    		. __CLASS__
421
    	);
422
    }
423
 
424
}