[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * PHPExcel 4 * 5 * Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) 24 * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL 25 * @version ##VERSION##, ##DATE## 26 */ 27 28 29 /** 30 * PHPExcel_Style_Color 31 * 32 * @category PHPExcel 33 * @package PHPExcel_Style 34 * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel) 35 */ 36 class PHPExcel_Style_Color extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable 37 { 38 /* Colors */ 39 const COLOR_BLACK = 'FF000000'; 40 const COLOR_WHITE = 'FFFFFFFF'; 41 const COLOR_RED = 'FFFF0000'; 42 const COLOR_DARKRED = 'FF800000'; 43 const COLOR_BLUE = 'FF0000FF'; 44 const COLOR_DARKBLUE = 'FF000080'; 45 const COLOR_GREEN = 'FF00FF00'; 46 const COLOR_DARKGREEN = 'FF008000'; 47 const COLOR_YELLOW = 'FFFFFF00'; 48 const COLOR_DARKYELLOW = 'FF808000'; 49 50 /** 51 * Indexed colors array 52 * 53 * @var array 54 */ 55 protected static $_indexedColors; 56 57 /** 58 * ARGB - Alpha RGB 59 * 60 * @var string 61 */ 62 protected $_argb = NULL; 63 64 /** 65 * Parent property name 66 * 67 * @var string 68 */ 69 protected $_parentPropertyName; 70 71 72 /** 73 * Create a new PHPExcel_Style_Color 74 * 75 * @param string $pARGB ARGB value for the colour 76 * @param boolean $isSupervisor Flag indicating if this is a supervisor or not 77 * Leave this value at default unless you understand exactly what 78 * its ramifications are 79 * @param boolean $isConditional Flag indicating if this is a conditional style or not 80 * Leave this value at default unless you understand exactly what 81 * its ramifications are 82 */ 83 public function __construct($pARGB = PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor = FALSE, $isConditional = FALSE) 84 { 85 // Supervisor? 86 parent::__construct($isSupervisor); 87 88 // Initialise values 89 if (!$isConditional) { 90 $this->_argb = $pARGB; 91 } 92 } 93 94 /** 95 * Bind parent. Only used for supervisor 96 * 97 * @param mixed $parent 98 * @param string $parentPropertyName 99 * @return PHPExcel_Style_Color 100 */ 101 public function bindParent($parent, $parentPropertyName=NULL) 102 { 103 $this->_parent = $parent; 104 $this->_parentPropertyName = $parentPropertyName; 105 return $this; 106 } 107 108 /** 109 * Get the shared style component for the currently active cell in currently active sheet. 110 * Only used for style supervisor 111 * 112 * @return PHPExcel_Style_Color 113 */ 114 public function getSharedComponent() 115 { 116 switch ($this->_parentPropertyName) { 117 case '_endColor': 118 return $this->_parent->getSharedComponent()->getEndColor(); break; 119 case '_color': 120 return $this->_parent->getSharedComponent()->getColor(); break; 121 case '_startColor': 122 return $this->_parent->getSharedComponent()->getStartColor(); break; 123 } 124 } 125 126 /** 127 * Build style array from subcomponents 128 * 129 * @param array $array 130 * @return array 131 */ 132 public function getStyleArray($array) 133 { 134 switch ($this->_parentPropertyName) { 135 case '_endColor': 136 $key = 'endcolor'; 137 break; 138 case '_color': 139 $key = 'color'; 140 break; 141 case '_startColor': 142 $key = 'startcolor'; 143 break; 144 145 } 146 return $this->_parent->getStyleArray(array($key => $array)); 147 } 148 149 /** 150 * Apply styles from array 151 * 152 * <code> 153 * $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->getColor()->applyFromArray( array('rgb' => '808080') ); 154 * </code> 155 * 156 * @param array $pStyles Array containing style information 157 * @throws PHPExcel_Exception 158 * @return PHPExcel_Style_Color 159 */ 160 public function applyFromArray($pStyles = NULL) { 161 if (is_array($pStyles)) { 162 if ($this->_isSupervisor) { 163 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles)); 164 } else { 165 if (array_key_exists('rgb', $pStyles)) { 166 $this->setRGB($pStyles['rgb']); 167 } 168 if (array_key_exists('argb', $pStyles)) { 169 $this->setARGB($pStyles['argb']); 170 } 171 } 172 } else { 173 throw new PHPExcel_Exception("Invalid style array passed."); 174 } 175 return $this; 176 } 177 178 /** 179 * Get ARGB 180 * 181 * @return string 182 */ 183 public function getARGB() { 184 if ($this->_isSupervisor) { 185 return $this->getSharedComponent()->getARGB(); 186 } 187 return $this->_argb; 188 } 189 190 /** 191 * Set ARGB 192 * 193 * @param string $pValue 194 * @return PHPExcel_Style_Color 195 */ 196 public function setARGB($pValue = PHPExcel_Style_Color::COLOR_BLACK) { 197 if ($pValue == '') { 198 $pValue = PHPExcel_Style_Color::COLOR_BLACK; 199 } 200 if ($this->_isSupervisor) { 201 $styleArray = $this->getStyleArray(array('argb' => $pValue)); 202 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); 203 } else { 204 $this->_argb = $pValue; 205 } 206 return $this; 207 } 208 209 /** 210 * Get RGB 211 * 212 * @return string 213 */ 214 public function getRGB() { 215 if ($this->_isSupervisor) { 216 return $this->getSharedComponent()->getRGB(); 217 } 218 return substr($this->_argb, 2); 219 } 220 221 /** 222 * Set RGB 223 * 224 * @param string $pValue RGB value 225 * @return PHPExcel_Style_Color 226 */ 227 public function setRGB($pValue = '000000') { 228 if ($pValue == '') { 229 $pValue = '000000'; 230 } 231 if ($this->_isSupervisor) { 232 $styleArray = $this->getStyleArray(array('argb' => 'FF' . $pValue)); 233 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray); 234 } else { 235 $this->_argb = 'FF' . $pValue; 236 } 237 return $this; 238 } 239 240 /** 241 * Get a specified colour component of an RGB value 242 * 243 * @private 244 * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE 245 * @param int $offset Position within the RGB value to extract 246 * @param boolean $hex Flag indicating whether the component should be returned as a hex or a 247 * decimal value 248 * @return string The extracted colour component 249 */ 250 private static function _getColourComponent($RGB,$offset,$hex=TRUE) { 251 $colour = substr($RGB, $offset, 2); 252 if (!$hex) 253 $colour = hexdec($colour); 254 return $colour; 255 } 256 257 /** 258 * Get the red colour component of an RGB value 259 * 260 * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE 261 * @param boolean $hex Flag indicating whether the component should be returned as a hex or a 262 * decimal value 263 * @return string The red colour component 264 */ 265 public static function getRed($RGB,$hex=TRUE) { 266 return self::_getColourComponent($RGB, strlen($RGB) - 6, $hex); 267 } 268 269 /** 270 * Get the green colour component of an RGB value 271 * 272 * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE 273 * @param boolean $hex Flag indicating whether the component should be returned as a hex or a 274 * decimal value 275 * @return string The green colour component 276 */ 277 public static function getGreen($RGB,$hex=TRUE) { 278 return self::_getColourComponent($RGB, strlen($RGB) - 4, $hex); 279 } 280 281 /** 282 * Get the blue colour component of an RGB value 283 * 284 * @param string $RGB The colour as an RGB value (e.g. FF00CCCC or CCDDEE 285 * @param boolean $hex Flag indicating whether the component should be returned as a hex or a 286 * decimal value 287 * @return string The blue colour component 288 */ 289 public static function getBlue($RGB,$hex=TRUE) { 290 return self::_getColourComponent($RGB, strlen($RGB) - 2, $hex); 291 } 292 293 /** 294 * Adjust the brightness of a color 295 * 296 * @param string $hex The colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE) 297 * @param float $adjustPercentage The percentage by which to adjust the colour as a float from -1 to 1 298 * @return string The adjusted colour as an RGBA or RGB value (e.g. FF00CCCC or CCDDEE) 299 */ 300 public static function changeBrightness($hex, $adjustPercentage) { 301 $rgba = (strlen($hex) == 8); 302 303 $red = self::getRed($hex, FALSE); 304 $green = self::getGreen($hex, FALSE); 305 $blue = self::getBlue($hex, FALSE); 306 if ($adjustPercentage > 0) { 307 $red += (255 - $red) * $adjustPercentage; 308 $green += (255 - $green) * $adjustPercentage; 309 $blue += (255 - $blue) * $adjustPercentage; 310 } else { 311 $red += $red * $adjustPercentage; 312 $green += $green * $adjustPercentage; 313 $blue += $blue * $adjustPercentage; 314 } 315 316 if ($red < 0) $red = 0; 317 elseif ($red > 255) $red = 255; 318 if ($green < 0) $green = 0; 319 elseif ($green > 255) $green = 255; 320 if ($blue < 0) $blue = 0; 321 elseif ($blue > 255) $blue = 255; 322 323 $rgb = strtoupper( str_pad(dechex($red), 2, '0', 0) . 324 str_pad(dechex($green), 2, '0', 0) . 325 str_pad(dechex($blue), 2, '0', 0) 326 ); 327 return (($rgba) ? 'FF' : '') . $rgb; 328 } 329 330 /** 331 * Get indexed color 332 * 333 * @param int $pIndex Index entry point into the colour array 334 * @param boolean $background Flag to indicate whether default background or foreground colour 335 * should be returned if the indexed colour doesn't exist 336 * @return PHPExcel_Style_Color 337 */ 338 public static function indexedColor($pIndex, $background=FALSE) { 339 // Clean parameter 340 $pIndex = intval($pIndex); 341 342 // Indexed colors 343 if (is_null(self::$_indexedColors)) { 344 self::$_indexedColors = array( 345 1 => 'FF000000', // System Colour #1 - Black 346 2 => 'FFFFFFFF', // System Colour #2 - White 347 3 => 'FFFF0000', // System Colour #3 - Red 348 4 => 'FF00FF00', // System Colour #4 - Green 349 5 => 'FF0000FF', // System Colour #5 - Blue 350 6 => 'FFFFFF00', // System Colour #6 - Yellow 351 7 => 'FFFF00FF', // System Colour #7- Magenta 352 8 => 'FF00FFFF', // System Colour #8- Cyan 353 9 => 'FF800000', // Standard Colour #9 354 10 => 'FF008000', // Standard Colour #10 355 11 => 'FF000080', // Standard Colour #11 356 12 => 'FF808000', // Standard Colour #12 357 13 => 'FF800080', // Standard Colour #13 358 14 => 'FF008080', // Standard Colour #14 359 15 => 'FFC0C0C0', // Standard Colour #15 360 16 => 'FF808080', // Standard Colour #16 361 17 => 'FF9999FF', // Chart Fill Colour #17 362 18 => 'FF993366', // Chart Fill Colour #18 363 19 => 'FFFFFFCC', // Chart Fill Colour #19 364 20 => 'FFCCFFFF', // Chart Fill Colour #20 365 21 => 'FF660066', // Chart Fill Colour #21 366 22 => 'FFFF8080', // Chart Fill Colour #22 367 23 => 'FF0066CC', // Chart Fill Colour #23 368 24 => 'FFCCCCFF', // Chart Fill Colour #24 369 25 => 'FF000080', // Chart Line Colour #25 370 26 => 'FFFF00FF', // Chart Line Colour #26 371 27 => 'FFFFFF00', // Chart Line Colour #27 372 28 => 'FF00FFFF', // Chart Line Colour #28 373 29 => 'FF800080', // Chart Line Colour #29 374 30 => 'FF800000', // Chart Line Colour #30 375 31 => 'FF008080', // Chart Line Colour #31 376 32 => 'FF0000FF', // Chart Line Colour #32 377 33 => 'FF00CCFF', // Standard Colour #33 378 34 => 'FFCCFFFF', // Standard Colour #34 379 35 => 'FFCCFFCC', // Standard Colour #35 380 36 => 'FFFFFF99', // Standard Colour #36 381 37 => 'FF99CCFF', // Standard Colour #37 382 38 => 'FFFF99CC', // Standard Colour #38 383 39 => 'FFCC99FF', // Standard Colour #39 384 40 => 'FFFFCC99', // Standard Colour #40 385 41 => 'FF3366FF', // Standard Colour #41 386 42 => 'FF33CCCC', // Standard Colour #42 387 43 => 'FF99CC00', // Standard Colour #43 388 44 => 'FFFFCC00', // Standard Colour #44 389 45 => 'FFFF9900', // Standard Colour #45 390 46 => 'FFFF6600', // Standard Colour #46 391 47 => 'FF666699', // Standard Colour #47 392 48 => 'FF969696', // Standard Colour #48 393 49 => 'FF003366', // Standard Colour #49 394 50 => 'FF339966', // Standard Colour #50 395 51 => 'FF003300', // Standard Colour #51 396 52 => 'FF333300', // Standard Colour #52 397 53 => 'FF993300', // Standard Colour #53 398 54 => 'FF993366', // Standard Colour #54 399 55 => 'FF333399', // Standard Colour #55 400 56 => 'FF333333' // Standard Colour #56 401 ); 402 } 403 404 if (array_key_exists($pIndex, self::$_indexedColors)) { 405 return new PHPExcel_Style_Color(self::$_indexedColors[$pIndex]); 406 } 407 408 if ($background) { 409 return new PHPExcel_Style_Color('FFFFFFFF'); 410 } 411 return new PHPExcel_Style_Color('FF000000'); 412 } 413 414 /** 415 * Get hash code 416 * 417 * @return string Hash code 418 */ 419 public function getHashCode() { 420 if ($this->_isSupervisor) { 421 return $this->getSharedComponent()->getHashCode(); 422 } 423 return md5( 424 $this->_argb 425 . __CLASS__ 426 ); 427 } 428 429 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |