VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkAssemblyPath.h 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 =========================================================================*/ 00029 #ifndef __vtkAssemblyPath_h 00030 #define __vtkAssemblyPath_h 00031 00032 #include "vtkRenderingCoreModule.h" // For export macro 00033 #include "vtkCollection.h" 00034 #include "vtkAssemblyNode.h" // used for inlines 00035 00036 class vtkMatrix4x4; 00037 class vtkTransform; 00038 class vtkProp; 00039 00040 class VTKRENDERINGCORE_EXPORT vtkAssemblyPath : public vtkCollection 00041 { 00042 public: 00043 vtkTypeMacro(vtkAssemblyPath, vtkCollection); 00044 void PrintSelf(ostream& os, vtkIndent indent); 00045 00047 static vtkAssemblyPath *New(); 00048 00052 void AddNode(vtkProp *p, vtkMatrix4x4 *m); 00053 00059 vtkAssemblyNode *GetNextNode(); 00060 00064 vtkAssemblyNode *GetFirstNode(); 00065 00068 vtkAssemblyNode *GetLastNode(); 00069 00071 void DeleteLastNode(); 00072 00074 void ShallowCopy(vtkAssemblyPath *path); 00075 00078 virtual unsigned long GetMTime(); 00079 00080 //BTX 00082 00084 vtkAssemblyNode *GetNextNode(vtkCollectionSimpleIterator &cookie) 00085 { return static_cast<vtkAssemblyNode *>(this->GetNextItemAsObject(cookie)); } 00086 //ETX 00088 00089 protected: 00090 vtkAssemblyPath(); 00091 ~vtkAssemblyPath(); 00092 00093 void AddNode(vtkAssemblyNode *n); //Internal method adds assembly node 00094 vtkTransform *Transform; //Used to perform matrix concatentation 00095 vtkProp *TransformedProp; //A transformed prop used to do the rendering 00096 00097 private: 00098 // hide the standard AddItem from the user and the compiler. 00099 void AddItem(vtkObject *o) 00100 { this->vtkCollection::AddItem(o); } 00101 00102 private: 00103 vtkAssemblyPath(const vtkAssemblyPath&); // Not implemented. 00104 void operator=(const vtkAssemblyPath&); // Not implemented. 00105 }; 00106 00107 #endif