internal ExcelDrawingThemeColorManager(XmlNamespaceManager nameSpaceManager, XmlNode topNode, string path, string[] schemaNodeOrder, Action initMethod = null)
        {
            _nameSpaceManager = nameSpaceManager;
            _topNode          = topNode;
            _path             = path;
            _initMethod       = initMethod;
            _pathNode         = GetPathNode();
            _schemaNodeOrder  = schemaNodeOrder;
            if (_pathNode == null)
            {
                return;
            }

            if (IsTopNodeColorNode(_topNode))
            {
                _colorNode = _pathNode;
            }
            else
            {
                _colorNode = _pathNode.FirstChild;
            }

            if (_colorNode == null)
            {
                return;
            }

            switch (_colorNode.LocalName)
            {
            case "sysClr":
                ColorType   = eDrawingColorType.System;
                SystemColor = new ExcelDrawingSystemColor(_nameSpaceManager, _pathNode.FirstChild);
                break;

            case "scrgbClr":
                ColorType          = eDrawingColorType.RgbPercentage;
                RgbPercentageColor = new ExcelDrawingRgbPercentageColor(_nameSpaceManager, _pathNode.FirstChild);
                break;

            case "hslClr":
                ColorType = eDrawingColorType.Hsl;
                HslColor  = new ExcelDrawingHslColor(_nameSpaceManager, _pathNode.FirstChild);
                break;

            case "prstClr":
                ColorType   = eDrawingColorType.Preset;
                PresetColor = new ExcelDrawingPresetColor(_nameSpaceManager, _pathNode.FirstChild);
                break;

            case "srgbClr":
                ColorType = eDrawingColorType.Rgb;
                RgbColor  = new ExcelDrawingRgbColor(_nameSpaceManager, _pathNode.FirstChild);
                break;

            default:
                ColorType = eDrawingColorType.None;
                break;
            }
        }
        /// <summary>
        /// Sets a rgb color.
        /// </summary>
        /// <param name="color">The color</param>
        /// <param name="setAlpha">Apply the alpha part of the Color to the <see cref="Transforms"/> collection</param>
        public void SetRgbColor(Color color, bool setAlpha = false)
        {
            ColorType = eDrawingColorType.Rgb;
            ResetColors(ExcelDrawingRgbColor.NodeName);

            if (setAlpha && color.A != 0xFF)
            {
                Transforms.RemoveOfType(eColorTransformType.Alpha);
                Transforms.AddAlpha((double)color.A);
            }
            RgbColor = new ExcelDrawingRgbColor(_nameSpaceManager, _colorNode)
            {
                Color = color
            };
        }