Browse Source

Add color to the opacity control points

Julien Finet 14 years ago
parent
commit
d8a31ef88b

+ 3 - 0
Libs/Visualization/VTK/Widgets/Resources/UI/ctkVTKVolumePropertyWidget.ui

@@ -37,6 +37,9 @@
           <height>120</height>
          </size>
         </property>
+        <property name="editColors">
+         <bool>false</bool>
+        </property>
        </widget>
       </item>
      </layout>

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

@@ -322,7 +322,9 @@ QList<vtkPlot*> ctkVTKScalarsToColorsView::opacityFunctionPlots()const
   foreach(vtkPlot* plot, this->plots())
     {
     if (vtkPiecewiseFunctionItem::SafeDownCast(plot) ||
-        vtkPiecewiseControlPointsItem::SafeDownCast(plot))
+        vtkPiecewiseControlPointsItem::SafeDownCast(plot) ||
+        vtkCompositeTransferFunctionItem::SafeDownCast(plot) ||
+        vtkCompositeControlPointsItem::SafeDownCast(plot))
       {
       res << plot;
       }

+ 20 - 3
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp

@@ -59,6 +59,7 @@ public:
   bool blockSignals(bool);
 
   vtkControlPointsItem* CurrentControlPointsItem;
+  bool EditColors;
 };
 
 // ----------------------------------------------------------------------------
@@ -70,6 +71,7 @@ ctkVTKScalarsToColorsWidgetPrivate::ctkVTKScalarsToColorsWidgetPrivate(
   : q_ptr(&object)
 {
   this->CurrentControlPointsItem = 0;
+  this->EditColors = true;
 }
 
 // ----------------------------------------------------------------------------
@@ -172,6 +174,20 @@ void ctkVTKScalarsToColorsWidget::setVerticalSliderVisible(bool visible)
 }
 
 // ----------------------------------------------------------------------------
+bool ctkVTKScalarsToColorsWidget::editColors()const
+{
+  Q_D(const ctkVTKScalarsToColorsWidget);
+  return d->EditColors;
+}
+
+// ----------------------------------------------------------------------------
+void ctkVTKScalarsToColorsWidget::setEditColors(bool edit)
+{
+  Q_D(ctkVTKScalarsToColorsWidget);
+  d->EditColors = edit;
+}
+
+// ----------------------------------------------------------------------------
 void ctkVTKScalarsToColorsWidget::onPlotAdded(vtkPlot* plot)
 {
   if (vtkControlPointsItem::SafeDownCast(plot))
@@ -211,6 +227,7 @@ void ctkVTKScalarsToColorsWidget::setCurrentPoint(int newPoint)
 {
   Q_D(ctkVTKScalarsToColorsWidget);
   d->PointIdSpinBox->setValue(newPoint);
+  Q_ASSERT( newPoint == d->PointIdSpinBox->value());
 }
 
 // ----------------------------------------------------------------------------
@@ -236,9 +253,9 @@ void ctkVTKScalarsToColorsWidget::setCurrentControlPointsItem(vtkControlPointsIt
   d->CurrentControlPointsItem = item;
   if (item)
     {
-    d->ColorPickerButton->setVisible(
-      vtkColorTransferControlPointsItem::SafeDownCast(item) != 0 ||
-      vtkCompositeControlPointsItem::SafeDownCast(item) != 0);
+    d->ColorPickerButton->setVisible( d->EditColors &&
+      (vtkColorTransferControlPointsItem::SafeDownCast(item) != 0 ||
+       vtkCompositeControlPointsItem::SafeDownCast(item) != 0));
     d->OpacityLabel->setVisible(vtkPiecewiseControlPointsItem::SafeDownCast(item) != 0 ||
                                 vtkCompositeControlPointsItem::SafeDownCast(item) != 0);
     d->OpacitySpinBox->setVisible(vtkPiecewiseControlPointsItem::SafeDownCast(item) != 0 ||

+ 4 - 0
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.h

@@ -40,6 +40,7 @@ class CTK_VISUALIZATION_VTK_WIDGETS_EXPORT ctkVTKScalarsToColorsWidget : public
   QVTK_OBJECT
   Q_PROPERTY(bool horizontalSliderVisible READ isHorizontalSliderVisible WRITE setHorizontalSliderVisible)
   Q_PROPERTY(bool verticalSliderVisible READ isVerticalSliderVisible WRITE setVerticalSliderVisible)
+  Q_PROPERTY(bool editColors READ editColors WRITE setEditColors)
 public:
   ctkVTKScalarsToColorsWidget(QWidget* parent = 0);
   virtual ~ctkVTKScalarsToColorsWidget();
@@ -52,6 +53,9 @@ public:
 
   bool isVerticalSliderVisible()const;
   void setVerticalSliderVisible(bool visible);
+  
+  bool editColors()const;
+  void setEditColors(bool edit);
 
 public slots:
   void setCurrentControlPointsItem(vtkControlPointsItem* item);

+ 3 - 1
Libs/Visualization/VTK/Widgets/ctkVTKVolumePropertyWidget.cpp

@@ -82,7 +82,9 @@ void ctkVTKVolumePropertyWidgetPrivate::setupUi(QWidget* widget)
   Q_ASSERT(q == widget);
   this->Ui_ctkVTKVolumePropertyWidget::setupUi(widget);
 
-  this->ScalarOpacityWidget->view()->addCompositeFunction(0, 0, false, true);
+  this->ScalarOpacityWidget->view()->addCompositeFunction(0, 0, true, true);
+  vtkCompositeControlPointsItem::SafeDownCast(
+    this->ScalarOpacityWidget->view()->opacityFunctionPlots()[1])->SetColorFill(true);
   this->ScalarColorWidget->view()->addColorTransferFunction(0);
   this->GradientWidget->view()->addPiecewiseFunction(0);
   this->ScalarOpacityThresholdWidget->setVisible(false);