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