X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FThresholdImageView%2FLayerImageBase.cxx;h=d89c05ed8da74f5e309c9d3ca49cba03a4b90c85;hb=439cc05f12e61d0ba090ec0c2ba8701d382238d7;hp=3b89d1a2f93be5deafdb135839076344a136e19d;hpb=ed6f960acce2ed63b0d6b964aee7ee243d8c6446;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 3b89d1a..d89c05e 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/LayerImageBase.cxx @@ -33,8 +33,7 @@ #include "wxMPRBaseData.h" #include "wxVtk2DBaseView.h" #include "wxVTKRenderWindowInteractor.h" - - +#include "vtkTextProperty.h" //--------------------------------------------------------------------------------------------- @@ -85,103 +84,6 @@ private: }; -//--------------------------------------------------------------------------------------------- -//--------------------------------------------------------------------------------------------- -//--------------------------------------------------------------------------------------------- - -ColorLayerImageBasevtkInteractor::ColorLayerImageBasevtkInteractor(LayerImageBase* layerImageBase) -{ - _state = false; - _stateKey = false; - _layerImageBase = layerImageBase; - -} - -//--------------------------------------------------------------------------------------------- -ColorLayerImageBasevtkInteractor::~ColorLayerImageBasevtkInteractor() -{ -} - -//--------------------------------------------------------------------------------------------- -bool ColorLayerImageBasevtkInteractor::OnChar() -{ - return true; -} - - -//--------------------------------------------------------------------------------------------- -bool ColorLayerImageBasevtkInteractor::OnMouseMove() // vitual -{ - printf("EED ColorLayerImageBasevtkInteractor::OnMouseMove start \n"); - - vtkRenderWindowInteractor *interactor = _vtkInteractorStyleBaseView->GetInteractor(); - - // For example in ManualPaint Action - // This is not working, because the order of insertion events mecanism (_vtkInteractorStyleBaseView) - // Layer first Paint after. - // the only way to make it works is to take the axes an paint. this force a first SetParent_refresh_waiting() -// if ( this->_vtkInteractorStyleBaseView->GetParent_refresh_waiting() == true ) - - if ( interactor->GetControlKey()==1 ) // EED This if for ManaulPaint Interaction compatibility - { - printf("EED ColorLayerImageBasevtkInteractor::OnMouseMove need Refresh \n" ); - _layerImageBase->onThreshold(); - _layerImageBase->GetvtkImageReslice()->Modified(); - } else { - printf("EED ColorLayerImageBasevtkInteractor::OnMouseMove NOT need Refresh \n" ); - } - - - if ( (_state==true) && (_layerImageBase->GetActorPresent()) ) - { - wxVtk2DBaseView *wxvtk2Dbaseview = (wxVtk2DBaseView*) _vtkInteractorStyleBaseView->GetWxVtk2DBaseView(); - wxVTKRenderWindowInteractor *wxVTKiren = wxvtk2Dbaseview->GetWxVTKRenderWindowInteractor(); - int px, py; - wxVTKiren->GetEventPosition(px, py); - -// int typeView = 1; - double X = (double) px; - double Y = (double) py; - double Z = wxvtk2Dbaseview->GetActualSlice(); -// wxvtk2Dbaseview->TransFromCoordScreenToWorld(X, Y, Z,true, typeView); - wxvtk2Dbaseview->TransFromCoordScreenToWorld(X, Y, Z, true); - -// _manualPaintControler->PaintImage((int) X, (int) Y, (int) Z); - - _layerImageBase->SetX( (int)X ); - _layerImageBase->SetY( (int)Y ); - _layerImageBase->SetZ( (int)Z ); - _layerImageBase->onThreshold(); -// _layerImageBase->Refresh(); - - this->_vtkInteractorStyleBaseView->SetParent_refresh_waiting(); - - if (_vtkInteractorStyleBaseView->GetRefresh_waiting()==true) - { - _layerImageBase->GetvtkImageReslice()->Modified(); - } - printf("EED ColorLayerImageBasevtkInteractor::YESSSSSS \n"); - } - return true; -} - -//--------------------------------------------------------------------------------------------- -bool ColorLayerImageBasevtkInteractor::OnRightButtonDown() // virtual -{ - printf("EED ColorLayerImageBasevtkInteractor::OnRightButtonDown \n"); - _state=true; - return true; -} - - -//--------------------------------------------------------------------------------------------- -bool ColorLayerImageBasevtkInteractor::OnRightButtonUp() // virtual -{ - printf("EED ColorLayerImageBasevtkInteractor::OnRightButtonUp \n"); - _state=false; - return true; -} - //--------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------- @@ -191,17 +93,17 @@ bool ColorLayerImageBasevtkInteractor::OnRightButtonUp() // virtual LayerImageBase::LayerImageBase() { - _actorPresent = false; - _X = 0; - _Y = 0; - _Z = 0; + _actorPresent = false; + _X = 0; + _Y = 0; + _Z = 0; _thresholdTable = NULL; - _thresholdMapper = NULL; + _thresholdMapper = NULL; _scalarbarActor = NULL; _thresholdActor = NULL; - _image = NULL; - _baseView = NULL; - _imageReslicer = vtkImageReslice::New(); + _image = NULL; + _baseView = NULL; + _imageReslicer = vtkImageReslice::New(); } //---------------------------------------------------------------------------- @@ -262,19 +164,50 @@ bool LayerImageBase::GetActorPresent() //---------------------------------------------------------------------------- void LayerImageBase::SetImage(vtkImageData* image) { + double spc[3]; + int ext[6]; _image = image; + _image->GetSpacing(spc); + _image->GetWholeExtent(ext); + int sx=ext[1]-ext[0]+1; + int sy=ext[3]-ext[2]+1; + int sz=ext[5]-ext[4]+1; + int ssx=(sx/2)*spc[0]; + int ssy=(sy/2)*spc[1]; + int ssz=(sz/2)*spc[2]; + SetX( ssx ); + SetY( ssy ); + SetZ( ssz ); + _image->Update(); + _image->GetScalarRange( _range ); + _thresholdTable = vtkLookupTable::New(); +} + +void LayerImageBase::SetRangeForColorBar(std::vector &range) +{ + _rangeForColorBar=range; +} + +void LayerImageBase::GetRangeForColorBar(double &minRange, double &maxRange) +{ + if (_rangeForColorBar.size()==2) + { + minRange = _rangeForColorBar[0]; + maxRange = _rangeForColorBar[1]; + } else { + minRange = _range[0]; + maxRange = _range[1]; + } } + + //---------------------------------------------------------------------------- void LayerImageBase::SetwxVtkBaseView(wxVtkBaseView *baseview) { if (_baseView==NULL) { _baseView = baseview; -// Old EED 2014 11 13 -// vtkInteractorStyleBaseView *isbv = (vtkInteractorStyleBaseView*)(_baseView->GetInteractorStyleBaseView()); -// isbv->AddInteractorStyleMaracas( new ColorLayerImageBasevtkInteractor(this) ); - ColorLayerObserver *colorlayerobserver = ColorLayerObserver::New(); _baseView->GetVtkBaseData()->AddObserver( 1, colorlayerobserver ); colorlayerobserver->SetLayerImageBase(this); @@ -429,10 +362,11 @@ void LayerImageBase::onThreshold() _imageReslicer->SetResliceAxesOrigin(0,0,z); } - _imageReslicer->SetOutputDimensionality(2); // _imageReslicer->SetInterpolationModeToLinear(); _imageReslicer->SetInterpolationModeToNearestNeighbor(); + _imageReslicer->Modified(); + vtkImageData *img = _imageReslicer->GetOutput(); // img->Update(); @@ -445,9 +379,11 @@ void LayerImageBase::onThreshold() // _scalarbarActor->SetLookupTable( _thresholdTable ); _scalarbarActor->SetLookupTable( _thresholdMapper->GetLookupTable() ); - _scalarbarActor->SetTitle("Value"); - _scalarbarActor->SetNumberOfLabels(5); + _scalarbarActor->SetNumberOfLabels(4); + int fontsize = _scalarbarActor->GetLabelTextProperty()->GetFontSize(); + _scalarbarActor->GetLabelTextProperty()->SetFontSize(fontsize/2); + // _scalarbarActor->SetTextPad(4); ?? } // _image @@ -514,6 +450,16 @@ vtkImageReslice *LayerImageBase::GetvtkImageReslice() return _imageReslicer; } +//---------------------------------------------------------------------------- +void LayerImageBase::GetImageScalarRange() +{ + double min,max; + GetRangeForColorBar(min,max); +// _image->GetScalarRange(_range); + _range[0]=min; + _range[1]=max; +} + // EOF