<?php

namespace LWVendor\PhpOffice\PhpSpreadsheet\Reader\Xml\Style;

use LWVendor\PhpOffice\PhpSpreadsheet\Style\Fill as FillStyles;
use SimpleXMLElement;
class Fill extends StyleBase
{
    /**
     * @var array
     */
    public const FILL_MAPPINGS = ['fillType' => [
        'solid' => FillStyles::FILL_SOLID,
        'gray75' => FillStyles::FILL_PATTERN_DARKGRAY,
        'gray50' => FillStyles::FILL_PATTERN_MEDIUMGRAY,
        'gray25' => FillStyles::FILL_PATTERN_LIGHTGRAY,
        'gray125' => FillStyles::FILL_PATTERN_GRAY125,
        'gray0625' => FillStyles::FILL_PATTERN_GRAY0625,
        'horzstripe' => FillStyles::FILL_PATTERN_DARKHORIZONTAL,
        // horizontal stripe
        'vertstripe' => FillStyles::FILL_PATTERN_DARKVERTICAL,
        // vertical stripe
        'reversediagstripe' => FillStyles::FILL_PATTERN_DARKUP,
        // reverse diagonal stripe
        'diagstripe' => FillStyles::FILL_PATTERN_DARKDOWN,
        // diagonal stripe
        'diagcross' => FillStyles::FILL_PATTERN_DARKGRID,
        // diagoanl crosshatch
        'thickdiagcross' => FillStyles::FILL_PATTERN_DARKTRELLIS,
        // thick diagonal crosshatch
        'thinhorzstripe' => FillStyles::FILL_PATTERN_LIGHTHORIZONTAL,
        'thinvertstripe' => FillStyles::FILL_PATTERN_LIGHTVERTICAL,
        'thinreversediagstripe' => FillStyles::FILL_PATTERN_LIGHTUP,
        'thindiagstripe' => FillStyles::FILL_PATTERN_LIGHTDOWN,
        'thinhorzcross' => FillStyles::FILL_PATTERN_LIGHTGRID,
        // thin horizontal crosshatch
        'thindiagcross' => FillStyles::FILL_PATTERN_LIGHTTRELLIS,
    ]];
    public function parseStyle(SimpleXMLElement $styleAttributes) : array
    {
        $style = [];
        foreach ($styleAttributes as $styleAttributeKey => $styleAttributeValuex) {
            $styleAttributeValue = (string) $styleAttributeValuex;
            switch ($styleAttributeKey) {
                case 'Color':
                    $style['fill']['endColor']['rgb'] = \substr($styleAttributeValue, 1);
                    $style['fill']['startColor']['rgb'] = \substr($styleAttributeValue, 1);
                    break;
                case 'PatternColor':
                    $style['fill']['startColor']['rgb'] = \substr($styleAttributeValue, 1);
                    break;
                case 'Pattern':
                    $lcStyleAttributeValue = \strtolower((string) $styleAttributeValue);
                    $style['fill']['fillType'] = self::FILL_MAPPINGS['fillType'][$lcStyleAttributeValue] ?? FillStyles::FILL_NONE;
                    break;
            }
        }
        return $style;
    }
}
