00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkLODActor.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00073 #ifndef __vtkLODActor_h 00074 #define __vtkLODActor_h 00075 00076 #include "vtkActor.h" 00077 00078 class vtkMapper; 00079 class vtkMapperCollection; 00080 class vtkMaskPoints; 00081 class vtkOutlineFilter; 00082 class vtkPolyDataMapper; 00083 class vtkRenderer; 00084 class vtkViewport; 00085 class vtkWindow; 00086 00087 class VTK_RENDERING_EXPORT vtkLODActor : public vtkActor 00088 { 00089 public: 00090 vtkTypeRevisionMacro(vtkLODActor,vtkActor); 00091 void PrintSelf(ostream& os, vtkIndent indent); 00092 00096 static vtkLODActor *New(); 00097 00100 virtual void Render(vtkRenderer *, vtkMapper *); 00101 00104 int RenderOpaqueGeometry(vtkViewport *viewport); 00105 00109 void ReleaseGraphicsResources(vtkWindow *); 00110 00113 void AddLODMapper(vtkMapper *mapper); 00114 00116 00117 vtkGetMacro(NumberOfCloudPoints,int); 00118 vtkSetMacro(NumberOfCloudPoints,int); 00120 00122 00124 vtkGetObjectMacro(LODMappers, vtkMapperCollection); 00126 00129 void Modified(); 00130 00132 void ShallowCopy(vtkProp *prop); 00133 00134 protected: 00135 vtkLODActor(); 00136 ~vtkLODActor(); 00137 00138 vtkActor *Device; 00139 vtkMapperCollection *LODMappers; 00140 00141 // stuff for creating our own LOD mappers 00142 vtkMaskPoints *MaskPoints; 00143 vtkOutlineFilter *OutlineFilter; 00144 vtkTimeStamp BuildTime; 00145 int NumberOfCloudPoints; 00146 vtkPolyDataMapper *LowMapper; 00147 vtkPolyDataMapper *MediumMapper; 00148 00149 void CreateOwnLODs(); 00150 void UpdateOwnLODs(); 00151 void DeleteOwnLODs(); 00152 00153 private: 00154 vtkLODActor(const vtkLODActor&); // Not implemented. 00155 void operator=(const vtkLODActor&); // Not implemented. 00156 }; 00157 00158 #endif 00159 00160