diff options
-rw-r--r-- | engines/wintermute/base/gfx/osystem/render_ticket.cpp | 3 | ||||
-rw-r--r-- | engines/wintermute/graphics/transparent_surface.cpp | 8 | ||||
-rw-r--r-- | engines/wintermute/graphics/transparent_surface.h | 2 |
3 files changed, 6 insertions, 7 deletions
diff --git a/engines/wintermute/base/gfx/osystem/render_ticket.cpp b/engines/wintermute/base/gfx/osystem/render_ticket.cpp index 23cf5c318e..3f94c2e500 100644 --- a/engines/wintermute/base/gfx/osystem/render_ticket.cpp +++ b/engines/wintermute/base/gfx/osystem/render_ticket.cpp @@ -53,8 +53,7 @@ RenderTicket::RenderTicket(BaseSurfaceOSystem *owner, const Graphics::Surface *s // Then scale it if necessary if (_transform._angle != 0) { TransparentSurface src(*_surface, false); - Common::Rect srcRect_1(srcRect->left, srcRect->top, srcRect->right, srcRect->bottom); - Graphics::Surface *temp = src.rotate(srcRect_1, transform); + Graphics::Surface *temp = src.rotate(transform); _surface->free(); delete _surface; _surface = temp; diff --git a/engines/wintermute/graphics/transparent_surface.cpp b/engines/wintermute/graphics/transparent_surface.cpp index 87cb143dac..3f64305487 100644 --- a/engines/wintermute/graphics/transparent_surface.cpp +++ b/engines/wintermute/graphics/transparent_surface.cpp @@ -496,10 +496,10 @@ Common::Rect TransparentSurface::blit(Graphics::Surface &target, int posX, int p return retSize; } -TransparentSurface *TransparentSurface::rotate(Common::Rect aSrcRect, TransformStruct transform) const { +TransparentSurface *TransparentSurface::rotate(TransformStruct transform) const { Point32 newHotspot; - Rect32 rect = TransformTools::newRect(Rect32 (aSrcRect), transform, &newHotspot); - Common::Rect srcRect(0, 0, (int16)(aSrcRect.right - aSrcRect.left), (int16)(aSrcRect.bottom - aSrcRect.top)); + Common::Rect srcRect(0, 0, (int16)w, (int16)h); + Rect32 rect = TransformTools::newRect(Rect32 (srcRect), transform, &newHotspot); Common::Rect dstRect(0, 0, (int16)(rect.right - rect.left), (int16)(rect.bottom - rect.top)); TransparentSurface *target = new TransparentSurface(); @@ -526,7 +526,7 @@ TransparentSurface *TransparentSurface::rotate(Common::Rect aSrcRect, TransformS targY += transform._hotspot.y; if (FAST_TRANSFORM) { - bilinearCopy(targX, targY, x, y, srcRect, dstRect, this, target); + nearestCopy(targX, targY, x, y, srcRect, dstRect, this, target); } else { bilinearCopy(targX, targY, x, y, srcRect, dstRect, this, target); } diff --git a/engines/wintermute/graphics/transparent_surface.h b/engines/wintermute/graphics/transparent_surface.h index b81dbe86e9..474b10a6f1 100644 --- a/engines/wintermute/graphics/transparent_surface.h +++ b/engines/wintermute/graphics/transparent_surface.h @@ -111,7 +111,7 @@ struct TransparentSurface : public Graphics::Surface { void applyColorKey(uint8 r, uint8 g, uint8 b, bool overwriteAlpha = false); TransparentSurface *scale (uint16 newWidth, uint16 newHeight) const; - TransparentSurface *rotate(Common::Rect srcRect, TransformStruct transform) const; + TransparentSurface *rotate(TransformStruct transform) const; static byte *_lookup; static void destroyLookup(); private: |