VTK  9.4.20251007
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 "vtkObject.h"
45#include "vtkVariant.h" // Set/get annotation methods require variants.
46#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
47
48VTK_ABI_NAMESPACE_BEGIN
50class vtkDataArray;
53class vtkStringArray;
55
56class VTKCOMMONCORE_EXPORT VTK_MARSHALAUTO vtkScalarsToColors : public vtkObject
57{
58public:
60 void PrintSelf(ostream& os, vtkIndent indent) override;
62
64
70 virtual vtkTypeBool IsOpaque(vtkAbstractArray* scalars, int colorMode, int component);
71 virtual vtkTypeBool IsOpaque(vtkAbstractArray* scalars, int colorMode, int component,
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 static_cast<double>(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 component, int outputFormat = VTK_RGBA);
165 vtkAbstractArray* scalars, int colorMode, int component, 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
216 void MapVectorsThroughTable(void* input, unsigned char* output, int inputDataType,
217 int numberOfValues, int inputIncrement, int outputFormat, int vectorComponent, int vectorSize);
218 void MapVectorsThroughTable(void* input, unsigned char* output, int inputDataType,
219 int numberOfValues, int inputIncrement, int outputFormat)
220 {
222 input, output, inputDataType, numberOfValues, inputIncrement, outputFormat, -1, -1);
223 }
224
233 void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output, int outputFormat);
234 void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output)
235 {
236 this->MapScalarsThroughTable(scalars, output, VTK_RGBA);
237 }
238 void MapScalarsThroughTable(void* input, unsigned char* output, int inputDataType,
239 int numberOfValues, int inputIncrement, int outputFormat)
240 {
242 input, output, inputDataType, numberOfValues, inputIncrement, outputFormat);
243 }
244
250 virtual void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
251 int numberOfValues, int inputIncrement, int outputFormat);
252
256 virtual void DeepCopy(vtkScalarsToColors* o);
257
262 virtual vtkTypeBool UsingLogScale() { return 0; }
263
268
270
283 virtual void SetAnnotations(vtkAbstractArray* values, vtkStringArray* annotations);
285 vtkGetObjectMacro(Annotations, vtkStringArray);
287
292 virtual vtkIdType SetAnnotation(vtkVariant value, vtkStdString annotation);
293
299
304
310
316
320 virtual void GetAnnotationColor(const vtkVariant& val, double rgba[4]);
321
326
333
346 virtual void GetIndexedColor(vtkIdType i, double rgba[4]);
347
354 virtual bool RemoveAnnotation(vtkVariant value);
355
359 virtual void ResetAnnotations();
360
362
372 vtkBooleanMacro(IndexedLookup, vtkTypeBool);
374
376
381 template <typename T>
382 static unsigned char ColorToUChar(T t)
383 {
384 return static_cast<unsigned char>(t);
385 }
386 template <typename T>
387 static void ColorToUChar(T t, unsigned char* dest)
388 {
389 *dest = ColorToUChar(t);
390 }
391
392
393protected:
396
408 void MapColorsToColors(void* input, unsigned char* output, int inputDataType, int numberOfValues,
409 int numberOfComponents, int vectorSize, int outputFormat);
410
417 vtkDataArray* colors, int numComp, int numTuples);
418
423 void MapVectorsToMagnitude(void* input, double* output, int inputDataType, int numberOfValues,
424 int numberOfComponents, int vectorSize);
425
431
437
438 // Annotations of specific values.
441
442 class vtkInternalAnnotatedValueList;
443 vtkInternalAnnotatedValueList* AnnotatedValueList;
444
446
447 double Alpha;
448
449 // How to map arrays with multiple components.
453
454#if !defined(VTK_LEGACY_REMOVE)
455 // Obsolete, kept so subclasses will still compile
457#endif
458
459 unsigned char RGBABytes[4];
460
461private:
462 double RGB[3];
463 double InputRange[2];
464
465 vtkScalarsToColors(const vtkScalarsToColors&) = delete;
466 void operator=(const vtkScalarsToColors&) = delete;
467};
468
470
475template <>
476inline unsigned char vtkScalarsToColors::ColorToUChar(double t)
477{
478 double temp = (t * 255.0) + 0.5;
479 return static_cast<unsigned char>(temp);
480}
481template <>
482inline unsigned char vtkScalarsToColors::ColorToUChar(float t)
483{
484 double temp = (t * 255.0) + 0.5;
485 return static_cast<unsigned char>(temp);
486}
487
488
489VTK_ABI_NAMESPACE_END
490#endif
Abstract superclass for all arrays.
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 ...
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.
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.
virtual vtkTypeBool IsOpaque(vtkAbstractArray *scalars, int colorMode, int component)
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.
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 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 vtkTypeBool 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.
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).
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 type representing the union of many types.
Definition vtkVariant.h:53
int vtkTypeBool
Definition vtkABI.h:64
#define vtkDataArray
#define VTK_RGBA
int vtkIdType
Definition vtkType.h:315
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO
#define VTK_NEWINSTANCE
#define max(a, b)