From 438bc9da60a6c0429d7e0515338e8b11154ad70e Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Mon, 2 Jan 2012 00:12:09 +0000 Subject: [PATCH] Bugfix: Work item 17166 - Indexed colors do not refer to Excel's indexed colors? git-svn-id: https://phpexcel.svn.codeplex.com/svn/trunk@84644 2327b42d-5241-43d6-9e2a-de5ac946f064 --- Classes/PHPExcel/Style/Color.php | 301 +++++++++++++++---------------- changelog.txt | 1 + 2 files changed, 148 insertions(+), 154 deletions(-) diff --git a/Classes/PHPExcel/Style/Color.php b/Classes/PHPExcel/Style/Color.php index e7232517..39c2e398 100644 --- a/Classes/PHPExcel/Style/Color.php +++ b/Classes/PHPExcel/Style/Color.php @@ -19,10 +19,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * @category PHPExcel - * @package PHPExcel_Style - * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL - * @version ##VERSION##, ##DATE## + * @package PHPExcel_Style + * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) + * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL + * @version ##VERSION##, ##DATE## */ @@ -30,7 +30,7 @@ * PHPExcel_Style_Color * * @category PHPExcel - * @package PHPExcel_Style + * @package PHPExcel_Style * @copyright Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel) */ class PHPExcel_Style_Color implements PHPExcel_IComparable @@ -82,19 +82,19 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable */ private $_parentPropertyName; - /** - * Create a new PHPExcel_Style_Color - * - * @param string $pARGB - */ - public function __construct($pARGB = PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor = false) - { - // Supervisor? + /** + * Create a new PHPExcel_Style_Color + * + * @param string $pARGB + */ + public function __construct($pARGB = PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor = false) + { + // Supervisor? $this->_isSupervisor = $isSupervisor; - // Initialise values - $this->_argb = $pARGB; - } + // Initialise values + $this->_argb = $pARGB; + } /** * Bind parent. Only used for supervisor @@ -200,17 +200,17 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable return $this->_parent->getStyleArray(array($key => $array)); } - /** - * Apply styles from array - * - * - * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') ); - * - * - * @param array $pStyles Array containing style information - * @throws Exception - * @return PHPExcel_Style_Color - */ + /** + * Apply styles from array + * + * + * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') ); + * + * + * @param array $pStyles Array containing style information + * @throws Exception + * @return PHPExcel_Style_Color + */ public function applyFromArray($pStyles = null) { if (is_array($pStyles)) { if ($this->_isSupervisor) { @@ -229,28 +229,28 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable return $this; } - /** - * Get ARGB - * - * @return string - */ - public function getARGB() { + /** + * Get ARGB + * + * @return string + */ + public function getARGB() { if ($this->_isSupervisor) { return $this->getSharedComponent()->getARGB(); } - return $this->_argb; - } + return $this->_argb; + } - /** - * Set ARGB - * - * @param string $pValue - * @return PHPExcel_Style_Color - */ - public function setARGB($pValue = PHPExcel_Style_Color::COLOR_BLACK) { - if ($pValue == '') { - $pValue = PHPExcel_Style_Color::COLOR_BLACK; - } + /** + * Set ARGB + * + * @param string $pValue + * @return PHPExcel_Style_Color + */ + public function setARGB($pValue = PHPExcel_Style_Color::COLOR_BLACK) { + if ($pValue == '') { + $pValue = PHPExcel_Style_Color::COLOR_BLACK; + } if ($this->_isSupervisor) { $styleArray = $this->getStyleArray(array('argb' => $pValue)); $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); @@ -258,30 +258,30 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable $this->_argb = $pValue; } return $this; - } + } - /** - * Get RGB - * - * @return string - */ - public function getRGB() { + /** + * Get RGB + * + * @return string + */ + public function getRGB() { if ($this->_isSupervisor) { return $this->getSharedComponent()->getRGB(); } - return substr($this->_argb, 2); - } + return substr($this->_argb, 2); + } - /** - * Set RGB - * - * @param string $pValue - * @return PHPExcel_Style_Color - */ - public function setRGB($pValue = '000000') { - if ($pValue == '') { - $pValue = '000000'; - } + /** + * Set RGB + * + * @param string $pValue + * @return PHPExcel_Style_Color + */ + public function setRGB($pValue = '000000') { + if ($pValue == '') { + $pValue = '000000'; + } if ($this->_isSupervisor) { $styleArray = $this->getStyleArray(array('argb' => 'FF' . $pValue)); $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); @@ -289,7 +289,7 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable $this->_argb = 'FF' . $pValue; } return $this; - } + } private static function _getColourComponent($RGB,$offset,$hex=true) { $colour = substr($RGB,$offset,2); @@ -323,12 +323,12 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable } /** - * Adjust the brightness of a color - * - * @param string $hex The colour as an RGB value (e.g. FF00CCCC or CCDDEE - * @param float $adjustPercentage The percentage by which to adjust the colour as a float from -1 to 1 - * @return string The adjusted colour as an RGB value (e.g. FF00CCCC or CCDDEE - */ + * Adjust the brightness of a color + * + * @param string $hex The colour as an RGB value (e.g. FF00CCCC or CCDDEE + * @param float $adjustPercentage The percentage by which to adjust the colour as a float from -1 to 1 + * @return string The adjusted colour as an RGB value (e.g. FF00CCCC or CCDDEE + */ public static function changeBrightness($hex, $adjustPercentage) { $red = self::getRed($hex,false); $green = self::getGreen($hex,false); @@ -357,93 +357,86 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable } /** - * Get indexed color - * - * @param int $pIndex - * @return PHPExcel_Style_Color - */ - public static function indexedColor($pIndex, $background=false) { - // Clean parameter + * Get indexed color + * + * @param int $pIndex + * @return PHPExcel_Style_Color + */ + public static function indexedColor($pIndex, $background=false) { + // Clean parameter $pIndex = intval($pIndex); - // Indexed colors - if (is_null(self::$_indexedColors)) { - self::$_indexedColors = array(); - self::$_indexedColors[] = '00000000'; - self::$_indexedColors[] = '00FFFFFF'; - self::$_indexedColors[] = '00FF0000'; - self::$_indexedColors[] = '0000FF00'; - self::$_indexedColors[] = '000000FF'; - self::$_indexedColors[] = '00FFFF00'; - self::$_indexedColors[] = '00FF00FF'; - self::$_indexedColors[] = '0000FFFF'; - self::$_indexedColors[] = '00000000'; - self::$_indexedColors[] = '00FFFFFF'; - self::$_indexedColors[] = '00FF0000'; - self::$_indexedColors[] = '0000FF00'; - self::$_indexedColors[] = '000000FF'; - self::$_indexedColors[] = '00FFFF00'; - self::$_indexedColors[] = '00FF00FF'; - self::$_indexedColors[] = '0000FFFF'; - self::$_indexedColors[] = '00800000'; - self::$_indexedColors[] = '00008000'; - self::$_indexedColors[] = '00000080'; - self::$_indexedColors[] = '00808000'; - self::$_indexedColors[] = '00800080'; - self::$_indexedColors[] = '00008080'; - self::$_indexedColors[] = '00C0C0C0'; - self::$_indexedColors[] = '00808080'; - self::$_indexedColors[] = '009999FF'; - self::$_indexedColors[] = '00993366'; - self::$_indexedColors[] = '00FFFFCC'; - self::$_indexedColors[] = '00CCFFFF'; - self::$_indexedColors[] = '00660066'; - self::$_indexedColors[] = '00FF8080'; - self::$_indexedColors[] = '000066CC'; - self::$_indexedColors[] = '00CCCCFF'; - self::$_indexedColors[] = '00000080'; - self::$_indexedColors[] = '00FF00FF'; - self::$_indexedColors[] = '00FFFF00'; - self::$_indexedColors[] = '0000FFFF'; - self::$_indexedColors[] = '00800080'; - self::$_indexedColors[] = '00800000'; - self::$_indexedColors[] = '00008080'; - self::$_indexedColors[] = '000000FF'; - self::$_indexedColors[] = '0000CCFF'; - self::$_indexedColors[] = '00CCFFFF'; - self::$_indexedColors[] = '00CCFFCC'; - self::$_indexedColors[] = '00FFFF99'; - self::$_indexedColors[] = '0099CCFF'; - self::$_indexedColors[] = '00FF99CC'; - self::$_indexedColors[] = '00CC99FF'; - self::$_indexedColors[] = '00FFCC99'; - self::$_indexedColors[] = '003366FF'; - self::$_indexedColors[] = '0033CCCC'; - self::$_indexedColors[] = '0099CC00'; - self::$_indexedColors[] = '00FFCC00'; - self::$_indexedColors[] = '00FF9900'; - self::$_indexedColors[] = '00FF6600'; - self::$_indexedColors[] = '00666699'; - self::$_indexedColors[] = '00969696'; - self::$_indexedColors[] = '00003366'; - self::$_indexedColors[] = '00339966'; - self::$_indexedColors[] = '00003300'; - self::$_indexedColors[] = '00333300'; - self::$_indexedColors[] = '00993300'; - self::$_indexedColors[] = '00993366'; - self::$_indexedColors[] = '00333399'; - self::$_indexedColors[] = '00333333'; - } + // Indexed colors + if (is_null(self::$_indexedColors)) { + self::$_indexedColors = array( + '00000000', // System Colour #1 - Black + '00FFFFFF', // System Colour #2 - White + '00FF0000', // System Colour #3 - Red + '0000FF00', // System Colour #4 - Green + '000000FF', // System Colour #5 - Blue + '00FFFF00', // System Colour #6 - Yellow + '00FF00FF', // System Colour #7- Magenta + '0000FFFF', // System Colour #8- Cyan + '00800000', // Standard Colour #9 + '00008000', // Standard Colour #10 + '00000080', // Standard Colour #11 + '00808000', // Standard Colour #12 + '00800080', // Standard Colour #13 + '00008080', // Standard Colour #14 + '00C0C0C0', // Standard Colour #15 + '00808080', // Standard Colour #16 + '009999FF', // Chart Fill Colour #17 + '00993366', // Chart Fill Colour #18 + '00FFFFCC', // Chart Fill Colour #19 + '00CCFFFF', // Chart Fill Colour #20 + '00660066', // Chart Fill Colour #21 + '00FF8080', // Chart Fill Colour #22 + '000066CC', // Chart Fill Colour #23 + '00CCCCFF', // Chart Fill Colour #24 + '00000080', // Chart Line Colour #25 + '00FF00FF', // Chart Line Colour #26 + '00FFFF00', // Chart Line Colour #27 + '0000FFFF', // Chart Line Colour #28 + '00800080', // Chart Line Colour #29 + '00800000', // Chart Line Colour #30 + '00008080', // Chart Line Colour #31 + '000000FF', // Chart Line Colour #32 + '0000CCFF', // Standard Colour #33 + '00CCFFFF', // Standard Colour #34 + '00CCFFCC', // Standard Colour #35 + '00FFFF99', // Standard Colour #36 + '0099CCFF', // Standard Colour #37 + '00FF99CC', // Standard Colour #38 + '00CC99FF', // Standard Colour #39 + '00FFCC99', // Standard Colour #40 + '003366FF', // Standard Colour #41 + '0033CCCC', // Standard Colour #42 + '0099CC00', // Standard Colour #43 + '00FFCC00', // Standard Colour #44 + '00FF9900', // Standard Colour #45 + '00FF6600', // Standard Colour #46 + '00666699', // Standard Colour #47 + '00969696', // Standard Colour #48 + '00003366', // Standard Colour #49 + '00339966', // Standard Colour #50 + '00003300', // Standard Colour #51 + '00333300', // Standard Colour #52 + '00993300', // Standard Colour #53 + '00993366', // Standard Colour #54 + '00333399', // Standard Colour #55 + '00333333' // Standard Colour #56 + ); + } if (array_key_exists($pIndex, self::$_indexedColors)) { return new PHPExcel_Style_Color(self::$_indexedColors[$pIndex]); } if ($background) { - return new PHPExcel_Style_Color('FFFFFFFF'); + return new PHPExcel_Style_Color('FFFFFFFF'); } - return new PHPExcel_Style_Color('FF000000'); - } + return new PHPExcel_Style_Color('FF000000'); + } /** * Get hash code @@ -454,11 +447,11 @@ class PHPExcel_Style_Color implements PHPExcel_IComparable if ($this->_isSupervisor) { return $this->getSharedComponent()->getHashCode(); } - return md5( - $this->_argb - . __CLASS__ - ); - } + return md5( + $this->_argb + . __CLASS__ + ); + } /** * Implement PHP __clone to create a deep clone, not just a shallow copy. diff --git a/changelog.txt b/changelog.txt index adab419a..4cc852ff 100644 --- a/changelog.txt +++ b/changelog.txt @@ -50,6 +50,7 @@ Fixed in SVN: - Bugfix: (MBaker) Work item 16960 - Previous calculation engine error conditions trigger cyclic reference errors - Bugfix: (mkopinsky) Work item 16266 - PHPExcel_Style::applyFromArray() returns null rather than style object in advanced mode - Bugfix: (fauvel) Work item 16958 - Cell::getFormattedValue returns RichText object instead of string +- Bugfix: (MBaker) Work item 17166 - Indexed colors do not refer to Excel's indexed colors? - General: (MBaker) Work item 15405 - Two easy to fix Issues concerning PHPExcel_Token_Stack (l10n/UC) - General: (MBaker) Work item 15461 - Locale file paths not fit for windows - General: (MBaker) Work item 16643 - Add file directory as a cache option for cache_to_discISAM