00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkPropAssembly.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 =========================================================================*/ 00046 #ifndef __vtkPropAssembly_h 00047 #define __vtkPropAssembly_h 00048 00049 #include "vtkProp.h" 00050 00051 class VTK_COMMON_EXPORT vtkPropAssembly : public vtkProp 00052 { 00053 public: 00054 vtkTypeRevisionMacro(vtkPropAssembly,vtkProp); 00055 void PrintSelf(ostream& os, vtkIndent indent); 00056 00058 static vtkPropAssembly *New(); 00059 00061 void AddPart(vtkProp *); 00062 00064 void RemovePart(vtkProp *); 00065 00067 vtkPropCollection *GetParts(); 00068 00070 00073 int RenderOpaqueGeometry(vtkViewport *ren); 00074 int RenderTranslucentGeometry(vtkViewport *ren); 00075 int RenderOverlay(vtkViewport *); 00077 00081 void ReleaseGraphicsResources(vtkWindow *); 00082 00086 double *GetBounds(); 00087 00089 void ShallowCopy(vtkProp *Prop); 00090 00093 unsigned long int GetMTime(); 00094 00096 00104 void InitPathTraversal(); 00105 vtkAssemblyPath *GetNextPath(); 00106 int GetNumberOfPaths(); 00108 00109 //BTX 00113 void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path); 00114 //ETX 00115 00116 protected: 00117 vtkPropAssembly(); 00118 ~vtkPropAssembly(); 00119 00120 vtkPropCollection *Parts; 00121 double Bounds[6]; 00122 00123 // Support the BuildPaths() method, 00124 vtkTimeStamp PathTime; 00125 void UpdatePaths(); //apply transformations and properties recursively 00126 private: 00127 vtkPropAssembly(const vtkPropAssembly&); // Not implemented. 00128 void operator=(const vtkPropAssembly&); // Not implemented. 00129 }; 00130 00131 #endif 00132 00133 00134 00135