00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkAssembly.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 =========================================================================*/ 00077 #ifndef __vtkAssembly_h 00078 #define __vtkAssembly_h 00079 00080 #include "vtkProp3D.h" 00081 00082 class vtkAssemblyPaths; 00083 class vtkProp3DCollection; 00084 class vtkMapper; 00085 class vtkProperty; 00086 class vtkActor; 00087 00088 class VTK_RENDERING_EXPORT vtkAssembly : public vtkProp3D 00089 { 00090 public: 00091 static vtkAssembly *New(); 00092 00093 vtkTypeRevisionMacro(vtkAssembly,vtkProp3D); 00094 void PrintSelf(ostream& os, vtkIndent indent); 00095 00097 void AddPart(vtkProp3D *); 00098 00100 void RemovePart(vtkProp3D *); 00101 00103 vtkProp3DCollection *GetParts(); 00104 00106 00109 void GetActors(vtkPropCollection *); 00110 void GetVolumes(vtkPropCollection *); 00112 00114 00119 int RenderOpaqueGeometry(vtkViewport *ren); 00120 int RenderTranslucentGeometry(vtkViewport *ren); 00122 00126 void ReleaseGraphicsResources(vtkWindow *); 00127 00129 00139 void InitPathTraversal(); 00140 vtkAssemblyPath *GetNextPath(); 00141 int GetNumberOfPaths(); 00143 00145 00146 void GetBounds(float bounds[6]) {this->vtkProp3D::GetBounds( bounds );}; 00147 float *GetBounds(); 00149 00152 unsigned long int GetMTime(); 00153 00155 void ShallowCopy(vtkProp *prop); 00156 00157 //BTX 00162 void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path); 00163 //ETX 00164 00165 protected: 00166 vtkAssembly(); 00167 ~vtkAssembly(); 00168 00169 // Keep a list of direct descendants of the assembly hierarchy 00170 vtkProp3DCollection *Parts; 00171 00172 // Support the BuildPaths() method. Caches last paths built for 00173 // performance. 00174 vtkTimeStamp PathTime; 00175 virtual void UpdatePaths(); //apply transformations and properties recursively 00176 00177 private: 00178 vtkAssembly(const vtkAssembly&); // Not implemented. 00179 void operator=(const vtkAssembly&); // Not implemented. 00180 }; 00181 00183 inline vtkProp3DCollection *vtkAssembly::GetParts() {return this->Parts;} 00184 00185 #endif 00186 00187 00188 00189