/// <summary> /// Reset the color objects /// </summary> /// <param name="newNodeName">The new color node name</param> internal protected virtual void ResetColors(string newNodeName) { if (_colorNode == null) { var xml = XmlHelperFactory.Create(_nameSpaceManager, _topNode); xml.SchemaNodeOrder = _schemaNodeOrder; var colorPath = string.IsNullOrEmpty(_path) ? newNodeName : _path + "/" + newNodeName; _colorNode = xml.CreateNode(colorPath); _initMethod?.Invoke(); } if (_colorNode.Name == newNodeName) { return; } else { _transforms = null; ChangeType(newNodeName); } RgbColor = null; RgbPercentageColor = null; HslColor = null; PresetColor = null; SystemColor = null; }
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 system color /// </summary> /// <param name="systemColor">The colors</param> public void SetSystemColor(eSystemColor systemColor) { ColorType = eDrawingColorType.System; ResetColors(ExcelDrawingSystemColor.NodeName); SystemColor = new ExcelDrawingSystemColor(_nameSpaceManager, _colorNode) { Color = systemColor }; }