Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00083 #ifndef __vtkKWEObjectTreeNodeIterator_h
00084 #define __vtkKWEObjectTreeNodeIterator_h
00085
00086 #include "vtkObject.h"
00087 #include "vtkSmartPointer.h"
00088 #include "VTKEdgeConfigure.h"
00089
00090 #include <vtkstd/vector>
00091
00092 class vtkKWEObjectTreeNodeBase;
00093 class vtkKWEObjectTreeNodeIteratorInternals;
00094
00095 class VTKEdge_FILTERING_EXPORT vtkKWEObjectTreeNodeIterator : public vtkObject
00096 {
00097 public:
00098 static vtkKWEObjectTreeNodeIterator* New();
00099 vtkTypeRevisionMacro(vtkKWEObjectTreeNodeIterator, vtkObject);
00100 void PrintSelf(ostream& os, vtkIndent indent);
00101
00103
00104 void SetBaseNode(vtkKWEObjectTreeNodeBase* baseNode);
00105 vtkGetObjectMacro(BaseNode, vtkKWEObjectTreeNodeBase);
00107
00109
00113 void SetPatternNode(vtkKWEObjectTreeNodeBase* patternNode);
00114 vtkGetObjectMacro(PatternNode, vtkKWEObjectTreeNodeBase);
00116
00120 void InitTraversal() { this->GoToFirstNode(); };
00121
00125 void GoToFirstNode();
00126
00130 void GoToNextNode();
00131
00137 vtkKWEObjectTreeNodeBase *GetCurrentNode();
00138
00140
00143 vtkGetMacro(CurrentDepth, int);
00145
00147 bool IsDoneWithTraversal();
00148
00150
00152 vtkBooleanMacro(IncludeBaseNode, bool);
00153 vtkSetMacro(IncludeBaseNode, bool);
00154 vtkGetMacro(IncludeBaseNode, bool);
00156
00158
00159 vtkSetClampMacro(MaximumTraversalDepth, int, 0, VTK_LARGE_INTEGER);
00160 vtkGetMacro(MaximumTraversalDepth, int);
00162
00164
00166 void SetTraversalToChildrenOnly()
00167 {
00168 this->SetMaximumTraversalDepth(1);
00169 this->IncludeBaseNodeOff();
00170 }
00172
00174
00176 void SetTraversalToEntireSubtree()
00177 {
00178 this->SetMaximumTraversalDepth(VTK_LARGE_INTEGER);
00179 this->IncludeBaseNodeOn();
00180 }
00182
00183 enum TraversalModes
00184 {
00185 DEPTH_FIRST = 0,
00186 BREADTH_FIRST
00187 };
00188
00190
00192 void SetTraversalModeToDepthFirst()
00193 { this->SetTraversalMode( DEPTH_FIRST ); }
00194 void SetTraversalModeToBreadthFirst()
00195 { this->SetTraversalMode( BREADTH_FIRST ); }
00196 vtkSetClampMacro(TraversalMode, int, DEPTH_FIRST, BREADTH_FIRST);
00197 vtkGetMacro(TraversalMode, int);
00198 const char *GetTraversalModeAsString();
00200
00202
00205 vtkBooleanMacro(ConsiderInheritedProperties, bool);
00206 vtkSetMacro(ConsiderInheritedProperties, bool);
00207 vtkGetMacro(ConsiderInheritedProperties, bool);
00209
00210 protected:
00211 vtkKWEObjectTreeNodeIterator();
00212 virtual ~vtkKWEObjectTreeNodeIterator();
00213
00214 vtkKWEObjectTreeNodeBase *BaseNode;
00215 vtkKWEObjectTreeNodeBase *PatternNode;
00216
00217 vtkSmartPointer<vtkKWEObjectTreeNodeBase> CurrentNode;
00218
00219 vtkKWEObjectTreeNodeIteratorInternals *Internals;
00220
00222 bool IncludeBaseNode;
00223
00225 unsigned long InitTraversalTime;
00226
00227 friend class vtkKWEObjectTreeNodeBase;
00228 void AddChildren(vtkstd::vector<vtkKWEObjectTreeNodeBase*> &children);
00229
00231 int CurrentDepth;
00232
00234 int MaximumTraversalDepth;
00235
00237 int TraversalMode;
00238
00241 bool ConsiderInheritedProperties;
00242
00243
00244 void Clear();
00245
00246 private:
00247 vtkKWEObjectTreeNodeIterator(const vtkKWEObjectTreeNodeIterator&);
00248 void operator=(const vtkKWEObjectTreeNodeIterator&);
00249 };
00250
00251 #endif
00252
00253