- }
- else w_ext = input->GetWholeExtent();
-
- switch (this->SliceOrientation)
- {
- case vtkImageViewer2::SLICE_ORIENTATION_XY:
- this->ImageActor->SetDisplayExtent(
- w_ext[0], w_ext[1], w_ext[2], w_ext[3], this->Slice, this->Slice);
- if (mVF && mVFActor->GetVisibility())
- {
- int vfExtent[6];
- ComputeVFDisplayedExtent(w_ext[0], w_ext[1], w_ext[2], w_ext[3], this->Slice, this->Slice,vfExtent);
- mVOIFilter->SetVOI(vfExtent);
- mGlyphFilter->SetOrientation(1,1,0);
- mVFMapper->Update();
- // put the vector field between the image and the camera
- if (Renderer->GetActiveCamera()->GetPosition()[2] > this->Slice)
- mVFActor->SetPosition(0,0,ImageActor->GetBounds()[5]+2);
- else
- mVFActor->SetPosition(0,0,ImageActor->GetBounds()[4]-2);
- }
- if (mOverlay && mOverlayActor->GetVisibility())
- {
- int overExtent[6];
- ComputeOverlayDisplayedExtent(w_ext[0], w_ext[1], w_ext[2], w_ext[3], this->Slice, this->Slice,overExtent);
- mOverlayActor->SetDisplayExtent(overExtent);
- if (Renderer->GetActiveCamera()->GetPosition()[2] > this->Slice)
- mOverlayActor->SetPosition(0,0,1);
- else
- mOverlayActor->SetPosition(0,0,-1);
- }
- if (mFusion && mFusionActor->GetVisibility())
- {
- int fusExtent[6];
- ComputeFusionDisplayedExtent(w_ext[0], w_ext[1], w_ext[2], w_ext[3], this->Slice, this->Slice,fusExtent);
- mFusionActor->SetDisplayExtent(fusExtent);
- if (Renderer->GetActiveCamera()->GetPosition()[2] > this->Slice)
- mFusionActor->SetPosition(0,0,1.5);
- else
- mFusionActor->SetPosition(0,0,-1.5);
- }
- if (mLandActor)
- {
- if (mClipBox)
- {
- double bounds [6];
- bounds[0] = ImageActor->GetBounds()[0];
- bounds[1] = ImageActor->GetBounds()[1];
- bounds[2] = ImageActor->GetBounds()[2];
- bounds[3] = ImageActor->GetBounds()[3];
- bounds[4] = ImageActor->GetBounds()[4]-(0.9/this->GetInput()->GetSpacing()[2]);
- bounds[5] = ImageActor->GetBounds()[5]+(0.9/this->GetInput()->GetSpacing()[2]);
- mClipBox->SetBounds(bounds);
- UpdateLandmarks();
- }
- if (Renderer->GetActiveCamera()->GetPosition()[2] > this->Slice)
- mLandActor->SetPosition(0,0,1.5);
- else
- mLandActor->SetPosition(0,0,-1.5);
- }
- break;
-
- case vtkImageViewer2::SLICE_ORIENTATION_XZ:
- this->ImageActor->SetDisplayExtent(
- w_ext[0], w_ext[1], this->Slice, this->Slice, w_ext[4], w_ext[5]);
- if (mVF && mVFActor->GetVisibility())
- {
- int vfExtent[6];
- ComputeVFDisplayedExtent(w_ext[0], w_ext[1], this->Slice, this->Slice, w_ext[4], w_ext[5],vfExtent);
- mVOIFilter->SetVOI(vfExtent);
- mGlyphFilter->SetOrientation(1,0,1);
- mVFMapper->Update();
- // put the vector field between the image aSpacingnd the camera
- if (Renderer->GetActiveCamera()->GetPosition()[1] > this->Slice)
- mVFActor->SetPosition(0,ImageActor->GetBounds()[3]+2,0);
- else
- mVFActor->SetPosition(0,ImageActor->GetBounds()[2]-2,0);
- }
- if (mOverlay && mOverlayActor->GetVisibility())
- {
- int overExtent[6];
- ComputeOverlayDisplayedExtent(w_ext[0], w_ext[1], this->Slice, this->Slice, w_ext[4], w_ext[5],overExtent);
- mOverlayActor->SetDisplayExtent(overExtent);
- if (Renderer->GetActiveCamera()->GetPosition()[1] > this->Slice)
- mOverlayActor->SetPosition(0,1,0);
- else
- mOverlayActor->SetPosition(0,-1,0);
- }
- if (mFusion && mFusionActor->GetVisibility())
- {
- int fusExtent[6];
- ComputeFusionDisplayedExtent(w_ext[0], w_ext[1], this->Slice, this->Slice, w_ext[4], w_ext[5],fusExtent);
- mFusionActor->SetDisplayExtent(fusExtent);
- if (Renderer->GetActiveCamera()->GetPosition()[1] > this->Slice)
- mFusionActor->SetPosition(0,1.5,0);
- else
- mFusionActor->SetPosition(0,-1.5,0);
- }
- if (mLandActor)
- {
- if (mClipBox)
- {
- double bounds [6];
- bounds[0] = ImageActor->GetBounds()[0];
- bounds[1] = ImageActor->GetBounds()[1];
- bounds[2] = ImageActor->GetBounds()[2]-(0.5/this->GetInput()->GetSpacing()[1]);
- bounds[3] = ImageActor->GetBounds()[3]+(0.5/this->GetInput()->GetSpacing()[1]);
- bounds[4] = ImageActor->GetBounds()[4];
- bounds[5] = ImageActor->GetBounds()[5];
- mClipBox->SetBounds(bounds);
- UpdateLandmarks();
- }
- if (Renderer->GetActiveCamera()->GetPosition()[1] > this->Slice)
- mLandActor->SetPosition(0,1.5,0);
- else
- mLandActor->SetPosition(0,-1.5,0);
- }
- break;
-
- case vtkImageViewer2::SLICE_ORIENTATION_YZ:
- this->ImageActor->SetDisplayExtent(
- this->Slice, this->Slice, w_ext[2], w_ext[3], w_ext[4], w_ext[5]);
- if (mVF && mVFActor->GetVisibility())
- {
- int vfExtent[6];
- ComputeVFDisplayedExtent(this->Slice, this->Slice, w_ext[2], w_ext[3], w_ext[4], w_ext[5],vfExtent);
- mVOIFilter->SetVOI(vfExtent);
- mGlyphFilter->SetOrientation(0,1,1);
- mVFMapper->Update();
- // put the vector field between the image and the camera
- if (Renderer->GetActiveCamera()->GetPosition()[0] > this->Slice)
- mVFActor->SetPosition(ImageActor->GetBounds()[1]+2,0,0);
- else
- mVFActor->SetPosition(ImageActor->GetBounds()[0]-2,0,0);
- }
- if (mOverlay && mOverlayActor->GetVisibility())
- {
- int overExtent[6];
- ComputeOverlayDisplayedExtent(this->Slice, this->Slice, w_ext[2], w_ext[3], w_ext[4], w_ext[5],overExtent);
- mOverlayActor->SetDisplayExtent(overExtent);
- if (Renderer->GetActiveCamera()->GetPosition()[0] > this->Slice)
- mOverlayActor->SetPosition(1,0,0);
- else
- mOverlayActor->SetPosition(-1,0,0);
- }
- if (mFusion && mFusionActor->GetVisibility())
- {
- int fusExtent[6];
- ComputeFusionDisplayedExtent(this->Slice, this->Slice, w_ext[2], w_ext[3], w_ext[4], w_ext[5],fusExtent);
- mFusionActor->SetDisplayExtent(fusExtent);
- if (Renderer->GetActiveCamera()->GetPosition()[0] > this->Slice)
- mFusionActor->SetPosition(1.5,0,0);
- else
- mFusionActor->SetPosition(-1.5,0,0);
- }
- if (mLandActor)
- {
- if (mClipBox)
- {
- double bounds [6];
- bounds[0] = ImageActor->GetBounds()[0]-(0.5/this->GetInput()->GetSpacing()[0]);
- bounds[1] = ImageActor->GetBounds()[1]+(0.5/this->GetInput()->GetSpacing()[0]);
- bounds[2] = ImageActor->GetBounds()[2];
- bounds[3] = ImageActor->GetBounds()[3];
- bounds[4] = ImageActor->GetBounds()[4];
- bounds[5] = ImageActor->GetBounds()[5];
- mClipBox->SetBounds(bounds);
- UpdateLandmarks();
- }
- if (Renderer->GetActiveCamera()->GetPosition()[0] > this->Slice)
- mLandActor->SetPosition(1.5,0,0);
- else
- mLandActor->SetPosition(-1.5,0,0);
- }
- break;
- }
-
- // Figure out the correct clipping range
-
- if (this->Renderer)
- {
- if (this->InteractorStyle &&
- this->InteractorStyle->GetAutoAdjustCameraClippingRange())
- {
- this->Renderer->ResetCameraClippingRange();
- }
- else
- {
- vtkCamera *cam = this->Renderer->GetActiveCamera();
- if (cam)
- {
- double bounds[6];
- this->ImageActor->GetBounds(bounds);
- double spos = (double)bounds[this->SliceOrientation * 2];
- double cpos = (double)cam->GetPosition()[this->SliceOrientation];
- double range = fabs(spos - cpos);
- double *spacing = input->GetSpacing();
- double avg_spacing =
- ((double)spacing[0] + (double)spacing[1] + (double)spacing[2]) / 3.0;
- cam->SetClippingRange(
- range - avg_spacing * 3.0, range + avg_spacing * 3.0);
- }
- }
- }