43 void PrintSelf(ostream& os, vtkIndent indent)
override;
67 static_assert(std::is_arithmetic_v<T>,
"mapScalarToWindow requires numeric input");
68 if (rangeMin == rangeMax)
72 const bool invertWindow = (rangeMin > rangeMax);
75 std::swap(rangeMin, rangeMax);
77 const double rangeWidth = rangeMax - rangeMin;
78 return computeWindowFactor(
static_cast<double>(inputValue), rangeMin, rangeMax, rangeWidth, invertWindow, mappingMode);
87 vtkInformationVector** inputVector,
88 vtkInformationVector* outputVector,
89 vtkImageData*** inData,
90 vtkImageData** outData,
93 int RequestData(vtkInformation* request, vtkInformationVector** inputVector, vtkInformationVector* outputVector)
override;
103 static inline double computeWindowFactor(
116 else if (inVal >= upper)
123 const double t = (inVal - lower) / rangeWidth;
126 case WindowMappingMode::Logarithmic: factor = std::log10(1.0 + 9.0 * t);
break;
127 case WindowMappingMode::InverseLogarithmic: factor = 1.0 - std::log10(1.0 + 9.0 * (1.0 - t));
break;
128 default: factor = t;
break;
131 return invertWindow ? 1.0 - factor : factor;
134 vtkImageMapToWindowLevelAddon(
const vtkImageMapToWindowLevelAddon&) =
delete;
135 void operator=(
const vtkImageMapToWindowLevelAddon&) =
delete;
void ThreadedRequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int outExt[6], int id) override