From 189a5c439e8a1e84c3be8b28c6147efa22ab222a Mon Sep 17 00:00:00 2001 From: MarkBaker Date: Fri, 1 Jan 2016 18:21:24 +0000 Subject: [PATCH] Refactor mappers out from Excel5 Reader completely --- src/PhpSpreadsheet/Reader/Excel5.php | 255 ++---------------- src/PhpSpreadsheet/Reader/Excel5/Color.php | 34 +++ .../Reader/Excel5/Color/BIFF5.php | 41 ++- .../Reader/Excel5/Color/BIFF8.php | 41 ++- .../Reader/Excel5/Color/BuiltIn.php | 41 ++- .../Reader/Excel5/ErrorCode.php | 30 +++ .../Reader/Excel5/Style/Border.php | 40 +++ .../Reader/Excel5/Style/FillPattern.php | 45 ++++ 8 files changed, 218 insertions(+), 309 deletions(-) create mode 100644 src/PhpSpreadsheet/Reader/Excel5/Color.php create mode 100644 src/PhpSpreadsheet/Reader/Excel5/ErrorCode.php create mode 100644 src/PhpSpreadsheet/Reader/Excel5/Style/Border.php create mode 100644 src/PhpSpreadsheet/Reader/Excel5/Style/FillPattern.php diff --git a/src/PhpSpreadsheet/Reader/Excel5.php b/src/PhpSpreadsheet/Reader/Excel5.php index 75ad49b7..5af188f4 100644 --- a/src/PhpSpreadsheet/Reader/Excel5.php +++ b/src/PhpSpreadsheet/Reader/Excel5.php @@ -717,7 +717,7 @@ class Excel5 extends BaseReader implements IReader if (!$this->readDataOnly) { foreach ($this->objFonts as $objFont) { if (isset($objFont->colorIndex)) { - $color = self::readColor($objFont->colorIndex, $this->palette, $this->version); + $color = Excel5\Color::map($objFont->colorIndex, $this->palette, $this->version); $objFont->getColor()->setRGB($color['rgb']); } } @@ -727,11 +727,11 @@ class Excel5 extends BaseReader implements IReader $fill = $objStyle->getFill(); if (isset($fill->startcolorIndex)) { - $startColor = self::readColor($fill->startcolorIndex, $this->palette, $this->version); + $startColor = Excel5\Color::map($fill->startcolorIndex, $this->palette, $this->version); $fill->getStartColor()->setRGB($startColor['rgb']); } if (isset($fill->endcolorIndex)) { - $endColor = self::readColor($fill->endcolorIndex, $this->palette, $this->version); + $endColor = Excel5\Color::map($fill->endcolorIndex, $this->palette, $this->version); $fill->getEndColor()->setRGB($endColor['rgb']); } @@ -743,23 +743,23 @@ class Excel5 extends BaseReader implements IReader $diagonal = $objStyle->getBorders()->getDiagonal(); if (isset($top->colorIndex)) { - $borderTopColor = self::readColor($top->colorIndex, $this->palette, $this->version); + $borderTopColor = Excel5\Color::map($top->colorIndex, $this->palette, $this->version); $top->getColor()->setRGB($borderTopColor['rgb']); } if (isset($right->colorIndex)) { - $borderRightColor = self::readColor($right->colorIndex, $this->palette, $this->version); + $borderRightColor = Excel5\Color::map($right->colorIndex, $this->palette, $this->version); $right->getColor()->setRGB($borderRightColor['rgb']); } if (isset($bottom->colorIndex)) { - $borderBottomColor = self::readColor($bottom->colorIndex, $this->palette, $this->version); + $borderBottomColor = Excel5\Color::map($bottom->colorIndex, $this->palette, $this->version); $bottom->getColor()->setRGB($borderBottomColor['rgb']); } if (isset($left->colorIndex)) { - $borderLeftColor = self::readColor($left->colorIndex, $this->palette, $this->version); + $borderLeftColor = Excel5\Color::map($left->colorIndex, $this->palette, $this->version); $left->getColor()->setRGB($borderLeftColor['rgb']); } if (isset($diagonal->colorIndex)) { - $borderDiagonalColor = self::readColor($diagonal->colorIndex, $this->palette, $this->version); + $borderDiagonalColor = Excel5\Color::map($diagonal->colorIndex, $this->palette, $this->version); $diagonal->getColor()->setRGB($borderDiagonalColor['rgb']); } } @@ -2194,19 +2194,19 @@ class Excel5 extends BaseReader implements IReader // offset: 10; size: 4; Cell border lines and background area // bit: 3-0; mask: 0x0000000F; left style - if ($bordersLeftStyle = self::mapBorderStyle((0x0000000F & self::getInt4d($recordData, 10)) >> 0)) { + if ($bordersLeftStyle = Excel5\Style\Border::lookup((0x0000000F & self::getInt4d($recordData, 10)) >> 0)) { $objStyle->getBorders()->getLeft()->setBorderStyle($bordersLeftStyle); } // bit: 7-4; mask: 0x000000F0; right style - if ($bordersRightStyle = self::mapBorderStyle((0x000000F0 & self::getInt4d($recordData, 10)) >> 4)) { + if ($bordersRightStyle = Excel5\Style\Border::lookup((0x000000F0 & self::getInt4d($recordData, 10)) >> 4)) { $objStyle->getBorders()->getRight()->setBorderStyle($bordersRightStyle); } // bit: 11-8; mask: 0x00000F00; top style - if ($bordersTopStyle = self::mapBorderStyle((0x00000F00 & self::getInt4d($recordData, 10)) >> 8)) { + if ($bordersTopStyle = Excel5\Style\Border::lookup((0x00000F00 & self::getInt4d($recordData, 10)) >> 8)) { $objStyle->getBorders()->getTop()->setBorderStyle($bordersTopStyle); } // bit: 15-12; mask: 0x0000F000; bottom style - if ($bordersBottomStyle = self::mapBorderStyle((0x0000F000 & self::getInt4d($recordData, 10)) >> 12)) { + if ($bordersBottomStyle = Excel5\Style\Border::lookup((0x0000F000 & self::getInt4d($recordData, 10)) >> 12)) { $objStyle->getBorders()->getBottom()->setBorderStyle($bordersBottomStyle); } // bit: 22-16; mask: 0x007F0000; left color @@ -2242,12 +2242,12 @@ class Excel5 extends BaseReader implements IReader $objStyle->getBorders()->getDiagonal()->colorIndex = (0x001FC000 & self::getInt4d($recordData, 14)) >> 14; // bit: 24-21; mask: 0x01E00000; diagonal style - if ($bordersDiagonalStyle = self::mapBorderStyle((0x01E00000 & self::getInt4d($recordData, 14)) >> 21)) { + if ($bordersDiagonalStyle = Excel5\Style\Border::lookup((0x01E00000 & self::getInt4d($recordData, 14)) >> 21)) { $objStyle->getBorders()->getDiagonal()->setBorderStyle($bordersDiagonalStyle); } // bit: 31-26; mask: 0xFC000000 fill pattern - if ($fillType = self::mapFillPattern((0xFC000000 & self::getInt4d($recordData, 14)) >> 26)) { + if ($fillType = Excel5\Style\FillPattern::lookup((0xFC000000 & self::getInt4d($recordData, 14)) >> 26)) { $objStyle->getFill()->setFillType($fillType); } // offset: 18; size: 2; pattern and background colour @@ -2289,10 +2289,10 @@ class Excel5 extends BaseReader implements IReader $objStyle->getFill()->endcolorIndex = (0x00003F80 & $borderAndBackground) >> 7; // bit: 21-16; mask: 0x003F0000; fill pattern - $objStyle->getFill()->setFillType(self::mapFillPattern((0x003F0000 & $borderAndBackground) >> 16)); + $objStyle->getFill()->setFillType(Excel5\Style\FillPattern::lookup((0x003F0000 & $borderAndBackground) >> 16)); // bit: 24-22; mask: 0x01C00000; bottom line style - $objStyle->getBorders()->getBottom()->setBorderStyle(self::mapBorderStyle((0x01C00000 & $borderAndBackground) >> 22)); + $objStyle->getBorders()->getBottom()->setBorderStyle(Excel5\Style\Border::lookup((0x01C00000 & $borderAndBackground) >> 22)); // bit: 31-25; mask: 0xFE000000; bottom line color $objStyle->getBorders()->getBottom()->colorIndex = (0xFE000000 & $borderAndBackground) >> 25; @@ -2301,13 +2301,13 @@ class Excel5 extends BaseReader implements IReader $borderLines = self::getInt4d($recordData, 12); // bit: 2-0; mask: 0x00000007; top line style - $objStyle->getBorders()->getTop()->setBorderStyle(self::mapBorderStyle((0x00000007 & $borderLines) >> 0)); + $objStyle->getBorders()->getTop()->setBorderStyle(Excel5\Style\Border::lookup((0x00000007 & $borderLines) >> 0)); // bit: 5-3; mask: 0x00000038; left line style - $objStyle->getBorders()->getLeft()->setBorderStyle(self::mapBorderStyle((0x00000038 & $borderLines) >> 3)); + $objStyle->getBorders()->getLeft()->setBorderStyle(Excel5\Style\Border::lookup((0x00000038 & $borderLines) >> 3)); // bit: 8-6; mask: 0x000001C0; right line style - $objStyle->getBorders()->getRight()->setBorderStyle(self::mapBorderStyle((0x000001C0 & $borderLines) >> 6)); + $objStyle->getBorders()->getRight()->setBorderStyle(Excel5\Style\Border::lookup((0x000001C0 & $borderLines) >> 6)); // bit: 15-9; mask: 0x0000FE00; top line color index $objStyle->getBorders()->getTop()->colorIndex = (0x0000FE00 & $borderLines) >> 9; @@ -3914,7 +3914,7 @@ class Excel5 extends BaseReader implements IReader && (ord($recordData{13}) == 255)) { // Error formula. Error code is in +2 $dataType = \PHPExcel\Cell\DataType::TYPE_ERROR; - $value = self::mapErrorCode(ord($recordData{8})); + $value = Excel5\ErrorCode::lookup(ord($recordData{8})); } elseif ((ord($recordData{6}) == 3) && (ord($recordData{12}) == 255) && (ord($recordData{13}) == 255)) { @@ -4061,7 +4061,7 @@ class Excel5 extends BaseReader implements IReader $cell->setValueExplicit($value, \PHPExcel\Cell\DataType::TYPE_BOOL); break; case 1: // error type - $value = self::mapErrorCode($boolErr); + $value = Excel5\ErrorCode::lookup($boolErr); // add cell value $cell->setValueExplicit($value, \PHPExcel\Cell\DataType::TYPE_ERROR); @@ -4922,7 +4922,7 @@ class Excel5 extends BaseReader implements IReader case 0x14: // offset: 16; size: 2; color index for sheet tab $colorIndex = self::getInt2d($recordData, 16); - $color = self::readColor($colorIndex, $this->palette, $this->version); + $color = Excel5\Color::map($colorIndex, $this->palette, $this->version); $this->phpSheet->getTabColor()->setRGB($color['rgb']); break; case 0x28: @@ -5689,7 +5689,7 @@ class Excel5 extends BaseReader implements IReader // offset: 1; size: 1; error code $name = 'tErr'; $size = 2; - $data = self::mapErrorCode(ord($formulaData[1])); + $data = Excel5\ErrorCode::lookup(ord($formulaData[1])); break; case 0x1D: // boolean // offset: 1; size: 1; 0 = false, 1 = true; @@ -7258,7 +7258,7 @@ class Excel5 extends BaseReader implements IReader break; case 0x10: // error code // offset: 1; size: 1; error code - $value = self::mapErrorCode(ord($valueData[1])); + $value = Excel5\ErrorCode::lookup(ord($valueData[1])); $size = 9; break; } @@ -7574,213 +7574,6 @@ class Excel5 extends BaseReader implements IReader } - /** - * Read color - * - * @param int $color Indexed color - * @param array $palette Color palette - * @return array RGB color value, example: array('rgb' => 'FF0000') - */ - private static function readColor($color, $palette, $version) - { - if ($color <= 0x07 || $color >= 0x40) { - // special built-in color - return self::mapBuiltInColor($color); - } elseif (isset($palette) && isset($palette[$color - 8])) { - // palette color, color index 0x08 maps to pallete index 0 - return $palette[$color - 8]; - } else { - // default color table - if ($version == self::XLS_BIFF8) { - return self::mapColor($color); - } else { - // BIFF5 - return self::mapColorBIFF5($color); - } - } - - return $color; - } - - - /** - * Map border style - * OpenOffice documentation: 2.5.11 - * - * @param int $index - * @return string - */ - private static function mapBorderStyle($index) - { - switch ($index) { - case 0x00: - return PHPExcel\Style\Border::BORDER_NONE; - case 0x01: - return PHPExcel\Style\Border::BORDER_THIN; - case 0x02: - return PHPExcel\Style\Border::BORDER_MEDIUM; - case 0x03: - return PHPExcel\Style\Border::BORDER_DASHED; - case 0x04: - return PHPExcel\Style\Border::BORDER_DOTTED; - case 0x05: - return PHPExcel\Style\Border::BORDER_THICK; - case 0x06: - return PHPExcel\Style\Border::BORDER_DOUBLE; - case 0x07: - return PHPExcel\Style\Border::BORDER_HAIR; - case 0x08: - return PHPExcel\Style\Border::BORDER_MEDIUMDASHED; - case 0x09: - return PHPExcel\Style\Border::BORDER_DASHDOT; - case 0x0A: - return PHPExcel\Style\Border::BORDER_MEDIUMDASHDOT; - case 0x0B: - return PHPExcel\Style\Border::BORDER_DASHDOTDOT; - case 0x0C: - return PHPExcel\Style\Border::BORDER_MEDIUMDASHDOTDOT; - case 0x0D: - return PHPExcel\Style\Border::BORDER_SLANTDASHDOT; - default: - return PHPExcel\Style\Border::BORDER_NONE; - } - } - - - /** - * Get fill pattern from index - * OpenOffice documentation: 2.5.12 - * - * @param int $index - * @return string - */ - private static function mapFillPattern($index) - { - switch ($index) { - case 0x00: - return \PHPExcel\Style\Fill::FILL_NONE; - case 0x01: - return \PHPExcel\Style\Fill::FILL_SOLID; - case 0x02: - return \PHPExcel\Style\Fill::FILL_PATTERN_MEDIUMGRAY; - case 0x03: - return \PHPExcel\Style\Fill::FILL_PATTERN_DARKGRAY; - case 0x04: - return \PHPExcel\Style\Fill::FILL_PATTERN_LIGHTGRAY; - case 0x05: - return \PHPExcel\Style\Fill::FILL_PATTERN_DARKHORIZONTAL; - case 0x06: - return \PHPExcel\Style\Fill::FILL_PATTERN_DARKVERTICAL; - case 0x07: - return \PHPExcel\Style\Fill::FILL_PATTERN_DARKDOWN; - case 0x08: - return \PHPExcel\Style\Fill::FILL_PATTERN_DARKUP; - case 0x09: - return \PHPExcel\Style\Fill::FILL_PATTERN_DARKGRID; - case 0x0A: - return \PHPExcel\Style\Fill::FILL_PATTERN_DARKTRELLIS; - case 0x0B: - return \PHPExcel\Style\Fill::FILL_PATTERN_LIGHTHORIZONTAL; - case 0x0C: - return \PHPExcel\Style\Fill::FILL_PATTERN_LIGHTVERTICAL; - case 0x0D: - return \PHPExcel\Style\Fill::FILL_PATTERN_LIGHTDOWN; - case 0x0E: - return \PHPExcel\Style\Fill::FILL_PATTERN_LIGHTUP; - case 0x0F: - return \PHPExcel\Style\Fill::FILL_PATTERN_LIGHTGRID; - case 0x10: - return \PHPExcel\Style\Fill::FILL_PATTERN_LIGHTTRELLIS; - case 0x11: - return \PHPExcel\Style\Fill::FILL_PATTERN_GRAY125; - case 0x12: - return \PHPExcel\Style\Fill::FILL_PATTERN_GRAY0625; - default: - return \PHPExcel\Style\Fill::FILL_NONE; - } - } - - - /** - * Map error code, e.g. '#N/A' - * - * @param int $subData - * @return string - */ - private static function mapErrorCode($subData) - { - switch ($subData) { - case 0x00: - return '#NULL!'; - break; - case 0x07: - return '#DIV/0!'; - break; - case 0x0F: - return '#VALUE!'; - break; - case 0x17: - return '#REF!'; - break; - case 0x1D: - return '#NAME?'; - break; - case 0x24: - return '#NUM!'; - break; - case 0x2A: - return '#N/A'; - break; - default: - return false; - } - } - - - /** - * Map built-in color to RGB value - * - * @param int $color Indexed color - * @return array - */ - private static function mapBuiltInColor($color) - { - 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 $color - * @return array - */ - private static function mapColorBIFF5($color) - { - 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 $color - * @return array - */ - private static function mapColor($color) - { - if (isset(Excel5\Color\BIFF8::$map[$color])) { - return array('rgb' => Excel5\Color\BIFF8::$map[$color]); - } - return array('rgb' => '000000'); - } - private function parseRichText($is = '') { $value = new \PHPExcel\RichText(); diff --git a/src/PhpSpreadsheet/Reader/Excel5/Color.php b/src/PhpSpreadsheet/Reader/Excel5/Color.php new file mode 100644 index 00000000..62e0fa55 --- /dev/null +++ b/src/PhpSpreadsheet/Reader/Excel5/Color.php @@ -0,0 +1,34 @@ + 'FF0000') + */ + public static function map($color, $palette, $version) + { + if ($color <= 0x07 || $color >= 0x40) { + // special built-in color + return Color\BuiltIn::lookup($color); + } elseif (isset($palette) && isset($palette[$color - 8])) { + // palette color, color index 0x08 maps to pallete index 0 + return $palette[$color - 8]; + } else { + // default color table + if ($version == \PHPExcel\Reader\Excel5::XLS_BIFF8) { + return Color\BIFF8::lookup($color); + } else { + // BIFF5 + return Color\BIFF5::lookup($color); + } + } + + return $color; + } +} \ No newline at end of file diff --git a/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF5.php b/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF5.php index 63e997cf..89f83fd2 100644 --- a/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF5.php +++ b/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF5.php @@ -2,34 +2,9 @@ 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( + protected static $map = array( 0x08 => '000000', 0x09 => 'FFFFFF', 0x0A => 'FF0000', @@ -87,4 +62,18 @@ class BIFF5 0x3E => '4A3285', 0x3F => '424242', ); + + /** + * Map color array from BIFF5 built-in color index + * + * @param int $color + * @return array + */ + public static function lookup($color) + { + if (isset(self::$map[$color])) { + return array('rgb' => self::$map[$color]); + } + return array('rgb' => '000000'); + } } \ No newline at end of file diff --git a/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF8.php b/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF8.php index 378e1dd9..445b43d7 100644 --- a/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF8.php +++ b/src/PhpSpreadsheet/Reader/Excel5/Color/BIFF8.php @@ -2,34 +2,9 @@ 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( + protected static $map = array( 0x08 => '000000', 0x09 => 'FFFFFF', 0x0A => 'FF0000', @@ -87,4 +62,18 @@ class BIFF8 0x3E => '333399', 0x3F => '333333', ); + + /** + * Map color array from BIFF8 built-in color index + * + * @param int $color + * @return array + */ + public static function lookup($color) + { + if (isset(self::$map[$color])) { + return array('rgb' => self::$map[$color]); + } + return array('rgb' => '000000'); + } } \ No newline at end of file diff --git a/src/PhpSpreadsheet/Reader/Excel5/Color/BuiltIn.php b/src/PhpSpreadsheet/Reader/Excel5/Color/BuiltIn.php index c9df9c09..237a1e8c 100644 --- a/src/PhpSpreadsheet/Reader/Excel5/Color/BuiltIn.php +++ b/src/PhpSpreadsheet/Reader/Excel5/Color/BuiltIn.php @@ -2,34 +2,9 @@ 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( + protected static $map = array( 0x00 => '000000', 0x01 => 'FFFFFF', 0x02 => 'FF0000', @@ -41,4 +16,18 @@ class BuiltIn 0x40 => '000000', // system window text color 0x41 => 'FFFFFF', // system window background color ); + + /** + * Map built-in color to RGB value + * + * @param int $color Indexed color + * @return array + */ + public static function lookup($color) + { + if (isset(self::$map[$color])) { + return array('rgb' => self::$map[$color]); + } + return array('rgb' => '000000'); + } } \ No newline at end of file diff --git a/src/PhpSpreadsheet/Reader/Excel5/ErrorCode.php b/src/PhpSpreadsheet/Reader/Excel5/ErrorCode.php new file mode 100644 index 00000000..b9996ed1 --- /dev/null +++ b/src/PhpSpreadsheet/Reader/Excel5/ErrorCode.php @@ -0,0 +1,30 @@ + '#NULL!', + 0x07 => '#DIV/0!', + 0x0F => '#VALUE!', + 0x17 => '#REF!', + 0x1D => '#NAME?', + 0x24 => '#NUM!', + 0x2A => '#N/A', + ); + + /** + * Map error code, e.g. '#N/A' + * + * @param int $code + * @return string|boolean + */ + public static function lookup($code) + { + if (isset(self::$map[$code])) { + return self::$map[$code]; + } + return false; + } +} \ No newline at end of file diff --git a/src/PhpSpreadsheet/Reader/Excel5/Style/Border.php b/src/PhpSpreadsheet/Reader/Excel5/Style/Border.php new file mode 100644 index 00000000..6cb07bfe --- /dev/null +++ b/src/PhpSpreadsheet/Reader/Excel5/Style/Border.php @@ -0,0 +1,40 @@ + Border::BORDER_NONE, + 0x01 => Border::BORDER_THIN, + 0x02 => Border::BORDER_MEDIUM, + 0x03 => Border::BORDER_DASHED, + 0x04 => Border::BORDER_DOTTED, + 0x05 => Border::BORDER_THICK, + 0x06 => Border::BORDER_DOUBLE, + 0x07 => Border::BORDER_HAIR, + 0x08 => Border::BORDER_MEDIUMDASHED, + 0x09 => Border::BORDER_DASHDOT, + 0x0A => Border::BORDER_MEDIUMDASHDOT, + 0x0B => Border::BORDER_DASHDOTDOT, + 0x0C => Border::BORDER_MEDIUMDASHDOTDOT, + 0x0D => Border::BORDER_SLANTDASHDOT, + ); + + /** + * Map border style + * OpenOffice documentation: 2.5.11 + * + * @param int $index + * @return string + */ + public static function lookup($index) + { + if (isset(self::$map[$index])) { + return self::$map[$index]; + } + return Border::BORDER_NONE; + } +} \ No newline at end of file diff --git a/src/PhpSpreadsheet/Reader/Excel5/Style/FillPattern.php b/src/PhpSpreadsheet/Reader/Excel5/Style/FillPattern.php new file mode 100644 index 00000000..3b929836 --- /dev/null +++ b/src/PhpSpreadsheet/Reader/Excel5/Style/FillPattern.php @@ -0,0 +1,45 @@ + Fill::FILL_NONE, + 0x01 => Fill::FILL_SOLID, + 0x02 => Fill::FILL_PATTERN_MEDIUMGRAY, + 0x03 => Fill::FILL_PATTERN_DARKGRAY, + 0x04 => Fill::FILL_PATTERN_LIGHTGRAY, + 0x05 => Fill::FILL_PATTERN_DARKHORIZONTAL, + 0x06 => Fill::FILL_PATTERN_DARKVERTICAL, + 0x07 => Fill::FILL_PATTERN_DARKDOWN, + 0x08 => Fill::FILL_PATTERN_DARKUP, + 0x09 => Fill::FILL_PATTERN_DARKGRID, + 0x0A => Fill::FILL_PATTERN_DARKTRELLIS, + 0x0B => Fill::FILL_PATTERN_LIGHTHORIZONTAL, + 0x0C => Fill::FILL_PATTERN_LIGHTVERTICAL, + 0x0D => Fill::FILL_PATTERN_LIGHTDOWN, + 0x0E => Fill::FILL_PATTERN_LIGHTUP, + 0x0F => Fill::FILL_PATTERN_LIGHTGRID, + 0x10 => Fill::FILL_PATTERN_LIGHTTRELLIS, + 0x11 => Fill::FILL_PATTERN_GRAY125, + 0x12 => Fill::FILL_PATTERN_GRAY0625, + ); + + /** + * Get fill pattern from index + * OpenOffice documentation: 2.5.12 + * + * @param int $index + * @return string + */ + public static function lookup($index) + { + if (isset(self::$map[$index])) { + return self::$map[$index]; + } + return Fill::FILL_NONE; + } +} \ No newline at end of file