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.
nmWTAI-Platform/3rd/VTK7.1/include/vtkDefaultPainter.h

178 lines
5.5 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkDefaultPainter.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 vtkDefaultPainter
* @brief sets up a default chain of painters.
*
*
* This painter does not do any actual rendering.
* Sets up a default pipeline of painters to mimick the behaiour of
* old vtkPolyDataMapper. The chain is as follows:
* input--> vtkScalarsToColorsPainter --> vtkClipPlanesPainter -->
* vtkDisplayListPainter --> vtkCompositePainter -->
* vtkCoincidentTopologyResolutionPainter -->
* vtkLightingPainter --> vtkRepresentationPainter -->
* \<Delegate of vtkDefaultPainter\>.
* Typically, the delegate of the default painter be one that is capable of r
* rendering graphics primitives or a vtkChooserPainter which can select appropriate
* painters to do the rendering.
*/
#ifndef vtkDefaultPainter_h
#define vtkDefaultPainter_h
#include "vtkRenderingOpenGLModule.h" // For export macro
#include "vtkPainter.h"
class vtkClipPlanesPainter;
class vtkCoincidentTopologyResolutionPainter;
class vtkCompositePainter;
class vtkDisplayListPainter;
class vtkLightingPainter;
class vtkRepresentationPainter;
class vtkScalarsToColorsPainter;
class VTKRENDERINGOPENGL_EXPORT vtkDefaultPainter : public vtkPainter
{
public:
static vtkDefaultPainter *New();
vtkTypeMacro(vtkDefaultPainter, vtkPainter);
virtual void PrintSelf(ostream &os, vtkIndent indent);
//@{
/**
* Get/Set the painter that maps scalars to colors.
*/
void SetScalarsToColorsPainter(vtkScalarsToColorsPainter*);
vtkGetObjectMacro(ScalarsToColorsPainter, vtkScalarsToColorsPainter);
//@}
//@{
/**
* Get/Set the painter that handles clipping.
*/
void SetClipPlanesPainter(vtkClipPlanesPainter*);
vtkGetObjectMacro(ClipPlanesPainter, vtkClipPlanesPainter);
//@}
//@{
/**
* Get/Set the painter that builds display lists.
*/
void SetDisplayListPainter(vtkDisplayListPainter*);
vtkGetObjectMacro(DisplayListPainter, vtkDisplayListPainter);
//@}
//@{
/**
* Get/Set the painter used to handle composite datasets.
*/
void SetCompositePainter(vtkCompositePainter*);
vtkGetObjectMacro(CompositePainter, vtkCompositePainter);
//@}
//@{
/**
* Painter used to resolve coincident topology.
*/
void SetCoincidentTopologyResolutionPainter(
vtkCoincidentTopologyResolutionPainter*);
vtkGetObjectMacro(CoincidentTopologyResolutionPainter,
vtkCoincidentTopologyResolutionPainter);
//@}
//@{
/**
* Get/Set the painter that controls lighting.
*/
void SetLightingPainter(vtkLightingPainter*);
vtkGetObjectMacro(LightingPainter, vtkLightingPainter);
//@}
//@{
/**
* Painter used to convert polydata to Wireframe/Points representation.
*/
void SetRepresentationPainter(vtkRepresentationPainter*);
vtkGetObjectMacro(RepresentationPainter, vtkRepresentationPainter);
//@}
/**
* Set/Get the painter to which this painter should propagare its draw calls.
* These methods are overridden so that the delegate is set
* to the end of the Painter Chain.
*/
virtual void SetDelegatePainter(vtkPainter*);
virtual vtkPainter* GetDelegatePainter() { return this->DefaultPainterDelegate; }
/**
* Overridden to setup the chain of painter depending on the
* actor representation. The chain is rebuilt if
* this->MTime has changed
* since last BuildPainterChain();
* Building of the chain does not depend on input polydata,
* hence it does not check if the input has changed at all.
*/
virtual void Render(vtkRenderer* renderer, vtkActor* actor,
unsigned long typeflags, bool forceCompileOnly);
/**
* Release any graphics resources that are being consumed by this painter.
* The parameter window could be used to determine which graphic
* resources to release.
* The call is propagated to the delegate painter, if any.
*/
virtual void ReleaseGraphicsResources(vtkWindow *);
/**
* Expand or shrink the estimated bounds based on the geometric
* transformations applied in the painter. The bounds are left unchanged
* if the painter does not change the geometry.
*/
void UpdateBounds(double bounds[6]);
protected:
vtkDefaultPainter();
~vtkDefaultPainter();
/**
* Setups the the painter chain.
*/
virtual void BuildPainterChain();
/**
* Take part in garbage collection.
*/
void ReportReferences(vtkGarbageCollector *collector) VTK_OVERRIDE;
vtkScalarsToColorsPainter* ScalarsToColorsPainter;
vtkClipPlanesPainter* ClipPlanesPainter;
vtkDisplayListPainter* DisplayListPainter;
vtkCompositePainter* CompositePainter;
vtkCoincidentTopologyResolutionPainter* CoincidentTopologyResolutionPainter;
vtkLightingPainter* LightingPainter;
vtkRepresentationPainter* RepresentationPainter;
vtkTimeStamp ChainBuildTime;
vtkPainter* DefaultPainterDelegate;
void SetDefaultPainterDelegate(vtkPainter*);
private:
vtkDefaultPainter(const vtkDefaultPainter &) VTK_DELETE_FUNCTION;
void operator=(const vtkDefaultPainter &) VTK_DELETE_FUNCTION;
};
#endif //_vtkDefaultPainter_h