CSEMFieldData.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. 
  2. using System.Xml;
  3. namespace OTSDataType
  4. {
  5. public class CSEMFieldData:ISlo
  6. {
  7. const double MAGNIFICATION_MIN = 20.0;
  8. private int m_nScanFieldWidth;
  9. private int m_nScanFieldHeight;
  10. private int m_nScanFieldSize100;
  11. private double m_dWorkingDistance;
  12. private int m_nTotalFields;
  13. private int m_nScanFieldHeight100;
  14. private double m_magnification;
  15. private double m_KV=0;
  16. private double m_Brightness=0;
  17. private double m_Contrast = 0;
  18. public double KV { get => m_KV; set => m_KV = value; }
  19. public double Brightness { get => m_Brightness; set => m_Brightness = value; }
  20. public double Contrast { get => m_Contrast; set => m_Contrast = value; }
  21. public CSEMFieldData()
  22. {
  23. // initialization
  24. Init();
  25. }
  26. void Init()
  27. {
  28. m_nScanFieldWidth = 0;
  29. m_nScanFieldSize100 = 1142;
  30. m_dWorkingDistance = 0;
  31. m_nTotalFields = 0;
  32. m_magnification = 0;
  33. }
  34. public CSEMFieldData ( CSEMFieldData a_oSource)
  35. {
  36. // copy data over
  37. Duplicate(a_oSource);
  38. }
  39. void Duplicate( CSEMFieldData a_oSource)
  40. {
  41. // copy data over
  42. m_nScanFieldWidth = a_oSource.m_nScanFieldWidth;
  43. m_nScanFieldSize100 = a_oSource.m_nScanFieldSize100;
  44. m_dWorkingDistance = a_oSource.m_dWorkingDistance;
  45. m_magnification = a_oSource.m_magnification;
  46. m_nTotalFields = a_oSource.m_nTotalFields;
  47. }
  48. public int GetScanFieldSize() { return m_nScanFieldWidth; }
  49. public void SetScanFieldWidth(int a_nScanFieldWidth) { m_nScanFieldWidth = a_nScanFieldWidth; }
  50. public void SetScanFieldHeight(int a_nScanFieldHeight) { m_nScanFieldHeight = a_nScanFieldHeight; }
  51. // scan field size 100 (micros)
  52. public int GetScanFieldSize100() { return m_nScanFieldSize100; }
  53. public void SetScanFieldSize100(int a_nScanFieldSize100) { m_nScanFieldSize100 = a_nScanFieldSize100; }
  54. public void SetScanFieldHeight100(int a_nScanFieldHeight100) { m_nScanFieldHeight100 = a_nScanFieldHeight100; }
  55. // working distance
  56. public double GetWorkingDistance() { return m_dWorkingDistance; }
  57. public void SetWorkingDistance(double a_dWorkingDistance) { m_dWorkingDistance = a_dWorkingDistance; }
  58. // total fields
  59. public int GetTotalFields() { return m_nTotalFields; }
  60. public void SetTotalFields(int a_nTotalFields) { m_nTotalFields = a_nTotalFields; }
  61. public double GetMagnification()
  62. {
  63. return m_magnification;
  64. }
  65. public void SetMagnification(double a_dMag)
  66. {
  67. if (a_dMag < MAGNIFICATION_MIN)
  68. {
  69. return;
  70. }
  71. m_magnification = a_dMag;
  72. m_nScanFieldWidth = (int)(100.0 * (double)m_nScanFieldSize100 / a_dMag + 0.5);
  73. m_nScanFieldHeight= (int)(100.0 * (double)m_nScanFieldHeight100 / a_dMag + 0.5);
  74. }
  75. public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode)
  76. {
  77. xInt xnScanFieldSize=new xInt();
  78. xInt xnScanFieldHeight = new xInt();
  79. xInt xnScanFieldSize100=new xInt();
  80. xDouble xdWorkingDistance=new xDouble();
  81. xDouble xdKV = new xDouble();
  82. xDouble xdBrightness = new xDouble();
  83. xDouble xdConstrast = new xDouble();
  84. xDouble xMag = new xDouble();
  85. xInt xnTotalFields=new xInt();
  86. Slo slo=new Slo();
  87. slo.Register("ScanFieldSize", xnScanFieldSize);
  88. slo.Register("ScanFieldHeight", xnScanFieldHeight);
  89. slo.Register("ScanFieldSize100", xnScanFieldSize100);
  90. slo.Register("WorkingDistance", xdWorkingDistance);
  91. slo.Register("Brightness", xdBrightness);
  92. slo.Register("Constrast", xdConstrast);
  93. slo.Register("KV", xdKV);
  94. slo.Register("Magnification", xMag);
  95. slo.Register("TotalFields", xnTotalFields);
  96. if (isStoring)
  97. {
  98. xnScanFieldSize.AssignValue(m_nScanFieldWidth);
  99. xnScanFieldHeight.AssignValue(m_nScanFieldHeight);
  100. xnScanFieldSize100.AssignValue(m_nScanFieldSize100);
  101. xdWorkingDistance.AssignValue(m_dWorkingDistance);
  102. xdKV.AssignValue(m_KV);
  103. xdBrightness.AssignValue(m_Brightness);
  104. xdConstrast.AssignValue(m_Contrast);
  105. xMag.AssignValue(m_magnification);
  106. xnTotalFields.AssignValue(m_nTotalFields);
  107. slo.Serialize(true, classDoc, rootNode);
  108. }
  109. else
  110. {
  111. slo.Serialize(false, classDoc, rootNode);
  112. m_nScanFieldWidth = xnScanFieldSize.value();
  113. m_nScanFieldSize100 = xnScanFieldSize100.value();
  114. m_dWorkingDistance = xdWorkingDistance.value();
  115. m_KV = xdKV.value();
  116. m_Brightness = xdBrightness.value();
  117. m_Contrast = xdConstrast.value();
  118. m_magnification = xMag.value();
  119. m_nTotalFields = xnTotalFields.value();
  120. }
  121. }
  122. }
  123. }