Merge branch 'blender2.7'
[blender.git] / source / blender / freestyle / intern / blender_interface / BlenderStyleModule.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 __BLENDERSTYLEMODULE_H__
22 #define __BLENDERSTYLEMODULE_H__
23
24 /** \file blender/freestyle/intern/blender_interface/BlenderStyleModule.h
25  *  \ingroup freestyle
26  */
27
28 #include "../stroke/StyleModule.h"
29 #include "../system/PythonInterpreter.h"
30
31 extern "C" {
32 #include "BLI_utildefines.h" // BLI_assert()
33
34 struct Text;
35 }
36
37 namespace Freestyle {
38
39 class BufferedStyleModule : public StyleModule
40 {
41 public:
42         BufferedStyleModule(const string& buffer, const string& file_name, Interpreter *inter) : StyleModule(file_name, inter)
43         {
44                 _buffer = buffer;
45         }
46
47         virtual ~BufferedStyleModule()
48         {
49         }
50
51 protected:
52         virtual int interpret()
53         {
54                 PythonInterpreter *py_inter = dynamic_cast<PythonInterpreter*>(_inter);
55                 BLI_assert(py_inter != 0);
56                 return py_inter->interpretString(_buffer, getFileName());
57         }
58
59 private:
60         string _buffer;
61
62 #ifdef WITH_CXX_GUARDEDALLOC
63         MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:BufferedStyleModule")
64 #endif
65 };
66
67 class BlenderStyleModule : public StyleModule
68 {
69 public:
70         BlenderStyleModule(struct Text *text, const string &name, Interpreter *inter) : StyleModule(name, inter)
71         {
72                 _text = text;
73         }
74
75         virtual ~BlenderStyleModule()
76         {
77         }
78
79 protected:
80         virtual int interpret()
81         {
82                 PythonInterpreter *py_inter = dynamic_cast<PythonInterpreter*>(_inter);
83                 BLI_assert(py_inter != 0);
84                 return py_inter->interpretText(_text, getFileName());
85         }
86
87 private:
88         struct Text *_text;
89
90 #ifdef WITH_CXX_GUARDEDALLOC
91         MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:BlenderStyleModule")
92 #endif
93 };
94
95 } /* namespace Freestyle */
96
97 #endif // __BLENDERSTYLEMODULE_H__