Rename any instance of scene layer or render layer in code with view layer
[blender.git] / source / blender / freestyle / intern / scene_graph / SceneVisitor.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * ***** END GPL LICENSE BLOCK *****
19  */
20
21 #ifndef __FREESTYLE_SCENE_VISITOR_H__
22 #define __FREESTYLE_SCENE_VISITOR_H__
23
24 /** \file blender/freestyle/intern/scene_graph/SceneVisitor.h
25  *  \ingroup freestyle
26  *  \brief Class to visit (without doing anything) a scene graph structure
27  *  \author Emmanuel Turquin
28  *  \date 26/04/2003
29  */
30
31 #include "../system/FreestyleConfig.h"
32
33 #ifdef WITH_CXX_GUARDEDALLOC
34 #include "MEM_guardedalloc.h"
35 #endif
36
37 namespace Freestyle {
38
39 #define VISIT_COMPLETE_DEF(type)               \
40         virtual void visit##type(type&) {}         \
41         virtual void visit##type##Before(type&) {} \
42         virtual void visit##type##After(type&) {}
43
44 #define VISIT_DECL(type)             \
45         virtual void visit##type(type&);
46
47 #define VISIT_COMPLETE_DECL(type)            \
48         virtual void visit##type##Before(type&); \
49         virtual void visit##type(type&);         \
50         virtual void visit##type##After(type&);
51
52 class Node;
53 class NodeShape;
54 class NodeGroup;
55 class NodeLight;
56 class NodeCamera;
57 class NodeDrawingStyle;
58 class NodeTransform;
59 class NodeViewLayer;
60
61 class Rep;
62 class LineRep;
63 class OrientedLineRep;
64 class TriangleRep;
65 class VertexRep;
66 class IndexedFaceSet;
67 class DrawingStyle;
68 class FrsMaterial;
69
70 class SceneVisitor
71 {
72 public:
73         SceneVisitor() {}
74         virtual ~SceneVisitor() {}
75
76         virtual void beginScene() {}
77         virtual void endScene() {}
78
79         //
80         // visitClass methods
81         //
82         //////////////////////////////////////////////
83
84         VISIT_COMPLETE_DEF(Node)
85         VISIT_COMPLETE_DEF(NodeShape)
86         VISIT_COMPLETE_DEF(NodeGroup)
87         VISIT_COMPLETE_DEF(NodeLight)
88         VISIT_COMPLETE_DEF(NodeCamera)
89         VISIT_COMPLETE_DEF(NodeDrawingStyle)
90         VISIT_COMPLETE_DEF(NodeTransform)
91         VISIT_COMPLETE_DEF(NodeViewLayer)
92
93         VISIT_COMPLETE_DEF(Rep)
94         VISIT_COMPLETE_DEF(LineRep)
95         VISIT_COMPLETE_DEF(OrientedLineRep)
96         VISIT_COMPLETE_DEF(TriangleRep)
97         VISIT_COMPLETE_DEF(VertexRep)
98         VISIT_COMPLETE_DEF(IndexedFaceSet)
99         VISIT_COMPLETE_DEF(DrawingStyle)
100         VISIT_COMPLETE_DEF(FrsMaterial)
101
102 #ifdef WITH_CXX_GUARDEDALLOC
103         MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:SceneVisitor")
104 #endif
105 };
106
107 } /* namespace Freestyle */
108
109 #endif // __FREESTYLE_SCENE_VISITOR_H__