Bladeren bron

Add ctkVTKAbstractViewPrivate::renderers and firstRenderer

This allows generic processing on all the renderers in the render window
Julien Finet 13 jaren geleden
bovenliggende
commit
1c91b01204

+ 24 - 0
Libs/Visualization/VTK/Widgets/ctkVTKAbstractView.cpp

@@ -29,6 +29,7 @@
 #include "ctkLogger.h"
 
 // VTK includes
+#include <vtkRendererCollection.h>
 #include <vtkRenderWindowInteractor.h>
 #include <vtkTextProperty.h>
 
@@ -89,6 +90,29 @@ void ctkVTKAbstractViewPrivate::setupRendering()
 }
 
 //---------------------------------------------------------------------------
+QList<vtkRenderer*> ctkVTKAbstractViewPrivate::renderers()const
+{
+  QList<vtkRenderer*> rendererList;
+
+  vtkRendererCollection* rendererCollection = this->RenderWindow->GetRenderers();
+  vtkCollectionSimpleIterator rendererIterator;
+  rendererCollection->InitTraversal(rendererIterator);
+  vtkRenderer *renderer;
+  while ( (renderer= rendererCollection->GetNextRenderer(rendererIterator)) )
+    {
+    rendererList << renderer;
+    }
+  return rendererList;
+}
+
+//---------------------------------------------------------------------------
+vtkRenderer* ctkVTKAbstractViewPrivate::firstRenderer()const
+{
+  return static_cast<vtkRenderer*>(this->RenderWindow->GetRenderers()
+    ->GetItemAsObject(0));
+}
+
+//---------------------------------------------------------------------------
 // ctkVTKAbstractView methods
 
 // --------------------------------------------------------------------------

+ 3 - 0
Libs/Visualization/VTK/Widgets/ctkVTKAbstractView_p.h

@@ -51,6 +51,9 @@ public:
   virtual void setupCornerAnnotation();
   virtual void setupRendering();
 
+  QList<vtkRenderer*> renderers()const;
+  vtkRenderer* firstRenderer()const;
+
   QVTKWidget*                                   VTKWidget;
   vtkSmartPointer<vtkRenderWindow>              RenderWindow;
   bool                                          RenderPending;