[Scummvm-cvs-logs] scummvm master -> dda637e7ac3d54c72bb5e6f8639f439e2f26ecf9
m-kiewitz
m_kiewitz at users.sourceforge.net
Sat Feb 20 16:15:44 CET 2016
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
dda637e7ac SCI32: kIsOnMe apply scaling + use mulru() thx snover
Commit: dda637e7ac3d54c72bb5e6f8639f439e2f26ecf9
https://github.com/scummvm/scummvm/commit/dda637e7ac3d54c72bb5e6f8639f439e2f26ecf9
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2016-02-20T16:15:01+01:00
Commit Message:
SCI32: kIsOnMe apply scaling + use mulru() thx snover
Changed paths:
engines/sci/graphics/frameout.cpp
engines/sci/graphics/screen_item32.h
diff --git a/engines/sci/graphics/frameout.cpp b/engines/sci/graphics/frameout.cpp
index a49ea08..6613b6b 100644
--- a/engines/sci/graphics/frameout.cpp
+++ b/engines/sci/graphics/frameout.cpp
@@ -1908,27 +1908,23 @@ uint16 GfxFrameout::isOnMe(Plane *screenItemPlane, ScreenItem *screenItem, int16
//warning("Check Pixels");
CelObj &screenItemCelObject = screenItem->getCelObj();
- int32 celAdjustedX = adjustedX;
- int32 celAdjustedY = adjustedY;
+ Common::Point celAdjustedPoint(adjustedX, adjustedY);
bool celMirrored = screenItem->_mirrorX ^ screenItemCelObject._mirrorX;
- celAdjustedX -= screenItem->_scaledPosition.x;
- celAdjustedY -= screenItem->_scaledPosition.y;
+ celAdjustedPoint.x -= screenItem->_scaledPosition.x;
+ celAdjustedPoint.y -= screenItem->_scaledPosition.y;
- celAdjustedX = celAdjustedX * screenItemCelObject._scaledWidth / getCurrentBuffer().screenWidth;
- celAdjustedY = celAdjustedY * screenItemCelObject._scaledHeight / getCurrentBuffer().screenHeight;
+ Ratio celAdjustXRatio(screenItemCelObject._scaledWidth, getCurrentBuffer().screenWidth);
+ Ratio celAdjustYRatio(screenItemCelObject._scaledHeight, getCurrentBuffer().screenHeight);
+ mulru(celAdjustedPoint, celAdjustXRatio, celAdjustYRatio);
- // if adjustedX/Y larger than width/height divide again??
- // + if >0 afterwards increase by 1
-
-#if 0
if ((screenItem->_scale.signal) && (screenItem->_scale.x) && (screenItem->_scale.y)) {
- celAdjustedX = celAdjustedX * 128 / screenItem->_scale.x;
- celAdjustedY = celAdjustedY * 128 / screenItem->_scale.y;
+ // Apply scaling
+ celAdjustedPoint.x = celAdjustedPoint.x * 128 / screenItem->_scale.x;
+ celAdjustedPoint.y = celAdjustedPoint.y * 128 / screenItem->_scale.y;
}
-#endif
- byte coordinateColor = screenItemCelObject.readPixel(celAdjustedX, celAdjustedY, celMirrored);
+ byte coordinateColor = screenItemCelObject.readPixel(celAdjustedPoint.x, celAdjustedPoint.y, celMirrored);
byte transparentColor = screenItemCelObject._transparentColor;
if (coordinateColor == transparentColor) {
diff --git a/engines/sci/graphics/screen_item32.h b/engines/sci/graphics/screen_item32.h
index d3968ef..0ca840a 100644
--- a/engines/sci/graphics/screen_item32.h
+++ b/engines/sci/graphics/screen_item32.h
@@ -69,6 +69,7 @@ private:
*/
reg_t _plane;
+public:
/**
* Scaling data used to calculate the final screen
* dimensions of the screen item as well as the scaling
@@ -76,6 +77,7 @@ private:
*/
ScaleInfo _scale;
+private:
/**
* The position & dimensions of the screen item in
* screen coordinates. This rect includes the offset
More information about the Scummvm-git-logs
mailing list