浏览代码

Merge branch 'extend-lib-visualization-vtk-widgets-wrapping'

* extend-lib-visualization-vtk-widgets-wrapping:
  ENH: Extend wrapping ctkVTKChartView and ctkVTKScalarsToColorsView
Jean-Christophe Fillion-Robin 9 年之前
父节点
当前提交
7b30bfdac2

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

@@ -53,7 +53,7 @@ public:
   virtual void addPlot(vtkPlot* plot);
 
   vtkPlot* addLookupTable(vtkLookupTable* lut);
-  vtkPlot* addColorTransferFunction(vtkColorTransferFunction* colorTF, bool editable = true);
+  Q_INVOKABLE vtkPlot* addColorTransferFunction(vtkColorTransferFunction* colorTF, bool editable = true);
   vtkPlot* addOpacityFunction(vtkPiecewiseFunction* opacityTF, bool editable = true);
   vtkPlot* addCompositeFunction(vtkColorTransferFunction* colorTF,
                                 vtkPiecewiseFunction* opacityTF,

+ 131 - 0
Libs/Visualization/VTK/Widgets/ctkVisualizationVTKWidgetsPythonQtDecorators.h

@@ -0,0 +1,131 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0.txt
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=========================================================================*/
+
+#ifndef __ctkVisualizationVTKWidgetsPythonQtDecorators_h
+#define __ctkVisualizationVTKWidgetsPythonQtDecorators_h
+
+// PythonQt includes
+#include <PythonQt.h>
+
+// CTK includes
+#include <ctkVTKChartView.h>
+#include <ctkVTKScalarsToColorsView.h>
+
+// NOTE:
+//
+// For decorators it is assumed that the methods will never be called
+// with the self argument as NULL.  The self argument is the first argument
+// for non-static methods.
+//
+
+/// \ingroup Widgets
+class ctkVisualizationVTKWidgetsPythonQtDecorators : public QObject
+{
+  Q_OBJECT
+public:
+
+  ctkVisualizationVTKWidgetsPythonQtDecorators()
+    {
+    }
+
+public Q_SLOTS:
+
+  // ctkVTKChartView
+  
+  QList<double> chartExtent(ctkVTKChartView* view)const
+  {
+    double _bounds[8];
+    view->chartExtent(_bounds);
+    QList<double> bounds;
+    for(int idx = 0; idx < 8; ++idx)
+      {
+      bounds << _bounds[idx];
+      }
+    return bounds;
+  }
+
+  QList<double> chartBounds(ctkVTKChartView* view)const
+  {
+    double _bounds[8];
+    view->chartBounds(_bounds);
+    QList<double> bounds;
+    for(int idx = 0; idx < 8; ++idx)
+      {
+      bounds << _bounds[idx];
+      }
+    return bounds;
+  }
+  
+  void setChartUserBounds(ctkVTKChartView* view, const QList<double>& bounds)
+  {
+    double _bounds[8];
+    for(int idx = 0; idx < bounds.length() && idx < 8; ++idx)
+      {
+      _bounds[idx] = bounds[idx];
+      }
+    view->setChartUserBounds(_bounds);
+  }
+  
+  QList<double> chartUserBounds(ctkVTKChartView* view)const
+  {
+    double _bounds[8];
+    view->chartUserBounds(_bounds);
+    QList<double> bounds;
+    for(int idx = 0; idx < 8; ++idx)
+      {
+      bounds << _bounds[idx];
+      }
+    return bounds;
+  }
+  
+  // ctkVTKScalarsToColorsView
+  
+  QList<double> validBounds(ctkVTKScalarsToColorsView* view)const
+  {
+    double _bounds[4];
+    view->validBounds(_bounds);
+    QList<double> bounds;
+    for(int idx = 0; idx < 4; ++idx)
+      {
+      bounds << _bounds[idx];
+      }
+    return bounds;
+  }
+
+  void setValidBounds(ctkVTKScalarsToColorsView* view, const QList<double>& bounds)
+  {
+    double _bounds[4];
+    for(int idx = 0; idx < bounds.length() && idx < 4; ++idx)
+      {
+      _bounds[idx] = bounds[idx];
+      }
+    view->setValidBounds(_bounds);
+  }
+
+};
+
+//-----------------------------------------------------------------------------
+/// \ingroup Widgets
+void initCTKVisualizationVTKWidgetsPythonQtDecorators()
+{
+  PythonQt::self()->addDecorators(new ctkVisualizationVTKWidgetsPythonQtDecorators);
+}
+
+#endif