VTK  9.1.0
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=========================================================================*/
145#ifndef vtkColorTransferFunction_h
146#define vtkColorTransferFunction_h
147
148#include "vtkRenderingCoreModule.h" // For export macro
149#include "vtkScalarsToColors.h"
150
151class vtkColorTransferFunctionInternals;
152
153#define VTK_CTF_RGB 0
154#define VTK_CTF_HSV 1
155#define VTK_CTF_LAB 2
156#define VTK_CTF_DIVERGING 3
157#define VTK_CTF_LAB_CIEDE2000 4
158#define VTK_CTF_STEP 5
159
160#define VTK_CTF_LINEAR 0
161#define VTK_CTF_LOG10 1
162
163class VTKRENDERINGCORE_EXPORT vtkColorTransferFunction : public vtkScalarsToColors
164{
165public:
168 void DeepCopy(vtkScalarsToColors* f) override;
170
174 void PrintSelf(ostream& os, vtkIndent indent) override;
175
179 int GetSize();
180
182
188 int AddRGBPoint(double x, double r, double g, double b);
189 int AddRGBPoint(double x, double r, double g, double b, double midpoint, double sharpness);
190 int AddHSVPoint(double x, double h, double s, double v);
191 int AddHSVPoint(double x, double h, double s, double v, double midpoint, double sharpness);
192 int RemovePoint(double x);
194
196
201 double x1, double r1, double g1, double b1, double x2, double r2, double g2, double b2);
203 double x1, double h1, double s1, double v1, double x2, double h2, double s2, double v2);
205
210
214 double* GetColor(double x) VTK_SIZEHINT(3) { return vtkScalarsToColors::GetColor(x); }
215 void GetColor(double x, double rgb[3]) override;
216
218
221 double GetRedValue(double x);
222 double GetGreenValue(double x);
223 double GetBlueValue(double x);
225
227
232 int GetNodeValue(int index, double val[6]);
233 int SetNodeValue(int index, double val[6]);
235
239 const unsigned char* MapValue(double v) override;
240
242
245 double* GetRange() VTK_SIZEHINT(2) override { return this->Range; }
246 virtual void GetRange(double& arg1, double& arg2)
247 {
248 arg1 = this->Range[0];
249 arg2 = this->Range[1];
250 }
251 virtual void GetRange(double _arg[2]) { this->GetRange(_arg[0], _arg[1]); }
253
259 int AdjustRange(double range[2]);
260
262
268 void GetTable(double x1, double x2, int n, double* table);
269 void GetTable(double x1, double x2, int n, float* table);
270 const unsigned char* GetTable(double x1, double x2, int n);
272
282 void BuildFunctionFromTable(double x1, double x2, int size, double* table);
283
285
293 vtkSetClampMacro(Clamping, vtkTypeBool, 0, 1);
294 vtkGetMacro(Clamping, vtkTypeBool);
295 vtkBooleanMacro(Clamping, vtkTypeBool);
297
299
311 vtkSetClampMacro(ColorSpace, int, VTK_CTF_RGB, VTK_CTF_STEP);
312 void SetColorSpaceToRGB() { this->SetColorSpace(VTK_CTF_RGB); }
313 void SetColorSpaceToHSV() { this->SetColorSpace(VTK_CTF_HSV); }
314 void SetColorSpaceToLab() { this->SetColorSpace(VTK_CTF_LAB); }
315 void SetColorSpaceToLabCIEDE2000() { this->SetColorSpace(VTK_CTF_LAB_CIEDE2000); }
316 void SetColorSpaceToDiverging() { this->SetColorSpace(VTK_CTF_DIVERGING); }
317 void SetColorSpaceToStep() { this->SetColorSpace(VTK_CTF_STEP); }
318 vtkGetMacro(ColorSpace, int);
319 vtkSetMacro(HSVWrap, vtkTypeBool);
320 vtkGetMacro(HSVWrap, vtkTypeBool);
321 vtkBooleanMacro(HSVWrap, vtkTypeBool);
323
325
330 vtkSetMacro(Scale, int);
331 void SetScaleToLinear() { this->SetScale(VTK_CTF_LINEAR); }
332 void SetScaleToLog10() { this->SetScale(VTK_CTF_LOG10); }
333 vtkGetMacro(Scale, int);
335
337
342 vtkSetVector3Macro(NanColor, double);
343 vtkGetVector3Macro(NanColor, double);
345
347
351 vtkSetMacro(NanOpacity, double);
352 vtkGetMacro(NanOpacity, double);
354
356
361 virtual void SetNanColorRGBA(double r, double g, double b, double a)
362 {
363 this->SetNanColor(r, g, b);
364 this->SetNanOpacity(a);
365 }
366
367 void SetNanColorRGBA(double rgba[4])
368 {
369 this->SetNanColorRGBA(rgba[0], rgba[1], rgba[2], rgba[3]);
370 }
372
374
378 vtkSetVector3Macro(BelowRangeColor, double);
379 vtkGetVector3Macro(BelowRangeColor, double);
381
383
386 vtkSetMacro(UseBelowRangeColor, vtkTypeBool);
387 vtkGetMacro(UseBelowRangeColor, vtkTypeBool);
388 vtkBooleanMacro(UseBelowRangeColor, vtkTypeBool);
390
392
396 vtkSetVector3Macro(AboveRangeColor, double);
397 vtkGetVector3Macro(AboveRangeColor, double);
399
401
404 vtkSetMacro(UseAboveRangeColor, vtkTypeBool);
405 vtkGetMacro(UseAboveRangeColor, vtkTypeBool);
406 vtkBooleanMacro(UseAboveRangeColor, vtkTypeBool);
408
416 double* GetDataPointer();
417
423 void FillFromDataPointer(int n, double* ptr);
424
428 void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
429 int numberOfValues, int inputIncrement, int outputIncrement) override;
430
432
436 vtkSetMacro(AllowDuplicateScalars, vtkTypeBool);
437 vtkGetMacro(AllowDuplicateScalars, vtkTypeBool);
438 vtkBooleanMacro(AllowDuplicateScalars, vtkTypeBool);
440
445
452 void GetIndexedColor(vtkIdType idx, double rgba[4]) override;
453
458 int EstimateMinNumberOfSamples(double const& x1, double const& x2);
459
460protected:
463
464 vtkColorTransferFunctionInternals* Internal;
465
473
478
483
487 int Scale;
488
492 double NanColor[3];
493
498
502 double BelowRangeColor[3];
503
508
512 double AboveRangeColor[3];
513
518
522 double* Function;
523
527 double Range[2];
528
532 unsigned char UnsignedCharRGBAValue[4];
533
538
540 unsigned char* Table;
541
547
552 void SetRange(double, double) override {}
553 void SetRange(const double rng[2]) override { this->SetRange(rng[0], rng[1]); }
554
561
567
572 void MovePoint(double oldX, double newX);
573
578
579private:
581 void operator=(const vtkColorTransferFunction&) = delete;
582};
583
584#endif
Defines a transfer function for mapping a property to an RGB color value.
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.
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)...
int TableSize
Temporary storage for the size of the table.
void PrintSelf(ostream &os, vtkIndent indent) override
Print method for vtkColorTransferFunction.
~vtkColorTransferFunction() override
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.
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, 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.
double * GetDataPointer()
Returns a pointer to an array of all node values in an interleaved array with the layout [X1,...
int GetSize()
How many nodes define this function?
void SetColorSpaceToDiverging()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, 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 FindMinimumXDistance()
Traverses the nodes to find the minimum distance.
void SetRange(const double rng[2]) override
Sets/Gets the range of scalars that will be 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.
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)...
void SetColorSpaceToLab()
Set/Get the color space used for interpolation: RGB, HSV, CIELAB, 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, 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, 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, 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...
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.
double GetGreenValue(double x)
Get the color components individually.
vtkFrustumSelector is a vtkSelector that selects elements based on whether they are inside or interse...
a simple class to control print indentation
Definition: vtkIndent.h:113
Superclass for mapping scalar values to colors.
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...
record modification and/or execution time
Definition: vtkTimeStamp.h:52
@ range
Definition: vtkX3D.h:244
@ size
Definition: vtkX3D.h:259
@ index
Definition: vtkX3D.h:252
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
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_CTF_DIVERGING
#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:332
#define VTK_SIZEHINT(...)