X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManager.cxx;h=b175c46ccc642665487641e20c102b2e8c8e5d37;hb=fbd1f3ace65ab9540cb4e0b2d4af83b60232479e;hp=bc03ebd7f715f4f56bc9f8069b1e8207c5abc89d;hpb=4d67947110db0b85315ec010ba3db85781097a4a;p=clitk.git diff --git a/vv/vvSlicerManager.cxx b/vv/vvSlicerManager.cxx index bc03ebd..b175c46 100644 --- a/vv/vvSlicerManager.cxx +++ b/vv/vvSlicerManager.cxx @@ -23,7 +23,6 @@ #include "vvInteractorStyleNavigator.h" #include "vvLandmarks.h" #include "vvMesh.h" -#include "vvImageMapToWLColors.h" #include "vvBlendImageActor.h" #include @@ -69,7 +68,8 @@ vvSlicerManager::vvSlicerManager(int numberOfSlicers) for ( int i = 0; i < numberOfSlicers; i++) mSlicers.push_back(vtkSmartPointer::New()); - + mSelectedSlicer = -1; + mPreviousSlice.resize(numberOfSlicers); mPreviousTSlice.resize(numberOfSlicers); mSlicingPreset = WORLD_SLICING; @@ -417,6 +417,23 @@ void vvSlicerManager::LeftButtonReleaseEvent(int slicer) } //---------------------------------------------------------------------------- + +//---------------------------------------------------------------------------- +void vvSlicerManager::EmitMousePositionUpdated(int slicer) +{ + emit MousePositionUpdatedSignal(slicer); +} +//---------------------------------------------------------------------------- + + +//---------------------------------------------------------------------------- +void vvSlicerManager::EmitKeyPressed(std::string KeyPress) +{ + emit KeyPressedSignal(KeyPress); +} +//---------------------------------------------------------------------------- + + //---------------------------------------------------------------------------- void vvSlicerManager::SetSliceOrientation(int slicer, int orientation) { @@ -442,7 +459,7 @@ void vvSlicerManager::SetTSlice(int slice) if (mLandmarks) mLandmarks->SetTime(slice); for ( unsigned int i = 0; i < mSlicers.size(); i++) { - if (slice != mSlicers[i]->GetTSlice()) { + if (slice != mSlicers[i]->GetMaxCurrentTSlice()) { mSlicers[i]->SetTSlice(slice); UpdateTSlice(i); } @@ -454,7 +471,7 @@ void vvSlicerManager::SetTSlice(int slice) //---------------------------------------------------------------------------- void vvSlicerManager::SetNextTSlice(int originating_slicer) { - int t = mSlicers[0]->GetTSlice(); + int t = mSlicers[0]->GetMaxCurrentTSlice(); t++; if (t > mSlicers[0]->GetTMax()) t = 0; @@ -467,7 +484,7 @@ void vvSlicerManager::SetNextTSlice(int originating_slicer) //---------------------------------------------------------------------------- void vvSlicerManager::SetPreviousTSlice(int originating_slicer) { - int t = mSlicers[0]->GetTSlice(); + int t = mSlicers[0]->GetMaxCurrentTSlice(); t--; if (t < 0) t = mSlicers[0]->GetTMax(); @@ -502,16 +519,17 @@ void vvSlicerManager::SetTSliceInSlicer(int tslice, int slicer) if (mLandmarks) mLandmarks->SetTime(tslice); - if (mSlicers[slicer]->GetTSlice() == tslice) return; + if (mSlicers[slicer]->GetMaxCurrentTSlice() == tslice) return; + + mSlicers[slicer]->SetTSlice(tslice); if(mSlicingPreset==VOXELS_SLICING) { vtkMatrix4x4 *imageTransformInverse = vtkMatrix4x4::New(); - mImage->GetTransform()[tslice]->GetInverse(imageTransformInverse); + mImage->GetTransform()[mSlicers[slicer]->GetTSlice()]->GetInverse(imageTransformInverse); this->GetSlicer(slicer)->GetSlicingTransform()->SetMatrix(imageTransformInverse); imageTransformInverse->Delete(); } - mSlicers[slicer]->SetTSlice(tslice); UpdateTSlice(slicer); } //---------------------------------------------------------------------------- @@ -604,6 +622,7 @@ void vvSlicerManager::UpdateViews(int current,int slicer) z <= mSlicers[slicer]->GetInput()->GetWholeExtent()[5]+0.5) { mSlicers[slicer]->UpdateCursorPosition(); mSlicers[slicer]->SetCursorColor(10,212,255); + mSelectedSlicer = slicer; switch (mSlicers[slicer]->GetSliceOrientation()) { case vtkImageViewer2::SLICE_ORIENTATION_XY: @@ -628,29 +647,29 @@ void vvSlicerManager::UpdateViews(int current,int slicer) && mSlicers[i]->GetRenderer()->GetDraw() && mSlicers[i]->GetRenderWindow()->GetSize()[0] > 2 && mSlicers[i]->GetRenderWindow()->GetSize()[1] > 2) { - mSlicers[i]->SetCurrentPosition(p[0], p[1], p[2], mSlicers[slicer]->GetTSlice()); + mSlicers[i]->SetCurrentPosition(p[0], p[1], p[2], mSlicers[slicer]->GetMaxCurrentTSlice()); mSlicers[i]->UpdateCursorPosition(); if (current) { //do not display corner annotation if image is the one picked mSlicers[i]->SetCurrentPosition(-VTK_DOUBLE_MAX,-VTK_DOUBLE_MAX, - -VTK_DOUBLE_MAX, mSlicers[slicer]->GetTSlice()); + -VTK_DOUBLE_MAX, mSlicers[slicer]->GetMaxCurrentTSlice()); mSlicers[i]->SetCursorColor(255,10,212); } else { mSlicers[i]->SetCursorColor(150,10,282); } switch (mSlicers[i]->GetSliceOrientation()) { case vtkImageViewer2::SLICE_ORIENTATION_XY: - if (mSlicers[i]->GetSlice() != (int)floor(z)) - mSlicers[i]->SetSlice((int)floor(z)); + if (mSlicers[i]->GetSlice() != (int)lrint(z)) + mSlicers[i]->SetSlice((int)lrint(z)); break; case vtkImageViewer2::SLICE_ORIENTATION_XZ: - if (mSlicers[i]->GetSlice() != (int)floor(y)) - mSlicers[i]->SetSlice((int)floor(y)); + if (mSlicers[i]->GetSlice() != (int)lrint(y)) + mSlicers[i]->SetSlice((int)lrint(y)); break; case vtkImageViewer2::SLICE_ORIENTATION_YZ: - if (mSlicers[i]->GetSlice() != (int)floor(x)) - mSlicers[i]->SetSlice((int)floor(x)); + if (mSlicers[i]->GetSlice() != (int)lrint(x)) + mSlicers[i]->SetSlice((int)lrint(x)); break; } @@ -684,7 +703,7 @@ void vvSlicerManager::UpdateLinked(int slicer) z >= mSlicers[slicer]->GetInput()->GetWholeExtent()[4]-0.5 && z <= mSlicers[slicer]->GetInput()->GetWholeExtent()[5]+0.5) { for (std::list::const_iterator i = mLinkedId.begin(); i != mLinkedId.end(); i++) { - emit UpdateLinkManager(*i, slicer, p[0], p[1], p[2], mSlicers[slicer]->GetTSlice()); + emit UpdateLinkManager(*i, slicer, p[0], p[1], p[2], mSlicers[slicer]->GetMaxCurrentTSlice()); } } } @@ -734,7 +753,7 @@ void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *refSlicer, bool bPropagat //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- -double vvSlicerManager::GetColorWindow() +double vvSlicerManager::GetColorWindow() const { if (mSlicers.size()) return mSlicers[0]->GetColorWindow(); @@ -744,7 +763,7 @@ double vvSlicerManager::GetColorWindow() //---------------------------------------------------------------------------- -double vvSlicerManager::GetColorLevel() +double vvSlicerManager::GetColorLevel() const { if (mSlicers.size()) return mSlicers[0]->GetColorLevel(); @@ -939,7 +958,7 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) if (mSlicers[slicer]->GetVFActor() ) { displayVec = 1; - unsigned int currentTime = mSlicers[slicer]->GetTSlice(); + unsigned int currentTime = mSlicers[slicer]->GetMaxCurrentTSlice(); vtkImageData *vf = NULL; if (mSlicers[slicer]->GetVF()->GetVTKImages().size() > currentTime) @@ -1026,7 +1045,7 @@ void vvSlicerManager::UpdateSlice(int slicer) void vvSlicerManager::UpdateTSlice(int slicer) { int slice = mSlicers[slicer]->GetSlice(); - int tslice = mSlicers[slicer]->GetTSlice(); + int tslice = mSlicers[slicer]->GetMaxCurrentTSlice(); if (mPreviousSlice[slicer] == slice) { if (mPreviousTSlice[slicer] == tslice) { // DD("************** NOTHING ***********"); @@ -1109,9 +1128,9 @@ void vvSlicerManager::SetPreset(int preset) window = 400; level = 20; break; - case 3: - window = 1500; - level = -500; + case 3: // lungs (same as FOCAL) + window = 1700; + level = -300; break; case 4: window = 1000; @@ -1302,15 +1321,11 @@ void vvSlicerManager::SetColorMap(int colormap) invLUT->SetSaturationRange(1,1); invLUT->SetHueRange(double((mOverlayColor+180)%360)/360,double((mOverlayColor+180)%360)/360); invLUT->Build(); - dynamic_cast(mSlicers[i]->GetWindowLevel()) - ->SetWindowLevelMode(true); mSlicers[i]->GetWindowLevel()->SetLookupTable(supLUT); mSlicers[i]->GetOverlayMapper()->SetLookupTable(invLUT); invLUT->Delete(); supLUT->Delete(); } else if (mSlicers[i]->GetOverlay()) { - //dynamic_cast(mSlicers[i]->GetWindowLevel()) - //->SetWindowLevelMode(false); mSlicers[i]->GetWindowLevel()->SetLookupTable(LUT); } else { mSlicers[i]->GetWindowLevel()->SetLookupTable(LUT);