VTK  9.7.20260805
vtkScalarsToColors.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
39
40#ifndef vtkScalarsToColors_h
41#define vtkScalarsToColors_h
42
43#include "vtkCommonCoreModule.h" // For export macro
44#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_7_0
45#include "vtkObject.h"
46#include "vtkVariant.h" // Set/get annotation methods require variants.
47#include "vtkWrappingHints.h" // For VTK_MARSHALMANUAL
48
49VTK_ABI_NAMESPACE_BEGIN
51class vtkBitArray;
52class vtkDataArray;
53class vtkStringArray;
55
56class VTKCOMMONCORE_EXPORT VTK_MARSHALMANUAL vtkScalarsToColors : public vtkObject
57{
58public:
60 void PrintSelf(ostream& os, vtkIndent indent) override;
62
64
70 virtual vtkTypeBool IsOpaque(vtkAbstractArray* scalars, int colorMode, int vectorComponent);
71 virtual vtkTypeBool IsOpaque(vtkAbstractArray* scalars, int colorMode, int vectorComponent,
72 vtkUnsignedCharArray* ghosts, unsigned char ghostsToSkip = 0xff);
74
79 virtual void Build() {}
80
82
85 virtual double* GetRange() VTK_SIZEHINT(2);
86 virtual void SetRange(double min, double max);
87 virtual void SetRange(const double rng[2]) { this->SetRange(rng[0], rng[1]); }
89
94 virtual const unsigned char* MapValue(double v);
95
100 virtual void GetColor(double v, double rgb[3]);
101
106 double* GetColor(double v) VTK_SIZEHINT(3)
107 {
108 this->GetColor(v, this->RGB);
109 return this->RGB;
110 }
111
117 virtual double GetOpacity(double v);
118
124 double GetLuminance(double x)
125 {
126 double rgb[3];
127 this->GetColor(x, rgb);
128 return rgb[0] * 0.30 + rgb[1] * 0.59 + rgb[2] * 0.11;
129 }
130
132
138 virtual void SetAlpha(double alpha);
139 vtkGetMacro(Alpha, double);
141
143
163 vtkDataArray* scalars, int colorMode, int vectorComponent, int outputFormat = VTK_RGBA);
165 vtkAbstractArray* scalars, int colorMode, int vectorComponent, int outputFormat = VTK_RGBA);
167
169
174 vtkSetMacro(VectorMode, int);
175 vtkGetMacro(VectorMode, int);
180
182 {
186 };
187
189
193 vtkSetMacro(VectorComponent, int);
194 vtkGetMacro(VectorComponent, int);
196
198
205 vtkSetMacro(VectorSize, int);
206 vtkGetMacro(VectorSize, int);
208
210
217 void MapVectorsThroughTable(VTK_FUTURE_CONST void* input, unsigned char* output,
218 int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat,
219 int vectorComponent, int vectorSize);
220 void MapVectorsThroughTable(VTK_FUTURE_CONST void* input, unsigned char* output,
221 int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat)
222 {
224 input, output, inputDataType, numberOfTuples, numberOfComponents, outputFormat, -1, -1);
225 }
226 void MapVectorsThroughTable(vtkDataArray* input, unsigned char* output, int numberOfTuples,
227 int numberOfComponents, int vectorComponent, int vectorSize, int outputFormat);
228 void MapVectorsThroughTable(vtkDataArray* input, unsigned char* output, int numberOfTuples,
229 int numberOfComponents, int outputFormat)
230 {
232 input, output, numberOfTuples, numberOfComponents, -1, -1, outputFormat);
233 }
234
235
237
245 void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output, int outputFormat);
246 void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output)
247 {
248 this->MapScalarsThroughTable(scalars, output, VTK_RGBA);
249 }
250
251
253
258 virtual void MapScalarsThroughTable(vtkAbstractArray* input, unsigned char* output,
259 int numberOfTuples, int numberOfComponents, int vectorComponent, int outputFormat);
260 void MapScalarsThroughTable(VTK_FUTURE_CONST void* input, unsigned char* output,
261 int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat);
262 VTK_DEPRECATED_IN_9_7_0("Use the MapScalarsThroughTable overload instead")
263 virtual void MapScalarsThroughTable2(VTK_FUTURE_CONST void* input, unsigned char* output,
264 int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat);
266
270 virtual void DeepCopy(vtkScalarsToColors* o);
271
276 virtual vtkTypeBool UsingLogScale() { return 0; }
277
282
284
297 virtual void SetAnnotations(vtkAbstractArray* values, vtkStringArray* annotations);
299 vtkGetObjectMacro(Annotations, vtkStringArray);
301
306 virtual vtkIdType SetAnnotation(vtkVariant value, vtkStdString annotation);
307
313
318
324
330
334 virtual void GetAnnotationColor(const vtkVariant& val, double rgba[4]);
335
340
347
360 virtual void GetIndexedColor(vtkIdType i, double rgba[4]);
361
368 virtual bool RemoveAnnotation(vtkVariant value);
369
373 virtual void ResetAnnotations();
374
376
386 vtkBooleanMacro(IndexedLookup, vtkTypeBool);
388
390
395 template <typename T>
396 static unsigned char ColorToUChar(T t)
397 {
398 return static_cast<unsigned char>(t);
399 }
400 template <typename T>
401 static void ColorToUChar(T t, unsigned char* dest)
402 {
403 *dest = ColorToUChar(t);
404 }
405
406
407protected:
410
416 vtkBitArray* colors, int numComp, vtkIdType numTuples);
417
419
430 VTK_DEPRECATED_IN_9_7_0("Use the overload taking vtkDataArray* instead")
431 void MapColorsToColors(VTK_FUTURE_CONST void* input, unsigned char* output, int inputDataType,
432 int numberOfTuples, int numberOfComponents, int vectorSize, int outputFormat);
433 void MapColorsToColors(vtkDataArray* input, unsigned char* output, int numberOfTuples,
434 int numberOfComponents, int vectorComponent, int vectorSize, int outputFormat);
436
443 vtkDataArray* colors, int numComp, int numTuples);
444
446
450 VTK_DEPRECATED_IN_9_7_0("Use the overload taking vtkDataArray* instead")
451 void MapVectorsToMagnitude(VTK_FUTURE_CONST void* input, double* output, int inputDataType,
452 int numberOfTuples, int numberOfComponents, int vectorSize);
453 void MapVectorsToMagnitude(vtkDataArray* input, double* output, int numberOfTuples,
454 int numberOfComponents, int vectorComponent, int vectorSize);
456
462
468
469 // Annotations of specific values.
472
473 class vtkInternalAnnotatedValueList;
474 vtkInternalAnnotatedValueList* AnnotatedValueList;
475
477
478 double Alpha;
479
480 // How to map arrays with multiple components.
484
485 unsigned char RGBABytes[4];
486
487private:
488 double RGB[3];
489 double InputRange[2];
490
491 vtkScalarsToColors(const vtkScalarsToColors&) = delete;
492 void operator=(const vtkScalarsToColors&) = delete;
493};
494
496
501template <>
502inline unsigned char vtkScalarsToColors::ColorToUChar(double t)
503{
504 double temp = (t * 255.0) + 0.5;
505 return static_cast<unsigned char>(temp);
506}
507template <>
508inline unsigned char vtkScalarsToColors::ColorToUChar(float t)
509{
510 double temp = (t * 255.0) + 0.5;
511 return static_cast<unsigned char>(temp);
512}
513
514
515VTK_ABI_NAMESPACE_END
516#endif
Abstract superclass for all arrays.
dynamic, self-adjusting array of bits
Definition vtkBitArray.h:33
a simple class to control print indentation
Definition vtkIndent.h:29
virtual vtkTypeBool UsingLogScale()
This should return 1 if the subclass is using log scale for mapping scalars to colors.
double * GetColor(double v)
Map one value through the lookup table and return the color as an RGB array of doubles between 0 and ...
virtual vtkUnsignedCharArray * MapScalars(vtkDataArray *scalars, int colorMode, int vectorComponent, int outputFormat=VTK_RGBA)
Internal methods that map a data array into an unsigned char array.
void MapVectorsThroughTable(vtkDataArray *input, unsigned char *output, int numberOfTuples, int numberOfComponents, int outputFormat)
Map vectors through the lookup table.
void MapScalarsThroughTable(vtkDataArray *scalars, unsigned char *output)
Map a set of scalars through the lookup table in a single operation.
void MapVectorsToMagnitude(VTK_FUTURE_CONST void *input, double *output, int inputDataType, int numberOfTuples, int numberOfComponents, int vectorSize)
An internal method for converting vectors to magnitudes, used as a preliminary step before doing magn...
virtual void DeepCopy(vtkScalarsToColors *o)
Copy the contents from another object.
vtkVariant GetAnnotatedValue(vtkIdType idx)
Return the annotated value at a particular index in the list of annotations.
void MapScalarsThroughTable(VTK_FUTURE_CONST void *input, unsigned char *output, int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat)
An internal method typically not used in applications.
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.
virtual vtkTypeBool IsOpaque(vtkAbstractArray *scalars, int colorMode, int vectorComponent)
Return true if all of the values defining the mapping have an opacity equal to 1.
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 vtkTypeBool IsOpaque()
Return true if all of the values defining the mapping have an opacity equal to 1.
void MapVectorsThroughTable(vtkDataArray *input, unsigned char *output, int numberOfTuples, int numberOfComponents, int vectorComponent, int vectorSize, int outputFormat)
Map vectors through the lookup table.
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 MapVectorsThroughTable(VTK_FUTURE_CONST void *input, unsigned char *output, int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat)
Map vectors through the lookup table.
virtual bool RemoveAnnotation(vtkVariant value)
Remove an existing entry from the list of annotated values.
virtual void MapScalarsThroughTable2(VTK_FUTURE_CONST void *input, unsigned char *output, int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat)
An internal method typically not used in applications.
virtual double GetOpacity(double v)
Map one value through the lookup table and return the alpha value (the opacity) as a double between 0...
~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...
void SetVectorModeToComponent()
Change mode that maps vectors by magnitude vs.
void SetVectorModeToMagnitude()
Change mode that maps vectors by magnitude vs.
void MapColorsToColors(VTK_FUTURE_CONST void *input, unsigned char *output, int inputDataType, int numberOfTuples, 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 MapScalarsThroughTable(vtkAbstractArray *input, unsigned char *output, int numberOfTuples, int numberOfComponents, int vectorComponent, int outputFormat)
An internal method typically not used in applications.
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.
void MapVectorsThroughTable(VTK_FUTURE_CONST void *input, unsigned char *output, int inputDataType, int numberOfTuples, int numberOfComponents, int outputFormat, int vectorComponent, int vectorSize)
Map vectors through the lookup table.
virtual vtkUnsignedCharArray * MapScalars(vtkAbstractArray *scalars, int colorMode, int vectorComponent, int outputFormat=VTK_RGBA)
Internal methods that map a data array into an unsigned char array.
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 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 vtkTypeBool IsOpaque(vtkAbstractArray *scalars, int colorMode, int vectorComponent, vtkUnsignedCharArray *ghosts, unsigned char ghostsToSkip=0xff)
Return true if all of the values defining the mapping have an opacity equal to 1.
virtual void GetAnnotationColor(const vtkVariant &val, double rgba[4])
Obtain the color associated with a particular annotated value (or NanColor if unmatched).
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.
static vtkSmartPointer< vtkUnsignedCharArray > UnpackBits(vtkBitArray *colors, int numComp, vtkIdType numTuples)
An internal method to unpack bit arrays (vtkBitArray) into vtkUnsignedCharArray with 1 component.
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.
Hold a reference to a vtkObjectBase instance.
Wrapper around std::string to keep symbols short.
a vtkAbstractArray subclass for strings
dynamic, self-adjusting array of unsigned char
A type representing the union of many types.
Definition vtkVariant.h:53
int vtkTypeBool
Definition vtkABI.h:64
#define vtkDataArray
#define VTK_DEPRECATED_IN_9_7_0(reason)
#define VTK_RGBA
int vtkIdType
Definition vtkType.h:363
#define VTK_SIZEHINT(...)
#define VTK_MARSHALMANUAL
#define VTK_NEWINSTANCE
#define max(a, b)