using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Xml; namespace OfficeOpenXml.Style.Dxf { public abstract class DxfStyleBase { protected ExcelStyles _styles; internal DxfStyleBase(ExcelStyles styles) { _styles = styles; AllowChange = false; //Don't touch this value in the styles.xml (by default). When Dxfs is fully implemented this can be removed. } protected internal abstract string Id { get; } protected internal abstract bool HasValue{get;} protected internal abstract void CreateNodes(XmlHelper helper, string path); protected internal abstract T Clone(); protected void SetValueColor(XmlHelper helper,string path, ExcelDxfColor color) { if (color != null && color.HasValue) { if (color.Color != null) { SetValue(helper, path + "/@rgb", color.Color.Value.ToArgb().ToString("x")); } else if (color.Auto != null) { SetValueBool(helper, path + "/@auto", color.Auto); } else if (color.Theme != null) { SetValue(helper, path + "/@theme", color.Theme); } else if (color.Index != null) { SetValue(helper, path + "/@indexed", color.Index); } if (color.Tint != null) { SetValue(helper, path + "/@tint", color.Tint); } } } /// /// Same as SetValue but will set first char to lower case. /// /// /// /// protected void SetValueEnum(XmlHelper helper, string path, Enum v) { if (v == null) { helper.DeleteNode(path); } else { var s = v.ToString(); s = s.Substring(0, 1).ToLower(CultureInfo.InvariantCulture) + s.Substring(1); helper.SetXmlNodeString(path, s); } } protected void SetValue(XmlHelper helper, string path, object v) { if (v == null) { helper.DeleteNode(path); } else { helper.SetXmlNodeString(path, v.ToString()); } } protected void SetValueBool(XmlHelper helper, string path, bool? v) { if (v == null) { helper.DeleteNode(path); } else { helper.SetXmlNodeBool(path, (bool)v); } } protected internal string GetAsString(object v) { return (v ?? "").ToString(); } /// /// Is this value allowed to be changed? /// protected internal bool AllowChange { get; set; } } }