You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
4.6 KiB
C++
150 lines
4.6 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkAbstractMapper.h
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
/**
|
|
* @class vtkAbstractMapper
|
|
* @brief abstract class specifies interface to map data
|
|
*
|
|
* vtkAbstractMapper is an abstract class to specify interface between data and
|
|
* graphics primitives or software rendering techniques. Subclasses of
|
|
* vtkAbstractMapper can be used for rendering 2D data, geometry, or volumetric
|
|
* data.
|
|
*
|
|
* @sa
|
|
* vtkAbstractMapper3D vtkMapper vtkPolyDataMapper vtkVolumeMapper
|
|
*/
|
|
|
|
#ifndef vtkAbstractMapper_h
|
|
#define vtkAbstractMapper_h
|
|
|
|
#include "vtkAlgorithm.h"
|
|
#include "vtkRenderingCoreModule.h" // For export macro
|
|
|
|
#define VTK_SCALAR_MODE_DEFAULT 0
|
|
#define VTK_SCALAR_MODE_USE_POINT_DATA 1
|
|
#define VTK_SCALAR_MODE_USE_CELL_DATA 2
|
|
#define VTK_SCALAR_MODE_USE_POINT_FIELD_DATA 3
|
|
#define VTK_SCALAR_MODE_USE_CELL_FIELD_DATA 4
|
|
#define VTK_SCALAR_MODE_USE_FIELD_DATA 5
|
|
|
|
#define VTK_GET_ARRAY_BY_ID 0
|
|
#define VTK_GET_ARRAY_BY_NAME 1
|
|
|
|
class vtkAbstractArray;
|
|
class vtkDataSet;
|
|
class vtkPlane;
|
|
class vtkPlaneCollection;
|
|
class vtkPlanes;
|
|
class vtkTimerLog;
|
|
class vtkWindow;
|
|
|
|
class VTKRENDERINGCORE_EXPORT vtkAbstractMapper : public vtkAlgorithm
|
|
{
|
|
public:
|
|
vtkTypeMacro(vtkAbstractMapper, vtkAlgorithm);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
/**
|
|
* Override Modifiedtime as we have added Clipping planes
|
|
*/
|
|
vtkMTimeType GetMTime() override;
|
|
|
|
/**
|
|
* Release any graphics resources that are being consumed by this mapper.
|
|
* The parameter window could be used to determine which graphic
|
|
* resources to release.
|
|
*/
|
|
virtual void ReleaseGraphicsResources(vtkWindow*) {}
|
|
|
|
//@{
|
|
/**
|
|
* Get the time required to draw the geometry last time it was rendered
|
|
*/
|
|
vtkGetMacro(TimeToDraw, double);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Specify clipping planes to be applied when the data is mapped
|
|
* (at most 6 clipping planes can be specified).
|
|
*/
|
|
void AddClippingPlane(vtkPlane* plane);
|
|
void RemoveClippingPlane(vtkPlane* plane);
|
|
void RemoveAllClippingPlanes();
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Get/Set the vtkPlaneCollection which specifies the
|
|
* clipping planes.
|
|
*/
|
|
virtual void SetClippingPlanes(vtkPlaneCollection*);
|
|
vtkGetObjectMacro(ClippingPlanes, vtkPlaneCollection);
|
|
//@}
|
|
|
|
/**
|
|
* An alternative way to set clipping planes: use up to six planes found
|
|
* in the supplied instance of the implicit function vtkPlanes.
|
|
*/
|
|
void SetClippingPlanes(vtkPlanes* planes);
|
|
|
|
/**
|
|
* Make a shallow copy of this mapper.
|
|
*/
|
|
virtual void ShallowCopy(vtkAbstractMapper* m);
|
|
|
|
/**
|
|
* Internal helper function for getting the active scalars. The scalar
|
|
* mode indicates where the scalars come from. The cellFlag is a
|
|
* return value that is set when the scalars actually are cell scalars.
|
|
* (0 for point scalars, 1 for cell scalars, 2 for field scalars)
|
|
* The arrayAccessMode is used to indicate how to retrieve the scalars from
|
|
* field data, per id or per name (if the scalarMode indicates that).
|
|
*/
|
|
static vtkDataArray* GetScalars(vtkDataSet* input, int scalarMode, int arrayAccessMode,
|
|
int arrayId, const char* arrayName, int& cellFlag);
|
|
|
|
/**
|
|
* Internal helper function for getting the active scalars as an
|
|
* abstract array. The scalar mode indicates where the scalars come
|
|
* from. The cellFlag is a return value that is set when the
|
|
* scalars actually are cell scalars. (0 for point scalars, 1 for
|
|
* cell scalars, 2 for field scalars) The arrayAccessMode is used to
|
|
* indicate how to retrieve the scalars from field data, per id or
|
|
* per name (if the scalarMode indicates that).
|
|
*/
|
|
static vtkAbstractArray* GetAbstractScalars(vtkDataSet* input, int scalarMode,
|
|
int arrayAccessMode, int arrayId, const char* arrayName, int& cellFlag);
|
|
|
|
/**
|
|
* Get the number of clipping planes.
|
|
*/
|
|
int GetNumberOfClippingPlanes();
|
|
|
|
protected:
|
|
vtkAbstractMapper();
|
|
~vtkAbstractMapper() override;
|
|
|
|
vtkTimerLog* Timer;
|
|
double TimeToDraw;
|
|
vtkWindow* LastWindow; // Window used for the previous render
|
|
vtkPlaneCollection* ClippingPlanes;
|
|
|
|
private:
|
|
vtkAbstractMapper(const vtkAbstractMapper&) = delete;
|
|
void operator=(const vtkAbstractMapper&) = delete;
|
|
};
|
|
|
|
#endif
|