Author: Carlos Lopez <[email protected]>
Date: Thu Nov 8 21:21:48 2012 +0100
Layer_Shade: now inverted shades and/or with amount > 1.0 are rendered
correctly.
---
synfig-core/src/modules/lyr_std/shade.cpp | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/synfig-core/src/modules/lyr_std/shade.cpp
b/synfig-core/src/modules/lyr_std/shade.cpp
index b0529f2..d1b0813 100644
--- a/synfig-core/src/modules/lyr_std/shade.cpp
+++ b/synfig-core/src/modules/lyr_std/shade.cpp
@@ -521,8 +521,10 @@ Layer_Shade::accelerated_cairorender(Context
context,cairo_surface_t *surface,in
for(x=0;x<workdesc.get_w();x++)
{
float a=blurred[y][x];
+ if(invert)
+ a=1.0-a;
ccolor.set_a(a*am);
- ccolor.clamped();
+ ccolor=ccolor.clamped();
cairoworksurface[y][x]=CairoColor(ccolor).premult_alpha();
}
@@ -531,8 +533,7 @@ Layer_Shade::accelerated_cairorender(Context
context,cairo_surface_t *surface,in
// Now lets blend the result in the output surface
cairo_t *cr=cairo_create(surface);
cairo_set_source_surface(cr, worksurface,
-halfsizex+(origin_u<0?origin_u:0)-origin_u,
-halfsizey+(origin_v<0?origin_v:0)-origin_v);
- cairo_set_operator(cr, CAIRO_OPERATOR_OVER); // TODO this has to be the
real operator
- cairo_paint(cr); // not need to paint with alpha because it is already
included
+ cairo_paint_with_alpha_operator(cr, 1.0, get_blend_method()); // TODO:
add cairo_paint_opertor function when alpha=1.0 (it is quicker)
cairo_destroy(cr);
cairo_surface_destroy(worksurface);
------------------------------------------------------------------------------
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