cplaqueresult.cpp 4.7 KB

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