| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |  * PHPExcel_Style_Border | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2015-05-02 22:50:37 +00:00
										 |  |  |  * Copyright (c) 2006 - 2015 PHPExcel | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  * modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  * License as published by the Free Software Foundation; either | 
					
						
							|  |  |  |  * version 2.1 of the License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  * Lesser General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  |  * License along with this library; if not, write to the Free Software | 
					
						
							|  |  |  |  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category   PHPExcel | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |  * @package    PHPExcel_Style | 
					
						
							| 
									
										
										
										
											2015-05-02 22:50:37 +00:00
										 |  |  |  * @copyright  Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL | 
					
						
							|  |  |  |  * @version    ##VERSION##, ##DATE##
 | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2012-10-23 12:16:30 +00:00
										 |  |  | class PHPExcel_Style_Border extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /* Border style */ | 
					
						
							|  |  |  |     const BORDER_NONE             = 'none'; | 
					
						
							|  |  |  |     const BORDER_DASHDOT          = 'dashDot'; | 
					
						
							|  |  |  |     const BORDER_DASHDOTDOT       = 'dashDotDot'; | 
					
						
							|  |  |  |     const BORDER_DASHED           = 'dashed'; | 
					
						
							|  |  |  |     const BORDER_DOTTED           = 'dotted'; | 
					
						
							|  |  |  |     const BORDER_DOUBLE           = 'double'; | 
					
						
							|  |  |  |     const BORDER_HAIR             = 'hair'; | 
					
						
							|  |  |  |     const BORDER_MEDIUM           = 'medium'; | 
					
						
							|  |  |  |     const BORDER_MEDIUMDASHDOT    = 'mediumDashDot'; | 
					
						
							|  |  |  |     const BORDER_MEDIUMDASHDOTDOT = 'mediumDashDotDot'; | 
					
						
							|  |  |  |     const BORDER_MEDIUMDASHED     = 'mediumDashed'; | 
					
						
							|  |  |  |     const BORDER_SLANTDASHDOT     = 'slantDashDot'; | 
					
						
							|  |  |  |     const BORDER_THICK            = 'thick'; | 
					
						
							|  |  |  |     const BORDER_THIN             = 'thin'; | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Border style | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $borderStyle = PHPExcel_Style_Border::BORDER_NONE; | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Border color | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var PHPExcel_Style_Color | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $color; | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Parent property name | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @var string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected $parentPropertyName; | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Create a new PHPExcel_Style_Border | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param    boolean    $isSupervisor    Flag indicating if this is a supervisor or not | 
					
						
							|  |  |  |      *                                    Leave this value at default unless you understand exactly what | 
					
						
							|  |  |  |      *                                        its ramifications are | 
					
						
							|  |  |  |      * @param    boolean    $isConditional    Flag indicating if this is a conditional style or not | 
					
						
							|  |  |  |      *                                    Leave this value at default unless you understand exactly what | 
					
						
							|  |  |  |      *                                        its ramifications are | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function __construct($isSupervisor = false, $isConditional = false) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // Supervisor?
 | 
					
						
							|  |  |  |         parent::__construct($isSupervisor); | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |         // Initialise values
 | 
					
						
							|  |  |  |         $this->color    = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor); | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |         // bind parent if we are a supervisor
 | 
					
						
							|  |  |  |         if ($isSupervisor) { | 
					
						
							|  |  |  |             $this->color->bindParent($this, 'color'); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Bind parent. Only used for supervisor | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param PHPExcel_Style_Borders $parent | 
					
						
							|  |  |  |      * @param string $parentPropertyName | 
					
						
							|  |  |  |      * @return PHPExcel_Style_Border | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function bindParent($parent, $parentPropertyName = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->parent = $parent; | 
					
						
							|  |  |  |         $this->parentPropertyName = $parentPropertyName; | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get the shared style component for the currently active cell in currently active sheet. | 
					
						
							|  |  |  |      * Only used for style supervisor | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return PHPExcel_Style_Border | 
					
						
							|  |  |  |      * @throws PHPExcel_Exception | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getSharedComponent() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         switch ($this->parentPropertyName) { | 
					
						
							|  |  |  |             case 'allBorders': | 
					
						
							|  |  |  |             case 'horizontal': | 
					
						
							|  |  |  |             case 'inside': | 
					
						
							|  |  |  |             case 'outline': | 
					
						
							|  |  |  |             case 'vertical': | 
					
						
							|  |  |  |                 throw new PHPExcel_Exception('Cannot get shared component for a pseudo-border.'); | 
					
						
							|  |  |  |                 break; | 
					
						
							|  |  |  |             case 'bottom': | 
					
						
							|  |  |  |                 return $this->parent->getSharedComponent()->getBottom(); | 
					
						
							|  |  |  |             case 'diagonal': | 
					
						
							|  |  |  |                 return $this->parent->getSharedComponent()->getDiagonal(); | 
					
						
							|  |  |  |             case 'left': | 
					
						
							|  |  |  |                 return $this->parent->getSharedComponent()->getLeft(); | 
					
						
							|  |  |  |             case 'right': | 
					
						
							|  |  |  |                 return $this->parent->getSharedComponent()->getRight(); | 
					
						
							|  |  |  |             case 'top': | 
					
						
							|  |  |  |                 return $this->parent->getSharedComponent()->getTop(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Build style array from subcomponents | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param array $array | 
					
						
							|  |  |  |      * @return array | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getStyleArray($array) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         switch ($this->parentPropertyName) { | 
					
						
							|  |  |  |             case 'allBorders': | 
					
						
							|  |  |  |             case 'bottom': | 
					
						
							|  |  |  |             case 'diagonal': | 
					
						
							|  |  |  |             case 'horizontal': | 
					
						
							|  |  |  |             case 'inside': | 
					
						
							|  |  |  |             case 'left': | 
					
						
							|  |  |  |             case 'outline': | 
					
						
							|  |  |  |             case 'right': | 
					
						
							|  |  |  |             case 'top': | 
					
						
							|  |  |  |             case 'vertical': | 
					
						
							|  |  |  |                 $key = strtolower('vertical'); | 
					
						
							|  |  |  |                 break; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $this->parent->getStyleArray(array($key => $array)); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Apply styles from array | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * <code> | 
					
						
							|  |  |  |      * $objPHPExcel->getActiveSheet()->getStyle('B2')->getBorders()->getTop()->applyFromArray( | 
					
						
							|  |  |  |      *        array( | 
					
						
							|  |  |  |      *            'style' => PHPExcel_Style_Border::BORDER_DASHDOT, | 
					
						
							|  |  |  |      *            'color' => array( | 
					
						
							|  |  |  |      *                'rgb' => '808080' | 
					
						
							|  |  |  |      *            ) | 
					
						
							|  |  |  |      *        ) | 
					
						
							|  |  |  |      * ); | 
					
						
							|  |  |  |      * </code> | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param    array    $pStyles    Array containing style information | 
					
						
							|  |  |  |      * @throws    PHPExcel_Exception | 
					
						
							|  |  |  |      * @return PHPExcel_Style_Border | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function applyFromArray($pStyles = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (is_array($pStyles)) { | 
					
						
							|  |  |  |             if ($this->isSupervisor) { | 
					
						
							|  |  |  |                 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); | 
					
						
							|  |  |  |             } else { | 
					
						
							|  |  |  |                 if (isset($pStyles['style'])) { | 
					
						
							|  |  |  |                     $this->setBorderStyle($pStyles['style']); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |                 if (isset($pStyles['color'])) { | 
					
						
							|  |  |  |                     $this->getColor()->applyFromArray($pStyles['color']); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             throw new PHPExcel_Exception("Invalid style array passed."); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-12-09 12:07:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get Border style | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getBorderStyle() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($this->isSupervisor) { | 
					
						
							|  |  |  |             return $this->getSharedComponent()->getBorderStyle(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $this->borderStyle; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-12-09 12:07:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Set Border style | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string|boolean    $pValue | 
					
						
							|  |  |  |      *                            When passing a boolean, FALSE equates PHPExcel_Style_Border::BORDER_NONE | 
					
						
							|  |  |  |      *                                and TRUE to PHPExcel_Style_Border::BORDER_MEDIUM | 
					
						
							|  |  |  |      * @return PHPExcel_Style_Border | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setBorderStyle($pValue = PHPExcel_Style_Border::BORDER_NONE) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2010-12-09 12:07:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |         if (empty($pValue)) { | 
					
						
							|  |  |  |             $pValue = PHPExcel_Style_Border::BORDER_NONE; | 
					
						
							|  |  |  |         } elseif (is_bool($pValue) && $pValue) { | 
					
						
							|  |  |  |             $pValue = PHPExcel_Style_Border::BORDER_MEDIUM; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if ($this->isSupervisor) { | 
					
						
							|  |  |  |             $styleArray = $this->getStyleArray(array('style' => $pValue)); | 
					
						
							|  |  |  |             $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $this->borderStyle = $pValue; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-12-09 12:07:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get Border Color | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return PHPExcel_Style_Color | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getColor() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->color; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Set Border Color | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param    PHPExcel_Style_Color $pValue | 
					
						
							|  |  |  |      * @throws    PHPExcel_Exception | 
					
						
							|  |  |  |      * @return PHPExcel_Style_Border | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setColor(PHPExcel_Style_Color $pValue = null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // make sure parameter is a real color and not a supervisor
 | 
					
						
							|  |  |  |         $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue; | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |         if ($this->isSupervisor) { | 
					
						
							|  |  |  |             $styleArray = $this->getColor()->getStyleArray(array('argb' => $color->getARGB())); | 
					
						
							|  |  |  |             $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $this->color = $color; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $this; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-04 22:36:20 +00:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get hash code | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return string    Hash code | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getHashCode() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if ($this->isSupervisor) { | 
					
						
							|  |  |  |             return $this->getSharedComponent()->getHashCode(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return md5( | 
					
						
							|  |  |  |             $this->borderStyle . | 
					
						
							|  |  |  |             $this->color->getHashCode() . | 
					
						
							|  |  |  |             __CLASS__ | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-08-26 19:14:53 +00:00
										 |  |  | } |