/*========================================================================= Program: Visualization Toolkit Module: $RCSfile: vtkCompositePainter.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 vtkCompositePainter - painter that can be inserted before any // vtkDataSet painting chain to handle composite datasets. // .SECTION Description // vtkCompositePainter iterates over the leaves in a composite datasets. // This painter can also handle the case when the dataset is not a composite // dataset. #ifndef __vtkCompositePainter_h #define __vtkCompositePainter_h #include "vtkPainter.h" class vtkInformationIntegerKey; class VTK_RENDERING_EXPORT vtkCompositePainter : public vtkPainter { public: static vtkCompositePainter* New(); vtkTypeRevisionMacro(vtkCompositePainter, vtkPainter); void PrintSelf(ostream& os, vtkIndent indent); // Description: // When this key is present and set to 1 in the information passed to the // painter, the painter colors each block using a unique color. static vtkInformationIntegerKey* COLOR_LEAVES(); // Description: // Get the output data object from this painter. The default implementation // simply forwards the input data object as the output. virtual vtkDataObject* GetOutput(); //BTX protected: vtkCompositePainter(); ~vtkCompositePainter(); // Description: // Take part in garbage collection. virtual void ReportReferences(vtkGarbageCollector *collector); // Description: // Called before RenderInternal() if the Information has been changed // since the last time this method was called. // Overridden to update the state of COLOR_LEAVES key. virtual void ProcessInformation(vtkInformation*); // Description: // Performs the actual rendering. Subclasses may override this method. // default implementation merely call a Render on the DelegatePainter, // if any. When RenderInternal() is called, it is assured that the // DelegatePainter is in sync with this painter i.e. UpdateDelegatePainter() // has been called. virtual void RenderInternal(vtkRenderer* renderer, vtkActor* actor, unsigned long typeflags, bool forceCompileOnly); vtkSetMacro(ColorLeaves, int); vtkGetMacro(ColorLeaves, int); int ColorLeaves; vtkDataObject* OutputData; private: vtkCompositePainter(const vtkCompositePainter&); // Not implemented. void operator=(const vtkCompositePainter&); // Not implemented. //ETX }; #endif