VTK  9.6.1
vtkColorTransferFunction.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
31
32#ifndef vtkColorTransferFunction_h
33#define vtkColorTransferFunction_h
34
35#include "vtkRenderingCoreModule.h" // For export macro
36#include "vtkScalarsToColors.h"
37#include "vtkWrappingHints.h" // For VTK_MARSHALMANUAL
38
39VTK_ABI_NAMESPACE_BEGIN
40class vtkColorTransferFunctionInternals;
41class vtkDoubleArray;
42
43#define VTK_CTF_RGB 0
44#define VTK_CTF_HSV 1
45#define VTK_CTF_LAB 2
46#define VTK_CTF_DIVERGING 3
47#define VTK_CTF_LAB_CIEDE2000 4
48#define VTK_CTF_STEP 5
49#define VTK_CTF_PROLAB 6
50
51#define VTK_CTF_LINEAR 0
52#define VTK_CTF_LOG10 1
53
55{
56public:
59 void DeepCopy(vtkScalarsToColors* f) override;
61
65 void PrintSelf(ostream& os, vtkIndent indent) override;
66
70 int GetSize();
71
73
79 int AddRGBPoint(double x, double r, double g, double b);
80 int AddRGBPoint(double x, double r, double g, double b, double midpoint, double sharpness);
82 int AddRGBPoints(vtkDoubleArray* x, vtkDoubleArray* rgbColors, double midpoint, double sharpness);
83 int AddHSVPoint(double x, double h, double s, double v);
84 int AddHSVPoint(double x, double h, double s, double v, double midpoint, double sharpness);
85 int RemovePoint(double x);
87
89
94 double x1, double r1, double g1, double b1, double x2, double r2, double g2, double b2);
96 double x1, double h1, double s1, double v1, double x2, double h2, double s2, double v2);
98
103
107 double* GetColor(double x) VTK_SIZEHINT(3) { return vtkScalarsToColors::GetColor(x); }
108 void GetColor(double x, double rgb[3]) override;
109
111
114 double GetRedValue(double x);
115 double GetGreenValue(double x);
116 double GetBlueValue(double x);
118
120
125 int GetNodeValue(int index, double val[6]);
126 int SetNodeValue(int index, double val[6]);
128
132 const unsigned char* MapValue(double v) override;
133
135
138 double* GetRange() VTK_SIZEHINT(2) override { return this->Range; }
139 virtual void GetRange(double& arg1, double& arg2)
140 {
141 arg1 = this->Range[0];
142 arg2 = this->Range[1];
143 }
144 virtual void GetRange(double _arg[2]) { this->GetRange(_arg[0], _arg[1]); }
146
152 int AdjustRange(double range[2]);
153
155
161 void GetTable(double x1, double x2, int n, double* table);
162 void GetTable(double x1, double x2, int n, float* table);
163 const unsigned char* GetTable(double x1, double x2, int n);
165
175 void BuildFunctionFromTable(double x1, double x2, int size, double* table);
176
178
186 vtkSetClampMacro(Clamping, vtkTypeBool, 0, 1);
187 vtkGetMacro(Clamping, vtkTypeBool);
188 vtkBooleanMacro(Clamping, vtkTypeBool);
190
192
204 vtkSetClampMacro(ColorSpace, int, VTK_CTF_RGB, VTK_CTF_PROLAB);
212 vtkGetMacro(ColorSpace, int);
213 vtkSetMacro(HSVWrap, vtkTypeBool);
214 vtkGetMacro(HSVWrap, vtkTypeBool);
215 vtkBooleanMacro(HSVWrap, vtkTypeBool);
217
219
224 vtkSetMacro(Scale, int);
227 vtkGetMacro(Scale, int);
229
231
236 vtkSetVector3Macro(NanColor, double);
237 vtkGetVector3Macro(NanColor, double);
239
241
245 vtkSetMacro(NanOpacity, double);
246 vtkGetMacro(NanOpacity, double);
248
250
255 virtual void SetNanColorRGBA(double r, double g, double b, double a)
256 {
257 this->SetNanColor(r, g, b);
258 this->SetNanOpacity(a);
259 }
260
261 void SetNanColorRGBA(double rgba[4])
262 {
263 this->SetNanColorRGBA(rgba[0], rgba[1], rgba[2], rgba[3]);
264 }
265
266
268
272 vtkSetVector3Macro(BelowRangeColor, double);
273 vtkGetVector3Macro(BelowRangeColor, double);
275
277
284
286
290 vtkSetVector3Macro(AboveRangeColor, double);
291 vtkGetVector3Macro(AboveRangeColor, double);
293
295
302
310 double* GetDataPointer();
311
317 void FillFromDataPointer(int n, double* ptr);
318
322 void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
323 int numberOfValues, int inputIncrement, int outputIncrement) override;
324
326
334
339
346 void GetIndexedColor(vtkIdType idx, double rgba[4]) override;
347
352 int EstimateMinNumberOfSamples(double const& x1, double const& x2);
353
354protected:
357
358 vtkColorTransferFunctionInternals* Internal;
359
367
372
377
381 int Scale;
382
386 double NanColor[3];
387
392
397
402
407
412
416 double* Function;
417
421 double Range[2];
422
426 unsigned char UnsignedCharRGBAValue[4];
427
432
434 unsigned char* Table;
435
441
443
447 void SetRange(double, double) override {}
448 void SetRange(const double rng[2]) override { this->SetRange(rng[0], rng[1]); }
450
457
463
468 void MovePoint(double oldX, double newX);
469
474
475private:
477 void operator=(const vtkColorTransferFunction&) = delete;
478};
479
480VTK_ABI_NAMESPACE_END
481#endif
RealT r2
Definition PyrC2Basis.h:20
RealT s2
Definition PyrC2Basis.h:21
virtual void SetNanColorRGBA(double r, double g, double b, double a)
Set the RGBA color to use when a NaN (not a number) is encountered.
void GetTable(double x1, double x2, int n, double *table)
Fills in a table of n colors mapped from values mapped with even spacing between x1 and x2,...
int Scale
The color interpolation scale (linear or logarithmic).
void BuildFunctionFromTable(double x1, double x2, int size, double *table)
Construct a color transfer function from a table.
void DeepCopy(vtkScalarsToColors *f) override
Copy the contents from another object.
void RemoveAllPoints()
Remove all points.
virtual void SetColorSpace(int)
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
void AddHSVSegment(double x1, double h1, double s1, double v1, double x2, double h2, double s2, double v2)
Add two points to the function and remove all the points between them.
void SetNanColorRGBA(double rgba[4])
Set the RGBA color to use when a NaN (not a number) is encountered.
int AdjustRange(double range[2])
Remove all points out of the new range, and make sure there is a point at each end of that range.
int AddHSVPoint(double x, double h, double s, double v)
Add/Remove a point to/from the function defined in RGB or HSV Return the index of the point (0 based)...
void GetTable(double x1, double x2, int n, float *table)
Fills in a table of n colors mapped from values mapped with even spacing between x1 and x2,...
int RemovePoint(double x)
Add/Remove a point to/from the function defined in RGB or HSV Return the index of the point (0 based)...
double NanColor[3]
The color to use for not-a-number.
int TableSize
Temporary storage for the size of the table.
void PrintSelf(ostream &os, vtkIndent indent) override
Print method for vtkColorTransferFunction.
~vtkColorTransferFunction() override
int AddRGBPoints(vtkDoubleArray *x, vtkDoubleArray *rgbColors, double midpoint, double sharpness)
Add/Remove a point to/from the function defined in RGB or HSV Return the index of the point (0 based)...
int EstimateMinNumberOfSamples(double const &x1, double const &x2)
Estimates the minimum size of a table such that it would correctly sample this function.
void SetScaleToLog10()
Set the type of scale to use, linear or logarithmic.
double NanOpacity
The opacity to use for not-a-number.
double GetRedValue(double x)
Get the color components individually.
vtkIdType GetNumberOfAvailableColors() override
Get the number of available colors for mapping to.
unsigned char UnsignedCharRGBAValue[4]
Temporary storage for an evaluated color (0 to 255 RGBA A=255).
int ColorSpace
The color space in which interpolation is performed.
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.
void SetColorSpaceToHSV()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
int AddRGBPoint(double x, double r, double g, double b, double midpoint, double sharpness)
Add/Remove a point to/from the function defined in RGB or HSV Return the index of the point (0 based)...
const unsigned char * MapValue(double v) override
Map one value through the lookup table.
void SetColorSpaceToProlab()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
double * GetDataPointer()
Returns a pointer to an array of all node values in an interleaved array with the layout [X1,...
int AddRGBPoints(vtkDoubleArray *x, vtkDoubleArray *rgbColors)
Add/Remove a point to/from the function defined in RGB or HSV Return the index of the point (0 based)...
double BelowRangeColor[3]
The below-range color.
int GetSize()
How many nodes define this function?
void SetColorSpaceToDiverging()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
vtkColorTransferFunctionInternals * Internal
int AddHSVPoint(double x, double h, double s, double v, double midpoint, double sharpness)
Add/Remove a point to/from the function defined in RGB or HSV Return the index of the point (0 based)...
void MovePoint(double oldX, double newX)
Moves point from oldX to newX.
static vtkColorTransferFunction * New()
double * GetColor(double x)
Returns an RGB color for the specified scalar value.
int GetNodeValue(int index, double val[6])
For the node specified by index, set/get the location (X), R, G, and B values, midpoint,...
double Range[2]
The min and max node locations.
double FindMinimumXDistance()
Traverses the nodes to find the minimum distance.
void SetRange(const double rng[2]) override
Set the range of scalars being mapped.
virtual void GetRange(double &arg1, double &arg2)
Returns min and max position of all function points.
void SetScaleToLinear()
Set the type of scale to use, linear or logarithmic.
double AboveRangeColor[3]
The above-range color.
int AddRGBPoint(double x, double r, double g, double b)
Add/Remove a point to/from the function defined in RGB or HSV Return the index of the point (0 based)...
virtual void SetNanColor(double, double, double)
Set the RGB color to use when a NaN (not a number) is encountered.
void SetColorSpaceToLab()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
vtkTypeBool HSVWrap
Specify if HSV is wrap or not.
double * Function
Temporary array to store data from the nodes.
void SetColorSpaceToStep()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
const unsigned char * GetTable(double x1, double x2, int n)
Fills in a table of n colors mapped from values mapped with even spacing between x1 and x2,...
void AddRGBSegment(double x1, double r1, double g1, double b1, double x2, double r2, double g2, double b2)
Add two points to the function and remove all the points between them.
int SetNodeValue(int index, double val[6])
For the node specified by index, set/get the location (X), R, G, and B values, midpoint,...
double GetBlueValue(double x)
Get the color components individually.
double * GetRange() override
Returns min and max position of all function points.
void ShallowCopy(vtkColorTransferFunction *f)
void SetColorSpaceToLabCIEDE2000()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
void FillFromDataPointer(int n, double *ptr)
Defines the nodes from an array ptr with the layout [X1, R1, G1, B1, X2, R2, G2, B2,...
vtkTypeBool UseAboveRangeColor
Flag indicating whether below-range color should be used.
vtkTypeBool UseBelowRangeColor
Flag indicating whether below-range color should be used.
vtkTypeBool Clamping
Determines the function value outside of defined points Zero = always return 0.0 outside of defined p...
void GetColor(double x, double rgb[3]) override
Map one value through the lookup table and store the color as an RGB array of doubles between 0 and 1...
vtkTypeBool AllowDuplicateScalars
If on, the same scalar value may have more than one node assigned to it.
void SetColorSpaceToRGB()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, PROLAB, Diverging or Step.
void SetRange(double, double) override
Set the range of scalars being mapped.
void SortAndUpdateRange()
Internal method to sort the vector and update the Range whenever a node is added, edited or removed I...
virtual void SetNanOpacity(double)
Get/Set the opacity to use when a NaN (not a number) is encountered.
void GetIndexedColor(vtkIdType idx, double rgba[4]) override
Return a color given an integer index.
virtual void GetRange(double _arg[2])
Returns min and max position of all function points.
bool UpdateRange()
Returns true if the range has been changed.
virtual void SetScale(int)
Set the type of scale to use, linear or logarithmic.
double GetGreenValue(double x)
Get the color components individually.
dynamic, self-adjusting array of double
a simple class to control print indentation
Definition vtkIndent.h:29
virtual void GetColor(double v, double rgb[3])
Map one value through the lookup table and store the color as an RGB array of doubles between 0 and 1...
Computes the portion of a dataset which is inside a selection.
record modification and/or execution time
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_CTF_DIVERGING
#define VTK_CTF_PROLAB
#define VTK_CTF_LAB_CIEDE2000
#define VTK_CTF_RGB
#define VTK_CTF_LAB
#define VTK_CTF_LINEAR
#define VTK_CTF_HSV
#define VTK_CTF_STEP
#define VTK_CTF_LOG10
int vtkIdType
Definition vtkType.h:368
#define VTK_SIZEHINT(...)
#define VTK_MARSHALMANUAL