X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fsynfigapp%2Factions%2Fcolorset.cpp;h=93e7c765e0d333c3141fa21069008eb82f494332;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=967b0703c6bbad09485f029769635dd1621ad7e1;hpb=ce408de81ca266b1f334ee9bc6c8fb7ba1492ed4;p=synfig.git diff --git a/synfig-studio/trunk/src/synfigapp/actions/colorset.cpp b/synfig-studio/trunk/src/synfigapp/actions/colorset.cpp index 967b070..93e7c76 100644 --- a/synfig-studio/trunk/src/synfigapp/actions/colorset.cpp +++ b/synfig-studio/trunk/src/synfigapp/actions/colorset.cpp @@ -2,7 +2,7 @@ /*! \file colorset.cpp ** \brief Template File ** -** $Id: colorset.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley @@ -38,6 +38,8 @@ #include #include +#include + #endif using namespace std; @@ -48,14 +50,23 @@ using namespace Action; /* === M A C R O S ========================================================= */ -ACTION_INIT(Action::ColorSet); -ACTION_SET_NAME(Action::ColorSet,"color_set"); -ACTION_SET_LOCAL_NAME(Action::ColorSet,"Apply Default Color"); -ACTION_SET_TASK(Action::ColorSet,"set"); -ACTION_SET_CATEGORY(Action::ColorSet,Action::CATEGORY_VALUEDESC); -ACTION_SET_PRIORITY(Action::ColorSet,0); -ACTION_SET_VERSION(Action::ColorSet,"0.0"); -ACTION_SET_CVS_ID(Action::ColorSet,"$Id: colorset.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $"); +ACTION_INIT(Action::ColorSetFromOC); +ACTION_SET_NAME(Action::ColorSetFromOC, "ColorSetFromOC"); +ACTION_SET_LOCAL_NAME(Action::ColorSetFromOC, N_("Apply Outline Color")); +ACTION_SET_TASK(Action::ColorSetFromOC, "set"); +ACTION_SET_CATEGORY(Action::ColorSetFromOC, Action::CATEGORY_VALUEDESC); +ACTION_SET_PRIORITY(Action::ColorSetFromOC, 0); +ACTION_SET_VERSION(Action::ColorSetFromOC, "0.0"); +ACTION_SET_CVS_ID(Action::ColorSetFromOC, "$Id$"); + +ACTION_INIT(Action::ColorSetFromFC); +ACTION_SET_NAME(Action::ColorSetFromFC, "ColorSetFromFC"); +ACTION_SET_LOCAL_NAME(Action::ColorSetFromFC, N_("Apply Fill Color")); +ACTION_SET_TASK(Action::ColorSetFromFC, "set"); +ACTION_SET_CATEGORY(Action::ColorSetFromFC, Action::CATEGORY_VALUEDESC); +ACTION_SET_PRIORITY(Action::ColorSetFromFC, 0); +ACTION_SET_VERSION(Action::ColorSetFromFC, "0.0"); +ACTION_SET_CVS_ID(Action::ColorSetFromFC, "$Id$"); /* === G L O B A L S ======================================================= */ @@ -63,8 +74,8 @@ ACTION_SET_CVS_ID(Action::ColorSet,"$Id: colorset.cpp,v 1.1.1.1 2005/01/07 03:34 /* === M E T H O D S ======================================================= */ -Action::ColorSet::ColorSet(): - time(0) +Action::ColorSet::ColorSet(bool use_outline_color): + time(0), use_outline_color(use_outline_color) { } @@ -72,56 +83,74 @@ Action::ParamVocab Action::ColorSet::get_param_vocab() { ParamVocab ret(Action::CanvasSpecific::get_param_vocab()); - + ret.push_back(ParamDesc("value_desc",Param::TYPE_VALUEDESC) .set_local_name(_("ValueDesc")) + .set_supports_multiple() ); ret.push_back(ParamDesc("time",Param::TYPE_TIME) .set_local_name(_("Time")) .set_optional() ); - + return ret; } bool -Action::ColorSet::is_canidate(const ParamList &x) +Action::ColorSet::is_candidate(const ParamList &x) { - if(!canidate_check(get_param_vocab(),x)) + if (!candidate_check(get_param_vocab(), x)) return false; - return x.find("value_desc")->second.get_value_desc().get_value_type()==ValueBase::TYPE_COLOR; + + std::multimap::const_iterator iter; + for (iter = x.begin(); iter != x.end(); ++iter) + { + if (iter->first == "value_desc" && + iter->second.get_value_desc().get_value_type() != ValueBase::TYPE_COLOR) + return false; + } + + return true; } bool Action::ColorSet::set_param(const synfig::String& name, const Action::Param ¶m) { - if(name=="value_desc" && param.get_type()==Param::TYPE_VALUEDESC) + if (name == "value_desc" && param.get_type() == Param::TYPE_VALUEDESC) { // Grab the value_desc - value_desc=param.get_value_desc(); - - // Grab the current color - color=synfigapp::Main::get_foreground_color(); - - return value_desc.get_value_type()==ValueBase::TYPE_COLOR; + ValueDesc value_desc = param.get_value_desc(); + if (value_desc.get_value_type() != ValueBase::TYPE_COLOR) + return false; + + value_desc_list.push_back(value_desc); + + // Grab the current outline or fill color + if (use_outline_color) + color = synfigapp::Main::get_outline_color(); + else + color = synfigapp::Main::get_fill_color(); + + return true; } - if(name=="time" && param.get_type()==Param::TYPE_TIME) + if (name == "time" && param.get_type() == Param::TYPE_TIME) { - time=param.get_time(); - + time = param.get_time(); + return true; } - return Action::CanvasSpecific::set_param(name,param); + return Action::CanvasSpecific::set_param(name, param); } bool -Action::ColorSet::is_ready()const +Action::ColorSet::is_ready() const { - if(!value_desc || value_desc.get_value_type()!=ValueBase::TYPE_COLOR) + if (value_desc_list.size() == 0) return false; + return Action::CanvasSpecific::is_ready(); } @@ -129,18 +158,22 @@ void Action::ColorSet::prepare() { clear(); - - Action::Handle action; - action=Action::create("value_desc_set"); - - action->set_param("canvas",get_canvas()); - action->set_param("canvas_interface",get_canvas_interface()); - action->set_param("value_desc",value_desc); - action->set_param("new_value",ValueBase(color)); - action->set_param("time",time); - - if(!action->is_ready()) - throw Error(Error::TYPE_NOTREADY); - - add_action_front(action); + + std::list::iterator iter; + for (iter = value_desc_list.begin(); iter != value_desc_list.end(); ++iter) + { + ValueDesc& value_desc(*iter); + + Action::Handle action = Action::create("ValueDescSet"); + action->set_param("canvas", get_canvas()); + action->set_param("canvas_interface", get_canvas_interface()); + action->set_param("value_desc", value_desc); + action->set_param("new_value", ValueBase(color)); + action->set_param("time", time); + + if (!action->is_ready()) + throw Error(Error::TYPE_NOTREADY); + + add_action_front(action); + } }