Author: Carlos Lopez <[email protected]>
Date:   Thu Nov  8 21:28:30 2012 +0100

Layer_ColorCorrect: Add support for Cairo render

---

 .../src/modules/mod_filter/colorcorrect.cpp        |   28 ++++++++++++++++++++
 synfig-core/src/modules/mod_filter/colorcorrect.h  |    1 +
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/synfig-core/src/modules/mod_filter/colorcorrect.cpp 
b/synfig-core/src/modules/mod_filter/colorcorrect.cpp
index f595db2..ee267c1 100644
--- a/synfig-core/src/modules/mod_filter/colorcorrect.cpp
+++ b/synfig-core/src/modules/mod_filter/colorcorrect.cpp
@@ -258,6 +258,34 @@ Layer_ColorCorrect::accelerated_render(Context 
context,Surface *surface,int qual
        return true;
 }
 
+bool
+Layer_ColorCorrect::accelerated_cairorender(Context context,cairo_surface_t 
*surface,int quality, const RendDesc &renddesc, ProgressCallback *cb)const
+{
+       SuperCallback supercb(cb,0,9500,10000);
+       
+       if(!context.accelerated_cairorender(surface,quality,renddesc,&supercb))
+               return false;
+       
+       int x,y;
+       
+       CairoSurface csurface(surface);
+       csurface.map_cairo_image();
+       
+       CairoSurface::pen pen(csurface.begin());
+       
+       for(y=0;y<renddesc.get_h();y++,pen.inc_y(),pen.dec_x(x))
+               for(x=0;x<renddesc.get_w();x++,pen.inc_x())
+                       
pen.put_value(CairoColor(correct_color(Color(pen.get_value().demult_alpha()))).premult_alpha());
+       
+       csurface.unmap_cairo_image();
+       // Mark our progress as finished
+       if(cb && !cb->amount_complete(10000,10000))
+               return false;
+       
+       return true;
+}
+
+
 Rect
 Layer_ColorCorrect::get_full_bounding_rect(Context context)const
 {
diff --git a/synfig-core/src/modules/mod_filter/colorcorrect.h 
b/synfig-core/src/modules/mod_filter/colorcorrect.h
index 8617e4c..791c155 100644
--- a/synfig-core/src/modules/mod_filter/colorcorrect.h
+++ b/synfig-core/src/modules/mod_filter/colorcorrect.h
@@ -68,6 +68,7 @@ public:
        virtual Rect get_full_bounding_rect(Context context)const;
 
        virtual bool accelerated_render(Context context,Surface *surface,int 
quality, const RendDesc &renddesc, ProgressCallback *cb)const;
+       virtual bool accelerated_cairorender(Context context,cairo_surface_t 
*surface,int quality, const RendDesc &renddesc, ProgressCallback *cb)const;
 
        virtual Vocab get_param_vocab()const;
 }; // END of class Layer_ColorCorrect


------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to