| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464 | <?php/** * PHPExcel_Style_Alignment * * Copyright (c) 2006 - 2015 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 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel) * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL * @version    ##VERSION##, ##DATE## */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';    const HORIZONTAL_FILL              = 'fill';    const HORIZONTAL_DISTRIBUTED       = 'distributed';        // Excel2007 only    /* Vertical alignment styles */    const VERTICAL_BOTTOM      = 'bottom';    const VERTICAL_TOP         = 'top';    const VERTICAL_CENTER      = 'center';    const VERTICAL_JUSTIFY     = 'justify';    const VERTICAL_DISTRIBUTED = 'distributed';        // Excel2007 only    /* Read order */    const READORDER_CONTEXT = 0;    const READORDER_LTR     = 1;    const READORDER_RTL     = 2;    /**     * Horizontal alignment     *     * @var string     */    protected $horizontal = PHPExcel_Style_Alignment::HORIZONTAL_GENERAL;    /**     * Vertical alignment     *     * @var string     */    protected $vertical = PHPExcel_Style_Alignment::VERTICAL_BOTTOM;    /**     * Text rotation     *     * @var integer     */    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 integer     */    protected $indent = 0;    /**     * Read order     *     * @var integer     */    protected $readorder = 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']);                }                if (isset($pStyles['readorder'])) {                    $this->setReadorder($pStyles['readorder']);                }            }        } 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 -165        if ($pValue == 255) {            $pValue = -165;        }        // Set rotation        if (($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 read order     *     * @return integer     */    public function getReadorder()    {        if ($this->isSupervisor) {            return $this->getSharedComponent()->getReadorder();        }        return $this->readorder;    }    /**     * Set read order     *     * @param int $pValue     * @return PHPExcel_Style_Alignment     */    public function setReadorder($pValue = 0)    {        if ($pValue < 0 || $pValue > 2) {            $pValue = 0;        }        if ($this->isSupervisor) {            $styleArray = $this->getStyleArray(array('readorder' => $pValue));            $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);        } else {            $this->readorder = $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 .            $this->readorder .            __CLASS__        );    }}
 |