瀏覽代碼

Add border around charts to leave space for control points

Julien Finet 13 年之前
父節點
當前提交
1b8bb665f2

+ 1 - 1
Libs/Visualization/VTK/Widgets/ctkVTKChartView.cpp

@@ -284,7 +284,7 @@ void ctkVTKChartView::setAxesToChartBounds()
     if (bounds[2*i] != VTK_DOUBLE_MAX)
       {
       chart->GetAxis(i)->SetRange(bounds[2*i], bounds[2*i+1]);
-      chart->GetAxis(i)->SetBehavior(1);
+      //chart->GetAxis(i)->SetBehavior(2);
       }
     }
 }

+ 40 - 3
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsView.cpp

@@ -52,6 +52,7 @@ public:
   ctkVTKScalarsToColorsViewPrivate(ctkVTKScalarsToColorsView& object);
   void init();
   void updateBounds();
+  void showBorders(bool);
 };
 
 // ----------------------------------------------------------------------------
@@ -70,12 +71,32 @@ void ctkVTKScalarsToColorsViewPrivate::init()
   vtkChartXY* chart = q->chart();
   chart->SetAutoAxes(false);
   chart->SetHiddenAxisBorder(0);
+  this->showBorders(false);
+  QObject::connect(q, SIGNAL(boundsChanged()), q, SLOT(onBoundsChanged()));
+  q->onChartUpdated();
+}
+
+// ----------------------------------------------------------------------------
+void ctkVTKScalarsToColorsViewPrivate::showBorders(bool visible)
+{
+  Q_Q(ctkVTKScalarsToColorsView);
+  vtkChartXY* chart = q->chart();
   for (int i = 0; i < 4; ++i)
     {
-    chart->GetAxis(i)->SetVisible(false);
+    chart->GetAxis(i)->SetVisible(visible);
+    chart->GetAxis(i)->SetTitle("");
+    chart->GetAxis(i)->SetNumberOfTicks(0);
+    chart->GetAxis(i)->SetLabelsVisible(false);
+    chart->GetAxis(i)->SetMargins(7.,7.);
+    if (visible)
+      {
+      chart->GetAxis(i)->SetBehavior(2);
+      }
+    else
+      {
+      chart->GetAxis(i)->SetBehavior(1);
+      }
     }
-  QObject::connect(q, SIGNAL(boundsChanged()), q, SLOT(onBoundsChanged()));
-  q->onChartUpdated();
 }
 
 // ----------------------------------------------------------------------------
@@ -436,6 +457,22 @@ void ctkVTKScalarsToColorsView
 }
 
 // ----------------------------------------------------------------------------
+bool ctkVTKScalarsToColorsView
+::areBordersVisible()const
+{
+  Q_D(const ctkVTKScalarsToColorsView);
+  return this->chart()->GetAxis(0)->GetVisible();
+}
+
+// ----------------------------------------------------------------------------
+void ctkVTKScalarsToColorsView
+::setBordersVisible(bool show)
+{
+  Q_D(ctkVTKScalarsToColorsView);
+  d->showBorders(show);
+}
+
+// ----------------------------------------------------------------------------
 void ctkVTKScalarsToColorsView
 ::setPlotsUserBounds(double* bounds)
 {

+ 6 - 0
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsView.h

@@ -39,6 +39,9 @@ class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKScalarsToColorsView
 {
   Q_OBJECT
   QVTK_OBJECT
+  /// Add an empty space around the view to give space to the corner control
+  /// points. False by default
+  Q_PROPERTY(bool bordersVisible READ areBordersVisible WRITE setBordersVisible)
 public:
   typedef ctkVTKChartView Superclass;
   ctkVTKScalarsToColorsView(QWidget* parent = 0);
@@ -76,6 +79,9 @@ public:
   void setOpacityFunctionToPlots(vtkPiecewiseFunction* opacityTF);
   void setPiecewiseFunctionToPlots(vtkPiecewiseFunction* piecewiseTF);
 
+  bool areBordersVisible()const;
+  void setBordersVisible(bool show);
+
   void setPlotsUserBounds(double* bounds);
 
   /// Reimplemented to set the bounds to the plots as well