VTK  9.2.6
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 =========================================================================*/
142 #ifndef vtkMapper_h
143 #define vtkMapper_h
144 
145 #include "vtkAbstractMapper3D.h"
146 #include "vtkRenderingCoreModule.h" // For export macro
147 #include "vtkSmartPointer.h" // needed for vtkSmartPointer.
148 #include "vtkSystemIncludes.h" // For VTK_COLOR_MODE_DEFAULT and _MAP_SCALARS
149 #include <vector> // for method args
150 
151 #define VTK_RESOLVE_OFF 0
152 #define VTK_RESOLVE_POLYGON_OFFSET 1
153 #define VTK_RESOLVE_SHIFT_ZBUFFER 2
154 
155 #define VTK_GET_ARRAY_BY_ID 0
156 #define VTK_GET_ARRAY_BY_NAME 1
157 
158 #define VTK_MATERIALMODE_DEFAULT 0
159 #define VTK_MATERIALMODE_AMBIENT 1
160 #define VTK_MATERIALMODE_DIFFUSE 2
161 #define VTK_MATERIALMODE_AMBIENT_AND_DIFFUSE 3
162 
163 class vtkActor;
164 class vtkDataSet;
165 class vtkDataObject;
166 class vtkFloatArray;
167 class vtkHardwareSelector;
168 class vtkImageData;
169 class vtkProp;
170 class vtkRenderer;
171 class vtkScalarsToColors;
172 class vtkSelection;
174 class vtkWindow;
175 
176 class VTKRENDERINGCORE_EXPORT vtkMapper : public vtkAbstractMapper3D
177 {
178 public:
180  void PrintSelf(ostream& os, vtkIndent indent) override;
181 
185  void ShallowCopy(vtkAbstractMapper* m) override;
186 
191  vtkMTimeType GetMTime() override;
192 
197  virtual void Render(vtkRenderer* ren, vtkActor* a) = 0;
198 
205 
207 
213 
218  virtual void CreateDefaultLookupTable();
219 
221 
224  vtkSetMacro(ScalarVisibility, vtkTypeBool);
225  vtkGetMacro(ScalarVisibility, vtkTypeBool);
226  vtkBooleanMacro(ScalarVisibility, vtkTypeBool);
228 
230 
236  vtkSetMacro(Static, vtkTypeBool);
237  vtkGetMacro(Static, vtkTypeBool);
238  vtkBooleanMacro(Static, vtkTypeBool);
240 
242 
254  vtkSetMacro(ColorMode, int);
255  vtkGetMacro(ColorMode, int);
256  void SetColorModeToDefault() { this->SetColorMode(VTK_COLOR_MODE_DEFAULT); }
257  void SetColorModeToMapScalars() { this->SetColorMode(VTK_COLOR_MODE_MAP_SCALARS); }
260 
264  const char* GetColorModeAsString();
265 
267 
273  vtkSetMacro(InterpolateScalarsBeforeMapping, vtkTypeBool);
274  vtkGetMacro(InterpolateScalarsBeforeMapping, vtkTypeBool);
275  vtkBooleanMacro(InterpolateScalarsBeforeMapping, vtkTypeBool);
277 
279 
287  vtkSetMacro(UseLookupTableScalarRange, vtkTypeBool);
288  vtkGetMacro(UseLookupTableScalarRange, vtkTypeBool);
289  vtkBooleanMacro(UseLookupTableScalarRange, vtkTypeBool);
291 
293 
298  vtkSetVector2Macro(ScalarRange, double);
299  vtkGetVectorMacro(ScalarRange, double, 2);
301 
315  // When ScalarMode is set to use Field Data (ScalarModeToFieldData),
316  // you must call SelectColorArray to choose the field data array to
317  // be used to color cells. In this mode, the default behavior is to
318  // treat the field data tuples as being associated with cells. If
319  // the poly data contains triangle strips, the array is expected to
320  // contain the cell data for each mini-cell formed by any triangle
321  // strips in the poly data as opposed to treating them as a single
322  // tuple that applies to the entire strip. This mode can also be
323  // used to color the entire poly data by a single color obtained by
324  // mapping the tuple at a given index in the field data array
325  // through the color map. Use SetFieldDataTupleId() to specify
326  // the tuple index.
327  vtkSetMacro(ScalarMode, int);
328  vtkGetMacro(ScalarMode, int);
329  void SetScalarModeToDefault() { this->SetScalarMode(VTK_SCALAR_MODE_DEFAULT); }
333  {
334  this->SetScalarMode(VTK_SCALAR_MODE_USE_POINT_FIELD_DATA);
335  }
337  {
338  this->SetScalarMode(VTK_SCALAR_MODE_USE_CELL_FIELD_DATA);
339  }
341 
343 
348  void SelectColorArray(int arrayNum);
349  void SelectColorArray(const char* arrayName);
351 
352  // When ScalarMode is set to UseFieldData, set the index of the
353  // tuple by which to color the entire data set. By default, the
354  // index is -1, which means to treat the field data array selected
355  // with SelectColorArray as having a scalar value for each cell.
356  // Indices of 0 or higher mean to use the tuple at the given index
357  // for coloring the entire data set.
358  vtkSetMacro(FieldDataTupleId, vtkIdType);
359  vtkGetMacro(FieldDataTupleId, vtkIdType);
360 
362 
367  void ColorByArrayComponent(int arrayNum, int component);
368  void ColorByArrayComponent(const char* arrayName, int component);
370 
374  vtkGetStringMacro(ArrayName);
375  vtkSetStringMacro(ArrayName);
376  vtkGetMacro(ArrayId, int);
377  vtkSetMacro(ArrayId, int);
378  vtkGetMacro(ArrayAccessMode, int);
379  vtkSetMacro(ArrayAccessMode, int);
380  vtkGetMacro(ArrayComponent, int);
381  vtkSetMacro(ArrayComponent, int);
382 
386  const char* GetScalarModeAsString();
387 
389 
399  static void SetResolveCoincidentTopology(int val);
402  static void SetResolveCoincidentTopologyToOff() { SetResolveCoincidentTopology(VTK_RESOLVE_OFF); }
404  {
405  SetResolveCoincidentTopology(VTK_RESOLVE_POLYGON_OFFSET);
406  }
408  {
409  SetResolveCoincidentTopology(VTK_RESOLVE_SHIFT_ZBUFFER);
410  }
412 
414 
419  static void SetResolveCoincidentTopologyPolygonOffsetParameters(double factor, double units);
420  static void GetResolveCoincidentTopologyPolygonOffsetParameters(double& factor, double& units);
422 
424 
428  void SetRelativeCoincidentTopologyPolygonOffsetParameters(double factor, double units);
429  void GetRelativeCoincidentTopologyPolygonOffsetParameters(double& factor, double& units);
431 
433 
438  static void SetResolveCoincidentTopologyLineOffsetParameters(double factor, double units);
439  static void GetResolveCoincidentTopologyLineOffsetParameters(double& factor, double& units);
441 
443 
447  void SetRelativeCoincidentTopologyLineOffsetParameters(double factor, double units);
448  void GetRelativeCoincidentTopologyLineOffsetParameters(double& factor, double& units);
450 
452 
460 
462 
469 
471 
475  void GetCoincidentTopologyPolygonOffsetParameters(double& factor, double& units);
476  void GetCoincidentTopologyLineOffsetParameters(double& factor, double& units);
479 
481 
491 
493 
497  static void SetResolveCoincidentTopologyZShift(double val);
500 
505  double* GetBounds() VTK_SIZEHINT(6) override;
506  void GetBounds(double bounds[6]) override { this->vtkAbstractMapper3D::GetBounds(bounds); }
507 
513  void SetRenderTime(double time) { this->RenderTime = time; }
514  vtkGetMacro(RenderTime, double);
515 
521 
528  vtkDataSet* GetInputAsDataSet() { return this->GetInput(); }
529 
531 
539  virtual vtkUnsignedCharArray* MapScalars(double alpha, int& cellFlag);
541  virtual vtkUnsignedCharArray* MapScalars(vtkDataSet* input, double alpha, int& cellFlag);
543 
545 
550  virtual bool HasOpaqueGeometry();
553 
560  virtual bool GetSupportsSelection() { return false; }
561 
567  std::vector<unsigned int>& /* pixeloffsets */, vtkProp* /* prop */)
568  {
569  }
570 
580 
586 
591 
596 
601 
603 
607  vtkGetObjectMacro(Selection, vtkSelection);
608  virtual void SetSelection(vtkSelection*);
610 
611 protected:
613  ~vtkMapper() override;
614 
615  // color mapped colors
617 
618  // Use texture coordinates for coloring.
620  // Coordinate for each point.
622  // 1D ColorMap used for the texture image.
625 
629  double ScalarRange[2];
631 
634 
635  double RenderTime;
636 
637  // for coloring by a component of a field data array
638  int ArrayId;
639  char* ArrayName;
642 
643  // If coloring by field data, which tuple to use to color the entire
644  // data set. If -1, treat array values as cell data.
646 
648 
654 
655  vtkSelection* Selection = nullptr;
656 
657 private:
658  vtkMapper(const vtkMapper&) = delete;
659  void operator=(const vtkMapper&) = delete;
660 };
661 
662 #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:161
general representation of visualization data
abstract class to specify dataset behavior
Definition: vtkDataSet.h:172
dynamic, self-adjusting array of float
topologically and geometrically regular array of data
Definition: vtkImageData.h:163
a simple class to control print indentation
Definition: vtkIndent.h:119
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:177
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:332
vtkScalarsToColors * LookupTable
Definition: vtkMapper.h:626
double CoincidentPolygonFactor
Definition: vtkMapper.h:649
void SetColorModeToMapScalars()
default (ColorModeToDefault), unsigned char scalars are treated as colors, and NOT mapped through the...
Definition: vtkMapper.h:257
int ColorMode
Definition: vtkMapper.h:632
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetScalarModeToUseCellData()
Definition: vtkMapper.h:331
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:619
void SetColorModeToDefault()
default (ColorModeToDefault), unsigned char scalars are treated as colors, and NOT mapped through the...
Definition: vtkMapper.h:256
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:630
void SetScalarModeToDefault()
Definition: vtkMapper.h:329
int ScalarMode
Definition: vtkMapper.h:633
virtual bool GetSupportsSelection()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkMapper.h:560
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:635
void SetScalarModeToUseCellFieldData()
Definition: vtkMapper.h:336
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:623
vtkTimeStamp BuildTime
Definition: vtkMapper.h:628
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:258
vtkTypeBool Static
Definition: vtkMapper.h:647
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:340
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:641
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:638
int ArrayComponent
Definition: vtkMapper.h:640
void SetRenderTime(double time)
This instance variable is used by vtkLODActor to determine which mapper to use.
Definition: vtkMapper.h:513
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:616
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:402
virtual void Render(vtkRenderer *ren, vtkActor *a)=0
Method initiates the mapping process.
vtkTypeBool ScalarVisibility
Definition: vtkMapper.h:627
vtkMTimeType GetMTime() override
Overload standard modified time function.
vtkIdType FieldDataTupleId
Definition: vtkMapper.h:645
double CoincidentPointOffset
Definition: vtkMapper.h:653
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:403
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:407
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:566
double CoincidentLineOffset
Definition: vtkMapper.h:652
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:621
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:330
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:528
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:651
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:650
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:639
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:204
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:76
abstract specification for renderers
Definition: vtkRenderer.h:182
Superclass for mapping scalar values to colors.
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:169
record modification and/or execution time
Definition: vtkTimeStamp.h:55
dynamic, self-adjusting array of unsigned char
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
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:152
#define VTK_RESOLVE_OFF
Definition: vtkMapper.h:151
#define VTK_RESOLVE_SHIFT_ZBUFFER
Definition: vtkMapper.h:153
#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(...)