Browse Source

Fix VTK 6 support

Fix build on Windows
Fix vtkLightBoxRendererManager
Julien Finet 11 years ago
parent
commit
dedb93a77d

+ 8 - 1
Libs/Visualization/VTK/Core/CMakeLists.txt

@@ -83,11 +83,18 @@ if(${VTK_VERSION_MAJOR} GREATER 5)
     vtkInteractionStyle
     vtkRenderingAnnotation
     vtkRenderingCore
-    vtkRenderingFreeTypeFontConfig
     vtkRenderingFreeTypeOpenGL
     vtkRenderingOpenGL
     vtkTestingRendering
     )
+  if (UNIX AND NOT APPLE)
+    find_package(FontConfig QUIET)
+    if (FONTCONFIG_FOUND)
+      list(APPEND VTK_LIBRARIES
+        vtkRenderingFreeTypeFontConfig
+        )
+    endif()
+  endif()
 else()
   set(VTK_LIBRARIES
     vtkCommon

+ 5 - 5
Libs/Visualization/VTK/Core/Testing/Cpp/vtkLightBoxRendererManagerTest1.cpp

@@ -62,11 +62,11 @@ int vtkLightBoxRendererManagerTest1(int argc, char* argv[])
 
   // Read image
   imageReader->SetFileName(imageFilename);
-  imageReader->Update();
 #if (VTK_MAJOR_VERSION <= 5)
-  vtkSmartPointer<vtkImageData> image = imageReader->GetOutput();
+  imageReader->Update();
+  vtkImageData* image = imageReader->GetOutput();
 #else
-  vtkSmartPointer<vtkAlgorithmOutput> imagePort = imageReader->GetOutputPort();
+  vtkAlgorithmOutput* imagePort = imageReader->GetOutputPort();
 #endif
 
   //----------------------------------------------------------------------------
@@ -175,14 +175,14 @@ int vtkLightBoxRendererManagerTest1(int argc, char* argv[])
 #if (VTK_MAJOR_VERSION <= 5)
   lightBoxRendererManager->SetImageData(image);
 #else
-  lightBoxRendererManager->SetImageDataPort(imagePort);
+  lightBoxRendererManager->SetImageDataConnection(imagePort);
 #endif
   if (mtime != lightBoxRendererManager->GetMTime())
     {
 #if (VTK_MAJOR_VERSION <= 5)
     std::cerr << "line " << __LINE__ << " - Problem with SetImageData()" << std::endl;
 #else
-    std::cerr << "line " << __LINE__ << " - Problem with SetImageDataPort()" << std::endl;
+    std::cerr << "line " << __LINE__ << " - Problem with SetImageDataConnection()" << std::endl;
 #endif
     return EXIT_FAILURE;
     }

+ 45 - 27
Libs/Visualization/VTK/Core/vtkLightBoxRendererManager.cpp

@@ -76,6 +76,7 @@ public:
   vtkSmartPointer<vtkRenderer>                Renderer;
   vtkSmartPointer<vtkImageMapper>             ImageMapper;
   vtkSmartPointer<vtkActor2D>                 HighlightedBoxActor;
+  vtkSmartPointer<vtkActor2D>                 ImageActor;
 };
 }
 
@@ -127,12 +128,12 @@ void RenderWindowItem::SetupImageMapperActor(double colorWindow, double colorLev
   this->ImageMapper->SetColorLevel(colorLevel);
 
   // .. and its corresponding 2D actor
-  vtkNew<vtkActor2D> actor2D;
-  actor2D->SetMapper(this->ImageMapper);
-  actor2D->GetProperty()->SetDisplayLocationToBackground();
+  this->ImageActor = vtkSmartPointer<vtkActor2D>::New();
+  this->ImageActor->SetMapper(this->ImageMapper);
+  this->ImageActor->GetProperty()->SetDisplayLocationToBackground();
 
   // .. and add it to the renderer
-  this->Renderer->AddActor2D(actor2D.GetPointer());
+  //this->Renderer->AddActor2D(this->ImageActor.GetPointer());
 }
 
 //---------------------------------------------------------------------------
@@ -212,7 +213,7 @@ void RenderWindowItem::SetupHighlightedBoxActor(const double highlightedBoxColor
   this->HighlightedBoxActor->GetProperty()->SetLineWidth(1.0f);
   this->HighlightedBoxActor->SetVisibility(visible);
 
-  this->Renderer->AddActor2D(this->HighlightedBoxActor);
+  //this->Renderer->AddActor2D(this->HighlightedBoxActor);
 }
 
 //-----------------------------------------------------------------------------
@@ -236,6 +237,7 @@ public:
 
   /// Update render window ImageMapper Z slice according to \a layoutType
   void updateRenderWindowItemsZIndex(int layoutType);
+  void SetItemInput(RenderWindowItem* item);
 
   vtkSmartPointer<vtkRenderWindow>              RenderWindow;
   int                                           RenderWindowRowCount;
@@ -250,7 +252,7 @@ public:
 #if (VTK_MAJOR_VERSION <= 5)
   vtkWeakPointer<vtkImageData>                  ImageData;
 #else
-  vtkWeakPointer<vtkAlgorithmOutput>            ImageDataPort;
+  vtkWeakPointer<vtkAlgorithmOutput>            ImageDataConnection;
 #endif
   double                                        ColorWindow;
   double                                        ColorLevel;
@@ -394,6 +396,29 @@ void vtkLightBoxRendererManager::vtkInternal::updateRenderWindowItemsZIndex(int
     }
 }
 
+
+// --------------------------------------------------------------------------
+void vtkLightBoxRendererManager::vtkInternal
+::SetItemInput(RenderWindowItem* item)
+{
+#if (VTK_MAJOR_VERSION <= 5)
+  item->ImageMapper->SetInput(this->ImageData);
+#else
+  item->ImageMapper->SetInputConnection(this->ImageDataConnection);
+  bool hasViewProp = item->Renderer->HasViewProp(item->ImageActor);
+  if (!this->ImageDataConnection && hasViewProp)
+    {
+    item->Renderer->RemoveViewProp(item->ImageActor);
+    item->Renderer->RemoveViewProp(item->HighlightedBoxActor);
+    }
+  else if (this->ImageDataConnection && !hasViewProp)
+    {
+    item->Renderer->AddActor2D(item->ImageActor);
+    item->Renderer->AddActor2D(item->HighlightedBoxActor);
+    }
+#endif
+}
+
 //---------------------------------------------------------------------------
 // vtkLightBoxRendererManager methods
 
@@ -469,7 +494,7 @@ bool vtkLightBoxRendererManager::IsInitialized()
 #if (VTK_MAJOR_VERSION <= 5)
 void vtkLightBoxRendererManager::SetImageData(vtkImageData* newImageData)
 #else
-void vtkLightBoxRendererManager::SetImageDataPort(vtkAlgorithmOutput* newImageDataPort)
+void vtkLightBoxRendererManager::SetImageDataConnection(vtkAlgorithmOutput* newImageDataConnection)
 #endif
 {
   if (!this->IsInitialized())
@@ -477,37 +502,34 @@ void vtkLightBoxRendererManager::SetImageDataPort(vtkAlgorithmOutput* newImageDa
 #if (VTK_MAJOR_VERSION <= 5)
     vtkErrorMacro(<< "SetImageData failed - vtkLightBoxRendererManager is NOT initialized");
 #else
-    vtkErrorMacro(<< "SetImageDataPort failed - vtkLightBoxRendererManager is NOT initialized");
+    vtkErrorMacro(<< "SetImageDataConnection failed - vtkLightBoxRendererManager is NOT initialized");
 #endif
     return;
     }
+
+#if (VTK_MAJOR_VERSION <= 5)
+  this->Internal->ImageData = newImageData;
+#else
+  this->Internal->ImageDataConnection = newImageDataConnection;
+#endif
+
   vtkInternal::RenderWindowItemListIt it;
   for(it = this->Internal->RenderWindowItemList.begin();
       it != this->Internal->RenderWindowItemList.end();
       ++it)
     {
-#if (VTK_MAJOR_VERSION <= 5)
-    (*it)->ImageMapper->SetInput(newImageData);
-#else
-    (*it)->ImageMapper->SetInputConnection(newImageDataPort);
-#endif
+    this->Internal->SetItemInput(*it);
     }
 
 #if (VTK_MAJOR_VERSION <= 5)
   if (newImageData)
 #else
-  if (newImageDataPort)
+  if (newImageDataConnection)
 #endif
     {
     this->Internal->updateRenderWindowItemsZIndex(this->Internal->RenderWindowLayoutType);
     }
 
-#if (VTK_MAJOR_VERSION <= 5)
-  this->Internal->ImageData = newImageData;
-#else
-  this->Internal->ImageDataPort = newImageDataPort;
-#endif
-
   this->Modified();
 }
 
@@ -609,7 +631,7 @@ void vtkLightBoxRendererManager::SetRenderWindowLayoutType(int layoutType)
 #if (VTK_MAJOR_VERSION <= 5)
   if (this->Internal->ImageData)
 #else
-  if (this->Internal->ImageDataPort)
+  if (this->Internal->ImageDataConnection)
 #endif
     {
     this->Internal->updateRenderWindowItemsZIndex(layoutType);
@@ -661,11 +683,7 @@ void vtkLightBoxRendererManager::SetRenderWindowLayout(int rowCount, int columnC
                                this->Internal->HighlightedBoxColor,
                                this->Internal->ColorWindow, this->Internal->ColorLevel);
       item->Renderer->SetLayer(this->Internal->RendererLayer);
-#if VTK_MAJOR_VERSION <= 5
-      item->ImageMapper->SetInput(this->Internal->ImageData);
-#else
-      item->ImageMapper->SetInputConnection(this->Internal->ImageDataPort);
-#endif
+      this->Internal->SetItemInput(item);
       this->Internal->RenderWindowItemList.push_back(item);
       --extraItem;
       }
@@ -691,7 +709,7 @@ void vtkLightBoxRendererManager::SetRenderWindowLayout(int rowCount, int columnC
 #if (VTK_MAJOR_VERSION <= 5)
   if (this->Internal->ImageData)
 #else
-  if (this->Internal->ImageDataPort)
+  if (this->Internal->ImageDataConnection)
 #endif
     {
     this->Internal->updateRenderWindowItemsZIndex(this->Internal->RenderWindowLayoutType);

+ 1 - 1
Libs/Visualization/VTK/Core/vtkLightBoxRendererManager.h

@@ -56,7 +56,7 @@ class CTK_VISUALIZATION_VTK_CORE_EXPORT vtkLightBoxRendererManager : public vtkO
 #if (VTK_MAJOR_VERSION <= 5)
   void SetImageData(vtkImageData* newImageData);
 #else
-  void SetImageDataPort(vtkAlgorithmOutput* newImageDataPort);
+  void SetImageDataConnection(vtkAlgorithmOutput* newImageDataConnection);
 #endif
 
   /// Get active camera

+ 0 - 10
Libs/Visualization/VTK/Widgets/CMakeLists.txt

@@ -97,22 +97,12 @@ set(KIT_resources
 if(${VTK_VERSION_MAJOR} GREATER 5)
   set(VTK_LIBRARIES
     vtkChartsCore
-    vtkCommonCore
-    vtkCommonDataModel
     vtkCommonMath
-    vtkCommonSystem
     vtkFiltersSources
-    vtkIOImage
     vtkImagingGeneral
     vtkImagingStatistics
-    vtkInteractionStyle
     vtkInteractionWidgets
-    vtkRenderingAnnotation
     vtkRenderingContext2D
-    vtkRenderingCore
-    vtkRenderingFreeTypeFontConfig
-    vtkRenderingFreeTypeOpenGL
-    vtkRenderingOpenGL
     vtkViewsContext2D
     vtkWrappingPythonCore
     vtkGUISupportQt

+ 4 - 4
Libs/Visualization/VTK/Widgets/Testing/Cpp/ctkVTKMagnifyViewTest2.cpp

@@ -258,7 +258,7 @@ int ctkVTKMagnifyViewTest2(int argc, char * argv [] )
 #if (VTK_MAJOR_VERSION <= 5)
     allSliceViews[i]->setImageData(image);
 #else
-    allSliceViews[i]->setImageDataPort(imagePort);
+    allSliceViews[i]->setImageDataConnection(imagePort);
 #endif
     allSliceViews[i]->setHighlightedBoxColor(Qt::yellow);
     allSliceViews[i]->scheduleRender();
@@ -392,7 +392,7 @@ int ctkVTKMagnifyViewTest2(int argc, char * argv [] )
 #if (VTK_MAJOR_VERSION <= 5)
   allSliceViews[0]->setImageData(gaussian->GetOutput());
 #else
-  allSliceViews[0]->setImageDataPort(gaussian->GetOutputPort());
+  allSliceViews[0]->setImageDataConnection(gaussian->GetOutputPort());
 #endif
   allSliceViews[0]->scheduleRender();
   if (!runBaselineTest(time, app, magnify, allSliceViews[0], true,
@@ -423,7 +423,7 @@ int ctkVTKMagnifyViewTest2(int argc, char * argv [] )
 #if (VTK_MAJOR_VERSION <= 5)
   allSliceViews[0]->setImageData(gaussian->GetOutput());
 #else
-  allSliceViews[0]->setImageDataPort(gaussian->GetOutputPort());
+  allSliceViews[0]->setImageDataConnection(gaussian->GetOutputPort());
 #endif
   allSliceViews[0]->scheduleRender();
   if (!runBaselineTest(time, app, magnify, allSliceViews[0], true,
@@ -439,7 +439,7 @@ int ctkVTKMagnifyViewTest2(int argc, char * argv [] )
 #if (VTK_MAJOR_VERSION <= 5)
   allSliceViews[0]->setImageData(image);
 #else
-  allSliceViews[0]->setImageDataPort(imagePort);
+  allSliceViews[0]->setImageDataConnection(imagePort);
 #endif
   allSliceViews[0]->scheduleRender();
   QCursor::setPos(insideSlice0bottomRightCorner);

+ 2 - 2
Libs/Visualization/VTK/Widgets/ctkVTKSliceView.cpp

@@ -131,10 +131,10 @@ void ctkVTKSliceView::setImageData(vtkImageData* newImageData)
   d->LightBoxRendererManager->SetImageData(newImageData);
 }
 #else
-void ctkVTKSliceView::setImageDataPort(vtkAlgorithmOutput* newImageDataPort)
+void ctkVTKSliceView::setImageDataConnection(vtkAlgorithmOutput* newImageDataPort)
 {
   Q_D(ctkVTKSliceView);
-  d->LightBoxRendererManager->SetImageDataPort(newImageDataPort);
+  d->LightBoxRendererManager->SetImageDataConnection(newImageDataPort);
 }
 #endif
 

+ 1 - 1
Libs/Visualization/VTK/Widgets/ctkVTKSliceView.h

@@ -104,7 +104,7 @@ public Q_SLOTS:
 #if (VTK_MAJOR_VERSION <= 5)
   void setImageData(vtkImageData* newImageData);
 #else
-  void setImageDataPort(vtkAlgorithmOutput* newImageDataPort);
+  void setImageDataConnection(vtkAlgorithmOutput* newImageDataPort);
 #endif
 
   /// Set highlightedBox color