Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-core / trunk / src / modules / example / filledrect.cpp
index 72125ee..329012f 100644 (file)
@@ -1,11 +1,12 @@
 /* === S Y N F I G ========================================================= */
 /*!    \file filledrect.cpp
-**     \brief Template Header
+**     \brief Implementation of the "Rectangle" layer
 **
 **     $Id$
 **
 **     \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,_("Rectangle"));
-SYNFIG_LAYER_SET_CATEGORY(FilledRect,_("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<FilledRect*>(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]);
        }