cplaqueresult.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. #include "CPlaqueResult.h"
  2. #include <cstdlib>
  3. #include <iostream>
  4. using namespace std;
  5. CPlaqueResult::CPlaqueResult()
  6. {
  7. result = new plaque::PlaqueResult;
  8. Initialize();
  9. }
  10. CPlaqueResult::~CPlaqueResult()
  11. {
  12. if ( result->m_tPtLongeantPlaque )
  13. {
  14. delete[] result->m_tPtLongeantPlaque;
  15. }
  16. if ( result->m_ptList )
  17. {
  18. delete[] result->m_ptList;
  19. }
  20. if ( result->m_tbPtsTrouvesFin )
  21. {
  22. delete[] result->m_tbPtsTrouvesFin;
  23. }
  24. delete result;
  25. }
  26. void CPlaqueResult::Initialize()
  27. {
  28. result->plaque_max_thickness = 0.0;
  29. result->plaque_mean_thickness = 0.0;
  30. result->plaque_area = 0.0;
  31. result->plaque_mean_density = 0.0;
  32. result->numberOfMeasures = 0;
  33. result->m_nPtLongeantPlaque = 0;
  34. result->m_tPtLongeantPlaque = NULL;
  35. result->m_nPtList = 0;
  36. result->m_ptList = NULL;
  37. result->m_ptInferieur.x = 0;
  38. result->m_ptInferieur.y = 0;
  39. result->m_nVecteursTrouves = 0;
  40. result->m_tbPtsTrouvesFin = NULL;
  41. result->code_retour = 0;
  42. result->code_debug1 = 0;
  43. result->code_debug2 = 0;
  44. result->code_debug3 = 0;
  45. result->code_debug4 = 0;
  46. result->code_debug5 = 0;
  47. result->m_type = 0;
  48. result->m_Etape = 0;
  49. }
  50. int CPlaqueResult::fill( plaque::PlaqueResult* res)
  51. {
  52. int retour;
  53. if ( res )
  54. {
  55. if ( res->m_tPtLongeantPlaque )
  56. {
  57. delete[] res->m_tPtLongeantPlaque;
  58. }
  59. /* if ( res->m_ptList )
  60. {
  61. delete[] res->m_ptList;
  62. }
  63. */
  64. if ( res->m_tbPtsTrouvesFin )
  65. {
  66. delete[] res->m_tbPtsTrouvesFin;
  67. }
  68. int n = result->m_nPtLongeantPlaque;
  69. res->plaque_max_thickness = result->plaque_max_thickness;
  70. res->plaque_mean_thickness = result->plaque_mean_thickness;
  71. res->plaque_area = result->plaque_area;
  72. res->plaque_mean_density = result->plaque_mean_density;
  73. res->numberOfMeasures = result->numberOfMeasures;
  74. res->code_retour = result->code_retour;
  75. res->code_debug1 = result->code_debug1;
  76. res->code_debug2 = result->code_debug2;
  77. res->code_debug3 = result->code_debug3;
  78. res->code_debug4 = result->code_debug4;
  79. res->code_debug5 = result->code_debug5;
  80. res->m_type = result->m_type;
  81. res->m_Etape = result->m_Etape;
  82. res->m_ptInferieur.x = result->m_ptInferieur.x;
  83. res->m_ptInferieur.y = result->m_ptInferieur.y;
  84. // Transfert de l'image résultats de l'analyse
  85. unsigned char *dadd, *dadd2, *amax;
  86. res->m_nbpix = result->m_nbpix;
  87. res->m_dataImg = new unsigned char[result->m_nbpix];
  88. dadd = (unsigned char *) result->m_dataImg;
  89. amax = dadd + result->m_nbpix;
  90. dadd2 = res->m_dataImg;
  91. while (dadd < amax)
  92. {
  93. *dadd2 = *dadd;
  94. dadd++;
  95. dadd2++;
  96. }
  97. res->m_tPtLongeantPlaque = new plaque::Point[ n ];
  98. res->m_nPtLongeantPlaque = n;
  99. if ( !res->m_tPtLongeantPlaque )
  100. {
  101. return false;
  102. }
  103. int i;
  104. for ( i = 0; i < n; i++ )
  105. {
  106. res->m_tPtLongeantPlaque[ i ] = result->m_tPtLongeantPlaque[ i ];
  107. }
  108. /*
  109. // Tab 2
  110. n = result->m_nPtList;
  111. res->m_ptList = new plaque::Point[ n ];
  112. res->m_nPtList = n;
  113. if ( !res->m_ptList )
  114. {
  115. return false;
  116. }
  117. for ( i = 0; i < n; i++ )
  118. {
  119. res->m_ptList[ i ] = result->m_ptList[ i ];
  120. }
  121. */
  122. // Tab 3
  123. res->m_nVecteursTrouves = result->m_nVecteursTrouves;
  124. n = res->m_nVecteursTrouves;
  125. res->m_tbPtsTrouvesFin = new plaque::Point[ n ];
  126. if ( !res->m_tbPtsTrouvesFin )
  127. {
  128. return false;
  129. }
  130. for ( i = 0; i < n; i++ )
  131. {
  132. res->m_tbPtsTrouvesFin[ i ] = result->m_tbPtsTrouvesFin[ i ];
  133. }
  134. }
  135. retour = res->m_nVecteursTrouves;
  136. return retour;
  137. }
  138. int CPlaqueResult::fill2( plaque::PlaqueResult* res)
  139. {
  140. int retour;
  141. retour = 0;
  142. if ( res )
  143. {
  144. res->plaque_max_thickness = result->plaque_max_thickness;
  145. res->plaque_mean_thickness = result->plaque_mean_thickness;
  146. res->plaque_area = result->plaque_area;
  147. res->plaque_mean_density = result->plaque_mean_density;
  148. res->numberOfMeasures = result->numberOfMeasures;
  149. res->code_retour = result->code_retour;
  150. res->code_debug1 = result->code_debug1;
  151. res->code_debug2 = result->code_debug2;
  152. res->code_debug3 = result->code_debug3;
  153. res->code_debug4 = result->code_debug4;
  154. res->code_debug5 = result->code_debug5;
  155. }
  156. return retour;
  157. }
  158. bool CPlaqueResult::allocate_vectors( long n_points )
  159. {
  160. if ( !n_points )
  161. {
  162. return false;
  163. }
  164. result->m_nPtLongeantPlaque = n_points;
  165. result->m_tPtLongeantPlaque = new plaque::Point[ n_points ];
  166. if ( !result->m_tPtLongeantPlaque )
  167. {
  168. return false;
  169. }
  170. return true;
  171. }