123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404 |
- using FastReport.MSChart;
- using System;
- using System.Drawing;
- using FastReport.DataVisualization.Charting;
- using System.Xml;
- namespace FastReport.Import.RDL
- {
- public partial class RDLImport
- {
- private void LoadBorderColorT(XmlNode borderColorNode, Title title)
- {
- XmlNodeList nodeList = borderColorNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Default")
- {
- title.BorderColor = UnitsConverter.ConvertColor(node.InnerText);
- }
- }
- }
- private void LoadBorderStyleT(XmlNode borderStyleNode, Title title)
- {
- XmlNodeList nodeList = borderStyleNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Default")
- {
- title.BorderDashStyle = UnitsConverter.ConvertBorderStyleToChartDashStyle(node.InnerText);
- }
- }
- }
- private void LoadBorderWidthT(XmlNode borderWidthNode, Title title)
- {
- XmlNodeList nodeList = borderWidthNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Default")
- {
- title.BorderWidth = (int)UnitsConverter.SizeToPixels(node.InnerText);
- }
- }
- }
- private void LoadStyleT(XmlNode styleNode, Title title)
- {
- FontStyle fontStyle = FontStyle.Regular;
- string fontFamily = "Arial";
- float fontSize = 10.0f;
- string textAlign = "";
- string vertAlign = "";
- XmlNodeList nodeList = styleNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "BorderColor")
- {
- LoadBorderColorT(node, title);
- }
- else if (node.Name == "BorderStyle")
- {
- LoadBorderStyleT(node, title);
- }
- else if (node.Name == "BorderWidth")
- {
- LoadBorderWidthT(node, title);
- }
- else if (node.Name == "BackgroundColor")
- {
- title.BackColor = UnitsConverter.ConvertColor(node.InnerText);
- }
- else if (node.Name == "BackgroundGradientType")
- {
- title.BackGradientStyle = UnitsConverter.ConvertGradientType(node.InnerText);
- }
- else if (node.Name == "BackgroundGradientEndColor")
- {
- title.BackSecondaryColor = UnitsConverter.ConvertColor(node.InnerText);
- }
- else if (node.Name == "FontStyle")
- {
- fontStyle = UnitsConverter.ConvertFontStyle(node.InnerText);
- }
- else if (node.Name == "FontFamily")
- {
- fontFamily = node.InnerText;
- }
- else if (node.Name == "FontSize")
- {
- fontSize = Convert.ToSingle(UnitsConverter.ConvertFontSize(node.InnerText));
- }
- else if (node.Name == "TextAlign")
- {
- textAlign = node.InnerText;
- }
- else if (node.Name == "VerticalAlign")
- {
- vertAlign = node.InnerText;
- }
- else if (node.Name == "Color")
- {
- title.ForeColor = UnitsConverter.ConvertColor(node.InnerText);
- }
- }
- title.Font = new Font(fontFamily, fontSize, fontStyle);
- title.Alignment = UnitsConverter.ConvertTextAndVerticalAlign(textAlign, vertAlign);
- }
- private void LoadTitleA(XmlNode titleNode, Axis axis)
- {
- XmlNodeList nodeList = titleNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Caption")
- {
- axis.Title = node.InnerText;
- }
- else if (node.Name == "Style")
- {
- string fontFamily = "Arial";
- float fontSize = 10.0f;
- FontStyle fontStyle = FontStyle.Regular;
- foreach (XmlNode styleNode in node.ChildNodes)
- {
- if (styleNode.Name == "FontStyle")
- {
- fontStyle = UnitsConverter.ConvertFontStyle(styleNode.InnerText);
- }
- else if (styleNode.Name == "FontFamily")
- {
- fontFamily = styleNode.InnerText;
- }
- else if (styleNode.Name == "FontSize")
- {
- fontSize = Convert.ToSingle(UnitsConverter.ConvertFontSize(styleNode.InnerText));
- }
- else if (styleNode.Name == "TextAlign")
- {
- axis.TitleAlignment = UnitsConverter.ConvertTextAlignToStringAlignment(styleNode.InnerText);
- }
- else if (styleNode.Name == "Color")
- {
- axis.TitleForeColor = UnitsConverter.ConvertColor(styleNode.InnerText);
- }
- }
- axis.TitleFont = new Font(fontFamily, fontSize, fontStyle);
- }
- }
- }
- private void LoadDataPoint(XmlNode dataPointNode)
- {
- XmlNodeList nodeList = dataPointNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Style")
- {
- LoadStyleExt(node);
- }
- }
- }
- private void LoadDataPoints(XmlNode dataPointsNode)
- {
- XmlNodeList nodeList = dataPointsNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "DataPoint")
- {
- LoadDataPoint(node);
- }
- }
- }
- private void LoadChartSeries(XmlNode chartSeriesNode)
- {
- XmlNodeList nodeList = chartSeriesNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "DataPoints")
- {
- LoadDataPoints(node);
- }
- }
- }
- private void LoadChartData(XmlNode chartDataNode)
- {
- XmlNodeList nodeList = chartDataNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "ChartSeries")
- {
- LoadChartSeries(node);
- }
- }
- }
- private void LoadLegend(XmlNode legendNode)
- {
- Legend legend = (component as MSChartObject).Chart.Legends[0];
- XmlNodeList nodeList = legendNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Visible")
- {
- legend.Enabled = UnitsConverter.BooleanToBool(node.InnerText);
- }
- else if (node.Name == "Style")
- {
- LoadStyleExt(node);
- }
- else if (node.Name == "Position")
- {
- UnitsConverter.ConvertChartLegendPosition(node.InnerText, legend);
- }
- else if (node.Name == "Layout")
- {
- legend.LegendStyle = UnitsConverter.ConvertChartLegendLayout(node.InnerText);
- }
- else if (node.Name == "InsidePlotArea")
- {
- legend.IsDockedInsideChartArea = UnitsConverter.BooleanToBool(node.InnerText);
- }
- }
- }
- private void LoadTitle(XmlNode titleNode)
- {
- Title title = (component as MSChartObject).Chart.Titles[0];
- XmlNodeList nodeList = titleNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Caption")
- {
- title.Text = node.InnerText;
- }
- else if (node.Name == "Style")
- {
- LoadStyleT(node, title);
- }
- }
- }
- private void LoadGridLines(XmlNode gridLinesNode, Grid grid)
- {
- XmlNodeList nodeList = gridLinesNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "ShowGridLines")
- {
- grid.Enabled = UnitsConverter.BooleanToBool(node.InnerText);
- }
- else if (node.Name == "Style")
- {
- foreach (XmlNode subNode in node.ChildNodes)
- {
- if (subNode.Name == "BorderStyle")
- {
- grid.LineDashStyle = UnitsConverter.ConvertBorderStyleToChartDashStyle(subNode.FirstChild.InnerText);
- }
- else if (subNode.Name == "BorderColor")
- {
- grid.LineColor = UnitsConverter.ConvertColor(subNode.FirstChild.InnerText);
- }
- else if (subNode.Name == "BorderWidth")
- {
- grid.LineWidth = (int)UnitsConverter.SizeToPixels(subNode.FirstChild.InnerText);
- }
- }
- }
- }
- }
- private void LoadAxis(XmlNode axisNode, Axis axis)
- {
- XmlNodeList nodeList = axisNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Visible")
- {
- axis.Enabled = UnitsConverter.ConvertAxisVisibleToAxisEnabled(node.InnerText);
- }
- else if (node.Name == "Title")
- {
- LoadTitleA(node, axis);
- }
- else if (node.Name == "Margin")
- {
- axis.IsMarginVisible = UnitsConverter.BooleanToBool(node.InnerText);
- }
- else if (node.Name == "MajorTickMarks")
- {
- axis.MajorTickMark.TickMarkStyle = UnitsConverter.ConvertTickMarkStyle(node.InnerText);
- }
- else if (node.Name == "MinorTickMarks")
- {
- axis.MinorTickMark.TickMarkStyle = UnitsConverter.ConvertTickMarkStyle(node.InnerText);
- }
- else if (node.Name == "MajorGridLines")
- {
- LoadGridLines(node, axis.MajorGrid);
- }
- else if (node.Name == "MinorGridLines")
- {
- LoadGridLines(node, axis.MinorGrid);
- }
- else if (node.Name == "Reverse")
- {
- axis.IsReversed = UnitsConverter.BooleanToBool(node.InnerText);
- }
- else if (node.Name == "Interlaced")
- {
- axis.IsInterlaced = UnitsConverter.BooleanToBool(node.InnerText);
- }
- }
- }
- private void LoadCategoryAxis(XmlNode categoryAxisNode)
- {
- XmlNodeList nodeList = categoryAxisNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Axis")
- {
- LoadAxis(node, (component as MSChartObject).Chart.ChartAreas[0].AxisX);
- }
- }
- }
- private void LoadValueAxis(XmlNode valueAxisNode)
- {
- XmlNodeList nodeList = valueAxisNode.ChildNodes;
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Axis")
- {
- LoadAxis(node, (component as MSChartObject).Chart.ChartAreas[0].AxisY);
- }
- }
- }
- partial void LoadChart(XmlNode chartNode)
- {
- component = ComponentsFactory.CreateMSChartObject(chartNode.Attributes["Name"].Value, parent);
- MSChartObject chart = (component as MSChartObject);
- chart.Series.Clear();
- MSChartSeries series = new MSChartSeries();
- chart.Series.Add(series);
- series.CreateUniqueName();
- chart.Chart.Series.Add(new Series());
- Legend legend = new Legend();
- chart.Chart.Legends.Add(legend);
- legend.Enabled = false;
- legend.BackColor = Color.Transparent;
- Title title = new Title();
- chart.Chart.Titles.Add(title);
- title.Visible = true;
- ChartArea chartArea = new ChartArea("Default");
- chart.Chart.ChartAreas.Add(chartArea);
- chartArea.BackColor = Color.Transparent;
- chartArea.AxisX = new Axis();
- chartArea.AxisX.IsMarginVisible = false;
- chartArea.AxisY = new Axis();
- chartArea.AxisY.IsMarginVisible = false;
- chartArea.Area3DStyle.LightStyle = LightStyle.None;
- XmlNodeList nodeList = chartNode.ChildNodes;
- LoadReportItem(nodeList);
- foreach (XmlNode node in nodeList)
- {
- if (node.Name == "Type")
- {
- series.SeriesSettings.ChartType = UnitsConverter.ConvertChartType(node.InnerText);
- }
- else if (node.Name == "Legend")
- {
- LoadLegend(node);
- }
- else if (node.Name == "CategoryAxis")
- {
- LoadCategoryAxis(node);
- }
- else if (node.Name == "ValueAxis")
- {
- LoadValueAxis(node);
- }
- else if (node.Name == "Title")
- {
- LoadTitle(node);
- }
- else if (node.Name == "Palette")
- {
- chart.Chart.Palette = UnitsConverter.ConvertChartPalette(node.InnerText);
- }
- else if (node.Name == "ThreeDProperties")
- {
- LoadThreeDProperties(node);
- }
- }
- }
- }
- }
|