Add FilledRect::hit_check() to allow Filled Rectangles to be selected by clicking...
authordooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Sat, 22 Nov 2008 15:41:21 +0000 (15:41 +0000)
committerdooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Sat, 22 Nov 2008 15:41:21 +0000 (15:41 +0000)
git-svn-id: https://synfig.svn.sourceforge.net/svnroot/synfig@2253 1f10aa63-cdf2-0310-b900-c93c546f37ac

synfig-core/trunk/src/modules/example/filledrect.cpp
synfig-core/trunk/src/modules/example/filledrect.h

index 0c165ed..f6f842f 100644 (file)
@@ -144,6 +144,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
 {
index 421f80e..b540105 100644 (file)
@@ -72,6 +72,8 @@ public:
        virtual bool accelerated_render(synfig::Context context,synfig::Surface *surface,int quality, const synfig::RendDesc &renddesc, synfig::ProgressCallback *cb)const;
 
        virtual Vocab get_param_vocab()const;
+
+       virtual synfig::Layer::Handle hit_check(synfig::Context context, const synfig::Point &point)const;
 }; // END of class FilledRect
 
 /* === E N D =============================================================== */