X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSlicer.cxx;h=7efaf2675c4caa351f090d1ce2de2a5d3e397972;hb=30133023f12212c84e7b4e9318f1055ec3176af1;hp=0e3b3bf1fe9b870ba1b2be414a1b07d11ddc9282;hpb=6737ce63544c20aba27b1cdecbca1b4e53606691;p=clitk.git diff --git a/vv/vvSlicer.cxx b/vv/vvSlicer.cxx index 0e3b3bf..7efaf26 100644 --- a/vv/vvSlicer.cxx +++ b/vv/vvSlicer.cxx @@ -75,8 +75,8 @@ #include #include #include -#include #if VTK_MAJOR_VERSION >= 6 || (VTK_MAJOR_VERSION >= 5 && VTK_MINOR_VERSION >= 10) +# include # include # include #endif @@ -384,7 +384,7 @@ void vvSlicer::SetImage(vvImage::Pointer image) mImageReslice->GetOutput()->SetUpdateExtent(extent); mImageReslice->GetOutput()->Update(); #else - mImageReslice->SetUpdateExtent(extent); + //mImageReslice->SetUpdateExtent(extent); mImageReslice->Update(); #endif @@ -417,6 +417,7 @@ void vvSlicer::SetOverlay(vvImage::Pointer overlay) mOverlayReslice->SetResliceTransform(mConcatenatedOverlayTransform); #if VTK_MAJOR_VERSION <= 5 mOverlayReslice->SetInput(0, mOverlay->GetFirstVTKImageData()); + mImageReslice->UpdateInformation(); #else mOverlayReslice->SetInputData(0, mOverlay->GetFirstVTKImageData()); #endif @@ -483,6 +484,7 @@ void vvSlicer::SetFusion(vvImage::Pointer fusion, int fusionSequenceCode) mFusionReslice->SetResliceTransform(mConcatenatedFusionTransform); #if VTK_MAJOR_VERSION <= 5 mFusionReslice->SetInput(0, mFusion->GetFirstVTKImageData()); + mFusionReslice->UpdateInformation(); #else mFusionReslice->SetInputData(0, mFusion->GetFirstVTKImageData()); #endif @@ -669,12 +671,24 @@ void vvSlicer::SetLandmarks(vvLandmarks* landmarks) mLandClipper->SetClipFunction(mClipBox); mLandClipper->InsideOutOn(); #if VTK_MAJOR_VERSION <= 5 - mLandClipper->SetInput(mLandmarks->GetOutput()); + mLandmarkTransform = vtkSmartPointer::New(); + mLandmarkTransform->SetInput(mLandmarks->GetOutput()); + mConcatenatedTransform->Identity(); + mConcatenatedTransform->Concatenate(mImage->GetTransform()[0]); + mConcatenatedTransform->Concatenate(mSlicingTransform); + mLandmarkTransform->SetTransform(mConcatenatedTransform->GetInverse()); + mLandClipper->SetInput(mLandmarkTransform->GetOutput()); mLandGlyph->SetSource(mCross->GetOutput()); mLandGlyph->SetInput(mLandClipper->GetOutput()); #else - mLandClipper->SetInputData(mLandmarks->GetOutput()); + mLandmarkTransform = vtkSmartPointer::New(); + mLandmarkTransform->SetInputData(mLandmarks->GetOutput()); + mConcatenatedTransform->Identity(); + mConcatenatedTransform->Concatenate(mImage->GetTransform()[0]); + mConcatenatedTransform->Concatenate(mSlicingTransform); + mLandmarkTransform->SetTransform(mConcatenatedTransform->GetInverse()); + mLandClipper->SetInputConnection(mLandmarkTransform->GetOutputPort()); mLandGlyph->SetSourceConnection(mCross->GetOutputPort()); mLandGlyph->SetInputConnection(mLandClipper->GetOutputPort()); @@ -697,7 +711,6 @@ void vvSlicer::SetLandmarks(vvLandmarks* landmarks) mLandActor->SetPickable(0); mLandActor->SetVisibility(true); this->UpdateDisplayExtent(); - this->GetRenderer()->AddActor(mLandActor); } } //------------------------------------------------------------------------------ @@ -903,9 +916,9 @@ int vvSlicer::GetTSlice() int vvSlicer::GetMaxCurrentTSlice() { int t = mCurrentTSlice; - if(mOverlay) + if(mOverlay && mOverlayActor->GetVisibility()) t = std::max(t, mCurrentOverlayTSlice); - if(mFusion&& (mFusionSequenceCode<0)) //ignore fusionSequence data: for these, the times are not to be related (this way) + if(mFusion&& (mFusionSequenceCode<0) && mFusionActor->GetVisibility()) //ignore fusionSequence data: for these, the times are not to be related (this way) t = std::max(t, mCurrentFusionTSlice); return t; } @@ -1037,6 +1050,9 @@ void vvSlicer::AdjustResliceToSliceOrientation(vtkImageReslice *reslice) reslice->SetOutputOrigin(origin); reslice->SetOutputSpacing(spacing); reslice->UpdateInformation(); +#if VTK_MAJOR_VERSION <= 5 + reslice->GetOutput()->UpdateInformation(); +#endif } //------------------------------------------------------------------------------ @@ -1174,7 +1190,7 @@ void vvSlicer::UpdateDisplayExtent() this->ConvertImageToImageDisplayExtent(input, w_ext, mVF->GetVTKImages()[0], vfExtent); bool out = ClipDisplayedExtent(vfExtent, mVOIFilter->GetInput()->GetWholeExtent()); #else - //this->UpdateInformation(); + mVOIFilter->Update(); this->ConvertImageToImageDisplayExtent(mImageReslice->GetOutputInformation(0), w_ext, mVF->GetVTKImages()[0], vfExtent); bool out = ClipDisplayedExtent(vfExtent, mVOIFilter->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())); #endif @@ -1549,11 +1565,15 @@ void vvSlicer::GetExtremasAroundMousePointer(double & min, double & max, vtkImag if(iLocalExtents[i*2 ]>iLocalExtents[i*2+1]) std::swap(iLocalExtents[i*2], iLocalExtents[i*2+1]); - if(iLocalExtents[i*2]< mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i]) - iLocalExtents[i*2] = mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i]; +#if VTK_MAJOR_VERSION > 5 + for(int j=0;j<2; j++) { + if(iLocalExtents[i*2+j]< mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i]) + iLocalExtents[i*2+j] = mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i]; - if(iLocalExtents[i*2+1]> mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i+1]) - iLocalExtents[i*2+1] = mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i+1]; + if(iLocalExtents[i*2+j]> mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i+1]) + iLocalExtents[i*2+j] = mImageReslice->GetInputInformation()->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT())[2*i+1]; + } +#endif } vtkSmartPointer voiFilter = vtkSmartPointer::New(); @@ -1798,7 +1818,7 @@ void vvSlicer::UpdateCursorPosition() //---------------------------------------------------------------------------- void vvSlicer::RemoveLandmarks() { - vtkPolyData *pd = static_cast(mLandClipper->GetInput()); + vtkPolyData *pd = static_cast(mLandmarks->GetOutput()); if (pd->GetPoints()) { //First remove all captions: @@ -1824,12 +1844,12 @@ void vvSlicer::DisplayLandmarks() mClipBox->SetBounds(bounds); - vtkPolyData *pd = static_cast(mLandClipper->GetInput()); + vtkPolyData *pd = static_cast(mLandmarks->GetOutput()); if (pd->GetPoints()) { + this->GetRenderer()->AddActor(mLandActor); //mLandGlyph->SetRange(0,1); //mLandGlyph->Modified(); //mLandGlyph->Update(); - mClipBox->Modified(); mLandClipper->Update(); mLandMapper->Update();