| using System; | |
| using System.Xml; | |
| /// <summary> | |
| /// Line end style. | |
| /// </summary> | |
| public enum eEndStyle //ST_LineEndType | |
| { | |
| /// <summary> | |
| /// No end | |
| /// </summary> | |
| None, | |
| /// <summary> | |
| /// Triangle arrow head | |
| /// </summary> | |
| Triangle, | |
| /// <summary> | |
| /// Stealth arrow head | |
| /// </summary> | |
| Stealth, | |
| /// <summary> | |
| /// Diamond | |
| /// </summary> | |
| Diamond, | |
| /// <summary> | |
| /// Oval | |
| /// </summary> | |
| Oval, | |
| /// <summary> | |
| /// Line arrow head | |
| /// </summary> | |
| Arrow | |
| } | |
| /// <summary> | |
| /// Lend end size. | |
| /// </summary> | |
| public enum eEndSize | |
| { | |
| /// <summary> | |
| /// Smal | |
| /// </summary> | |
| Small, | |
| /// <summary> | |
| /// Medium | |
| /// </summary> | |
| Medium, | |
| /// <summary> | |
| /// Large | |
| /// </summary> | |
| Large | |
| } | |
| namespace OfficeOpenXml.Drawing | |
| { | |
| /// <summary> | |
| /// Properties for drawing line ends | |
| /// </summary> | |
| public sealed class ExcelDrawingLineEnd:XmlHelper | |
| { | |
| string _linePath; | |
| internal ExcelDrawingLineEnd(XmlNamespaceManager nameSpaceManager, XmlNode topNode, string linePath) : | |
| base(nameSpaceManager, topNode) | |
| { | |
| SchemaNodeOrder = new string[] { "headEnd", "tailEnd" }; | |
| _linePath = linePath; | |
| } | |
| string _headEndStylePath = "xdr:sp/xdr:spPr/a:ln/a:headEnd/@type"; | |
| /// <summary> | |
| /// HeaderEnd | |
| /// </summary> | |
| public eEndStyle HeadEnd | |
| { | |
| get | |
| { | |
| return TranslateEndStyle(GetXmlNodeString(_headEndStylePath)); | |
| } | |
| set | |
| { | |
| CreateNode(_linePath, false); | |
| SetXmlNodeString(_headEndStylePath, TranslateEndStyleText(value)); | |
| } | |
| } | |
| string _tailEndStylePath = "xdr:sp/xdr:spPr/a:ln/a:tailEnd/@type"; | |
| /// <summary> | |
| /// HeaderEnd | |
| /// </summary> | |
| public eEndStyle TailEnd | |
| { | |
| get | |
| { | |
| return TranslateEndStyle(GetXmlNodeString(_tailEndStylePath)); | |
| } | |
| set | |
| { | |
| CreateNode(_linePath, false); | |
| SetXmlNodeString(_tailEndStylePath, TranslateEndStyleText(value)); | |
| } | |
| } | |
| string _tailEndSizeWidthPath = "xdr:sp/xdr:spPr/a:ln/a:tailEnd/@w"; | |
| /// <summary> | |
| /// TailEndSizeWidth | |
| /// </summary> | |
| public eEndSize TailEndSizeWidth | |
| { | |
| get | |
| { | |
| return TranslateEndSize(GetXmlNodeString(_tailEndSizeWidthPath)); | |
| } | |
| set | |
| { | |
| CreateNode(_linePath, false); | |
| SetXmlNodeString(_tailEndSizeWidthPath, TranslateEndSizeText(value)); | |
| } | |
| } | |
| string _tailEndSizeHeightPath = "xdr:sp/xdr:spPr/a:ln/a:tailEnd/@len"; | |
| /// <summary> | |
| /// TailEndSizeHeight | |
| /// </summary> | |
| public eEndSize TailEndSizeHeight | |
| { | |
| get | |
| { | |
| return TranslateEndSize(GetXmlNodeString(_tailEndSizeHeightPath)); | |
| } | |
| set | |
| { | |
| CreateNode(_linePath, false); | |
| SetXmlNodeString(_tailEndSizeHeightPath, TranslateEndSizeText(value)); | |
| } | |
| } | |
| string _headEndSizeWidthPath = "xdr:sp/xdr:spPr/a:ln/a:headEnd/@w"; | |
| /// <summary> | |
| /// TailEndSizeWidth | |
| /// </summary> | |
| public eEndSize HeadEndSizeWidth | |
| { | |
| get | |
| { | |
| return TranslateEndSize(GetXmlNodeString(_headEndSizeWidthPath)); | |
| } | |
| set | |
| { | |
| CreateNode(_linePath, false); | |
| SetXmlNodeString(_headEndSizeWidthPath, TranslateEndSizeText(value)); | |
| } | |
| } | |
| string _headEndSizeHeightPath = "xdr:sp/xdr:spPr/a:ln/a:headEnd/@len"; | |
| /// <summary> | |
| /// TailEndSizeHeight | |
| /// </summary> | |
| public eEndSize HeadEndSizeHeight | |
| { | |
| get | |
| { | |
| return TranslateEndSize(GetXmlNodeString(_headEndSizeHeightPath)); | |
| } | |
| set | |
| { | |
| CreateNode(_linePath, false); | |
| SetXmlNodeString(_headEndSizeHeightPath, TranslateEndSizeText(value)); | |
| } | |
| } | |
| #region "Translate Enum functions" | |
| private string TranslateEndStyleText(eEndStyle value) | |
| { | |
| return value.ToString().ToLower(); | |
| } | |
| private eEndStyle TranslateEndStyle(string text) | |
| { | |
| switch (text) | |
| { | |
| case "none": | |
| case "arrow": | |
| case "diamond": | |
| case "oval": | |
| case "stealth": | |
| case "triangle": | |
| return (eEndStyle)Enum.Parse(typeof(eEndStyle), text, true); | |
| default: | |
| throw (new Exception("Invalid Endstyle")); | |
| } | |
| } | |
| private string TranslateEndSizeText(eEndSize value) | |
| { | |
| string text = value.ToString(); | |
| switch (value) | |
| { | |
| case eEndSize.Small: | |
| return "sm"; | |
| case eEndSize.Medium: | |
| return "med"; | |
| case eEndSize.Large: | |
| return "lg"; | |
| default: | |
| throw (new Exception("Invalid Endsize")); | |
| } | |
| } | |
| private eEndSize TranslateEndSize(string text) | |
| { | |
| switch (text) | |
| { | |
| case "sm": | |
| case "med": | |
| case "lg": | |
| return (eEndSize)Enum.Parse(typeof(eEndSize), text, true); | |
| default: | |
| throw (new Exception("Invalid Endsize")); | |
| } | |
| } | |
| #endregion | |
| } | |
| } |