Refactor colour mapping for Excel5 Reader

This commit is contained in:
MarkBaker 2015-12-30 02:18:30 +00:00
parent 6518b75796
commit 70a557346e
4 changed files with 237 additions and 257 deletions

View File

@ -7745,284 +7745,40 @@ class Excel5 extends BaseReader implements IReader
*/
private static function mapBuiltInColor($color)
{
switch ($color) {
case 0x00:
return array('rgb' => '000000');
case 0x01:
return array('rgb' => 'FFFFFF');
case 0x02:
return array('rgb' => 'FF0000');
case 0x03:
return array('rgb' => '00FF00');
case 0x04:
return array('rgb' => '0000FF');
case 0x05:
return array('rgb' => 'FFFF00');
case 0x06:
return array('rgb' => 'FF00FF');
case 0x07:
return array('rgb' => '00FFFF');
case 0x40:
return array('rgb' => '000000'); // system window text color
case 0x41:
return array('rgb' => 'FFFFFF'); // system window background color
default:
return array('rgb' => '000000');
if (isset(Excel5\Color\BuiltIn::$map[$color])) {
return array('rgb' => Excel5\Color\BuiltIn::$map[$color]);
}
return array('rgb' => '000000');
}
/**
* Map color array from BIFF5 built-in color index
*
* @param int $subData
* @param int $color
* @return array
*/
private static function mapColorBIFF5($subData)
private static function mapColorBIFF5($color)
{
switch ($subData) {
case 0x08:
return array('rgb' => '000000');
case 0x09:
return array('rgb' => 'FFFFFF');
case 0x0A:
return array('rgb' => 'FF0000');
case 0x0B:
return array('rgb' => '00FF00');
case 0x0C:
return array('rgb' => '0000FF');
case 0x0D:
return array('rgb' => 'FFFF00');
case 0x0E:
return array('rgb' => 'FF00FF');
case 0x0F:
return array('rgb' => '00FFFF');
case 0x10:
return array('rgb' => '800000');
case 0x11:
return array('rgb' => '008000');
case 0x12:
return array('rgb' => '000080');
case 0x13:
return array('rgb' => '808000');
case 0x14:
return array('rgb' => '800080');
case 0x15:
return array('rgb' => '008080');
case 0x16:
return array('rgb' => 'C0C0C0');
case 0x17:
return array('rgb' => '808080');
case 0x18:
return array('rgb' => '8080FF');
case 0x19:
return array('rgb' => '802060');
case 0x1A:
return array('rgb' => 'FFFFC0');
case 0x1B:
return array('rgb' => 'A0E0F0');
case 0x1C:
return array('rgb' => '600080');
case 0x1D:
return array('rgb' => 'FF8080');
case 0x1E:
return array('rgb' => '0080C0');
case 0x1F:
return array('rgb' => 'C0C0FF');
case 0x20:
return array('rgb' => '000080');
case 0x21:
return array('rgb' => 'FF00FF');
case 0x22:
return array('rgb' => 'FFFF00');
case 0x23:
return array('rgb' => '00FFFF');
case 0x24:
return array('rgb' => '800080');
case 0x25:
return array('rgb' => '800000');
case 0x26:
return array('rgb' => '008080');
case 0x27:
return array('rgb' => '0000FF');
case 0x28:
return array('rgb' => '00CFFF');
case 0x29:
return array('rgb' => '69FFFF');
case 0x2A:
return array('rgb' => 'E0FFE0');
case 0x2B:
return array('rgb' => 'FFFF80');
case 0x2C:
return array('rgb' => 'A6CAF0');
case 0x2D:
return array('rgb' => 'DD9CB3');
case 0x2E:
return array('rgb' => 'B38FEE');
case 0x2F:
return array('rgb' => 'E3E3E3');
case 0x30:
return array('rgb' => '2A6FF9');
case 0x31:
return array('rgb' => '3FB8CD');
case 0x32:
return array('rgb' => '488436');
case 0x33:
return array('rgb' => '958C41');
case 0x34:
return array('rgb' => '8E5E42');
case 0x35:
return array('rgb' => 'A0627A');
case 0x36:
return array('rgb' => '624FAC');
case 0x37:
return array('rgb' => '969696');
case 0x38:
return array('rgb' => '1D2FBE');
case 0x39:
return array('rgb' => '286676');
case 0x3A:
return array('rgb' => '004500');
case 0x3B:
return array('rgb' => '453E01');
case 0x3C:
return array('rgb' => '6A2813');
case 0x3D:
return array('rgb' => '85396A');
case 0x3E:
return array('rgb' => '4A3285');
case 0x3F:
return array('rgb' => '424242');
default:
return array('rgb' => '000000');
if (isset(Excel5\Color\BIFF5::$map[$color])) {
return array('rgb' => Excel5\Color\BIFF5::$map[$color]);
}
return array('rgb' => '000000');
}
/**
* Map color array from BIFF8 built-in color index
*
* @param int $subData
* @param int $color
* @return array
*/
private static function mapColor($subData)
private static function mapColor($color)
{
switch ($subData) {
case 0x08:
return array('rgb' => '000000');
case 0x09:
return array('rgb' => 'FFFFFF');
case 0x0A:
return array('rgb' => 'FF0000');
case 0x0B:
return array('rgb' => '00FF00');
case 0x0C:
return array('rgb' => '0000FF');
case 0x0D:
return array('rgb' => 'FFFF00');
case 0x0E:
return array('rgb' => 'FF00FF');
case 0x0F:
return array('rgb' => '00FFFF');
case 0x10:
return array('rgb' => '800000');
case 0x11:
return array('rgb' => '008000');
case 0x12:
return array('rgb' => '000080');
case 0x13:
return array('rgb' => '808000');
case 0x14:
return array('rgb' => '800080');
case 0x15:
return array('rgb' => '008080');
case 0x16:
return array('rgb' => 'C0C0C0');
case 0x17:
return array('rgb' => '808080');
case 0x18:
return array('rgb' => '9999FF');
case 0x19:
return array('rgb' => '993366');
case 0x1A:
return array('rgb' => 'FFFFCC');
case 0x1B:
return array('rgb' => 'CCFFFF');
case 0x1C:
return array('rgb' => '660066');
case 0x1D:
return array('rgb' => 'FF8080');
case 0x1E:
return array('rgb' => '0066CC');
case 0x1F:
return array('rgb' => 'CCCCFF');
case 0x20:
return array('rgb' => '000080');
case 0x21:
return array('rgb' => 'FF00FF');
case 0x22:
return array('rgb' => 'FFFF00');
case 0x23:
return array('rgb' => '00FFFF');
case 0x24:
return array('rgb' => '800080');
case 0x25:
return array('rgb' => '800000');
case 0x26:
return array('rgb' => '008080');
case 0x27:
return array('rgb' => '0000FF');
case 0x28:
return array('rgb' => '00CCFF');
case 0x29:
return array('rgb' => 'CCFFFF');
case 0x2A:
return array('rgb' => 'CCFFCC');
case 0x2B:
return array('rgb' => 'FFFF99');
case 0x2C:
return array('rgb' => '99CCFF');
case 0x2D:
return array('rgb' => 'FF99CC');
case 0x2E:
return array('rgb' => 'CC99FF');
case 0x2F:
return array('rgb' => 'FFCC99');
case 0x30:
return array('rgb' => '3366FF');
case 0x31:
return array('rgb' => '33CCCC');
case 0x32:
return array('rgb' => '99CC00');
case 0x33:
return array('rgb' => 'FFCC00');
case 0x34:
return array('rgb' => 'FF9900');
case 0x35:
return array('rgb' => 'FF6600');
case 0x36:
return array('rgb' => '666699');
case 0x37:
return array('rgb' => '969696');
case 0x38:
return array('rgb' => '003366');
case 0x39:
return array('rgb' => '339966');
case 0x3A:
return array('rgb' => '003300');
case 0x3B:
return array('rgb' => '333300');
case 0x3C:
return array('rgb' => '993300');
case 0x3D:
return array('rgb' => '993366');
case 0x3E:
return array('rgb' => '333399');
case 0x3F:
return array('rgb' => '333333');
default:
return array('rgb' => '000000');
if (isset(Excel5\Color\BIFF8::$map[$color])) {
return array('rgb' => Excel5\Color\BIFF8::$map[$color]);
}
return array('rgb' => '000000');
}
private function parseRichText($is = '')

View File

@ -0,0 +1,90 @@
<?php
namespace PHPExcel\Reader\Excel5\Color;
/**
* PHPExcel_Reader_Excel5_Color_BIFF5
*
* Copyright (c) 2006 - 2015 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package \PHPExcel\Reader\Excel5
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
class BIFF5
{
public static $map = array(
0x08 => '000000',
0x09 => 'FFFFFF',
0x0A => 'FF0000',
0x0B => '00FF00',
0x0C => '0000FF',
0x0D => 'FFFF00',
0x0E => 'FF00FF',
0x0F => '00FFFF',
0x10 => '800000',
0x11 => '008000',
0x12 => '000080',
0x13 => '808000',
0x14 => '800080',
0x15 => '008080',
0x16 => 'C0C0C0',
0x17 => '808080',
0x18 => '8080FF',
0x19 => '802060',
0x1A => 'FFFFC0',
0x1B => 'A0E0F0',
0x1C => '600080',
0x1D => 'FF8080',
0x1E => '0080C0',
0x1F => 'C0C0FF',
0x20 => '000080',
0x21 => 'FF00FF',
0x22 => 'FFFF00',
0x23 => '00FFFF',
0x24 => '800080',
0x25 => '800000',
0x26 => '008080',
0x27 => '0000FF',
0x28 => '00CFFF',
0x29 => '69FFFF',
0x2A => 'E0FFE0',
0x2B => 'FFFF80',
0x2C => 'A6CAF0',
0x2D => 'DD9CB3',
0x2E => 'B38FEE',
0x2F => 'E3E3E3',
0x30 => '2A6FF9',
0x31 => '3FB8CD',
0x32 => '488436',
0x33 => '958C41',
0x34 => '8E5E42',
0x35 => 'A0627A',
0x36 => '624FAC',
0x37 => '969696',
0x38 => '1D2FBE',
0x39 => '286676',
0x3A => '004500',
0x3B => '453E01',
0x3C => '6A2813',
0x3D => '85396A',
0x3E => '4A3285',
0x3F => '424242',
);
}

View File

@ -0,0 +1,90 @@
<?php
namespace PHPExcel\Reader\Excel5\Color;
/**
* PHPExcel_Reader_Excel5_Color_BIFF8
*
* Copyright (c) 2006 - 2015 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package \PHPExcel\Reader\Excel5
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
class BIFF8
{
public static $map = array(
0x08 => '000000',
0x09 => 'FFFFFF',
0x0A => 'FF0000',
0x0B => '00FF00',
0x0C => '0000FF',
0x0D => 'FFFF00',
0x0E => 'FF00FF',
0x0F => '00FFFF',
0x10 => '800000',
0x11 => '008000',
0x12 => '000080',
0x13 => '808000',
0x14 => '800080',
0x15 => '008080',
0x16 => 'C0C0C0',
0x17 => '808080',
0x18 => '9999FF',
0x19 => '993366',
0x1A => 'FFFFCC',
0x1B => 'CCFFFF',
0x1C => '660066',
0x1D => 'FF8080',
0x1E => '0066CC',
0x1F => 'CCCCFF',
0x20 => '000080',
0x21 => 'FF00FF',
0x22 => 'FFFF00',
0x23 => '00FFFF',
0x24 => '800080',
0x25 => '800000',
0x26 => '008080',
0x27 => '0000FF',
0x28 => '00CCFF',
0x29 => 'CCFFFF',
0x2A => 'CCFFCC',
0x2B => 'FFFF99',
0x2C => '99CCFF',
0x2D => 'FF99CC',
0x2E => 'CC99FF',
0x2F => 'FFCC99',
0x30 => '3366FF',
0x31 => '33CCCC',
0x32 => '99CC00',
0x33 => 'FFCC00',
0x34 => 'FF9900',
0x35 => 'FF6600',
0x36 => '666699',
0x37 => '969696',
0x38 => '003366',
0x39 => '339966',
0x3A => '003300',
0x3B => '333300',
0x3C => '993300',
0x3D => '993366',
0x3E => '333399',
0x3F => '333333',
);
}

View File

@ -0,0 +1,44 @@
<?php
namespace PHPExcel\Reader\Excel5\Color;
/**
* PHPExcel_Reader_Excel5_Color_BuiltIn
*
* Copyright (c) 2006 - 2015 PHPExcel
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* @category PHPExcel
* @package \PHPExcel\Reader\Excel5
* @copyright Copyright (c) 2006 - 2015 PHPExcel (http://www.codeplex.com/PHPExcel)
* @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
* @version ##VERSION##, ##DATE##
*/
class BuiltIn
{
public static $map = array(
0x00 => '000000',
0x01 => 'FFFFFF',
0x02 => 'FF0000',
0x03 => '00FF00',
0x04 => '0000FF',
0x05 => 'FFFF00',
0x06 => 'FF00FF',
0x07 => '00FFFF',
0x40 => '000000', // system window text color
0x41 => 'FFFFFF', // system window background color
);
}