X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fexample%2Ffilledrect.cpp;h=329012f3330cb731b99c7a4c18ccc354419440cb;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=57e03ab842006dd6e54ee0a7494b2aa9aebbce2e;hpb=e3f4437fedbdd74aebbf1675723978853dac8a8b;p=synfig.git diff --git a/synfig-core/trunk/src/modules/example/filledrect.cpp b/synfig-core/trunk/src/modules/example/filledrect.cpp index 57e03ab..329012f 100644 --- a/synfig-core/trunk/src/modules/example/filledrect.cpp +++ b/synfig-core/trunk/src/modules/example/filledrect.cpp @@ -6,6 +6,7 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -52,9 +53,9 @@ using namespace synfig; /* === G L O B A L S ======================================================= */ SYNFIG_LAYER_INIT(FilledRect); -SYNFIG_LAYER_SET_NAME(FilledRect,"rectangle"); -SYNFIG_LAYER_SET_LOCAL_NAME(FilledRect,N_("Rectangle")); -SYNFIG_LAYER_SET_CATEGORY(FilledRect,N_("Geometry")); +SYNFIG_LAYER_SET_NAME(FilledRect,"filled_rectangle"); +SYNFIG_LAYER_SET_LOCAL_NAME(FilledRect,N_("Filled Rectangle")); +SYNFIG_LAYER_SET_CATEGORY(FilledRect,N_("Example")); SYNFIG_LAYER_SET_VERSION(FilledRect,"0.1"); SYNFIG_LAYER_SET_CVS_ID(FilledRect,"$Id$"); @@ -82,8 +83,8 @@ FilledRect::set_param(const String & param, const ValueBase &value) IMPORT(color); IMPORT(point1); IMPORT(point2); - IMPORT(feather_x); - IMPORT(feather_y); + IMPORT_PLUS(feather_x, if(feather_x<0)feather_x=0;); + IMPORT_PLUS(feather_y, if(feather_y<0)feather_y=0;); IMPORT(bevel); IMPORT(bevCircle); @@ -118,6 +119,7 @@ FilledRect::get_param_vocab()const ret.push_back(ParamDesc("point1") .set_local_name(_("Point 1")) + .set_box("point2") ); ret.push_back(ParamDesc("point2") @@ -143,6 +145,26 @@ FilledRect::get_param_vocab()const return ret; } +synfig::Layer::Handle +FilledRect::hit_check(synfig::Context context, const synfig::Point &point)const +{ + Color clr; + Real amt; + + if (!get_color(point,clr,amt)) + return context.hit_check(point); + + synfig::Layer::Handle tmp; + + if (get_blend_method()==Color::BLEND_BEHIND && (tmp=context.hit_check(point))) + return tmp; + + if (Color::is_onto(get_blend_method()) && !(context.hit_check(point))) + return 0; + + return const_cast(this); +} + bool FilledRect::get_color(const Point &pos, Color &out, Real &outamount) const { @@ -331,12 +353,12 @@ FilledRect::accelerated_render(Context context,Surface *surface,int quality, con //the bounds of the rectangle Point p[2] = {point1,point2}; - if((p[0][0] > p[1][0]) ^ wpp < 0) + if((p[0][0] > p[1][0]) ^ (wpp < 0)) { swap(p[0][0],p[1][0]); } - if((p[0][1] > p[1][1]) ^ hpp < 0) + if((p[0][1] > p[1][1]) ^ (hpp < 0)) { swap(p[0][1],p[1][1]); }