VTK  9.3.1
vtkDiscretizableColorTransferFunction.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
37 #ifndef vtkDiscretizableColorTransferFunction_h
38 #define vtkDiscretizableColorTransferFunction_h
39 
41 #include "vtkRenderingCoreModule.h" // For export macro
42 #include "vtkSmartPointer.h" // for vtkSmartPointer
43 
44 VTK_ABI_NAMESPACE_BEGIN
46 class vtkLookupTable;
49 
50 class VTKRENDERINGCORE_EXPORT vtkDiscretizableColorTransferFunction
52 {
53 public:
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
59 
62  vtkTypeBool IsOpaque() override;
63  vtkTypeBool IsOpaque(vtkAbstractArray* scalars, int colorMode, int component) override;
64  vtkTypeBool IsOpaque(vtkAbstractArray* scalars, int colorMode, int component,
65  vtkUnsignedCharArray* ghosts, unsigned char ghostsToSkip = 0xff) override;
67 
75  void SetIndexedColorRGB(unsigned int index, const double rgb[3])
76  {
77  this->SetIndexedColor(index, rgb[0], rgb[1], rgb[2]);
78  }
79  void SetIndexedColorRGBA(unsigned int index, const double rgba[4])
80  {
81  this->SetIndexedColor(index, rgba[0], rgba[1], rgba[2], rgba[3]);
82  }
83  void SetIndexedColor(unsigned int index, double r, double g, double b, double a = 1.0);
84 
97  void GetIndexedColor(vtkIdType i, double rgba[4]) override;
98 
100 
105  void SetNumberOfIndexedColors(unsigned int count);
106  unsigned int GetNumberOfIndexedColors();
108 
115  void Build() override;
116 
118 
124  vtkSetMacro(Discretize, vtkTypeBool);
125  vtkGetMacro(Discretize, vtkTypeBool);
126  vtkBooleanMacro(Discretize, vtkTypeBool);
128 
130 
134  virtual void SetUseLogScale(vtkTypeBool useLogScale);
135  vtkGetMacro(UseLogScale, vtkTypeBool);
137 
139 
144  vtkSetMacro(NumberOfValues, vtkIdType);
145  vtkGetMacro(NumberOfValues, vtkIdType);
147 
152  const unsigned char* MapValue(double v) override;
153 
158  void GetColor(double v, double rgb[3]) override;
159 
163  double GetOpacity(double v) override;
164 
170  void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
171  int numberOfValues, int inputIncrement, int outputFormat) override;
172 
180  void SetAlpha(double alpha) override;
181 
183 
188  void SetNanColor(double r, double g, double b) override;
189  void SetNanColor(const double rgb[3]) override { this->SetNanColor(rgb[0], rgb[1], rgb[2]); }
191 
197  void SetNanOpacity(double a) override;
198 
203  vtkTypeBool UsingLogScale() override { return this->UseLogScale; }
204 
209 
211 
214  virtual void SetScalarOpacityFunction(vtkPiecewiseFunction* function);
215  virtual vtkPiecewiseFunction* GetScalarOpacityFunction() const;
217 
219 
222  vtkSetMacro(EnableOpacityMapping, bool);
223  vtkGetMacro(EnableOpacityMapping, bool);
224  vtkBooleanMacro(EnableOpacityMapping, bool);
226 
230  vtkMTimeType GetMTime() override;
231 
232 protected:
235 
240 
245 
250 
255 
257 
260 
261  void MapDataArrayToOpacity(vtkDataArray* scalars, int component, vtkUnsignedCharArray* colors);
262 
263 private:
265  void operator=(const vtkDiscretizableColorTransferFunction&) = delete;
266 
267  template <typename T, typename VectorGetter>
268  void MapVectorToOpacity(VectorGetter getter, T* scalars, int component, int numberOfComponents,
269  vtkIdType numberOfTuples, unsigned char* colors);
270 
271  template <template <class> class VectorGetter>
272  void AllTypesMapVectorToOpacity(int scalarType, void* scalarsPtr, int component,
273  int numberOfComponents, vtkIdType numberOfTuples, unsigned char* colors);
274 
275  class vtkInternals;
276  vtkInternals* Internals;
277 };
278 
279 VTK_ABI_NAMESPACE_END
280 #endif
vtkTypeBool UseLogScale
Flag indicating whether log scaling is to be used.
vtkTypeBool Discretize
Flag indicating whether transfer function is discretized.
virtual vtkTypeBool IsOpaque()
Return true if all of the values defining the mapping have an opacity equal to 1. ...
virtual void SetNanOpacity(double)
Get/Set the opacity to use when a NaN (not a number) is encountered.
Defines a 1D piecewise function.
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270
void PrintSelf(ostream &os, vtkIndent indent) override
Print method for vtkColorTransferFunction.
Abstract superclass for all arrays.
void GetIndexedColor(vtkIdType idx, double rgba[4]) override
Return a color given an integer index.
record modification and/or execution time
Definition: vtkTimeStamp.h:24
static vtkColorTransferFunction * New()
map scalar values into colors via a lookup table
virtual void SetAlpha(double alpha)
Specify an additional opacity (alpha) value to blend with.
int vtkIdType
Definition: vtkType.h:315
vtkIdType NumberOfValues
Number of values to use in discretized color map.
void MapScalarsThroughTable2(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputIncrement) override
Map a set of scalars through the lookup table.
int vtkTypeBool
Definition: vtkABI.h:64
virtual void SetNanColor(double, double, double)
Set the RGB color to use when a NaN (not a number) is encountered.
virtual double GetOpacity(double v)
Map one value through the lookup table and return the alpha value (the opacity) as a double between 0...
double * GetColor(double x)
Returns an RGB color for the specified scalar value.
a simple class to control print indentation
Definition: vtkIndent.h:28
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
virtual vtkMTimeType GetMTime()
Return this object's modified time.
void SetIndexedColorRGBA(unsigned int index, const double rgba[4])
dynamic, self-adjusting array of unsigned char
vtkIdType GetNumberOfAvailableColors() override
Get the number of available colors for mapping to.
a combination of vtkColorTransferFunction and vtkLookupTable.
Defines a transfer function for mapping a property to an RGB color value.
void SetNanColor(const double rgb[3]) override
Set the color to use when a NaN (not a number) is encountered.
void SetIndexedColorRGB(unsigned int index, const double rgb[3])
Add colors to use when IndexedLookup is true.
vtkSmartPointer< vtkPiecewiseFunction > ScalarOpacityFunction
virtual void Build()
Perform any processing required (if any) before processing scalars.
vtkTypeBool UsingLogScale() override
This should return 1 if the subclass is using log scale for mapping scalars to colors.
vtkLookupTable * LookupTable
Internal lookup table used for some aspects of the color mapping.
const unsigned char * MapValue(double v) override
Map one value through the lookup table.