PropParam.cpp 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436
  1. #include "stdafx.h"
  2. #include "PropParam.h"
  3. #include "OTSHelper.h"
  4. namespace OTSMODEL {
  5. using namespace OTSDATA;
  6. // constructor
  7. CPropParam::CPropParam()
  8. {
  9. Init();
  10. }
  11. // copy constructor
  12. CPropParam::CPropParam(const CPropParam& a_oSource)
  13. {
  14. // can't copy itself
  15. if (&a_oSource == this)
  16. {
  17. return;
  18. }
  19. // copy data over
  20. Duplicate(a_oSource);
  21. }
  22. // copy constructor
  23. CPropParam::CPropParam(CPropParam* a_poSource)
  24. {
  25. // input check
  26. ASSERT(a_poSource);
  27. if (!a_poSource)
  28. {
  29. return;
  30. }
  31. // can't copy itself
  32. if (a_poSource == this)
  33. {
  34. return;
  35. }
  36. // copy data over
  37. Duplicate(*a_poSource);
  38. }
  39. // =operator
  40. CPropParam& CPropParam::operator=(const CPropParam& a_oSource)
  41. {
  42. // cleanup
  43. Cleanup();
  44. // copy the class data over
  45. Duplicate(a_oSource);
  46. // return class
  47. return *this;
  48. }
  49. // ==operator
  50. BOOL CPropParam::operator==(const CPropParam& a_oSource)
  51. {
  52. return FALSE;
  53. }
  54. // destructor
  55. CPropParam::~CPropParam()
  56. {
  57. // cleanup
  58. Cleanup();
  59. }
  60. // data source id
  61. BOOL CPropParam::SetDataSourceList(std::vector<CString> a_listDataSource)
  62. {
  63. // data source count is reduced?
  64. if (m_listDataSource.size() > a_listDataSource.size())
  65. {
  66. // need to check if data source id has to be changed
  67. // data source count is 0
  68. if ((int)a_listDataSource.size() == 0)
  69. {
  70. // set data source id to -1, no working data source
  71. m_nDataSourceId = -1;
  72. }
  73. // need to set data source id to 0?
  74. else if (m_nDataSourceId >= (int)a_listDataSource.size())
  75. {
  76. // set data source id to 0, the first data source is the working data source
  77. m_nDataSourceId = 0;
  78. }
  79. else if (m_nDataSourceId == -1 && (int)a_listDataSource.size() > 0)
  80. {
  81. // set data source id to 0, the first data source is the working data source
  82. m_nDataSourceId = 0;
  83. }
  84. }
  85. // set data source count
  86. m_listDataSource = a_listDataSource;
  87. // ok, return TRUE
  88. return TRUE;
  89. }
  90. BOOL CPropParam::SetDataSourceId(int a_nDataSourceId)
  91. {
  92. // data source id can't be < -1, -1 means no working data source
  93. if (a_nDataSourceId < -1)
  94. {
  95. return FALSE;
  96. }
  97. // data source id >= data source count
  98. else if (a_nDataSourceId >= (int)m_listDataSource.size())
  99. {
  100. return FALSE;
  101. }
  102. m_nDataSourceId = a_nDataSourceId;
  103. // ok, return TRUE
  104. return TRUE;
  105. }
  106. // data source type
  107. BOOL CPropParam::SetDataSourceType(DATA_SOURCE_TYPE a_nDataSourceType)
  108. {
  109. // input validation
  110. if (a_nDataSourceType < DATA_SOURCE_TYPE::MIN && a_nDataSourceType > DATA_SOURCE_TYPE::MAX)
  111. {
  112. // invalid input
  113. return FALSE;
  114. }
  115. m_nDataSourceType = a_nDataSourceType;
  116. // ok, return TRUE
  117. return TRUE;
  118. }
  119. // image display type
  120. BOOL CPropParam::SetImageDisplayType(IMAGE_DISPLAY_TYPE a_nImageDisplayType)
  121. {
  122. // input validation
  123. if (a_nImageDisplayType < IMAGE_DISPLAY_TYPE::MIN && a_nImageDisplayType > IMAGE_DISPLAY_TYPE::MAX)
  124. {
  125. // invalid input
  126. return FALSE;
  127. }
  128. m_nImageDisplayType = a_nImageDisplayType;
  129. // ok, return TRUE
  130. return TRUE;
  131. }
  132. // image type
  133. BOOL CPropParam::SetImageType(IMAGE_TYPE a_nImageType)
  134. {
  135. // input validation
  136. if (a_nImageType < IMAGE_TYPE::MIN && a_nImageType > IMAGE_TYPE::MAX)
  137. {
  138. // invalid input
  139. return FALSE;
  140. }
  141. m_nImageType = a_nImageType;
  142. // ok, return TRUE
  143. return TRUE;
  144. }
  145. // measure data type
  146. BOOL CPropParam::SetMeasureDataType(MEASURE_DATA_TYPE a_nMeasureDataType)
  147. {
  148. // input validation
  149. if (a_nMeasureDataType < MEASURE_DATA_TYPE::MIN && a_nMeasureDataType > MEASURE_DATA_TYPE::MAX)
  150. {
  151. // invalid input
  152. return FALSE;
  153. }
  154. m_nMeasureDataType = a_nMeasureDataType;
  155. // ok, return TRUE
  156. return TRUE;
  157. }
  158. // calculate table type
  159. BOOL CPropParam::SetCalTableType(CALCULATE_TABLE_TYPE a_nCalTableType)
  160. {
  161. // input validation
  162. if (a_nCalTableType < CALCULATE_TABLE_TYPE::MIN && a_nCalTableType > CALCULATE_TABLE_TYPE::MAX)
  163. {
  164. // invalid input
  165. return FALSE;
  166. }
  167. m_nCalTableType = a_nCalTableType;
  168. // ok, return TRUE
  169. return TRUE;
  170. }
  171. // calculate chart type
  172. BOOL CPropParam::SetCalChartType(CALCULATE_CHART_TYPE a_nCalChartType)
  173. {
  174. // input validation
  175. if (a_nCalChartType < CALCULATE_CHART_TYPE::MIN && a_nCalChartType > CALCULATE_CHART_TYPE::MAX)
  176. {
  177. // invalid input
  178. return FALSE;
  179. }
  180. m_nCalChartType = a_nCalChartType;
  181. // ok, return TRUE
  182. return TRUE;
  183. }
  184. // particle type
  185. BOOL CPropParam::SetPartType(PARTICLE_TYPE a_nPartType)
  186. {
  187. // input validation
  188. if (a_nPartType < PARTICLE_TYPE::MIN && a_nPartType > PARTICLE_TYPE::MAX)
  189. {
  190. // invalid input
  191. return FALSE;
  192. }
  193. m_nPartType = a_nPartType;
  194. // ok, return TRUE
  195. return TRUE;
  196. }
  197. // grain size min
  198. BOOL CPropParam::SetGrainSizeMin(double a_dGrainSizeMin)
  199. {
  200. // grain size min can't be < 0
  201. if (a_dGrainSizeMin<0)
  202. {
  203. return FALSE;
  204. }
  205. m_dGrainSizeMin = a_dGrainSizeMin;
  206. NormalizeGrainSizeValue();
  207. // ok, return TRUE
  208. return TRUE;
  209. }
  210. // grain size max
  211. BOOL CPropParam::SetGrainSizeMax(double a_dGrainSizeMax)
  212. {
  213. // grain size max can't be < 0
  214. if ( a_dGrainSizeMax < 0)
  215. {
  216. return FALSE;
  217. }
  218. if (a_dGrainSizeMax > 0)
  219. {
  220. m_dGrainSizeMax = a_dGrainSizeMax;
  221. }
  222. m_dGrainSizeMax = a_dGrainSizeMax;
  223. // ok, return TRUE
  224. return TRUE;
  225. }
  226. // size calculation method type
  227. BOOL CPropParam::SetSizeCalMethodType(SIZE_CAL_METHOD_TYPE a_nSizeCalMethodType)
  228. {
  229. // input validation
  230. if (a_nSizeCalMethodType < SIZE_CAL_METHOD_TYPE::MIN && a_nSizeCalMethodType > SIZE_CAL_METHOD_TYPE::MAX)
  231. {
  232. // invalid input
  233. return FALSE;
  234. }
  235. m_nSizeCalMethodType = a_nSizeCalMethodType;
  236. // ok, return TRUE
  237. return TRUE;
  238. }
  239. // combo data
  240. BOOL CPropParam::GetPropComboData(OTS_RETORT_PROP_GRID_ITEMS a_nId, int& a_nValue)
  241. {
  242. switch (a_nId)
  243. {
  244. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE:
  245. {
  246. a_nValue = GetDataSourceId();
  247. }
  248. break;
  249. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE_TYPE:
  250. {
  251. a_nValue = (int)GetDataSourceType();
  252. }
  253. break;
  254. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_TYPE:
  255. {
  256. a_nValue = (int)GetImageType();
  257. }
  258. break;
  259. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_DISPLAY_TYPE:
  260. {
  261. a_nValue = (int)GetImageDisplayType();
  262. }
  263. break;
  264. case OTS_RETORT_PROP_GRID_ITEMS::MEASURE_DATA_TYPE:
  265. {
  266. a_nValue = (int)GetMeasureDataType();
  267. }
  268. break;
  269. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_TABLE_TYPE:
  270. {
  271. a_nValue = (int)GetCalTableType();
  272. }
  273. break;
  274. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_CHART_TYPE:
  275. {
  276. a_nValue = (int)GetCalChartType();
  277. }
  278. break;
  279. case OTS_RETORT_PROP_GRID_ITEMS::PARTICLE_TYPE:
  280. {
  281. a_nValue = (int)GetPartType();
  282. }
  283. break;
  284. case OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE:
  285. {
  286. a_nValue = (int)GetSizeCalMethodType();
  287. }
  288. break;
  289. default:
  290. {
  291. // something wrong
  292. return FALSE;
  293. }
  294. }
  295. // ok, return TRUE
  296. return TRUE;
  297. }
  298. BOOL CPropParam::SetPropComboData(OTS_RETORT_PROP_GRID_ITEMS a_nId, int a_nValue)
  299. {
  300. switch (a_nId)
  301. {
  302. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE:
  303. {
  304. return SetDataSourceId(a_nValue);
  305. }
  306. break;
  307. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE_TYPE:
  308. {
  309. return SetDataSourceType((DATA_SOURCE_TYPE)a_nValue);
  310. }
  311. break;
  312. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_TYPE:
  313. {
  314. return SetImageType((IMAGE_TYPE)a_nValue);
  315. }
  316. break;
  317. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_DISPLAY_TYPE:
  318. {
  319. return SetImageDisplayType((IMAGE_DISPLAY_TYPE)a_nValue);
  320. }
  321. break;
  322. case OTS_RETORT_PROP_GRID_ITEMS::MEASURE_DATA_TYPE:
  323. {
  324. return SetMeasureDataType((MEASURE_DATA_TYPE)a_nValue);
  325. }
  326. break;
  327. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_TABLE_TYPE:
  328. {
  329. return SetCalTableType((CALCULATE_TABLE_TYPE)a_nValue);
  330. }
  331. break;
  332. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_CHART_TYPE:
  333. {
  334. return SetCalChartType((CALCULATE_CHART_TYPE)a_nValue);
  335. }
  336. break;
  337. case OTS_RETORT_PROP_GRID_ITEMS::PARTICLE_TYPE:
  338. {
  339. return SetPartType((PARTICLE_TYPE)a_nValue);
  340. }
  341. break;
  342. case OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE:
  343. {
  344. return SetSizeCalMethodType((SIZE_CAL_METHOD_TYPE)a_nValue);
  345. }
  346. break;
  347. default:
  348. {
  349. // something wrong
  350. return FALSE;
  351. }
  352. }
  353. // ok, return TRUE
  354. return TRUE;
  355. }
  356. // double data
  357. BOOL CPropParam::GetPropDoubleData(OTS_RETORT_PROP_GRID_ITEMS a_nId, double& a_dValue)
  358. {
  359. switch (a_nId)
  360. {
  361. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN:
  362. {
  363. a_dValue = GetGrainSizeMin();
  364. }
  365. break;
  366. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX:
  367. {
  368. a_dValue = GetGrainSizeMax();
  369. }
  370. break;
  371. default:
  372. {
  373. // something wrong
  374. return FALSE;
  375. }
  376. }
  377. // ok, return TRUE
  378. return TRUE;
  379. }
  380. BOOL CPropParam::SetPropDoubleData(OTS_RETORT_PROP_GRID_ITEMS a_nId, double a_dValue)
  381. {
  382. switch (a_nId)
  383. {
  384. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN:
  385. {
  386. return SetGrainSizeMin(a_dValue);
  387. }
  388. break;
  389. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX:
  390. {
  391. return SetGrainSizeMax(a_dValue);
  392. }
  393. break;
  394. default:
  395. {
  396. // something wrong
  397. return FALSE;
  398. }
  399. }
  400. // ok, return TRUE
  401. return TRUE;
  402. }
  403. // get related property item
  404. BOOL CPropParam::GetRelatedPropItem(OTS_RETORT_PROP_GRID_ITEMS a_nId, OTS_RETORT_PROP_GRID_ITEMS& a_nRelatedPropId)
  405. {
  406. switch (a_nId)
  407. {
  408. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE:
  409. {
  410. return FALSE;
  411. }
  412. break;
  413. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE_TYPE:
  414. {
  415. return FALSE;
  416. }
  417. break;
  418. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_TYPE:
  419. {
  420. return FALSE;
  421. }
  422. break;
  423. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_DISPLAY_TYPE:
  424. {
  425. return FALSE;
  426. }
  427. break;
  428. case OTS_RETORT_PROP_GRID_ITEMS::MEASURE_DATA_TYPE:
  429. {
  430. return FALSE;
  431. }
  432. break;
  433. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_TABLE_TYPE:
  434. {
  435. return FALSE;
  436. }
  437. break;
  438. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_CHART_TYPE:
  439. {
  440. return FALSE;
  441. }
  442. break;
  443. case OTS_RETORT_PROP_GRID_ITEMS::PARTICLE_TYPE:
  444. {
  445. return FALSE;
  446. }
  447. break;
  448. case OTS_RETORT_PROP_GRID_ITEMS::STD_ID:
  449. {
  450. return FALSE;
  451. }
  452. break;
  453. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS_TABLE:
  454. {
  455. a_nRelatedPropId = OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS;
  456. return TRUE;
  457. }
  458. break;
  459. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS:
  460. {
  461. a_nRelatedPropId = OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX;
  462. return TRUE;
  463. }
  464. break;
  465. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN:
  466. {
  467. a_nRelatedPropId = OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX;
  468. return TRUE;
  469. }
  470. break;
  471. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX:
  472. {
  473. a_nRelatedPropId = OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN;
  474. return TRUE;
  475. }
  476. break;
  477. case OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE:
  478. {
  479. return FALSE;
  480. }
  481. break;
  482. case OTS_RETORT_PROP_GRID_ITEMS::TRIO_CHART_TYPE:
  483. {
  484. return FALSE;
  485. }
  486. break;
  487. default:
  488. {
  489. return FALSE;
  490. }
  491. break;
  492. }
  493. // ok, return TRUE
  494. return TRUE;
  495. }
  496. BOOL CPropParam::UpdateAll(OTS_RETORT_PROP_GRID_ITEMS a_nId)
  497. {
  498. switch (a_nId)
  499. {
  500. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE:
  501. {
  502. return FALSE;
  503. }
  504. break;
  505. case OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE_TYPE:
  506. {
  507. return FALSE;
  508. }
  509. break;
  510. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_TYPE:
  511. {
  512. return FALSE;
  513. }
  514. break;
  515. case OTS_RETORT_PROP_GRID_ITEMS::IMAGE_DISPLAY_TYPE:
  516. {
  517. return FALSE;
  518. }
  519. break;
  520. case OTS_RETORT_PROP_GRID_ITEMS::MEASURE_DATA_TYPE:
  521. {
  522. return TRUE;
  523. }
  524. break;
  525. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_TABLE_TYPE:
  526. {
  527. return TRUE;
  528. }
  529. break;
  530. case OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_CHART_TYPE:
  531. {
  532. return TRUE;
  533. }
  534. break;
  535. case OTS_RETORT_PROP_GRID_ITEMS::PARTICLE_TYPE:
  536. {
  537. return FALSE;
  538. }
  539. break;
  540. case OTS_RETORT_PROP_GRID_ITEMS::STD_ID:
  541. {
  542. return FALSE;
  543. }
  544. break;
  545. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS_TABLE:
  546. {
  547. return FALSE;
  548. }
  549. break;
  550. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS:
  551. {
  552. return TRUE;
  553. }
  554. break;
  555. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN:
  556. {
  557. return FALSE;
  558. }
  559. break;
  560. case OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX:
  561. {
  562. return FALSE;
  563. }
  564. break;
  565. case OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE:
  566. {
  567. return FALSE;
  568. }
  569. break;
  570. case OTS_RETORT_PROP_GRID_ITEMS::TRIO_CHART_TYPE:
  571. {
  572. return FALSE;
  573. }
  574. break;
  575. default:
  576. {
  577. return FALSE;
  578. }
  579. break;
  580. }
  581. // ok, return TRUE
  582. return TRUE;
  583. }
  584. CPropItemPtr CPropParam::GetPropItemById(OTS_RETORT_PROP_GRID_ITEMS a_nId)
  585. {
  586. CPropItemPtr pPropItem = nullptr;
  587. auto itr = std::find_if(m_listPropItems.begin(), m_listPropItems.end(), [a_nId](CPropItemPtr& poPropItem) { return poPropItem->GetReportItemId() == a_nId; });
  588. if (itr != m_listPropItems.end())
  589. {
  590. // found the property item
  591. pPropItem = *itr;
  592. }
  593. return pPropItem;
  594. }
  595. // cleanup
  596. void CPropParam::Cleanup()
  597. {
  598. // need to do nothing at the moment
  599. }
  600. // initialization
  601. void CPropParam::Init()
  602. {
  603. m_nType = RETORT_PROP_GRID_PARAM_TYPE::MIN;
  604. m_listPropItems.clear();
  605. m_listDataSource.clear();
  606. m_nDataSourceId = -1;
  607. m_nDataSourceType = DATA_SOURCE_TYPE::ALL;
  608. m_nImageDisplayType = IMAGE_DISPLAY_TYPE::GENERAL;
  609. m_nImageType = IMAGE_TYPE::BSE;
  610. m_nMeasureDataType = MEASURE_DATA_TYPE::ALL_PARTICLE;
  611. m_nCalTableType = CALCULATE_TABLE_TYPE::MEASURE_INFO;
  612. m_nCalChartType = CALCULATE_CHART_TYPE::COMMON_FIVE;
  613. m_nPartType = PARTICLE_TYPE::ALL ;
  614. m_dGrainSizeMin = 0.0;
  615. m_dGrainSizeMax = 0.0;
  616. m_nSizeCalMethodType = SIZE_CAL_METHOD_TYPE::LENGTH;
  617. m_strTrioChartName = _T("");
  618. }
  619. // duplication
  620. void CPropParam::Duplicate(const CPropParam& a_oSource)
  621. {
  622. // initialization
  623. Init();
  624. m_nType = a_oSource.m_nType;
  625. // copy data over
  626. m_listPropItems.clear();
  627. for (auto pPropItem : a_oSource.m_listPropItems)
  628. {
  629. CPropItemPtr pPropItemNew = CPropItemPtr(new CPropItem(pPropItem.get()));
  630. m_listPropItems.push_back(pPropItemNew);
  631. }
  632. m_listDataSource.clear();
  633. for (auto strDataSource : a_oSource.m_listDataSource)
  634. {
  635. CString strDataSourceNew = strDataSource;
  636. m_listDataSource.push_back(strDataSourceNew);
  637. }
  638. m_nDataSourceId = a_oSource.m_nDataSourceId;
  639. m_nDataSourceType = a_oSource.m_nDataSourceType;
  640. m_nImageDisplayType = a_oSource.m_nImageDisplayType;
  641. m_nImageType = a_oSource.m_nImageType;
  642. m_nMeasureDataType = a_oSource.m_nMeasureDataType;
  643. m_nCalTableType = a_oSource.m_nCalTableType;
  644. m_nCalChartType = a_oSource.m_nCalChartType;
  645. m_nPartType = a_oSource.m_nPartType;
  646. m_dGrainSizeMin = a_oSource.m_dGrainSizeMin;
  647. m_dGrainSizeMax = a_oSource.m_dGrainSizeMax;
  648. m_nSizeCalMethodType = a_oSource.m_nSizeCalMethodType;
  649. m_strTrioChartName = a_oSource.m_strTrioChartName;
  650. m_TrioChartType = a_oSource.m_TrioChartType;
  651. }
  652. // Normalize grain size values
  653. void CPropParam::NormalizeGrainSizeValue()
  654. {
  655. double dMin = min(m_dGrainSizeMin, m_dGrainSizeMax);
  656. double dMax = max(m_dGrainSizeMin, m_dGrainSizeMax);
  657. m_dGrainSizeMin = dMin;
  658. m_dGrainSizeMax = dMax;
  659. }
  660. //set TopName
  661. BOOL CPropParam::SetTopName(CString a_TopName)
  662. {
  663. if (a_TopName.IsEmpty())
  664. {
  665. return FALSE;
  666. }
  667. m_TopName = a_TopName;
  668. return TRUE;
  669. }
  670. //set LeftName
  671. BOOL CPropParam::SetLeftName(CString a_LeftName)
  672. {
  673. if (a_LeftName.IsEmpty())
  674. {
  675. return FALSE;
  676. }
  677. m_LeftName = a_LeftName;
  678. return TRUE;
  679. }
  680. //set RightName
  681. BOOL CPropParam::SetRightName(CString a_RightName)
  682. {
  683. if (a_RightName.IsEmpty())
  684. {
  685. return FALSE;
  686. }
  687. m_RightName = a_RightName;
  688. return TRUE;
  689. }
  690. //set Top ElementName List
  691. BOOL CPropParam::SetTopElementName(std::vector<CString> a_listTopElementName)
  692. {
  693. if (a_listTopElementName.size() > 0)
  694. {
  695. m_listTopElementName = a_listTopElementName;
  696. return TRUE;
  697. }
  698. return FALSE;
  699. }
  700. //set Left ElementName List
  701. BOOL CPropParam::SetLeftElementName(std::vector<CString> a_listLeftElementName)
  702. {
  703. if (a_listLeftElementName.size() > 0)
  704. {
  705. m_listLeftElementName = a_listLeftElementName;
  706. return TRUE;
  707. }
  708. return FALSE;
  709. }
  710. //set Right ElementName List
  711. BOOL CPropParam::SetRightElementName(std::vector<CString> a_listRightElementName)
  712. {
  713. if (a_listRightElementName.size() > 0)
  714. {
  715. m_listRightElementName = a_listRightElementName;
  716. return TRUE;
  717. }
  718. return FALSE;
  719. }
  720. // CPropParamImage
  721. // constructor
  722. CPropParamImage::CPropParamImage()
  723. {
  724. Init();
  725. }
  726. // copy constructor
  727. CPropParamImage::CPropParamImage(const CPropParamImage& a_oSource)
  728. {
  729. // can't copy itself
  730. if (&a_oSource == this)
  731. {
  732. return;
  733. }
  734. // copy data over
  735. Duplicate(a_oSource);
  736. }
  737. // copy constructor
  738. CPropParamImage::CPropParamImage(CPropParamImage* a_poSource)
  739. {
  740. // input check
  741. ASSERT(a_poSource);
  742. if (!a_poSource)
  743. {
  744. return;
  745. }
  746. // can't copy itself
  747. if (a_poSource == this)
  748. {
  749. return;
  750. }
  751. // copy data over
  752. Duplicate(*a_poSource);
  753. }
  754. // =operator
  755. CPropParamImage& CPropParamImage::operator=(const CPropParamImage& a_oSource)
  756. {
  757. // cleanup
  758. Cleanup();
  759. // copy the class data over
  760. Duplicate(a_oSource);
  761. // return class
  762. return *this;
  763. }
  764. // ==operator
  765. BOOL CPropParamImage::operator==(const CPropParamImage& a_oSource)
  766. {
  767. return FALSE;
  768. }
  769. // destructor
  770. CPropParamImage::~CPropParamImage()
  771. {
  772. // cleanup
  773. Cleanup();
  774. }
  775. // property items list
  776. void CPropParamImage::SetPropertyItems()
  777. {
  778. // clear property items list
  779. m_listPropItems.clear();
  780. // property item
  781. CPropItemPtr poPropItem;
  782. // data source
  783. poPropItem = CPropItemPtr(new CPropItem());
  784. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE, OTS_ITEM_TYPES::COMBO, FALSE);
  785. m_listPropItems.push_back(poPropItem);
  786. // image type
  787. poPropItem = CPropItemPtr(new CPropItem());
  788. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::IMAGE_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  789. m_listPropItems.push_back(poPropItem);
  790. // image display type
  791. poPropItem = CPropItemPtr(new CPropItem());
  792. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::IMAGE_DISPLAY_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  793. m_listPropItems.push_back(poPropItem);
  794. // measure data type
  795. if (m_nImageDisplayType == IMAGE_DISPLAY_TYPE::GENERAL)
  796. {
  797. // general image
  798. poPropItem = CPropItemPtr(new CPropItem());
  799. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::PARTICLE_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  800. m_listPropItems.push_back(poPropItem);
  801. poPropItem = CPropItemPtr(new CPropItem());
  802. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS_TABLE, OTS_ITEM_TYPES::COMBO, FALSE);
  803. m_listPropItems.push_back(poPropItem);
  804. poPropItem = CPropItemPtr(new CPropItem());
  805. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS, OTS_ITEM_TYPES::COMBO, FALSE);
  806. m_listPropItems.push_back(poPropItem);
  807. if (m_nSizeItemId == (int)SIZE_CLASS_DEFUALT::USER_DEFINDED)
  808. {
  809. poPropItem = CPropItemPtr(new CPropItem());
  810. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN, OTS_ITEM_TYPES::DOUBLE, FALSE);
  811. m_listPropItems.push_back(poPropItem);
  812. poPropItem = CPropItemPtr(new CPropItem());
  813. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX, OTS_ITEM_TYPES::DOUBLE, FALSE);
  814. m_listPropItems.push_back(poPropItem);
  815. }
  816. else if(m_nSizeItemId > (int)SIZE_CLASS_DEFUALT::USER_DEFINDED)
  817. {
  818. poPropItem = CPropItemPtr(new CPropItem());
  819. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN, OTS_ITEM_TYPES::DOUBLE, TRUE);
  820. m_listPropItems.push_back(poPropItem);
  821. poPropItem = CPropItemPtr(new CPropItem());
  822. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX, OTS_ITEM_TYPES::DOUBLE, TRUE);
  823. m_listPropItems.push_back(poPropItem);
  824. }
  825. //暂时去掉颗粒尺寸计算方法选项
  826. poPropItem = CPropItemPtr(new CPropItem());
  827. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  828. //poPropItem->SetReadOnly(TRUE);
  829. m_listPropItems.push_back(poPropItem);
  830. }
  831. else
  832. {
  833. // particle grid
  834. poPropItem = CPropItemPtr(new CPropItem());
  835. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::MEASURE_DATA_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  836. m_listPropItems.push_back(poPropItem);
  837. if (m_nMeasureDataType == MEASURE_DATA_TYPE::PARTICALE_SIZE_DISTRIBUTION)
  838. {
  839. poPropItem = CPropItemPtr(new CPropItem());
  840. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS_TABLE, OTS_ITEM_TYPES::COMBO, FALSE);
  841. m_listPropItems.push_back(poPropItem);
  842. poPropItem = CPropItemPtr(new CPropItem());
  843. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS, OTS_ITEM_TYPES::COMBO, FALSE);
  844. m_listPropItems.push_back(poPropItem);
  845. if (m_nSizeItemId == (int)SIZE_CLASS_DEFUALT::USER_DEFINDED)
  846. {
  847. poPropItem = CPropItemPtr(new CPropItem());
  848. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN, OTS_ITEM_TYPES::DOUBLE, FALSE);
  849. m_listPropItems.push_back(poPropItem);
  850. poPropItem = CPropItemPtr(new CPropItem());
  851. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX, OTS_ITEM_TYPES::DOUBLE, FALSE);
  852. m_listPropItems.push_back(poPropItem);
  853. }
  854. else if (m_nSizeItemId > (int)SIZE_CLASS_DEFUALT::USER_DEFINDED)
  855. {
  856. poPropItem = CPropItemPtr(new CPropItem());
  857. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MIN, OTS_ITEM_TYPES::DOUBLE, TRUE);
  858. m_listPropItems.push_back(poPropItem);
  859. poPropItem = CPropItemPtr(new CPropItem());
  860. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_MAX, OTS_ITEM_TYPES::DOUBLE, TRUE);
  861. m_listPropItems.push_back(poPropItem);
  862. }
  863. poPropItem = CPropItemPtr(new CPropItem());
  864. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  865. m_listPropItems.push_back(poPropItem);
  866. }
  867. }
  868. }
  869. // protected
  870. // cleanup
  871. void CPropParamImage::Cleanup()
  872. {
  873. // need to do nothing at the moment
  874. }
  875. // initialization
  876. void CPropParamImage::Init()
  877. {
  878. CPropParam::Init();
  879. m_nType = RETORT_PROP_GRID_PARAM_TYPE::IMAGE;
  880. }
  881. // duplication
  882. void CPropParamImage::Duplicate(const CPropParamImage& a_oSource)
  883. {
  884. // initialization
  885. Init();
  886. // copy data over
  887. m_nType = a_oSource.m_nType;
  888. // copy data over
  889. m_listPropItems.clear();
  890. for (auto pPropItem : a_oSource.m_listPropItems)
  891. {
  892. CPropItemPtr pPropItemNew = CPropItemPtr(new CPropItem(pPropItem.get()));
  893. m_listPropItems.push_back(pPropItemNew);
  894. }
  895. m_listDataSource.clear();
  896. for (auto strDataSource : a_oSource.m_listDataSource)
  897. {
  898. CString strDataSourceNew = strDataSource;
  899. m_listDataSource.push_back(strDataSourceNew);
  900. }
  901. m_nDataSourceId = a_oSource.m_nDataSourceId;
  902. m_nDataSourceType = a_oSource.m_nDataSourceType;
  903. m_nImageDisplayType = a_oSource.m_nImageDisplayType;
  904. m_nImageType = a_oSource.m_nImageType;
  905. m_nMeasureDataType = a_oSource.m_nMeasureDataType;
  906. m_nCalTableType = a_oSource.m_nCalTableType;
  907. m_nCalChartType = a_oSource.m_nCalChartType;
  908. m_nPartType = a_oSource.m_nPartType;
  909. m_dGrainSizeMin = a_oSource.m_dGrainSizeMin;
  910. m_dGrainSizeMax = a_oSource.m_dGrainSizeMax;
  911. m_nSizeCalMethodType = a_oSource.m_nSizeCalMethodType;
  912. m_strTrioChartName = a_oSource.m_strTrioChartName;
  913. m_TrioChartType = a_oSource.m_TrioChartType;
  914. }
  915. // constructor
  916. CPropParamGrid::CPropParamGrid()
  917. {
  918. Init();
  919. }
  920. // copy constructor
  921. CPropParamGrid::CPropParamGrid(const CPropParamGrid& a_oSource)
  922. {
  923. // can't copy itself
  924. if (&a_oSource == this)
  925. {
  926. return;
  927. }
  928. // copy data over
  929. Duplicate(a_oSource);
  930. }
  931. // copy constructor
  932. CPropParamGrid::CPropParamGrid(CPropParamGrid* a_poSource)
  933. {
  934. // input check
  935. ASSERT(a_poSource);
  936. if (!a_poSource)
  937. {
  938. return;
  939. }
  940. // can't copy itself
  941. if (a_poSource == this)
  942. {
  943. return;
  944. }
  945. // copy data over
  946. Duplicate(*a_poSource);
  947. }
  948. // =operator
  949. CPropParamGrid& CPropParamGrid::operator=(const CPropParamGrid& a_oSource)
  950. {
  951. // cleanup
  952. Cleanup();
  953. // copy the class data over
  954. Duplicate(a_oSource);
  955. // return class
  956. return *this;
  957. }
  958. // ==operator
  959. BOOL CPropParamGrid::operator==(const CPropParamGrid& a_oSource)
  960. {
  961. return FALSE;
  962. }
  963. // destructor
  964. CPropParamGrid::~CPropParamGrid()
  965. {
  966. // cleanup
  967. Cleanup();
  968. }
  969. // property items list
  970. void CPropParamGrid::SetPropertyItems()
  971. {
  972. // clear property items list
  973. m_listPropItems.clear();
  974. // property item
  975. CPropItemPtr poPropItem;
  976. // data source
  977. poPropItem = CPropItemPtr(new CPropItem());
  978. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE, OTS_ITEM_TYPES::COMBO, FALSE);
  979. m_listPropItems.push_back(poPropItem);
  980. // data source type
  981. poPropItem = CPropItemPtr(new CPropItem());
  982. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  983. m_listPropItems.push_back(poPropItem);
  984. // cal data table type
  985. poPropItem = CPropItemPtr(new CPropItem());
  986. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_TABLE_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  987. m_listPropItems.push_back(poPropItem);
  988. //element comp
  989. if (m_nCalTableType == CALCULATE_TABLE_TYPE::PARTICALE_COMP)
  990. {
  991. poPropItem = CPropItemPtr(new CPropItem());
  992. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  993. m_listPropItems.push_back(poPropItem);
  994. }
  995. // size calculation method type
  996. if (m_nCalTableType == CALCULATE_TABLE_TYPE::PARTICALE_SIZE_DISTRIBUTION)
  997. {
  998. poPropItem = CPropItemPtr(new CPropItem());
  999. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS_TABLE, OTS_ITEM_TYPES::COMBO, FALSE);
  1000. m_listPropItems.push_back(poPropItem);
  1001. //暂时去掉颗粒尺寸计算方法和尺寸表计算方法选项
  1002. //----------------------------------------
  1003. poPropItem = CPropItemPtr(new CPropItem());
  1004. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  1005. m_listPropItems.push_back(poPropItem);
  1006. //------------------------------------------
  1007. }
  1008. }
  1009. // protected
  1010. // cleanup
  1011. void CPropParamGrid::Cleanup()
  1012. {
  1013. // need to do nothing at the moment
  1014. }
  1015. // initialization
  1016. void CPropParamGrid::Init()
  1017. {
  1018. CPropParam::Init();
  1019. m_nType = RETORT_PROP_GRID_PARAM_TYPE::TABLE;
  1020. }
  1021. // duplication
  1022. void CPropParamGrid::Duplicate(const CPropParamGrid& a_oSource)
  1023. {
  1024. // initialization
  1025. Init();
  1026. // copy data over
  1027. m_nType = a_oSource.m_nType;
  1028. // copy data over
  1029. m_listPropItems.clear();
  1030. for (auto pPropItem : a_oSource.m_listPropItems)
  1031. {
  1032. CPropItemPtr pPropItemNew = CPropItemPtr(new CPropItem(pPropItem.get()));
  1033. m_listPropItems.push_back(pPropItemNew);
  1034. }
  1035. m_listDataSource.clear();
  1036. for (auto strDataSource : a_oSource.m_listDataSource)
  1037. {
  1038. CString strDataSourceNew = strDataSource;
  1039. m_listDataSource.push_back(strDataSourceNew);
  1040. }
  1041. m_nDataSourceId = a_oSource.m_nDataSourceId;
  1042. m_nDataSourceType = a_oSource.m_nDataSourceType;
  1043. m_nImageDisplayType = a_oSource.m_nImageDisplayType;
  1044. m_nImageType = a_oSource.m_nImageType;
  1045. m_nMeasureDataType = a_oSource.m_nMeasureDataType;
  1046. m_nCalTableType = a_oSource.m_nCalTableType;
  1047. m_nCalChartType = a_oSource.m_nCalChartType;
  1048. m_nPartType = a_oSource.m_nPartType;
  1049. m_dGrainSizeMin = a_oSource.m_dGrainSizeMin;
  1050. m_dGrainSizeMax = a_oSource.m_dGrainSizeMax;
  1051. m_nSizeCalMethodType = a_oSource.m_nSizeCalMethodType;
  1052. m_strTrioChartName = a_oSource.m_strTrioChartName;
  1053. m_TrioChartType = a_oSource.m_TrioChartType;
  1054. }
  1055. // constructor
  1056. CPropParamChart::CPropParamChart()
  1057. {
  1058. Init();
  1059. }
  1060. // copy constructor
  1061. CPropParamChart::CPropParamChart(const CPropParamChart& a_oSource)
  1062. {
  1063. // can't copy itself
  1064. if (&a_oSource == this)
  1065. {
  1066. return;
  1067. }
  1068. // copy data over
  1069. Duplicate(a_oSource);
  1070. }
  1071. // copy constructor
  1072. CPropParamChart::CPropParamChart(CPropParamChart* a_poSource)
  1073. {
  1074. // input check
  1075. ASSERT(a_poSource);
  1076. if (!a_poSource)
  1077. {
  1078. return;
  1079. }
  1080. // can't copy itself
  1081. if (a_poSource == this)
  1082. {
  1083. return;
  1084. }
  1085. // copy data over
  1086. Duplicate(*a_poSource);
  1087. }
  1088. // =operator
  1089. CPropParamChart& CPropParamChart::operator=(const CPropParamChart& a_oSource)
  1090. {
  1091. // cleanup
  1092. Cleanup();
  1093. // copy the class data over
  1094. Duplicate(a_oSource);
  1095. // return class
  1096. return *this;
  1097. }
  1098. // ==operator
  1099. BOOL CPropParamChart::operator==(const CPropParamChart& a_oSource)
  1100. {
  1101. return FALSE;
  1102. }
  1103. // destructor
  1104. CPropParamChart::~CPropParamChart()
  1105. {
  1106. // cleanup
  1107. Cleanup();
  1108. }
  1109. // property items list
  1110. void CPropParamChart::SetPropertyItems()
  1111. {
  1112. // clear property items list
  1113. m_listPropItems.clear();
  1114. // property item
  1115. CPropItemPtr poPropItem;
  1116. // data source
  1117. poPropItem = CPropItemPtr(new CPropItem());
  1118. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE, OTS_ITEM_TYPES::COMBO, FALSE);
  1119. m_listPropItems.push_back(poPropItem);
  1120. // data source type
  1121. poPropItem = CPropItemPtr(new CPropItem());
  1122. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::DATA_SOURCE_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  1123. m_listPropItems.push_back(poPropItem);
  1124. // cal data chart type
  1125. poPropItem = CPropItemPtr(new CPropItem());
  1126. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::CALCULATE_CHART_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  1127. m_listPropItems.push_back(poPropItem);
  1128. // size calculation method type
  1129. if (m_nCalChartType == CALCULATE_CHART_TYPE::PARTICALE_SIZE_DISTRIBUTION)
  1130. {
  1131. poPropItem = CPropItemPtr(new CPropItem());
  1132. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::STD_ID, OTS_ITEM_TYPES::COMBO, FALSE);
  1133. m_listPropItems.push_back(poPropItem);
  1134. poPropItem = CPropItemPtr(new CPropItem());
  1135. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS_TABLE, OTS_ITEM_TYPES::COMBO, FALSE);
  1136. m_listPropItems.push_back(poPropItem);
  1137. //暂时去掉尺寸计算法选项和尺寸表计算法选项
  1138. poPropItem = CPropItemPtr(new CPropItem());
  1139. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  1140. m_listPropItems.push_back(poPropItem);
  1141. }
  1142. // trio chart type
  1143. if (m_nCalChartType == CALCULATE_CHART_TYPE::TRIO_CHART)
  1144. {
  1145. poPropItem = CPropItemPtr(new CPropItem());
  1146. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::TRIO_CHART_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  1147. m_listPropItems.push_back(poPropItem);
  1148. poPropItem = CPropItemPtr(new CPropItem());
  1149. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::GRAIN_SIZE_CLASS_TABLE, OTS_ITEM_TYPES::COMBO, FALSE);
  1150. m_listPropItems.push_back(poPropItem);
  1151. poPropItem = CPropItemPtr(new CPropItem());
  1152. poPropItem->SetReportParameter(OTS_RETORT_PROP_GRID_ITEMS::SIZE_CAL_METHOD_TYPE, OTS_ITEM_TYPES::COMBO, FALSE);
  1153. m_listPropItems.push_back(poPropItem);
  1154. }
  1155. }
  1156. // protected
  1157. // cleanup
  1158. void CPropParamChart::Cleanup()
  1159. {
  1160. // need to do nothing at the moment
  1161. }
  1162. // initialization
  1163. void CPropParamChart::Init()
  1164. {
  1165. CPropParam::Init();
  1166. m_nType = RETORT_PROP_GRID_PARAM_TYPE::CHART;
  1167. }
  1168. // duplication
  1169. void CPropParamChart::Duplicate(const CPropParamChart& a_oSource)
  1170. {
  1171. // initialization
  1172. Init();
  1173. // copy data over
  1174. m_nType = a_oSource.m_nType;
  1175. // copy data over
  1176. m_listPropItems.clear();
  1177. for (auto pPropItem : a_oSource.m_listPropItems)
  1178. {
  1179. CPropItemPtr pPropItemNew = CPropItemPtr(new CPropItem(pPropItem.get()));
  1180. m_listPropItems.push_back(pPropItemNew);
  1181. }
  1182. m_listDataSource.clear();
  1183. for (auto strDataSource : a_oSource.m_listDataSource)
  1184. {
  1185. CString strDataSourceNew = strDataSource;
  1186. m_listDataSource.push_back(strDataSourceNew);
  1187. }
  1188. m_nDataSourceId = a_oSource.m_nDataSourceId;
  1189. m_nDataSourceType = a_oSource.m_nDataSourceType;
  1190. m_nImageDisplayType = a_oSource.m_nImageDisplayType;
  1191. m_nImageType = a_oSource.m_nImageType;
  1192. m_nMeasureDataType = a_oSource.m_nMeasureDataType;
  1193. m_nCalTableType = a_oSource.m_nCalTableType;
  1194. m_nCalChartType = a_oSource.m_nCalChartType;
  1195. m_nPartType = a_oSource.m_nPartType;
  1196. m_dGrainSizeMin = a_oSource.m_dGrainSizeMin;
  1197. m_dGrainSizeMax = a_oSource.m_dGrainSizeMax;
  1198. m_nSizeCalMethodType = a_oSource.m_nSizeCalMethodType;
  1199. m_strTrioChartName = a_oSource.m_strTrioChartName;
  1200. m_TrioChartType = a_oSource.m_TrioChartType;
  1201. }
  1202. }