Author: Carlos Lopez <[email protected]>
Date:   Thu Feb 28 13:08:39 2013 +0100

Moves gamma filter to Target_Cairo for reusability

---

 synfig-core/src/modules/mod_png/trgt_cairo_png.cpp |   22 -------------------
 synfig-core/src/modules/mod_png/trgt_cairo_png.h   |    1 -
 synfig-core/src/synfig/target_cairo.cpp            |   23 ++++++++++++++++++++
 synfig-core/src/synfig/target_cairo.h              |    3 ++
 4 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/synfig-core/src/modules/mod_png/trgt_cairo_png.cpp 
b/synfig-core/src/modules/mod_png/trgt_cairo_png.cpp
index e44d22f..d9d3be2 100644
--- a/synfig-core/src/modules/mod_png/trgt_cairo_png.cpp
+++ b/synfig-core/src/modules/mod_png/trgt_cairo_png.cpp
@@ -125,25 +125,3 @@ cairo_png_trgt::put_surface(cairo_surface_t *surface, 
synfig::ProgressCallback *
        return true;
 }
 
-void
-cairo_png_trgt::gamma_filter(cairo_surface_t *surface)
-{
-       CairoSurface temp(surface);
-       temp.map_cairo_image();
-       int x, y, w, h;
-       float range(CairoColor::range);
-       w=temp.get_w();
-       h=temp.get_h();
-       for(y=0;y<h; y++)
-               for(x=0;x<w; x++)
-               {
-                       CairoColor c(temp[y][x]);
-                       c=c.demult_alpha();
-                       c.set_r(gamma_in(c.get_r()/range)*range);
-                       c.set_g(gamma_in(c.get_g()/range)*range);
-                       c.set_b(gamma_in(c.get_b()/range)*range);
-                       c=c.premult_alpha();
-                       temp[y][x]=c;
-               }
-       temp.unmap_cairo_image();
-}
diff --git a/synfig-core/src/modules/mod_png/trgt_cairo_png.h 
b/synfig-core/src/modules/mod_png/trgt_cairo_png.h
index 7df4b6c..c0648c0 100644
--- a/synfig-core/src/modules/mod_png/trgt_cairo_png.h
+++ b/synfig-core/src/modules/mod_png/trgt_cairo_png.h
@@ -54,7 +54,6 @@ private:
        synfig::String base_filename;
 
        synfig::String sequence_separator;
-       void gamma_filter(cairo_surface_t* surface);
 public:
        cairo_png_trgt(const char *filename, const synfig::TargetParam& /* 
params */);
        virtual ~cairo_png_trgt();
diff --git a/synfig-core/src/synfig/target_cairo.cpp 
b/synfig-core/src/synfig/target_cairo.cpp
index 42fa556..f247831 100644
--- a/synfig-core/src/synfig/target_cairo.cpp
+++ b/synfig-core/src/synfig/target_cairo.cpp
@@ -193,3 +193,26 @@ Target_Cairo::put_surface(cairo_surface_t *surface, 
ProgressCallback *cb)
        cairo_surface_destroy(surface);
        return true;
 }
+
+void
+Target_Cairo::gamma_filter(cairo_surface_t *surface)
+{
+       CairoSurface temp(surface);
+       temp.map_cairo_image();
+       int x, y, w, h;
+       float range(CairoColor::range);
+       w=temp.get_w();
+       h=temp.get_h();
+       for(y=0;y<h; y++)
+               for(x=0;x<w; x++)
+               {
+                       CairoColor c(temp[y][x]);
+                       c=c.demult_alpha();
+                       c.set_r(gamma_in(c.get_r()/range)*range);
+                       c.set_g(gamma_in(c.get_g()/range)*range);
+                       c.set_b(gamma_in(c.get_b()/range)*range);
+                       c=c.premult_alpha();
+                       temp[y][x]=c;
+               }
+       temp.unmap_cairo_image();
+}
diff --git a/synfig-core/src/synfig/target_cairo.h 
b/synfig-core/src/synfig/target_cairo.h
index 3cb6996..1bafbf3 100644
--- a/synfig-core/src/synfig/target_cairo.h
+++ b/synfig-core/src/synfig/target_cairo.h
@@ -72,6 +72,9 @@ public:
 
        //! Puts the rendered surface onto the target.
        virtual bool put_surface(cairo_surface_t *surface, ProgressCallback 
*cb=NULL);
+       //! Filters the cairo surface based on gamma (hardcored for the moment 
to 2.2)
+       void gamma_filter(cairo_surface_t* surface);
+
 private:
 }; // END of class Target_Cairo
 


------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to