DrawingFibBase.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. using Microsoft.VisualBasic;
  2. using Microsoft.VisualBasic.CompilerServices;
  3. using MuchInfo.Chart.Data;
  4. using MuchInfo.Chart.Infrastructure.Controls;
  5. using MuchInfo.Chart.Infrastructure.Helpers;
  6. using MuchInfo.Chart.Infrastructure.Utilities;
  7. using MuchInfo.Chart.WPF.Primitives.Interfaces;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Runtime.CompilerServices;
  11. using System.Windows;
  12. using System.Xml.Linq;
  13. using Xceed.Wpf.Toolkit;
  14. namespace MuchInfo.Chart.WPF.Primitives.Drawing
  15. {
  16. public abstract class DrawingFibBase : Drawing2PointBase
  17. {
  18. protected class FibLevel
  19. {
  20. public float Value;
  21. public bool IsOn;
  22. public FibLevel(float aVal, bool drawingOn)
  23. {
  24. this.Value = 0f;
  25. this.IsOn = false;
  26. this.Value = aVal;
  27. this.IsOn = drawingOn;
  28. }
  29. }
  30. protected List<DrawingFibBase.FibLevel> FibLevels;
  31. public float get_LevelValue(int aIndex)
  32. {
  33. bool flag = aIndex >= 0 && aIndex < this.FibLevels.Count;
  34. float value = 0f;
  35. if (flag)
  36. {
  37. value = this.FibLevels[aIndex].Value;
  38. }
  39. return value;
  40. }
  41. public void set_LevelValue(int aIndex, float value)
  42. {
  43. bool flag = aIndex >= 0 && aIndex < this.FibLevels.Count;
  44. if (flag)
  45. {
  46. this.FibLevels[aIndex].Value = value;
  47. this.MoveDrawingToNewLocations(this.mLastRect);
  48. this.PropertyChanged();
  49. }
  50. }
  51. //public float this[int aIndex]
  52. //{
  53. // get
  54. // {
  55. // }
  56. // set
  57. // {
  58. // }
  59. //}
  60. public bool get_LevelOn(int aIndex)
  61. {
  62. bool flag = aIndex >= 0 && aIndex < this.FibLevels.Count;
  63. bool isOn = false;
  64. if (flag)
  65. {
  66. isOn = this.FibLevels[aIndex].IsOn;
  67. }
  68. return isOn;
  69. }
  70. public void set_LevelOn(int aIndex, bool value)
  71. {
  72. bool flag = aIndex >= 0 && aIndex < this.FibLevels.Count;
  73. if (flag)
  74. {
  75. this.FibLevels[aIndex].IsOn = value;
  76. this.MoveDrawingToNewLocations(this.mLastRect);
  77. this.PropertyChanged();
  78. }
  79. }
  80. public DrawingFibBase()
  81. {
  82. this.FibLevels = new List<DrawingFibBase.FibLevel>();
  83. this.InitFibs();
  84. }
  85. public abstract override IDrawingTool Clone();
  86. protected abstract override void ColorChanged();
  87. public abstract override string Description();
  88. protected abstract override List<FrameworkElement> GetDrawingPlots(Chart owner, ScaleLayer aScale, Rect aRect);
  89. public abstract override string MenuDescription();
  90. protected abstract override void MoveDrawingToNewLocations(Rect aRect);
  91. protected void InitFibs()
  92. {
  93. this.FibLevels.Add(new DrawingFibBase.FibLevel(23.6f, false));
  94. this.FibLevels.Add(new DrawingFibBase.FibLevel(38.2f, false));
  95. this.FibLevels.Add(new DrawingFibBase.FibLevel(50f, false));
  96. this.FibLevels.Add(new DrawingFibBase.FibLevel(61.8f, false));
  97. this.FibLevels.Add(new DrawingFibBase.FibLevel(100f, false));
  98. this.FibLevels.Add(new DrawingFibBase.FibLevel(161.8f, false));
  99. this.FibLevels.Add(new DrawingFibBase.FibLevel(261.8f, false));
  100. this.FibLevels.Add(new DrawingFibBase.FibLevel(423.6f, false));
  101. }
  102. protected void TurnAllOn()
  103. {
  104. try
  105. {
  106. List<DrawingFibBase.FibLevel>.Enumerator enumerator = this.FibLevels.GetEnumerator();
  107. while (enumerator.MoveNext())
  108. {
  109. DrawingFibBase.FibLevel current = enumerator.Current;
  110. current.IsOn = true;
  111. }
  112. }
  113. finally
  114. {
  115. //List<drawingFibBase.FibLevel>.Enumerator enumerator;
  116. //enumerator.Dispose();
  117. }
  118. }
  119. protected void TurnOffOn()
  120. {
  121. try
  122. {
  123. List<DrawingFibBase.FibLevel>.Enumerator enumerator = this.FibLevels.GetEnumerator();
  124. while (enumerator.MoveNext())
  125. {
  126. DrawingFibBase.FibLevel current = enumerator.Current;
  127. current.IsOn = false;
  128. }
  129. }
  130. finally
  131. {
  132. //List<drawingFibBase.FibLevel>.Enumerator enumerator;
  133. //enumerator.Dispose();
  134. }
  135. }
  136. protected void TurnOnForArc()
  137. {
  138. this.TurnOffOn();
  139. this.FibLevels[1].IsOn = true;
  140. this.FibLevels[2].IsOn = true;
  141. this.FibLevels[3].IsOn = true;
  142. }
  143. protected void TurnOnForArc2()
  144. {
  145. this.TurnOffOn();
  146. this.FibLevels[1].IsOn = true;
  147. this.FibLevels[2].IsOn = true;
  148. //this.FibLevels[3].IsOn = true;
  149. }
  150. public override List<ControlPair> AdditionalEditors()
  151. {
  152. List<ControlPair> list = new List<ControlPair>();
  153. int num = 0;
  154. checked
  155. {
  156. try
  157. {
  158. List<DrawingFibBase.FibLevel>.Enumerator enumerator = this.FibLevels.GetEnumerator();
  159. while (enumerator.MoveNext())
  160. {
  161. DrawingFibBase.FibLevel arg_8A_0 = enumerator.Current;
  162. ControlPair controlPair = new ControlPair();
  163. ChartSingleUpDown controlRight = new ChartSingleUpDown(this, "LevelValue", num, "LevelOn", 0, 1000, 1f);
  164. controlPair.ControlRight = controlRight;
  165. list.Add(controlPair);
  166. num++;
  167. }
  168. }
  169. finally
  170. {
  171. //List<drawingFibBase.FibLevel>.Enumerator enumerator;
  172. //enumerator.Dispose();
  173. }
  174. return list;
  175. }
  176. }
  177. protected override void AddFromXml(XElement xml)
  178. {
  179. bool flag = false;
  180. try
  181. {
  182. IEnumerator<XElement> enumerator = xml.Elements().GetEnumerator();
  183. while (enumerator.MoveNext())
  184. {
  185. XElement current = enumerator.Current;
  186. bool flag2 = current.Name == "Fibs";
  187. if (flag2)
  188. {
  189. bool flag3 = !flag;
  190. if (flag3)
  191. {
  192. this.FibLevels.Clear();
  193. flag = true;
  194. }
  195. DrawingFibBase.FibLevel fibLevel = new DrawingFibBase.FibLevel(23.6f, true);
  196. flag3 = (current.Attribute("On") != null);
  197. if (flag3)
  198. {
  199. fibLevel.IsOn = bool.Parse(current.Attribute("On").Value);
  200. }
  201. flag3 = (current.Attribute("Val") != null);
  202. if (flag3)
  203. {
  204. fibLevel.Value = XMLHelp.ParseSingle(current.Attribute("Val").Value);
  205. }
  206. this.FibLevels.Add(fibLevel);
  207. }
  208. }
  209. }
  210. finally
  211. {
  212. //IEnumerator<XElement> enumerator;
  213. //bool flag3 = enumerator != null;
  214. //if (flag3)
  215. //{
  216. // enumerator.Dispose();
  217. //}
  218. }
  219. }
  220. protected override void AddToXml(XElement xml, List<object> args)
  221. {
  222. try
  223. {
  224. List<DrawingFibBase.FibLevel>.Enumerator enumerator = this.FibLevels.GetEnumerator();
  225. while (enumerator.MoveNext())
  226. {
  227. DrawingFibBase.FibLevel current = enumerator.Current;
  228. XElement xElement = new XElement("Fibs");
  229. xElement.Add(new XAttribute("On", current.IsOn.ToString()));
  230. xElement.Add(new XAttribute("Val", XMLHelp.NumToString(current.Value)));
  231. xml.Add(xElement);
  232. }
  233. }
  234. finally
  235. {
  236. //List<drawingFibBase.FibLevel>.Enumerator enumerator;
  237. //enumerator.Dispose();
  238. }
  239. }
  240. protected override void AddFromInfo(DrawingToolInfo info)
  241. {
  242. base.AddFromInfo(info);
  243. bool flag = false;
  244. checked
  245. {
  246. try
  247. {
  248. XElement xElement = XElement.Parse(info.XML);
  249. bool flag2 = xElement.Name == "Root";
  250. if (flag2)
  251. {
  252. for (int i = 1; i < 100; i++)
  253. {
  254. flag2 = (xElement.Attribute("IntValue" + i.ToString()) == null);
  255. if (flag2)
  256. {
  257. break;
  258. }
  259. flag2 = !flag;
  260. if (flag2)
  261. {
  262. this.FibLevels.Clear();
  263. flag = true;
  264. }
  265. DrawingFibBase.FibLevel fibLevel = new DrawingFibBase.FibLevel(23.6f, true);
  266. fibLevel.IsOn = (int.Parse(xElement.Attribute("IntValue" + i.ToString()).Value) > 0);
  267. fibLevel.Value = XMLHelp.ParseSingle(xElement.Attribute("Value" + i.ToString()).Value);
  268. bool flag3 = false;
  269. try
  270. {
  271. List<DrawingFibBase.FibLevel>.Enumerator enumerator = this.FibLevels.GetEnumerator();
  272. while (enumerator.MoveNext())
  273. {
  274. DrawingFibBase.FibLevel current = enumerator.Current;
  275. flag2 = (current.Value == fibLevel.Value);
  276. if (flag2)
  277. {
  278. flag3 = true;
  279. break;
  280. }
  281. }
  282. }
  283. finally
  284. {
  285. //List<drawingFibBase.FibLevel>.Enumerator enumerator;
  286. //enumerator.Dispose();
  287. }
  288. flag2 = !flag3;
  289. if (flag2)
  290. {
  291. this.FibLevels.Add(fibLevel);
  292. }
  293. }
  294. }
  295. }
  296. catch (Exception expr_1C8)
  297. {
  298. ProjectData.SetProjectError(expr_1C8);
  299. ProjectData.ClearProjectError();
  300. }
  301. }
  302. }
  303. protected override void AddToInfo(DrawingToolInfo info)
  304. {
  305. base.AddToInfo(info);
  306. XElement xElement = new XElement("Root");
  307. int num = 1;
  308. checked
  309. {
  310. try
  311. {
  312. List<DrawingFibBase.FibLevel>.Enumerator enumerator = this.FibLevels.GetEnumerator();
  313. while (enumerator.MoveNext())
  314. {
  315. DrawingFibBase.FibLevel current = enumerator.Current;
  316. xElement.Add(new XAttribute("IntValue" + num.ToString(), RuntimeHelpers.GetObjectValue(Interaction.IIf(current.IsOn, "1", "0"))));
  317. xElement.Add(new XAttribute("Value" + num.ToString(), XMLHelp.NumToString(current.Value)));
  318. num++;
  319. }
  320. }
  321. finally
  322. {
  323. //List<drawingFibBase.FibLevel>.Enumerator enumerator;
  324. //enumerator.Dispose();
  325. }
  326. info.XML = xElement.ToString();
  327. }
  328. }
  329. }
  330. }