From 8a76e2d58a47c9dbd8d26bd6d88694b2b929e0af Mon Sep 17 00:00:00 2001 From: azrafe7 Date: Thu, 24 Dec 2015 11:28:56 +0100 Subject: [PATCH] Fix fillRect behaviour when using alpha on neko/cpp see #759 and #631 --- lime/graphics/utils/ImageDataUtil.hx | 3 ++- project/src/graphics/utils/ImageDataUtil.cpp | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lime/graphics/utils/ImageDataUtil.hx b/lime/graphics/utils/ImageDataUtil.hx index 8698c5e4b..a83b71707 100644 --- a/lime/graphics/utils/ImageDataUtil.hx +++ b/lime/graphics/utils/ImageDataUtil.hx @@ -333,6 +333,7 @@ class ImageDataUtil { var format = image.buffer.format; var premultiplied = image.buffer.premultiplied; + if (premultiplied) fillColor.multiplyAlpha(); var dataView = new ImageDataView (image, rect); var row; @@ -343,7 +344,7 @@ class ImageDataUtil { for (x in 0...dataView.width) { - fillColor.writeUInt8 (data, row + (x * 4), format, premultiplied); + fillColor.writeUInt8 (data, row + (x * 4), format, false); } diff --git a/project/src/graphics/utils/ImageDataUtil.cpp b/project/src/graphics/utils/ImageDataUtil.cpp index dd6dbd03d..6f1419974 100644 --- a/project/src/graphics/utils/ImageDataUtil.cpp +++ b/project/src/graphics/utils/ImageDataUtil.cpp @@ -253,13 +253,15 @@ namespace lime { int row; RGBA fillColor (color); + if (premultiplied) fillColor.MultiplyAlpha (); + for (int y = 0; y < dataView.height; y++) { row = dataView.Row (y); for (int x = 0; x < dataView.width; x++) { - fillColor.WriteUInt8 (data, row + (x * 4), format, premultiplied); + fillColor.WriteUInt8 (data, row + (x * 4), format, false); }