X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FInterface_ManagerContour_NDimensions%2FwxContourMainFrame.cxx;h=96049d3b7e13c9ab38fd81a58e69d32632d02525;hb=31aee9621a75c61c4455a261a8080dd5a162f802;hp=796d46c51e8c953f65bb92b812fe01f9b210c5b2;hpb=bf5305ff6b9e5aa7832205700e8dcee548803cae;p=creaContours.git diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx index 796d46c..96049d3 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx @@ -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 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(); @@ -833,14 +849,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 +870,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 +951,8 @@ void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour ) } }// for numberOfContours } +*/ + void wxContourMainFrame::onLoad() { @@ -930,27 +961,65 @@ void wxContourMainFrame::onLoad() if(GetFileLocation().empty()) { //------------------------------------------------------------------------------------------------------------ +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxOPEN ); +#else + wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxFD_OPEN ); +#endif if (dialog.ShowModal() == wxID_OK) { fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); } } - onLoadContours(fileNameContourROI); + onLoadContours(fileNameContourROI,true); } +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 ; igetOutlineByKeyName(lstNameThings[i]); + sizeLstPoints = manualModel->GetSizeLstPoints(); + for (ii=0 ; iiGetManualPoint(ii)->SetPointZ(-900); + }// for ii list of points + }// for i list of Things -void wxContourMainFrame::onLoadContours(std::string fileNameContourROI) + //-- Static Contours + + lstNameThings = kernelManager->GetLstNameThingsStatic(); + sizeLstNameThings = lstNameThings.size(); + for (i=0 ; igetOutlineByKeyName(lstNameThings[i]); + sizeLstPoints = manualModel->GetSizeLstPoints(); + for (ii=0 ; iiGetManualPoint(ii)->SetPointZ(-900); + }// for ii list of points + }// for i list of static things +} + +void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool interactiveInterface) { -printf("EED2 wxContourMainFrame::onLoadContours 01 \n"); char tmp[255]; char tmpD[255]; - FILE *pFile =fopen(fileNameContourROI.c_str(),"r+"); - - //CMRU 03-09-09- ---------------------------------------------------------------------------------------------- if(pFile != NULL) { @@ -961,7 +1030,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,16 +1042,30 @@ 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); + +printf("EED wxContourMainFrame::onLoadContours version%s \n", version.c_str() ); + + //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 + SetZForAllContours(-900); } //AD:02-06-09 @@ -1003,39 +1086,48 @@ printf("EED2 wxContourMainFrame::onLoadContours 01 \n"); if(pFileData != NULL) { fclose(pFileData); - } + } // if } _theViewPanel->getSceneManager()->removeSceneContours(); changeInstant(); - } - -void wxContourMainFrame::onImport(){ +void wxContourMainFrame::onImport() +{ std::string filename, filenamecontours; +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 wxFileDialog dialog(NULL, _T("Choose a XML Osirix File"), _T(""), _T(""), _T("*.xml"), wxOPEN ); - +#else + wxFileDialog dialog(NULL, _T("Choose a XML Osirix File"), _T(""), _T(""), _T("*.xml"), wxFD_OPEN ); +#endif if (dialog.ShowModal() == wxID_OK) { filename = dialog.GetPath().mb_str(); filenamecontours = kernelManager->parseOsirixFile(filename); if(filenamecontours.compare("") != 0){ - onLoadContours(filenamecontours); - } - - } + onLoadContours(filenamecontours,true); + } // if + } // if } -void wxContourMainFrame::onTest(){ + +void wxContourMainFrame::onTest() +{ std::string filename, filenamecontours; +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 wxFileDialog dialog(NULL, _T("Choose a File"), _T(""), _T(""), _T("*.*"), wxOPEN ); +#else + wxFileDialog dialog(NULL, _T("Choose a File"), _T(""), _T(""), _T("*.*"), wxFD_OPEN ); +#endif if (dialog.ShowModal() == wxID_OK) { filename = dialog.GetPath().mb_str(); std::cout << "This is the filename: " << filename << std::endl; - } + } // if } @@ -1045,7 +1137,12 @@ void wxContourMainFrame::onSave(){ if(GetFileLocation().empty()) { //------------------------------------------------------------------------------------------------------------ +//EED 2017-09-16 Migration wxWidgets 2.8 to 3.0 +#if wxMAJOR_VERSION <= 2 wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxSAVE ); +#else + wxFileDialog dialog(NULL, _T("Choose a file"), _T(""), _T(""), _T("*.roi"), wxFD_SAVE ); +#endif if (dialog.ShowModal() == wxID_OK) { std::string fileNameContourROI = (const char *)(dialog.GetPath().mb_str()); @@ -1081,11 +1178,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); //------------------------------------------------------------------------------------------------------------ @@ -1112,11 +1209,22 @@ void wxContourMainFrame::saveFileWithContours( std::string filename ) fprintf(pFileData,"NumberOfContours %d\n", sizeLstNameThings ); //------------------------------------------------------------------------------------------------------------ + +// EED 2017-05-30 + double spc[3]; + spc[0]=1; + spc[1]=1; + spc[2]=1; + for (i=0 ; igetOutlineByKeyName(lstNameThings[i]); - double sizeInPixel = manualModel ->GetPathSize(); + +// EED 2017-05-30 +// double sizeInPixel = manualModel ->GetPathSize( ); + double sizeInPixel = manualModel ->GetPathSize( spc ); + double realContourSize = sizeInPixel*_onePixelSize; manualModel ->SetRealSize(realContourSize); //------------------------------------------------------------------------------------------------------------ @@ -1129,9 +1237,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 +1258,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 +1285,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(460,360)); + 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 +1410,6 @@ printf("EED1 wxContourMainFrame::openContours 01 \n"); else if (compatible==false) { */ -printf("EED wxContourMainFrame::openContours 02 \n"); int i; for (i=0;i ConnectorType; typedef itk::ImageToVTKImageFilter ConnectorType2; - typedef itk::ImageFileWriter< OutputImageType > WriterType; +//EED10JUIN2011 typedef itk::ImageFileWriter< OutputImageType > WriterType; ConnectorType::Pointer connector= ConnectorType::New(); ConnectorType2::Pointer connector2= ConnectorType2::New(); @@ -1493,7 +1601,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 = @@ -1526,7 +1639,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 ); @@ -1579,34 +1697,63 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d vtkMarchingContourFilter* cntVTK = vtkMarchingContourFilter::New( ); - cntVTK->SetInput( idata ); - cntVTK->SetNumberOfContours( 1 ); cntVTK->SetValue( 0, 255 ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + cntVTK->SetInput( idata ); cntVTK->Update( ); cntVTK->UpdateInformation(); +#else + cntVTK->SetInputData( idata ); +#endif vtkCleanPolyData* cpd = vtkCleanPolyData::New( ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 cpd->SetInput( cntVTK->GetOutput( ) ); cpd->Update( ); cpd->UpdateInformation(); +#else + cpd->SetInputData( cntVTK->GetOutput( ) ); +#endif + vtkPolyDataConnectivityFilter* conn = vtkPolyDataConnectivityFilter::New( ); conn->SetExtractionModeToLargestRegion( ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 conn->SetInput( cpd->GetOutput( ) ); conn->Update( ); conn->UpdateInformation(); +#else + conn->SetInputData( cpd->GetOutput( ) ); +#endif + vtkStripper* vtkstripper = vtkStripper::New( ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 vtkstripper->SetInput( conn->GetOutput() ); vtkstripper->Update(); vtkstripper->UpdateInformation(); - +#else + vtkstripper->SetInputData( conn->GetOutput() ); + cntVTK->Update(); +#endif vtkPolyData* polyDataResult = cntVTK->GetOutput(); //std::cout<<"Points "<GetNumberOfPoints()<Update( ); polyDataResult->UpdateInformation(); +#else + // .. +#endif //EED /* @@ -1775,7 +1922,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(); @@ -1825,6 +1973,7 @@ void wxContourMainFrame::SegmentationOneSliceITK(int x, int y, int z, wxString d caster5->SetOutputMinimum( 0 ); caster5->SetOutputMaximum( 255 ); writer5->Update(); +*/ } catch( itk::ExceptionObject & excep ) { @@ -1865,19 +2014,41 @@ void wxContourMainFrame::SegmentationOneSlice( int x, int y, int z, int isovalue // y = y*spc[1]; // z = z*spc[3]; +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 imageReslice->SetInput( imagedata ); +#else + imageReslice->SetInputData( imagedata ); +#endif imageReslice->SetInformationInput(imagedata); imageReslice->SetResliceAxesDirectionCosines(1,0,0, 0,1,0 ,0,0,1); imageReslice->SetResliceAxesOrigin(0,0,z); imageReslice->SetOutputDimensionality(2); imageReslice->SetInterpolationModeToLinear(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + // .. +#else + imageReslice->Update(); +#endif + imagedata = imageReslice->GetOutput(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 imagedata->Update(); imagedata->UpdateInformation(); +#else + // .. +#endif vtkContourFilter* cntVTK = vtkContourFilter::New( ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 cntVTK->SetInput( imagedata ); +#else + cntVTK->SetInputData( imagedata ); +#endif cntVTK->SetNumberOfContours( 1 ); //cntVTK->SetValue( 0, vmin ); @@ -1888,7 +2059,12 @@ void wxContourMainFrame::SegmentationOneSlice( int x, int y, int z, int isovalue cntVTK->UpdateInformation(); vtkCleanPolyData* cpd = vtkCleanPolyData::New( ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 cpd->SetInput( cntVTK->GetOutput( ) ); +#else + cpd->SetInputData( cntVTK->GetOutput( ) ); +#endif cpd->ConvertLinesToPointsOff( ); cpd->Update( ); cpd->UpdateInformation(); @@ -1897,27 +2073,47 @@ void wxContourMainFrame::SegmentationOneSlice( int x, int y, int z, int isovalue conn->SetExtractionModeToClosestPointRegion( ); //conn->SetMaxRecursionDepth( 3000 ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 conn->SetInput( cpd->GetOutput( ) ); +#else + conn->SetInputData( cpd->GetOutput( ) ); +#endif conn->SetClosestPoint( x, y, 0 ); conn->Update( ); conn->UpdateInformation(); vtkCleanPolyData* cpd2 = vtkCleanPolyData::New( ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 cpd2->SetInput( conn->GetOutput( ) ); +#else + cpd2->SetInputData( conn->GetOutput( ) ); +#endif cpd2->Update(); cpd2->UpdateInformation(); vtkStripper* vtkstripper = vtkStripper::New( ); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 vtkstripper->SetInput( cpd2->GetOutput() ); +#else + vtkstripper->SetInputData( cpd2->GetOutput() ); +#endif vtkstripper->Update(); vtkstripper->UpdateInformation(); vtkPolyData* polyDataResult = vtkstripper->GetOutput(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 polyDataResult->Update( ); polyDataResult->UpdateInformation(); +#else + //... +#endif /* EED ofstream myfile; @@ -2278,32 +2474,67 @@ void wxContourMainFrame::onChangeInstant(std::string name,int actual){ _instantPanel->setConceptValue( name, actual ); } + void wxContourMainFrame::resetAppend(){ kernelManager->resetAppend(); } + void wxContourMainFrame::onSpreadAdd(){ std::vector vecX; std::vector vecY; std::vector vecZ; _theViewPanel->GetPointsOfActualContour(&vecX , &vecY , &vecZ ); - std::vector tempVector; _instantPanel->getInstant( tempVector ); - std::string val = kernelManager->onSpreadAdd(&vecX , &vecY , &vecZ, tempVector); - interfMainPanel::getInstance()->appendStringSpread(val); +} + +void wxContourMainFrame::onSpreadAddAll(){ +//EED02 + std::vector 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 lstContourThings = kernelManager->getOutlinesAtInstant( &instant ); + sizeLstContourThings = lstContourThings.size(); + if (sizeLstContourThings>=1) + { + std::vector vecX; + std::vector vecY; + std::vector vecZ; + ContourThing **contourthing = lstContourThings[0]; + manualBaseModel *cModel = (*contourthing)->getModel(); + int i,size = cModel->GetNumberOfPointsSpline(); + double x,y,z; + for (i=0; iGetSpline_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 vecCtrlPointX; std::vector vecCtrlPointY; @@ -2376,7 +2607,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; @@ -2401,8 +2631,6 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel std::vector tempVector; _instantPanel->getInstant( tempVector ); -//EED01Juillet2009 vtkImageData *imagedata = _theViewPanel->getImageData(); -// int sizeZ = _theViewPanel->GetImageDataSizeZ(); int z; int ii,sizeLstContourThings; @@ -2425,7 +2653,6 @@ void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int sel totalZ = maxZ-minZ+1; -//EED01Juillet2009 _contourextractdata->SetImage( imagedata); _contourextractdata->InitVolumeStatistics(); @@ -2689,7 +2916,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 ); @@ -2705,7 +2931,6 @@ void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefil std::vector tempVector; _instantPanel->getInstant( tempVector ); -//EED01Juillet2009 vtkImageData *imagedata = _theViewPanel->getSceneManager()->GetImageData(); int sizeZ = _theViewPanel->getSceneManager()->GetImageDataSizeZ(); int z; int ii,sizeLstContourThings; @@ -2719,7 +2944,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_radiolstboxContourGroup->GetSelection(); if (typeContourGroup==3) @@ -2856,7 +3079,6 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value totalZ = maxZ-minZ; -//EED01Juillet2009 _contourextractdata->SetImage( imagedata); // cleanning image before range for (z=0; zGetSpacing(spc,0); // returns the spacing of the first image + + std::string temp = directory + "/" + namefile + "-image-Value.mhd"; wxString filename = crea::std2wx(temp); - // LG - // filename.Printf(_T(temp.c_str())); - //filename.Printf(_T("%s\\%s-Value.mhd",directory.c_str(),namefile.c_str(),z); - /*filename.Printf(_T("%s"),directory.c_str()); - filename.append(_T("\\")); - filename.append(_T("%s"),namefile.c_str()); - filename.append(_T("-Value.mhd"));*/ // Image Value + + vtkImageChangeInformation *valueChInfo = vtkImageChangeInformation::New(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + valueChInfo->SetInput(value); +#else + valueChInfo->SetInputData(value); +#endif + valueChInfo->SetSpacingScale(spc); vtkMetaImageWriter *writerValueImage = vtkMetaImageWriter::New( ); - writerValueImage->SetInput( value ); - writerValueImage->SetInput( value ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + writerValueImage->SetInput( valueChInfo->GetOutput() ); +#else + writerValueImage->SetInputData( valueChInfo->GetOutput() ); +#endif writerValueImage->SetFileName( (const char *)filename.mb_str() ); writerValueImage->SetFileDimensionality( 3 ); writerValueImage->SetCompression(false); writerValueImage->Write( ); // 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); // filename.Printf(_T(temp.c_str())); - /*filename.Printf(_T("%s"),directory.c_str()); - filename.append(_T("\\")); - filename.append(_T("%s"),namefile.c_str()); - filename.append(_T("-Mask.mhd"));*/ + vtkImageChangeInformation *maskChInfo = vtkImageChangeInformation::New(); +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + maskChInfo->SetInput(mask); +#else + maskChInfo->SetInputData(mask); +#endif + maskChInfo->SetSpacingScale(spc); vtkMetaImageWriter *writerMaskImage = vtkMetaImageWriter::New( ); - writerMaskImage->SetInput( mask ); + +//EED 2017-01-01 Migration VTK7 +#if VTK_MAJOR_VERSION <= 5 + writerMaskImage->SetInput( maskChInfo->GetOutput() ); +#else + writerMaskImage->SetInputData( maskChInfo->GetOutput() ); +#endif + writerMaskImage->SetFileName( (const char *)filename.mb_str() ); writerMaskImage->SetFileDimensionality( 3 ); - writerValueImage->SetCompression(false); + writerMaskImage->SetCompression(false); writerMaskImage->Write( ); interfMainPanel::getInstance()->setStringInfoPanel( _T("") ); @@ -3060,12 +3302,8 @@ wxPanel *wxContourMainFrame::getColorLayerImageViewPanel(wxWindow *parent) _theViewPanel->getImageData()->GetScalarRange(range); 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 = new ColorLayerImageViewPanel( parent, min, max, 100, 1); + _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetwxVtkBaseView( 0 , _theViewPanel->getWxVtkBaseView() ); } return _viewColorLayerImagePanel; } @@ -3115,10 +3353,18 @@ double wxContourMainFrame::getContourSizeInPixels() std::string cloneName = currentSelection [0]; manualBaseModel * manualModel = kernelManager->getOutlineByKeyName(cloneName);//_modelManager->getOutlineByKeyName( cloneName )->getModel(); - contourSize = manualModel-> GetPathSize(); + +// EED 2017-05-30 +// contourSize = manualModel->GetPathSize(); + double spc[3]; + spc[0]=1; + spc[1]=1; + spc[2]=1; + contourSize = manualModel->GetPathSize( spc ); } return contourSize; } + manualBaseModel * wxContourMainFrame::getContour () { std::vector currentSelection = _theViewPanel->getSelectedObjects(); @@ -3148,9 +3394,16 @@ void wxContourMainFrame::onPrintLabel (wxString label, manualBaseModel* manualMo } void wxContourMainFrame::onInsertCalculation(manualBaseModel* manualModel) { - double sizeInPixel = manualModel ->GetPathSize(); +// EED 2017-05-30 +// double sizeInPixel = manualModel ->GetPathSize( ); + double spc[3]; + spc[0]=1; // ???? + spc[1]=1; // ???? + spc[2]=1; // ???? + double sizeInPixel = manualModel ->GetPathSize( spc ); + double onePixelRealSize = interfMainPanel::getInstance()->GetPixelValue();; - double realContourSize = sizeInPixel*onePixelRealSize; + double realContourSize = sizeInPixel*onePixelRealSize; manualModel ->SetRealSize(realContourSize); } @@ -3170,3 +3423,106 @@ void wxContourMainFrame::SetFileLocation(std::string newFileLocation) std::cout<<"GETFILELOCATION:"<<_fileLocation<)_theViewPanel->getSceneManager()->getSelectedObjects() , + flipDirection + ); + +} + +void wxContourMainFrame::FlipActualSliceContours(int flipDirection) +{ + printf("EED wxContourMainFrame::FlipActualSliceContours flipDirection=%d \n", flipDirection ); + FlipLstOfContours( + (std::vector)_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 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 ; igetOutlineByKeyName(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 ; igetOutlineByKeyName(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(); +} + + + + +