]> Creatis software - creaContours.git/blobdiff - lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx
2340 creaContours Bug New Normal ColorLayerViewer / Manager new c interface
[creaContours.git] / lib / Interface_ManagerContour_NDimensions / wxContourMainFrame.cxx
index 277a87a0a19ab8134f1543f79c4c2fc46fad0cd4..a63bd56add5a897caead3eaf47b23e03bab94904 100644 (file)
@@ -1,3 +1,28 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 //----------------------------------------------------------------------------------------------------------------
 // Class definition include
 //----------------------------------------------------------------------------------------------------------------
@@ -67,9 +92,8 @@ char wxContourMainFrame::COPY = 'C';
                _viewMaskImage                          = NULL;
                _viewMaskImagePanel                     = NULL;
                _viewThresholdImage                     = NULL;
-               _viewThresholdImagePanel        = NULL;
-               _viewColorLayerImage            = NULL;
-               _viewColorLayerImagePanel       = NULL;
+               _viewThresholdImagePanel                = NULL;
+               _viewColorLayerImagePanel               = 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)
@@ -88,9 +112,8 @@ char wxContourMainFrame::COPY = 'C';
                _viewMaskImage                          = NULL;
                _viewMaskImagePanel                     = NULL;
                _viewThresholdImage                     = NULL;
-               _viewThresholdImagePanel        = NULL;
-               _viewColorLayerImage            = NULL;
-               _viewColorLayerImagePanel       = NULL;
+               _viewThresholdImagePanel                = NULL;
+               _viewColorLayerImagePanel               = NULL;
 
                // set up default notebook style
                m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER;
@@ -674,13 +697,6 @@ void wxContourMainFrame::changeInstant()
                        }
                }
 
-       // Refresh Threshold image
-               if(_viewColorLayerImage!=NULL){
-                       _viewColorLayerImage->SetZ(actualSlice);
-                       if (_viewColorLayerImagePanel->IsVisible()==true){
-                               _viewColorLayerImage->onThreshold();
-                       }
-               }
 
                updateInstantOutlines();
                updateInstantImageData();
@@ -956,6 +972,46 @@ void wxContourMainFrame::onLoad()
 }
 
 
+void  wxContourMainFrame::SetZForAllContours(int pz)
+{
+       printf("EED wxContourMainFrame::SetZForAllContours\n");
+
+       //-- Normal Contours
+
+       std::vector< std::string > lstNameThings;       
+       int i,sizeLstNameThings;
+       int ii,sizeLstPoints;
+       
+       lstNameThings           = kernelManager->GetLstNameThings();
+       sizeLstNameThings       = lstNameThings.size(); 
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+printf("EED wxContourMainFrame::SetZForAllContours contour=%d \n", i );
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               sizeLstPoints = manualModel->GetSizeLstPoints();
+               for (ii=0 ; ii<sizeLstPoints ; ii++)
+               {
+                        manualModel->GetManualPoint(ii)->SetPointZ(-900);
+               }// for ii  list of points
+       }// for i  list of Things
+
+       //-- Static Contours
+
+       lstNameThings           = kernelManager->GetLstNameThingsStatic();
+       sizeLstNameThings       = lstNameThings.size();
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               sizeLstPoints = manualModel->GetSizeLstPoints();
+               for (ii=0 ; ii<sizeLstPoints ; ii++)
+               {
+                        manualModel->GetManualPoint(ii)->SetPointZ(-900);
+               }// for ii  list of points
+       }// for i  list of static things
+}
+
+
+
 void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool interactiveInterface)
 {
        char tmp[255];
@@ -989,6 +1045,10 @@ void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool int
                fscanf(pFile,"%s",tmp); // 1.0.3 || 1.0.2 || 1.0.1 || 1.0.0
                std::string version(tmp);
 
+
+printf("EED wxContourMainFrame::onLoadContours  version%s \n", version.c_str() );
+
+
                //AD:02-06-09
         _tmpReadFileTypeOfTransformation=-1;
                if (version=="1.0.3")
@@ -996,15 +1056,16 @@ void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool int
                    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
+                       readDimSpc(pFile,interactiveInterface); // DimSpc interactive ON
                        openContours(pFile,pFileData,false);
-                   readDimSpc(pFile,false);  // DimSpc interactive OFF
-                       openContours(pFile,pFileData,true);     //Load StaticContours
+                       readDimSpc(pFile,false);                // DimSpc interactive OFF
+                       openContours(pFile,pFileData,true);     // Load StaticContours
+                       SetZForAllContours(-900);
                }
 
                //AD:02-06-09
@@ -1029,7 +1090,6 @@ void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool int
        }
        _theViewPanel->getSceneManager()->removeSceneContours();
        changeInstant();
-
 }
 
 
@@ -1204,7 +1264,7 @@ void wxContourMainFrame::readDimSpc(FILE *pFile, bool interactiveOption)
                //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])
                {
-                       wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(260,160));
+                       wxDialog* dial = new wxDialog (this,-1,_T("Tools"),wxDefaultPosition, wxSize(460,360));
                        wxSizer* buttonsSizer = dial->CreateSeparatedButtonSizer(wxOK|wxCANCEL);
                        wxBoxSizer *dialSizer = new wxBoxSizer(wxVERTICAL);
 
@@ -1475,7 +1535,7 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d
        //DefinciÛn de conexiÛnes entre VTK e ITK y el writer
        typedef itk::VTKImageToImageFilter<OutputImageType2> ConnectorType;
        typedef itk::ImageToVTKImageFilter<OutputImageType> ConnectorType2;
-       typedef  itk::ImageFileWriter<  OutputImageType  > WriterType;
+//EED10JUIN2011        typedef  itk::ImageFileWriter<  OutputImageType  > WriterType;
 
        ConnectorType::Pointer connector= ConnectorType::New();
        ConnectorType2::Pointer connector2= ConnectorType2::New();
@@ -1515,7 +1575,12 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d
 
 
        FastMarchingFilterType::Pointer  fastMarching = FastMarchingFilterType::New();
-
+       
+printf("EED wxContourMainFrame::SegmentationOneSliceITK  Skypping this code.  Not compiling   GeodesicActiveContourLevelSetImageFilter     in fedora 17 with ITK 3.20.1 \n ");
+/*EED 17 sept 2010
+ > - > - > - > - > - > - > - > - > - > - > - > - > - > - > - > -   Not compiling   GeodesicActiveContourLevelSetImageFilter     in fedora 17 with ITK 3.20.1
        typedef  itk::GeodesicActiveContourLevelSetImageFilter< InternalImageType,
                                        InternalImageType >    GeodesicActiveContourFilterType;
        GeodesicActiveContourFilterType::Pointer geodesicActiveContour =
@@ -1548,7 +1613,12 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d
        //thresholder->SetInput( zeroCrossing->GetOutput() );
        thresholder->SetInput( geodesicActiveContour->GetOutput() );
        connector2->SetInput( thresholder->GetOutput()  );
-
+< - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - < - 
+*/
+       
+       
+       
 
        smoothing->SetTimeStep( 0.125 );
        smoothing->SetNumberOfIterations(  5 );
@@ -1624,7 +1694,6 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d
        vtkstripper->Update();
        vtkstripper->UpdateInformation();
 
-
        vtkPolyData* polyDataResult =  cntVTK->GetOutput();
        //std::cout<<"Points "<<polyDataResult->GetNumberOfPoints()<<std::endl;
        polyDataResult->Update( );
@@ -1797,7 +1866,8 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d
        } // if sizeCtrPt
 
 
-
+/*
+//EED10JUIN2011
                 WriterType::Pointer writer = WriterType::New();
          CastFilterType3::Pointer caster = CastFilterType3::New();
 
@@ -1847,6 +1917,7 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d
                 caster5->SetOutputMinimum(   0 );
                 caster5->SetOutputMaximum( 255 );
                 writer5->Update();
+*/
     }
   catch( itk::ExceptionObject & excep )
     {
@@ -2433,7 +2504,6 @@ void wxContourMainFrame::SetScalarRange(int grayRangeMin, int grayRangeMax)
 
 void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int selection,int minimumZ,int maximumZ,int grayRangeMin, int grayRangeMax)
 {
-//EED01Juillet2009     GenerateContourExtractData();
 
        wxString tempString;
        int maxContourGroup     =       0;
@@ -2458,8 +2528,6 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel
        std::vector<int> tempVector;
        _instantPanel->getInstant( tempVector );
 
-//EED01Juillet2009     vtkImageData *imagedata = _theViewPanel->getImageData();
-//     int sizeZ = _theViewPanel->GetImageDataSizeZ();
        int z;
        int ii,sizeLstContourThings;
 
@@ -2482,7 +2550,6 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel
 
 
        totalZ  = maxZ-minZ+1;
-//EED01Juillet2009     _contourextractdata->SetImage( imagedata);
 
        _contourextractdata->InitVolumeStatistics();
 
@@ -2746,7 +2813,6 @@ void wxContourMainFrame::onSaveResults(std::string directory,std::string namefil
 void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefile,int typeContourGroup)
 {
        wxBusyCursor wait;
-//EED01Juillet2009     GenerateContourExtractData();
 
        //int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
        _contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
@@ -2762,7 +2828,6 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil
        std::vector<int> tempVector;
        _instantPanel->getInstant( tempVector );
 
-//EED01Juillet2009     vtkImageData *imagedata = _theViewPanel->getSceneManager()->GetImageData();
        int sizeZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ();
        int z;
        int ii,sizeLstContourThings;
@@ -2776,7 +2841,6 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil
        maxZ    = sizeZ;//_mbarrange->GetEnd();
        totalZ  = maxZ-minZ+1;
 
-//EED01Juillet2009     _contourextractdata->SetImage( imagedata);
 
 // For each slice..
        for ( z=0 ; z<sizeZ ; z++)
@@ -2874,7 +2938,6 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil
 
 void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value,int typeContourGroup, int selection, int minZ, int maxZ){
        wxBusyCursor wait;
-//EED01Juillet2009     GenerateContourExtractData();
 
        //int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
        if (typeContourGroup==3)
@@ -2913,7 +2976,6 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value
 
        totalZ  = maxZ-minZ;
 
-//EED01Juillet2009     _contourextractdata->SetImage( imagedata);
 
        // cleanning image before range
        for (z=0; z<minZ; z++){
@@ -3115,11 +3177,7 @@ wxPanel *wxContourMainFrame::getColorLayerImageViewPanel(wxWindow *parent)
                int min = (int)floor (range[0]);
                int max = (int)ceil (range[1]);
                _viewColorLayerImagePanel = new ColorLayerImageViewPanel( parent, min, max , 1);
-               _viewColorLayerImage = new ColorLayerImageView();
-//             _viewColorLayerImage->SetImage( _theViewPanel->getImageData() );
-               _viewColorLayerImage->SetImage( NULL );
-               _viewColorLayerImagePanel->SetColorLayerImageView( _viewColorLayerImage );
-               _viewColorLayerImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() );
+               _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetwxVtkBaseView( 0 , _theViewPanel->getWxVtkBaseView() );
        }
        return _viewColorLayerImagePanel;
 }
@@ -3224,3 +3282,106 @@ void wxContourMainFrame::SetFileLocation(std::string newFileLocation)
        std::cout<<"GETFILELOCATION:"<<_fileLocation<<std::endl;
 }
 //------------------------------------------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+void wxContourMainFrame::FlipSelectedContours(int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipSelectedContours  flipDirection=%d  \n",  flipDirection ); 
+       FlipLstOfContours( 
+                           (std::vector<std::string>)_theViewPanel->getSceneManager()->getSelectedObjects() , 
+                           flipDirection
+                         );    
+               
+}
+
+void wxContourMainFrame::FlipActualSliceContours(int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipActualSliceContours  flipDirection=%d  \n",  flipDirection );       
+       FlipLstOfContours( 
+                           (std::vector<std::string>)_theViewPanel->getSceneManager()->GetlstContoursNameActualSlice() , 
+                           flipDirection
+                         );    
+}
+
+void wxContourMainFrame::FlipAllContours(int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipAllContours  flipDirection=%d  \n",  flipDirection );
+       FlipLstOfContours( 
+                           kernelManager->GetLstNameThings() , 
+                           flipDirection
+                         );
+}
+
+void wxContourMainFrame::FlipLstOfContours(std::vector<std::string> lstNameThings, int flipDirection)
+{
+       int ext[6];
+       getImageData()->GetExtent(ext);         
+       int sizeX = ext[1]-ext[0];
+       int sizeY = ext[3]-ext[2];
+
+       
+       int i,sizeLstNameThings;
+       int ii,sizeLstPoints;
+       
+       sizeLstNameThings       = lstNameThings.size(); 
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+               printf("EED wxContourMainFrame::FlipAllContours contour=%d \n", i );
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               if (flipDirection==0)
+               {
+                       manualModel->Transform_Ax_Plus_B(-1,sizeX,1,0 );
+               } else {
+                       manualModel->Transform_Ax_Plus_B(1,0,-1,sizeY );
+               }
+       }// for i  list of Things
+
+       //-- Static Contours
+
+       lstNameThings           = kernelManager->GetLstNameThingsStatic();
+       sizeLstNameThings       = lstNameThings.size();
+       for (i=0 ; i<sizeLstNameThings ; i++)
+       {
+               manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(lstNameThings[i]);
+               if (flipDirection==0)
+               {
+                       manualModel->Transform_Ax_Plus_B(-1,sizeX,1,0 );
+               } else {
+                       manualModel->Transform_Ax_Plus_B(1,0,-1,sizeY );
+               }
+       }// for i  list of static things        
+}
+
+void wxContourMainFrame::FlipContours(int typeContourFlip, int flipDirection)
+{
+       printf("EED wxContourMainFrame::FlipContours( %d , %d ) \n",typeContourFlip,  flipDirection );
+
+       saveState();
+       
+       if (typeContourFlip==0) // 
+       {
+               FlipSelectedContours(flipDirection);
+       }
+
+       if (typeContourFlip==1) // 
+       {
+               FlipActualSliceContours(flipDirection);
+       }
+       
+       if (typeContourFlip==2) // 
+       {
+               FlipAllContours(flipDirection);
+       }
+       RefreshInterface();
+}
+
+
+
+
+