X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FInterface_ManagerContour_NDimensions%2FwxContourMainFrame.cxx;h=5f3aeae73e9f417bf750f2296c57ea16961f447e;hb=87001c540c1fbcdf21ea7f994d620c8341755848;hp=5b5f61f822f541564ac1064b67308c1565a59f71;hpb=2ca0ae039a31c7aec93da7aadc5fa5e983e08045;p=creaContours.git diff --git a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx index 5b5f61f..5f3aeae 100644 --- a/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx +++ b/lib/Interface_ManagerContour_NDimensions/wxContourMainFrame.cxx @@ -94,16 +94,17 @@ char wxContourMainFrame::COPY = 'C'; _viewThresholdImage = NULL; _viewThresholdImagePanel = NULL; _viewColorLayerImagePanel = NULL; + + _frameShowResultImages = NULL; } - wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector images, long style,std::string datadir) + wxContourMainFrame::wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector images, long style,std::string datadir) : wxPanel(parent, id, pos, size, style) { m_mgr.SetManagedWindow(this); _contourGroup = 1; _creatingContoursActive = false; _theViewPanel = NULL; - _instantPanel = NULL; _refLineControl = NULL; _refLineModel = NULL; @@ -123,7 +124,7 @@ char wxContourMainFrame::COPY = 'C'; inredo = 0; inundo = 0; _pannew = interfMainPanel::getInstance(this,datadir+"/data/Icons");//, eventHandler); - _performingOperation = new PerformingOperation(); + _performingOperation = new PerformingOperation(); if(images.size() > 0) { this->setVectImages(images); @@ -134,10 +135,10 @@ char wxContourMainFrame::COPY = 'C'; void wxContourMainFrame::setVectImages(std::vector imgs) { _images = imgs; - #if defined(__GNUC__) - std::string str_home(getenv("HOME")); - #elif defined(_WIN32) + #if defined(_WIN32) std::string str_home(getenv("USERPROFILE")); + #elif defined(__GNUC__) + std::string str_home(getenv("HOME")); #endif std::string strCreaContourDataTmp = str_home + "/.creaContourDataTemp/"; std::vector conceptNameVect; @@ -233,17 +234,13 @@ void wxContourMainFrame::setVectImages(std::vector imgs) notebook->AddPage( _theViewPanel, wxT(" View ") ); m_mgr.Update(); } - - if( configured ) { notebook->AddPage( _instantPanel, wxT("Instant Page") ); m_mgr.Update(); } - m_mgr.AddPane(notebook, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false)); m_mgr.Update(); - SetMinSize(wxSize(300,300)); m_mgr.Update(); return configured; @@ -324,20 +321,25 @@ void wxContourMainFrame::onCreateContourSpline( ){ createContour( 1 ); } -void wxContourMainFrame::onCreateContourRectangle( ){ + +void wxContourMainFrame::onCreateContourRectangle( ) +{ //JCP 20-10-08 Undo redo implementation saveState(); //JCP 20-10-08 Undo redo implementation createContour( 2 ); } -void wxContourMainFrame::onCreateContourCircle( ){ + +void wxContourMainFrame::onCreateContourCircle( ) +{ //JCP 20-10-08 Undo redo implementation saveState(); //JCP 20-10-08 Undo redo implementation createContour( 3 ); } -void wxContourMainFrame::onCreateContourLine( ){ +void wxContourMainFrame::onCreateContourLine( ) +{ //JCP 20-10-08 Undo redo implementation saveState(); //JCP 20-10-08 Undo redo implementation @@ -345,7 +347,8 @@ void wxContourMainFrame::onCreateContourLine( ){ } // RaC 09-09 -------------------------------------- -void wxContourMainFrame::onCreateContourPoints( ){ +void wxContourMainFrame::onCreateContourPoints( ) +{ //JCP 20-10-08 Undo redo implementation saveState(); //JCP 20-10-08 Undo redo implementation @@ -354,7 +357,8 @@ void wxContourMainFrame::onCreateContourPoints( ){ // RaC 09-09 -------------------------------------- // RaC 10-09 -------------------------------------- -void wxContourMainFrame::onCreateContourPolygon( ){ +void wxContourMainFrame::onCreateContourPolygon( ) +{ //JCP 20-10-08 Undo redo implementation saveState(); //JCP 20-10-08 Undo redo implementation @@ -389,15 +393,14 @@ void wxContourMainFrame :: onCreateContourBullEye(wxPanel* panel ) _theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , 4) ; } } + void wxContourMainFrame :: createContour( int typeContour ) { //Creating the manualContourModel and including in the model manualBaseModel * manModelContour = kernelManager->factoryManualContourModel(typeContour); - std::vector instantVector; _instantPanel->getInstant( instantVector ); std::string theName = kernelManager->createOutline(manModelContour, instantVector); - /*std::vector instantVector; _instantPanel->getInstant( instantVector ); std::string theName; @@ -411,9 +414,9 @@ void wxContourMainFrame :: createContour( int typeContour ) //Adding the manualViewContour to interface objects structure //_sceneManager->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 , typeContour) ; - } - + } // if addedModel } + manualBaseModel * wxContourMainFrame::factoryManualContourModel(wxPanel* panel){ manualContourModelBullEye *manModelContourBullEye = new manualContourModelBullEye(); @@ -446,13 +449,15 @@ manualBaseModel * wxContourMainFrame::factoryManualContourModel(wxPanel* panel){ return manModelContour; } -void wxContourMainFrame :: saveState(){ +void wxContourMainFrame :: saveState() +{ std::string temp = kernelManager->saveState(); saveFileWithContours(temp); } -void wxContourMainFrame::onDeleteContour(){ +void wxContourMainFrame::onDeleteContour() +{ //JCP 20-10-08 Undo redo implementation saveState(); //JCP 20-10-08 Undo redo implementation @@ -513,7 +518,8 @@ void wxContourMainFrame :: deleteContours( std::vector keyNamesVec } } -void wxContourMainFrame :: deleteContour( std::string theKeyName ){ +void wxContourMainFrame :: deleteContour( std::string theKeyName ) +{ /* manualContourModel * cModel; manualViewBaseContour * cViewer; @@ -602,17 +608,20 @@ void wxContourMainFrame::deleteAllContours(){ JCP --08-09-2008 */ } -void wxContourMainFrame::setConceptValue( std::string name, int value ){ +void wxContourMainFrame::setConceptValue( std::string name, int value ) +{ _instantPanel->setConceptValue(name, value); } -ConceptDataWrap* wxContourMainFrame::getLastConceptData(){ +ConceptDataWrap* wxContourMainFrame::getLastConceptData() +{ return _instantPanel->getLastConceptData(); } -bool wxContourMainFrame::getIfConceptCheckedAt( std::string name, int pos ){ +bool wxContourMainFrame::getIfConceptCheckedAt( std::string name, int pos ) +{ return _instantPanel->getIfConceptCheckedAt( name, pos ); } @@ -630,21 +639,27 @@ void wxContourMainFrame::ShowResultImages(int typeContourGroup, int selection, i 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); + if (_frameShowResultImages==NULL) + { +// wxFrame *_frameShowResultImages = new wxFrame(this, -1,_T("Result image extracted.."),wxDefaultPosition,wxSize(600,600), wxDEFAULT_FRAME_STYLE|wxSTAY_ON_TOP); + _frameShowResultImages = new wxFrame(this, -1,_T("Result image extracted.."),wxDefaultPosition,wxSize(600,600), + wxFRAME_TOOL_WINDOW|wxSYSTEM_MENU | wxCAPTION | wxCLIP_CHILDREN |wxFRAME_FLOAT_ON_PARENT | wxRESIZE_BORDER ); - 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)); + wxAuiManager *m_mgr_noteBookViewerResult = new wxAuiManager(); + m_mgr_noteBookViewerResult->SetManagedWindow(_frameShowResultImages); - wxPanel *panelViewer1 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, value,&nTypeView); - wxPanel *panelViewer2 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, mask,&nTypeView); + wxAuiNotebook* noteBookViewerResult = new wxAuiNotebook(_frameShowResultImages, -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(); + + noteBookViewerResult->AddPage( panelViewer1, wxT("Image result") ); + noteBookViewerResult->AddPage( panelViewer2, wxT("Mask result") ); + m_mgr_noteBookViewerResult->Update(); + _frameShowResultImages->Show(); + } // if _frameShowResultImages } @@ -655,11 +670,10 @@ void wxContourMainFrame::changeInstant() std::vector instantVect; _instantPanel->getInstant( instantVect ); int actualSlice = instantVect[1]; - kernelManager->setInstant(instantVect); - // Refresh Mask image - if(_viewMaskImage!=NULL){ + if(_viewMaskImage!=NULL) + { _viewMaskImage->SetZ(actualSlice); if (_viewMaskImagePanel->IsVisible()==true) { @@ -667,17 +681,16 @@ void wxContourMainFrame::changeInstant() getMaskValue(&mask,&value, _contourGroup , 0, -1, -1); _viewMaskImage->onThreshold(); } - } - + } // if _viewMaskImage // Refresh Threshold image - if(_viewThresholdImage!=NULL){ + if(_viewThresholdImage!=NULL) + { _viewThresholdImage->SetZ(actualSlice); - if (_viewThresholdImagePanel->IsVisible()==true){ + if (_viewThresholdImagePanel->IsVisible()==true) + { _viewThresholdImage->onThreshold(); } - } - - + } // if _viewThresholdImage updateInstantOutlines(); updateInstantImageData(); updateInstantAxes(); @@ -685,7 +698,7 @@ void wxContourMainFrame::changeInstant() -void wxContourMainFrame :: updateInstantOutlines() +void wxContourMainFrame::updateInstantOutlines() { _theViewPanel->removeSceneContours(); _theViewPanel->addNameWrapperToScene(); @@ -696,10 +709,13 @@ void wxContourMainFrame :: updateInstantOutlines() //} } -int wxContourMainFrame::getNamesWrappingSize(){ +int wxContourMainFrame::getNamesWrappingSize() +{ return kernelManager->getNamesWrappingSize(); } -std::string wxContourMainFrame::getNameWrapping(int i){ + +std::string wxContourMainFrame::getNameWrapping(int i) +{ return kernelManager->getNameWrapping(i); } @@ -709,13 +725,14 @@ void wxContourMainFrame::updateInstantImageData() _instantPanel->getInstant(inst); vtkImageData* img = kernelManager->getImageAtInstant(inst); - if(img!=NULL){ + if(img!=NULL) + { _theViewPanel->changeImage(img); showAxis(false); }else{ int z = _instantPanel->getConceptDataOf("Axe Depth")->getActualValue(); _theViewPanel->setImageSlice(z); - } + } // if img } void wxContourMainFrame::updateInstantAxes() @@ -731,7 +748,6 @@ void wxContourMainFrame::onChangeDeep(int val){ void wxContourMainFrame::onCopy(){ std::vector currentSelection = _theViewPanel->getSelectedObjects(); - std::vector tempVector; _instantPanel->getInstant( tempVector ); _performingOperation->reset(); @@ -740,9 +756,8 @@ void wxContourMainFrame::onCopy(){ _performingOperation->setKeyNamesOperationElems( currentSelection ); } -void wxContourMainFrame::onPaste(){ - - +void wxContourMainFrame::onPaste() +{ char theStartCommand = _performingOperation->getStartCommand(); if ( theStartCommand == COPY ) { @@ -760,7 +775,9 @@ void wxContourMainFrame::onPaste(){ } } } -void wxContourMainFrame::onUndo(){ + +void wxContourMainFrame::onUndo() +{ std::string filename; if(kernelManager->onUndoSaveFile(filename)){ saveFileWithContours(filename); @@ -829,109 +846,11 @@ void wxContourMainFrame :: createMirrorContourOf ( std::string anExistingKName, _theViewPanel->getSceneManager()->createCopyContourOf( anExistingKName, cloneName, manualModel , append ); } -//EED04 -void wxContourMainFrame ::loadState(std::string filename){ - +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.3 || 1.0.2 || 1.0.1 || 1.0.0 - - deleteAllContours(); - - loadContours(pFile, false); - loadContours(pFile, true); - - fclose(pFile); - */ -} - - -//EED03 -/*EED Borrame -void wxContourMainFrame::loadContours( FILE *pFile, bool staticContour ) -{ - char tmp[255]; - - 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); // NumberOfContours - fscanf(pFile,"%s",tmp); // ## - int numberOfContours = atoi(tmp); - - std::vector instantVector; - int typeContourModel; - manualBaseModel *manModelContour; - int typeView; - - int i; - for (i=0;ifactoryManualContourModel(typeContourModel); - manModelContour->Open(pFile); - - fscanf(pFile,"%s",tmp); // TypeView - fscanf(pFile,"%s",tmp); // ## - typeView = atoi(tmp); - - std::string theName; - theName = kernelManager->createOutline( manModelContour, instantVector ); - bool addedModel = theName.compare("") != 0; - if( addedModel ) - { - double spc[3];//Si no hay imagen pero hay contornos que spacing se pone por default - _theViewPanel->getSpacing(spc); - //Adding the manualContourControler to interface objects structure - //Adding the manualViewContour to interface objects structure - //_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 } -*/ void wxContourMainFrame::onLoad() @@ -959,10 +878,7 @@ 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; @@ -1018,17 +934,10 @@ void wxContourMainFrame::onLoadContours(std::string fileNameContourROI, bool int fscanf(pFileData,"%s",tmpD); // NumberOfContours fscanf(pFileData,"%s",tmpD); // # } - fscanf(pFile,"%s",tmp); // --CreaContour-- - fscanf(pFile,"%s",tmp); // Version 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") @@ -1037,7 +946,6 @@ printf("EED wxContourMainFrame::onLoadContours version%s \n", version.c_str() ) openContours(pFile,pFileData,false); openContours(pFile,pFileData,true); //Load StaticContours } - if (version=="1.0.2") { //EED001 @@ -1047,7 +955,6 @@ printf("EED wxContourMainFrame::onLoadContours version%s \n", version.c_str() ) openContours(pFile,pFileData,true); // Load StaticContours SetZForAllContours(-900); } - //AD:02-06-09 else if (version=="1.0.1") { @@ -1463,14 +1370,16 @@ void wxContourMainFrame::openContours( FILE *pFile, FILE *pFileData, bool static } -void wxContourMainFrame::RefreshInterface(){ +void wxContourMainFrame::RefreshInterface() +{ changeInstant(); _theViewPanel->RefreshInterface(); //wxVtk2DBaseView *wxvtk2dbaseview = (wxVtk2DBaseView*)this->_theViewPanel->getWxVtkBaseView(); //wxvtk2dbaseview->Refresh(); } -vtkImageData* wxContourMainFrame::getImageData(){ +vtkImageData* wxContourMainFrame::getImageData() +{ return _theViewPanel->getImageData(); } @@ -1808,19 +1717,18 @@ printf("EED wxContourMainFrame::SegmentationOneSliceITK Skypping this code. No { vecXo.push_back(p[0]); vecYo.push_back(p[1]); - } - else - { - vecX.push_back( p[0] ); - myfile <getSceneManager()->GetImageData(); @@ -2075,6 +1985,7 @@ void wxContourMainFrame::SegmentationOneSlice( int x, int y, int z, int isovalue cpd2->UpdateInformation(); vtkStripper* vtkstripper = vtkStripper::New( ); + vtkstripper->SetMaximumLength(20000); //EED 2017-01-01 Migration VTK7 #if VTK_MAJOR_VERSION <= 5 vtkstripper->SetInput( cpd2->GetOutput() ); @@ -2122,6 +2033,23 @@ myfile.close(); std::vector vecCtrlPointZ; +printf("EED wxContourMainFrame::SegmentationOneSlice GetNumberOfLines=%d \n",polyDataResult->GetNumberOfLines() ); + +int numberOfPointsInCell; +int numberOfcells=polyDataResult->GetNumberOfCells(); +for (int jj=0; jjGetCell( jj ); + numberOfPointsInCell=vtkcell->GetNumberOfPoints(); + printf("EED wxContourMainFrame::SegmentationOneSlice cell=%d points=%d \n",jj,numberOfPointsInCell ); +}// for jj + +printf("EED wxContourMainFrame::SegmentationOneSlice PrintSelf \n"); + +polyDataResult->PrintSelf( std::cout, vtkIndent(0) ); + + + double *p; int ii,size=polyDataResult->GetNumberOfPoints(); int id; @@ -2129,11 +2057,13 @@ myfile.close(); { id = polyDataResult->GetLines()->GetData()->GetValue(ii); p = polyDataResult->GetPoint(id); +printf("EED wxContourMainFrame::SegmentationOneSlice (%d) id=%d px=%f py=%f\n",ii,id, p[0],p[1]); // double x=p[0]; // double y=p[1]; vecX.push_back( p[0] ); vecY.push_back( p[1] ); - vecZ.push_back( 900 ); +//EED 2017-12-16 + vecZ.push_back( -900 ); // vecZ.push_back( p[2] ); } @@ -2153,27 +2083,30 @@ myfile.close(); extractcontrolpoints2d->GetSamplingControlPoints( &vecCtrlPointX , &vecCtrlPointY , &vecCtrlPointZ ); }*/ - if (method==0){ + if (method==0) + { extractcontrolpoints2d->GetInitialControlPoints( &vecCtrlPointX , &vecCtrlPointY , &vecCtrlPointZ ); - } - else if (method==1){ + } else if (method==1){ extractcontrolpoints2d->GetControlPoints( &vecCtrlPointX , &vecCtrlPointY , &vecCtrlPointZ ); - } - else if (method==2){ + } else if (method==2){ extractcontrolpoints2d->SetSamplingControlPoints( sampling ); extractcontrolpoints2d->GetSamplingControlPoints( &vecCtrlPointX , &vecCtrlPointY , &vecCtrlPointZ ); } //--Adding contour to the system - std::vector actualInstantVector; _instantPanel->getInstant( actualInstantVector ); actualInstantVector[1]=z; int j,sizeCtrPt = vecCtrlPointX.size(); manualBaseModel *manModelContour = kernelManager->factoryManualContourModel( typeofcontour ); - manModelContour->SetNumberOfPointsSpline( ((sizeCtrPt/100)+1)*100 ); - if (sizeCtrPt>=3){ +printf("EED wxContourMainFrame::SegmentationOneSlice sizeCtrPt=%d %d %d\n" , sizeCtrPt + , ((sizeCtrPt/100)+1)*100 *2 + , manModelContour->GetNumberOfPointsSpline() + ); + manModelContour->SetNumberOfPointsSpline( ((sizeCtrPt/100)+1)*100 *2 ); + if (sizeCtrPt>=3) + { for (j=0 ; jAddPoint( vecCtrlPointX[j] , vecCtrlPointY[j] , vecCtrlPointZ[j] ); @@ -2193,16 +2126,21 @@ myfile.close(); //_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc, typeofcontour ) ; } // if addedModel } // if sizeCtrPt +printf("EED wxContourMainFrame::SegmentationOneSlice End\n"); } -int wxContourMainFrame::GetImageDataSizeZ(){ + +int wxContourMainFrame::GetImageDataSizeZ() +{ return _theViewPanel->GetImageDataSizeZ(); } -void wxContourMainFrame::GetImageDataRange(double *range){ +void wxContourMainFrame::GetImageDataRange(double *range) +{ _theViewPanel->GetImageDataRange(range); } -void wxContourMainFrame::onSegmentationAllSlice(int minZ,int maxZ,int isovalue,int sampling,int method){ +void wxContourMainFrame::onSegmentationAllSlice(int minZ,int maxZ,int isovalue,int sampling,int method) +{ //JCP 20-10-08 Undo redo implementation saveState(); //JCP 20-10-08 Undo redo implementation @@ -2439,29 +2377,33 @@ int wxContourMainFrame::getWindowLevel() return _theViewPanel->getWindowLevel(); } -void wxContourMainFrame::onBrigthnessColorWindowLevel(int colorwindow,int windowlevel){ +void wxContourMainFrame::onBrigthnessColorWindowLevel(int colorwindow,int windowlevel) +{ _theViewPanel->onBrigthnessColorWindowLevel(colorwindow, windowlevel); RefreshInterface(); } -void wxContourMainFrame::onInterpolation(bool interpolate){ +void wxContourMainFrame::onInterpolation(bool interpolate) +{ _theViewPanel->onInterpolation(interpolate); RefreshInterface(); } -void wxContourMainFrame::onChangeInstant(std::string name,int actual){ +void wxContourMainFrame::onChangeInstant(std::string name,int actual) +{ _instantPanel->setConceptValue( name, actual ); } -void wxContourMainFrame::resetAppend(){ +void wxContourMainFrame::resetAppend() +{ kernelManager->resetAppend(); - } -void wxContourMainFrame::onSpreadAdd(){ +void wxContourMainFrame::onSpreadAdd() +{ std::vector vecX; std::vector vecY; std::vector vecZ; @@ -2473,7 +2415,8 @@ void wxContourMainFrame::onSpreadAdd(){ } -void wxContourMainFrame::onSpreadAddAll(){ +void wxContourMainFrame::onSpreadAddAll() +{ //EED02 std::vector tempVector; _instantPanel->getInstant( tempVector ); @@ -2511,7 +2454,8 @@ void wxContourMainFrame::onSpreadAddAll(){ } -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 @@ -2566,11 +2510,14 @@ void wxContourMainFrame::onSpreadGo(int type){ //RefreshInterface(); } -void wxContourMainFrame::getInstantVector(std::vector& tempVector){ - +void wxContourMainFrame::getInstantVector(std::vector& tempVector) +{ + printf("wxContourMainFrame::getInstantVector Warning!! Methon not implemented ... \n"); + _instantPanel->getInstant( tempVector ); } -std::vector wxContourMainFrame::getOutlinesName(int slide){ +std::vector wxContourMainFrame::getOutlinesName(int slide) +{ std::vector tempVector; _instantPanel->getInstant(tempVector); //Asignation of slide number should be different ex by name @@ -3043,7 +2990,6 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value int z; int ii,sizeLstContourThings; - double totalZ; double porcent; @@ -3124,13 +3070,41 @@ void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value } -void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value) +std::string wxContourMainFrame::GetStringTypeImage( vtkImageData* image) { + std::string result=""; + if ( image->GetScalarType()==VTK_CHAR ) + { + result="CHAR"; + } else if ( image->GetScalarType()==VTK_UNSIGNED_CHAR ){ + result="UCHAR"; + } else if ( image->GetScalarType()==VTK_FLOAT ){ + result="FLOAT"; + } else if ( image->GetScalarType()==VTK_DOUBLE ){ + result="DOUBLE"; + } else if ( image->GetScalarType()==VTK_INT ){ + result="INT"; + } else if ( image->GetScalarType()==VTK_UNSIGNED_INT ){ + result="UINT"; + } else if ( image->GetScalarType()==VTK_SHORT ){ + result="SHORT"; + } else if ( image->GetScalarType()==VTK_UNSIGNED_SHORT ){ + result="USHORT"; + } else if ( image->GetScalarType()==VTK_LONG ){ + result="LONG"; + } else if ( image->GetScalarType()==VTK_UNSIGNED_LONG ){ + result="ULONG"; + } + return result; +} +void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value) +{ + std::string stringType; double spc[3]; kernelManager->GetSpacing(spc,0); // returns the spacing of the first image - - std::string temp = directory + "/" + namefile + "-image-Value.mhd"; + stringType = GetStringTypeImage(value); + std::string temp = directory + "/" + namefile + "-image-Value-"+stringType+".mhd"; wxString filename = crea::std2wx(temp); @@ -3144,6 +3118,7 @@ void wxContourMainFrame::SaveImageResult(std::string directory,std::string namef valueChInfo->SetInputData(value); #endif valueChInfo->SetSpacingScale(spc); + valueChInfo->Update(); vtkMetaImageWriter *writerValueImage = vtkMetaImageWriter::New( ); //EED 2017-01-01 Migration VTK7 @@ -3158,7 +3133,8 @@ void wxContourMainFrame::SaveImageResult(std::string directory,std::string namef writerValueImage->Write( ); // Image Mask - temp = directory + "/" + namefile + "-image-Mask.mhd"; + stringType = GetStringTypeImage(mask); + temp = directory + "/" + namefile + "-image-Mask-"+stringType+".mhd"; // LG 14/01/09 : using crea filename = crea::std2wx(temp); @@ -3173,6 +3149,7 @@ void wxContourMainFrame::SaveImageResult(std::string directory,std::string namef maskChInfo->SetInputData(mask); #endif maskChInfo->SetSpacingScale(spc); + maskChInfo->Update(); vtkMetaImageWriter *writerMaskImage = vtkMetaImageWriter::New( ); //EED 2017-01-01 Migration VTK7 @@ -3251,7 +3228,7 @@ void wxContourMainFrame::SetContourGroup(int contourGroup) wxPanel *wxContourMainFrame::getMaskImageViewPanel(wxWindow *parent) { - + if (_viewMaskImagePanel==NULL) { _contourextractdata = new ContourExtractData(true); @@ -3260,15 +3237,29 @@ wxPanel *wxContourMainFrame::getMaskImageViewPanel(wxWindow *parent) // _theViewPanel->getImageData()->GetScalarRange(range); //int min = (int)floor (range[0]); //int max = (int)ceil (range[1]); + +//EED 2017-12-17 int min = 254; int max = 256; - _viewMaskImagePanel = new ThresholdImageViewPanel( parent, -1, -1 , 0); + + _viewMaskImagePanel = new ThresholdImageViewPanel( parent, -1, -1 , -1,-1, 0); _viewMaskImage = new ThresholdImageView(); - _viewMaskImage->SetImage(_contourextractdata->GetVtkImageMaskResult() ); + _viewMaskImage->SetImage( _contourextractdata->GetVtkImageMaskResult() ); _viewMaskImage->SetminMaxValue( min, max); _viewMaskImage->SetBaseColor( 0,0,1 ); + + + std::vector colorbarposition; + colorbarposition.push_back( -999 ); + colorbarposition.push_back( -999 ); + _viewMaskImage->SetColorBarPosition( colorbarposition ); + double spc[3]; + _viewMaskImage->SetSpcBase( _theViewPanel->getImageData()->GetSpacing() ); + _viewMaskImage->SetNewSpacingLayer( _theViewPanel->getImageData()->GetSpacing() ); + _viewMaskImagePanel->SetThresholdImageView( _viewMaskImage ); _viewMaskImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() ); + _viewMaskImage->onThresholdChangeOpacity( 25 ); } return _viewMaskImagePanel; } @@ -3284,6 +3275,21 @@ wxPanel *wxContourMainFrame::getColorLayerImageViewPanel(wxWindow *parent) int max = (int)ceil (range[1]); _viewColorLayerImagePanel = new ColorLayerImageViewPanel( parent, min, max, 100, 1); _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetwxVtkBaseView( 0 , _theViewPanel->getWxVtkBaseView() ); + // std::vector range = bbGetInputlstRangeForColorBar(); + // clivp->GetColorLayerImageViewManager()->SetRangeForColorBar( range ); + std::vector colorbarposition; + colorbarposition.push_back( 50 ); + colorbarposition.push_back( 105 ); + _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetColorBarPosition( colorbarposition ); + // std::vector base_color; + // _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetBaseColors( base_color ); + // std::vector grey_level_boundaries; + // clivp->GetColorLayerImageViewManager()->SetGreyLevelBoundaries( grey_level_boundaries ); + std::vector transparence_level_boundaries; + transparence_level_boundaries.push_back(0); + _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetBaseTransparence( transparence_level_boundaries ); + _viewColorLayerImagePanel->GetColorLayerImageViewManager()->SetPlainOrGradientColor( false ); +// _viewColorLayerImagePanel->SetFittingMode( 3 ); } return _viewColorLayerImagePanel; } @@ -3297,13 +3303,25 @@ wxPanel *wxContourMainFrame::getThresholdImageViewPanel(wxWindow *parent) _theViewPanel->getImageData()->GetScalarRange(range); int min = (int)floor (range[0]); int max = (int)ceil (range[1]); - _viewThresholdImagePanel = new ThresholdImageViewPanel( parent, min, max , 1); + int start= (max+min)/2 - (max-min)*0.25; + int end= (max+min)/2 + (max-min)*0.25; + _viewThresholdImagePanel = new ThresholdImageViewPanel( parent, min, max, start, end , 1); _viewThresholdImage = new ThresholdImageView(); + _viewThresholdImage->SetminMaxValue(start,end); _viewThresholdImage->SetImage( _theViewPanel->getImageData() ); - _viewThresholdImage->SetminMaxValue( min, max); + std::vector colorbarposition; + colorbarposition.push_back( 10 ); + colorbarposition.push_back( 105 ); + _viewThresholdImage->SetColorBarPosition( colorbarposition ); + double spc[3]; + _viewThresholdImage->SetSpcBase( _theViewPanel->getImageData()->GetSpacing() ); + _viewThresholdImage->SetNewSpacingLayer( _theViewPanel->getImageData()->GetSpacing() ); + _viewThresholdImage->SetBaseColor( 1,0,0 ); _viewThresholdImagePanel->SetThresholdImageView( _viewThresholdImage ); _viewThresholdImage->SetwxVtkBaseView( _theViewPanel->getWxVtkBaseView() ); + _viewThresholdImage->onThresholdChangeOpacity( 25 ); + RefreshInterface(); } return _viewThresholdImagePanel; } @@ -3413,7 +3431,6 @@ void wxContourMainFrame::SetFileLocation(std::string newFileLocation) void wxContourMainFrame::FlipSelectedContours(int flipDirection) { - printf("EED wxContourMainFrame::FlipSelectedContours flipDirection=%d \n", flipDirection ); FlipLstOfContours( (std::vector)_theViewPanel->getSceneManager()->getSelectedObjects() , flipDirection @@ -3423,7 +3440,6 @@ void wxContourMainFrame::FlipSelectedContours(int flipDirection) void wxContourMainFrame::FlipActualSliceContours(int flipDirection) { - printf("EED wxContourMainFrame::FlipActualSliceContours flipDirection=%d \n", flipDirection ); FlipLstOfContours( (std::vector)_theViewPanel->getSceneManager()->GetlstContoursNameActualSlice() , flipDirection @@ -3432,7 +3448,6 @@ void wxContourMainFrame::FlipActualSliceContours(int flipDirection) void wxContourMainFrame::FlipAllContours(int flipDirection) { - printf("EED wxContourMainFrame::FlipAllContours flipDirection=%d \n", flipDirection ); FlipLstOfContours( kernelManager->GetLstNameThings() , flipDirection @@ -3503,6 +3518,11 @@ void wxContourMainFrame::FlipContours(int typeContourFlip, int flipDirection) } +void wxContourMainFrame::SetXY(int x, int y) +{ + _theViewPanel->SetXY(x,y); +} +