VTK  9.1.0
vtkMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMapper.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 =========================================================================*/
136 #ifndef vtkMapper_h
137 #define vtkMapper_h
138 
139 #include "vtkAbstractMapper3D.h"
140 #include "vtkRenderingCoreModule.h" // For export macro
141 #include "vtkSmartPointer.h" // needed for vtkSmartPointer.
142 #include "vtkSystemIncludes.h" // For VTK_COLOR_MODE_DEFAULT and _MAP_SCALARS
143 #include <vector> // for method args
144 
145 #define VTK_RESOLVE_OFF 0
146 #define VTK_RESOLVE_POLYGON_OFFSET 1
147 #define VTK_RESOLVE_SHIFT_ZBUFFER 2
148 
149 #define VTK_GET_ARRAY_BY_ID 0
150 #define VTK_GET_ARRAY_BY_NAME 1
151 
152 #define VTK_MATERIALMODE_DEFAULT 0
153 #define VTK_MATERIALMODE_AMBIENT 1
154 #define VTK_MATERIALMODE_DIFFUSE 2
155 #define VTK_MATERIALMODE_AMBIENT_AND_DIFFUSE 3
156 
157 class vtkActor;
158 class vtkDataSet;
159 class vtkDataObject;
160 class vtkFloatArray;
161 class vtkHardwareSelector;
162 class vtkImageData;
163 class vtkProp;
164 class vtkRenderer;
165 class vtkScalarsToColors;
166 class vtkSelection;
168 class vtkWindow;
169 
170 class VTKRENDERINGCORE_EXPORT vtkMapper : public vtkAbstractMapper3D
171 {
172 public:
174  void PrintSelf(ostream& os, vtkIndent indent) override;
175 
179  void ShallowCopy(vtkAbstractMapper* m) override;
180 
185  vtkMTimeType GetMTime() override;
186 
191  virtual void Render(vtkRenderer* ren, vtkActor* a) = 0;
192 
199 
201 
207 
212  virtual void CreateDefaultLookupTable();
213 
215 
218  vtkSetMacro(ScalarVisibility, vtkTypeBool);
219  vtkGetMacro(ScalarVisibility, vtkTypeBool);
220  vtkBooleanMacro(ScalarVisibility, vtkTypeBool);
222 
224 
230  vtkSetMacro(Static, vtkTypeBool);
231  vtkGetMacro(Static, vtkTypeBool);
232  vtkBooleanMacro(Static, vtkTypeBool);
234 
236 
248  vtkSetMacro(ColorMode, int);
249  vtkGetMacro(ColorMode, int);
250  void SetColorModeToDefault() { this->SetColorMode(VTK_COLOR_MODE_DEFAULT); }
251  void SetColorModeToMapScalars() { this->SetColorMode(VTK_COLOR_MODE_MAP_SCALARS); }
254 
258  const char* GetColorModeAsString();
259 
261 
267  vtkSetMacro(InterpolateScalarsBeforeMapping, vtkTypeBool);
268  vtkGetMacro(InterpolateScalarsBeforeMapping, vtkTypeBool);
269  vtkBooleanMacro(InterpolateScalarsBeforeMapping, vtkTypeBool);
271 
273 
281  vtkSetMacro(UseLookupTableScalarRange, vtkTypeBool);
282  vtkGetMacro(UseLookupTableScalarRange, vtkTypeBool);
283  vtkBooleanMacro(UseLookupTableScalarRange, vtkTypeBool);
285 
287 
292  vtkSetVector2Macro(ScalarRange, double);
293  vtkGetVectorMacro(ScalarRange, double, 2);
295 
309  // When ScalarMode is set to use Field Data (ScalarModeToFieldData),
310  // you must call SelectColorArray to choose the field data array to
311  // be used to color cells. In this mode, the default behavior is to
312  // treat the field data tuples as being associated with cells. If
313  // the poly data contains triangle strips, the array is expected to
314  // contain the cell data for each mini-cell formed by any triangle
315  // strips in the poly data as opposed to treating them as a single
316  // tuple that applies to the entire strip. This mode can also be
317  // used to color the entire poly data by a single color obtained by
318  // mapping the tuple at a given index in the field data array
319  // through the color map. Use SetFieldDataTupleId() to specify
320  // the tuple index.
321  vtkSetMacro(ScalarMode, int);
322  vtkGetMacro(ScalarMode, int);
323  void SetScalarModeToDefault() { this->SetScalarMode(VTK_SCALAR_MODE_DEFAULT); }
327  {
328  this->SetScalarMode(VTK_SCALAR_MODE_USE_POINT_FIELD_DATA);
329  }
331  {
332  this->SetScalarMode(VTK_SCALAR_MODE_USE_CELL_FIELD_DATA);
333  }
335 
337 
342  void SelectColorArray(int arrayNum);
343  void SelectColorArray(const char* arrayName);
345 
346  // When ScalarMode is set to UseFieldData, set the index of the
347  // tuple by which to color the entire data set. By default, the
348  // index is -1, which means to treat the field data array selected
349  // with SelectColorArray as having a scalar value for each cell.
350  // Indices of 0 or higher mean to use the tuple at the given index
351  // for coloring the entire data set.
352  vtkSetMacro(FieldDataTupleId, vtkIdType);
353  vtkGetMacro(FieldDataTupleId, vtkIdType);
354 
356 
361  void ColorByArrayComponent(int arrayNum, int component);
362  void ColorByArrayComponent(const char* arrayName, int component);
364 
368  vtkGetStringMacro(ArrayName);
369  vtkSetStringMacro(ArrayName);
370  vtkGetMacro(ArrayId, int);
371  vtkSetMacro(ArrayId, int);
372  vtkGetMacro(ArrayAccessMode, int);
373  vtkSetMacro(ArrayAccessMode, int);
374  vtkGetMacro(ArrayComponent, int);
375  vtkSetMacro(ArrayComponent, int);
376 
380  const char* GetScalarModeAsString();
381 
383 
393  static void SetResolveCoincidentTopology(int val);
396  static void SetResolveCoincidentTopologyToOff() { SetResolveCoincidentTopology(VTK_RESOLVE_OFF); }
398  {
399  SetResolveCoincidentTopology(VTK_RESOLVE_POLYGON_OFFSET);
400  }
402  {
403  SetResolveCoincidentTopology(VTK_RESOLVE_SHIFT_ZBUFFER);
404  }
406 
408 
413  static void SetResolveCoincidentTopologyPolygonOffsetParameters(double factor, double units);
414  static void GetResolveCoincidentTopologyPolygonOffsetParameters(double& factor, double& units);
416 
418 
422  void SetRelativeCoincidentTopologyPolygonOffsetParameters(double factor, double units);
423  void GetRelativeCoincidentTopologyPolygonOffsetParameters(double& factor, double& units);
425 
427 
432  static void SetResolveCoincidentTopologyLineOffsetParameters(double factor, double units);
433  static void GetResolveCoincidentTopologyLineOffsetParameters(double& factor, double& units);
435 
437 
441  void SetRelativeCoincidentTopologyLineOffsetParameters(double factor, double units);
442  void GetRelativeCoincidentTopologyLineOffsetParameters(double& factor, double& units);
444 
446 
454 
456 
463 
465 
469  void GetCoincidentTopologyPolygonOffsetParameters(double& factor, double& units);
470  void GetCoincidentTopologyLineOffsetParameters(double& factor, double& units);
473 
475 
485 
487 
491  static void SetResolveCoincidentTopologyZShift(double val);
494 
499  double* GetBounds() VTK_SIZEHINT(6) override;
500  void GetBounds(double bounds[6]) override { this->vtkAbstractMapper3D::GetBounds(bounds); }
501 
507  void SetRenderTime(double time) { this->RenderTime = time; }
508  vtkGetMacro(RenderTime, double);
509 
515 
522  vtkDataSet* GetInputAsDataSet() { return this->GetInput(); }
523 
525 
533  virtual vtkUnsignedCharArray* MapScalars(double alpha, int& cellFlag);
535  virtual vtkUnsignedCharArray* MapScalars(vtkDataSet* input, double alpha, int& cellFlag);
537 
539 
544  virtual bool HasOpaqueGeometry();
547 
554  virtual bool GetSupportsSelection() { return false; }
555 
561  std::vector<unsigned int>& /* pixeloffsets */, vtkProp* /* prop */)
562  {
563  }
564 
574 
580 
585 
590 
595 
597 
601  vtkGetObjectMacro(Selection, vtkSelection);
602  virtual void SetSelection(vtkSelection*);
604 
605 protected:
607  ~vtkMapper() override;
608 
609  // color mapped colors
611 
612  // Use texture coordinates for coloring.
614  // Coordinate for each point.
616  // 1D ColorMap used for the texture image.
619 
623  double ScalarRange[2];
625 
628 
629  double RenderTime;
630 
631  // for coloring by a component of a field data array
632  int ArrayId;
633  char* ArrayName;
636 
637  // If coloring by field data, which tuple to use to color the entire
638  // data set. If -1, treat array values as cell data.
640 
642 
648 
649  vtkSelection* Selection = nullptr;
650 
651 private:
652  vtkMapper(const vtkMapper&) = delete;
653  void operator=(const vtkMapper&) = delete;
654 };
655 
656 #endif
Abstract superclass for all arrays.
abstract class specifies interface to map 3D data
virtual double * GetBounds()=0
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
abstract class specifies interface to map data
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:155
general representation of visualization data
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
dynamic, self-adjusting array of float
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
a simple class to control print indentation
Definition: vtkIndent.h:113
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:171
virtual bool HasOpaqueGeometry()
Some introspection on the type of data the mapper will render used by props to determine if they shou...
~vtkMapper() override
virtual int CanUseTextureMapForColoring(vtkDataObject *input)
Returns if we can use texture maps for scalar coloring.
void GetCoincidentTopologyLineOffsetParameters(double &factor, double &units)
Get the net parameters for handling coincident topology obtained by summing the global values with th...
static int GetResolveCoincidentTopology()
Set/Get a global flag that controls whether coincident topology (e.g., a line on top of a polygon) is...
void SelectColorArray(const char *arrayName)
When ScalarMode is set to UsePointFieldData or UseCellFieldData, you can specify which array to use f...
void SetScalarModeToUsePointFieldData()
Definition: vtkMapper.h:326
vtkScalarsToColors * LookupTable
Definition: vtkMapper.h:620
double CoincidentPolygonFactor
Definition: vtkMapper.h:643
void SetColorModeToMapScalars()
default (ColorModeToDefault), unsigned char scalars are treated as colors, and NOT mapped through the...
Definition: vtkMapper.h:251
int ColorMode
Definition: vtkMapper.h:626
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetScalarModeToUseCellData()
Definition: vtkMapper.h:325
vtkUnsignedCharArray * GetColorMapColors()
Provide read access to the color array.
void SetLookupTable(vtkScalarsToColors *lut)
Specify a lookup table for the mapper to use.
vtkTypeBool InterpolateScalarsBeforeMapping
Definition: vtkMapper.h:613
void SetColorModeToDefault()
default (ColorModeToDefault), unsigned char scalars are treated as colors, and NOT mapped through the...
Definition: vtkMapper.h:250
void SelectColorArray(int arrayNum)
When ScalarMode is set to UsePointFieldData or UseCellFieldData, you can specify which array to use f...
vtkTypeBool UseLookupTableScalarRange
Definition: vtkMapper.h:624
void SetScalarModeToDefault()
Definition: vtkMapper.h:323
int ScalarMode
Definition: vtkMapper.h:627
virtual bool GetSupportsSelection()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkMapper.h:554
static void GetResolveCoincidentTopologyLineOffsetParameters(double &factor, double &units)
Used to set the line offset scale factor and units.
void GetCoincidentTopologyPolygonOffsetParameters(double &factor, double &units)
Get the net parameters for handling coincident topology obtained by summing the global values with th...
virtual void CreateDefaultLookupTable()
Create default lookup table.
double RenderTime
Definition: vtkMapper.h:629
void SetScalarModeToUseCellFieldData()
Definition: vtkMapper.h:330
void MapScalarsToTexture(vtkAbstractArray *scalars, double alpha)
virtual vtkUnsignedCharArray * MapScalars(vtkDataSet *input, double alpha, int &cellFlag)
Map the scalars (if there are any scalars and ScalarVisibility is on) through the lookup table,...
static void GetResolveCoincidentTopologyPointOffsetParameter(double &units)
Used to set the point offset value Used when ResolveCoincidentTopology is set to PolygonOffset.
static void SetResolveCoincidentTopologyToDefault()
Set/Get a global flag that controls whether coincident topology (e.g., a line on top of a polygon) is...
virtual bool HasTranslucentPolygonalGeometry()
Some introspection on the type of data the mapper will render used by props to determine if they shou...
vtkImageData * ColorTextureMap
Definition: vtkMapper.h:617
vtkTimeStamp BuildTime
Definition: vtkMapper.h:622
void ColorByArrayComponent(int arrayNum, int component)
Legacy: These methods used to be used to specify the array component.
void GetRelativeCoincidentTopologyPointOffsetParameter(double &units)
Used to set the point offset value relative to the global Used when ResolveCoincidentTopology is set ...
void SetColorModeToDirectScalars()
default (ColorModeToDefault), unsigned char scalars are treated as colors, and NOT mapped through the...
Definition: vtkMapper.h:252
vtkTypeBool Static
Definition: vtkMapper.h:641
virtual vtkUnsignedCharArray * MapScalars(vtkDataSet *input, double alpha)
Map the scalars (if there are any scalars and ScalarVisibility is on) through the lookup table,...
virtual vtkUnsignedCharArray * MapScalars(double alpha)
Map the scalars (if there are any scalars and ScalarVisibility is on) through the lookup table,...
void SetScalarModeToUseFieldData()
Definition: vtkMapper.h:334
static double GetResolveCoincidentTopologyZShift()
Used to set the z-shift if ResolveCoincidentTopology is set to ShiftZBuffer.
static void SetResolveCoincidentTopologyPolygonOffsetParameters(double factor, double units)
Used to set the polygon offset scale factor and units.
int ArrayAccessMode
Definition: vtkMapper.h:635
void SetRelativeCoincidentTopologyLineOffsetParameters(double factor, double units)
Used to set the line offset values relative to the global Used when ResolveCoincidentTopology is set ...
vtkDataSet * GetInput()
Get the input as a vtkDataSet.
int ArrayId
Definition: vtkMapper.h:632
int ArrayComponent
Definition: vtkMapper.h:634
void SetRenderTime(double time)
This instance variable is used by vtkLODActor to determine which mapper to use.
Definition: vtkMapper.h:507
static void SetResolveCoincidentTopology(int val)
Set/Get a global flag that controls whether coincident topology (e.g., a line on top of a polygon) is...
void GetRelativeCoincidentTopologyLineOffsetParameters(double &factor, double &units)
Used to set the line offset values relative to the global Used when ResolveCoincidentTopology is set ...
vtkUnsignedCharArray * Colors
Definition: vtkMapper.h:610
static void SetResolveCoincidentTopologyToOff()
Set/Get a global flag that controls whether coincident topology (e.g., a line on top of a polygon) is...
Definition: vtkMapper.h:396
virtual void Render(vtkRenderer *ren, vtkActor *a)=0
Method initiates the mapping process.
vtkTypeBool ScalarVisibility
Definition: vtkMapper.h:621
vtkMTimeType GetMTime() override
Overload standard modified time function.
vtkIdType FieldDataTupleId
Definition: vtkMapper.h:639
double CoincidentPointOffset
Definition: vtkMapper.h:647
static void SetResolveCoincidentTopologyToPolygonOffset()
Set/Get a global flag that controls whether coincident topology (e.g., a line on top of a polygon) is...
Definition: vtkMapper.h:397
static void SetResolveCoincidentTopologyToShiftZBuffer()
Set/Get a global flag that controls whether coincident topology (e.g., a line on top of a polygon) is...
Definition: vtkMapper.h:401
void ColorByArrayComponent(const char *arrayName, int component)
Legacy: These methods used to be used to specify the array component.
void GetRelativeCoincidentTopologyPolygonOffsetParameters(double &factor, double &units)
Used to set the polygon offset values relative to the global Used when ResolveCoincidentTopology is s...
static int GetResolveCoincidentTopologyPolygonOffsetFaces()
Used when ResolveCoincidentTopology is set to PolygonOffset.
virtual void ProcessSelectorPixelBuffers(vtkHardwareSelector *, std::vector< unsigned int > &, vtkProp *)
allows a mapper to update a selections color buffers Called from a prop which in turn is called from ...
Definition: vtkMapper.h:560
double CoincidentLineOffset
Definition: vtkMapper.h:646
void SetRelativeCoincidentTopologyPointOffsetParameter(double units)
Used to set the point offset value relative to the global Used when ResolveCoincidentTopology is set ...
virtual vtkUnsignedCharArray * MapScalars(double alpha, int &cellFlag)
Map the scalars (if there are any scalars and ScalarVisibility is on) through the lookup table,...
static void SetResolveCoincidentTopologyPointOffsetParameter(double units)
Used to set the point offset value Used when ResolveCoincidentTopology is set to PolygonOffset.
vtkImageData * GetColorTextureMap()
Provide read access to the color texture array.
vtkFloatArray * ColorCoordinates
Definition: vtkMapper.h:615
void SetRelativeCoincidentTopologyPolygonOffsetParameters(double factor, double units)
Used to set the polygon offset values relative to the global Used when ResolveCoincidentTopology is s...
void ShallowCopy(vtkAbstractMapper *m) override
Make a shallow copy of this mapper.
void SetScalarModeToUsePointData()
Definition: vtkMapper.h:324
vtkDataSet * GetInputAsDataSet()
Get the input to this mapper as a vtkDataSet, instead of as a more specialized data type that the sub...
Definition: vtkMapper.h:522
static void SetResolveCoincidentTopologyLineOffsetParameters(double factor, double units)
Used to set the line offset scale factor and units.
virtual void SetSelection(vtkSelection *)
Set/Get selection used to display particular points or cells in a second pass.
static void SetResolveCoincidentTopologyPolygonOffsetFaces(int faces)
Used when ResolveCoincidentTopology is set to PolygonOffset.
static void GetResolveCoincidentTopologyPolygonOffsetParameters(double &factor, double &units)
Used to set the polygon offset scale factor and units.
void GetCoincidentTopologyPointOffsetParameter(double &units)
Get the net parameters for handling coincident topology obtained by summing the global values with th...
double CoincidentLineFactor
Definition: vtkMapper.h:645
static void SetResolveCoincidentTopologyZShift(double val)
Used to set the z-shift if ResolveCoincidentTopology is set to ShiftZBuffer.
const char * GetScalarModeAsString()
Return the method for obtaining scalar data.
vtkScalarsToColors * GetLookupTable()
Specify a lookup table for the mapper to use.
vtkFloatArray * GetColorCoordinates()
Provide read access to the color texture coordinate array.
double CoincidentPolygonOffset
Definition: vtkMapper.h:644
double * GetBounds() override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
void ClearColorArrays()
Call to force a rebuild of color result arrays on next MapScalars.
char * ArrayName
Definition: vtkMapper.h:633
const char * GetColorModeAsString()
Return the method of coloring scalar data.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
Definition: vtkMapper.h:198
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:67
abstract specification for renderers
Definition: vtkRenderer.h:173
Superclass for mapping scalar values to colors.
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:163
record modification and/or execution time
Definition: vtkTimeStamp.h:52
dynamic, self-adjusting array of unsigned char
window superclass for vtkRenderWindow
Definition: vtkWindow.h:36
void GetBounds(T a, double bds[6])
@ component
Definition: vtkX3D.h:181
@ time
Definition: vtkX3D.h:503
@ alpha
Definition: vtkX3D.h:256
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_SCALAR_MODE_DEFAULT
#define VTK_SCALAR_MODE_USE_POINT_DATA
#define VTK_SCALAR_MODE_USE_FIELD_DATA
#define VTK_SCALAR_MODE_USE_CELL_DATA
#define VTK_SCALAR_MODE_USE_CELL_FIELD_DATA
#define VTK_SCALAR_MODE_USE_POINT_FIELD_DATA
#define VTK_RESOLVE_POLYGON_OFFSET
Definition: vtkMapper.h:146
#define VTK_RESOLVE_OFF
Definition: vtkMapper.h:145
#define VTK_RESOLVE_SHIFT_ZBUFFER
Definition: vtkMapper.h:147
#define VTK_COLOR_MODE_MAP_SCALARS
#define VTK_COLOR_MODE_DEFAULT
#define VTK_COLOR_MODE_DIRECT_SCALARS
int vtkIdType
Definition: vtkType.h:332
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
#define VTK_SIZEHINT(...)