Rev 2388 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** PHPExcel** Copyright (c) 2006 - 2013 PHPExcel** 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* @package PHPExcel_Style* @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL* @version ##VERSION##, ##DATE##*//*** PHPExcel_Style_Alignment** @category PHPExcel* @package PHPExcel_Style* @copyright Copyright (c) 2006 - 2013 PHPExcel (http://www.codeplex.com/PHPExcel)*/class PHPExcel_Style_Alignment extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable{/* Horizontal alignment styles */const HORIZONTAL_GENERAL = 'general';const HORIZONTAL_LEFT = 'left';const HORIZONTAL_RIGHT = 'right';const HORIZONTAL_CENTER = 'center';const HORIZONTAL_CENTER_CONTINUOUS = 'centerContinuous';const HORIZONTAL_JUSTIFY = 'justify';/* Vertical alignment styles */const VERTICAL_BOTTOM = 'bottom';const VERTICAL_TOP = 'top';const VERTICAL_CENTER = 'center';const VERTICAL_JUSTIFY = 'justify';/*** Horizontal** @var string*/protected $_horizontal = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;/*** Vertical** @var string*/protected $_vertical = PHPExcel_Style_Alignment::VERTICAL_BOTTOM;/*** Text rotation** @var int*/protected $_textRotation = 0;/*** Wrap text** @var boolean*/protected $_wrapText = FALSE;/*** Shrink to fit** @var boolean*/protected $_shrinkToFit = FALSE;/*** Indent - only possible with horizontal alignment left and right** @var int*/protected $_indent = 0;/*** Create a new PHPExcel_Style_Alignment** @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);if ($isConditional) {$this->_horizontal = NULL;$this->_vertical = NULL;$this->_textRotation = NULL;}}/*** Get the shared style component for the currently active cell in currently active sheet.* Only used for style supervisor** @return PHPExcel_Style_Alignment*/public function getSharedComponent(){return $this->_parent->getSharedComponent()->getAlignment();}/*** Build style array from subcomponents** @param array $array* @return array*/public function getStyleArray($array){return array('alignment' => $array);}/*** Apply styles from array** <code>* $objPHPExcel->getActiveSheet()->getStyle('B2')->getAlignment()->applyFromArray(* array(* 'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,* 'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,* 'rotation' => 0,* 'wrap' => TRUE* )* );* </code>** @param array $pStyles Array containing style information* @throws PHPExcel_Exception* @return PHPExcel_Style_Alignment*/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['horizontal'])) {$this->setHorizontal($pStyles['horizontal']);}if (isset($pStyles['vertical'])) {$this->setVertical($pStyles['vertical']);}if (isset($pStyles['rotation'])) {$this->setTextRotation($pStyles['rotation']);}if (isset($pStyles['wrap'])) {$this->setWrapText($pStyles['wrap']);}if (isset($pStyles['shrinkToFit'])) {$this->setShrinkToFit($pStyles['shrinkToFit']);}if (isset($pStyles['indent'])) {$this->setIndent($pStyles['indent']);}}} else {throw new PHPExcel_Exception("Invalid style array passed.");}return $this;}/*** Get Horizontal** @return string*/public function getHorizontal() {if ($this->_isSupervisor) {return $this->getSharedComponent()->getHorizontal();}return $this->_horizontal;}/*** Set Horizontal** @param string $pValue* @return PHPExcel_Style_Alignment*/public function setHorizontal($pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL) {if ($pValue == '') {$pValue = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;}if ($this->_isSupervisor) {$styleArray = $this->getStyleArray(array('horizontal' => $pValue));$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);}else {$this->_horizontal = $pValue;}return $this;}/*** Get Vertical** @return string*/public function getVertical() {if ($this->_isSupervisor) {return $this->getSharedComponent()->getVertical();}return $this->_vertical;}/*** Set Vertical** @param string $pValue* @return PHPExcel_Style_Alignment*/public function setVertical($pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM) {if ($pValue == '') {$pValue = PHPExcel_Style_Alignment::VERTICAL_BOTTOM;}if ($this->_isSupervisor) {$styleArray = $this->getStyleArray(array('vertical' => $pValue));$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);} else {$this->_vertical = $pValue;}return $this;}/*** Get TextRotation** @return int*/public function getTextRotation() {if ($this->_isSupervisor) {return $this->getSharedComponent()->getTextRotation();}return $this->_textRotation;}/*** Set TextRotation** @param int $pValue* @throws PHPExcel_Exception* @return PHPExcel_Style_Alignment*/public function setTextRotation($pValue = 0) {// Excel2007 value 255 => PHPExcel value -165if ($pValue == 255) {$pValue = -165;}// Set rotationif ( ($pValue >= -90 && $pValue <= 90) || $pValue == -165 ) {if ($this->_isSupervisor) {$styleArray = $this->getStyleArray(array('rotation' => $pValue));$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);} else {$this->_textRotation = $pValue;}} else {throw new PHPExcel_Exception("Text rotation should be a value between -90 and 90.");}return $this;}/*** Get Wrap Text** @return boolean*/public function getWrapText() {if ($this->_isSupervisor) {return $this->getSharedComponent()->getWrapText();}return $this->_wrapText;}/*** Set Wrap Text** @param boolean $pValue* @return PHPExcel_Style_Alignment*/public function setWrapText($pValue = FALSE) {if ($pValue == '') {$pValue = FALSE;}if ($this->_isSupervisor) {$styleArray = $this->getStyleArray(array('wrap' => $pValue));$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);} else {$this->_wrapText = $pValue;}return $this;}/*** Get Shrink to fit** @return boolean*/public function getShrinkToFit() {if ($this->_isSupervisor) {return $this->getSharedComponent()->getShrinkToFit();}return $this->_shrinkToFit;}/*** Set Shrink to fit** @param boolean $pValue* @return PHPExcel_Style_Alignment*/public function setShrinkToFit($pValue = FALSE) {if ($pValue == '') {$pValue = FALSE;}if ($this->_isSupervisor) {$styleArray = $this->getStyleArray(array('shrinkToFit' => $pValue));$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);} else {$this->_shrinkToFit = $pValue;}return $this;}/*** Get indent** @return int*/public function getIndent() {if ($this->_isSupervisor) {return $this->getSharedComponent()->getIndent();}return $this->_indent;}/*** Set indent** @param int $pValue* @return PHPExcel_Style_Alignment*/public function setIndent($pValue = 0) {if ($pValue > 0) {if ($this->getHorizontal() != self::HORIZONTAL_GENERAL &&$this->getHorizontal() != self::HORIZONTAL_LEFT &&$this->getHorizontal() != self::HORIZONTAL_RIGHT) {$pValue = 0; // indent not supported}}if ($this->_isSupervisor) {$styleArray = $this->getStyleArray(array('indent' => $pValue));$this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);} else {$this->_indent = $pValue;}return $this;}/*** Get hash code** @return string Hash code*/public function getHashCode() {if ($this->_isSupervisor) {return $this->getSharedComponent()->getHashCode();}return md5($this->_horizontal. $this->_vertical. $this->_textRotation. ($this->_wrapText ? 't' : 'f'). ($this->_shrinkToFit ? 't' : 'f'). $this->_indent. __CLASS__);}}