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++

/*=========================================================================
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