From f588dcdf091911f321d5ee5c54a15a49e2ecc3f3 Mon Sep 17 00:00:00 2001 From: MrCdK Date: Tue, 28 Apr 2015 02:54:01 +0200 Subject: [PATCH] Dunno why round isn't working, so second another workaround --- project/src/graphics/utils/ImageDataUtil.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/project/src/graphics/utils/ImageDataUtil.cpp b/project/src/graphics/utils/ImageDataUtil.cpp index a639e3740..70863675a 100644 --- a/project/src/graphics/utils/ImageDataUtil.cpp +++ b/project/src/graphics/utils/ImageDataUtil.cpp @@ -1,7 +1,6 @@ #include #include #include -#include namespace lime { @@ -179,10 +178,10 @@ namespace lime { oneMinusSourceAlpha = (1 - sourceAlpha); outA = sourceAlpha + destAlpha * oneMinusSourceAlpha; - data[offset + 0] = __clamp[(int) round ((sourceData[sourceOffset + 0] * sourceAlpha + data[offset + 0] * destAlpha * oneMinusSourceAlpha) / outA)]; - data[offset + 1] = __clamp[(int) round ((sourceData[sourceOffset + 1] * sourceAlpha + data[offset + 1] * destAlpha * oneMinusSourceAlpha) / outA)]; - data[offset + 2] = __clamp[(int) round ((sourceData[sourceOffset + 2] * sourceAlpha + data[offset + 2] * destAlpha * oneMinusSourceAlpha) / outA)]; - data[offset + 3] = __clamp[(int) round (outA * 255.0)]; + data[offset + 0] = __clamp[int (0.5 + ((sourceData[sourceOffset + 0] * sourceAlpha + data[offset + 0] * destAlpha * oneMinusSourceAlpha) / outA))]; + data[offset + 1] = __clamp[int (0.5 + ((sourceData[sourceOffset + 1] * sourceAlpha + data[offset + 1] * destAlpha * oneMinusSourceAlpha) / outA))]; + data[offset + 2] = __clamp[int (0.5 + ((sourceData[sourceOffset + 2] * sourceAlpha + data[offset + 2] * destAlpha * oneMinusSourceAlpha) / outA))]; + data[offset + 3] = __clamp[int (0.5 + (outA * 255.0))]; }