- switch (i)
- {
- case 0:
- if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[0] > mSlice)
- {
- mSquaresActor->SetPosition(1,0,0);
- // mSquaresActor2->SetPosition(1,0,0);
- }
- else
- {
- mSquaresActor->SetPosition(-1,0,0);
- // mSquaresActor2->SetPosition(-1,0,0);
- }
- break;
- case 2:
- if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[1] > mSlice)
- {
- mSquaresActor->SetPosition(0,1,0);
- // mSquaresActor2->SetPosition(0,1,0);
- }
- else
- {
- mSquaresActor->SetPosition(0,-1,0);
- // mSquaresActor2->SetPosition(0,-1,0);
- }
- break;
- case 4:
- if (mSlicer->GetRenderer()->GetActiveCamera()->GetPosition()[2] > mSlice)
- {
- mSquaresActor->SetPosition(0,0,1);
- // mSquaresActor2->SetPosition(0,0,1);
- }
- else
- {
- mSquaresActor->SetPosition(0,0,-1);
- // mSquaresActor2->SetPosition(0,0,-1);
- }
- break;
+ if (mHiddenImageIsUsed)
+ mClipper->SetInput(mHiddenImage->GetVTKImages()[0]);
+ else
+ mClipper->SetInput(mSlicer->GetImage()->GetVTKImages()[numImage]);
+ mSquares->SetInput(mClipper->GetOutput());
+ mSquaresMapper->SetInput(mSquares->GetOutput());
+ mSquaresMapper->ScalarVisibilityOff();
+ mSquaresActor->SetMapper(mSquaresMapper);
+ mSquaresActor->GetProperty()->SetColor(1.0,0,0);
+ mSquaresActor->SetPickable(0);
+ mSquaresActor->VisibilityOff();
+ mSlicer->GetRenderer()->AddActor(mSquaresActor);
+}
+//------------------------------------------------------------------------------
+
+
+//------------------------------------------------------------------------------
+void vvImageContour::updateActor(vtkActor * actor,
+ vtkMarchingSquares * squares,
+ vtkImageClip * clipper,
+ double threshold, int orientation, int slice) {
+
+ // Set parameter for the MarchigSquare
+ squares->SetValue(0, threshold);
+
+ // Get image extent
+ int* extent = mSlicer->GetImageActor()->GetDisplayExtent();
+
+ // Change extent if needed
+ int* extent2;
+ if (mHiddenImageIsUsed) {
+ extent2 = new int[6];
+ int * extent3;
+ extent3 = mHiddenImage->GetFirstVTKImageData()->GetExtent();
+ for(int i=0; i<6; i++) extent2[i] = extent3[i];
+
+ double s = (double)extent[orientation*2]*(double)mSlicer->GetImage()->GetSpacing()[orientation]; // in mm
+ s = s+mSlicer->GetImage()->GetOrigin()[orientation]; // from origin
+ s = s-mHiddenImage->GetFirstVTKImageData()->GetOrigin()[orientation]; // from corner second image
+ s = s/mHiddenImage->GetFirstVTKImageData()->GetSpacing()[orientation]; // in voxel
+
+ if (s == floor(s)) {
+ extent2[orientation*2] = extent2[orientation*2+1] = (int)floor(s);
+ }
+ else {
+ extent2[orientation*2] = (int)floor(s);
+ extent2[orientation*2+1] = extent2[orientation*2];