00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkAssemblyPath.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 =========================================================================*/ 00046 #ifndef __vtkAssemblyPath_h 00047 #define __vtkAssemblyPath_h 00048 00049 #include "vtkCollection.h" 00050 00051 class vtkAssemblyNode; 00052 class vtkMatrix4x4; 00053 class vtkTransform; 00054 class vtkProp; 00055 00056 class VTK_COMMON_EXPORT vtkAssemblyPath : public vtkCollection 00057 { 00058 public: 00059 vtkTypeRevisionMacro(vtkAssemblyPath,vtkCollection); 00060 void PrintSelf(ostream& os, vtkIndent indent); 00061 00063 static vtkAssemblyPath *New(); 00064 00068 void AddNode(vtkProp *p, vtkMatrix4x4 *m); 00069 00075 vtkAssemblyNode *GetNextNode(); 00076 00080 vtkAssemblyNode *GetFirstNode(); 00081 00084 vtkAssemblyNode *GetLastNode(); 00085 00087 void DeleteLastNode(); 00088 00090 void ShallowCopy(vtkAssemblyPath *path); 00091 00094 virtual unsigned long GetMTime(); 00095 00096 protected: 00097 vtkAssemblyPath(); 00098 ~vtkAssemblyPath(); 00099 00100 void AddNode(vtkAssemblyNode *n); //Internal method adds assembly node 00101 vtkTransform *Transform; //Used to perform matrix concatentation 00102 vtkProp *TransformedProp; //A transformed prop used to do the rendering 00103 00104 private: 00105 // hide the standard AddItem from the user and the compiler. 00106 void AddItem(vtkObject *o) { this->vtkCollection::AddItem(o); }; 00107 00108 private: 00109 vtkAssemblyPath(const vtkAssemblyPath&); // Not implemented. 00110 void operator=(const vtkAssemblyPath&); // Not implemented. 00111 }; 00112 00113 #endif