blob: 9a17319b09a4b4c7e0bd45b44bf861a1a61412db [file] [log] [blame]
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
}
}