Author: Carlos Lopez <[email protected]>
Date: Sat Apr 20 18:16:17 2013 +0200
Apply same fix than previous commit in several places.
---
synfig-core/src/modules/lyr_std/bevel.cpp | 5 +++--
synfig-core/src/modules/lyr_std/shade.cpp | 3 ++-
.../src/modules/mod_geometry/advanced_outline.cpp | 3 ++-
synfig-core/src/modules/mod_geometry/region.cpp | 3 ++-
synfig-core/src/synfig/color.cpp | 9 +++++----
synfig-core/src/synfig/layer_polygon.cpp | 3 ++-
6 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/synfig-core/src/modules/lyr_std/bevel.cpp
b/synfig-core/src/modules/lyr_std/bevel.cpp
index 060b8d2..a7407d3 100644
--- a/synfig-core/src/modules/lyr_std/bevel.cpp
+++ b/synfig-core/src/modules/lyr_std/bevel.cpp
@@ -466,12 +466,13 @@ Layer_Bevel::accelerated_cairorender(Context
context,cairo_surface_t *surface,in
// Copy over the alpha
blurred.set_wh(workdesc.get_w(),workdesc.get_h());
+ float div=1.0/((float)(CairoColor::ceil));
if(!use_luma)
{
for(int j=0;j<workdesc.get_h();j++)
for(int i=0;i<workdesc.get_w();i++)
{
-
blurred[j][i]=cairoworksurface[j][i].get_a()/CairoColor::ceil;
+
blurred[j][i]=cairoworksurface[j][i].get_a()*div;
}
}
else
@@ -479,7 +480,7 @@ Layer_Bevel::accelerated_cairorender(Context
context,cairo_surface_t *surface,in
for(int j=0;j<workdesc.get_h();j++)
for(int i=0;i<workdesc.get_w();i++)
{
-
blurred[j][i]=cairoworksurface[j][i].get_a()*(cairoworksurface[j][i].get_y()/CairoColor::ceil);
+
blurred[j][i]=cairoworksurface[j][i].get_a()*(cairoworksurface[j][i].get_y()*div);
}
}
diff --git a/synfig-core/src/modules/lyr_std/shade.cpp
b/synfig-core/src/modules/lyr_std/shade.cpp
index d1b0813..8756b5a 100644
--- a/synfig-core/src/modules/lyr_std/shade.cpp
+++ b/synfig-core/src/modules/lyr_std/shade.cpp
@@ -507,9 +507,10 @@ Layer_Shade::accelerated_cairorender(Context
context,cairo_surface_t *surface,in
}
// Extract the alpha
blurred.set_wh(workdesc.get_w(),workdesc.get_h());
+ float div=1.0/((float)(CairoColor::ceil));
for(int j=0;j<workdesc.get_h();j++)
for(int i=0;i<workdesc.get_w();i++)
-
blurred[j][i]=cairoworksurface[j][i].get_a()/CairoColor::ceil;
+ blurred[j][i]=cairoworksurface[j][i].get_a()*div;
//blur the image
Blur(size,type,&stagetwo)(blurred,workdesc.get_br()-workdesc.get_tl(),blurred);
diff --git a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
index f4344ec..b481494 100644
--- a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
+++ b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
@@ -1634,9 +1634,10 @@ Advanced_Outline::accelerated_cairorender(Context
context,cairo_surface_t *surfa
// Extract the alpha values:
int x, y;
int wh(workdesc.get_h()), ww(workdesc.get_w());
+ float div=1.0/((float)(CairoColor::ceil));
for(y=0; y<wh; y++)
for(x=0;x<ww;x++)
-
shapesurface[y][x]=cairosubimage[y][x].get_a()/CairoColor::ceil;
+
shapesurface[y][x]=cairosubimage[y][x].get_a()*div;
// Blue the alpha values
Blur(feather,feather,blurtype,cb)(shapesurface,workdesc.get_br()-workdesc.get_tl(),shapesurface);
// repaint the cairosubimage with the result
diff --git a/synfig-core/src/modules/mod_geometry/region.cpp
b/synfig-core/src/modules/mod_geometry/region.cpp
index b09cdcb..0e359c4 100644
--- a/synfig-core/src/modules/mod_geometry/region.cpp
+++ b/synfig-core/src/modules/mod_geometry/region.cpp
@@ -425,9 +425,10 @@ Region::accelerated_cairorender(Context
context,cairo_surface_t *surface,int qua
// Extract the alpha values:
int x, y;
int wh(workdesc.get_h()), ww(workdesc.get_w());
+ float div=1.0/((float)(CairoColor::ceil));
for(y=0; y<wh; y++)
for(x=0;x<ww;x++)
-
shapesurface[y][x]=cairosubimage[y][x].get_a()/CairoColor::ceil;
+
shapesurface[y][x]=cairosubimage[y][x].get_a()*div;
// Blue the alpha values
Blur(feather,feather,blurtype,cb)(shapesurface,workdesc.get_br()-workdesc.get_tl(),shapesurface);
// repaint the cairosubimage with the result
diff --git a/synfig-core/src/synfig/color.cpp b/synfig-core/src/synfig/color.cpp
index ae53747..9008508 100644
--- a/synfig-core/src/synfig/color.cpp
+++ b/synfig-core/src/synfig/color.cpp
@@ -236,10 +236,11 @@ Color::clamped()const
Color::Color(const CairoColor& c)
{
-
set_r((ceil-floor)*c.get_r()/(CairoColor::ceil-CairoColor::floor));
-
set_g((ceil-floor)*c.get_g()/(CairoColor::ceil-CairoColor::floor));
-
set_b((ceil-floor)*c.get_b()/(CairoColor::ceil-CairoColor::floor));
-
set_a((ceil-floor)*c.get_a()/(CairoColor::ceil-CairoColor::floor));
+ float div=1.0/((float)(CairoColor::ceil-CairoColor::floor));
+ set_r((ceil-floor)*c.get_r()*div);
+ set_g((ceil-floor)*c.get_g()*div);
+ set_b((ceil-floor)*c.get_b()*div);
+ set_a((ceil-floor)*c.get_a()*div);
}
diff --git a/synfig-core/src/synfig/layer_polygon.cpp
b/synfig-core/src/synfig/layer_polygon.cpp
index ca77307..9da3b4c 100644
--- a/synfig-core/src/synfig/layer_polygon.cpp
+++ b/synfig-core/src/synfig/layer_polygon.cpp
@@ -331,9 +331,10 @@ Layer_Polygon::accelerated_cairorender(Context
context,cairo_surface_t *surface,
// Extract the alpha values:
int x, y;
int wh(workdesc.get_h()), ww(workdesc.get_w());
+ float div=1.0/((float)(CairoColor::ceil));
for(y=0; y<wh; y++)
for(x=0;x<ww;x++)
-
shapesurface[y][x]=cairosubimage[y][x].get_a()/CairoColor::ceil;
+
shapesurface[y][x]=cairosubimage[y][x].get_a()*div;
// Blue the alpha values
Blur(feather,feather,blurtype,cb)(shapesurface,workdesc.get_br()-workdesc.get_tl(),shapesurface);
// repaint the cairosubimage with the result
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl