[Scummvm-cvs-logs] SF.net SVN: scummvm:[51520] scummvm/trunk/engines/sci/graphics/view.cpp
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Sat Jul 31 00:44:24 CEST 2010
Revision: 51520
http://scummvm.svn.sourceforge.net/scummvm/?rev=51520&view=rev
Author: m_kiewitz
Date: 2010-07-30 22:44:23 +0000 (Fri, 30 Jul 2010)
Log Message:
-----------
SCI: fixing view scaling code
fixes crash in sq5 with elevator on goliath
Modified Paths:
--------------
scummvm/trunk/engines/sci/graphics/view.cpp
Modified: scummvm/trunk/engines/sci/graphics/view.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/view.cpp 2010-07-30 22:20:13 UTC (rev 51519)
+++ scummvm/trunk/engines/sci/graphics/view.cpp 2010-07-30 22:44:23 UTC (rev 51520)
@@ -637,7 +637,7 @@
uint16 scalingX[640];
uint16 scalingY[480];
int16 scaledWidth, scaledHeight;
- int16 pixelNo, scaledPixel, scaledPixelNo, prevScaledPixelNo;
+ int pixelNo, scaledPixel, scaledPixelNo, prevScaledPixelNo;
if (_embeddedPal) {
// Merge view palette in...
@@ -650,8 +650,8 @@
scaledHeight = CLIP<int16>(scaledHeight, 0, _screen->getHeight());
// Do we really need to do this?!
- memset(scalingX, 0, sizeof(scalingX));
- memset(scalingY, 0, sizeof(scalingY));
+ //memset(scalingX, 0, sizeof(scalingX));
+ //memset(scalingY, 0, sizeof(scalingY));
// Create height scaling table
pixelNo = 0;
@@ -659,16 +659,15 @@
while (pixelNo < celHeight) {
scaledPixelNo = scaledPixel >> 7;
assert(scaledPixelNo < ARRAYSIZE(scalingY));
- if (prevScaledPixelNo < scaledPixelNo)
- memset(&scalingY[prevScaledPixelNo], pixelNo, scaledPixelNo - prevScaledPixelNo);
- scalingY[scaledPixelNo] = pixelNo;
- prevScaledPixelNo = scaledPixelNo + 1;
+ for (; prevScaledPixelNo <= scaledPixelNo; prevScaledPixelNo++)
+ scalingY[prevScaledPixelNo] = pixelNo;
pixelNo++;
scaledPixel += scaleY;
}
+ pixelNo--;
scaledPixelNo++;
- if (scaledPixelNo < scaledHeight)
- memset(&scalingY[scaledPixelNo], pixelNo - 1, scaledHeight - scaledPixelNo);
+ for (; scaledPixelNo < scaledWidth; scaledPixelNo++)
+ scalingY[scaledPixelNo] = pixelNo - 1;
// Create width scaling table
pixelNo = 0;
@@ -676,16 +675,15 @@
while (pixelNo < celWidth) {
scaledPixelNo = scaledPixel >> 7;
assert(scaledPixelNo < ARRAYSIZE(scalingX));
- if (prevScaledPixelNo < scaledPixelNo)
- memset(&scalingX[prevScaledPixelNo], pixelNo, scaledPixelNo - prevScaledPixelNo);
- scalingX[scaledPixelNo] = pixelNo;
- prevScaledPixelNo = scaledPixelNo + 1;
+ for (; prevScaledPixelNo <= scaledPixelNo; prevScaledPixelNo++)
+ scalingX[prevScaledPixelNo] = pixelNo;
pixelNo++;
scaledPixel += scaleX;
}
+ pixelNo--;
scaledPixelNo++;
- if (scaledPixelNo < scaledWidth)
- memset(&scalingX[scaledPixelNo], pixelNo - 1, scaledWidth - scaledPixelNo);
+ for (; scaledPixelNo < scaledWidth; scaledPixelNo++)
+ scalingX[scaledPixelNo] = pixelNo - 1;
scaledWidth = MIN(clipRect.width(), scaledWidth);
scaledHeight = MIN(clipRect.height(), scaledHeight);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list