]> Creatis software - creaContours.git/blobdiff - lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx
no message
[creaContours.git] / lib / Interface_ManagerContour_NDimensions / wxContourMainFrame.cxx
index 796d46c51e8c953f65bb92b812fe01f9b210c5b2..6fbe98bbdb338086f27e2161ad1a80a98152eaf0 100644 (file)
@@ -833,14 +833,20 @@ void wxContourMainFrame :: createMirrorContourOf ( std::string anExistingKName,
        _theViewPanel->getSceneManager()->createCopyContourOf( anExistingKName, cloneName, manualModel , append );
 }
 
+//EED04
 void wxContourMainFrame ::loadState(std::string filename){
+
+       deleteAllContours();
+       onLoadContours(filename,false);
+
+       /* EED Borrame
        char tmp[255];
        FILE *pFile=fopen(filename.c_str(),"r+");
 
        fscanf(pFile,"%s",tmp); // --CreaContour--
 
        fscanf(pFile,"%s",tmp); // Version
-       fscanf(pFile,"%s",tmp); // 1.0.2 || 1.0.1 || 1.0.0
+       fscanf(pFile,"%s",tmp); // 1.0.3 || 1.0.2 || 1.0.1 || 1.0.0
 
        deleteAllContours();
 
@@ -848,21 +854,28 @@ void wxContourMainFrame ::loadState(std::string filename){
        loadContours(pFile, true);
 
        fclose(pFile);
+       */
 }
 
-void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour )
+
+//EED03
+/*EED Borrame
+void wxContourMainFrame::loadContours( FILE *pFile, bool staticContour )
 {
        char tmp[255];
 
-       fscanf(pFile,"%s",tmp); // ImageDimensions
-       fscanf(pFile,"%s",tmp); // X
-       fscanf(pFile,"%s",tmp); // Y
-       fscanf(pFile,"%s",tmp); // Z
+       if (staticContour==false)
+       {
+               fscanf(pFile,"%s",tmp); // ImageDimensions
+               fscanf(pFile,"%s",tmp); // X
+               fscanf(pFile,"%s",tmp); // Y
+               fscanf(pFile,"%s",tmp); // Z
 
-       fscanf(pFile,"%s",tmp); // ImageSpacing
-       fscanf(pFile,"%s",tmp); // X
-       fscanf(pFile,"%s",tmp); // Y
-       fscanf(pFile,"%s",tmp); // Z
+               fscanf(pFile,"%s",tmp); // ImageSpacing
+               fscanf(pFile,"%s",tmp); // X
+               fscanf(pFile,"%s",tmp); // Y
+               fscanf(pFile,"%s",tmp); // Z
+       }
 
        fscanf(pFile,"%s",tmp); // NumberOfContours
        fscanf(pFile,"%s",tmp); // ##
@@ -922,6 +935,8 @@ void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour )
                }
        }// for  numberOfContours
 }
+*/
+
 
 void wxContourMainFrame::onLoad()
 {
@@ -937,14 +952,12 @@ void wxContourMainFrame::onLoad()
                }
        }
 
-       onLoadContours(fileNameContourROI);
+       onLoadContours(fileNameContourROI,true);
 }
 
 
-
-void wxContourMainFrame::onLoadContours(std::string fileNameContourROI)
+void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool interactiveInterface)
 {
-printf("EED2 wxContourMainFrame::onLoadContours 01 \n");
        char tmp[255];
        char tmpD[255];
 
@@ -961,7 +974,7 @@ printf("EED2 wxContourMainFrame::onLoadContours 01 \n");
                {
                        fscanf(pFileData,"%s",tmpD); // --CreaContour--
                        fscanf(pFileData,"%s",tmpD); // Version
-                       fscanf(pFileData,"%s",tmpD); // 1.0.2 || 1.0.1 || 1.0.0
+                       fscanf(pFileData,"%s",tmpD); // 1.0.3 || 1.0.2 || 1.0.1 || 1.0.0
 
                        fscanf(pFileData,"%s",tmpD); // onePixelSize
                        fscanf(pFileData,"%s",tmpD); // #
@@ -973,18 +986,27 @@ printf("EED2 wxContourMainFrame::onLoadContours 01 \n");
                fscanf(pFile,"%s",tmp); // --CreaContour--
 
                fscanf(pFile,"%s",tmp); // Version
-               fscanf(pFile,"%s",tmp); // 1.0.2 || 1.0.1 || 1.0.0
+               fscanf(pFile,"%s",tmp); // 1.0.3 || 1.0.2 || 1.0.1 || 1.0.0
                std::string version(tmp);
 
                //AD:02-06-09
         _tmpReadFileTypeOfTransformation=-1;
-               if (version=="1.0.2")
+               if (version=="1.0.3")
                {
-                   readDimSpc(pFile);
+                   readDimSpc(pFile,interactiveInterface);   // DimSpc interactive ON
                        openContours(pFile,pFileData,false);
                        openContours(pFile,pFileData,true);     //Load StaticContours
                }
 
+               if (version=="1.0.2")
+               {
+//EED001
+                   readDimSpc(pFile,interactiveInterface);  // DimSpc interactive ON
+                       openContours(pFile,pFileData,false);
+                   readDimSpc(pFile,false);  // DimSpc interactive OFF
+                       openContours(pFile,pFileData,true);     //Load StaticContours
+               }
+
                //AD:02-06-09
                else if (version=="1.0.1")
                {
@@ -1022,7 +1044,7 @@ void wxContourMainFrame::onImport(){
                filenamecontours = kernelManager->parseOsirixFile(filename);
 
                if(filenamecontours.compare("") != 0){
-                       onLoadContours(filenamecontours);
+                       onLoadContours(filenamecontours,true);
                }
 
        }
@@ -1081,11 +1103,11 @@ void wxContourMainFrame::saveFileWithContours( std::string filename )
        int i,sizeLstNameThings;
 
        fprintf(pFile,"--CreaContour--\n");
-       fprintf(pFile,"Version %s\n", "1.0.2" );
+       fprintf(pFile,"Version %s\n", "1.0.3" );
 
 //CMRU 03-09-09-----------------------------------------------------------------------------------------------
        fprintf(pFileData,"--CreaContour--\n");
-       fprintf(pFileData,"Version %s\n", "1.0.2" );
+       fprintf(pFileData,"Version %s\n", "1.0.3" );
        fprintf(pFileData,"OnePixelSize %f\n", _onePixelSize);
 
 //------------------------------------------------------------------------------------------------------------
@@ -1129,9 +1151,8 @@ void wxContourMainFrame::saveFileWithContours( std::string filename )
 
        //-- 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] );
+//     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();
@@ -1151,8 +1172,8 @@ void wxContourMainFrame::saveFileWithContours( std::string filename )
 }
 
 
-
-void wxContourMainFrame::readDimSpc(FILE *pFile)
+//EED02
+void wxContourMainFrame::readDimSpc(FILE *pFile, bool interactiveOption)
 {
        char tmp[255];
        int             imageDim[3];
@@ -1178,50 +1199,52 @@ void wxContourMainFrame::readDimSpc(FILE *pFile)
     _tmpReadFileImageSpac[2] = atof(tmp);
 
 
-    //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 2
-    if (imageDim[0]!=_tmpReadFileImageDim[0] || imageDim[1]!=_tmpReadFileImageDim[1] || imageSpac[0]!=_tmpReadFileImageSpac[0] || imageSpac[1]!=_tmpReadFileImageSpac[1])
+       if (interactiveOption==true)
     {
-               wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(260,160));
-               wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
-               wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL);
-
-               wxString lstOptOperation[2];
-               lstOptOperation[0]=_T("By Dimension");
-               lstOptOperation[1]=_T("By Spacing");
-               wxRadioBox * radioOpts = new wxRadioBox(dial, -1, _T("Type of Transformation"), wxDefaultPosition, wxSize(270,45), 2 , lstOptOperation,  2, wxRA_SPECIFY_COLS);
-
-               dialSizer->Add( new wxStaticText(dial,-1,_T("The image resolution is not compatible with the "))  , 0, wxGROW );
-               dialSizer->Add( new wxStaticText(dial,-1,_T("selected Roi file. Do you want to tranform it?"))  , 0, wxGROW );
-               dialSizer->Add( new wxStaticText(dial,-1,_T(" "))  , 0, wxGROW );
-               dialSizer->Add(radioOpts,0,wxGROW);
-               dialSizer->Add( new wxStaticText(dial,-1,_T(" "))  , 0, wxGROW );
-               dialSizer->Add(buttonsSizer,0,wxGROW);
-               dial->SetSizer(dialSizer, true);
-               dial->Layout();
-               dial->ShowModal();
-
-               int _tmpReadFileTypeOfTransformation = -1;
-               bool transform = false;
-
-               if (dial->GetReturnCode() == wxID_OK)
+               //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 2
+               if (imageDim[0]!=_tmpReadFileImageDim[0] || imageDim[1]!=_tmpReadFileImageDim[1] || imageSpac[0]!=_tmpReadFileImageSpac[0] || imageSpac[1]!=_tmpReadFileImageSpac[1])
                {
-                       _tmpReadFileTypeOfTransformation    = radioOpts->GetSelection();
-               }// if wxOK
-
-    } // if dim spc
+                       wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(260,160));
+                       wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
+                       wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL);
+
+                       wxString lstOptOperation[2];
+                       lstOptOperation[0]=_T("By Dimension");
+                       lstOptOperation[1]=_T("By Spacing");
+                       wxRadioBox * radioOpts = new wxRadioBox(dial, -1, _T("Type of Transformation"), wxDefaultPosition, wxSize(270,45), 2 , lstOptOperation,  2, wxRA_SPECIFY_COLS);
+
+                       dialSizer->Add( new wxStaticText(dial,-1,_T("The image resolution is not compatible with the "))  , 0, wxGROW );
+                       dialSizer->Add( new wxStaticText(dial,-1,_T("selected Roi file. Do you want to tranform it?"))  , 0, wxGROW );
+                       dialSizer->Add( new wxStaticText(dial,-1,_T(" "))  , 0, wxGROW );
+                       dialSizer->Add(radioOpts,0,wxGROW);
+                       dialSizer->Add( new wxStaticText(dial,-1,_T(" "))  , 0, wxGROW );
+                       dialSizer->Add(buttonsSizer,0,wxGROW);
+                       dial->SetSizer(dialSizer, true);
+                       dial->Layout();
+                       dial->ShowModal();
+
+                       int _tmpReadFileTypeOfTransformation = -1;
+//EED                  bool transform = false;
+
+                       if (dial->GetReturnCode() == wxID_OK)
+                       {
+                               _tmpReadFileTypeOfTransformation    = radioOpts->GetSelection();
+                       }// if wxOK
 
+               } // if dim spc
+    } // if interactiveOption
 }
 
 
 
+
 //AD:04-06-09
 void wxContourMainFrame::openContours( FILE *pFile, FILE *pFileData, bool staticContour )
 {
 
-printf("EED1 wxContourMainFrame::openContours 01 \n");
        char tmp[255];
 
-       vtkImageData    *image          = _images[0];
+       vtkImageData    *image = _images[0];
 
        int             imageDim[3];
        double          imageSpac[3];
@@ -1301,7 +1324,6 @@ printf("EED1 wxContourMainFrame::openContours 01 \n");
        else if (compatible==false)
        {
 */
-printf("EED wxContourMainFrame::openContours 02 \n");
 
                int i;
                for (i=0;i<numberOfContours;i++)
@@ -2278,32 +2300,67 @@ void wxContourMainFrame::onChangeInstant(std::string name,int actual){
        _instantPanel->setConceptValue( name, actual );
 }
 
+
 void wxContourMainFrame::resetAppend(){
        kernelManager->resetAppend();
 
 }
 
+
 void wxContourMainFrame::onSpreadAdd(){
        std::vector<double> vecX;
        std::vector<double> vecY;
        std::vector<double> vecZ;
        _theViewPanel->GetPointsOfActualContour(&vecX , &vecY , &vecZ );
-
        std::vector<int> tempVector;
        _instantPanel->getInstant( tempVector );
-
        std::string val = kernelManager->onSpreadAdd(&vecX , &vecY , &vecZ, tempVector);
-
        interfMainPanel::getInstance()->appendStringSpread(val);
+}
 
+
+void wxContourMainFrame::onSpreadAddAll(){
+//EED02
+       std::vector<int> tempVector;
+       _instantPanel->getInstant( tempVector );
+       int minZ,maxZ;
+    minZ       = 0;
+    maxZ       = interfMainPanel::getInstance()->GetImageDataSizeZ();
+       int z;
+       int sizeLstContourThings;
+       for ( z=minZ ; z<=maxZ ; z++ )
+       {
+               tempVector[1]=z;
+               Instant instant(&tempVector);
+               std::vector<ContourThing**> lstContourThings = kernelManager->getOutlinesAtInstant( &instant );
+               sizeLstContourThings = lstContourThings.size();
+               if (sizeLstContourThings>=1)
+        {
+            std::vector<double> vecX;
+            std::vector<double> vecY;
+            std::vector<double> vecZ;
+            ContourThing **contourthing = lstContourThings[0];
+                       manualBaseModel *cModel                         =  (*contourthing)->getModel();
+                       int i,size = cModel->GetNumberOfPointsSpline();
+                       double x,y,z;
+                       for (i=0; i<size; i++)
+                       {
+                               cModel->GetSpline_i_Point(i, &x, &y, &z);
+                               vecX.push_back(x);
+                               vecY.push_back(y);
+                               vecZ.push_back(z);
+                       } // for i
+            std::string val = kernelManager->onSpreadAdd(&vecX , &vecY , &vecZ, tempVector);
+            interfMainPanel::getInstance()->appendStringSpread(val);
+        }// if sizeLstContourThings
+    } // for z
 }
 
-void wxContourMainFrame::onSpreadGo(int type){
 
+void wxContourMainFrame::onSpreadGo(int type){
        //JCP 20-10-08 Undo redo implementation
        saveState();
        //JCP 20-10-08 Undo redo implementation
-
        wxBusyCursor wait;
        std::vector<double> vecCtrlPointX;
        std::vector<double> vecCtrlPointY;
@@ -2925,7 +2982,7 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value
 void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value)
 {
 
-       std::string temp = directory + "/" + namefile + "-Value.mhd";
+       std::string temp = directory + "/" + namefile + "-image-Value.mhd";
 
        wxString filename = crea::std2wx(temp);
        // LG
@@ -2947,7 +3004,7 @@ void wxContourMainFrame::SaveImageResult(std::string directory,std::string namef
 
 // Image Mask
        //              filename.Printf("%s\\%s-Mask.mhd",directory.c_str(),namefile.c_str(),z);
-       temp = directory + "/" + namefile + "-Mask.mhd";
+       temp = directory + "/" + namefile + "-image-Mask.mhd";
 
        // LG 14/01/09 : using crea
        filename = crea::std2wx(temp);
@@ -2962,7 +3019,7 @@ void wxContourMainFrame::SaveImageResult(std::string directory,std::string namef
        writerMaskImage->SetInput( mask );
        writerMaskImage->SetFileName( (const char *)filename.mb_str() );
        writerMaskImage->SetFileDimensionality( 3 );
-       writerValueImage->SetCompression(false);
+       writerMaskImage->SetCompression(false);
        writerMaskImage->Write( );
 
        interfMainPanel::getInstance()->setStringInfoPanel( _T("") );