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