[aseprite] 262/308: Fix shading ink for grayscale images
Tobias Hansen
thansen at moszumanska.debian.org
Tue Mar 8 02:45:18 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 69e762362847273363124fd5c7e96d2203d889e1
Author: David Capello <davidcapello at gmail.com>
Date: Wed Feb 24 19:48:46 2016 -0300
Fix shading ink for grayscale images
---
src/app/tools/ink_processing.h | 30 ++++++++++++++++++++++++++----
1 file changed, 26 insertions(+), 4 deletions(-)
diff --git a/src/app/tools/ink_processing.h b/src/app/tools/ink_processing.h
index 5580d00..cdd96d9 100644
--- a/src/app/tools/ink_processing.h
+++ b/src/app/tools/ink_processing.h
@@ -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
@@ -14,6 +14,8 @@
#include "doc/rgbmap.h"
#include "doc/sprite.h"
#include "filters/neighboring_pixels.h"
+#include "gfx/hsv.h"
+#include "gfx/rgb.h"
namespace app {
namespace tools {
@@ -777,9 +779,20 @@ public:
m_left(loop->getMouseButton() == ToolLoop::Left) {
}
+ // Works as the RGBA version
void processPixel(int x, int y) {
color_t src = *m_srcAddress;
- int i = graya_getv(src);
+
+ int i = m_palette->findExactMatch(graya_getv(src),
+ graya_getv(src),
+ graya_getv(src),
+ graya_geta(src),
+ -1);
+
+ if (i < 0) {
+ *m_dstAddress = src;
+ return;
+ }
if (m_remap) {
i = (*m_remap)[i];
@@ -797,7 +810,12 @@ public:
}
}
- *m_dstAddress = graya(i, graya_geta(src));
+ color_t rgba = m_palette->getEntry(i);
+ *m_dstAddress = graya(
+ int(255.0 * Hsv(Rgb(rgba_getr(rgba),
+ rgba_getg(rgba),
+ rgba_getb(rgba))).value()),
+ rgba_geta(rgba));
}
private:
@@ -954,6 +972,7 @@ void BrushInkProcessing<RgbTraits>::processPixel(int x, int y) {
}
case IMAGE_GRAYSCALE: {
c = get_pixel_fast<GrayscaleTraits>(m_brushImage, x, y);
+ // TODO review this line
c = graya(m_palette->getEntry(c), graya_geta(c));
break;
}
@@ -1023,7 +1042,10 @@ void BrushInkProcessing<IndexedTraits>::processPixel(int x, int y) {
}
case IMAGE_GRAYSCALE: {
c = get_pixel_fast<GrayscaleTraits>(m_brushImage, x, y);
- c = m_palette->findBestfit(graya_getv(c), graya_getv(c), graya_getv(c), graya_geta(c), 0);
+ c = m_palette->findBestfit(graya_getv(c),
+ graya_getv(c),
+ graya_getv(c),
+ graya_geta(c), 0);
break;
}
case IMAGE_BITMAP: {
--
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