00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkActorCollection.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 =========================================================================*/ 00045 #ifndef __vtkActorC_h 00046 #define __vtkActorC_h 00047 00048 #include "vtkPropCollection.h" 00049 #include "vtkActor.h" // For inline methods 00050 00051 class vtkProperty; 00052 00053 class VTK_RENDERING_EXPORT vtkActorCollection : public vtkPropCollection 00054 { 00055 public: 00056 static vtkActorCollection *New(); 00057 vtkTypeRevisionMacro(vtkActorCollection,vtkPropCollection); 00058 virtual void PrintSelf(ostream& os, vtkIndent indent); 00059 00061 void AddItem(vtkActor *a); 00062 00064 vtkActor *GetNextActor(); 00065 00067 vtkActor *GetLastActor(); 00068 00070 00073 vtkActor *GetNextItem(); 00074 vtkActor *GetLastItem(); 00076 00078 void ApplyProperties(vtkProperty *p); 00079 00080 protected: 00081 vtkActorCollection() {}; 00082 ~vtkActorCollection() {}; 00083 00084 00085 private: 00086 // hide the standard AddItem from the user and the compiler. 00087 void AddItem(vtkObject *o) { this->vtkCollection::AddItem(o); }; 00088 void AddItem(vtkProp *o) { this->vtkPropCollection::AddItem(o); }; 00089 00090 private: 00091 vtkActorCollection(const vtkActorCollection&); // Not implemented. 00092 void operator=(const vtkActorCollection&); // Not implemented. 00093 }; 00094 00095 inline void vtkActorCollection::AddItem(vtkActor *a) 00096 { 00097 this->vtkCollection::AddItem((vtkObject *)a); 00098 } 00099 00100 inline vtkActor *vtkActorCollection::GetNextActor() 00101 { 00102 return static_cast<vtkActor *>(this->GetNextItemAsObject()); 00103 } 00104 00105 inline vtkActor *vtkActorCollection::GetLastActor() 00106 { 00107 if ( this->Bottom == NULL ) 00108 { 00109 return NULL; 00110 } 00111 else 00112 { 00113 return static_cast<vtkActor *>(this->Bottom->Item); 00114 } 00115 } 00116 00117 inline vtkActor *vtkActorCollection::GetNextItem() 00118 { 00119 return this->GetNextActor(); 00120 } 00121 00122 inline vtkActor *vtkActorCollection::GetLastItem() 00123 { 00124 return this->GetLastActor(); 00125 } 00126 00127 #endif 00128 00129 00130 00131 00132