PHPExcel_Style
[ class tree: PHPExcel_Style ] [ index: PHPExcel_Style ] [ all elements ]

Source for file Color.php

Documentation is available at Color.php

  1. <?php
  2. /**
  3.  * PHPExcel
  4.  *
  5.  * Copyright (c) 2006 - 2010 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 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
  24.  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25.  * @version    1.7.2, 2010-01-11
  26.  */
  27.  
  28.  
  29. /** PHPExcel root directory */
  30. if (!defined('PHPEXCEL_ROOT')) {
  31.     /**
  32.      * @ignore
  33.      */
  34.     define('PHPEXCEL_ROOT'dirname(__FILE__'/../../');
  35. }
  36.  
  37. /** PHPExcel_IComparable */
  38. require_once PHPEXCEL_ROOT 'PHPExcel/IComparable.php';
  39.  
  40.  
  41. /**
  42.  * PHPExcel_Style_Color
  43.  *
  44.  * @category   PHPExcel
  45.  * @package    PHPExcel_Style
  46.  * @copyright  Copyright (c) 2006 - 2010 PHPExcel (http://www.codeplex.com/PHPExcel)
  47.  */
  48. class PHPExcel_Style_Color implements PHPExcel_IComparable
  49. {
  50.     /* Colors */
  51.     const COLOR_BLACK                        'FF000000';
  52.     const COLOR_WHITE                        'FFFFFFFF';
  53.     const COLOR_RED                            'FFFF0000';
  54.     const COLOR_DARKRED                        'FF800000';
  55.     const COLOR_BLUE                        'FF0000FF';
  56.     const COLOR_DARKBLUE                    'FF000080';
  57.     const COLOR_GREEN                        'FF00FF00';
  58.     const COLOR_DARKGREEN                    'FF008000';
  59.     const COLOR_YELLOW                        'FFFFFF00';
  60.     const COLOR_DARKYELLOW                    'FF808000';
  61.     
  62.     /**
  63.      * Indexed colors array
  64.      *
  65.      * @var array 
  66.      */
  67.     private static $_indexedColors;
  68.     
  69.     /**
  70.      * ARGB - Alpha RGB
  71.      *
  72.      * @var string 
  73.      */
  74.     private $_argb;
  75.  
  76.     /**
  77.      * Supervisor?
  78.      *
  79.      * @var boolean 
  80.      */
  81.     private $_isSupervisor;
  82.  
  83.     /**
  84.      * Parent. Only used for supervisor
  85.      *
  86.      * @var mixed 
  87.      */
  88.     private $_parent;
  89.  
  90.     /**
  91.      * Parent property name
  92.      *
  93.      * @var string 
  94.      */
  95.     private $_parentPropertyName;
  96.  
  97.     /**
  98.      * Create a new PHPExcel_Style_Color
  99.      * 
  100.      * @param string $pARGB 
  101.      */
  102.     public function __construct($pARGB PHPExcel_Style_Color::COLOR_BLACK$isSupervisor false)
  103.     {
  104.         // Supervisor?
  105.         $this->_isSupervisor = $isSupervisor;
  106.  
  107.         // Initialise values
  108.         $this->_argb            = $pARGB;
  109.     }
  110.     
  111.     /**
  112.      * Bind parent. Only used for supervisor
  113.      *
  114.      * @param mixed $parent 
  115.      * @param string $parentPropertyName 
  116.      * @return PHPExcel_Style_Color 
  117.      */
  118.     public function bindParent($parent$parentPropertyName)
  119.     {
  120.         $this->_parent = $parent;
  121.         $this->_parentPropertyName = $parentPropertyName;
  122.         return $this;
  123.     }
  124.  
  125.     /**
  126.      * Is this a supervisor or a real style component?
  127.      *
  128.      * @return boolean 
  129.      */
  130.     public function getIsSupervisor()
  131.     {
  132.         return $this->_isSupervisor;
  133.     }
  134.  
  135.     /**
  136.      * Get the shared style component for the currently active cell in currently active sheet.
  137.      * Only used for style supervisor
  138.      *
  139.      * @return PHPExcel_Style_Color 
  140.      */
  141.     public function getSharedComponent()
  142.     {
  143.         switch ($this->_parentPropertyName{
  144.         case '_endColor':
  145.             return $this->_parent->getSharedComponent()->getEndColor();
  146.             break;
  147.  
  148.         case '_color':
  149.             return $this->_parent->getSharedComponent()->getColor();
  150.             break;
  151.  
  152.         case '_startColor':
  153.             return $this->_parent->getSharedComponent()->getStartColor();
  154.             break;
  155.         }
  156.     }
  157.  
  158.     /**
  159.      * Get the currently active sheet. Only used for supervisor
  160.      *
  161.      * @return PHPExcel_Worksheet 
  162.      */
  163.     public function getActiveSheet()
  164.     {
  165.         return $this->_parent->getActiveSheet();
  166.     }
  167.  
  168.     /**
  169.      * Get the currently active cell coordinate in currently active sheet.
  170.      * Only used for supervisor
  171.      *
  172.      * @return string E.g. 'A1'
  173.      */
  174.     public function getSelectedCells()
  175.     {
  176.         return $this->getActiveSheet()->getSelectedCells();
  177.     }
  178.  
  179.     /**
  180.      * Get the currently active cell coordinate in currently active sheet.
  181.      * Only used for supervisor
  182.      *
  183.      * @return string E.g. 'A1'
  184.      */
  185.     public function getActiveCell()
  186.     {
  187.         return $this->getActiveSheet()->getActiveCell();
  188.     }
  189.  
  190.     /**
  191.      * Build style array from subcomponents
  192.      *
  193.      * @param array $array 
  194.      * @return array 
  195.      */
  196.     public function getStyleArray($array)
  197.     {
  198.         switch ($this->_parentPropertyName{
  199.         case '_endColor':
  200.             $key 'endcolor';
  201.             break;
  202.  
  203.         case '_color':
  204.             $key 'color';
  205.             break;
  206.  
  207.         case '_startColor':
  208.             $key 'startcolor';
  209.             break;
  210.  
  211.         }
  212.         return $this->_parent->getStyleArray(array($key => $array));
  213.     }
  214.  
  215.     /**
  216.      * Apply styles from array
  217.      * 
  218.      * <code>
  219.      * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') );
  220.      * </code>
  221.      * 
  222.      * @param    array    $pStyles    Array containing style information
  223.      * @throws    Exception
  224.      * @return PHPExcel_Style_Color 
  225.      */
  226.     public function applyFromArray($pStyles null{
  227.         if (is_array($pStyles)) {
  228.             if ($this->_isSupervisor{
  229.                 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
  230.             else {
  231.                 if (array_key_exists('rgb'$pStyles)) {
  232.                     $this->setRGB($pStyles['rgb']);
  233.                 }
  234.                 if (array_key_exists('argb'$pStyles)) {
  235.                     $this->setARGB($pStyles['argb']);
  236.                 }
  237.             }
  238.         else {
  239.             throw new Exception("Invalid style array passed.");
  240.         }
  241.         return $this;
  242.     }
  243.     
  244.     /**
  245.      * Get ARGB
  246.      *
  247.      * @return string 
  248.      */
  249.     public function getARGB({
  250.         if ($this->_isSupervisor{
  251.             return $this->getSharedComponent()->getARGB();
  252.         }
  253.         return $this->_argb;
  254.     }
  255.     
  256.     /**
  257.      * Set ARGB
  258.      *
  259.      * @param string $pValue 
  260.      * @return PHPExcel_Style_Color 
  261.      */
  262.     public function setARGB($pValue PHPExcel_Style_Color::COLOR_BLACK{
  263.         if ($pValue == ''{
  264.             $pValue PHPExcel_Style_Color::COLOR_BLACK;
  265.         }
  266.         if ($this->_isSupervisor{
  267.             $styleArray $this->getStyleArray(array('argb' => $pValue));
  268.             $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
  269.         else {
  270.             $this->_argb = $pValue;
  271.         }
  272.         return $this;
  273.     }
  274.     
  275.     /**
  276.      * Get RGB
  277.      *
  278.      * @return string 
  279.      */
  280.     public function getRGB({
  281.         if ($this->_isSupervisor{
  282.             return $this->getSharedComponent()->getRGB();
  283.         }
  284.         return substr($this->_argb2);
  285.     }
  286.     
  287.     /**
  288.      * Set RGB
  289.      *
  290.      * @param string $pValue 
  291.      * @return PHPExcel_Style_Color 
  292.      */
  293.     public function setRGB($pValue '000000'{
  294.         if ($pValue == ''{
  295.             $pValue '000000';
  296.         }
  297.         if ($this->_isSupervisor{
  298.             $styleArray $this->getStyleArray(array('argb' => 'FF' $pValue));
  299.             $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
  300.         else {
  301.             $this->_argb = 'FF' $pValue;
  302.         }
  303.         return $this;
  304.     }
  305.     
  306.     /**
  307.      * Get indexed color
  308.      * 
  309.      * @param    int        $pIndex 
  310.      * @return    PHPExcel_Style_Color 
  311.      */
  312.     public static function indexedColor($pIndex{
  313.         // Clean parameter
  314.         $pIndex intval($pIndex);
  315.         
  316.         // Indexed colors
  317.         if (is_null(self::$_indexedColors)) {
  318.             self::$_indexedColors array();
  319.             self::$_indexedColors['00000000';
  320.             self::$_indexedColors['00FFFFFF';
  321.             self::$_indexedColors['00FF0000';
  322.             self::$_indexedColors['0000FF00';
  323.             self::$_indexedColors['000000FF';
  324.             self::$_indexedColors['00FFFF00';
  325.             self::$_indexedColors['00FF00FF';
  326.             self::$_indexedColors['0000FFFF';
  327.             self::$_indexedColors['00000000';
  328.             self::$_indexedColors['00FFFFFF';
  329.             self::$_indexedColors['00FF0000';
  330.             self::$_indexedColors['0000FF00';
  331.             self::$_indexedColors['000000FF';
  332.             self::$_indexedColors['00FFFF00';
  333.             self::$_indexedColors['00FF00FF';
  334.             self::$_indexedColors['0000FFFF';
  335.             self::$_indexedColors['00800000';
  336.             self::$_indexedColors['00008000';
  337.             self::$_indexedColors['00000080';
  338.             self::$_indexedColors['00808000';
  339.             self::$_indexedColors['00800080';
  340.             self::$_indexedColors['00008080';
  341.             self::$_indexedColors['00C0C0C0';
  342.             self::$_indexedColors['00808080';
  343.             self::$_indexedColors['009999FF';
  344.             self::$_indexedColors['00993366';
  345.             self::$_indexedColors['00FFFFCC';
  346.             self::$_indexedColors['00CCFFFF';
  347.             self::$_indexedColors['00660066';
  348.             self::$_indexedColors['00FF8080';
  349.             self::$_indexedColors['000066CC';
  350.             self::$_indexedColors['00CCCCFF';
  351.             self::$_indexedColors['00000080';
  352.             self::$_indexedColors['00FF00FF';
  353.             self::$_indexedColors['00FFFF00';
  354.             self::$_indexedColors['0000FFFF';
  355.             self::$_indexedColors['00800080';
  356.             self::$_indexedColors['00800000';
  357.             self::$_indexedColors['00008080';
  358.             self::$_indexedColors['000000FF';
  359.             self::$_indexedColors['0000CCFF';
  360.             self::$_indexedColors['00CCFFFF';
  361.             self::$_indexedColors['00CCFFCC';
  362.             self::$_indexedColors['00FFFF99';
  363.             self::$_indexedColors['0099CCFF';
  364.             self::$_indexedColors['00FF99CC';
  365.             self::$_indexedColors['00CC99FF';
  366.             self::$_indexedColors['00FFCC99';
  367.             self::$_indexedColors['003366FF';
  368.             self::$_indexedColors['0033CCCC';
  369.             self::$_indexedColors['0099CC00';
  370.             self::$_indexedColors['00FFCC00';
  371.             self::$_indexedColors['00FF9900';
  372.             self::$_indexedColors['00FF6600';
  373.             self::$_indexedColors['00666699';
  374.             self::$_indexedColors['00969696';
  375.             self::$_indexedColors['00003366';
  376.             self::$_indexedColors['00339966';
  377.             self::$_indexedColors['00003300';
  378.             self::$_indexedColors['00333300';
  379.             self::$_indexedColors['00993300';
  380.             self::$_indexedColors['00993366';
  381.             self::$_indexedColors['00333399';
  382.             self::$_indexedColors['00333333';
  383.         }
  384.         
  385.         if (array_key_exists($pIndexself::$_indexedColors)) {
  386.             return new PHPExcel_Style_Color(self::$_indexedColors[$pIndex]);
  387.         }
  388.         
  389.         return new PHPExcel_Style_Color();
  390.     }
  391.  
  392.     /**
  393.      * Get hash code
  394.      *
  395.      * @return string    Hash code
  396.      */    
  397.     public function getHashCode({
  398.         if ($this->_isSupervisor{
  399.             return $this->getSharedComponent()->getHashCode();
  400.         }
  401.         return md5(
  402.               $this->_argb
  403.             . __CLASS__
  404.         );
  405.     }
  406.     
  407.     /**
  408.      * Implement PHP __clone to create a deep clone, not just a shallow copy.
  409.      */
  410.     public function __clone({
  411.         $vars get_object_vars($this);
  412.         foreach ($vars as $key => $value{
  413.             if (is_object($value)) {
  414.                 $this->$key clone $value;
  415.             else {
  416.                 $this->$key $value;
  417.             }
  418.         }
  419.     }
  420. }

Documentation generated on Mon, 11 Jan 2010 08:07:15 +0100 by phpDocumentor 1.4.1