]> Creatis software - clitk.git/blobdiff - vv/vvSlicerManager.cxx
Replace || by &&
[clitk.git] / vv / vvSlicerManager.cxx
index 1daee2c666332458ffba9e6f722d31c5b8f7c1f9..c3f5c0c4bc2d278dfc03ebfb15045f2a2315a7bf 100644 (file)
@@ -50,7 +50,7 @@ vvSlicerManager::vvSlicerManager(int numberOfSlicers)
   mFusionName = "";
   mVFId = "";
   mLastError = "";
-  mType = UNDEFINEDIMAGETYPE;
+  mType = vvImageReader::UNDEFINEDIMAGETYPE;
   mColorMap = 0;
   mPreset = 0;
   mOverlayColor = 130;
@@ -123,7 +123,7 @@ void vvSlicerManager::ToggleContourSuperposition()
 
 
 //----------------------------------------------------------------------------
-bool vvSlicerManager::SetImage(std::string filename, LoadedImageType type, int n, unsigned int slice)
+bool vvSlicerManager::SetImage(std::string filename, vvImageReader::LoadedImageType type, int n, unsigned int slice)
 {
   mType = type;
   if (mReader.IsNull())
@@ -169,15 +169,15 @@ void vvSlicerManager::SetImage(vvImage::Pointer image)
 
 
 //----------------------------------------------------------------------------
-bool vvSlicerManager::SetImages(std::vector<std::string> filenames,LoadedImageType type, int n)
+bool vvSlicerManager::SetImages(std::vector<std::string> filenames, vvImageReader::LoadedImageType type, int n)
 {
   mType = type;
   std::string fileWithoutExtension = vtksys::SystemTools::GetFilenameWithoutExtension(filenames[0]);
-  if (type == DICOM)
+  if (type == vvImageReader::DICOM)
     fileWithoutExtension += "_dicom";
-  else if (type == MERGED)
+  else if (type == vvImageReader::MERGED)
     fileWithoutExtension += "_merged";
-  else if (type == MERGEDWITHTIME)
+  else if (type == vvImageReader::MERGEDWITHTIME)
     fileWithoutExtension += "_merged_wt";
 
   mFileName = vtksys::SystemTools::GetFilenameName(mFileName);
@@ -273,7 +273,7 @@ bool vvSlicerManager::SetVF(std::string filename)
   if (mVectorReader.IsNull())
     mVectorReader = vvImageReader::New();
   mVectorReader->SetInputFilename(filename);
-  mVectorReader->Update(VECTORFIELD);
+  mVectorReader->Update(vvImageReader::VECTORFIELD);
   if (mVectorReader->GetLastError().size() != 0) {
     mLastError = mVectorReader->GetLastError();
     return false;
@@ -518,26 +518,21 @@ void vvSlicerManager::UpdateViews(int current,int slicer)
 
     switch (mSlicers[slicer]->GetSliceOrientation()) {
     case vtkImageViewer2::SLICE_ORIENTATION_XY:
-      if (mSlicers[slicer]->GetSlice() == (int)floor(z))
-        mSlicers[slicer]->Render();
-      else
+      if (mSlicers[slicer]->GetSlice() != (int)floor(z))
         mSlicers[slicer]->SetSlice((int)floor(z));
       break;
 
     case vtkImageViewer2::SLICE_ORIENTATION_XZ:
-      if (mSlicers[slicer]->GetSlice() == (int)floor(y))
-        mSlicers[slicer]->Render();
-      else
+      if (mSlicers[slicer]->GetSlice() != (int)floor(y))
         mSlicers[slicer]->SetSlice((int)floor(y));
       break;
 
     case vtkImageViewer2::SLICE_ORIENTATION_YZ:
-      if (mSlicers[slicer]->GetSlice() == (int)floor(x))
-        mSlicers[slicer]->Render();
-      else
+      if (mSlicers[slicer]->GetSlice() != (int)floor(x))
         mSlicers[slicer]->SetSlice((int)floor(x));
       break;
     }
+    mSlicers[slicer]->Render();
 
     for ( unsigned int i = 0; i < mSlicers.size(); i++) {
       if (i != (unsigned int)slicer && mSlicers[i]->GetImageActor()->GetVisibility()
@@ -557,26 +552,23 @@ void vvSlicerManager::UpdateViews(int current,int slicer)
         }
         switch (mSlicers[i]->GetSliceOrientation()) {
         case vtkImageViewer2::SLICE_ORIENTATION_XY:
-          if (mSlicers[i]->GetSlice() == (int)floor(z))
-            mSlicers[i]->Render();
-          else
+          if (mSlicers[i]->GetSlice() != (int)floor(z))
             mSlicers[i]->SetSlice((int)floor(z));
           break;
 
         case vtkImageViewer2::SLICE_ORIENTATION_XZ:
-          if (mSlicers[i]->GetSlice() == (int)floor(y))
-            mSlicers[i]->Render();
-          else
+          if (mSlicers[i]->GetSlice() != (int)floor(y))
             mSlicers[i]->SetSlice((int)floor(y));
           break;
 
         case vtkImageViewer2::SLICE_ORIENTATION_YZ:
-          if (mSlicers[i]->GetSlice() == (int)floor(x))
-            mSlicers[i]->Render();
-          else
+          if (mSlicers[i]->GetSlice() != (int)floor(x))
             mSlicers[i]->SetSlice((int)floor(x));
           break;
         }
+        
+        mSlicers[i]->Render();
+        
         UpdateSlice(i);
         UpdateTSlice(i);
       }
@@ -612,29 +604,29 @@ void vvSlicerManager::UpdateLinked(int slicer)
 //----------------------------------------------------------------------------
 
 //----------------------------------------------------------------------------
-void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *slicer, bool bPropagate)
+void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *refSlicer, bool bPropagate)
 {
+  vtkCamera *refCam = refSlicer->GetRenderer()->GetActiveCamera();
+  double refPosition[3], refFocal[3];
+  refCam->GetPosition(refPosition);
+  refCam->GetFocalPoint(refFocal);
+  
   for ( unsigned int i = 0; i < mSlicers.size(); i++) {
-    vtkCamera *camera = mSlicers[i]     ->GetRenderer()->GetActiveCamera();
-    vtkCamera *refCam = slicer->GetRenderer()->GetActiveCamera();
+    vtkCamera *camera = mSlicers[i]->GetRenderer()->GetActiveCamera();
     camera->SetParallelScale(refCam->GetParallelScale());
 
     double position[3], focal[3];
     camera->GetPosition(position);
     camera->GetFocalPoint(focal);
 
-    double refPosition[3], refFocal[3];
-    refCam->GetPosition(refPosition);
-    refCam->GetFocalPoint(refFocal);
-
-    if(slicer->GetSliceOrientation()==mSlicers[i]->GetSliceOrientation()) {
+    if(refSlicer->GetSliceOrientation()==mSlicers[i]->GetSliceOrientation()) {
       for(int i=0; i<3; i++) {
         position[i] = refPosition[i];
         focal[i]    = refFocal[i];
       }
     }
 
-    if(slicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XY) {
+    if(refSlicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XY) {
       if(mSlicers[i]->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XZ) {
         position[0] = refPosition[0];
         focal[0]    = refFocal[0];
@@ -645,7 +637,7 @@ void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *slicer, bool bPropagate)
       }
     }
 
-    if(slicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XZ) {
+    if(refSlicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XZ) {
       if(mSlicers[i]->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_YZ) {
         position[2] = refPosition[2];
         focal[2]    = refFocal[2];
@@ -656,7 +648,7 @@ void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *slicer, bool bPropagate)
       }
     }
 
-    if(slicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_YZ) {
+    if(refSlicer->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_YZ) {
       if(mSlicers[i]->GetSliceOrientation()==vtkImageViewer2::SLICE_ORIENTATION_XY) {
         position[1] = refPosition[1];
         focal[1]    = refFocal[1];
@@ -677,7 +669,7 @@ void vvSlicerManager::UpdateLinkedNavigation(vvSlicer *slicer, bool bPropagate)
   Render();
   if(bPropagate)
     for (std::list<std::string>::const_iterator i = mLinkedId.begin(); i != mLinkedId.end(); i++)
-      emit UpdateLinkedNavigation(*i, this);
+      emit UpdateLinkedNavigation(*i, this, refSlicer);
 }
 //----------------------------------------------------------------------------
 
@@ -759,7 +751,7 @@ void vvSlicerManager::ReloadOverlay()
 //----------------------------------------------------------------------------
 void vvSlicerManager::ReloadVF()
 {
-  mVectorReader->Update(VECTORFIELD); //deletes the old images through the VF::Init() function
+  mVectorReader->Update(vvImageReader::VECTORFIELD); //deletes the old images through the VF::Init() function
   mVF=mVectorReader->GetOutput();
   for ( unsigned int i = 0; i < mSlicers.size(); i++) {
     mSlicers[i]->SetVF(mVF);
@@ -854,37 +846,19 @@ void vvSlicerManager::UpdateInfoOnCursorPosition(int slicer)
     }
     if (mSlicers[slicer]->GetOverlayActor() && mSlicers[slicer]->GetOverlayActor()->GetVisibility()) {
       displayOver = 1;
-      double Xover = (x - mSlicers[slicer]->GetOverlay()->GetOrigin()[0])
-        /mSlicers[slicer]->GetOverlay()->GetSpacing()[0];
-      double Yover = (y - mSlicers[slicer]->GetOverlay()->GetOrigin()[1])
-        /mSlicers[slicer]->GetOverlay()->GetSpacing()[1];
-      double Zover = (z - mSlicers[slicer]->GetOverlay()->GetOrigin()[2])
-        /mSlicers[slicer]->GetOverlay()->GetSpacing()[2];
-      if (Xover >= mSlicers[slicer]->GetOverlayMapper()->GetInput()->GetWholeExtent()[0] &&
-          Xover <= mSlicers[slicer]->GetOverlayMapper()->GetInput()->GetWholeExtent()[1] &&
-          Yover >= mSlicers[slicer]->GetOverlayMapper()->GetInput()->GetWholeExtent()[2] &&
-          Yover <= mSlicers[slicer]->GetOverlayMapper()->GetInput()->GetWholeExtent()[3] &&
-          Zover >= mSlicers[slicer]->GetOverlayMapper()->GetInput()->GetWholeExtent()[4] &&
-          Zover <= mSlicers[slicer]->GetOverlayMapper()->GetInput()->GetWholeExtent()[5]) {
-        valueOver = this->GetScalarComponentAsDouble(static_cast<vtkImageData*>(mSlicers[slicer]->GetOverlayMapper()->GetInput()), Xover, Yover, Zover);
-      }
+      vtkImageData *overlay = dynamic_cast<vtkImageData*>(mSlicers[slicer]->GetOverlayMapper()->GetInput());
+      double Xover = (x - overlay->GetOrigin()[0]) / overlay->GetSpacing()[0];
+      double Yover = (y - overlay->GetOrigin()[1]) / overlay->GetSpacing()[1];
+      double Zover = (z - overlay->GetOrigin()[2]) / overlay->GetSpacing()[2];
+      valueOver = this->GetScalarComponentAsDouble(overlay, Xover, Yover, Zover);
     }
     if (mSlicers[slicer]->GetFusionActor() && mSlicers[slicer]->GetFusionActor()->GetVisibility()) {
       displayFus = 1;
-      double Xfus = (x - mSlicers[slicer]->GetFusion()->GetOrigin()[0])
-        /mSlicers[slicer]->GetFusion()->GetSpacing()[0];
-      double Yfus = (y - mSlicers[slicer]->GetFusion()->GetOrigin()[1])
-        /mSlicers[slicer]->GetFusion()->GetSpacing()[1];
-      double Zfus = (z - mSlicers[slicer]->GetFusion()->GetOrigin()[2])
-        /mSlicers[slicer]->GetFusion()->GetSpacing()[2];
-      if (Xfus >= mSlicers[slicer]->GetFusionMapper()->GetInput()->GetWholeExtent()[0] &&
-          Xfus <= mSlicers[slicer]->GetFusionMapper()->GetInput()->GetWholeExtent()[1] &&
-          Yfus >= mSlicers[slicer]->GetFusionMapper()->GetInput()->GetWholeExtent()[2] &&
-          Yfus <= mSlicers[slicer]->GetFusionMapper()->GetInput()->GetWholeExtent()[3] &&
-          Zfus >= mSlicers[slicer]->GetFusionMapper()->GetInput()->GetWholeExtent()[4] &&
-          Zfus <= mSlicers[slicer]->GetFusionMapper()->GetInput()->GetWholeExtent()[5]) {
-        valueFus = this->GetScalarComponentAsDouble(static_cast<vtkImageData*>(mSlicers[slicer]->GetFusionMapper()->GetInput()), Xfus, Yfus, Zfus);
-      }
+      vtkImageData *fusion = dynamic_cast<vtkImageData*>(mSlicers[slicer]->GetFusionMapper()->GetInput());
+      double Xover = (x - fusion->GetOrigin()[0]) / fusion->GetSpacing()[0];
+      double Yover = (y - fusion->GetOrigin()[1]) / fusion->GetSpacing()[1];
+      double Zover = (z - fusion->GetOrigin()[2]) / fusion->GetSpacing()[2];
+      valueFus = this->GetScalarComponentAsDouble(fusion, Xover, Yover, Zover);
     }
     emit UpdatePosition(mSlicers[slicer]->GetCursorVisibility(),
                         x,y,z,X,Y,Z,value);