VTK  9.0.1
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 =========================================================================*/
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 
53 class vtkAbstractArray;
54 class vtkDataArray;
56 class vtkAbstractArray;
57 class vtkStringArray;
58 
59 class VTKCOMMONCORE_EXPORT vtkScalarsToColors : public vtkObject
60 {
61 public:
62  vtkTypeMacro(vtkScalarsToColors, vtkObject);
63  void PrintSelf(ostream& os, vtkIndent indent) override;
65 
67 
72  virtual int IsOpaque();
73  virtual int IsOpaque(vtkAbstractArray* scalars, int colorMode, int component);
75 
80  virtual void Build() {}
81 
83 
86  virtual double* GetRange() VTK_SIZEHINT(2);
87  virtual void SetRange(double min, double max);
88  virtual void SetRange(const double rng[2]) { this->SetRange(rng[0], rng[1]); }
90 
95  virtual const unsigned char* MapValue(double v);
96 
101  virtual void GetColor(double v, double rgb[3]);
102 
107  double* GetColor(double v) VTK_SIZEHINT(3)
108  {
109  this->GetColor(v, this->RGB);
110  return this->RGB;
111  }
112 
118  virtual double GetOpacity(double v);
119 
125  double GetLuminance(double x)
126  {
127  double rgb[3];
128  this->GetColor(x, rgb);
129  return static_cast<double>(rgb[0] * 0.30 + rgb[1] * 0.59 + rgb[2] * 0.11);
130  }
131 
133 
139  virtual void SetAlpha(double alpha);
140  vtkGetMacro(Alpha, double);
142 
144 
164  vtkDataArray* scalars, int colorMode, int component, int outputFormat = VTK_RGBA);
166  vtkAbstractArray* scalars, int colorMode, int component, int outputFormat = VTK_RGBA);
168 
170 
175  vtkSetMacro(VectorMode, int);
176  vtkGetMacro(VectorMode, int);
181 
183  {
184  MAGNITUDE = 0,
185  COMPONENT = 1,
186  RGBCOLORS = 2
187  };
188 
190 
194  vtkSetMacro(VectorComponent, int);
195  vtkGetMacro(VectorComponent, int);
197 
199 
206  vtkSetMacro(VectorSize, int);
207  vtkGetMacro(VectorSize, int);
209 
217  void MapVectorsThroughTable(void* input, unsigned char* output, int inputDataType,
218  int numberOfValues, int inputIncrement, int outputFormat, int vectorComponent, int vectorSize);
219  void MapVectorsThroughTable(void* input, unsigned char* output, int inputDataType,
220  int numberOfValues, int inputIncrement, int outputFormat)
221  {
222  this->MapVectorsThroughTable(
223  input, output, inputDataType, numberOfValues, inputIncrement, outputFormat, -1, -1);
224  }
225 
234  void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output, int outputFormat);
235  void MapScalarsThroughTable(vtkDataArray* scalars, unsigned char* output)
236  {
237  this->MapScalarsThroughTable(scalars, output, VTK_RGBA);
238  }
239  void MapScalarsThroughTable(void* input, unsigned char* output, int inputDataType,
240  int numberOfValues, int inputIncrement, int outputFormat)
241  {
242  this->MapScalarsThroughTable2(
243  input, output, inputDataType, numberOfValues, inputIncrement, outputFormat);
244  }
245 
251  virtual void MapScalarsThroughTable2(void* input, unsigned char* output, int inputDataType,
252  int numberOfValues, int inputIncrement, int outputFormat);
253 
257  virtual void DeepCopy(vtkScalarsToColors* o);
258 
263  virtual int UsingLogScale() { return 0; }
264 
269 
271 
284  virtual void SetAnnotations(vtkAbstractArray* values, vtkStringArray* annotations);
285  vtkGetObjectMacro(AnnotatedValues, vtkAbstractArray);
286  vtkGetObjectMacro(Annotations, vtkStringArray);
288 
294 
300 
305 
310 
315 
319  virtual void GetAnnotationColor(const vtkVariant& val, double rgba[4]);
320 
325 
332 
345  virtual void GetIndexedColor(vtkIdType i, double rgba[4]);
346 
354 
358  virtual void ResetAnnotations();
359 
361 
369  vtkSetMacro(IndexedLookup, vtkTypeBool);
370  vtkGetMacro(IndexedLookup, vtkTypeBool);
371  vtkBooleanMacro(IndexedLookup, vtkTypeBool);
373 
375 
380  template <typename T>
381  static unsigned char ColorToUChar(T t)
382  {
383  return static_cast<unsigned char>(t);
384  }
385  template <typename T>
386  static void ColorToUChar(T t, unsigned char* dest)
387  {
388  *dest = ColorToUChar(t);
389  }
391 
392 protected:
395 
407  void MapColorsToColors(void* input, unsigned char* output, int inputDataType, int numberOfValues,
408  int numberOfComponents, int vectorSize, int outputFormat);
409 
415  vtkUnsignedCharArray* ConvertToRGBA(vtkDataArray* colors, int numComp, int numTuples);
416 
421  void MapVectorsToMagnitude(void* input, double* output, int inputDataType, int numberOfValues,
422  int numberOfComponents, int vectorSize);
423 
429 
434  virtual void UpdateAnnotatedValueMap();
435 
436  // Annotations of specific values.
439 
440  class vtkInternalAnnotatedValueMap;
441  vtkInternalAnnotatedValueMap* AnnotatedValueMap;
442 
444 
445  double Alpha;
446 
447  // How to map arrays with multiple components.
451 
452  // Obsolete, kept so subclasses will still compile
454 
455  unsigned char RGBABytes[4];
456 
457 private:
458  double RGB[3];
459  double InputRange[2];
460 
461  vtkScalarsToColors(const vtkScalarsToColors&) = delete;
462  void operator=(const vtkScalarsToColors&) = delete;
463 };
464 
466 
471 template <>
472 inline unsigned char vtkScalarsToColors::ColorToUChar(double t)
473 {
474  return static_cast<unsigned char>(t * 255 + 0.5);
475 }
476 template <>
477 inline unsigned char vtkScalarsToColors::ColorToUChar(float t)
478 {
479  return static_cast<unsigned char>(t * 255 + 0.5);
480 }
482 
483 #endif
vtkScalarsToColors::vtkScalarsToColors
vtkScalarsToColors()
vtkScalarsToColors::GetAnnotatedValue
vtkVariant GetAnnotatedValue(vtkIdType idx)
Return the annotated value at a particular index in the list of annotations.
vtkScalarsToColors::SetAnnotation
virtual vtkIdType SetAnnotation(vtkVariant value, vtkStdString annotation)
Add a new entry (or change an existing entry) to the list of annotated values.
vtkScalarsToColors::GetAnnotatedValueIndexInternal
vtkIdType GetAnnotatedValueIndexInternal(const vtkVariant &val)
Look up an index into the array of annotations given a value.
vtkVariant.h
vtkX3D::alpha
@ alpha
Definition: vtkX3D.h:256
vtkX3D::component
@ component
Definition: vtkX3D.h:181
vtkScalarsToColors::ColorToUChar
static void ColorToUChar(T t, unsigned char *dest)
Definition: vtkScalarsToColors.h:386
vtkScalarsToColors::VectorModes
VectorModes
Definition: vtkScalarsToColors.h:183
vtkX3D::value
@ value
Definition: vtkX3D.h:226
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkScalarsToColors::IndexedLookup
vtkTypeBool IndexedLookup
Definition: vtkScalarsToColors.h:443
vtkScalarsToColors::MapColorsToColors
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...
vtkUnsignedCharArray
dynamic, self-adjusting array of unsigned char
Definition: vtkUnsignedCharArray.h:36
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:54
vtkScalarsToColors::VectorComponent
int VectorComponent
Definition: vtkScalarsToColors.h:449
vtkScalarsToColors::RemoveAnnotation
virtual bool RemoveAnnotation(vtkVariant value)
Remove an existing entry from the list of annotated values.
vtkScalarsToColors::Build
virtual void Build()
Perform any processing required (if any) before processing scalars.
Definition: vtkScalarsToColors.h:80
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:50
vtkScalarsToColors::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkScalarsToColors::VectorMode
int VectorMode
Definition: vtkScalarsToColors.h:448
vtkScalarsToColors::GetIndexedColor
virtual void GetIndexedColor(vtkIdType i, double rgba[4])
Get the "indexed color" assigned to an index.
vtkScalarsToColors::SetAlpha
virtual void SetAlpha(double alpha)
Specify an additional opacity (alpha) value to blend with.
max
#define max(a, b)
Definition: vtkX3DExporterFIWriterHelper.h:31
vtkScalarsToColors::SetAnnotations
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 ...
vtkScalarsToColors::SetVectorModeToMagnitude
void SetVectorModeToMagnitude()
vtkScalarsToColors::IsOpaque
virtual int IsOpaque(vtkAbstractArray *scalars, int colorMode, int component)
vtkScalarsToColors::MapVectorsThroughTable
void MapVectorsThroughTable(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
Definition: vtkScalarsToColors.h:219
vtkScalarsToColors::GetOpacity
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::~vtkScalarsToColors
~vtkScalarsToColors() override
vtkScalarsToColors::GetNumberOfAnnotatedValues
vtkIdType GetNumberOfAnnotatedValues()
Return the annotated value at a particular index in the list of annotations.
vtkScalarsToColors::ColorToUChar
static unsigned char ColorToUChar(T t)
Converts a color from numeric type T to uchar.
Definition: vtkScalarsToColors.h:381
vtkScalarsToColors::MapScalarsThroughTable
void MapScalarsThroughTable(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
Definition: vtkScalarsToColors.h:239
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkScalarsToColors::DeepCopy
virtual void DeepCopy(vtkScalarsToColors *o)
Copy the contents from another object.
vtkScalarsToColors::MapScalars
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.
vtkScalarsToColors::SetVectorModeToComponent
void SetVectorModeToComponent()
vtkScalarsToColors::GetColor
double * GetColor(double v)
Map one value through the lookup table and return the color as an RGB array of doubles between 0 and ...
Definition: vtkScalarsToColors.h:107
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkScalarsToColors::SetAnnotation
virtual vtkIdType SetAnnotation(vtkStdString value, vtkStdString annotation)
This variant of SetAnnotation accepts the value as a string so ParaView can treat annotations as stri...
vtkScalarsToColors::AnnotatedValues
vtkAbstractArray * AnnotatedValues
Definition: vtkScalarsToColors.h:437
vtkScalarsToColors::MapScalarsThroughTable
void MapScalarsThroughTable(vtkDataArray *scalars, unsigned char *output, int outputFormat)
Map a set of scalars through the lookup table in a single operation.
vtkScalarsToColors::GetAnnotationColor
virtual void GetAnnotationColor(const vtkVariant &val, double rgba[4])
Obtain the color associated with a particular annotated value (or NanColor if unmatched).
vtkVariant
A atomic type representing the union of many types.
Definition: vtkVariant.h:66
vtkScalarsToColors::ResetAnnotations
virtual void ResetAnnotations()
Remove all existing values and their annotations.
vtkScalarsToColors::UsingLogScale
virtual int UsingLogScale()
This should return 1 is the subclass is using log scale for mapping scalars to colors.
Definition: vtkScalarsToColors.h:263
vtkScalarsToColors
Superclass for mapping scalar values to colors.
Definition: vtkScalarsToColors.h:60
vtkScalarsToColors::MapValue
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...
vtkScalarsToColors::MapVectorsToMagnitude
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...
vtkObject.h
vtkScalarsToColors::GetColor
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...
vtkAbstractArray
Abstract superclass for all arrays.
Definition: vtkAbstractArray.h:76
vtkScalarsToColors::UpdateAnnotatedValueMap
virtual void UpdateAnnotatedValueMap()
Update the map from annotated values to indices in the array of annotations.
vtkScalarsToColors::ConvertToRGBA
vtkUnsignedCharArray * ConvertToRGBA(vtkDataArray *colors, int numComp, int numTuples)
An internal method used to convert a color array to RGBA.
vtkScalarsToColors::GetNumberOfAvailableColors
virtual vtkIdType GetNumberOfAvailableColors()
Get the number of available colors for mapping to.
vtkScalarsToColors::GetAnnotation
vtkStdString GetAnnotation(vtkIdType idx)
Return the annotation at a particular index in the list of annotations.
vtkScalarsToColors::GetRange
virtual double * GetRange()
Sets/Gets the range of scalars that will be mapped.
vtkScalarsToColors::GetLuminance
double GetLuminance(double x)
Map one value through the lookup table and return the luminance 0.3*red + 0.59*green + 0....
Definition: vtkScalarsToColors.h:125
vtkScalarsToColors::MapVectorsThroughTable
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.
VTK_RGBA
#define VTK_RGBA
Definition: vtkSystemIncludes.h:87
vtkScalarsToColors::AnnotatedValueMap
vtkInternalAnnotatedValueMap * AnnotatedValueMap
Definition: vtkScalarsToColors.h:440
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:37
vtkScalarsToColors::MapScalarsThroughTable2
virtual void MapScalarsThroughTable2(void *input, unsigned char *output, int inputDataType, int numberOfValues, int inputIncrement, int outputFormat)
An internal method typically not used in applications.
vtkScalarsToColors::Alpha
double Alpha
Definition: vtkScalarsToColors.h:445
vtkScalarsToColors::UseMagnitude
int UseMagnitude
Definition: vtkScalarsToColors.h:453
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:35
vtkScalarsToColors::Annotations
vtkStringArray * Annotations
Definition: vtkScalarsToColors.h:438
vtkScalarsToColors::New
static vtkScalarsToColors * New()
vtkScalarsToColors::MapScalars
virtual vtkUnsignedCharArray * MapScalars(vtkAbstractArray *scalars, int colorMode, int component, int outputFormat=VTK_RGBA)
vtkScalarsToColors::GetAnnotatedValueIndex
vtkIdType GetAnnotatedValueIndex(vtkVariant val)
Return the index of the given value in the list of annotated values (or -1 if not present).
vtkScalarsToColors::MapScalarsThroughTable
void MapScalarsThroughTable(vtkDataArray *scalars, unsigned char *output)
Definition: vtkScalarsToColors.h:235
vtkScalarsToColors::SetRange
virtual void SetRange(const double rng[2])
Definition: vtkScalarsToColors.h:88
vtkScalarsToColors::SetVectorModeToRGBColors
void SetVectorModeToRGBColors()
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkScalarsToColors::CheckForAnnotatedValue
virtual vtkIdType CheckForAnnotatedValue(vtkVariant value)
Allocate annotation arrays if needed, then return the index of the given value or -1 if not present.
vtkScalarsToColors::VectorSize
int VectorSize
Definition: vtkScalarsToColors.h:450
vtkScalarsToColors::IsOpaque
virtual int IsOpaque()
Return true if all of the values defining the mapping have an opacity equal to 1.