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