From 48086503a6ce0e8d8ea3647317734ecb54c60796 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Wed, 21 Sep 2016 19:06:45 +0100 Subject: [PATCH] Fix zooming size for opengl sprites --- .../engines/opengl/OpenGLDrawingEngine.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/drawing/engines/opengl/OpenGLDrawingEngine.cpp b/src/drawing/engines/opengl/OpenGLDrawingEngine.cpp index a20ad0b956..2f21e0ef5b 100644 --- a/src/drawing/engines/opengl/OpenGLDrawingEngine.cpp +++ b/src/drawing/engines/opengl/OpenGLDrawingEngine.cpp @@ -680,9 +680,26 @@ void OpenGLDrawingContext::DrawSprite(uint32 image, sint32 x, sint32 y, uint32 t sint32 left = x + drawOffsetX; sint32 top = y + drawOffsetY; + + int zoom_mask = 0xFFFFFFFF << _dpi->zoom_level; + if (_dpi->zoom_level && g1Element->flags & G1_FLAG_RLE_COMPRESSION){ + top -= ~zoom_mask; + } + + if (!(g1Element->flags & G1_FLAG_RLE_COMPRESSION)) { + top &= zoom_mask; + left += ~zoom_mask; + } + + left &= zoom_mask; + sint32 right = left + drawWidth; sint32 bottom = top + drawHeight; + if (_dpi->zoom_level && g1Element->flags & G1_FLAG_RLE_COMPRESSION) { + bottom += top & ~zoom_mask; + } + if (left > right) { std::swap(left, right);