VTK  9.0.1
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(
92  double x1, double r1, double g1, double b1, double x2, double r2, double g2, double b2);
93  void AddHSVSegment(
94  double x1, double h1, double s1, double v1, double x2, double h2, double s2, double v2);
96 
100  void RemoveAllPoints();
101 
105  double* GetColor(double x) VTK_SIZEHINT(3) { return vtkScalarsToColors::GetColor(x); }
106  void GetColor(double x, double rgb[3]) override;
107 
109 
112  double GetRedValue(double x);
113  double GetGreenValue(double x);
114  double GetBlueValue(double x);
116 
118 
123  int GetNodeValue(int index, double val[6]);
124  int SetNodeValue(int index, double val[6]);
126 
130  const unsigned char* MapValue(double v) override;
131 
133 
136  double* GetRange() VTK_SIZEHINT(2) override { return this->Range; }
137  virtual void GetRange(double& arg1, double& arg2)
138  {
139  arg1 = this->Range[0];
140  arg2 = this->Range[1];
141  }
142  virtual void GetRange(double _arg[2]) { this->GetRange(_arg[0], _arg[1]); }
144 
150  int AdjustRange(double range[2]);
151 
153 
159  void GetTable(double x1, double x2, int n, double* table);
160  void GetTable(double x1, double x2, int n, float* table);
161  const unsigned char* GetTable(double x1, double x2, int n);
163 
173  void BuildFunctionFromTable(double x1, double x2, int size, double* table);
174 
176 
184  vtkSetClampMacro(Clamping, vtkTypeBool, 0, 1);
185  vtkGetMacro(Clamping, vtkTypeBool);
186  vtkBooleanMacro(Clamping, vtkTypeBool);
188 
190 
202  vtkSetClampMacro(ColorSpace, int, VTK_CTF_RGB, VTK_CTF_STEP);
203  void SetColorSpaceToRGB() { this->SetColorSpace(VTK_CTF_RGB); }
204  void SetColorSpaceToHSV() { this->SetColorSpace(VTK_CTF_HSV); }
205  void SetColorSpaceToLab() { this->SetColorSpace(VTK_CTF_LAB); }
206  void SetColorSpaceToLabCIEDE2000() { this->SetColorSpace(VTK_CTF_LAB_CIEDE2000); }
207  void SetColorSpaceToDiverging() { this->SetColorSpace(VTK_CTF_DIVERGING); }
208  void SetColorSpaceToStep() { this->SetColorSpace(VTK_CTF_STEP); }
209  vtkGetMacro(ColorSpace, int);
210  vtkSetMacro(HSVWrap, vtkTypeBool);
211  vtkGetMacro(HSVWrap, vtkTypeBool);
212  vtkBooleanMacro(HSVWrap, vtkTypeBool);
214 
216 
221  vtkSetMacro(Scale, int);
222  void SetScaleToLinear() { this->SetScale(VTK_CTF_LINEAR); }
223  void SetScaleToLog10() { this->SetScale(VTK_CTF_LOG10); }
224  vtkGetMacro(Scale, int);
226 
228 
233  vtkSetVector3Macro(NanColor, double);
234  vtkGetVector3Macro(NanColor, double);
236 
238 
242  vtkSetMacro(NanOpacity, double);
243  vtkGetMacro(NanOpacity, double);
245 
247 
252  virtual void SetNanColorRGBA(double r, double g, double b, double a)
253  {
254  this->SetNanColor(r, g, b);
255  this->SetNanOpacity(a);
256  }
257 
258  void SetNanColorRGBA(double rgba[4])
259  {
260  this->SetNanColorRGBA(rgba[0], rgba[1], rgba[2], rgba[3]);
261  }
263 
265 
269  vtkSetVector3Macro(BelowRangeColor, double);
270  vtkGetVector3Macro(BelowRangeColor, double);
272 
274 
277  vtkSetMacro(UseBelowRangeColor, vtkTypeBool);
278  vtkGetMacro(UseBelowRangeColor, vtkTypeBool);
279  vtkBooleanMacro(UseBelowRangeColor, vtkTypeBool);
281 
283 
287  vtkSetVector3Macro(AboveRangeColor, double);
288  vtkGetVector3Macro(AboveRangeColor, double);
290 
292 
295  vtkSetMacro(UseAboveRangeColor, vtkTypeBool);
296  vtkGetMacro(UseAboveRangeColor, vtkTypeBool);
297  vtkBooleanMacro(UseAboveRangeColor, vtkTypeBool);
299 
307  double* GetDataPointer();
308 
314  void FillFromDataPointer(int n, double* ptr);
315 
319  void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
320  int numberOfValues, int inputIncrement, int outputIncrement) override;
321 
323 
327  vtkSetMacro(AllowDuplicateScalars, vtkTypeBool);
328  vtkGetMacro(AllowDuplicateScalars, vtkTypeBool);
329  vtkBooleanMacro(AllowDuplicateScalars, vtkTypeBool);
331 
336 
343  void GetIndexedColor(vtkIdType idx, double rgba[4]) override;
344 
349  int EstimateMinNumberOfSamples(double const& x1, double const& x2);
350 
351 protected:
353  ~vtkColorTransferFunction() override;
354 
355  vtkColorTransferFunctionInternals* Internal;
356 
364 
369 
374 
378  int Scale;
379 
383  double NanColor[3];
384 
388  double NanOpacity;
389 
393  double BelowRangeColor[3];
394 
399 
403  double AboveRangeColor[3];
404 
409 
413  double* Function;
414 
418  double Range[2];
419 
423  unsigned char UnsignedCharRGBAValue[4];
424 
429 
431  unsigned char* Table;
432 
438 
443  void SetRange(double, double) override {}
444  void SetRange(const double rng[2]) override { this->SetRange(rng[0], rng[1]); }
445 
451  void SortAndUpdateRange();
452 
457  bool UpdateRange();
458 
463  void MovePoint(double oldX, double newX);
464 
468  double FindMinimumXDistance();
469 
470 private:
472  void operator=(const vtkColorTransferFunction&) = delete;
473 };
474 
475 #endif
vtkColorTransferFunction::SetColorSpaceToStep
void SetColorSpaceToStep()
Definition: vtkColorTransferFunction.h:208
vtk::Range
auto Range(IterablePtr iterable, Options &&... opts) -> typename detail::IterableTraits< typename detail::StripPointers< IterablePtr >::type >::RangeType
Generate an iterable STL proxy object for a VTK container.
Definition: vtkRange.h:85
vtkColorTransferFunction::GetRange
virtual void GetRange(double _arg[2])
Definition: vtkColorTransferFunction.h:142
vtkColorTransferFunction::GetColor
double * GetColor(double x)
Returns an RGB color for the specified scalar value.
Definition: vtkColorTransferFunction.h:105
vtkColorTransferFunction::BuildTime
vtkTimeStamp BuildTime
Definition: vtkColorTransferFunction.h:430
vtkColorTransferFunction::SetNanColorRGBA
void SetNanColorRGBA(double rgba[4])
Definition: vtkColorTransferFunction.h:258
vtkColorTransferFunction::UseBelowRangeColor
vtkTypeBool UseBelowRangeColor
Flag indicating whether below-range color should be used.
Definition: vtkColorTransferFunction.h:398
vtkColorTransferFunction::SetRange
void SetRange(double, double) override
Set the range of scalars being mapped.
Definition: vtkColorTransferFunction.h:443
vtkColorTransferFunction::AllowDuplicateScalars
vtkTypeBool AllowDuplicateScalars
If on, the same scalar value may have more than one node assigned to it.
Definition: vtkColorTransferFunction.h:428
vtkColorTransferFunction::SetRange
void SetRange(const double rng[2]) override
Definition: vtkColorTransferFunction.h:444
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkColorTransferFunction::SetNanColorRGBA
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.
Definition: vtkColorTransferFunction.h:252
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:32
VTK_CTF_LAB
#define VTK_CTF_LAB
Definition: vtkColorTransferFunction.h:46
vtkColorTransferFunction::SetColorSpaceToDiverging
void SetColorSpaceToDiverging()
Definition: vtkColorTransferFunction.h:207
vtkColorTransferFunction::Internal
vtkColorTransferFunctionInternals * Internal
Definition: vtkColorTransferFunction.h:355
vtkX3D::range
@ range
Definition: vtkX3D.h:244
vtkColorTransferFunction::Scale
int Scale
The color interpolation scale (linear or logarithmic).
Definition: vtkColorTransferFunction.h:378
vtkScalarsToColors::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkColorTransferFunction::NanOpacity
double NanOpacity
The opacity to use for not-a-number.
Definition: vtkColorTransferFunction.h:388
vtkColorTransferFunction
Defines a transfer function for mapping a property to an RGB color value.
Definition: vtkColorTransferFunction.h:54
vtkScalarsToColors::GetIndexedColor
virtual void GetIndexedColor(vtkIdType i, double rgba[4])
Get the "indexed color" assigned to an index.
vtkColorTransferFunction::SetColorSpaceToLab
void SetColorSpaceToLab()
Definition: vtkColorTransferFunction.h:205
VTK_CTF_LINEAR
#define VTK_CTF_LINEAR
Definition: vtkColorTransferFunction.h:51
VTK_CTF_LAB_CIEDE2000
#define VTK_CTF_LAB_CIEDE2000
Definition: vtkColorTransferFunction.h:48
vtkColorTransferFunction::SetScaleToLog10
void SetScaleToLog10()
Definition: vtkColorTransferFunction.h:223
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkScalarsToColors::DeepCopy
virtual void DeepCopy(vtkScalarsToColors *o)
Copy the contents from another object.
vtkColorTransferFunction::SetColorSpaceToRGB
void SetColorSpaceToRGB()
Definition: vtkColorTransferFunction.h:203
vtkColorTransferFunction::SetScaleToLinear
void SetScaleToLinear()
Definition: vtkColorTransferFunction.h:222
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkScalarsToColors.h
vtkColorTransferFunction::TableSize
int TableSize
Temporary storage for the size of the table.
Definition: vtkColorTransferFunction.h:437
vtkX3D::size
@ size
Definition: vtkX3D.h:259
VTK_CTF_RGB
#define VTK_CTF_RGB
Definition: vtkColorTransferFunction.h:44
vtkColorTransferFunction::UseAboveRangeColor
vtkTypeBool UseAboveRangeColor
Flag indicating whether below-range color should be used.
Definition: vtkColorTransferFunction.h:408
vtkScalarsToColors
Superclass for mapping scalar values to colors.
Definition: vtkScalarsToColors.h:59
vtkColorTransferFunction::Table
unsigned char * Table
Definition: vtkColorTransferFunction.h:431
vtkScalarsToColors::MapValue
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...
VTK_CTF_STEP
#define VTK_CTF_STEP
Definition: vtkColorTransferFunction.h:49
vtkScalarsToColors::GetColor
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...
vtkScalarsToColors::GetNumberOfAvailableColors
virtual vtkIdType GetNumberOfAvailableColors()
Get the number of available colors for mapping to.
vtkColorTransferFunction::ColorSpace
int ColorSpace
The color space in which interpolation is performed.
Definition: vtkColorTransferFunction.h:368
vtkColorTransferFunction::GetRange
double * GetRange() override
Returns min and max position of all function points.
Definition: vtkColorTransferFunction.h:136
vtkColorTransferFunction::Clamping
vtkTypeBool Clamping
Determines the function value outside of defined points Zero = always return 0.0 outside of defined p...
Definition: vtkColorTransferFunction.h:363
vtkColorTransferFunction::SetColorSpaceToHSV
void SetColorSpaceToHSV()
Definition: vtkColorTransferFunction.h:204
vtkScalarsToColors::MapScalarsThroughTable2
virtual void MapScalarsThroughTable2(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
An internal method typically not used in applications.
vtkColorTransferFunction::SetColorSpaceToLabCIEDE2000
void SetColorSpaceToLabCIEDE2000()
Definition: vtkColorTransferFunction.h:206
vtkColorTransferFunction::GetRange
virtual void GetRange(double &arg1, double &arg2)
Definition: vtkColorTransferFunction.h:137
vtkScalarsToColors::New
static vtkScalarsToColors * New()
VTK_CTF_LOG10
#define VTK_CTF_LOG10
Definition: vtkColorTransferFunction.h:52
vtkColorTransferFunction::Function
double * Function
Temporary array to store data from the nodes.
Definition: vtkColorTransferFunction.h:413
VTK_CTF_DIVERGING
#define VTK_CTF_DIVERGING
Definition: vtkColorTransferFunction.h:47
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
h
VTK_CTF_HSV
#define VTK_CTF_HSV
Definition: vtkColorTransferFunction.h:45
vtkColorTransferFunction::HSVWrap
vtkTypeBool HSVWrap
Specify if HSV is wrap or not.
Definition: vtkColorTransferFunction.h:373