Skip to content
This repository was archived by the owner on Jan 2, 2019. It is now read-only.

Commit 6d3a440

Browse files
author
MarkBaker
committed
Refactor colour mapping for Excel5 Reader
1 parent 2058c84 commit 6d3a440

File tree

4 files changed

+156
-257
lines changed

4 files changed

+156
-257
lines changed

Classes/PHPExcel/Reader/Excel5.php

Lines changed: 13 additions & 257 deletions
Original file line numberDiff line numberDiff line change
@@ -7760,284 +7760,40 @@ private static function mapErrorCode($subData)
77607760
*/
77617761
private static function mapBuiltInColor($color)
77627762
{
7763-
switch ($color) {
7764-
case 0x00:
7765-
return array('rgb' => '000000');
7766-
case 0x01:
7767-
return array('rgb' => 'FFFFFF');
7768-
case 0x02:
7769-
return array('rgb' => 'FF0000');
7770-
case 0x03:
7771-
return array('rgb' => '00FF00');
7772-
case 0x04:
7773-
return array('rgb' => '0000FF');
7774-
case 0x05:
7775-
return array('rgb' => 'FFFF00');
7776-
case 0x06:
7777-
return array('rgb' => 'FF00FF');
7778-
case 0x07:
7779-
return array('rgb' => '00FFFF');
7780-
case 0x40:
7781-
return array('rgb' => '000000'); // system window text color
7782-
case 0x41:
7783-
return array('rgb' => 'FFFFFF'); // system window background color
7784-
default:
7785-
return array('rgb' => '000000');
7763+
if (isset(PHPExcel_Reader_Excel5_Color_BuiltIn::$map[$color])) {
7764+
return array('rgb' => PHPExcel_Reader_Excel5_Color_BuiltIn::$map[$color]);
77867765
}
7766+
return array('rgb' => '000000');
77877767
}
77887768

77897769

77907770
/**
77917771
* Map color array from BIFF5 built-in color index
77927772
*
7793-
* @param int $subData
7773+
* @param int $color
77947774
* @return array
77957775
*/
7796-
private static function mapColorBIFF5($subData)
7776+
private static function mapColorBIFF5($color)
77977777
{
7798-
switch ($subData) {
7799-
case 0x08:
7800-
return array('rgb' => '000000');
7801-
case 0x09:
7802-
return array('rgb' => 'FFFFFF');
7803-
case 0x0A:
7804-
return array('rgb' => 'FF0000');
7805-
case 0x0B:
7806-
return array('rgb' => '00FF00');
7807-
case 0x0C:
7808-
return array('rgb' => '0000FF');
7809-
case 0x0D:
7810-
return array('rgb' => 'FFFF00');
7811-
case 0x0E:
7812-
return array('rgb' => 'FF00FF');
7813-
case 0x0F:
7814-
return array('rgb' => '00FFFF');
7815-
case 0x10:
7816-
return array('rgb' => '800000');
7817-
case 0x11:
7818-
return array('rgb' => '008000');
7819-
case 0x12:
7820-
return array('rgb' => '000080');
7821-
case 0x13:
7822-
return array('rgb' => '808000');
7823-
case 0x14:
7824-
return array('rgb' => '800080');
7825-
case 0x15:
7826-
return array('rgb' => '008080');
7827-
case 0x16:
7828-
return array('rgb' => 'C0C0C0');
7829-
case 0x17:
7830-
return array('rgb' => '808080');
7831-
case 0x18:
7832-
return array('rgb' => '8080FF');
7833-
case 0x19:
7834-
return array('rgb' => '802060');
7835-
case 0x1A:
7836-
return array('rgb' => 'FFFFC0');
7837-
case 0x1B:
7838-
return array('rgb' => 'A0E0F0');
7839-
case 0x1C:
7840-
return array('rgb' => '600080');
7841-
case 0x1D:
7842-
return array('rgb' => 'FF8080');
7843-
case 0x1E:
7844-
return array('rgb' => '0080C0');
7845-
case 0x1F:
7846-
return array('rgb' => 'C0C0FF');
7847-
case 0x20:
7848-
return array('rgb' => '000080');
7849-
case 0x21:
7850-
return array('rgb' => 'FF00FF');
7851-
case 0x22:
7852-
return array('rgb' => 'FFFF00');
7853-
case 0x23:
7854-
return array('rgb' => '00FFFF');
7855-
case 0x24:
7856-
return array('rgb' => '800080');
7857-
case 0x25:
7858-
return array('rgb' => '800000');
7859-
case 0x26:
7860-
return array('rgb' => '008080');
7861-
case 0x27:
7862-
return array('rgb' => '0000FF');
7863-
case 0x28:
7864-
return array('rgb' => '00CFFF');
7865-
case 0x29:
7866-
return array('rgb' => '69FFFF');
7867-
case 0x2A:
7868-
return array('rgb' => 'E0FFE0');
7869-
case 0x2B:
7870-
return array('rgb' => 'FFFF80');
7871-
case 0x2C:
7872-
return array('rgb' => 'A6CAF0');
7873-
case 0x2D:
7874-
return array('rgb' => 'DD9CB3');
7875-
case 0x2E:
7876-
return array('rgb' => 'B38FEE');
7877-
case 0x2F:
7878-
return array('rgb' => 'E3E3E3');
7879-
case 0x30:
7880-
return array('rgb' => '2A6FF9');
7881-
case 0x31:
7882-
return array('rgb' => '3FB8CD');
7883-
case 0x32:
7884-
return array('rgb' => '488436');
7885-
case 0x33:
7886-
return array('rgb' => '958C41');
7887-
case 0x34:
7888-
return array('rgb' => '8E5E42');
7889-
case 0x35:
7890-
return array('rgb' => 'A0627A');
7891-
case 0x36:
7892-
return array('rgb' => '624FAC');
7893-
case 0x37:
7894-
return array('rgb' => '969696');
7895-
case 0x38:
7896-
return array('rgb' => '1D2FBE');
7897-
case 0x39:
7898-
return array('rgb' => '286676');
7899-
case 0x3A:
7900-
return array('rgb' => '004500');
7901-
case 0x3B:
7902-
return array('rgb' => '453E01');
7903-
case 0x3C:
7904-
return array('rgb' => '6A2813');
7905-
case 0x3D:
7906-
return array('rgb' => '85396A');
7907-
case 0x3E:
7908-
return array('rgb' => '4A3285');
7909-
case 0x3F:
7910-
return array('rgb' => '424242');
7911-
default:
7912-
return array('rgb' => '000000');
7778+
if (isset(PHPExcel_Reader_Excel5_Color_BIFF5::$map[$color])) {
7779+
return array('rgb' => PHPExcel_Reader_Excel5_Color_BIFF5::$map[$color]);
79137780
}
7781+
return array('rgb' => '000000');
79147782
}
79157783

79167784

79177785
/**
79187786
* Map color array from BIFF8 built-in color index
79197787
*
7920-
* @param int $subData
7788+
* @param int $color
79217789
* @return array
79227790
*/
7923-
private static function mapColor($subData)
7791+
private static function mapColor($color)
79247792
{
7925-
switch ($subData) {
7926-
case 0x08:
7927-
return array('rgb' => '000000');
7928-
case 0x09:
7929-
return array('rgb' => 'FFFFFF');
7930-
case 0x0A:
7931-
return array('rgb' => 'FF0000');
7932-
case 0x0B:
7933-
return array('rgb' => '00FF00');
7934-
case 0x0C:
7935-
return array('rgb' => '0000FF');
7936-
case 0x0D:
7937-
return array('rgb' => 'FFFF00');
7938-
case 0x0E:
7939-
return array('rgb' => 'FF00FF');
7940-
case 0x0F:
7941-
return array('rgb' => '00FFFF');
7942-
case 0x10:
7943-
return array('rgb' => '800000');
7944-
case 0x11:
7945-
return array('rgb' => '008000');
7946-
case 0x12:
7947-
return array('rgb' => '000080');
7948-
case 0x13:
7949-
return array('rgb' => '808000');
7950-
case 0x14:
7951-
return array('rgb' => '800080');
7952-
case 0x15:
7953-
return array('rgb' => '008080');
7954-
case 0x16:
7955-
return array('rgb' => 'C0C0C0');
7956-
case 0x17:
7957-
return array('rgb' => '808080');
7958-
case 0x18:
7959-
return array('rgb' => '9999FF');
7960-
case 0x19:
7961-
return array('rgb' => '993366');
7962-
case 0x1A:
7963-
return array('rgb' => 'FFFFCC');
7964-
case 0x1B:
7965-
return array('rgb' => 'CCFFFF');
7966-
case 0x1C:
7967-
return array('rgb' => '660066');
7968-
case 0x1D:
7969-
return array('rgb' => 'FF8080');
7970-
case 0x1E:
7971-
return array('rgb' => '0066CC');
7972-
case 0x1F:
7973-
return array('rgb' => 'CCCCFF');
7974-
case 0x20:
7975-
return array('rgb' => '000080');
7976-
case 0x21:
7977-
return array('rgb' => 'FF00FF');
7978-
case 0x22:
7979-
return array('rgb' => 'FFFF00');
7980-
case 0x23:
7981-
return array('rgb' => '00FFFF');
7982-
case 0x24:
7983-
return array('rgb' => '800080');
7984-
case 0x25:
7985-
return array('rgb' => '800000');
7986-
case 0x26:
7987-
return array('rgb' => '008080');
7988-
case 0x27:
7989-
return array('rgb' => '0000FF');
7990-
case 0x28:
7991-
return array('rgb' => '00CCFF');
7992-
case 0x29:
7993-
return array('rgb' => 'CCFFFF');
7994-
case 0x2A:
7995-
return array('rgb' => 'CCFFCC');
7996-
case 0x2B:
7997-
return array('rgb' => 'FFFF99');
7998-
case 0x2C:
7999-
return array('rgb' => '99CCFF');
8000-
case 0x2D:
8001-
return array('rgb' => 'FF99CC');
8002-
case 0x2E:
8003-
return array('rgb' => 'CC99FF');
8004-
case 0x2F:
8005-
return array('rgb' => 'FFCC99');
8006-
case 0x30:
8007-
return array('rgb' => '3366FF');
8008-
case 0x31:
8009-
return array('rgb' => '33CCCC');
8010-
case 0x32:
8011-
return array('rgb' => '99CC00');
8012-
case 0x33:
8013-
return array('rgb' => 'FFCC00');
8014-
case 0x34:
8015-
return array('rgb' => 'FF9900');
8016-
case 0x35:
8017-
return array('rgb' => 'FF6600');
8018-
case 0x36:
8019-
return array('rgb' => '666699');
8020-
case 0x37:
8021-
return array('rgb' => '969696');
8022-
case 0x38:
8023-
return array('rgb' => '003366');
8024-
case 0x39:
8025-
return array('rgb' => '339966');
8026-
case 0x3A:
8027-
return array('rgb' => '003300');
8028-
case 0x3B:
8029-
return array('rgb' => '333300');
8030-
case 0x3C:
8031-
return array('rgb' => '993300');
8032-
case 0x3D:
8033-
return array('rgb' => '993366');
8034-
case 0x3E:
8035-
return array('rgb' => '333399');
8036-
case 0x3F:
8037-
return array('rgb' => '333333');
8038-
default:
8039-
return array('rgb' => '000000');
7793+
if (isset(PHPExcel_Reader_Excel5_Color_BIFF8::$map[$color])) {
7794+
return array('rgb' => PHPExcel_Reader_Excel5_Color_BIFF8::$map[$color]);
80407795
}
7796+
return array('rgb' => '000000');
80417797
}
80427798

80437799
private function parseRichText($is = '')
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?php
2+
3+
class PHPExcel_Reader_Excel5_Color_BIFF5
4+
{
5+
public static $map = array(
6+
0x08 => '000000',
7+
0x09 => 'FFFFFF',
8+
0x0A => 'FF0000',
9+
0x0B => '00FF00',
10+
0x0C => '0000FF',
11+
0x0D => 'FFFF00',
12+
0x0E => 'FF00FF',
13+
0x0F => '00FFFF',
14+
0x10 => '800000',
15+
0x11 => '008000',
16+
0x12 => '000080',
17+
0x13 => '808000',
18+
0x14 => '800080',
19+
0x15 => '008080',
20+
0x16 => 'C0C0C0',
21+
0x17 => '808080',
22+
0x18 => '8080FF',
23+
0x19 => '802060',
24+
0x1A => 'FFFFC0',
25+
0x1B => 'A0E0F0',
26+
0x1C => '600080',
27+
0x1D => 'FF8080',
28+
0x1E => '0080C0',
29+
0x1F => 'C0C0FF',
30+
0x20 => '000080',
31+
0x21 => 'FF00FF',
32+
0x22 => 'FFFF00',
33+
0x23 => '00FFFF',
34+
0x24 => '800080',
35+
0x25 => '800000',
36+
0x26 => '008080',
37+
0x27 => '0000FF',
38+
0x28 => '00CFFF',
39+
0x29 => '69FFFF',
40+
0x2A => 'E0FFE0',
41+
0x2B => 'FFFF80',
42+
0x2C => 'A6CAF0',
43+
0x2D => 'DD9CB3',
44+
0x2E => 'B38FEE',
45+
0x2F => 'E3E3E3',
46+
0x30 => '2A6FF9',
47+
0x31 => '3FB8CD',
48+
0x32 => '488436',
49+
0x33 => '958C41',
50+
0x34 => '8E5E42',
51+
0x35 => 'A0627A',
52+
0x36 => '624FAC',
53+
0x37 => '969696',
54+
0x38 => '1D2FBE',
55+
0x39 => '286676',
56+
0x3A => '004500',
57+
0x3B => '453E01',
58+
0x3C => '6A2813',
59+
0x3D => '85396A',
60+
0x3E => '4A3285',
61+
0x3F => '424242',
62+
);
63+
}

0 commit comments

Comments
 (0)