/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkAbstractMapper.h,v $ 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. =========================================================================*/ // .NAME vtkAbstractMapper - abstract class specifies interface to map data // .SECTION Description // 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. // // .SECTION See Also // vtkAbstractMapper3D vtkMapper vtkPolyDataMapper vtkVolumeMapper #ifndef __vtkAbstractMapper_h #define __vtkAbstractMapper_h #include "vtkAlgorithm.h" #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 vtkDataArray; class vtkDataSet; class vtkPlane; class vtkPlaneCollection; class vtkPlanes; class vtkTimerLog; class vtkWindow; class VTK_FILTERING_EXPORT vtkAbstractMapper : public vtkAlgorithm { public: vtkTypeRevisionMacro(vtkAbstractMapper,vtkAlgorithm); void PrintSelf(ostream& os, vtkIndent indent); // Description: // Override Modifiedtime as we have added Clipping planes virtual unsigned long GetMTime(); // Description: // 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 *) {}; // Description: // Get the time required to draw the geometry last time it was rendered vtkGetMacro( TimeToDraw, double ); // Description: // 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(); // Description: // Get/Set the vtkPlaneCollection which specifies the // clipping planes. virtual void SetClippingPlanes(vtkPlaneCollection*); vtkGetObjectMacro(ClippingPlanes,vtkPlaneCollection); // Description: // 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); // Description: // Make a shallow copy of this mapper. void ShallowCopy(vtkAbstractMapper *m); // Description: // 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); protected: vtkAbstractMapper(); ~vtkAbstractMapper(); vtkTimerLog *Timer; double TimeToDraw; vtkWindow *LastWindow; // Window used for the previous render vtkPlaneCollection *ClippingPlanes; private: vtkAbstractMapper(const vtkAbstractMapper&); // Not implemented. void operator=(const vtkAbstractMapper&); // Not implemented. }; #endif