From: Hugues Ross Date: Mon, 1 Jun 2020 13:22:04 +0000 (-0400) Subject: imageScaleNNAA: Fix image clipping on rect- instead of image dimensions (#9896) X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=f849917bbe9c5eff51bee0a3125eabed16efb172;p=oweals%2Fminetest.git imageScaleNNAA: Fix image clipping on rect- instead of image dimensions (#9896) Fixes GUI scaling filters applied on animated images and 9slice backgrounds. --- diff --git a/src/client/imagefilters.cpp b/src/client/imagefilters.cpp index dd029628f..0fa501410 100644 --- a/src/client/imagefilters.cpp +++ b/src/client/imagefilters.cpp @@ -91,7 +91,7 @@ void imageScaleNNAA(video::IImage *src, const core::rect &srcrect, video::I u32 dy, dx; video::SColor pxl; - // Cache rectsngle boundaries. + // Cache rectangle boundaries. double sox = srcrect.UpperLeftCorner.X * 1.0; double soy = srcrect.UpperLeftCorner.Y * 1.0; double sw = srcrect.getWidth() * 1.0; @@ -107,15 +107,15 @@ void imageScaleNNAA(video::IImage *src, const core::rect &srcrect, video::I // Do some basic clipping, and for mirrored/flipped rects, // make sure min/max are in the right order. minsx = sox + (dx * sw / dim.Width); - minsx = rangelim(minsx, 0, sw); + minsx = rangelim(minsx, 0, sox + sw); maxsx = minsx + sw / dim.Width; - maxsx = rangelim(maxsx, 0, sw); + maxsx = rangelim(maxsx, 0, sox + sw); if (minsx > maxsx) SWAP(double, minsx, maxsx); minsy = soy + (dy * sh / dim.Height); - minsy = rangelim(minsy, 0, sh); + minsy = rangelim(minsy, 0, soy + sh); maxsy = minsy + sh / dim.Height; - maxsy = rangelim(maxsy, 0, sh); + maxsy = rangelim(maxsy, 0, soy + sh); if (minsy > maxsy) SWAP(double, minsy, maxsy);