Просмотр исходного кода

ENH: Added method "setRenderEnabled" and "activeCamera" to ctkVTKRenderView

Jean-Christophe Fillion-Robin лет назад: 15
Родитель
Сommit
c1d6115637

+ 26 - 0
Libs/Visualization/VTK/Widgets/ctkVTKRenderView.cpp

@@ -43,6 +43,7 @@ ctkVTKRenderViewPrivate::ctkVTKRenderViewPrivate()
   this->Orientation = vtkSmartPointer<vtkOrientationMarkerWidget>::New();
   this->CornerAnnotation = vtkSmartPointer<vtkCornerAnnotation>::New();
   this->RenderPending = false;
+  this->RenderEnabled = false;
 }
 
 // --------------------------------------------------------------------------
@@ -115,6 +116,10 @@ CTK_GET_CXX(ctkVTKRenderView, vtkRenderWindowInteractor*, interactor, CurrentInt
 void ctkVTKRenderView::scheduleRender()
 {
   CTK_D(ctkVTKRenderView);
+  if (!d->RenderEnabled)
+    {
+    return;
+    }
   if (!d->RenderPending)
     {
     d->RenderPending = true;
@@ -126,6 +131,10 @@ void ctkVTKRenderView::scheduleRender()
 void ctkVTKRenderView::forceRender()
 {
   CTK_D(ctkVTKRenderView);
+  if (!d->RenderEnabled)
+    {
+    return;
+    }
   d->RenderWindow->Render();
   d->RenderPending = false;
 }
@@ -160,6 +169,20 @@ void ctkVTKRenderView::setBackgroundColor(double r, double g, double b)
 }
 
 //----------------------------------------------------------------------------
+vtkCamera* ctkVTKRenderView::activeCamera()
+{
+  CTK_D(ctkVTKRenderView);
+  if (d->Renderer->IsActiveCameraCreated())
+    {
+    return 0;
+    }
+  else
+    {
+    return d->Renderer->GetActiveCamera();
+    }
+}
+
+//----------------------------------------------------------------------------
 void ctkVTKRenderView::resetCamera()
 {
   CTK_D(ctkVTKRenderView);
@@ -168,3 +191,6 @@ void ctkVTKRenderView::resetCamera()
 
 //----------------------------------------------------------------------------
 CTK_GET_CXX(ctkVTKRenderView, vtkRenderer*, renderer, Renderer);
+
+//----------------------------------------------------------------------------
+CTK_SET_CXX(ctkVTKRenderView, bool, setRenderEnabled, RenderEnabled);

+ 7 - 1
Libs/Visualization/VTK/Widgets/ctkVTKRenderView.h

@@ -32,6 +32,7 @@
 class ctkVTKRenderViewPrivate;
 class vtkRenderWindowInteractor;
 class vtkRenderer;
+class vtkCamera; 
 
 class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKRenderView : public QWidget
 {
@@ -58,12 +59,17 @@ public:
   /// Set background color
   void setBackgroundColor(double r, double g, double b);
 
+  /// Get active camera
+  vtkCamera* activeCamera();
+
+  /// Reset camera
   void resetCamera();
 
   /// Get a reference to the associated vtkRenderer
   vtkRenderer* renderer()const;
 
-  //virtual void setCornerText(const QString& text);
+  /// Enable/Disable rendering
+  void setRenderEnabled(bool value);
   
 private:
   CTK_DECLARE_PRIVATE(ctkVTKRenderView);

+ 1 - 0
Libs/Visualization/VTK/Widgets/ctkVTKRenderView_p.h

@@ -59,6 +59,7 @@ public:
   vtkSmartPointer<vtkRenderer>                  Renderer;
   vtkSmartPointer<vtkRenderWindow>              RenderWindow;
   bool                                          RenderPending;
+  bool                                          RenderEnabled;
   
   vtkSmartPointer<vtkAxesActor>                 Axes;
   vtkSmartPointer<vtkOrientationMarkerWidget>   Orientation;