X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicerManager.cxx;h=fd8f09fccc30b4667a6e271076ca5000f2839512;hb=9a6fbe1cfe80878083f816bfdb4560e7dfb62f79;hp=08d8f5ac329af1d10a29645ab93c4e779fc411b3;hpb=8eed6bc78fb0ef451329c9aaa1df10271bda1129;p=clitk.git diff --git a/vv/vvSlicerManager.cxx b/vv/vvSlicerManager.cxx index 08d8f5a..fd8f09f 100644 --- a/vv/vvSlicerManager.cxx +++ b/vv/vvSlicerManager.cxx @@ -305,7 +305,11 @@ bool vvSlicerManager::SetVF(std::string filename) if (mVectorReader.IsNull()) mVectorReader = vvImageReader::New(); mVectorReader->SetInputFilename(filename); - mVectorReader->Update(vvImageReader::VECTORFIELD); + + if (mType == vvImageReader::IMAGEWITHTIME) + mVectorReader->Update(vvImageReader::VECTORFIELDWITHTIME); + else + mVectorReader->Update(vvImageReader::VECTORFIELD); if (mVectorReader->GetLastError().size() != 0) { mLastError = mVectorReader->GetLastError(); return false; @@ -433,7 +437,6 @@ void vvSlicerManager::SetTSlice(int slice) for ( unsigned int i = 0; i < mSlicers.size(); i++) { if (slice != mSlicers[i]->GetTSlice()) { mSlicers[i]->SetTSlice(slice); - if (mSlicers[i]->GetImageActor()->GetVisibility()) UpdateTSlice(i); } } @@ -495,8 +498,7 @@ void vvSlicerManager::SetTSliceInSlicer(int tslice, int slicer) if (mSlicers[slicer]->GetTSlice() == tslice) return; mSlicers[slicer]->SetTSlice(tslice); - if (mSlicers[slicer]->GetImageActor()->GetVisibility()) - UpdateTSlice(slicer); + UpdateTSlice(slicer); } //---------------------------------------------------------------------------- @@ -576,7 +578,8 @@ void vvSlicerManager::UpdateViews(int current,int slicer) mSlicers[slicer]->Render(); for ( unsigned int i = 0; i < mSlicers.size(); i++) { - if (i != (unsigned int)slicer && mSlicers[i]->GetImageActor()->GetVisibility() + if (i != (unsigned int)slicer + && mSlicers[i]->GetRenderer()->GetDraw() && mSlicers[i]->GetRenderWindow()->GetSize()[0] > 2 && mSlicers[i]->GetRenderWindow()->GetSize()[1] > 2) { mSlicers[i]->SetCurrentPosition(mSlicers[slicer]->GetCurrentPosition()[0], @@ -733,6 +736,27 @@ double vvSlicerManager::GetColorLevel() } //---------------------------------------------------------------------------- +//------------------------------------------------------------------------------ +void vvSlicerManager::ResetTransformationToIdentity(const std::string actorType) +{ + if(actorType == "image") + this->GetImage()->GetTransform()->Identity(); + else if(actorType == "overlay") + this->GetSlicer(0)->GetOverlay()->GetTransform()->Identity(); + else if(actorType == "fusion") + this->GetSlicer(0)->GetFusion()->GetTransform()->Identity(); + else if(actorType == "vf") + this->GetVF()->GetTransform()->Identity(); + else + return; + + for(int i=0; i< this->GetNumberOfSlicers(); i++){ + this->GetSlicer(i)->ForceUpdateDisplayExtent(); + this->GetSlicer(i)->ResetCamera(); + this->GetSlicer(i)->Render(); + } +} +//------------------------------------------------------------------------------ //---------------------------------------------------------------------------- void vvSlicerManager::Render() @@ -865,7 +889,7 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) Z <= mSlicers[slicer]->GetInput()->GetWholeExtent()[5]) { value = this->GetScalarComponentAsDouble(mSlicers[slicer]->GetInput(), X, Y, Z); - if (mSlicers[slicer]->GetVFActor() && mSlicers[slicer]->GetVFActor()->GetVisibility()) { + if (mSlicers[slicer]->GetVFActor() ) { displayVec = 1; unsigned int currentTime = mSlicers[slicer]->GetTSlice(); vtkImageData *vf = NULL; @@ -885,7 +909,7 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) valueVec = sqrt(xVec*xVec + yVec*yVec + zVec*zVec); } } - if (mSlicers[slicer]->GetOverlayActor() && mSlicers[slicer]->GetOverlayActor()->GetVisibility()) { + if (mSlicers[slicer]->GetOverlayActor() ) { displayOver = 1; vtkImageData *overlay = dynamic_cast(mSlicers[slicer]->GetOverlayMapper()->GetInput()); double Xover = (x - overlay->GetOrigin()[0]) / overlay->GetSpacing()[0]; @@ -893,7 +917,7 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) double Zover = (z - overlay->GetOrigin()[2]) / overlay->GetSpacing()[2]; valueOver = this->GetScalarComponentAsDouble(overlay, Xover, Yover, Zover); } - if (mSlicers[slicer]->GetFusionActor() && mSlicers[slicer]->GetFusionActor()->GetVisibility()) { + if (mSlicers[slicer]->GetFusionActor() ) { displayFus = 1; vtkImageData *fusion = dynamic_cast(mSlicers[slicer]->GetFusionMapper()->GetInput()); double Xover = (x - fusion->GetOrigin()[0]) / fusion->GetSpacing()[0]; @@ -906,12 +930,6 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer) emit UpdateVector(displayVec,xVec, yVec, zVec, valueVec); emit UpdateOverlay(displayOver,valueOver,value); emit UpdateFusion(displayFus,valueFus); - for (unsigned int i = 0; i < mSlicers.size(); i++) { - if (mSlicers[i]->GetImageActor()->GetVisibility() == 1) - emit UpdateWindows(i,mSlicers[i]->GetSliceOrientation(),mSlicers[i]->GetSlice()); - else - emit UpdateWindows(i,-1,-1); - } } } //---------------------------------------------------------------------------- @@ -1083,6 +1101,13 @@ void vvSlicerManager::SetColorMap(int colormap) LUT->SetHueRange(0.4,0.80); break; case 3: + if (LUT == NULL) + LUT = vtkLookupTable::New(); + LUT->SetValueRange(0.5,1); + LUT->SetSaturationRange(1,1); + LUT->SetHueRange(0.666,0); + break; + case 4: if (LUT == NULL) LUT = vtkLookupTable::New(); LUT->SetValueRange(0,1); @@ -1103,7 +1128,7 @@ void vvSlicerManager::SetColorMap(int colormap) LUT->Build(); } vtkWindowLevelLookupTable* fusLUT = NULL; - if (mSlicers[0]->GetFusion()) { // && mFusionColorMap != 0) { + if (mSlicers[0]->GetFusion()) { // && mFusionColorMap >= 0) { fusLUT = vtkWindowLevelLookupTable::New(); double fusRange [2]; fusRange[0] = mFusionLevel - mFusionWindow/2; @@ -1126,7 +1151,7 @@ void vvSlicerManager::SetColorMap(int colormap) } else if (mFusionColorMap == 4) fusLUT->SetHueRange(0,1); - else if (mFusionColorMap == 0) + else if (mFusionColorMap <= 0) { fusLUT->SetValueRange(0,1); fusLUT->SetSaturationRange(0,0); @@ -1134,7 +1159,7 @@ void vvSlicerManager::SetColorMap(int colormap) fusLUT->ForceBuild(); - // set color table transparancy + // set color table transparency double alpha_range_end = frange[0] + (double)mFusionThresOpacity*(frange[1] - frange[0])/100; for (double i = frange[0]; i < alpha_range_end; i++) { double v[4]; @@ -1174,8 +1199,8 @@ void vvSlicerManager::SetColorMap(int colormap) } if (mSlicers[i]->GetFusion()) { - mSlicers[i]->GetFusionActor()->SetOpacity(double(mFusionOpacity)/100); mSlicers[i]->GetFusionMapper()->SetLookupTable(fusLUT); + mSlicers[i]->GetFusionActor()->SetOpacity(double(mFusionOpacity)/100); } } if (fusLUT)