X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FThresholdImageView%2FLayerImageBase.cxx;h=c6d8465096bfd21a7ec43484e7ed82244e2eef78;hb=d725af03e25b41e03b212c26068be2c04dacd270;hp=a4946f0ccbc07659f62e56a62ad2cda49801cb6c;hpb=e2509516e281249369e6792239847216068556c4;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx index a4946f0..c6d8465 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx @@ -1,11 +1,46 @@ /** - * \file - * \brief Class bbtk::ThresholdImageView . + * \file + * \brief Class bbtk::ThresholdImageView . */ #include "LayerImageBase.h" + +//--------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- + +ColorLayerImageBasevtkInteractor::ColorLayerImageBasevtkInteractor(LayerImageBase* layerImageBase) +{ + _layerImageBase=layerImageBase; +} + +//--------------------------------------------------------------------------------------------- +ColorLayerImageBasevtkInteractor::~ColorLayerImageBasevtkInteractor() +{ +} + + +//--------------------------------------------------------------------------------------------- +bool ColorLayerImageBasevtkInteractor::OnMouseMove() +{ + + if (_vtkInteractorStyleBaseView->GetRefresh_waiting()==true) + { + _layerImageBase->GetvtkImageReslice()->Modified(); + } + + return true; +} + + +//--------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- +//--------------------------------------------------------------------------------------------- + + + LayerImageBase::LayerImageBase() { _actorPresent = false; @@ -14,6 +49,7 @@ LayerImageBase::LayerImageBase() _thresholdMapper = NULL; _thresholdActor = NULL; _image = NULL; + _baseView = NULL; _imageReslicer = vtkImageReslice::New(); } @@ -30,7 +66,7 @@ void LayerImageBase::SetZ(int z) } //---------------------------------------------------------------------------- -int LayerImageBase::GetZ() +int LayerImageBase::GetZ() // virtual { return _Z; } @@ -59,6 +95,9 @@ void LayerImageBase::SetImage(vtkImageData* image) void LayerImageBase::SetwxVtkBaseView(wxVtkBaseView *baseview) { _baseView = baseview; + + vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*)(_baseView->GetInteractorStyleBaseView()); + isbv->AddInteractorStyleMaracas( new ColorLayerImageBasevtkInteractor(this) ); } //---------------------------------------------------------------------------- @@ -67,6 +106,15 @@ wxVtkBaseView *LayerImageBase::GetwxVtkBaseView() return _baseView; } +//---------------------------------------------------------------------------- +void LayerImageBase::Refresh() +{ + printf("EED LayerImageBase::Refresh\n"); + if (_baseView!=NULL) + { + _baseView->Refresh(); + } +} //---------------------------------------------------------------------------- @@ -75,54 +123,73 @@ vtkLookupTable* LayerImageBase::GetThresholdTable() return _thresholdTable; } +//---------------------------------------------------------------------------- +int LayerImageBase::CleanZ(int z) +{ + int ext[6]; + _image->GetWholeExtent(ext); + + if (z<0) + { + z=0; + } + + if ( z > (ext[5]-ext[4]) ) + { + z=ext[5]-ext[4]; + } + return z; +} //---------------------------------------------------------------------------- void LayerImageBase::onThreshold() { - int z = GetZ(); - - if (!GetActorPresent()) - { - if (_thresholdTable==NULL) - { - //Lookup Table - _thresholdTable = vtkLookupTable::New(); - } // _thresholdTable - - if (_thresholdMapper==NULL) - { - _thresholdMapper = vtkImageMapToColors::New( ); - } - - if (_thresholdActor==NULL) - { - _thresholdActor = vtkImageActor::New( ); - _thresholdActor->SetOpacity( 0.6 ); - _thresholdActor->InterpolateOn( ); - _thresholdActor->SetPosition( 0,0, 900-1 ); - } // _thresholdActor - - - _baseView->GetRenderer()->AddActor( _thresholdActor ); - _actorPresent = true; - } // !GetActorPresent() - ConfigLookupTable(); // virtual method - _imageReslicer->SetInput( GetImage() ); - _imageReslicer->SetInformationInput( GetImage() ); - _imageReslicer->SetResliceAxesDirectionCosines(1,0,0, 0,1,0 ,0,0,1); - _imageReslicer->SetOutputDimensionality(2); - _imageReslicer->SetInterpolationModeToLinear(); - _imageReslicer->SetResliceAxesOrigin(0,0,z); - - vtkImageData *img = _imageReslicer->GetOutput(); - img->Update(); - img->UpdateInformation(); + if ((_image!=NULL) && (_baseView!=NULL)) + { + int z=CleanZ( GetZ() ); - _thresholdMapper->SetInput( img ); - _thresholdMapper->SetLookupTable( _thresholdTable ); - _thresholdActor->SetInput( _thresholdMapper->GetOutput() ); + if (!GetActorPresent()) + { + if (_thresholdTable==NULL) + { + //Lookup Table + _thresholdTable = vtkLookupTable::New(); + } // _thresholdTable + + if (_thresholdMapper==NULL) + { + _thresholdMapper = vtkImageMapToColors::New( ); + } + + if (_thresholdActor==NULL) + { + _thresholdActor = vtkImageActor::New( ); + _thresholdActor->SetOpacity( 0.6 ); + _thresholdActor->InterpolateOn( ); + _thresholdActor->SetPosition( 0,0, 900-1 ); + } // _thresholdActor + _baseView->GetRenderer()->AddActor( _thresholdActor ); + _actorPresent = true; + } // !GetActorPresent() + + ConfigLookupTable(); // virtual method + _imageReslicer->SetInput( GetImage() ); + _imageReslicer->SetInformationInput( GetImage() ); + _imageReslicer->SetResliceAxesDirectionCosines(1,0,0, 0,1,0 ,0,0,1); + _imageReslicer->SetOutputDimensionality(2); + _imageReslicer->SetInterpolationModeToLinear(); + _imageReslicer->SetResliceAxesOrigin(0,0,z); + + vtkImageData *img = _imageReslicer->GetOutput(); +// img->Update(); +// img->UpdateInformation(); + + _thresholdMapper->SetInput( img ); + _thresholdMapper->SetLookupTable( _thresholdTable ); + _thresholdActor->SetInput( _thresholdMapper->GetOutput() ); + } // _image } @@ -148,7 +215,7 @@ void LayerImageBase::onThresholdInterpolation(bool interpolate) else { _thresholdActor->InterpolateOff( ); - } + } } } @@ -169,9 +236,19 @@ void LayerImageBase::onThresholdRemove() wxVtkBaseView * baseView = _baseView; baseView->GetRenderer()->RemoveActor( _thresholdActor ); _actorPresent = false; - } + } } +//---------------------------------------------------------------------------- +vtkLookupTable *LayerImageBase::GetvtkLookupTable() +{ + return _thresholdTable; +} + +vtkImageReslice *LayerImageBase::GetvtkImageReslice() +{ + return _imageReslicer; +}