/************************************************************************************* DocX – DocX is the community edition of Xceed Words for .NET Copyright (C) 2009-2016 Xceed Software Inc. This program is provided to you under the terms of the Microsoft Public License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license For more features and fast professional support, pick up Xceed Words for .NET at https://xceed.com/xceed-words-for-net/ ***********************************************************************************/ using System; using System.Collections.Generic; using System.Xml.Linq; namespace Xceed.Words.NET { /// /// This element contains the 2-D bar or column series on this chart. /// 21.2.2.16 barChart (Bar Charts) /// public class BarChart : Chart { #region Public Properties /// /// Specifies the possible directions for a bar chart. /// public BarDirection BarDirection { get { return XElementHelpers.GetValueToEnum( ChartXml.Element(XName.Get("barDir", DocX.c.NamespaceName))); } set { XElementHelpers.SetValueFromEnum( ChartXml.Element(XName.Get("barDir", DocX.c.NamespaceName)), value); } } /// /// Specifies the possible groupings for a bar chart. /// public BarGrouping BarGrouping { get { return XElementHelpers.GetValueToEnum( ChartXml.Element(XName.Get("grouping", DocX.c.NamespaceName))); } set { XElementHelpers.SetValueFromEnum( ChartXml.Element(XName.Get("grouping", DocX.c.NamespaceName)), value); } } /// /// Specifies that its contents contain a percentage between 0% and 500%. /// public Int32 GapWidth { get { return Convert.ToInt32( ChartXml.Element(XName.Get("gapWidth", DocX.c.NamespaceName)).Attribute(XName.Get("val")).Value); } set { if ((value < 1) || (value > 500)) throw new ArgumentException("GapWidth lay between 0% and 500%!"); ChartXml.Element(XName.Get("gapWidth", DocX.c.NamespaceName)).Attribute(XName.Get("val")).Value = value.ToString(); } } public string Title { set { var t = new XElement(XE.A.CName("t"), value); var rpr = new XElement(XE.A.CName("rPr"), XE.A.CAttr("lang", "zh-CN"), XE.A.CAttr("altLang", "en-US")); var pPr = new XElement(XE.A.CName("pPr"), XE.A.CAttr("defTabSz", "914400"), XE.A.CElement("defRPr", new List(XE.A.CAttrs("lang=zh-CN sz=1400 b=0 i=0 u=none strike=noStrike kern=1200 spc=0 baseline=0")) { XE.A.CElement("solidFill",XE.A.CElement("schemeClr",XE.A.CAttr("val=tx1"),XE.A.CElement("lumMod","65000"),XE.A.CElement("lumOff","35000"))) }.ToArray()) ); var bodyPr = XE.A.CElement("bodyPr", XE.A.CAttrs("rot=0 spcFirstLastPara=0 vertOverflow=ellipsis vert=horz wrap=square anchor=ctr anchorCtr=1")); var rich = XE.C.CElement("rich", bodyPr, XE.A.CElement("lstStyle"), XE.A.CElement("p", pPr, XE.A.CElement("r", rpr, t))); var title = XE.C.CElement("title", XE.C.CElement("tx", rich), XE.C.CElement("overlay", "0")); this.ChartRootXml.AddFirst(title); } } public bool ShowDataTable { set { var pPr = XE.A.CElement("pPr", XE.A.CAttr("rtl", "0"), XE.A.CElement("defRPr", new List(XE.A.CAttrs("lang=zh-CN sz=1000 b=0 i=0 u=none strike=noStrike kern=1200 baseline=0")) { XE.A.CElement("solidFill", XE.A.CElement("schemeClr", "tx1")) }.ToArray()) ); var bodyPr = XE.A.CElement("bodyPr", XE.A.CAttrs("rot=0 spcFirstLastPara=0 vertOverflow=ellipsis vert=horz wrap=square anchor=ctr anchorCtr=1").ToArray()); var p = XE.A.CElement("p", pPr, XE.A.CElement("endParaRPr", "zh-CN", "lang")); var txPr = XE.C.CElement("txPr", bodyPr, XE.A.CElement("lstStyle"), p); var table = XE.C.CElement("dTable",XE.C.CElement("showHorzBorder","1"), XE.C.CElement("showVertBorder", "1"), XE.C.CElement("showOutline", "1"), XE.C.CElement("showKeys","1"), txPr ); this.ChartRootXml.Element(XE.C.CName("plotArea")).LastNode.AddAfterSelf(table); } } #endregion #region Overrides protected override XElement CreateChartXml() { return XElement.Parse( @" "); } #endregion } /// /// Specifies the possible directions for a bar chart. /// 21.2.3.3 ST_BarDir (Bar Direction) /// public enum BarDirection { [XmlName("col")] Column, [XmlName("bar")] Bar } /// /// Specifies the possible groupings for a bar chart. /// 21.2.3.4 ST_BarGrouping (Bar Grouping) /// public enum BarGrouping { [XmlName("clustered")] Clustered, [XmlName("percentStacked")] PercentStacked, [XmlName("stacked")] Stacked, [XmlName("standard")] Standard } }