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
This commit is contained in:
Mark Baker 2012-01-02 00:12:09 +00:00
parent cb6839b24a
commit 438bc9da60
2 changed files with 148 additions and 154 deletions

View File

@ -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
*
* <code>
* $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') );
* </code>
*
* @param array $pStyles Array containing style information
* @throws Exception
* @return PHPExcel_Style_Color
*/
/**
* Apply styles from array
*
* <code>
* $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') );
* </code>
*
* @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.

View File

@ -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