1 /* === S Y N F I G ========================================================= */
2 /*! \file action_param.cpp
3 ** \brief Template File
5 ** $Id: action_param.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
8 ** Copyright (c) 2002 Robert B. Quattlebaum Jr.
10 ** This software and associated documentation
11 ** are CONFIDENTIAL and PROPRIETARY property of
12 ** the above-mentioned copyright holder.
14 ** You may not copy, print, publish, or in any
15 ** other way distribute this software without
16 ** a prior written agreement with
17 ** the copyright holder.
20 /* ========================================================================= */
22 /* === H E A D E R S ======================================================= */
31 #include "action_param.h"
33 #include "canvasinterface.h"
39 using namespace synfig;
40 using namespace synfigapp;
41 using namespace Action;
43 /* === P R O C E D U R E S ================================================= */
46 Action::canidate_check(const ParamVocab& param_vocab, const ParamList& param_list)
48 ParamVocab::const_iterator iter;
50 for(iter=param_vocab.begin();iter!=param_vocab.end();++iter)
52 int n(param_list.count(iter->get_name()));
54 // if(n && !iter->get_mutual_exclusion().empty() && param_list.count(iter->get_mutual_exclusion()))
57 if(!n && !iter->get_mutual_exclusion().empty() && param_list.count(iter->get_mutual_exclusion()))
60 if(iter->get_user_supplied() || iter->get_optional())
65 if(n==1 && iter->get_requires_multiple())
67 if(n>1 && !iter->get_supports_multiple())
70 if(iter->get_type()!=param_list.find(iter->get_name())->second.get_type())
76 /* === S T A T I C S ======================================================= */
84 synfig::error("%d action params not yet deleted!",counter);
88 int _ParamCounter::counter(0);
90 /* === M E T H O D S ======================================================= */
92 Param::Param(const Param &rhs):
95 _ParamCounter::counter++;
98 case TYPE_ACTIVEPOINT:
99 data.activepoint.construct();
100 data.activepoint.get()=rhs.data.activepoint.get();
103 data.waypoint.construct();
104 data.waypoint.get()=rhs.data.waypoint.get();
106 case TYPE_WAYPOINTMODEL:
107 data.waypoint_model.construct();
108 data.waypoint_model.get()=rhs.data.waypoint_model.get();
111 data.keyframe.construct();
112 data.keyframe.get()=rhs.data.keyframe.get();
115 data.canvas.construct();
116 data.canvas.get()=rhs.data.canvas.get();
118 case TYPE_CANVASINTERFACE:
119 data.canvas_interface.construct();
120 data.canvas_interface.get()=rhs.data.canvas_interface.get();
123 data.layer.construct();
124 data.layer.get()=rhs.data.layer.get();
127 data.value_node.construct();
128 data.value_node.get()=rhs.data.value_node.get();
131 data.value_desc.construct();
132 data.value_desc.get()=rhs.data.value_desc.get();
135 data.value.construct();
136 data.value.get()=rhs.data.value.get();
139 data.string.construct();
140 data.string.get()=rhs.data.string.get();
143 data.rend_desc.construct();
144 data.rend_desc.get()=rhs.data.rend_desc.get();
147 data.time.construct();
148 data.time.get()=rhs.data.time.get();
152 data.integer=rhs.data.integer;
155 data.edit_mode=rhs.data.edit_mode;
158 data.real=rhs.data.real;
173 Param::Param(const etl::handle<synfigapp::CanvasInterface>& x):
175 type_(TYPE_CANVASINTERFACE)
177 _ParamCounter::counter++;
178 data.canvas_interface.construct();
179 data.canvas_interface.get()=x;
183 Param::Param(synfigapp::CanvasInterface* x):
185 type_(TYPE_CANVASINTERFACE)
187 _ParamCounter::counter++;
188 data.canvas_interface.construct();
189 data.canvas_interface=x;
193 Param::Param(const etl::loose_handle<synfigapp::CanvasInterface>& x):
195 type_(TYPE_CANVASINTERFACE)
197 _ParamCounter::counter++;
198 data.canvas_interface.construct();
199 data.canvas_interface.get()=x;
202 Param::Param(const synfig::Canvas::Handle& x):
205 _ParamCounter::counter++;
206 data.canvas.construct();
210 Param::Param(const synfig::Canvas::LooseHandle& x):
213 _ParamCounter::counter++;
214 data.canvas.construct();
218 Param::Param(const synfig::Layer::Handle& x):
222 _ParamCounter::counter++;
223 data.layer.construct();
227 Param::Param(const synfig::Layer::LooseHandle& x):
231 _ParamCounter::counter++;
232 data.layer.construct();
236 Param::Param(const synfig::ValueNode::Handle& x):
238 type_(TYPE_VALUENODE)
240 _ParamCounter::counter++;
241 data.value_node.construct();
242 data.value_node.get()=x;
245 Param::Param(const synfig::ValueNode::LooseHandle& x):
247 type_(TYPE_VALUENODE)
249 _ParamCounter::counter++;
250 data.value_node.construct();
251 data.value_node.get()=x;
254 Param::Param(const synfig::ValueBase& x):
258 _ParamCounter::counter++;
259 data.value.construct();
263 Param::Param(const synfig::RendDesc& x):
266 _ParamCounter::counter++;
267 data.rend_desc.construct();
268 data.rend_desc.get()=x;
271 Param::Param(const synfig::Time& x):
274 _ParamCounter::counter++;
275 data.time.construct();
279 Param::Param(const synfig::Activepoint& x):
281 type_(TYPE_ACTIVEPOINT)
283 _ParamCounter::counter++;
284 data.activepoint.construct();
285 data.activepoint.get()=x;
288 Param::Param(const synfig::Waypoint& x):
291 _ParamCounter::counter++;
292 data.waypoint.construct();
293 data.waypoint.get()=x;
296 Param::Param(const synfig::Waypoint::Model& x):
297 type_(TYPE_WAYPOINTMODEL)
299 _ParamCounter::counter++;
300 data.waypoint_model.construct();
301 data.waypoint_model.get()=x;
304 Param::Param(const synfig::String& x):
307 _ParamCounter::counter++;
308 data.string.construct();
312 Param::Param(const char * x):
315 _ParamCounter::counter++;
316 data.string.construct();
320 Param::Param(const synfig::Keyframe& x):
324 _ParamCounter::counter++;
325 data.keyframe.construct();
326 data.keyframe.get()=x;
329 Param::Param(const synfigapp::ValueDesc& x):
331 type_(TYPE_VALUEDESC)
333 _ParamCounter::counter++;
334 data.value_desc.construct();
335 data.value_desc.get()=x;
338 Param::Param(const int& x):
341 _ParamCounter::counter++;
345 Param::Param(const EditMode& x):
348 _ParamCounter::counter++;
352 Param::Param(const synfig::Real& x):
356 _ParamCounter::counter++;
360 Param::Param(const bool& x):
364 _ParamCounter::counter++;
371 _ParamCounter::counter--;
375 Param::operator=(const Param& rhs)
382 case TYPE_ACTIVEPOINT:
383 data.activepoint.construct();
384 data.activepoint.get()=rhs.data.activepoint.get();
387 data.waypoint.construct();
388 data.waypoint.get()=rhs.data.waypoint.get();
390 case TYPE_WAYPOINTMODEL:
391 data.waypoint_model.construct();
392 data.waypoint_model.get()=rhs.data.waypoint_model.get();
395 data.keyframe.construct();
396 data.keyframe.get()=rhs.data.keyframe.get();
399 data.canvas.construct();
400 data.canvas.get()=rhs.data.canvas.get();
402 case TYPE_CANVASINTERFACE:
403 data.canvas_interface.construct();
404 data.canvas_interface.get()=rhs.data.canvas_interface.get();
407 data.time.construct();
408 data.time.get()=rhs.data.time.get();
411 data.layer.construct();
412 data.layer.get()=rhs.data.layer.get();
415 data.value_node.construct();
416 data.value_node.get()=rhs.data.value_node.get();
419 data.value_desc.construct();
420 data.value_desc.get()=rhs.data.value_desc.get();
423 data.value.construct();
424 data.value.get()=rhs.data.value.get();
427 data.rend_desc.construct();
428 data.rend_desc.get()=rhs.data.rend_desc.get();
431 data.string.construct();
432 data.string.get()=rhs.data.string.get();
436 data.integer=rhs.data.integer;
439 data.integer=rhs.data.integer;
442 data.real=rhs.data.real;
463 case TYPE_ACTIVEPOINT:
464 data.activepoint.destruct();
467 data.waypoint.destruct();
469 case TYPE_WAYPOINTMODEL:
470 data.waypoint_model.destruct();
473 data.keyframe.destruct();
476 data.canvas.destruct();
478 case TYPE_CANVASINTERFACE:
479 data.canvas_interface.destruct();
482 data.layer.destruct();
485 data.time.destruct();
488 data.value_node.destruct();
491 data.value_desc.destruct();
494 data.value.destruct();
497 data.rend_desc.destruct();
500 data.string.destruct();