[aseprite] 99/128: Fix blur ink: avoid adding dark pixels when opacity < 255 (fix #708)

Tobias Hansen thansen at moszumanska.debian.org
Mon May 9 21:24:28 UTC 2016


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository aseprite.

commit 065ad4f1dca9404e8f66c6a6224dad918e57807c
Author: David Capello <davidcapello at gmail.com>
Date:   Tue May 3 17:00:50 2016 -0300

    Fix blur ink: avoid adding dark pixels when opacity < 255 (fix #708)
---
 src/app/tools/ink_processing.h | 32 ++++++++++++++------------------
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/src/app/tools/ink_processing.h b/src/app/tools/ink_processing.h
index cdd96d9..1dfecdd 100644
--- a/src/app/tools/ink_processing.h
+++ b/src/app/tools/ink_processing.h
@@ -365,13 +365,10 @@ public:
       m_area.b /= m_area.count;
       m_area.a /= 9;
 
-      RgbTraits::pixel_t c = *m_srcAddress;
-      m_area.r = rgba_getr(c) + (m_area.r-rgba_getr(c)) * m_opacity / 255;
-      m_area.g = rgba_getg(c) + (m_area.g-rgba_getg(c)) * m_opacity / 255;
-      m_area.b = rgba_getb(c) + (m_area.b-rgba_getb(c)) * m_opacity / 255;
-      m_area.a = rgba_geta(c) + (m_area.a-rgba_geta(c)) * m_opacity / 255;
-
-      *m_dstAddress = rgba(m_area.r, m_area.g, m_area.b, m_area.a);
+      *m_dstAddress =
+        rgba_blender_normal(*m_srcAddress,
+                            rgba(m_area.r, m_area.g, m_area.b, m_area.a),
+                            m_opacity);
     }
     else {
       *m_dstAddress = *m_srcAddress;
@@ -419,11 +416,10 @@ public:
       m_area.v /= m_area.count;
       m_area.a /= 9;
 
-      GrayscaleTraits::pixel_t c = *m_srcAddress;
-      m_area.v = graya_getv(c) + (m_area.v-graya_getv(c)) * m_opacity / 255;
-      m_area.a = graya_geta(c) + (m_area.a-graya_geta(c)) * m_opacity / 255;
-
-      *m_dstAddress = graya(m_area.v, m_area.a);
+      *m_dstAddress =
+        graya_blender_normal(*m_srcAddress,
+                             graya(m_area.v, m_area.a),
+                             m_opacity);
     }
     else {
       *m_dstAddress = *m_srcAddress;
@@ -475,13 +471,13 @@ public:
       m_area.b /= m_area.count;
       m_area.a /= 9;
 
-      uint32_t color32 = m_palette->getEntry(*m_srcAddress);
-      m_area.r = rgba_getr(color32) + (m_area.r-rgba_getr(color32)) * m_opacity / 255;
-      m_area.g = rgba_getg(color32) + (m_area.g-rgba_getg(color32)) * m_opacity / 255;
-      m_area.b = rgba_getb(color32) + (m_area.b-rgba_getb(color32)) * m_opacity / 255;
-      m_area.a = rgba_geta(color32) + (m_area.a-rgba_geta(color32)) * m_opacity / 255;
+      color_t c =
+        rgba_blender_normal(m_palette->getEntry(*m_srcAddress),
+                            rgba(m_area.r, m_area.g, m_area.b, m_area.a),
+                            m_opacity);
 
-      *m_dstAddress = m_rgbmap->mapColor(m_area.r, m_area.g, m_area.b, m_area.a);
+      *m_dstAddress = m_rgbmap->mapColor(
+        rgba_getr(c), rgba_getg(c), rgba_getb(c), rgba_geta(c));
     }
     else {
       *m_dstAddress = *m_srcAddress;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git



More information about the Pkg-games-commits mailing list