UnitsConverter.cs 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425
  1. using System;
  2. using System.Globalization;
  3. using System.Drawing;
  4. using FastReport.Utils;
  5. using FastReport.Barcode;
  6. using System.Xml;
  7. using System.Windows.Forms;
  8. #if MSCHART
  9. using FastReport.DataVisualization.Charting;
  10. #endif
  11. namespace FastReport.Import.JasperReports
  12. {
  13. /// <summary>
  14. /// The JasperReports units converter.
  15. /// </summary>
  16. public static class UnitsConverter
  17. {
  18. #region Public Methods
  19. /// <summary>
  20. /// Converts value to Boolean.
  21. /// </summary>
  22. /// <param name="str">Boolen value as string.</param>
  23. public static bool ConvertBool(string str)
  24. {
  25. return str.ToLower() == "true";
  26. }
  27. /// <summary>
  28. /// Converts string to PictureBoxSizeMode.
  29. /// </summary>
  30. /// <param name="value"></param>
  31. /// <returns></returns>
  32. public static PictureBoxSizeMode ConvertImageSizeMode(string value)
  33. {
  34. switch (value)
  35. {
  36. case "RetainShape":
  37. return PictureBoxSizeMode.Zoom;
  38. case "Clip":
  39. return PictureBoxSizeMode.Normal;
  40. case "FillFrame":
  41. return PictureBoxSizeMode.StretchImage;
  42. case "RealHeight":
  43. case "RealSize":
  44. return PictureBoxSizeMode.AutoSize;
  45. }
  46. return PictureBoxSizeMode.Normal;
  47. }
  48. /// <summary>
  49. /// Parse int value.
  50. /// </summary>
  51. /// <param name="strInt"></param>
  52. /// <returns></returns>
  53. public static int ConvertInt(string strInt)
  54. {
  55. int result = 0;
  56. int.TryParse(strInt, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out result);
  57. return result;
  58. }
  59. /// <summary>
  60. /// Parse float value
  61. /// </summary>
  62. /// <param name="strFloat"></param>
  63. /// <returns></returns>
  64. public static float ConvertFloat(string strFloat)
  65. {
  66. float result = 0;
  67. float.TryParse(strFloat, NumberStyles.Float, NumberFormatInfo.InvariantInfo, out result);
  68. return result;
  69. }
  70. /// <summary>
  71. /// Converts JasperReports Color.
  72. /// </summary>
  73. /// <param name="str">The DevExpress Color value as string.</param>
  74. /// <returns>The Color value.</returns>
  75. public static Color ConvertColor(string str)
  76. {
  77. if (!String.IsNullOrEmpty(str))
  78. {
  79. return ColorTranslator.FromHtml(str);
  80. }
  81. return Color.Black;
  82. }
  83. /// <summary>
  84. /// Converts string to QRCodeErrorCorrection.
  85. /// </summary>
  86. /// <param name="value"></param>
  87. /// <returns></returns>
  88. public static QRCodeErrorCorrection ConvertErrorCorrection(string value)
  89. {
  90. switch (value)
  91. {
  92. case "M":
  93. return QRCodeErrorCorrection.M;
  94. case "Q":
  95. return QRCodeErrorCorrection.Q;
  96. case "H":
  97. return QRCodeErrorCorrection.H;
  98. case "L":
  99. return QRCodeErrorCorrection.L;
  100. default:
  101. return QRCodeErrorCorrection.L;
  102. }
  103. }
  104. /// <summary>
  105. /// Parse BorderLine from XmlNode.
  106. /// </summary>
  107. /// <param name="node"></param>
  108. /// <returns></returns>
  109. public static BorderLine ConvertBorderLine(XmlNode node)
  110. {
  111. BorderLine line = new BorderLine();
  112. if (node.Attributes["lineWidth"] != null)
  113. line.Width = ConvertInt(node.Attributes["lineWidth"].Value) * DrawUtils.ScreenDpi / 96f;
  114. if (node.Attributes["lineColor"] != null)
  115. line.Color = ConvertColor(node.Attributes["lineColor"].Value);
  116. if (node.Attributes["lineStyle"] != null)
  117. line.Style = ConvertLineStyle(node.Attributes["lineStyle"].Value);
  118. return line;
  119. }
  120. /// <summary>
  121. /// Converts JasperReports Border.
  122. /// </summary>
  123. /// <param name="border"></param>
  124. /// <returns></returns>
  125. public static Border ConvertBorder(XmlNode border)
  126. {
  127. Border result = new Border();
  128. foreach (XmlNode node in border.ChildNodes)
  129. {
  130. if (node.Name == "pen")
  131. {
  132. result.TopLine = ConvertBorderLine(node);
  133. result.LeftLine = result.TopLine;
  134. result.BottomLine = result.TopLine;
  135. result.RightLine = result.TopLine;
  136. result.Lines = BorderLines.All;
  137. }
  138. if (node.Name == "topPen")
  139. {
  140. result.TopLine = ConvertBorderLine(node);
  141. result.Lines |= BorderLines.Top;
  142. }
  143. if (node.Name == "leftPen")
  144. {
  145. result.LeftLine = ConvertBorderLine(node);
  146. result.Lines |= BorderLines.Left;
  147. }
  148. if (node.Name == "bottomPen")
  149. {
  150. result.BottomLine = ConvertBorderLine(node);
  151. result.Lines |= BorderLines.Bottom;
  152. }
  153. if (node.Name == "rightPen")
  154. {
  155. result.RightLine = ConvertBorderLine(node);
  156. result.Lines |= BorderLines.Right;
  157. }
  158. }
  159. return result;
  160. }
  161. /// <summary>
  162. /// Converts the JasperReports BorderDashStyle to LineStyle.
  163. /// </summary>
  164. /// <param name="borderDashStyle">The DevExpress BorderDashStyle value.</param>
  165. /// <returns>The LineStyle value.</returns>
  166. public static LineStyle ConvertBorderDashStyle(string borderDashStyle)
  167. {
  168. if (borderDashStyle.Equals("Dot"))
  169. {
  170. return LineStyle.Dot;
  171. }
  172. else if (borderDashStyle.Equals("Dash"))
  173. {
  174. return LineStyle.Dash;
  175. }
  176. else if (borderDashStyle.Equals("DashDot"))
  177. {
  178. return LineStyle.DashDot;
  179. }
  180. else if (borderDashStyle.Equals("DashDotDot"))
  181. {
  182. return LineStyle.DashDotDot;
  183. }
  184. else if (borderDashStyle.Equals("Double"))
  185. {
  186. return LineStyle.Double;
  187. }
  188. return LineStyle.Solid;
  189. }
  190. /// <summary>
  191. /// Converts the JasperReports LineStyle to LineStyle.
  192. /// </summary>
  193. /// <param name="lineStyle">The JasperReports LineStyle value.</param>
  194. /// <returns>The LineStyle value.</returns>
  195. public static LineStyle ConvertLineStyle(string lineStyle)
  196. {
  197. if (lineStyle == "Dotted")
  198. {
  199. return LineStyle.Dot;
  200. }
  201. else if (lineStyle == "Dashed")
  202. {
  203. return LineStyle.Dash;
  204. }
  205. else if (lineStyle == "Double")
  206. {
  207. return LineStyle.Double;
  208. }
  209. return LineStyle.Solid;
  210. }
  211. /// <summary>
  212. /// Converts the JasperReports TextAlignment to HorzAlignment.
  213. /// </summary>
  214. /// <param name="textAlignment">The JasperReports TextAlignment value.</param>
  215. /// <returns>The HorzAlign value.</returns>
  216. public static HorzAlign ConvertTextAlignmentToHorzAlign(string textAlignment)
  217. {
  218. if (textAlignment.Contains("Center"))
  219. {
  220. return HorzAlign.Center;
  221. }
  222. if (textAlignment.Contains("Justified"))
  223. {
  224. return HorzAlign.Justify;
  225. }
  226. if (textAlignment.Contains("Right"))
  227. {
  228. return HorzAlign.Right;
  229. }
  230. return HorzAlign.Left;
  231. }
  232. /// <summary>
  233. /// Converts the JasperReports rotation to int.
  234. /// </summary>
  235. /// <param name="rotation"></param>
  236. /// <returns></returns>
  237. public static int ConvertRotation(string rotation)
  238. {
  239. switch (rotation)
  240. {
  241. case "Right":
  242. return 90;
  243. case "Left":
  244. return 270;
  245. case "UpsideDown":
  246. return 180;
  247. }
  248. return 0;
  249. }
  250. /// <summary>
  251. /// Converts the JasperReports TextAlignment to VertAlignment.
  252. /// </summary>
  253. /// <param name="textAlignment">The JasperReports TextAlignment value.</param>
  254. /// <returns>The VertAlign value.</returns>
  255. public static VertAlign ConvertTextAlignmentToVertAlign(string textAlignment)
  256. {
  257. if (textAlignment.Contains("Middle"))
  258. {
  259. return VertAlign.Center;
  260. }
  261. if (textAlignment.Contains("Bottom"))
  262. {
  263. return VertAlign.Bottom;
  264. }
  265. return VertAlign.Top;
  266. }
  267. /// <summary>
  268. /// Converts the JasperReports Barcode.Symbology to Barcode.Barcode.
  269. /// </summary>
  270. /// <param name="symbology">The JasperReports Barcode.Symbology value as string.</param>
  271. /// <param name="barcode">The BarcodeObject instance.</param>
  272. public static void ConvertBarcodeSymbology(string symbology, BarcodeObject barcode)
  273. {
  274. switch (symbology)
  275. {
  276. case "ean128":
  277. barcode.Barcode = new BarcodeEAN128();
  278. break;
  279. case "pdf417":
  280. barcode.Barcode = new BarcodePDF417();
  281. break;
  282. case "ean13":
  283. barcode.Barcode = new BarcodeEAN13();
  284. break;
  285. case "uspsintelligentmail":
  286. case "usps":
  287. barcode.Barcode = new BarcodeIntelligentMail();
  288. break;
  289. case "code128a":
  290. case "code128b":
  291. case "code128c":
  292. case "code128":
  293. barcode.Barcode = new Barcode128();
  294. break;
  295. case "code39":
  296. barcode.Barcode = new Barcode39();
  297. break;
  298. case "code39 (extended)":
  299. barcode.Barcode = new Barcode39Extended();
  300. break;
  301. case "codabar":
  302. barcode.Barcode = new BarcodeCodabar();
  303. break;
  304. case "upca":
  305. barcode.Barcode = new BarcodeUPC_A();
  306. break;
  307. case "interleaved2of5":
  308. case "int2of5":
  309. barcode.Barcode = new Barcode2of5Interleaved();
  310. break;
  311. case "std2of5":
  312. barcode.Barcode = new Barcode2of5Industrial();
  313. break;
  314. case "postnet":
  315. barcode.Barcode = new BarcodePostNet();
  316. break;
  317. case "upce":
  318. barcode.Barcode = new BarcodeUPC_E0();
  319. break;
  320. case "datamatrix":
  321. barcode.Barcode = new BarcodeDatamatrix();
  322. break;
  323. case "ean8":
  324. barcode.Barcode = new BarcodeEAN8();
  325. break;
  326. default:
  327. barcode.Barcode = new Barcode39();
  328. break;
  329. }
  330. }
  331. /// <summary>
  332. /// Convert JasperReports HyperlinkType to HyperlinkKind.
  333. /// </summary>
  334. /// <param name="node"></param>
  335. /// <returns></returns>
  336. public static HyperlinkKind ConvertHyperlinkType(XmlNode node)
  337. {
  338. if (node.Attributes["hyperlinkType"] != null)
  339. {
  340. switch (node.Attributes["hyperlinkType"].Value)
  341. {
  342. case "LocalAnchor":
  343. return HyperlinkKind.Bookmark;
  344. case "LocalPage":
  345. return HyperlinkKind.PageNumber;
  346. case "Reference":
  347. return HyperlinkKind.URL;
  348. }
  349. }
  350. return HyperlinkKind.Custom;
  351. }
  352. #if MSCHART
  353. /// <summary>
  354. /// Converts the JasperReports SeriesChartType to SeriesChartType.
  355. /// </summary>
  356. /// <param name="value"></param>
  357. /// <returns></returns>
  358. public static SeriesChartType ConvertChartType(string value)
  359. {
  360. switch (value)
  361. {
  362. case "pie3DChart":
  363. case "pieChart":
  364. return SeriesChartType.Pie;
  365. case "stackedBar3DChart":
  366. case "stackedBarChart":
  367. return SeriesChartType.StackedColumn;
  368. case "xyBarChart":
  369. case "bar3DChart":
  370. case "barChart":
  371. return SeriesChartType.Column;
  372. case "scatterChart":
  373. case "xyLineChart":
  374. case "lineChart":
  375. case "timeSeriesChart":
  376. return SeriesChartType.Line;
  377. case "c:spiderChart":
  378. return SeriesChartType.Radar;
  379. case "xyAreaChart":
  380. case "areaChart":
  381. return SeriesChartType.Area;
  382. case "highLowChart":
  383. return SeriesChartType.RangeColumn;
  384. case "candlestickChart":
  385. return SeriesChartType.Candlestick;
  386. case "stackedAreaChart":
  387. return SeriesChartType.StackedArea;
  388. case "bubbleChart":
  389. return SeriesChartType.Bubble;
  390. case "thermometerChart":
  391. case "meterChart":
  392. case "ganttChart":
  393. case "multiAxisPlot":
  394. default:
  395. return SeriesChartType.Column;
  396. }
  397. }
  398. #endif
  399. #endregion // Public Methods
  400. }
  401. }