#include "CPlaqueResult.h" #include #include using namespace std; CPlaqueResult::CPlaqueResult() { result = new plaque::PlaqueResult; Initialize(); } CPlaqueResult::~CPlaqueResult() { if ( result->m_tPtLongeantPlaque ) { delete[] result->m_tPtLongeantPlaque; } if ( result->m_ptList ) { delete[] result->m_ptList; } if ( result->m_tbPtsTrouvesFin ) { delete[] result->m_tbPtsTrouvesFin; } delete result; } void CPlaqueResult::Initialize() { result->plaque_max_thickness = 0.0; result->plaque_mean_thickness = 0.0; result->plaque_area = 0.0; result->plaque_mean_density = 0.0; result->numberOfMeasures = 0; result->m_nPtLongeantPlaque = 0; result->m_tPtLongeantPlaque = NULL; result->m_nPtList = 0; result->m_ptList = NULL; result->m_ptInferieur.x = 0; result->m_ptInferieur.y = 0; result->m_nVecteursTrouves = 0; result->m_tbPtsTrouvesFin = NULL; result->code_retour = 0; result->code_debug1 = 0; result->code_debug2 = 0; result->code_debug3 = 0; result->code_debug4 = 0; result->code_debug5 = 0; result->m_type = 0; result->m_Etape = 0; } int CPlaqueResult::fill( plaque::PlaqueResult* res) { int retour; if ( res ) { if ( res->m_tPtLongeantPlaque ) { delete[] res->m_tPtLongeantPlaque; } /* if ( res->m_ptList ) { delete[] res->m_ptList; } */ if ( res->m_tbPtsTrouvesFin ) { delete[] res->m_tbPtsTrouvesFin; } int n = result->m_nPtLongeantPlaque; res->plaque_max_thickness = result->plaque_max_thickness; res->plaque_mean_thickness = result->plaque_mean_thickness; res->plaque_area = result->plaque_area; res->plaque_mean_density = result->plaque_mean_density; res->numberOfMeasures = result->numberOfMeasures; res->code_retour = result->code_retour; res->code_debug1 = result->code_debug1; res->code_debug2 = result->code_debug2; res->code_debug3 = result->code_debug3; res->code_debug4 = result->code_debug4; res->code_debug5 = result->code_debug5; res->m_type = result->m_type; res->m_Etape = result->m_Etape; res->m_ptInferieur.x = result->m_ptInferieur.x; res->m_ptInferieur.y = result->m_ptInferieur.y; // Transfert de l'image résultats de l'analyse unsigned char *dadd, *dadd2, *amax; res->m_nbpix = result->m_nbpix; res->m_dataImg = new unsigned char[result->m_nbpix]; dadd = (unsigned char *) result->m_dataImg; amax = dadd + result->m_nbpix; dadd2 = res->m_dataImg; while (dadd < amax) { *dadd2 = *dadd; dadd++; dadd2++; } res->m_tPtLongeantPlaque = new plaque::Point[ n ]; res->m_nPtLongeantPlaque = n; if ( !res->m_tPtLongeantPlaque ) { return false; } int i; for ( i = 0; i < n; i++ ) { res->m_tPtLongeantPlaque[ i ] = result->m_tPtLongeantPlaque[ i ]; } /* // Tab 2 n = result->m_nPtList; res->m_ptList = new plaque::Point[ n ]; res->m_nPtList = n; if ( !res->m_ptList ) { return false; } for ( i = 0; i < n; i++ ) { res->m_ptList[ i ] = result->m_ptList[ i ]; } */ // Tab 3 res->m_nVecteursTrouves = result->m_nVecteursTrouves; n = res->m_nVecteursTrouves; res->m_tbPtsTrouvesFin = new plaque::Point[ n ]; if ( !res->m_tbPtsTrouvesFin ) { return false; } for ( i = 0; i < n; i++ ) { res->m_tbPtsTrouvesFin[ i ] = result->m_tbPtsTrouvesFin[ i ]; } } retour = res->m_nVecteursTrouves; return retour; } int CPlaqueResult::fill2( plaque::PlaqueResult* res) { int retour; retour = 0; if ( res ) { res->plaque_max_thickness = result->plaque_max_thickness; res->plaque_mean_thickness = result->plaque_mean_thickness; res->plaque_area = result->plaque_area; res->plaque_mean_density = result->plaque_mean_density; res->numberOfMeasures = result->numberOfMeasures; res->code_retour = result->code_retour; res->code_debug1 = result->code_debug1; res->code_debug2 = result->code_debug2; res->code_debug3 = result->code_debug3; res->code_debug4 = result->code_debug4; res->code_debug5 = result->code_debug5; } return retour; } bool CPlaqueResult::allocate_vectors( long n_points ) { if ( !n_points ) { return false; } result->m_nPtLongeantPlaque = n_points; result->m_tPtLongeantPlaque = new plaque::Point[ n_points ]; if ( !result->m_tPtLongeantPlaque ) { return false; } return true; }