00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkAssembly.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 =========================================================================*/ 00059 #ifndef __vtkAssembly_h 00060 #define __vtkAssembly_h 00061 00062 #include "vtkProp3D.h" 00063 00064 class vtkAssemblyPaths; 00065 class vtkProp3DCollection; 00066 class vtkMapper; 00067 class vtkProperty; 00068 class vtkActor; 00069 00070 class VTK_RENDERING_EXPORT vtkAssembly : public vtkProp3D 00071 { 00072 public: 00073 static vtkAssembly *New(); 00074 00075 vtkTypeRevisionMacro(vtkAssembly,vtkProp3D); 00076 void PrintSelf(ostream& os, vtkIndent indent); 00077 00079 void AddPart(vtkProp3D *); 00080 00082 void RemovePart(vtkProp3D *); 00083 00085 vtkProp3DCollection *GetParts(); 00086 00088 00091 void GetActors(vtkPropCollection *); 00092 void GetVolumes(vtkPropCollection *); 00094 00096 00101 int RenderOpaqueGeometry(vtkViewport *ren); 00102 virtual int RenderTranslucentPolygonalGeometry( vtkViewport *ren); 00103 virtual int RenderVolumetricGeometry( vtkViewport *ren); 00105 00107 virtual int HasTranslucentPolygonalGeometry(); 00108 00112 void ReleaseGraphicsResources(vtkWindow *); 00113 00115 00125 void InitPathTraversal(); 00126 vtkAssemblyPath *GetNextPath(); 00127 int GetNumberOfPaths(); 00129 00131 00132 void GetBounds(double bounds[6]) {this->vtkProp3D::GetBounds( bounds );}; 00133 double *GetBounds(); 00135 00138 unsigned long int GetMTime(); 00139 00141 void ShallowCopy(vtkProp *prop); 00142 00143 //BTX 00148 void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path); 00149 //ETX 00150 00151 protected: 00152 vtkAssembly(); 00153 ~vtkAssembly(); 00154 00155 // Keep a list of direct descendants of the assembly hierarchy 00156 vtkProp3DCollection *Parts; 00157 00158 // Support the BuildPaths() method. Caches last paths built for 00159 // performance. 00160 vtkTimeStamp PathTime; 00161 virtual void UpdatePaths(); //apply transformations and properties recursively 00162 00163 private: 00164 vtkAssembly(const vtkAssembly&); // Not implemented. 00165 void operator=(const vtkAssembly&); // Not implemented. 00166 }; 00167 00169 inline vtkProp3DCollection *vtkAssembly::GetParts() {return this->Parts;} 00170 00171 #endif 00172 00173 00174 00175