SCI32: kIsOnMe apply scaling + use mulru() thx snover
This commit is contained in:
parent
9cb7caeb24
commit
dda637e7ac
2 changed files with 12 additions and 14 deletions
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue