MsrParams.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. // MsrParams.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "OTSData.h"
  5. #include "MsrParams.h"
  6. namespace OTSMODEL {
  7. // CMsrParams
  8. // constructor
  9. CMsrParams::CMsrParams()
  10. {
  11. // initialization
  12. Init();
  13. }
  14. // copy constructor
  15. CMsrParams::CMsrParams(const CMsrParams& a_oSource)
  16. {
  17. // can't copy itself
  18. if (&a_oSource == this)
  19. {
  20. return;
  21. }
  22. // copy data over
  23. Duplicate(a_oSource);
  24. }
  25. // copy constructor
  26. CMsrParams::CMsrParams(CMsrParams* a_poSource)
  27. {
  28. // input check
  29. ASSERT(a_poSource);
  30. if (!a_poSource)
  31. {
  32. return;
  33. }
  34. // can't copy itself
  35. if (a_poSource == this)
  36. {
  37. return;
  38. }
  39. // copy data over
  40. Duplicate(*a_poSource);
  41. }
  42. // =operator
  43. CMsrParams& CMsrParams::operator=(const CMsrParams& a_oSource)
  44. {
  45. // cleanup
  46. Cleanup();
  47. // copy the class data over
  48. Duplicate(a_oSource);
  49. // return class
  50. return *this;
  51. }
  52. // ==operator
  53. BOOL CMsrParams::operator==(const CMsrParams& a_oSource)
  54. {
  55. // members
  56. return m_strName.Compare(a_oSource.m_strName) == 0 &&
  57. *(m_poPartSTDData.get()) == *(a_oSource.m_poPartSTDData.get()) &&
  58. *(m_poImageScanParam.get()) == *(a_oSource.m_poImageScanParam.get()) &&
  59. *(m_poImageProcessParam.get()) == *(a_oSource.m_poImageProcessParam.get()) &&
  60. *(m_poXRayParam.get()) == *(a_oSource.m_poXRayParam.get());
  61. }
  62. // destructor
  63. CMsrParams::~CMsrParams()
  64. {
  65. // cleanup
  66. Cleanup();
  67. }
  68. // CMsrParams member functions
  69. // public
  70. // serialization
  71. void CMsrParams::Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode)
  72. {
  73. xmls::xString xstrName;
  74. xmls::xInt xSteelTech;
  75. xmls::Slo slo;
  76. //this->Register("Name", &xstrName);
  77. slo.Register("SteelTech", &xSteelTech);
  78. slo.Register("PartSTDData", m_poPartSTDData.get());
  79. slo.Register("ImageScanParam", m_poImageScanParam.get());
  80. slo.Register("ImageProcessParam", m_poImageProcessParam.get());
  81. slo.Register("XRayParam", m_poXRayParam.get());
  82. if (isStoring)
  83. {
  84. xstrName = m_strName;
  85. xSteelTech = (int)m_SteelTech;
  86. slo.Serialize(true, classDoc, rootNode);
  87. }
  88. else
  89. {
  90. slo.Serialize(false, classDoc, rootNode);
  91. m_strName = xstrName.value().c_str();
  92. m_SteelTech = (STEEL_TECHNOLOGY)xSteelTech.value();
  93. }
  94. }
  95. // particle analysis std
  96. void CMsrParams::SetPartSTDData(CPartSTDDataPtr a_poPartSTDData)
  97. {
  98. // make sure that particle analysis std always valid
  99. ASSERT(a_poPartSTDData);
  100. if (!a_poPartSTDData)
  101. {
  102. return;
  103. }
  104. m_poPartSTDData =CPartSTDDataPtr(new CPartSTDData( a_poPartSTDData.get()));
  105. }
  106. // image scan parameter
  107. void CMsrParams::SetImageScanParam(COTSImageScanParamPtr a_poImageScanParam)
  108. {
  109. // make sure that image scan parameter always valid
  110. ASSERT(a_poImageScanParam);
  111. if(!a_poImageScanParam)
  112. {
  113. return;
  114. }
  115. m_poImageScanParam = COTSImageScanParamPtr(new COTSImageScanParam(a_poImageScanParam.get()));
  116. }
  117. // image process parameter
  118. void CMsrParams::SetImageProcessParam(COTSImageProcessParamPtr a_poImageProcessParam)
  119. {
  120. // make sure that image process parameter always valid
  121. ASSERT(a_poImageProcessParam);
  122. if(!a_poImageProcessParam)
  123. {
  124. return;
  125. }
  126. m_poImageProcessParam = COTSImageProcessParamPtr(new COTSImageProcessParam( a_poImageProcessParam.get()));
  127. }
  128. // x-ray parameter
  129. void CMsrParams::SetXRayParam(COTSXRayParamPtr a_poXRayParam)
  130. {
  131. // make sure that x-ray parameter always valid
  132. ASSERT(a_poXRayParam);
  133. if(!a_poXRayParam)
  134. {
  135. return;
  136. }
  137. m_poXRayParam = COTSXRayParamPtr(new COTSXRayParam( a_poXRayParam.get()));
  138. }
  139. // protected
  140. // cleanup
  141. void CMsrParams::Cleanup()
  142. {
  143. // need to do nothing at the moment
  144. }
  145. // initialization
  146. void CMsrParams::Init()
  147. {
  148. // initialization
  149. m_strName = _T("MsrParam");
  150. m_SteelTech = STEEL_TECHNOLOGY::GeneralProcessMode;
  151. m_poPartSTDData = CPartSTDDataPtr(new CPartSTDData());
  152. m_poImageScanParam = COTSImageScanParamPtr(new COTSImageScanParam());
  153. m_poImageProcessParam = COTSImageProcessParamPtr(new COTSImageProcessParam());
  154. m_poXRayParam = COTSXRayParamPtr(new COTSXRayParam());
  155. }
  156. // duplication
  157. void CMsrParams::Duplicate(const CMsrParams& a_oSource)
  158. {
  159. // initialization
  160. Init();
  161. // copy data over
  162. m_strName = a_oSource.m_strName;
  163. m_SteelTech = a_oSource.m_SteelTech;
  164. m_poPartSTDData = a_oSource.m_poPartSTDData;
  165. m_poImageScanParam = a_oSource.m_poImageScanParam;
  166. m_poImageProcessParam = a_oSource.m_poImageProcessParam;
  167. m_poXRayParam = a_oSource.m_poXRayParam;
  168. }
  169. }