----------------------------------------------------------------------------
| 728 | |
| 729 | //---------------------------------------------------------------------------- |
| 730 | bool vtkSMTransferFunctionProxy::MapControlPointsToLogSpace(bool inverse /*=false*/) |
| 731 | { |
| 732 | vtkSMProperty* controlPointsProperty = GetControlPointsProperty(this); |
| 733 | if (!controlPointsProperty) |
| 734 | { |
| 735 | return false; |
| 736 | } |
| 737 | |
| 738 | SM_SCOPED_TRACE(CallMethod) |
| 739 | .arg(this) |
| 740 | .arg(inverse ? "MapControlPointsToLinearSpace" : "MapControlPointsToLogSpace") |
| 741 | .arg("comment", inverse ? "convert from log to linear" : "convert to log space"); |
| 742 | |
| 743 | vtkSMPropertyHelper cntrlPoints(controlPointsProperty); |
| 744 | unsigned int num_elements = cntrlPoints.GetNumberOfElements(); |
| 745 | if (num_elements == 0 || num_elements == 4) |
| 746 | { |
| 747 | // nothing to do, but not an error, so return true. |
| 748 | return true; |
| 749 | } |
| 750 | |
| 751 | std::vector<vtkTuple<double, 4>> points; |
| 752 | points.resize(num_elements / 4); |
| 753 | cntrlPoints.Get(points[0].GetData(), num_elements); |
| 754 | |
| 755 | vtkTuple<double, 2> range; |
| 756 | vtkNormalize(points, inverse, &range); // if inverse==true, we're in log-space currently. |
| 757 | if (range[0] >= range[1]) |
| 758 | { |
| 759 | vtkWarningMacro("Empty range! Cannot map control points."); |
| 760 | return false; |
| 761 | } |
| 762 | vtkRescaleNormalizedControlPoints(points, range[0], range[1], !inverse); |
| 763 | this->LastRange[0] = range[0]; |
| 764 | this->LastRange[1] = range[1]; |
| 765 | cntrlPoints.Set(points[0].GetData(), num_elements); |
| 766 | this->UpdateVTKObjects(); |
| 767 | return true; |
| 768 | } |
| 769 | |
| 770 | //---------------------------------------------------------------------------- |
| 771 | bool vtkSMTransferFunctionProxy::ApplyColorMap(const char* text) |
no test coverage detected