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

Merge branch 'transfer_function_editors'

* transfer_function_editors:
  vtkCompositeControlPoints can represent opacity functions only
  Don't fire unnecessary renders in ctkVTKScalarsToColorsWidget
Julien Finet лет назад: 14
Родитель
Сommit
7c05f689f6

+ 7 - 2
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsView.cpp

@@ -461,12 +461,17 @@ void ctkVTKScalarsToColorsView::editPoint(vtkObject* caller, void* callData)
     }
   vtkColorTransferControlPointsItem* colorTransferFunctionItem =
     vtkColorTransferControlPointsItem::SafeDownCast(controlPoints);
-  if (colorTransferFunctionItem)
+  vtkCompositeControlPointsItem* compositeControlPoints =
+    vtkCompositeControlPointsItem::SafeDownCast(controlPoints);
+  if (colorTransferFunctionItem &&
+      (!compositeControlPoints ||
+        compositeControlPoints->GetPointsFunction() == vtkCompositeControlPointsItem::ColorPointsFunction ||
+        compositeControlPoints->GetPointsFunction() == vtkCompositeControlPointsItem::ColorAndOpacityPointsFunction))
     {
     double xrgbms[6];
     vtkColorTransferFunction* colorTF = colorTransferFunctionItem->GetColorTransferFunction();
     colorTF->GetNodeValue(pointToEdit, xrgbms);
-    QColor oldColor = QColor::fromRgbF(xrgbms[0], xrgbms[1], xrgbms[2]);
+    QColor oldColor = QColor::fromRgbF(xrgbms[1], xrgbms[2], xrgbms[3]);
     QColor newColor = QColorDialog::getColor(oldColor, this);
     if (newColor.isValid())
       {

+ 7 - 2
Libs/Visualization/VTK/Widgets/ctkVTKScalarsToColorsWidget.cpp

@@ -325,7 +325,12 @@ void ctkVTKScalarsToColorsWidget::updateCurrentPoint()
 
   vtkColorTransferControlPointsItem* colorControlPoints =
     vtkColorTransferControlPointsItem::SafeDownCast(d->CurrentControlPointsItem);
-  if (colorControlPoints)
+  vtkCompositeControlPointsItem* compositeControlPoints =
+    vtkCompositeControlPointsItem::SafeDownCast(d->CurrentControlPointsItem);
+  if (colorControlPoints &&
+      (!compositeControlPoints ||
+        compositeControlPoints->GetPointsFunction() == vtkCompositeControlPointsItem::ColorPointsFunction ||
+        compositeControlPoints->GetPointsFunction() == vtkCompositeControlPointsItem::ColorAndOpacityPointsFunction))
     {
     vtkColorTransferFunction* colorTF =
       colorControlPoints->GetColorTransferFunction();
@@ -465,6 +470,6 @@ void ctkVTKScalarsToColorsWidget::onAxesModified()
     d->CurrentControlPointsItem->GetYAxis() : d->View->chart()->GetAxis(vtkAxis::LEFT);
   Q_ASSERT(yAxis);
   d->YRangeSlider->setValues(yAxis->GetMinimum(), yAxis->GetMaximum());
-    d->View->scene()->SetDirty(true);
+  //  d->View->scene()->SetDirty(true);
   //emit this->axesModified();
 }

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

@@ -83,8 +83,12 @@ void ctkVTKVolumePropertyWidgetPrivate::setupUi(QWidget* widget)
   this->Ui_ctkVTKVolumePropertyWidget::setupUi(widget);
 
   this->ScalarOpacityWidget->view()->addCompositeFunction(0, 0, true, true);
+  vtkCompositeControlPointsItem* composite = 
   vtkCompositeControlPointsItem::SafeDownCast(
-    this->ScalarOpacityWidget->view()->opacityFunctionPlots()[1])->SetColorFill(true);
+    this->ScalarOpacityWidget->view()->opacityFunctionPlots()[1]);
+  composite->SetColorFill(true);
+  composite->SetPointsFunction(vtkCompositeControlPointsItem::OpacityPointsFunction);
+  composite->SetPointsFunction(vtkCompositeControlPointsItem::ColorPointsFunction);
   this->ScalarColorWidget->view()->addColorTransferFunction(0);
   this->GradientWidget->view()->addPiecewiseFunction(0);
   this->ScalarOpacityThresholdWidget->setVisible(false);