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 =========================================================================*/ 00061 #ifndef __vtkLODActor_h 00062 #define __vtkLODActor_h 00063 00064 #include "vtkActor.h" 00065 00066 class vtkMapper; 00067 class vtkMapperCollection; 00068 class vtkMaskPoints; 00069 class vtkOutlineFilter; 00070 class vtkPolyDataMapper; 00071 class vtkRenderer; 00072 class vtkViewport; 00073 class vtkWindow; 00074 00075 class VTK_RENDERING_EXPORT vtkLODActor : public vtkActor 00076 { 00077 public: 00078 vtkTypeRevisionMacro(vtkLODActor,vtkActor); 00079 void PrintSelf(ostream& os, vtkIndent indent); 00080 00084 static vtkLODActor *New(); 00085 00088 virtual void Render(vtkRenderer *, vtkMapper *); 00089 00092 int RenderOpaqueGeometry(vtkViewport *viewport); 00093 00097 void ReleaseGraphicsResources(vtkWindow *); 00098 00101 void AddLODMapper(vtkMapper *mapper); 00102 00104 00105 vtkGetMacro(NumberOfCloudPoints,int); 00106 vtkSetMacro(NumberOfCloudPoints,int); 00108 00110 00112 vtkGetObjectMacro(LODMappers, vtkMapperCollection); 00114 00117 void Modified(); 00118 00120 void ShallowCopy(vtkProp *prop); 00121 00122 protected: 00123 vtkLODActor(); 00124 ~vtkLODActor(); 00125 00126 vtkActor *Device; 00127 vtkMapperCollection *LODMappers; 00128 00129 // stuff for creating our own LOD mappers 00130 vtkMaskPoints *MaskPoints; 00131 vtkOutlineFilter *OutlineFilter; 00132 vtkTimeStamp BuildTime; 00133 int NumberOfCloudPoints; 00134 vtkPolyDataMapper *LowMapper; 00135 vtkPolyDataMapper *MediumMapper; 00136 00137 virtual void CreateOwnLODs(); 00138 virtual void UpdateOwnLODs(); 00139 virtual void DeleteOwnLODs(); 00140 00141 private: 00142 vtkLODActor(const vtkLODActor&); // Not implemented. 00143 void operator=(const vtkLODActor&); // Not implemented. 00144 }; 00145 00146 #endif 00147 00148