]> Creatis software - creaContours.git/blobdiff - lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx
*** empty log message ***
[creaContours.git] / lib / Interface_ManagerContour_NDimensions / wxContourMainFrame.cxx
index b95f0c460aacfaf6c93af09b9b4cb37202d5f07c..58c3ec6f7c557cbc62cf6ae3d74dd5c4dc7d4e9d 100644 (file)
@@ -62,7 +62,8 @@ char wxContourMainFrame::COPY = 'C';
 //             m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER;
 //             m_notebook_theme = 0;   
                //wxContour_ActionCommandsID a;
-
+               
+               _contourextractdata                     = NULL;
        }
 
        wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector<vtkImageData*> images, long style,std::string datadir)         
@@ -99,15 +100,17 @@ char wxContourMainFrame::COPY = 'C';
 
                if(images.size() > 0)
                {
-                       _images = images;
                        this->setVectImages(images);
                }
-
+               
+               _contourextractdata                     = NULL;
 }
 
 void wxContourMainFrame::setVectImages(std::vector<vtkImageData*> imgs)
 {
 
+       _images = imgs;
+
        #if defined(__GNUC__)
                std::string str_home(getenv("HOME"));
        #elif defined(_WIN32)
@@ -168,6 +171,7 @@ void wxContourMainFrame::setVectImages(std::vector<vtkImageData*> imgs)
 
        wxContourMainFrame :: ~wxContourMainFrame()
        {
+               delete _contourextractdata;
                deleteAllContours();
                _pannew->Close();
                interfMainPanel::resetInstance();
@@ -577,13 +581,50 @@ void wxContourMainFrame::setConceptValue( std::string name, int value ){
        _instantPanel->setConceptValue(name, value);
 }
 
+
 ConceptDataWrap* wxContourMainFrame::getLastConceptData(){
        return _instantPanel->getLastConceptData();
 }
+
+
 bool wxContourMainFrame::getIfConceptCheckedAt( std::string name, int pos ){
        return _instantPanel->getIfConceptCheckedAt( name, pos );
 }
 
+
+
+void wxContourMainFrame::ShowResultImages(int typeContourGroup)
+{
+       vtkImageData * mask;
+       vtkImageData * value;
+       this->getMaskValue(&mask, &value, typeContourGroup);
+       
+       std::vector<int> nTypeView;
+       nTypeView.push_back(5);
+       nTypeView.push_back(1);
+       nTypeView.push_back(2);
+       nTypeView.push_back(0); 
+       
+       wxFrame *frame = new wxFrame(this, -1,_T("Result image extracted.."),wxDefaultPosition,wxSize(600,600), wxDEFAULT_FRAME_STYLE|wxSTAY_ON_TOP);
+       wxAuiManager *m_mgr_noteBookViewerResult = new wxAuiManager();
+       m_mgr_noteBookViewerResult->SetManagedWindow(frame);
+       
+       wxAuiNotebook* noteBookViewerResult = new wxAuiNotebook(frame, -1, wxPoint(600, 600), wxSize(430,200), m_notebook_style);
+       m_mgr_noteBookViewerResult->AddPane(noteBookViewerResult, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false));
+
+       wxPanel *panelViewer1 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, value,&nTypeView);
+       wxPanel *panelViewer2 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, mask,&nTypeView);
+       
+
+       noteBookViewerResult->AddPage( panelViewer1, wxT("Image result") );
+       noteBookViewerResult->AddPage( panelViewer2, wxT("Mask result") );
+       m_mgr_noteBookViewerResult->Update();
+       frame->Show();
+}
+
+
+
+
 void wxContourMainFrame::changeInstant()
 {
                std::vector<int> instantVect;
@@ -603,6 +644,7 @@ void wxContourMainFrame::changeInstant()
 }
 
 
+
 void wxContourMainFrame :: updateInstantOutlines()
 {
        _theViewPanel->removeSceneContours();
@@ -755,43 +797,19 @@ void wxContourMainFrame ::loadState(std::string filename){
 
        fscanf(pFile,"%s",tmp); // Version
        fscanf(pFile,"%s",tmp); // 1.0.2 || 1.0.1 || 1.0.0
-       std::string version(tmp);
 
        deleteAllContours();
 
-       //AD:02-06-09
-       if (version=="1.0.2")
-       {
-               loadContours(pFile);
-       }
-       
-       //AD:02-06-09
-       else if (version=="1.0.1")
-       {
-               loadContours(pFile);
-       }
-       
-       //AD:02-06-09
-       else if (version=="1.0.0")
-       {
-               loadContours(pFile);
-       }
+       loadContours(pFile, false);
+       loadContours(pFile, true);      
 
        fclose(pFile);
 }
 
-void wxContourMainFrame ::loadContours( FILE *pFile )
+void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour )
 {
        char tmp[255];
-       fscanf(pFile,"%s",tmp); // NumberOfContours 
-       fscanf(pFile,"%s",tmp); // ##
-       int numberOfContours = atoi(tmp);  
 
-       std::vector<int> instantVector;
-       int typeContourModel;
-       manualContourModel *manModelContour;
-       int typeView;
-       
        fscanf(pFile,"%s",tmp); // ImageDimensions
        fscanf(pFile,"%s",tmp); // X
        fscanf(pFile,"%s",tmp); // Y
@@ -801,6 +819,15 @@ void wxContourMainFrame ::loadContours( FILE *pFile )
        fscanf(pFile,"%s",tmp); // X
        fscanf(pFile,"%s",tmp); // Y
        fscanf(pFile,"%s",tmp); // Z
+       
+       fscanf(pFile,"%s",tmp); // NumberOfContours 
+       fscanf(pFile,"%s",tmp); // ##
+       int numberOfContours = atoi(tmp);  
+
+       std::vector<int> instantVector;
+       int typeContourModel;
+       manualContourModel *manModelContour;
+       int typeView;
 
        int i;
        for (i=0;i<numberOfContours;i++)
@@ -843,6 +870,12 @@ void wxContourMainFrame ::loadContours( FILE *pFile )
                        //_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
                        _theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
                }       
+               
+               if (staticContour==true)
+               {
+                       Instant instant(&instantVector);
+                       kernelManager->changeContourOfManager( theName , &instant );
+               }
        }// for  numberOfContours
 }
 
@@ -864,19 +897,21 @@ void wxContourMainFrame::onLoad()
                //AD:02-06-09
                if (version=="1.0.2")
                {
-                       openContours(pFile,2);
+                       openContours(pFile,2,false);
+                       openContours(pFile,2,true);     //Load StaticContours
                }
                
                //AD:02-06-09
                else if (version=="1.0.1")
                {
-                       openContours(pFile,1);
+                       openContours(pFile,1,false); //Skips ImageDimensions and ImageSpacing
+                       openContours(pFile,1,true); //Load StaticContours, skips ImageDimensions and ImageSpacing
                }
                
                //AD:02-06-09
                else if (version=="1.0.0")
                {
-                       openContours(pFile,0);
+                       openContours(pFile,1,false); //Skips ImageDimensions and ImageSpacing
                }
 
                fclose(pFile);
@@ -906,12 +941,7 @@ void wxContourMainFrame::saveFileWithContours( std::string filename )
 
        fprintf(pFile,"--CreaContour--\n");
        fprintf(pFile,"Version %s\n", "1.0.2" );
-
-       // Normal Contours
-       lstNameThings           = kernelManager->GetLstNameThings();
-       sizeLstNameThings       = lstNameThings.size(); 
-       fprintf(pFile,"NumberOfContours %d\n", sizeLstNameThings );
-
+       
        vtkImageData *image = _images[0];
 
        int dimRange[3];
@@ -924,13 +954,24 @@ void wxContourMainFrame::saveFileWithContours( std::string filename )
 
        fprintf(pFile,"ImageSpacing %f %f %f\n", spaRange[0], spaRange[1], spaRange[2] );
 
+       // Normal Contours
+       
+       lstNameThings           = kernelManager->GetLstNameThings();
+       sizeLstNameThings       = lstNameThings.size(); 
+       fprintf(pFile,"NumberOfContours %d\n", sizeLstNameThings );
+
        for (i=0 ; i<sizeLstNameThings ; i++) 
        {
                kernelManager->SaveThingName( pFile, lstNameThings[i] );
                _theViewPanel->getSceneManager()->SaveThingName( pFile, lstNameThings[i] );
        }// for i
 
-       //-- Contours Statics 
+       //-- Static Contours
+
+       fprintf(pFile,"ImageDimensions %d %d %d\n", dimRange[0], dimRange[1], dimRange[2] );
+       
+       fprintf(pFile,"ImageSpacing %f %f %f\n", spaRange[0], spaRange[1], spaRange[2] );
+       
        lstNameThings           = kernelManager->GetLstNameThingsStatic();
        sizeLstNameThings       = lstNameThings.size(); 
        fprintf(pFile,"NumberOfContoursStatic %d\n", sizeLstNameThings );
@@ -943,18 +984,10 @@ void wxContourMainFrame::saveFileWithContours( std::string filename )
 }
 
 //AD:04-06-09
-void wxContourMainFrame::openContours( FILE *pFile, int version )
+void wxContourMainFrame::openContours( FILE *pFile, int version, bool staticContour )
 {
        char tmp[255];
-       fscanf(pFile,"%s",tmp); // NumberOfContours 
-       fscanf(pFile,"%s",tmp); // ##
-       int numberOfContours = atoi(tmp);  
-
-       std::vector<int> instantVector;
-       int typeContourModel;
-       manualContourModel *manModelContour;
-       int typeView;
-
+       
        vtkImageData *image = _images[0];
        int imageDim[3];
        double imageSpac[3];
@@ -985,12 +1018,21 @@ void wxContourMainFrame::openContours( FILE *pFile, int version )
                fscanf(pFile,"%s",tmp); // Z
                tempSpac[2] = atof(tmp);
                
-               //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 3
+               //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 2
                if (imageDim[0]!=tempDim[0] || imageDim[1]!=tempDim[1] || imageSpac[0]!=tempSpac[0] || imageSpac[1]!=tempSpac[1])
                {
                        compatible = false;
                }
        }
+       
+       fscanf(pFile,"%s",tmp); // NumberOfContours 
+       fscanf(pFile,"%s",tmp); // ##
+       int numberOfContours = atoi(tmp);  
+
+       std::vector<int> instantVector;
+       int typeContourModel;
+       manualContourModel *manModelContour;
+       int typeView;
 
        if (compatible==true)
        {
@@ -1038,7 +1080,7 @@ void wxContourMainFrame::openContours( FILE *pFile, int version )
                                _theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
                        }       
 
-                       if (version==0) //StaticContours (will appear in all slices)
+                       if (staticContour) //StaticContours (will appear in all slices)
                        {
                                Instant instant(&instantVector);
                                kernelManager->changeContourOfManager( theName , &instant );
@@ -1073,9 +1115,8 @@ void wxContourMainFrame::openContours( FILE *pFile, int version )
 
                if (dial->GetReturnCode() == wxID_OK)
                {
-                       int typeOfTransformation = radioOpts->GetSelection();
+                       typeOfTransformation = radioOpts->GetSelection();
                        transform = true;
-
                }
        
                int i;
@@ -1103,24 +1144,21 @@ void wxContourMainFrame::openContours( FILE *pFile, int version )
 
                        manModelContour =  kernelManager->factoryManualContourModel(typeContourModel);
                        manModelContour->Open(pFile);
-                               
-                       if (transform)
+
+                       if (transform==true)
                        {
                                if (typeOfTransformation==0)
                                {
                                        double transX, transY;
                                        transX = (double) imageDim[0]/tempDim[0];
                                        transY = (double) imageDim[1]/tempDim[1];
-
                                        manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
                                }
-
                                else if (typeOfTransformation==1)
                                {
                                        double transX, transY;
                                        transX = (double) tempSpac[0]/imageSpac[0];
                                        transY = (double) tempSpac[1]/imageSpac[1];
-
                                        manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
                                }
                        }
@@ -1142,7 +1180,7 @@ void wxContourMainFrame::openContours( FILE *pFile, int version )
                                _theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
                        }       
 
-                       if (version==0) //StaticContours (will appear in all slices)
+                       if (staticContour) //StaticContours (will appear in all slices)
                        {
                                Instant instant(&instantVector);
                                kernelManager->changeContourOfManager( theName , &instant );
@@ -2329,13 +2367,21 @@ std::vector<std::string> wxContourMainFrame::getOutlinesName(int slide){
        return kernelManager->getOutlinesNameAtInstant(tempVector);
 }
 
+
+void wxContourMainFrame::GenerateContourExtractData()
+{
+       if (_contourextractdata==NULL) { _contourextractdata = new ContourExtractData(true); }
+}
+
+
 void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int selection,int minimumZ,int maximumZ)
 {
+       GenerateContourExtractData();
+       
        int maxContourGroup     =       0;
 
-       ContourExtractData      *contourextractdata = new ContourExtractData();
        
-       contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
+       _contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
 
        std::vector<manualContourModel*> lstManConMod;
        std::vector<manualContourModel*> lstManConModTmp;
@@ -2389,7 +2435,7 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel
        
 
        totalZ  = maxZ-minZ+1;
-       contourextractdata->SetImage( imagedata);
+       _contourextractdata->SetImage( imagedata);
 
 // For each slice..
        for ( z=minZ ; z<=maxZ ; z++ )
@@ -2402,7 +2448,7 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel
                //_staticTextInformation->SetLabel(tmpString);
 
                //Extraction data from contours of each slice
-               contourextractdata->SetZtoBeAnalys(z);
+               _contourextractdata->SetZtoBeAnalys(z);
 
                tempVector[1]=z;
                Instant instant(&tempVector);
@@ -2449,18 +2495,18 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel
                                lstManConModTmp = lstManConModExp;
                        }
 
-                       contourextractdata->SetLstManualContourModel( lstManConModTmp );
+                       _contourextractdata->SetLstManualContourModel( lstManConModTmp );
 
                        pLstValue.clear();
                        pLstValuePosX.clear();
                        pLstValuePosY.clear();
                        pLstValuePosZ.clear();
-                       contourextractdata->GetValuesInsideCrown(       &pLstValue,
+                       _contourextractdata->GetValuesInsideCrown(      &pLstValue,
                                                                                                                &pLstValuePosX,
                                                                                                                &pLstValuePosY,
                                                                                                                &pLstValuePosZ);
                        // Statistics of each slice.
-                       contourextractdata->Statistics( &pLstValue,
+                       _contourextractdata->Statistics( &pLstValue,
                                                                                        minimumZ,
                                                                                        maximumZ,
                                                                                        &resultGrayRangeCount, 
@@ -2518,7 +2564,6 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel
        }
 
        interfMainPanel::getInstance()->setStringInfoPanel( _T("") );
-       delete contourextractdata;
 }
 
 //AD: 29-05-09
@@ -2580,9 +2625,10 @@ void wxContourMainFrame::onSaveResults(std::string directory,std::string namefil
 void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefile,int typeContourGroup)
 {
        wxBusyCursor wait;
-       ContourExtractData      *contourextractdata = new ContourExtractData();
+       GenerateContourExtractData();
+       
        //int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
-       contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
+       _contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
 
        std::vector<manualContourModel*> lstManConMod;
        std::vector<manualContourModel*> lstManConModTmp;
@@ -2609,7 +2655,7 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil
        maxZ    = sizeZ;//_mbarrange->GetEnd();
        totalZ  = maxZ-minZ+1;
 
-       contourextractdata->SetImage( imagedata);
+       _contourextractdata->SetImage( imagedata);
 
 // For each slice..
        for ( z=0 ; z<sizeZ ; z++)
@@ -2624,7 +2670,7 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil
 
 
                //Extraction data from contours of each slice
-               contourextractdata->SetZtoBeAnalys( z);
+               _contourextractdata->SetZtoBeAnalys( z);
 
                tempVector[1]=z;
                Instant instant(&tempVector);
@@ -2659,13 +2705,13 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil
                                lstManConModTmp = lstManConModExp;
                        }
 
-                       contourextractdata->SetLstManualContourModel( lstManConModTmp );
+                       _contourextractdata->SetLstManualContourModel( lstManConModTmp );
 
                        pLstValue.clear();
                        pLstValuePosX.clear();
                        pLstValuePosY.clear();
                        pLstValuePosZ.clear();
-                       contourextractdata->GetValuesInsideCrown(       &pLstValue,
+                       _contourextractdata->GetValuesInsideCrown(      &pLstValue,
                                                                                                                &pLstValuePosX,
                                                                                                                &pLstValuePosY,
                                                                                                                &pLstValuePosZ);
@@ -2700,18 +2746,19 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil
        } // for z
        interfMainPanel::getInstance()->setStringInfoPanel(_T(""));
        //_staticTextInformation->SetLabel( _T("") );
-       delete contourextractdata;
+
 }
 
 void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value,int typeContourGroup){
        wxBusyCursor wait;
-       ContourExtractData      *contourextractdata = new ContourExtractData( true );
+       GenerateContourExtractData();
+
        //int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
        if (typeContourGroup==3)
        {
                typeContourGroup=1;
        }
-       contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
+       _contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
 
        std::vector<manualContourModel*> lstManConMod;
        std::vector<manualContourModel*> lstManConModTmp;
@@ -2736,7 +2783,7 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value
        maxZ    = sizeZ;//_mbarrange->GetEnd();
        totalZ  = maxZ-minZ+1;
 
-       contourextractdata->SetImage( imagedata);
+       _contourextractdata->SetImage( imagedata);
 
 // For each slice..
        for ( z=0 ; z<sizeZ ; z++)
@@ -2748,7 +2795,7 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value
                interfMainPanel::getInstance()->setStringInfoPanel(tmpString);
 
                //Extraction data from contours of each slice
-               contourextractdata->SetZtoBeAnalys( z);
+               _contourextractdata->SetZtoBeAnalys( z);
 
                tempVector[1]=z;
                Instant instant(&tempVector);
@@ -2781,15 +2828,15 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value
                                lstManConModTmp = lstManConModExp;
                        }
 
-                       contourextractdata->SetLstManualContourModel( lstManConModTmp );
-                       contourextractdata->CalculateImageResult(); // with actual Z
+                       _contourextractdata->SetLstManualContourModel( lstManConModTmp );
+                       _contourextractdata->CalculateImageResult(); // with actual Z
 
                } // for  iContourGroup
        } // for z
 
-       (*value) = contourextractdata->GetVtkImageValueResult();
-       (*mask) contourextractdata->GetVtkImageMaskResult();
-       delete contourextractdata;
+       (*value) = _contourextractdata->GetVtkImageValueResult();
+       (*mask)  = _contourextractdata->GetVtkImageMaskResult();
+
 }
 
 void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value)