Fix divide by zero (thanks @larsiusprime, @hasufel)
This commit is contained in:
@@ -263,10 +263,18 @@ class ImageDataUtil {
|
||||
oneMinusSourceAlpha = 1 - sourceAlpha;
|
||||
blendAlpha = sourceAlpha + (destAlpha * oneMinusSourceAlpha);
|
||||
|
||||
destPixel.r = RGBA.__clamp[Math.round ((sourcePixel.r * sourceAlpha + destPixel.r * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
|
||||
destPixel.g = RGBA.__clamp[Math.round ((sourcePixel.g * sourceAlpha + destPixel.g * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
|
||||
destPixel.b = RGBA.__clamp[Math.round ((sourcePixel.b * sourceAlpha + destPixel.b * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
|
||||
destPixel.a = RGBA.__clamp[Math.round (blendAlpha * 255.0)];
|
||||
if (blendAlpha == 0) {
|
||||
|
||||
destPixel = 0;
|
||||
|
||||
} else {
|
||||
|
||||
destPixel.r = RGBA.__clamp[Math.round ((sourcePixel.r * sourceAlpha + destPixel.r * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
|
||||
destPixel.g = RGBA.__clamp[Math.round ((sourcePixel.g * sourceAlpha + destPixel.g * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
|
||||
destPixel.b = RGBA.__clamp[Math.round ((sourcePixel.b * sourceAlpha + destPixel.b * destAlpha * oneMinusSourceAlpha) / blendAlpha)];
|
||||
destPixel.a = RGBA.__clamp[Math.round (blendAlpha * 255.0)];
|
||||
|
||||
}
|
||||
|
||||
destPixel.writeUInt8 (destData, destPosition, destFormat, destPremultiplied);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user