1 /* === S Y N F I G ========================================================= */
2 /*!	\file layermakebline.h
3 **	\brief Template File
4 **
5 **	$Id$
6 **
7 **	\legal
8 **	......... ... 2013 Ivan Mahonin
9 **
10 **	This package is free software; you can redistribute it and/or
11 **	modify it under the terms of the GNU General Public License as
12 **	published by the Free Software Foundation; either version 2 of
13 **	the License, or (at your option) any later version.
14 **
15 **	This package is distributed in the hope that it will be useful,
16 **	but WITHOUT ANY WARRANTY; without even the implied warranty of
17 **	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 **	General Public License for more details.
19 **	\endlegal
20 */
21 /* ========================================================================= */
22 
23 /* === S T A R T =========================================================== */
24 
25 #ifndef __SYNFIG_APP_ACTION_LAYERMAKEBLINE_H
26 #define __SYNFIG_APP_ACTION_LAYERMAKEBLINE_H
27 
28 /* === H E A D E R S ======================================================= */
29 
30 #include <synfig/layer.h>
31 #include <synfigapp/action.h>
32 #include <list>
33 #include <synfig/guid.h>
34 
35 /* === M A C R O S ========================================================= */
36 
37 /* === T Y P E D E F S ===================================================== */
38 
39 /* === C L A S S E S & S T R U C T S ======================================= */
40 
41 namespace synfigapp {
42 
43 namespace Action {
44 
45 class LayerMakeBLine :
46 	public Super
47 {
48 private:
49 	synfig::Layer::Handle layer;
50 
51 public:
52 	static ParamVocab get_param_vocab();
53 	static bool is_candidate_for_make_bline(const ParamList &x, const char **possible_layer_names, size_t possible_layer_names_count);
54 
55 	virtual bool set_param(const synfig::String& name, const Param &);
56 	virtual bool is_ready()const;
57 
58 	void prepare_make_bline(const synfig::String &bline_layer_name, bool put_new_layer_behind);
59 };
60 
61 #define ACTION_LAYERMAKEBLINE_DECLARE(class_name) \
62 	class class_name : public LayerMakeBLine { \
63 	private: \
64 		static const char *possible_layer_names__[]; \
65 	public: \
66 		static bool is_candidate(const ParamList &x); \
67 		virtual void prepare(); \
68 		ACTION_MODULE_EXT \
69 	}
70 
71 ACTION_LAYERMAKEBLINE_DECLARE(LayerMakeOutline);
72 ACTION_LAYERMAKEBLINE_DECLARE(LayerMakeAdvancedOutline);
73 ACTION_LAYERMAKEBLINE_DECLARE(LayerMakeRegion);
74 
75 #undef ACTION_LAYERMAKEBLINE_DECLARE
76 
77 }; // END of namespace action
78 }; // END of namespace studio
79 
80 /* === E N D =============================================================== */
81 
82 #endif
83