[aseprite] 97/196: Add a rgba_blender_normal() version without opacity
Tobias Hansen
thansen at moszumanska.debian.org
Wed Apr 20 18:50:06 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 d4faf04946db79c21cdff64943186b640fca6de2
Author: David Capello <davidcapello at gmail.com>
Date: Tue Mar 22 18:40:47 2016 -0300
Add a rgba_blender_normal() version without opacity
This can be used to speed up text rendering and rotation algorithm.
---
src/app/util/freetype_utils.cpp | 4 +--
src/doc/algorithm/rotate.cpp | 6 ++---
src/doc/blend_funcs.cpp | 59 +++++++++++++++++++++++++++++++++++++++++
src/doc/blend_funcs.h | 4 ++-
4 files changed, 67 insertions(+), 6 deletions(-)
diff --git a/src/app/util/freetype_utils.cpp b/src/app/util/freetype_utils.cpp
index 0774774..a039398 100644
--- a/src/app/util/freetype_utils.cpp
+++ b/src/app/util/freetype_utils.cpp
@@ -1,5 +1,5 @@
// Aseprite
-// Copyright (C) 2001-2015 David Capello
+// Copyright (C) 2001-2016 David Capello
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
@@ -156,7 +156,7 @@ doc::Image* render_text(const std::string& fontfile, int fontsize,
doc::rgba(doc::rgba_getr(color),
doc::rgba_getg(color),
doc::rgba_getb(color),
- MUL_UN8(doc::rgba_geta(color), alpha, t)), 255));
+ MUL_UN8(doc::rgba_geta(color), alpha, t))));
}
}
});
diff --git a/src/doc/algorithm/rotate.cpp b/src/doc/algorithm/rotate.cpp
index c86b9cc..e05dc0b 100644
--- a/src/doc/algorithm/rotate.cpp
+++ b/src/doc/algorithm/rotate.cpp
@@ -78,11 +78,11 @@ static void image_scale_tpl(
}
static color_t rgba_blender(color_t back, color_t front) {
- return rgba_blender_normal(back, front, 255);
+ return rgba_blender_normal(back, front);
}
static color_t grayscale_blender(color_t back, color_t front) {
- return graya_blender_normal(back, front, 255);
+ return graya_blender_normal(back, front);
}
class if_blender {
@@ -254,7 +254,7 @@ public:
int c = get_pixel_fast<RgbTraits>(spr, spr_x, spr_y);
if ((rgba_geta(m_mask_color) == 0) || ((c & rgba_rgb_mask) != (m_mask_color & rgba_rgb_mask)))
- *m_it = rgba_blender_normal(*m_it, c, 255);
+ *m_it = rgba_blender_normal(*m_it, c);
}
private:
diff --git a/src/doc/blend_funcs.cpp b/src/doc/blend_funcs.cpp
index dc5c9d1..9cc88f9 100644
--- a/src/doc/blend_funcs.cpp
+++ b/src/doc/blend_funcs.cpp
@@ -192,6 +192,39 @@ color_t rgba_blender_normal(color_t backdrop, color_t src, int opacity)
return rgba(Rr, Rg, Rb, Ra);
}
+color_t rgba_blender_normal(color_t backdrop, color_t src)
+{
+ int t;
+
+ if ((backdrop & rgba_a_mask) == 0) {
+ return src;
+ }
+ else if ((src & rgba_a_mask) == 0) {
+ return backdrop;
+ }
+
+ int Br, Bg, Bb, Ba;
+ int Sr, Sg, Sb, Sa;
+ int Rr, Rg, Rb, Ra;
+
+ Br = rgba_getr(backdrop);
+ Bg = rgba_getg(backdrop);
+ Bb = rgba_getb(backdrop);
+ Ba = rgba_geta(backdrop);
+
+ Sr = rgba_getr(src);
+ Sg = rgba_getg(src);
+ Sb = rgba_getb(src);
+ Sa = rgba_geta(src);
+
+ Ra = Ba + Sa - MUL_UN8(Ba, Sa, t);
+ Rr = Br + (Sr-Br) * Sa / Ra;
+ Rg = Bg + (Sg-Bg) * Sa / Ra;
+ Rb = Bb + (Sb-Bb) * Sa / Ra;
+
+ return rgba(Rr, Rg, Rb, Ra);
+}
+
color_t rgba_blender_multiply(color_t backdrop, color_t src, int opacity)
{
int t;
@@ -502,6 +535,32 @@ color_t graya_blender_normal(color_t backdrop, color_t src, int opacity)
return graya(Rg, Ra);
}
+color_t graya_blender_normal(color_t backdrop, color_t src)
+{
+ int t;
+
+ if ((backdrop & graya_a_mask) == 0) {
+ return src;
+ }
+ else if ((src & graya_a_mask) == 0)
+ return backdrop;
+
+ int Bg, Ba;
+ int Sg, Sa;
+ int Rg, Ra;
+
+ Bg = graya_getv(backdrop);
+ Ba = graya_geta(backdrop);
+
+ Sg = graya_getv(src);
+ Sa = graya_geta(src);
+
+ Ra = Ba + Sa - MUL_UN8(Ba, Sa, t);
+ Rg = Bg + (Sg-Bg) * Sa / Ra;
+
+ return graya(Rg, Ra);
+}
+
color_t graya_blender_multiply(color_t backdrop, color_t src, int opacity)
{
int t;
diff --git a/src/doc/blend_funcs.h b/src/doc/blend_funcs.h
index d670905..c6000de 100644
--- a/src/doc/blend_funcs.h
+++ b/src/doc/blend_funcs.h
@@ -1,5 +1,5 @@
// Aseprite Document Library
-// Copyright (c) 2001-2015 David Capello
+// Copyright (c) 2001-2016 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
@@ -16,10 +16,12 @@ namespace doc {
typedef color_t (*BlendFunc)(color_t backdrop, color_t src, int opacity);
color_t rgba_blender_normal(color_t backdrop, color_t src, int opacity);
+ color_t rgba_blender_normal(color_t backdrop, color_t src);
color_t rgba_blender_merge(color_t backdrop, color_t src, int opacity);
color_t rgba_blender_neg_bw(color_t backdrop, color_t src, int opacity);
color_t graya_blender_normal(color_t backdrop, color_t src, int opacity);
+ color_t graya_blender_normal(color_t backdrop, color_t src);
color_t graya_blender_merge(color_t backdrop, color_t src, int opacity);
color_t graya_blender_neg_bw(color_t backdrop, color_t src, int opacity);
--
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