VTK
vtkViewNode.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkViewNode.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
26 #ifndef vtkViewNode_h
27 #define vtkViewNode_h
28 
29 #include "vtkRenderingSceneGraphModule.h" // For export macro
30 #include "vtkWeakPointer.h" //avoid ref loop to parent
31 #include "vtkObject.h"
32 
33 class vtkCollection;
34 class vtkViewNodeFactory;
36 
37 class VTKRENDERINGSCENEGRAPH_EXPORT vtkViewNode :
38  public vtkObject
39 {
40 public:
41  vtkTypeMacro(vtkViewNode, vtkObject);
42  void PrintSelf(ostream& os, vtkIndent indent) override;
43 
45 
48  vtkGetObjectMacro(Renderable, vtkObject);
50 
54  virtual void Build(bool /* prepass */) {};
55 
59  virtual void Synchronize(bool /* prepass */) {};
60 
64  virtual void Render(bool /*prepass*/) {};
65 
69  virtual void Invalidate(bool /*prepass*/) {};
70 
72 
75  virtual void SetParent(vtkViewNode*);
76  virtual vtkViewNode * GetParent();
78 
80 
83  virtual void SetChildren(vtkViewNodeCollection*);
84  vtkGetObjectMacro(Children, vtkViewNodeCollection);
86 
88 
92  virtual void SetMyFactory(vtkViewNodeFactory*);
93  vtkGetObjectMacro(MyFactory, vtkViewNodeFactory);
95 
100  vtkViewNode* GetViewNodeFor(vtkObject *);
101 
105  vtkViewNode *GetFirstAncestorOfType(const char *type);
106 
111  virtual void SetRenderable(vtkObject *);
112 
113  // if you want to traverse your children in a specific order
114  // or way override this method
115  virtual void Traverse(int operation);
116 
117  virtual void TraverseAllPasses();
118 
123 
127  enum operation_type{noop, build, synchronize, render, invalidate};
128 
129 protected:
130  vtkViewNode();
131  ~vtkViewNode();
132 
133  static const char* operation_type_strings[];
134 
135  void Apply(int operation, bool prepass);
136 
138 
142  void AddMissingNode(vtkObject *obj);
143  void AddMissingNodes(vtkCollection *col);
145 
147 
151  void PrepareNodes();
154 
159  void RemoveUnusedNodes();
160 
164  virtual vtkViewNode *CreateViewNode(vtkObject *obj);
165 
170 
171  friend class vtkViewNodeFactory;
172 
173 private:
174  vtkViewNode(const vtkViewNode&) = delete;
175  void operator=(const vtkViewNode&) = delete;
176 };
177 
178 #endif
vtkViewNodeCollection
collection of view nodes
Definition: vtkViewNodeCollection.h:30
vtkViewNode::Build
virtual void Build(bool)
Builds myself.
Definition: vtkViewNode.h:54
vtkX3D::type
Definition: vtkX3D.h:516
vtkViewNode::Synchronize
virtual void Synchronize(bool)
Ensures that my state agrees with my Renderable's.
Definition: vtkViewNode.h:59
vtkViewNode::synchronize
Definition: vtkViewNode.h:127
vtkViewNode::MyFactory
vtkViewNodeFactory * MyFactory
Definition: vtkViewNode.h:169
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:53
vtkViewNode::PreparedNodes
vtkCollection * PreparedNodes
Definition: vtkViewNode.h:152
vtkViewNode::operation_type
operation_type
internal mechanics of graph traversal and actions
Definition: vtkViewNode.h:127
vtkCollection
create and manipulate ordered lists of objects
Definition: vtkCollection.h:48
vtkViewNode::RenderTime
vtkMTimeType RenderTime
Allows smart caching.
Definition: vtkViewNode.h:122
vtkViewNodeFactory
factory that chooses vtkViewNodes to create
Definition: vtkViewNodeFactory.h:33
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkViewNode::Render
virtual void Render(bool)
Makes calls to make self visible.
Definition: vtkViewNode.h:64
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkWeakPointer.h
vtkViewNode
a node within a VTK scene graph
Definition: vtkViewNode.h:37
vtkViewNode::Children
vtkViewNodeCollection * Children
Definition: vtkViewNode.h:168
vtkObject.h
vtkViewNode::Parent
vtkWeakPointer< vtkViewNode > Parent
Definition: vtkViewNode.h:167
vtkViewNode::Renderable
vtkObject * Renderable
Definition: vtkViewNode.h:166
vtkViewNode::Invalidate
virtual void Invalidate(bool)
Clear any cached data.
Definition: vtkViewNode.h:69
vtkWeakPointer< vtkViewNode >
vtkMTimeType
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:302