summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-08-12 15:20:14 +0000
committerKrzysztof KosiƄski <tweenk.pl@gmail.com>2010-08-12 15:20:14 +0000
commite635a6a095e02eac6888e325fbe8ea22c41b541a (patch)
tree63f70b21c224cc96a9259ed85f3a6da7eb36b602 /src
parentFix computation of drawbox for filtered, rotated items (diff)
downloadinkscape-e635a6a095e02eac6888e325fbe8ea22c41b541a.tar.gz
inkscape-e635a6a095e02eac6888e325fbe8ea22c41b541a.zip
Do not un-premultiply alpha when computing mask luminance
(bzr r9508.1.61)
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-arena-item.cpp12
1 files changed, 4 insertions, 8 deletions
diff --git a/src/display/nr-arena-item.cpp b/src/display/nr-arena-item.cpp
index ea162ca3d..2aae21bf1 100644
--- a/src/display/nr-arena-item.cpp
+++ b/src/display/nr-arena-item.cpp
@@ -313,16 +313,12 @@ nr_arena_item_invoke_update (NRArenaItem *item, NRRectL *area, NRGC *gc,
struct MaskLuminanceToAlpha {
guint32 operator()(guint32 in) {
- // original computation in double: r*0.2125 + g*0.7154 + b*0.0721
EXTRACT_ARGB32(in, a, r, g, b)
- // unpremultiply color values
- if (a != 0) {
- r = unpremul_alpha(r, a);
- g = unpremul_alpha(g, a);
- b = unpremul_alpha(b, a);
- }
+ // the operation of unpremul -> luminance-to-alpha -> multiply by alpha
+ // is equivalent to luminance-to-alpha on premultiplied color values
+ // original computation in double: r*0.2125 + g*0.7154 + b*0.0721
guint32 ao = r*54 + g*182 + b*18;
- return premul_alpha((ao + 127) / 255, a) << 24;
+ return ((ao + 127) / 255) << 24;
}
};