VTK  9.2.6
vtkScalarsToColors.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkScalarsToColors.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=========================================================================*/
45
46#ifndef vtkScalarsToColors_h
47#define vtkScalarsToColors_h
48
49#include "vtkCommonCoreModule.h" // For export macro
50#include "vtkObject.h"
51#include "vtkVariant.h" // Set/get annotation methods require variants.
52
54class vtkDataArray;
57class vtkStringArray;
59
60class VTKCOMMONCORE_EXPORT vtkScalarsToColors : public vtkObject
61{
62public:
64 void PrintSelf(ostream& os, vtkIndent indent) override;
66
68
73 virtual int IsOpaque();
74 virtual int IsOpaque(vtkAbstractArray* scalars, int colorMode, int component);
75 virtual int IsOpaque(vtkAbstractArray* scalars, int colorMode, int component,
76 vtkUnsignedCharArray* ghosts, unsigned char ghostsToSkip = 0xff);
78
83 virtual void Build() {}
84
86
89 virtual double* GetRange() VTK_SIZEHINT(2);
90 virtual void SetRange(double min, double max);
91 virtual void SetRange(const double rng[2]) { this->SetRange(rng[0], rng[1]); }
93
98 virtual const unsigned char* MapValue(double v);
99
104 virtual void GetColor(double v, double rgb[3]);
105
110 double* GetColor(double v) VTK_SIZEHINT(3)
111 {
112 this->GetColor(v, this->RGB);
113 return this->RGB;
114 }
115
121 virtual double GetOpacity(double v);
122
128 double GetLuminance(double x)
129 {
130 double rgb[3];
131 this->GetColor(x, rgb);
132 return static_cast<double>(rgb[0] * 0.30 + rgb[1] * 0.59 + rgb[2] * 0.11);
133 }
134
136
142 virtual void SetAlpha(double alpha);
143 vtkGetMacro(Alpha, double);
145
147
167 vtkDataArray* scalars, int colorMode, int component, int outputFormat = VTK_RGBA);
169 vtkAbstractArray* scalars, int colorMode, int component, int outputFormat = VTK_RGBA);
171
173
178 vtkSetMacro(VectorMode, int);
179 vtkGetMacro(VectorMode, int);
184
186 {
190 };
191
193
197 vtkSetMacro(VectorComponent, int);
198 vtkGetMacro(VectorComponent, int);
200
202
209 vtkSetMacro(VectorSize, int);
210 vtkGetMacro(VectorSize, int);
212
220 void MapVectorsThroughTable(void* input, unsigned char* output, int inputDataType,
221 int numberOfValues, int inputIncrement, int outputFormat, int vectorComponent, int vectorSize);
222 void MapVectorsThroughTable(void* input, unsigned char* output, int inputDataType,
223 int numberOfValues, int inputIncrement, int outputFormat)
224 {
226 input, output, inputDataType, numberOfValues, inputIncrement, outputFormat, -1, -1);
227 }
228
237 void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output, int outputFormat);
238 void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output)
239 {
240 this->MapScalarsThroughTable(scalars, output, VTK_RGBA);
241 }
242 void MapScalarsThroughTable(void* input, unsigned char* output, int inputDataType,
243 int numberOfValues, int inputIncrement, int outputFormat)
244 {
246 input, output, inputDataType, numberOfValues, inputIncrement, outputFormat);
247 }
248
254 virtual void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
255 int numberOfValues, int inputIncrement, int outputFormat);
256
260 virtual void DeepCopy(vtkScalarsToColors* o);
261
266 virtual int UsingLogScale() { return 0; }
267
272
274
287 virtual void SetAnnotations(vtkAbstractArray* values, vtkStringArray* annotations);
289 vtkGetObjectMacro(Annotations, vtkStringArray);
291
296 virtual vtkIdType SetAnnotation(vtkVariant value, vtkStdString annotation);
297
303
308
313
318
322 virtual void GetAnnotationColor(const vtkVariant& val, double rgba[4]);
323
328
335
348 virtual void GetIndexedColor(vtkIdType i, double rgba[4]);
349
356 virtual bool RemoveAnnotation(vtkVariant value);
357
361 virtual void ResetAnnotations();
362
364
374 vtkBooleanMacro(IndexedLookup, vtkTypeBool);
376
378
383 template <typename T>
384 static unsigned char ColorToUChar(T t)
385 {
386 return static_cast<unsigned char>(t);
387 }
388 template <typename T>
389 static void ColorToUChar(T t, unsigned char* dest)
390 {
391 *dest = ColorToUChar(t);
392 }
393
394
395protected:
398
410 void MapColorsToColors(void* input, unsigned char* output, int inputDataType, int numberOfValues,
411 int numberOfComponents, int vectorSize, int outputFormat);
412
418 vtkUnsignedCharArray* ConvertToRGBA(vtkDataArray* colors, int numComp, int numTuples);
419
424 void MapVectorsToMagnitude(void* input, double* output, int inputDataType, int numberOfValues,
425 int numberOfComponents, int vectorSize);
426
432
438
439 // Annotations of specific values.
442
443 class vtkInternalAnnotatedValueList;
444 vtkInternalAnnotatedValueList* AnnotatedValueList;
445
447
448 double Alpha;
449
450 // How to map arrays with multiple components.
454
455 // Obsolete, kept so subclasses will still compile
457
458 unsigned char RGBABytes[4];
459
460private:
461 double RGB[3];
462 double InputRange[2];
463
464 vtkScalarsToColors(const vtkScalarsToColors&) = delete;
465 void operator=(const vtkScalarsToColors&) = delete;
466};
467
469
474template <>
475inline unsigned char vtkScalarsToColors::ColorToUChar(double t)
476{
477 return static_cast<unsigned char>(t * 255 + 0.5);
478}
479template <>
480inline unsigned char vtkScalarsToColors::ColorToUChar(float t)
481{
482 return static_cast<unsigned char>(t * 255 + 0.5);
483}
484
485
486#endif
Abstract superclass for all arrays.
a simple class to control print indentation
Definition vtkIndent.h:34
double * GetColor(double v)
Map one value through the lookup table and return the color as an RGB array of doubles between 0 and ...
void MapScalarsThroughTable(vtkDataArray *scalars, unsigned char *output)
void MapColorsToColors(void *input, unsigned char *output, int inputDataType, int numberOfValues, int numberOfComponents, int vectorSize, int outputFormat)
An internal method that assumes that the input already has the right colors, and only remaps the rang...
virtual void DeepCopy(vtkScalarsToColors *o)
Copy the contents from another object.
virtual int IsOpaque()
Return true if all of the values defining the mapping have an opacity equal to 1.
vtkVariant GetAnnotatedValue(vtkIdType idx)
Return the annotated value at a particular index in the list of annotations.
virtual void SetRange(double min, double max)
Sets/Gets the range of scalars that will be mapped.
void MapScalarsThroughTable(vtkDataArray *scalars, unsigned char *output, int outputFormat)
Map a set of scalars through the lookup table in a single operation.
virtual void UpdateAnnotatedValueMap()
Update the map from annotated values to indices in the array of annotations.
vtkUnsignedCharArray * ConvertToRGBA(vtkDataArray *colors, int numComp, int numTuples)
An internal method used to convert a color array to RGBA.
virtual void SetAlpha(double alpha)
Specify an additional opacity (alpha) value to blend with.
double GetLuminance(double x)
Map one value through the lookup table and return the luminance 0.3*red + 0.59*green + 0....
virtual void SetRange(const double rng[2])
Sets/Gets the range of scalars that will be mapped.
static vtkScalarsToColors * New()
virtual void GetIndexedColor(vtkIdType i, double rgba[4])
Get the "indexed color" assigned to an index.
virtual vtkIdType SetAnnotation(vtkStdString value, vtkStdString annotation)
This variant of SetAnnotation accepts the value as a string so ParaView can treat annotations as stri...
virtual vtkIdType GetNumberOfAvailableColors()
Get the number of available colors for mapping to.
static void ColorToUChar(T t, unsigned char *dest)
Converts a color from numeric type T to uchar.
void MapScalarsThroughTable(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
void MapVectorsThroughTable(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat, int vectorComponent, int vectorSize)
Map vectors through the lookup table.
virtual bool RemoveAnnotation(vtkVariant value)
Remove an existing entry from the list of annotated values.
virtual int IsOpaque(vtkAbstractArray *scalars, int colorMode, int component)
Return true if all of the values defining the mapping have an opacity equal to 1.
virtual int UsingLogScale()
This should return 1 is the subclass is using log scale for mapping scalars to colors.
virtual double GetOpacity(double v)
Map one value through the lookup table and return the alpha value (the opacity) as a double between 0...
void MapVectorsThroughTable(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
~vtkScalarsToColors() override
virtual void ResetAnnotations()
Remove all existing values and their annotations.
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...
virtual vtkUnsignedCharArray * MapScalars(vtkDataArray *scalars, int colorMode, int component, int outputFormat=VTK_RGBA)
Internal methods that map a data array into an unsigned char array.
void SetVectorModeToComponent()
Change mode that maps vectors by magnitude vs.
void SetVectorModeToMagnitude()
Change mode that maps vectors by magnitude vs.
vtkIdType GetAnnotatedValueIndexInternal(const vtkVariant &val)
Look up an index into the array of annotations given a value.
virtual void SetAnnotations(vtkAbstractArray *values, vtkStringArray *annotations)
Set a list of discrete values, either as a categorical set of values (when IndexedLookup is true) or ...
static unsigned char ColorToUChar(T t)
Converts a color from numeric type T to uchar.
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...
vtkIdType GetNumberOfAnnotatedValues()
Return the annotated value at a particular index in the list of annotations.
virtual void MapScalarsThroughTable2(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
An internal method typically not used in applications.
virtual void Build()
Perform any processing required (if any) before processing scalars.
virtual vtkIdType SetAnnotation(vtkVariant value, vtkStdString annotation)
Add a new entry (or change an existing entry) to the list of annotated values.
virtual void GetAnnotationColor(const vtkVariant &val, double rgba[4])
Obtain the color associated with a particular annotated value (or NanColor if unmatched).
virtual int IsOpaque(vtkAbstractArray *scalars, int colorMode, int component, vtkUnsignedCharArray *ghosts, unsigned char ghostsToSkip=0xff)
Return true if all of the values defining the mapping have an opacity equal to 1.
vtkInternalAnnotatedValueList * AnnotatedValueList
vtkAbstractArray * AnnotatedValues
virtual vtkIdType CheckForAnnotatedValue(vtkVariant value)
Allocate annotation arrays if needed, then return the index of the given value or -1 if not present.
virtual double * GetRange()
Sets/Gets the range of scalars that will be mapped.
void MapVectorsToMagnitude(void *input, double *output, int inputDataType, int numberOfValues, int numberOfComponents, int vectorSize)
An internal method for converting vectors to magnitudes, used as a preliminary step before doing magn...
virtual vtkUnsignedCharArray * MapScalars(vtkAbstractArray *scalars, int colorMode, int component, int outputFormat=VTK_RGBA)
Internal methods that map a data array into an unsigned char array.
vtkIdType GetAnnotatedValueIndex(vtkVariant val)
Return the index of the given value in the list of annotated values (or -1 if not present).
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
unsigned char RGBABytes[4]
vtkStringArray * Annotations
void SetVectorModeToRGBColors()
Change mode that maps vectors by magnitude vs.
vtkStdString GetAnnotation(vtkIdType idx)
Return the annotation at a particular index in the list of annotations.
Wrapper around std::string to keep symbols short.
a vtkAbstractArray subclass for strings
dynamic, self-adjusting array of unsigned char
A atomic type representing the union of many types.
Definition vtkVariant.h:64
int vtkTypeBool
Definition vtkABI.h:69
#define vtkDataArray
#define VTK_RGBA
int vtkIdType
Definition vtkType.h:332
#define VTK_SIZEHINT(...)
#define max(a, b)