From 068c624ac1fe1ffe0c881b006caf6bfc665f9535 Mon Sep 17 00:00:00 2001 From: Nicole Aucoin Date: Fri, 16 May 2014 17:50:53 -0400 Subject: [PATCH] BUG: calculate range of active scalar Getting the scalar range on the poly data was returning an incorrect tuple. Get the range of the active scalar array instead. Issue #3672 --- .../vtkMRMLFiberBundleGlyphDisplayNode.cxx | 15 +++++++++-- .../vtkMRMLFiberBundleLineDisplayNode.cxx | 26 +++++++++++++++++-- .../vtkMRMLFiberBundleTubeDisplayNode.cxx | 26 +++++++++++++++++-- 3 files changed, 61 insertions(+), 6 deletions(-) diff --git a/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleGlyphDisplayNode.cxx b/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleGlyphDisplayNode.cxx index 940b8f08851..a43ee89cfce 100644 --- a/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleGlyphDisplayNode.cxx +++ b/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleGlyphDisplayNode.cxx @@ -25,6 +25,7 @@ Version: $Revision: 1.3 $ #include #include #include +#include #include //---------------------------------------------------------------------------- @@ -142,7 +143,6 @@ void vtkMRMLFiberBundleGlyphDisplayNode::UpdatePolyDataPipeline() if (!this->Visibility) { - std::cout << "no visibility" << std::endl; return; } @@ -283,7 +283,18 @@ void vtkMRMLFiberBundleGlyphDisplayNode::UpdatePolyDataPipeline() #else this->GetOutputPolyDataConnection()->GetProducer()->Update(); #endif - this->GetOutputPolyData()->GetScalarRange(range); + vtkPointData *pointData = this->GetOutputPolyData()->GetPointData(); + if (pointData && + pointData->GetArray(this->GetActiveScalarName())) + { + double *activeScalarRange = pointData->GetArray( + this->GetActiveScalarName())->GetRange(); + if (activeScalarRange) + { + range[0] = activeScalarRange[0]; + range[1] = activeScalarRange[1]; + } + } } } diff --git a/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleLineDisplayNode.cxx b/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleLineDisplayNode.cxx index 52a2af0ea8b..f4a118721d8 100644 --- a/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleLineDisplayNode.cxx +++ b/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleLineDisplayNode.cxx @@ -282,7 +282,18 @@ void vtkMRMLFiberBundleLineDisplayNode::UpdatePolyDataPipeline() #else this->GetOutputPolyDataConnection()->GetProducer()->Update(); #endif - this->GetOutputPolyData()->GetScalarRange(range); + vtkPointData *pointData = this->GetOutputPolyData()->GetPointData(); + if (pointData && + pointData->GetArray(this->GetActiveScalarName())) + { + double *activeScalarRange = pointData->GetArray( + this->GetActiveScalarName())->GetRange(); + if (activeScalarRange) + { + range[0] = activeScalarRange[0]; + range[1] = activeScalarRange[1]; + } + } } } if ((this->GetColorMode ( ) == vtkMRMLFiberBundleDisplayNode::colorModeMeanFiberOrientation) || @@ -299,7 +310,18 @@ void vtkMRMLFiberBundleLineDisplayNode::UpdatePolyDataPipeline() #else this->GetInputPolyDataConnection()->GetProducer()->Update(); #endif - this->GetInputPolyData()->GetScalarRange(range); + vtkPointData *pointData = this->GetOutputPolyData()->GetPointData(); + if (pointData && + pointData->GetArray(this->GetActiveScalarName())) + { + double *activeScalarRange = pointData->GetArray( + this->GetActiveScalarName())->GetRange(); + if (activeScalarRange) + { + range[0] = activeScalarRange[0]; + range[1] = activeScalarRange[1]; + } + } } //this->ScalarRange[0] = range[0]; //this->ScalarRange[1] = range[1]; diff --git a/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleTubeDisplayNode.cxx b/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleTubeDisplayNode.cxx index 7f2839abac9..1234343b133 100644 --- a/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleTubeDisplayNode.cxx +++ b/Modules/Loadable/TractographyDisplay/MRML/vtkMRMLFiberBundleTubeDisplayNode.cxx @@ -326,7 +326,18 @@ void vtkMRMLFiberBundleTubeDisplayNode::UpdatePolyDataPipeline() #else this->GetOutputPolyDataConnection()->GetProducer()->Update(); #endif - this->GetOutputPolyData()->GetScalarRange(range); + vtkPointData *pointData = this->GetOutputPolyData()->GetPointData(); + if (pointData && + pointData->GetArray(this->GetActiveScalarName())) + { + double *activeScalarRange = pointData->GetArray( + this->GetActiveScalarName())->GetRange(); + if (activeScalarRange) + { + range[0] = activeScalarRange[0]; + range[1] = activeScalarRange[1]; + } + } } } else if ((this->GetColorMode ( ) == vtkMRMLFiberBundleDisplayNode::colorModeMeanFiberOrientation) || @@ -343,7 +354,18 @@ void vtkMRMLFiberBundleTubeDisplayNode::UpdatePolyDataPipeline() #else this->GetInputPolyDataConnection()->GetProducer()->Update(); #endif - this->GetInputPolyData()->GetScalarRange(range); + vtkPointData *pointData = this->GetOutputPolyData()->GetPointData(); + if (pointData && + pointData->GetArray(this->GetActiveScalarName())) + { + double *activeScalarRange = pointData->GetArray( + this->GetActiveScalarName())->GetRange(); + if (activeScalarRange) + { + range[0] = activeScalarRange[0]; + range[1] = activeScalarRange[1]; + } + } } //this->ScalarRange[0] = range[0]; //this->ScalarRange[1] = range[1];