00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkAssemblyPath.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 =========================================================================*/ 00040 #ifndef __vtkAssemblyPath_h 00041 #define __vtkAssemblyPath_h 00042 00043 #include "vtkCollection.h" 00044 #include "vtkAssemblyNode.h" // used for inlines 00045 00046 class vtkMatrix4x4; 00047 class vtkTransform; 00048 class vtkProp; 00049 00050 class VTK_COMMON_EXPORT vtkAssemblyPath : public vtkCollection 00051 { 00052 public: 00053 vtkTypeRevisionMacro(vtkAssemblyPath,vtkCollection); 00054 void PrintSelf(ostream& os, vtkIndent indent); 00055 00057 static vtkAssemblyPath *New(); 00058 00062 void AddNode(vtkProp *p, vtkMatrix4x4 *m); 00063 00069 vtkAssemblyNode *GetNextNode(); 00070 00074 vtkAssemblyNode *GetFirstNode(); 00075 00078 vtkAssemblyNode *GetLastNode(); 00079 00081 void DeleteLastNode(); 00082 00084 void ShallowCopy(vtkAssemblyPath *path); 00085 00088 virtual unsigned long GetMTime(); 00089 00090 //BTX 00092 00094 vtkAssemblyNode *GetNextNode(vtkCollectionSimpleIterator &cookie) { 00095 return static_cast<vtkAssemblyNode *>(this->GetNextItemAsObject(cookie));}; 00096 //ETX 00098 00099 protected: 00100 vtkAssemblyPath(); 00101 ~vtkAssemblyPath(); 00102 00103 void AddNode(vtkAssemblyNode *n); //Internal method adds assembly node 00104 vtkTransform *Transform; //Used to perform matrix concatentation 00105 vtkProp *TransformedProp; //A transformed prop used to do the rendering 00106 00107 private: 00108 // hide the standard AddItem from the user and the compiler. 00109 void AddItem(vtkObject *o) { this->vtkCollection::AddItem(o); }; 00110 00111 private: 00112 vtkAssemblyPath(const vtkAssemblyPath&); // Not implemented. 00113 void operator=(const vtkAssemblyPath&); // Not implemented. 00114 }; 00115 00116 #endif