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 }; }