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 =========================================================================*/ 00062 #ifndef __vtkAssembly_h 00063 #define __vtkAssembly_h 00064 00065 #include "vtkProp3D.h" 00066 00067 class vtkAssemblyPaths; 00068 class vtkProp3DCollection; 00069 class vtkMapper; 00070 class vtkProperty; 00071 class vtkActor; 00072 00073 class VTK_RENDERING_EXPORT vtkAssembly : public vtkProp3D 00074 { 00075 public: 00076 static vtkAssembly *New(); 00077 00078 vtkTypeRevisionMacro(vtkAssembly,vtkProp3D); 00079 void PrintSelf(ostream& os, vtkIndent indent); 00080 00082 void AddPart(vtkProp3D *); 00083 00085 void RemovePart(vtkProp3D *); 00086 00088 vtkProp3DCollection *GetParts(); 00089 00091 00094 void GetActors(vtkPropCollection *); 00095 void GetVolumes(vtkPropCollection *); 00097 00099 00104 int RenderOpaqueGeometry(vtkViewport *ren); 00105 int RenderTranslucentGeometry(vtkViewport *ren); 00107 00111 void ReleaseGraphicsResources(vtkWindow *); 00112 00114 00124 void InitPathTraversal(); 00125 vtkAssemblyPath *GetNextPath(); 00126 int GetNumberOfPaths(); 00128 00130 00131 void GetBounds(double bounds[6]) {this->vtkProp3D::GetBounds( bounds );}; 00132 double *GetBounds(); 00134 00137 unsigned long int GetMTime(); 00138 00140 void ShallowCopy(vtkProp *prop); 00141 00142 //BTX 00147 void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path); 00148 //ETX 00149 00150 protected: 00151 vtkAssembly(); 00152 ~vtkAssembly(); 00153 00154 // Keep a list of direct descendants of the assembly hierarchy 00155 vtkProp3DCollection *Parts; 00156 00157 // Support the BuildPaths() method. Caches last paths built for 00158 // performance. 00159 vtkTimeStamp PathTime; 00160 virtual void UpdatePaths(); //apply transformations and properties recursively 00161 00162 private: 00163 vtkAssembly(const vtkAssembly&); // Not implemented. 00164 void operator=(const vtkAssembly&); // Not implemented. 00165 }; 00166 00168 inline vtkProp3DCollection *vtkAssembly::GetParts() {return this->Parts;} 00169 00170 #endif 00171 00172 00173 00174