VTK
dox/Rendering/Core/vtkAssemblyPath.h
Go to the documentation of this file.
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