aboutsummaryrefslogtreecommitdiff
path: root/engines/wintermute/graphics/transparent_surface.cpp
diff options
context:
space:
mode:
authorTobia Tesan2013-07-09 20:57:03 +0200
committerTobia Tesan2013-08-01 00:03:46 +0200
commitb34d7b753912af6dd971872cd702d489974606ff (patch)
tree621c07f2ce02c9be03a9d1787398314b5a1621bb /engines/wintermute/graphics/transparent_surface.cpp
parent0b21d6dca2ad5be41fa2aa4c2bed2cb694fba4d1 (diff)
downloadscummvm-rg350-b34d7b753912af6dd971872cd702d489974606ff.tar.gz
scummvm-rg350-b34d7b753912af6dd971872cd702d489974606ff.tar.bz2
scummvm-rg350-b34d7b753912af6dd971872cd702d489974606ff.zip
WINTERMUTE: *transform as pointer in transform_tools
Diffstat (limited to 'engines/wintermute/graphics/transparent_surface.cpp')
-rw-r--r--engines/wintermute/graphics/transparent_surface.cpp23
1 files changed, 13 insertions, 10 deletions
diff --git a/engines/wintermute/graphics/transparent_surface.cpp b/engines/wintermute/graphics/transparent_surface.cpp
index 5606d41ae6..1139b08199 100644
--- a/engines/wintermute/graphics/transparent_surface.cpp
+++ b/engines/wintermute/graphics/transparent_surface.cpp
@@ -496,7 +496,10 @@ Common::Rect TransparentSurface::blit(Graphics::Surface &target, int posX, int p
return retSize;
}
-TransparentSurface *TransparentSurface::rotate(TransformStruct transform) const {
+TransparentSurface *TransparentSurface::rotate(TransformStruct *transform) const {
+
+ assert (transform);
+
Point32 newHotspot;
Common::Rect srcRect(0, 0, (int16)w, (int16)h);
Rect32 rect = TransformTools::newRect(Rect32 (srcRect), transform, &newHotspot);
@@ -510,7 +513,7 @@ TransparentSurface *TransparentSurface::rotate(TransformStruct transform) const
target->create((uint16)dstW, (uint16)dstH, this->format);
- uint32 invAngle = (360 - transform._angle) % 360;
+ uint32 invAngle = (360 - transform->_angle) % 360;
float invCos = cos(invAngle * M_PI / 180.0);
float invSin = sin(invAngle * M_PI / 180.0);
float targX;
@@ -522,11 +525,11 @@ TransparentSurface *TransparentSurface::rotate(TransformStruct transform) const
int x1 = x - newHotspot.x;
int y1 = y - newHotspot.y;
- targX = ((x1 * invCos - y1 * invSin)) * 100.0 / transform._zoom.x + srcRect.left;
- targY = ((x1 * invSin + y1 * invCos)) * 100.0 / transform._zoom.y + srcRect.top;
+ targX = ((x1 * invCos - y1 * invSin)) * 100.0 / transform->_zoom.x + srcRect.left;
+ targY = ((x1 * invSin + y1 * invCos)) * 100.0 / transform->_zoom.y + srcRect.top;
- targX += transform._hotspot.x;
- targY += transform._hotspot.y;
+ targX += transform->_hotspot.x;
+ targY += transform->_hotspot.y;
copyPixelNearestNeighbor(targX, targY, x, y, srcRect, dstRect, this, target);
}
@@ -537,11 +540,11 @@ TransparentSurface *TransparentSurface::rotate(TransformStruct transform) const
int x1 = x - newHotspot.x;
int y1 = y - newHotspot.y;
- targX = ((x1 * invCos - y1 * invSin)) * 100.0 / transform._zoom.x + srcRect.left;
- targY = ((x1 * invSin + y1 * invCos)) * 100.0 / transform._zoom.y + srcRect.top;
+ targX = ((x1 * invCos - y1 * invSin)) * 100.0 / transform->_zoom.x + srcRect.left;
+ targY = ((x1 * invSin + y1 * invCos)) * 100.0 / transform->_zoom.y + srcRect.top;
- targX += transform._hotspot.x;
- targY += transform._hotspot.y;
+ targX += transform->_hotspot.x;
+ targY += transform->_hotspot.y;
copyPixelBilinear(targX, targY, x, y, srcRect, dstRect, this, target);
}