VTK  9.2.6
vtkLookupTable.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkLookupTable.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=========================================================================*/
53
54#ifndef vtkLookupTable_h
55#define vtkLookupTable_h
56
57#include "vtkCommonCoreModule.h" // For export macro
58#include "vtkScalarsToColors.h"
59
60#include "vtkUnsignedCharArray.h" // Needed for inline method
61
62#define VTK_RAMP_LINEAR 0
63#define VTK_RAMP_SCURVE 1
64#define VTK_RAMP_SQRT 2
65#define VTK_SCALE_LINEAR 0
66#define VTK_SCALE_LOG10 1
67
68class VTKCOMMONCORE_EXPORT vtkLookupTable : public vtkScalarsToColors
69{
70public:
72
83
89
91 void PrintSelf(ostream& os, vtkIndent indent) override;
92
94
98 int IsOpaque() override;
99 int IsOpaque(vtkAbstractArray* scalars, int colorMode, int component) override;
100 int IsOpaque(vtkAbstractArray* scalars, int colorMode, int component,
101 vtkUnsignedCharArray* ghosts, unsigned char ghostsToSkip = 0xff) override;
103
108 int Allocate(int sz = 256, int ext = 256);
109
114 void Build() override;
115
123 virtual void ForceBuild();
124
129
131
143 vtkSetMacro(Ramp, int);
147 vtkGetMacro(Ramp, int);
149
151
156 void SetScale(int scale);
159 vtkGetMacro(Scale, int);
161
163
171 virtual void SetTableRange(const double r[2]);
172 virtual void SetTableRange(double min, double max);
173 vtkGetVectorMacro(TableRange, double, 2);
175
177
181 vtkSetVector2Macro(HueRange, double);
182 vtkGetVector2Macro(HueRange, double);
184
186
190 vtkSetVector2Macro(SaturationRange, double);
191 vtkGetVector2Macro(SaturationRange, double);
193
195
199 vtkSetVector2Macro(ValueRange, double);
200 vtkGetVector2Macro(ValueRange, double);
202
204
208 vtkSetVector2Macro(AlphaRange, double);
209 vtkGetVector2Macro(AlphaRange, double);
211
213
217 vtkSetVector4Macro(NanColor, double);
218 vtkGetVector4Macro(NanColor, double);
220
226
230 static void GetColorAsUnsignedChars(const double colorIn[4], unsigned char colorOut[4]);
231
233
237 vtkSetVector4Macro(BelowRangeColor, double);
238 vtkGetVector4Macro(BelowRangeColor, double);
240
242
249
251
255 vtkSetVector4Macro(AboveRangeColor, double);
256 vtkGetVector4Macro(AboveRangeColor, double);
258
260
267
271 const unsigned char* MapValue(double v) override;
272
277 void GetColor(double v, double rgb[3]) override;
278
283 double GetOpacity(double v) override;
284
294 virtual vtkIdType GetIndex(double v);
295
297
303
310 virtual void SetTableValue(vtkIdType indx, const double rgba[4]);
311
316 virtual void SetTableValue(vtkIdType indx, double r, double g, double b, double a = 1.0);
317
323
328 void GetTableValue(vtkIdType indx, double rgba[4]);
329
334 unsigned char* GetPointer(vtkIdType id) { return this->Table->GetPointer(4 * id); }
335
346 unsigned char* WritePointer(vtkIdType id, int number);
347
349
353 double* GetRange() VTK_SIZEHINT(2) override { return this->GetTableRange(); }
354 void SetRange(double min, double max) override { this->SetTableRange(min, max); }
355 void SetRange(const double rng[2]) override { this->SetRange(rng[0], rng[1]); }
357
364 static void GetLogRange(const double range[2], double log_range[2]);
365
369 static double ApplyLogScale(double v, const double range[2], const double log_range[2]);
370
372
378 vtkSetClampMacro(NumberOfColors, vtkIdType, 2, VTK_ID_MAX);
381
383
389 vtkGetObjectMacro(Table, vtkUnsignedCharArray);
391
397 void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
398 int numberOfValues, int inputIncrement, int outputFormat) override;
399
403 void DeepCopy(vtkScalarsToColors* obj) override;
404
409 int UsingLogScale() override { return (this->GetScale() == VTK_SCALE_LOG10) ? 1 : 0; }
410
415
423 void GetIndexedColor(vtkIdType idx, double rgba[4]) override;
424
425protected:
426 vtkLookupTable(int sze = 256, int ext = 256);
427 ~vtkLookupTable() override;
428
431 double TableRange[2];
432 double HueRange[2];
434 double ValueRange[2];
435 double AlphaRange[2];
436 double NanColor[4];
441
442 int Scale;
443 int Ramp;
446 double RGBA[4]; // used during conversion process
447 unsigned char NanColorChar[4];
448
452
457
458private:
459 vtkLookupTable(const vtkLookupTable&) = delete;
460 void operator=(const vtkLookupTable&) = delete;
461};
462
463//----------------------------------------------------------------------------
464inline unsigned char* vtkLookupTable::WritePointer(vtkIdType id, int number)
465{
466 this->InsertTime.Modified();
467 return this->Table->WritePointer(4 * id, 4 * number);
468}
469
470#endif
Abstract superclass for all arrays.
a simple class to control print indentation
Definition vtkIndent.h:34
void SetScaleToLinear()
Set the type of scale to use, linear or logarithmic.
virtual void ForceBuild()
Force the lookup table to regenerate from hue, saturation, value, and alpha min/max values.
static const vtkIdType ABOVE_RANGE_COLOR_INDEX
Constants for offsets of special colors (e.g., NanColor, BelowRangeColor, AboveRangeColor) from the m...
double GetOpacity(double v) override
Map one value through the lookup table and return the alpha value (the opacity) as a double between 0...
double TableRange[2]
double SaturationRange[2]
vtkIdType GetNumberOfAvailableColors() override
Get the number of available colors for mapping to.
static const vtkIdType NUMBER_OF_SPECIAL_COLORS
Constants for offsets of special colors (e.g., NanColor, BelowRangeColor, AboveRangeColor) from the m...
int UsingLogScale() override
This should return 1 if the subclass is using log scale for mapping scalars to colors.
void GetIndexedColor(vtkIdType idx, double rgba[4]) override
Return a color given an integer index.
static vtkLookupTable * New()
Construct with range=[0,1]; and hsv ranges set up for rainbow color table (from red to blue).
vtkTimeStamp OpaqueFlagBuildTime
int IsOpaque(vtkAbstractArray *scalars, int colorMode, int component) override
Return true if all of the values defining the mapping have an opacity equal to 1.
void ResizeTableForSpecialColors()
Resize the LookupTable to have enough room for the out-of-range colors.
static void GetColorAsUnsignedChars(const double colorIn[4], unsigned char colorOut[4])
Given an RGBA[4] color in the [0,1] range, convert it to RGBA[4] in the [0,255] range.
virtual void SetTableValue(vtkIdType indx, const double rgba[4])
Directly load color into lookup table.
static const vtkIdType BELOW_RANGE_COLOR_INDEX
Constants for offsets of special colors (e.g., NanColor, BelowRangeColor, AboveRangeColor) from the m...
void SetNumberOfTableValues(vtkIdType number)
Specify the number of values (i.e., colors) in the lookup table.
vtkTimeStamp BuildTime
double ValueRange[2]
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTimeStamp InsertTime
void DeepCopy(vtkScalarsToColors *obj) override
Copy the contents from another LookupTable.
static const vtkIdType REPEATED_LAST_COLOR_INDEX
Constants for offsets of special colors (e.g., NanColor, BelowRangeColor, AboveRangeColor) from the m...
int Allocate(int sz=256, int ext=256)
Allocate a color table of specified size.
double * GetTableValue(vtkIdType indx)
Return an RGBA color value for the given index into the lookup table.
double AboveRangeColor[4]
void BuildSpecialColors()
Copies the "special" colors into the given table.
virtual void SetTableValue(vtkIdType indx, double r, double g, double b, double a=1.0)
Directly load color into lookup table.
const unsigned char * MapValue(double v) override
Map one value through the lookup table, returning an RBGA[4] color.
void MapScalarsThroughTable2(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat) override
Map a set of scalars through the lookup table.
virtual vtkIdType GetIndex(double v)
Return the table index associated with a particular value.
void SetRampToLinear()
Set the shape of the table ramp to either S-curve, linear, or sqrt.
virtual void SetTableRange(double min, double max)
Set/Get the minimum/maximum scalar values for scalar mapping.
void SetRampToSQRT()
Set the shape of the table ramp to either S-curve, linear, or sqrt.
void SetRange(const double rng[2]) override
Sets/Gets the range of scalars which will be mapped.
vtkUnsignedCharArray * Table
void SetScaleToLog10()
Set the type of scale to use, linear or logarithmic.
void SetRange(double min, double max) override
Sets/Gets the range of scalars which will be mapped.
void SetRampToSCurve()
Set the shape of the table ramp to either S-curve, linear, or sqrt.
double AlphaRange[2]
unsigned char * WritePointer(vtkIdType id, int number)
Get pointer to data.
static void GetLogRange(const double range[2], double log_range[2])
Returns the log of range in log_range.
void GetColor(double v, double rgb[3]) override
Map one value through the lookup table and return the color as an RGB[3] array of doubles between 0 a...
void SetTable(vtkUnsignedCharArray *)
Set/Get the internal table array that is used to map the scalars to colors.
int IsOpaque(vtkAbstractArray *scalars, int colorMode, int component, vtkUnsignedCharArray *ghosts, unsigned char ghostsToSkip=0xff) override
Return true if all of the values defining the mapping have an opacity equal to 1.
double BelowRangeColor[4]
vtkLookupTable(int sze=256, int ext=256)
unsigned char * GetPointer(vtkIdType id)
Get pointer to color table data.
void SetScale(int scale)
Set the type of scale to use, linear or logarithmic.
vtkIdType GetNumberOfTableValues()
Specify the number of values (i.e., colors) in the lookup table.
virtual int GetScale()
Set the type of scale to use, linear or logarithmic.
virtual void SetRamp(int)
Set the shape of the table ramp to either S-curve, linear, or sqrt.
void GetTableValue(vtkIdType indx, double rgba[4])
Return an RGBA color value for the given index into the lookup table.
vtkTimeStamp SpecialColorsBuildTime
static double ApplyLogScale(double v, const double range[2], const double log_range[2])
Apply log to value, with appropriate constraints.
virtual void SetTableRange(const double r[2])
Set/Get the minimum/maximum scalar values for scalar mapping.
~vtkLookupTable() override
virtual double * GetTableRange()
Set/Get the minimum/maximum scalar values for scalar mapping.
void Build() override
Generate lookup table from hue, saturation, value, alpha min/max values.
unsigned char * GetNanColorAsUnsignedChars()
Return the NanColor as a pointer to 4 unsigned chars.
vtkTypeBool UseAboveRangeColor
unsigned char NanColorChar[4]
double * GetRange() override
Sets/Gets the range of scalars which will be mapped.
vtkIdType NumberOfColors
vtkTypeBool UseBelowRangeColor
int IsOpaque() override
Return true if all of the values defining the mapping have an opacity equal to 1.
static const vtkIdType NAN_COLOR_INDEX
Constants for offsets of special colors (e.g., NanColor, BelowRangeColor, AboveRangeColor) from the m...
record modification and/or execution time
dynamic, self-adjusting array of unsigned char
int vtkTypeBool
Definition vtkABI.h:69
#define VTK_SCALE_LOG10
#define VTK_SCALE_LINEAR
#define VTK_RAMP_SQRT
#define VTK_RAMP_LINEAR
#define VTK_RAMP_SCURVE
int vtkIdType
Definition vtkType.h:332
#define VTK_ID_MAX
Definition vtkType.h:336
#define VTK_SIZEHINT(...)
#define max(a, b)