VTK
vtkColorTransferFunction.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkColorTransferFunction.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
36 #ifndef vtkColorTransferFunction_h
37 #define vtkColorTransferFunction_h
38 
39 #include "vtkRenderingCoreModule.h" // For export macro
40 #include "vtkScalarsToColors.h"
41 
42 class vtkColorTransferFunctionInternals;
43 
44 #define VTK_CTF_RGB 0
45 #define VTK_CTF_HSV 1
46 #define VTK_CTF_LAB 2
47 #define VTK_CTF_DIVERGING 3
48 #define VTK_CTF_LAB_CIEDE2000 4
49 #define VTK_CTF_STEP 5
50 
51 #define VTK_CTF_LINEAR 0
52 #define VTK_CTF_LOG10 1
53 
54 class VTKRENDERINGCORE_EXPORT vtkColorTransferFunction : public vtkScalarsToColors
55 {
56 public:
57  static vtkColorTransferFunction* New();
59  void DeepCopy(vtkScalarsToColors* f) override;
60  void ShallowCopy(vtkColorTransferFunction* f);
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);
81  int AddHSVPoint(double x, double h, double s, double v);
82  int AddHSVPoint(double x, double h, double s, double v, double midpoint, double sharpness);
83  int RemovePoint(double x);
85 
87 
91  void AddRGBSegment(double x1,
92  double r1,
93  double g1,
94  double b1,
95  double x2,
96  double r2,
97  double g2,
98  double b2);
99  void AddHSVSegment(double x1,
100  double h1,
101  double s1,
102  double v1,
103  double x2,
104  double h2,
105  double s2,
106  double v2);
108 
112  void RemoveAllPoints();
113 
117  double* GetColor(double x) VTK_SIZEHINT(3) { return vtkScalarsToColors::GetColor(x); }
118  void GetColor(double x, double rgb[3]) override;
119 
121 
124  double GetRedValue(double x);
125  double GetGreenValue(double x);
126  double GetBlueValue(double x);
128 
130 
135  int GetNodeValue(int index, double val[6]);
136  int SetNodeValue(int index, double val[6]);
138 
142  const unsigned char* MapValue(double v) override;
143 
145 
148  double* GetRange() VTK_SIZEHINT(2) override { return this->Range; }
149  virtual void GetRange(double& arg1, double& arg2)
150  {
151  arg1 = this->Range[0];
152  arg2 = this->Range[1];
153  }
154  virtual void GetRange(double _arg[2]) { this->GetRange(_arg[0], _arg[1]); }
156 
162  int AdjustRange(double range[2]);
163 
165 
171  void GetTable(double x1, double x2, int n, double* table);
172  void GetTable(double x1, double x2, int n, float* table);
173  const unsigned char* GetTable(double x1, double x2, int n);
175 
185  void BuildFunctionFromTable(double x1, double x2, int size, double* table);
186 
188 
196  vtkSetClampMacro(Clamping, vtkTypeBool, 0, 1);
197  vtkGetMacro(Clamping, vtkTypeBool);
198  vtkBooleanMacro(Clamping, vtkTypeBool);
200 
202 
214  vtkSetClampMacro(ColorSpace, int, VTK_CTF_RGB, VTK_CTF_STEP);
215  void SetColorSpaceToRGB() { this->SetColorSpace(VTK_CTF_RGB); }
216  void SetColorSpaceToHSV() { this->SetColorSpace(VTK_CTF_HSV); }
217  void SetColorSpaceToLab() { this->SetColorSpace(VTK_CTF_LAB); }
218  void SetColorSpaceToLabCIEDE2000() { this->SetColorSpace(VTK_CTF_LAB_CIEDE2000); }
219  void SetColorSpaceToDiverging() { this->SetColorSpace(VTK_CTF_DIVERGING); }
220  void SetColorSpaceToStep() { this->SetColorSpace(VTK_CTF_STEP); }
221  vtkGetMacro(ColorSpace, int);
222  vtkSetMacro(HSVWrap, vtkTypeBool);
223  vtkGetMacro(HSVWrap, vtkTypeBool);
224  vtkBooleanMacro(HSVWrap, vtkTypeBool);
226 
228 
233  vtkSetMacro(Scale, int);
234  void SetScaleToLinear() { this->SetScale(VTK_CTF_LINEAR); }
235  void SetScaleToLog10() { this->SetScale(VTK_CTF_LOG10); }
236  vtkGetMacro(Scale, int);
238 
240 
245  vtkSetVector3Macro(NanColor, double);
246  vtkGetVector3Macro(NanColor, double);
248 
250 
254  vtkSetMacro(NanOpacity, double);
255  vtkGetMacro(NanOpacity, double);
257 
259 
264  virtual void SetNanColorRGBA(double r, double g, double b, double a)
265  {
266  this->SetNanColor(r, g, b);
267  this->SetNanOpacity(a);
268  }
269 
270  void SetNanColorRGBA(double rgba[4])
271  {
272  this->SetNanColorRGBA(rgba[0], rgba[1], rgba[2], rgba[3]);
273  }
275 
277 
281  vtkSetVector3Macro(BelowRangeColor, double);
282  vtkGetVector3Macro(BelowRangeColor, double);
284 
286 
289  vtkSetMacro(UseBelowRangeColor, vtkTypeBool);
290  vtkGetMacro(UseBelowRangeColor, vtkTypeBool);
291  vtkBooleanMacro(UseBelowRangeColor, vtkTypeBool);
293 
295 
299  vtkSetVector3Macro(AboveRangeColor, double);
300  vtkGetVector3Macro(AboveRangeColor, double);
302 
304 
307  vtkSetMacro(UseAboveRangeColor, vtkTypeBool);
308  vtkGetMacro(UseAboveRangeColor, vtkTypeBool);
309  vtkBooleanMacro(UseAboveRangeColor, vtkTypeBool);
311 
319  double* GetDataPointer();
320 
326  void FillFromDataPointer(int n, double* ptr);
327 
331  void MapScalarsThroughTable2(void* input,
332  unsigned char* output,
333  int inputDataType,
334  int numberOfValues,
335  int inputIncrement,
336  int outputIncrement) override;
337 
339 
343  vtkSetMacro(AllowDuplicateScalars, vtkTypeBool);
344  vtkGetMacro(AllowDuplicateScalars, vtkTypeBool);
345  vtkBooleanMacro(AllowDuplicateScalars, vtkTypeBool);
347 
352 
359  void GetIndexedColor(vtkIdType idx, double rgba[4]) override;
360 
365  int EstimateMinNumberOfSamples(double const& x1, double const& x2);
366 
367 protected:
369  ~vtkColorTransferFunction() override;
370 
371  vtkColorTransferFunctionInternals* Internal;
372 
380 
385 
390 
394  int Scale;
395 
399  double NanColor[3];
400 
404  double NanOpacity;
405 
409  double BelowRangeColor[3];
410 
415 
419  double AboveRangeColor[3];
420 
425 
429  double* Function;
430 
434  double Range[2];
435 
439  unsigned char UnsignedCharRGBAValue[4];
440 
445 
447  unsigned char* Table;
448 
454 
459  void SetRange(double, double) override {}
460  void SetRange(const double rng[2]) override { this->SetRange(rng[0], rng[1]); }
461 
467  void SortAndUpdateRange();
468 
473  bool UpdateRange();
474 
479  void MovePoint(double oldX, double newX);
480 
484  double FindMinimumXDistance();
485 
486 private:
488  void operator=(const vtkColorTransferFunction&) = delete;
489 };
490 
491 #endif
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.
double NanOpacity
The opacity to use for not-a-number.
int Scale
The color interpolation scale (linear or logarithmic).
#define VTK_CTF_HSV
record modification and/or execution time
Definition: vtkTimeStamp.h:35
void SetScaleToLinear()
Set the type of scale to use, linear or logarithmic.
virtual void MapScalarsThroughTable2(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
An internal method typically not used in applications.
int vtkIdType
Definition: vtkType.h:347
#define VTK_CTF_LAB
void SetRange(double, double) override
Set the range of scalars being mapped.
vtkColorTransferFunctionInternals * Internal
virtual const unsigned char * MapValue(double v)
Map one value through the lookup table and return a color defined as an RGBA unsigned char tuple (4 b...
int vtkTypeBool
Definition: vtkABI.h:69
Superclass for mapping scalar values to colors.
static vtkScalarsToColors * New()
#define VTK_CTF_LINEAR
double * GetColor(double x)
Returns an RGB color for the specified scalar value.
void SetColorSpaceToLab()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, Diverging or Step.
#define VTK_CTF_STEP
a simple class to control print indentation
Definition: vtkIndent.h:39
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...
#define VTK_CTF_LOG10
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTypeBool HSVWrap
Specify if HSV is wrap or not.
void SetColorSpaceToRGB()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, Diverging or Step.
virtual void GetRange(double _arg[2])
Returns min and max position of all function points.
vtkTypeBool AllowDuplicateScalars
If on, the same scalar value may have more than one node assigned to it.
vtkTypeBool UseBelowRangeColor
Flag indicating whether below-range color should be used.
#define VTK_SIZEHINT(...)
double * GetRange() override
Returns min and max position of all function points.
vtkTypeBool UseAboveRangeColor
Flag indicating whether below-range color should be used.
virtual void GetRange(double &arg1, double &arg2)
Returns min and max position of all function points.
void SetColorSpaceToDiverging()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, Diverging or Step.
#define VTK_CTF_LAB_CIEDE2000
Defines a transfer function for mapping a property to an RGB color value.
virtual void GetIndexedColor(vtkIdType i, double rgba[4])
Get the "indexed color" assigned to an index.
int TableSize
Temporary storage for the size of the table.
void SetColorSpaceToStep()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, Diverging or Step.
vtkTypeBool Clamping
Determines the function value outside of defined points Zero = always return 0.0 outside of defined p...
double * Function
Temporary array to store data from the nodes.
void SetScaleToLog10()
Set the type of scale to use, linear or logarithmic.
virtual void DeepCopy(vtkScalarsToColors *o)
Copy the contents from another object.
void SetColorSpaceToHSV()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, Diverging or Step.
void SetRange(const double rng[2]) override
Sets/Gets the range of scalars that will be mapped.
#define VTK_CTF_DIVERGING
int ColorSpace
The color space in which interpolation is performed.
virtual vtkIdType GetNumberOfAvailableColors()
Get the number of available colors for mapping to.
#define VTK_CTF_RGB
void SetColorSpaceToLabCIEDE2000()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, Diverging or Step.
void SetNanColorRGBA(double rgba[4])
Set the RGBA color to use when a NaN (not a number) is encountered.