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 =========================================================================*/ 00058 #ifndef __vtkLODActor_h 00059 #define __vtkLODActor_h 00060 00061 #include "vtkActor.h" 00062 00063 class vtkMapper; 00064 class vtkMapperCollection; 00065 class vtkPolyDataAlgorithm; 00066 class vtkPolyDataMapper; 00067 class vtkRenderer; 00068 class vtkViewport; 00069 class vtkWindow; 00070 00071 class VTK_RENDERING_EXPORT vtkLODActor : public vtkActor 00072 { 00073 public: 00074 vtkTypeRevisionMacro(vtkLODActor,vtkActor); 00075 void PrintSelf(ostream& os, vtkIndent indent); 00076 00080 static vtkLODActor *New(); 00081 00084 virtual void Render(vtkRenderer *, vtkMapper *); 00085 00088 int RenderOpaqueGeometry(vtkViewport *viewport); 00089 00093 void ReleaseGraphicsResources(vtkWindow *); 00094 00097 void AddLODMapper(vtkMapper *mapper); 00098 00100 00103 virtual void SetLowResFilter( vtkPolyDataAlgorithm * ); 00104 virtual void SetMediumResFilter( vtkPolyDataAlgorithm * ); 00105 vtkGetObjectMacro( LowResFilter, vtkPolyDataAlgorithm ); 00106 vtkGetObjectMacro( MediumResFilter, vtkPolyDataAlgorithm ); 00108 00110 00111 vtkGetMacro(NumberOfCloudPoints,int); 00112 vtkSetMacro(NumberOfCloudPoints,int); 00114 00116 00118 vtkGetObjectMacro(LODMappers, vtkMapperCollection); 00120 00123 void Modified(); 00124 00126 void ShallowCopy(vtkProp *prop); 00127 00128 protected: 00129 vtkLODActor(); 00130 ~vtkLODActor(); 00131 00132 vtkActor *Device; 00133 vtkMapperCollection *LODMappers; 00134 00135 // We can create our own LOD filters. The default is to use a 00136 // 00137 vtkPolyDataAlgorithm * LowResFilter; 00138 vtkPolyDataAlgorithm * MediumResFilter; 00139 vtkPolyDataMapper * LowMapper; 00140 vtkPolyDataMapper * MediumMapper; 00141 00142 vtkTimeStamp BuildTime; 00143 int NumberOfCloudPoints; 00144 00145 virtual void CreateOwnLODs(); 00146 virtual void UpdateOwnLODs(); 00147 virtual void DeleteOwnLODs(); 00148 00149 private: 00150 vtkLODActor(const vtkLODActor&); // Not implemented. 00151 void operator=(const vtkLODActor&); // Not implemented. 00152 }; 00153 00154 #endif 00155 00156