[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