using System; using System.Globalization; using System.Drawing; using FastReport.Utils; using FastReport.Barcode; using System.Xml; using System.Windows.Forms; #if MSCHART using FastReport.DataVisualization.Charting; #endif namespace FastReport.Import.JasperReports { /// /// The JasperReports units converter. /// public static class UnitsConverter { #region Public Methods /// /// Converts value to Boolean. /// /// Boolen value as string. public static bool ConvertBool(string str) { return str.ToLower() == "true"; } /// /// Converts string to PictureBoxSizeMode. /// /// /// public static PictureBoxSizeMode ConvertImageSizeMode(string value) { switch (value) { case "RetainShape": return PictureBoxSizeMode.Zoom; case "Clip": return PictureBoxSizeMode.Normal; case "FillFrame": return PictureBoxSizeMode.StretchImage; case "RealHeight": case "RealSize": return PictureBoxSizeMode.AutoSize; } return PictureBoxSizeMode.Normal; } /// /// Parse int value. /// /// /// public static int ConvertInt(string strInt) { int result = 0; int.TryParse(strInt, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out result); return result; } /// /// Parse float value /// /// /// public static float ConvertFloat(string strFloat) { float result = 0; float.TryParse(strFloat, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out result); return result; } /// /// Converts JasperReports Color. /// /// The DevExpress Color value as string. /// The Color value. public static Color ConvertColor(string str) { if (!String.IsNullOrEmpty(str)) { return ColorTranslator.FromHtml(str); } return Color.Black; } /// /// Converts string to QRCodeErrorCorrection. /// /// /// public static QRCodeErrorCorrection ConvertErrorCorrection(string value) { switch (value) { case "M": return QRCodeErrorCorrection.M; case "Q": return QRCodeErrorCorrection.Q; case "H": return QRCodeErrorCorrection.H; case "L": return QRCodeErrorCorrection.L; default: return QRCodeErrorCorrection.L; } } /// /// Parse BorderLine from XmlNode. /// /// /// public static BorderLine ConvertBorderLine(XmlNode node) { BorderLine line = new BorderLine(); if (node.Attributes["lineWidth"] != null) line.Width = ConvertInt(node.Attributes["lineWidth"].Value) * DrawUtils.ScreenDpi / 96f; if (node.Attributes["lineColor"] != null) line.Color = ConvertColor(node.Attributes["lineColor"].Value); if (node.Attributes["lineStyle"] != null) line.Style = ConvertLineStyle(node.Attributes["lineStyle"].Value); return line; } /// /// Converts JasperReports Border. /// /// /// public static Border ConvertBorder(XmlNode border) { Border result = new Border(); foreach (XmlNode node in border.ChildNodes) { if (node.Name == "pen") { result.TopLine = ConvertBorderLine(node); result.LeftLine = result.TopLine; result.BottomLine = result.TopLine; result.RightLine = result.TopLine; result.Lines = BorderLines.All; } if (node.Name == "topPen") { result.TopLine = ConvertBorderLine(node); result.Lines |= BorderLines.Top; } if (node.Name == "leftPen") { result.LeftLine = ConvertBorderLine(node); result.Lines |= BorderLines.Left; } if (node.Name == "bottomPen") { result.BottomLine = ConvertBorderLine(node); result.Lines |= BorderLines.Bottom; } if (node.Name == "rightPen") { result.RightLine = ConvertBorderLine(node); result.Lines |= BorderLines.Right; } } return result; } /// /// Converts the JasperReports BorderDashStyle to LineStyle. /// /// The DevExpress BorderDashStyle value. /// The LineStyle value. public static LineStyle ConvertBorderDashStyle(string borderDashStyle) { if (borderDashStyle.Equals("Dot")) { return LineStyle.Dot; } else if (borderDashStyle.Equals("Dash")) { return LineStyle.Dash; } else if (borderDashStyle.Equals("DashDot")) { return LineStyle.DashDot; } else if (borderDashStyle.Equals("DashDotDot")) { return LineStyle.DashDotDot; } else if (borderDashStyle.Equals("Double")) { return LineStyle.Double; } return LineStyle.Solid; } /// /// Converts the JasperReports LineStyle to LineStyle. /// /// The JasperReports LineStyle value. /// The LineStyle value. public static LineStyle ConvertLineStyle(string lineStyle) { if (lineStyle == "Dotted") { return LineStyle.Dot; } else if (lineStyle == "Dashed") { return LineStyle.Dash; } else if (lineStyle == "Double") { return LineStyle.Double; } return LineStyle.Solid; } /// /// Converts the JasperReports TextAlignment to HorzAlignment. /// /// The JasperReports TextAlignment value. /// The HorzAlign value. public static HorzAlign ConvertTextAlignmentToHorzAlign(string textAlignment) { if (textAlignment.Contains("Center")) { return HorzAlign.Center; } if (textAlignment.Contains("Justified")) { return HorzAlign.Justify; } if (textAlignment.Contains("Right")) { return HorzAlign.Right; } return HorzAlign.Left; } /// /// Converts the JasperReports rotation to int. /// /// /// public static int ConvertRotation(string rotation) { switch (rotation) { case "Right": return 90; case "Left": return 270; case "UpsideDown": return 180; } return 0; } /// /// Converts the JasperReports TextAlignment to VertAlignment. /// /// The JasperReports TextAlignment value. /// The VertAlign value. public static VertAlign ConvertTextAlignmentToVertAlign(string textAlignment) { if (textAlignment.Contains("Middle")) { return VertAlign.Center; } if (textAlignment.Contains("Bottom")) { return VertAlign.Bottom; } return VertAlign.Top; } /// /// Converts the JasperReports Barcode.Symbology to Barcode.Barcode. /// /// The JasperReports Barcode.Symbology value as string. /// The BarcodeObject instance. public static void ConvertBarcodeSymbology(string symbology, BarcodeObject barcode) { switch (symbology) { case "ean128": barcode.Barcode = new BarcodeEAN128(); break; case "pdf417": barcode.Barcode = new BarcodePDF417(); break; case "ean13": barcode.Barcode = new BarcodeEAN13(); break; case "uspsintelligentmail": case "usps": barcode.Barcode = new BarcodeIntelligentMail(); break; case "code128a": case "code128b": case "code128c": case "code128": barcode.Barcode = new Barcode128(); break; case "code39": barcode.Barcode = new Barcode39(); break; case "code39 (extended)": barcode.Barcode = new Barcode39Extended(); break; case "codabar": barcode.Barcode = new BarcodeCodabar(); break; case "upca": barcode.Barcode = new BarcodeUPC_A(); break; case "interleaved2of5": case "int2of5": barcode.Barcode = new Barcode2of5Interleaved(); break; case "std2of5": barcode.Barcode = new Barcode2of5Industrial(); break; case "postnet": barcode.Barcode = new BarcodePostNet(); break; case "upce": barcode.Barcode = new BarcodeUPC_E0(); break; case "datamatrix": barcode.Barcode = new BarcodeDatamatrix(); break; case "ean8": barcode.Barcode = new BarcodeEAN8(); break; default: barcode.Barcode = new Barcode39(); break; } } /// /// Convert JasperReports HyperlinkType to HyperlinkKind. /// /// /// public static HyperlinkKind ConvertHyperlinkType(XmlNode node) { if (node.Attributes["hyperlinkType"] != null) { switch (node.Attributes["hyperlinkType"].Value) { case "LocalAnchor": return HyperlinkKind.Bookmark; case "LocalPage": return HyperlinkKind.PageNumber; case "Reference": return HyperlinkKind.URL; } } return HyperlinkKind.Custom; } #if MSCHART /// /// Converts the JasperReports SeriesChartType to SeriesChartType. /// /// /// public static SeriesChartType ConvertChartType(string value) { switch (value) { case "pie3DChart": case "pieChart": return SeriesChartType.Pie; case "stackedBar3DChart": case "stackedBarChart": return SeriesChartType.StackedColumn; case "xyBarChart": case "bar3DChart": case "barChart": return SeriesChartType.Column; case "scatterChart": case "xyLineChart": case "lineChart": case "timeSeriesChart": return SeriesChartType.Line; case "c:spiderChart": return SeriesChartType.Radar; case "xyAreaChart": case "areaChart": return SeriesChartType.Area; case "highLowChart": return SeriesChartType.RangeColumn; case "candlestickChart": return SeriesChartType.Candlestick; case "stackedAreaChart": return SeriesChartType.StackedArea; case "bubbleChart": return SeriesChartType.Bubble; case "thermometerChart": case "meterChart": case "ganttChart": case "multiAxisPlot": default: return SeriesChartType.Column; } } #endif #endregion // Public Methods } }