[Scummvm-cvs-logs] CVS: scummvm/common config-file.cpp,1.13,1.13.2.1 file.cpp,1.28,1.28.2.1 rect.h,1.2,1.2.2.1 savefile.h,1.3,1.3.2.1 scaler.cpp,1.11.2.1,1.11.2.2 scaler.h,1.7.2.1,1.7.2.2 scummsys.h,1.21,1.21.2.1 str.cpp,1.15,1.15.2.1 str.h,1.10,1.10.2.1 util.cpp,1.13,1.13.2.1 util.h,1.14,1.14.2.1

Max Horn fingolfin at users.sourceforge.net
Mon May 26 05:52:05 CEST 2003


Update of /cvsroot/scummvm/scummvm/common
In directory sc8-pr-cvs1:/tmp/cvs-serv5628

Modified Files:
      Tag: branch-0-4-0
	config-file.cpp file.cpp rect.h savefile.h scaler.cpp scaler.h 
	scummsys.h str.cpp str.h util.cpp util.h 
Log Message:
sync with trunk

Index: config-file.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/config-file.cpp,v
retrieving revision 1.13
retrieving revision 1.13.2.1
diff -u -d -r1.13 -r1.13.2.1
--- config-file.cpp	6 Mar 2003 21:45:15 -0000	1.13
+++ config-file.cpp	26 May 2003 12:51:54 -0000	1.13.2.1
@@ -30,20 +30,15 @@
 #define MAXLINELEN 256
 
 static char *ltrim(char *t) {
-	for (; *t && (*t == ' '); t++);
+	while (*t == ' ')
+		t++;
 	return t;
 }
 
 static char *rtrim(char *t) {
-	int l;
-
-	for (l = strlen(t) - 1; l; l--) {
-		if (t[l] == ' ') {
-			*t = 0;
-		} else {
-			return t;
-		}
-	}
+	int l = strlen(t) - 1;
+	while (l >= 0 && t[l] == ' ')
+		t[l--] = 0;
 	return t;
 }
 

Index: file.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/file.cpp,v
retrieving revision 1.28
retrieving revision 1.28.2.1
diff -u -d -r1.28 -r1.28.2.1
--- file.cpp	1 May 2003 12:36:36 -0000	1.28
+++ file.cpp	26 May 2003 12:51:54 -0000	1.28.2.1
@@ -71,16 +71,16 @@
 
 		ptr = buf + len;
 		do
-			*ptr++ = toupper(*ptr);
-		while (*ptr);
+			*ptr = toupper(*ptr);
+		while (*ptr++);
 		file = fopen(buf, mode);
 		if (file)
 			return file;
 
 		ptr = buf + len;
 		do
-			*ptr++ = tolower(*ptr);
-		while (*ptr);
+			*ptr = tolower(*ptr);
+		while (*ptr++);
 		file = fopen(buf, mode);
 		if (file)
 			return file;
@@ -273,6 +273,9 @@
 		return 0;
 
 	if (_encbyte != 0) {
+		// Maybe FIXME: while it's efficient to do the encoding here,
+		// it not really nice for a write function to modify its input.
+		// Maybe we should work on a copy here...
 		uint32 t_size = len;
 		do {
 			*ptr2++ ^= _encbyte;

Index: rect.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/rect.h,v
retrieving revision 1.2
retrieving revision 1.2.2.1
diff -u -d -r1.2 -r1.2.2.1
--- rect.h	6 Mar 2003 21:45:25 -0000	1.2
+++ rect.h	26 May 2003 12:51:54 -0000	1.2.2.1
@@ -30,27 +30,16 @@
 
 	This small class is an helper for position and size values.
 */
-class Point {
-	friend class Rect;
-private:
-	int32 _x;	//!< The horizontal part of the point
-	int32 _y;	//!< The vertical part of the point
-public:
-	Point() : _x(0), _y(0) {};
-	Point(const Point & p) : _x(p._x), _y(p._y) {};
-	explicit Point(int32 x, int32 y) : _x(x), _y(y) {};
-	Point & operator=(const Point & p) { _x = p._x; _y = p._y; return *this; };
-	bool operator==(const Point & p) const { return _x == p._x && _y == p._y; };
-	const int32 & getX() const { return _x; };
-	const int32 & getY() const { return _y; };
-	int32 & getX() { return _x; };
-	int32 & getY() { return _y; };
-	Point operator+(const Point & p) const { return Point(_x + p._x, _y+p._y); };
-	Point operator-(const Point & p) const { return Point(_x - p._x, _y-p._y); };
-	Point & operator+=(const Point & p) { _x += p._x; _y += p._y; return *this; };
-	Point & operator-=(const Point & p) { _x -= p._x; _y -= p._y; return *this; };
-	bool isOrigin() const { return _x == 0 && _y == 0; };
-	void set(int32 x, int32 y) { _x = x; _y = y; }
+struct Point {
+	int16 x;	//!< The horizontal part of the point
+	int16 y;	//!< The vertical part of the point
+
+	Point() : x(0), y(0) {};
+	Point(const Point & p) : x(p.x), y(p.y) {};
+	explicit Point(int16 x1, int16 y1) : x(x1), y(y1) {};
+	Point & operator=(const Point & p) { x = p.x; y = p.y; return *this; };
+	bool operator==(const Point & p) const { return x == p.x && y == p.y; };
+	bool operator!=(const Point & p) const { return x != p.x || y != p.y; };
 };
 
 /*! 	@brief simple class for handling a rectangular zone.
@@ -58,45 +47,53 @@
 	This small class is an helper for rectangles.
 	It is mostly used by the blitter class.
 */
-class Rect {
-private:
-	Point _topLeft;		//!< The point at the top left of the rectangle
-	Point _bottomRight;	//!< The point at the bottom right of the rectangle
-public:
-	Rect() : _topLeft(0, 0), _bottomRight(0,0) {}
-	Rect(int32 x, int32 y) : _topLeft(0, 0), _bottomRight(x, y) {}
-	Rect(int32 x1, int32 y1, int32 x2, int32 y2) : _topLeft(x1, y1), _bottomRight(x2, y2) {}
-	Point size() const { return (_bottomRight - _topLeft); };
-	int32 width() const { return size()._x; }
-	int32 height() const { return size()._y; }
-	int32 left() const { return _topLeft._x; }
-	int32 right() const { return _bottomRight._x; }
-	int32 top() const { return _topLeft._y; }
-	int32 bottom() const { return _bottomRight._y; }
-	const Point & topLeft() const { return _topLeft; }
-	const Point & bottomRight() const { return _bottomRight; }
+struct Rect {
+	int16 top, left;		//!< The point at the top left of the rectangle (part of the rect).
+	int16 bottom, right;	//!< The point at the bottom right of the rectangle (not part of the rect).
 
-	/*!	@brief check if given position is inside the rectangle
+	Rect() : top(0), left(0), bottom(0), right(0) {}
+	Rect(int16 x, int16 y) : top(0), left(0), bottom(x), right(y) {}
+	Rect(int16 x1, int16 y1, int16 x2, int16 y2) : top(y1), left(x1), bottom(y2), right(x2) {}
+	int16 width() const { return right - left; }
+	int16 height() const { return bottom - top; }
+
+	/*!	@brief check if given position is inside this rectangle
 		
 		@param x the horizontal position to check
 		@param y the vertical position to check	
 		
-		@return true if the given position is inside the rectangle, false otherwise
+		@return true if the given position is inside this rectangle, false otherwise
 	*/
-	bool isInside(int32 x, int32 y) const {
-		return (_topLeft._x <= x) && (_bottomRight._x > x) && (_topLeft._y <= y) && (_bottomRight._y > y);
+	bool contains(int16 x, int16 y) const {
+		return (left <= x) && (x < right) && (top <= y) && (y < bottom);
 	}
-	/*!	@brief check if given point is inside the rectangle
+
+	/*!	@brief check if given point is inside this rectangle
 		
 		@param p the point to check
 		
-		@return true if the given point is inside the rectangle, false otherwise
+		@return true if the given point is inside this rectangle, false otherwise
 	*/
-	bool isInside(const Point & p) const {
-		return (_topLeft._x <= p._x) && (_bottomRight._x > p._x) && (_topLeft._y <= p._y) && (_bottomRight._y > p._y);
+	bool contains(const Point & p) const {
+		return (left <= p.x) && (p.x < right) && (top <= p.y) && (p.y < bottom);
 	}
 
-	bool clip(Rect & r) const;
+	/*!	@brief check if given rectangle is inside this rectangle
+		
+		@param p the point to check
+		
+		@return true if the given rectangle is inside the rectangle, false otherwise
+	*/
+	bool contains(const Rect & r) const {
+		return (left <= r.right) && (r.left < right) && (top <= r.bottom) && (r.top < bottom);
+	}
+	
+	void grow(int16 offset) {
+		top -= offset;
+		left -= offset;
+		bottom += offset;
+		right += offset;
+	}
 };
 
 };	// End of namespace ScummVM

Index: savefile.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/savefile.h,v
retrieving revision 1.3
retrieving revision 1.3.2.1
diff -u -d -r1.3 -r1.3.2.1
--- savefile.h	30 Apr 2003 12:43:55 -0000	1.3
+++ savefile.h	26 May 2003 12:51:54 -0000	1.3.2.1
@@ -73,22 +73,18 @@
 public:
 	virtual ~SaveFileManager() {}
 
-	virtual SaveFile *open_savefile(const char *filename,
-					bool saveOrLoad)
-	{
+	virtual SaveFile *open_savefile(const char *filename, bool saveOrLoad) {
 		StdioSaveFile *sf = new StdioSaveFile(filename,
 						      (saveOrLoad? "wb":"rb"));
-		if(!sf->is_open()) {
+		if (!sf->is_open()) {
 			delete sf;
 			sf = NULL;
 		}
 		return sf;
 	}
 
-	virtual void list_savefiles(const char *prefix,
-				    bool *marks, int num)
-	{
-		memset(marks, true, num*sizeof(bool));
+	virtual void list_savefiles(const char * /* prefix */,  bool *marks, int num) {
+		memset(marks, true, num * sizeof(bool));
 	}
 
 };

Index: scaler.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler.cpp,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.2
diff -u -d -r1.11.2.1 -r1.11.2.2
--- scaler.cpp	25 May 2003 12:12:32 -0000	1.11.2.1
+++ scaler.cpp	26 May 2003 12:51:54 -0000	1.11.2.2
@@ -70,64 +70,23 @@
 	return 1;
 }
 
-static inline int GetResult1(uint32 A, uint32 B, uint32 C, uint32 D, uint32 /* E */ ) {
-	int x = 0;
-	int y = 0;
-	int r = 0;
-
-	if (A == C)
-		x += 1;
-	else if (B == C)
-		y += 1;
-	if (A == D)
-		x += 1;
-	else if (B == D)
-		y += 1;
-	if (x <= 1)
-		r += 1;
-	if (y <= 1)
-		r -= 1;
-	return r;
-}
-
-static inline int GetResult2(uint32 A, uint32 B, uint32 C, uint32 D, uint32 /* E */ ) {
-	int x = 0;
-	int y = 0;
-	int r = 0;
-
-	if (A == C)
-		x += 1;
-	else if (B == C)
-		y += 1;
-	if (A == D)
-		x += 1;
-	else if (B == D)
-		y += 1;
-	if (x <= 1)
-		r -= 1;
-	if (y <= 1)
-		r += 1;
-	return r;
-}
-
-static inline int GetResult(uint32 A, uint32 B, uint32 C, uint32 D) {
-	int x = 0;
-	int y = 0;
-	int r = 0;
-
-	if (A == C)
-		x += 1;
-	else if (B == C)
-		y += 1;
-	if (A == D)
-		x += 1;
-	else if (B == D)
-		y += 1;
-	if (x <= 1)
-		r += 1;
-	if (y <= 1)
-		r -= 1;
-	return r;
+static inline int GetResult(uint32 A, uint32 B, uint32 C, uint32 D) { 
+	const bool ac = (A==C);
+	const bool bc = (B==C);
+	const int x1 = ac;
+	const int y1 = (bc & !ac);
+	const bool ad = (A==D);
+	const bool bd = (B==D);
+	const int x2 = ad;
+	const int y2 = (bd & !ad);
+	const int x = x1+x2;
+	const int y = y1+y2;
+	static const int rmap[3][3] = {
+			{0, 0, -1},
+			{0, 0, -1},
+			{1, 1,  0}
+		};
+	return rmap[y][x];
 }
 
 static inline uint32 INTERPOLATE(uint32 A, uint32 B) {
@@ -147,570 +106,375 @@
 	return x + y;
 }
 
-#define BLUE_MASK565 0x001F001F
-#define RED_MASK565 0xF800F800
-#define GREEN_MASK565 0x07E007E0
-
-#define BLUE_MASK555 0x001F001F
-#define RED_MASK555 0x7C007C00
-#define GREEN_MASK555 0x03E003E0
-
 void Super2xSaI(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	const uint16 *bP;
 	uint8 *dP;
-	uint32 inc_bP;
-
-	{
-		uint32 Nextline = srcPitch >> 1;
-		inc_bP = 1;
+	const uint32 inc_bP = 1;
+	const uint32 Nextline = srcPitch >> 1;
 
-		while (height--) {
-			bP = (const uint16 *)srcPtr;
-			dP = (uint8 *)dstPtr;
+	while (height--) {
+		bP = (const uint16 *)srcPtr;
+		dP = (uint8 *)dstPtr;
 
-			for (uint32 finish = width; finish; finish -= inc_bP) {
-				uint32 color4, color5, color6;
-				uint32 color1, color2, color3;
-				uint32 colorA0, colorA1, colorA2, colorA3, colorB0, colorB1, colorB2, colorB3, colorS1, colorS2;
-				uint32 product1a, product1b, product2a, product2b;
+		for (uint32 finish = width; finish; finish -= inc_bP) {
+			uint32 color4, color5, color6;
+			uint32 color1, color2, color3;
+			uint32 colorA0, colorA1, colorA2, colorA3;
+			uint32 colorB0, colorB1, colorB2, colorB3;
+			uint32 colorS1, colorS2;
+			uint32 product1a, product1b, product2a, product2b;
 
 //---------------------------------------    B1 B2
 //                                         4  5  6 S2
 //                                         1  2  3 S1
 //                                           A1 A2
 
-				colorB0 = *(bP - Nextline - 1);
-				colorB1 = *(bP - Nextline);
-				colorB2 = *(bP - Nextline + 1);
-				colorB3 = *(bP - Nextline + 2);
+			colorB0 = *(bP - Nextline - 1);
+			colorB1 = *(bP - Nextline);
+			colorB2 = *(bP - Nextline + 1);
+			colorB3 = *(bP - Nextline + 2);
 
-				color4 = *(bP - 1);
-				color5 = *(bP);
-				color6 = *(bP + 1);
-				colorS2 = *(bP + 2);
+			color4 = *(bP - 1);
+			color5 = *(bP);
+			color6 = *(bP + 1);
+			colorS2 = *(bP + 2);
 
-				color1 = *(bP + Nextline - 1);
-				color2 = *(bP + Nextline);
-				color3 = *(bP + Nextline + 1);
-				colorS1 = *(bP + Nextline + 2);
+			color1 = *(bP + Nextline - 1);
+			color2 = *(bP + Nextline);
+			color3 = *(bP + Nextline + 1);
+			colorS1 = *(bP + Nextline + 2);
 
-				colorA0 = *(bP + Nextline + Nextline - 1);
-				colorA1 = *(bP + Nextline + Nextline);
-				colorA2 = *(bP + Nextline + Nextline + 1);
-				colorA3 = *(bP + Nextline + Nextline + 2);
+			colorA0 = *(bP + Nextline + Nextline - 1);
+			colorA1 = *(bP + Nextline + Nextline);
+			colorA2 = *(bP + Nextline + Nextline + 1);
+			colorA3 = *(bP + Nextline + Nextline + 2);
 
 //--------------------------------------
-				if (color2 == color6 && color5 != color3) {
-					product2b = product1b = color2;
-				} else if (color5 == color3 && color2 != color6) {
-					product2b = product1b = color5;
-				} else if (color5 == color3 && color2 == color6) {
-					register int r = 0;
-
-					r += GetResult(color6, color5, color1, colorA1);
-					r += GetResult(color6, color5, color4, colorB1);
-					r += GetResult(color6, color5, colorA2, colorS1);
-					r += GetResult(color6, color5, colorB2, colorS2);
+			if (color2 == color6 && color5 != color3) {
+				product2b = product1b = color2;
+			} else if (color5 == color3 && color2 != color6) {
+				product2b = product1b = color5;
+			} else if (color5 == color3 && color2 == color6) {
+				register int r = 0;
 
-					if (r > 0)
-						product2b = product1b = color6;
-					else if (r < 0)
-						product2b = product1b = color5;
-					else {
-						product2b = product1b = INTERPOLATE(color5, color6);
-					}
-				} else {
-					if (color6 == color3 && color3 == colorA1 && color2 != colorA2 && color3 != colorA0)
-						product2b = Q_INTERPOLATE(color3, color3, color3, color2);
-					else if (color5 == color2 && color2 == colorA2 && colorA1 != color3 && color2 != colorA3)
-						product2b = Q_INTERPOLATE(color2, color2, color2, color3);
-					else
-						product2b = INTERPOLATE(color2, color3);
+				r += GetResult(color6, color5, color1, colorA1);
+				r += GetResult(color6, color5, color4, colorB1);
+				r += GetResult(color6, color5, colorA2, colorS1);
+				r += GetResult(color6, color5, colorB2, colorS2);
 
-					if (color6 == color3 && color6 == colorB1 && color5 != colorB2 && color6 != colorB0)
-						product1b = Q_INTERPOLATE(color6, color6, color6, color5);
-					else if (color5 == color2 && color5 == colorB2 && colorB1 != color6 && color5 != colorB3)
-						product1b = Q_INTERPOLATE(color6, color5, color5, color5);
-					else
-						product1b = INTERPOLATE(color5, color6);
+				if (r > 0)
+					product2b = product1b = color6;
+				else if (r < 0)
+					product2b = product1b = color5;
+				else {
+					product2b = product1b = INTERPOLATE(color5, color6);
 				}
-
-				if (color5 == color3 && color2 != color6 && color4 == color5 && color5 != colorA2)
-					product2a = INTERPOLATE(color2, color5);
-				else if (color5 == color1 && color6 == color5 && color4 != color2 && color5 != colorA0)
-					product2a = INTERPOLATE(color2, color5);
+			} else {
+				if (color6 == color3 && color3 == colorA1 && color2 != colorA2 && color3 != colorA0)
+					product2b = Q_INTERPOLATE(color3, color3, color3, color2);
+				else if (color5 == color2 && color2 == colorA2 && colorA1 != color3 && color2 != colorA3)
+					product2b = Q_INTERPOLATE(color2, color2, color2, color3);
 				else
-					product2a = color2;
+					product2b = INTERPOLATE(color2, color3);
 
-				if (color2 == color6 && color5 != color3 && color1 == color2 && color2 != colorB2)
-					product1a = INTERPOLATE(color2, color5);
-				else if (color4 == color2 && color3 == color2 && color1 != color5 && color2 != colorB0)
-					product1a = INTERPOLATE(color2, color5);
+				if (color6 == color3 && color6 == colorB1 && color5 != colorB2 && color6 != colorB0)
+					product1b = Q_INTERPOLATE(color6, color6, color6, color5);
+				else if (color5 == color2 && color5 == colorB2 && colorB1 != color6 && color5 != colorB3)
+					product1b = Q_INTERPOLATE(color6, color5, color5, color5);
 				else
-					product1a = color5;
+					product1b = INTERPOLATE(color5, color6);
+			}
+
+			if (color5 == color3 && color2 != color6 && color4 == color5 && color5 != colorA2)
+				product2a = INTERPOLATE(color2, color5);
+			else if (color5 == color1 && color6 == color5 && color4 != color2 && color5 != colorA0)
+				product2a = INTERPOLATE(color2, color5);
+			else
+				product2a = color2;
+
+			if (color2 == color6 && color5 != color3 && color1 == color2 && color2 != colorB2)
+				product1a = INTERPOLATE(color2, color5);
+			else if (color4 == color2 && color3 == color2 && color1 != color5 && color2 != colorB0)
+				product1a = INTERPOLATE(color2, color5);
+			else
+				product1a = color5;
 
 #ifdef SCUMM_LITTLE_ENDIAN
-				product1a = product1a | (product1b << 16);
-				product2a = product2a | (product2b << 16);
+			product1a = product1a | (product1b << 16);
+			product2a = product2a | (product2b << 16);
 #endif
 
 #ifdef SCUMM_BIG_ENDIAN
-				product1a = product1b | (product1a << 16);
-				product2a = product2b | (product2a << 16);
+			product1a = product1b | (product1a << 16);
+			product2a = product2b | (product2a << 16);
 #endif
-				*((uint32 *)dP) = product1a;
-				*((uint32 *)(dP + dstPitch)) = product2a;
+			*((uint32 *)dP) = product1a;
+			*((uint32 *)(dP + dstPitch)) = product2a;
 
-				bP += inc_bP;
-				dP += sizeof(uint32);
-			}													// end of for ( finish= width etc..)
+			bP += inc_bP;
+			dP += sizeof(uint32);
+		}													// end of for ( finish= width etc..)
 
-			srcPtr += srcPitch;
-			dstPtr += dstPitch * 2;
-		}														// while (height--)
-	}
+		srcPtr += srcPitch;
+		dstPtr += dstPitch * 2;
+	}														// while (height--)
 }
 
 void SuperEagle(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	uint8 *dP;
 	const uint16 *bP;
-	uint32 inc_bP;
-
-	{
-		inc_bP = 1;
-
-		uint32 Nextline = srcPitch >> 1;
+	const uint32 inc_bP = 1;
+	const uint32 Nextline = srcPitch >> 1;
 
-		while (height--) {
-			bP = (const uint16 *)srcPtr;
-			dP = dstPtr;
-			for (uint32 finish = width; finish; finish -= inc_bP) {
-				uint32 color4, color5, color6;
-				uint32 color1, color2, color3;
-				uint32 colorA1, colorA2, colorB1, colorB2, colorS1, colorS2;
-				uint32 product1a, product1b, product2a, product2b;
+	while (height--) {
+		bP = (const uint16 *)srcPtr;
+		dP = dstPtr;
+		for (uint32 finish = width; finish; finish -= inc_bP) {
+			uint32 color4, color5, color6;
+			uint32 color1, color2, color3;
+			uint32 colorA1, colorA2, colorB1, colorB2, colorS1, colorS2;
+			uint32 product1a, product1b, product2a, product2b;
 
-				colorB1 = *(bP - Nextline);
-				colorB2 = *(bP - Nextline + 1);
+			colorB1 = *(bP - Nextline);
+			colorB2 = *(bP - Nextline + 1);
 
-				color4 = *(bP - 1);
-				color5 = *(bP);
-				color6 = *(bP + 1);
-				colorS2 = *(bP + 2);
+			color4 = *(bP - 1);
+			color5 = *(bP);
+			color6 = *(bP + 1);
+			colorS2 = *(bP + 2);
 
-				color1 = *(bP + Nextline - 1);
-				color2 = *(bP + Nextline);
-				color3 = *(bP + Nextline + 1);
-				colorS1 = *(bP + Nextline + 2);
+			color1 = *(bP + Nextline - 1);
+			color2 = *(bP + Nextline);
+			color3 = *(bP + Nextline + 1);
+			colorS1 = *(bP + Nextline + 2);
 
-				colorA1 = *(bP + Nextline + Nextline);
-				colorA2 = *(bP + Nextline + Nextline + 1);
+			colorA1 = *(bP + Nextline + Nextline);
+			colorA2 = *(bP + Nextline + Nextline + 1);
 
-				// --------------------------------------
-				if (color2 == color6 && color5 != color3) {
-					product1b = product2a = color2;
-					if ((color1 == color2) || (color6 == colorB2)) {
-						product1a = INTERPOLATE(color2, color5);
-						product1a = INTERPOLATE(color2, product1a);
-					} else {
-						product1a = INTERPOLATE(color5, color6);
-					}
+			// --------------------------------------
+			if (color2 == color6 && color5 != color3) {
+				product1b = product2a = color2;
+				if ((color1 == color2) || (color6 == colorB2)) {
+					product1a = INTERPOLATE(color2, color5);
+					product1a = INTERPOLATE(color2, product1a);
+				} else {
+					product1a = INTERPOLATE(color5, color6);
+				}
 
-					if ((color6 == colorS2) || (color2 == colorA1)) {
-						product2b = INTERPOLATE(color2, color3);
-						product2b = INTERPOLATE(color2, product2b);
-					} else {
-						product2b = INTERPOLATE(color2, color3);
-					}
-				} else if (color5 == color3 && color2 != color6) {
-					product2b = product1a = color5;
+				if ((color6 == colorS2) || (color2 == colorA1)) {
+					product2b = INTERPOLATE(color2, color3);
+					product2b = INTERPOLATE(color2, product2b);
+				} else {
+					product2b = INTERPOLATE(color2, color3);
+				}
+			} else if (color5 == color3 && color2 != color6) {
+				product2b = product1a = color5;
 
-					if ((colorB1 == color5) || (color3 == colorS1)) {
-						product1b = INTERPOLATE(color5, color6);
-						product1b = INTERPOLATE(color5, product1b);
-					} else {
-						product1b = INTERPOLATE(color5, color6);
-					}
+				if ((colorB1 == color5) || (color3 == colorS1)) {
+					product1b = INTERPOLATE(color5, color6);
+					product1b = INTERPOLATE(color5, product1b);
+				} else {
+					product1b = INTERPOLATE(color5, color6);
+				}
 
-					if ((color3 == colorA2) || (color4 == color5)) {
-						product2a = INTERPOLATE(color5, color2);
-						product2a = INTERPOLATE(color5, product2a);
-					} else {
-						product2a = INTERPOLATE(color2, color3);
-					}
+				if ((color3 == colorA2) || (color4 == color5)) {
+					product2a = INTERPOLATE(color5, color2);
+					product2a = INTERPOLATE(color5, product2a);
+				} else {
+					product2a = INTERPOLATE(color2, color3);
+				}
 
-				} else if (color5 == color3 && color2 == color6) {
-					register int r = 0;
+			} else if (color5 == color3 && color2 == color6) {
+				register int r = 0;
 
-					r += GetResult(color6, color5, color1, colorA1);
-					r += GetResult(color6, color5, color4, colorB1);
-					r += GetResult(color6, color5, colorA2, colorS1);
-					r += GetResult(color6, color5, colorB2, colorS2);
+				r += GetResult(color6, color5, color1, colorA1);
+				r += GetResult(color6, color5, color4, colorB1);
+				r += GetResult(color6, color5, colorA2, colorS1);
+				r += GetResult(color6, color5, colorB2, colorS2);
 
-					if (r > 0) {
-						product1b = product2a = color2;
-						product1a = product2b = INTERPOLATE(color5, color6);
-					} else if (r < 0) {
-						product2b = product1a = color5;
-						product1b = product2a = INTERPOLATE(color5, color6);
-					} else {
-						product2b = product1a = color5;
-						product1b = product2a = color2;
-					}
+				if (r > 0) {
+					product1b = product2a = color2;
+					product1a = product2b = INTERPOLATE(color5, color6);
+				} else if (r < 0) {
+					product2b = product1a = color5;
+					product1b = product2a = INTERPOLATE(color5, color6);
 				} else {
-					product2b = product1a = INTERPOLATE(color2, color6);
-					product2b = Q_INTERPOLATE(color3, color3, color3, product2b);
-					product1a = Q_INTERPOLATE(color5, color5, color5, product1a);
-
-					product2a = product1b = INTERPOLATE(color5, color3);
-					product2a = Q_INTERPOLATE(color2, color2, color2, product2a);
-					product1b = Q_INTERPOLATE(color6, color6, color6, product1b);
+					product2b = product1a = color5;
+					product1b = product2a = color2;
 				}
+			} else {
+				product2b = product1a = INTERPOLATE(color2, color6);
+				product2b = Q_INTERPOLATE(color3, color3, color3, product2b);
+				product1a = Q_INTERPOLATE(color5, color5, color5, product1a);
+
+				product2a = product1b = INTERPOLATE(color5, color3);
+				product2a = Q_INTERPOLATE(color2, color2, color2, product2a);
+				product1b = Q_INTERPOLATE(color6, color6, color6, product1b);
+			}
 #ifdef SCUMM_LITTLE_ENDIAN
-				product1a = product1a | (product1b << 16);
-				product2a = product2a | (product2b << 16);
+			product1a = product1a | (product1b << 16);
+			product2a = product2a | (product2b << 16);
 #endif
 
 #ifdef SCUMM_BIG_ENDIAN
-				product1a = product1b | (product1a << 16);
-				product2a = product2b | (product2a << 16);
+			product1a = product1b | (product1a << 16);
+			product2a = product2b | (product2a << 16);
 #endif
-				*((uint32 *)dP) = product1a;
-				*((uint32 *)(dP + dstPitch)) = product2a;
+			*((uint32 *)dP) = product1a;
+			*((uint32 *)(dP + dstPitch)) = product2a;
 
-				bP += inc_bP;
-				dP += sizeof(uint32);
-			}													// end of for ( finish= width etc..)
+			bP += inc_bP;
+			dP += sizeof(uint32);
+		}													// end of for ( finish= width etc..)
 
-			srcPtr += srcPitch;
-			dstPtr += dstPitch * 2;
-		}														// endof: while (height--)
-	}
+		srcPtr += srcPitch;
+		dstPtr += dstPitch * 2;
+	}														// endof: while (height--)
 }
 
 void _2xSaI(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch, int width, int height) {
 	uint8 *dP;
 	const uint16 *bP;
-	uint32 inc_bP;
-
-	{
-		inc_bP = 1;
-
-		uint32 Nextline = srcPitch >> 1;
+	const uint32 inc_bP = 1;
+	const uint32 Nextline = srcPitch >> 1;
 
-		while (height--) {
-			bP = (const uint16 *)srcPtr;
-			dP = dstPtr;
+	while (height--) {
+		bP = (const uint16 *)srcPtr;
+		dP = dstPtr;
 
-			for (uint32 finish = width; finish; finish -= inc_bP) {
+		for (uint32 finish = width; finish; finish -= inc_bP) {
 
-				register uint32 colorA, colorB;
-				uint32 colorC, colorD,
-					colorE, colorF, colorG, colorH, colorI, colorJ, colorK, colorL, colorM, colorN, colorO, colorP;
-				uint32 product, product1, product2;
+			register uint32 colorA, colorB;
+			uint32 colorC, colorD,
+				colorE, colorF, colorG, colorH, colorI, colorJ, colorK, colorL, colorM, colorN, colorO, colorP;
+			uint32 product, product1, product2;
 
 //---------------------------------------
 // Map of the pixels:                    I|E F|J
 //                                       G|A B|K
 //                                       H|C D|L
 //                                       M|N O|P
-				colorI = *(bP - Nextline - 1);
-				colorE = *(bP - Nextline);
-				colorF = *(bP - Nextline + 1);
-				colorJ = *(bP - Nextline + 2);
+			colorI = *(bP - Nextline - 1);
+			colorE = *(bP - Nextline);
+			colorF = *(bP - Nextline + 1);
+			colorJ = *(bP - Nextline + 2);
 
-				colorG = *(bP - 1);
-				colorA = *(bP);
-				colorB = *(bP + 1);
-				colorK = *(bP + 2);
+			colorG = *(bP - 1);
+			colorA = *(bP);
+			colorB = *(bP + 1);
+			colorK = *(bP + 2);
 
-				colorH = *(bP + Nextline - 1);
-				colorC = *(bP + Nextline);
-				colorD = *(bP + Nextline + 1);
-				colorL = *(bP + Nextline + 2);
+			colorH = *(bP + Nextline - 1);
+			colorC = *(bP + Nextline);
+			colorD = *(bP + Nextline + 1);
+			colorL = *(bP + Nextline + 2);
 
-				colorM = *(bP + Nextline + Nextline - 1);
-				colorN = *(bP + Nextline + Nextline);
-				colorO = *(bP + Nextline + Nextline + 1);
-				colorP = *(bP + Nextline + Nextline + 2);
+			colorM = *(bP + Nextline + Nextline - 1);
+			colorN = *(bP + Nextline + Nextline);
+			colorO = *(bP + Nextline + Nextline + 1);
+			colorP = *(bP + Nextline + Nextline + 2);
 
-				if ((colorA == colorD) && (colorB != colorC)) {
-					if (((colorA == colorE) && (colorB == colorL)) || ((colorA == colorC) && (colorA == colorF)
-																														 && (colorB != colorE)
-																														 && (colorB == colorJ))) {
-						product = colorA;
-					} else {
-						product = INTERPOLATE(colorA, colorB);
-					}
+			if ((colorA == colorD) && (colorB != colorC)) {
+				if (((colorA == colorE) && (colorB == colorL)) || ((colorA == colorC) && (colorA == colorF)
+																													 && (colorB != colorE)
+																													 && (colorB == colorJ))) {
+					product = colorA;
+				} else {
+					product = INTERPOLATE(colorA, colorB);
+				}
 
-					if (((colorA == colorG) && (colorC == colorO)) || ((colorA == colorB) && (colorA == colorH)
-																														 && (colorG != colorC)
-																														 && (colorC == colorM))) {
-						product1 = colorA;
-					} else {
-						product1 = INTERPOLATE(colorA, colorC);
-					}
-					product2 = colorA;
-				} else if ((colorB == colorC) && (colorA != colorD)) {
-					if (((colorB == colorF) && (colorA == colorH)) || ((colorB == colorE) && (colorB == colorD)
-																														 && (colorA != colorF)
-																														 && (colorA == colorI))) {
-						product = colorB;
-					} else {
-						product = INTERPOLATE(colorA, colorB);
-					}
+				if (((colorA == colorG) && (colorC == colorO)) || ((colorA == colorB) && (colorA == colorH)
+																													 && (colorG != colorC)
+																													 && (colorC == colorM))) {
+					product1 = colorA;
+				} else {
+					product1 = INTERPOLATE(colorA, colorC);
+				}
+				product2 = colorA;
+			} else if ((colorB == colorC) && (colorA != colorD)) {
+				if (((colorB == colorF) && (colorA == colorH)) || ((colorB == colorE) && (colorB == colorD)
+																													 && (colorA != colorF)
+																													 && (colorA == colorI))) {
+					product = colorB;
+				} else {
+					product = INTERPOLATE(colorA, colorB);
+				}
 
-					if (((colorC == colorH) && (colorA == colorF)) || ((colorC == colorG) && (colorC == colorD)
-																														 && (colorA != colorH)
-																														 && (colorA == colorI))) {
-						product1 = colorC;
-					} else {
-						product1 = INTERPOLATE(colorA, colorC);
-					}
-					product2 = colorB;
-				} else if ((colorA == colorD) && (colorB == colorC)) {
-					if (colorA == colorB) {
-						product = colorA;
-						product1 = colorA;
-						product2 = colorA;
-					} else {
-						register int r = 0;
+				if (((colorC == colorH) && (colorA == colorF)) || ((colorC == colorG) && (colorC == colorD)
+																													 && (colorA != colorH)
+																													 && (colorA == colorI))) {
+					product1 = colorC;
+				} else {
+					product1 = INTERPOLATE(colorA, colorC);
+				}
+				product2 = colorB;
+			} else if ((colorA == colorD) && (colorB == colorC)) {
+				if (colorA == colorB) {
+					product = colorA;
+					product1 = colorA;
+					product2 = colorA;
+				} else {
+					register int r = 0;
 
-						product1 = INTERPOLATE(colorA, colorC);
-						product = INTERPOLATE(colorA, colorB);
+					product1 = INTERPOLATE(colorA, colorC);
+					product = INTERPOLATE(colorA, colorB);
 
-						r += GetResult1(colorA, colorB, colorG, colorE, colorI);
-						r += GetResult2(colorB, colorA, colorK, colorF, colorJ);
-						r += GetResult2(colorB, colorA, colorH, colorN, colorM);
-						r += GetResult1(colorA, colorB, colorL, colorO, colorP);
+					r += GetResult(colorA, colorB, colorG, colorE);
+					r -= GetResult(colorB, colorA, colorK, colorF);
+					r -= GetResult(colorB, colorA, colorH, colorN);
+					r += GetResult(colorA, colorB, colorL, colorO);
 
-						if (r > 0)
-							product2 = colorA;
-						else if (r < 0)
-							product2 = colorB;
-						else {
-							product2 = Q_INTERPOLATE(colorA, colorB, colorC, colorD);
-						}
+					if (r > 0)
+						product2 = colorA;
+					else if (r < 0)
+						product2 = colorB;
+					else {
+						product2 = Q_INTERPOLATE(colorA, colorB, colorC, colorD);
 					}
-				} else {
-					product2 = Q_INTERPOLATE(colorA, colorB, colorC, colorD);
+				}
+			} else {
+				product2 = Q_INTERPOLATE(colorA, colorB, colorC, colorD);
 
-					if ((colorA == colorC) && (colorA == colorF)
-							&& (colorB != colorE) && (colorB == colorJ)) {
-						product = colorA;
-					} else if ((colorB == colorE) && (colorB == colorD)
-										 && (colorA != colorF) && (colorA == colorI)) {
-						product = colorB;
-					} else {
-						product = INTERPOLATE(colorA, colorB);
-					}
+				if ((colorA == colorC) && (colorA == colorF)
+						&& (colorB != colorE) && (colorB == colorJ)) {
+					product = colorA;
+				} else if ((colorB == colorE) && (colorB == colorD)
+									 && (colorA != colorF) && (colorA == colorI)) {
+					product = colorB;
+				} else {
+					product = INTERPOLATE(colorA, colorB);
+				}
 
-					if ((colorA == colorB) && (colorA == colorH)
-							&& (colorG != colorC) && (colorC == colorM)) {
-						product1 = colorA;
-					} else if ((colorC == colorG) && (colorC == colorD)
-										 && (colorA != colorH) && (colorA == colorI)) {
-						product1 = colorC;
-					} else {
-						product1 = INTERPOLATE(colorA, colorC);
-					}
+				if ((colorA == colorB) && (colorA == colorH)
+						&& (colorG != colorC) && (colorC == colorM)) {
+					product1 = colorA;
+				} else if ((colorC == colorG) && (colorC == colorD)
+									 && (colorA != colorH) && (colorA == colorI)) {
+					product1 = colorC;
+				} else {
+					product1 = INTERPOLATE(colorA, colorC);
 				}
+			}
 
 #ifdef SCUMM_LITTLE_ENDIAN
-				product = colorA | (product << 16);
-				product1 = product1 | (product2 << 16);
+			product = colorA | (product << 16);
+			product1 = product1 | (product2 << 16);
 #endif
 
 #ifdef SCUMM_BIG_ENDIAN
-				product = (colorA << 16) | product;
-				product1 = (product1 << 16) | product2;
+			product = (colorA << 16) | product;
+			product1 = (product1 << 16) | product2;
 #endif
-				*((int32 *)dP) = product;
-				*((uint32 *)(dP + dstPitch)) = product1;
-
-				bP += inc_bP;
-				dP += sizeof(uint32);
-			}													// end of for ( finish= width etc..)
-
-			srcPtr += srcPitch;
-			dstPtr += dstPitch * 2;
-		}														// endof: while (height--)
-	}
-}
-
-static uint32 Bilinear(uint32 A, uint32 B, uint32 x) {
-	unsigned long areaA, areaB;
-	unsigned long result;
-
-	if (A == B)
-		return A;
-
-	areaB = (x >> 11) & 0x1f;			// reduce 16 bit fraction to 5 bits
-	areaA = 0x20 - areaB;
-
-	A = (A & redblueMask) | ((A & greenMask) << 16);
-	B = (B & redblueMask) | ((B & greenMask) << 16);
-
-	result = ((areaA * A) + (areaB * B)) >> 5;
-
-	return (result & redblueMask) | ((result >> 16) & greenMask);
-}
-
-static uint32 Bilinear4(uint32 A, uint32 B, uint32 C, uint32 D, uint32 x, uint32 y) {
-	unsigned long areaA, areaB, areaC, areaD;
-	unsigned long result, xy;
-
-	x = (x >> 11) & 0x1f;
-	y = (y >> 11) & 0x1f;
-	xy = (x * y) >> 5;
-
-	A = (A & redblueMask) | ((A & greenMask) << 16);
-	B = (B & redblueMask) | ((B & greenMask) << 16);
-	C = (C & redblueMask) | ((C & greenMask) << 16);
-	D = (D & redblueMask) | ((D & greenMask) << 16);
-
-	areaA = 0x20 + xy - x - y;
-	areaB = x - xy;
-	areaC = y - xy;
-	areaD = xy;
-
-	result = ((areaA * A) + (areaB * B) + (areaC * C) + (areaD * D)) >> 5;
-
-	return (result & redblueMask) | ((result >> 16) & greenMask);
-}
-
-// FIXME: Scale_2xSaI is not used anywhere; however, contrary to the _2xSaI function,
-// it seems to allow for arbitrary scale factors, not just 2x... hence I leave this in
-// for now, as that seems to be a very useful feature
-void Scale_2xSaI(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,
-								 uint32 dstWidth, uint32 dstHeight, int width, int height) {
-	uint8 *dP;
-	const uint16 *bP;
-
-	uint32 w;
-	uint32 h;
-	uint32 dw;
-	uint32 dh;
-	uint32 hfinish;
-	uint32 wfinish;
-
-	uint32 Nextline = srcPitch >> 1;
-
-	wfinish = (width - 1) << 16;	// convert to fixed point
-	dw = wfinish / (dstWidth - 1);
-	hfinish = (height - 1) << 16;	// convert to fixed point
-	dh = hfinish / (dstHeight - 1);
-
-	for (h = 0; h < hfinish; h += dh) {
-		uint32 y1, y2;
-
-		y1 = h & 0xffff;						// fraction part of fixed point
-		bP = (const uint16 *)(srcPtr + ((h >> 16) * srcPitch));
-		dP = dstPtr;
-		y2 = 0x10000 - y1;
-
-		w = 0;
-
-		for (; w < wfinish;) {
-			uint32 A, B, C, D;
-			uint32 E, F, G, H;
-			uint32 I, J, K, L;
-			uint32 x1, x2, a1, f1, f2;
-			uint32 position, product1 = 0;
-
-			position = w >> 16;
-			A = bP[position];					// current pixel
-			B = bP[position + 1];			// next pixel
-			C = bP[position + Nextline];
-			D = bP[position + Nextline + 1];
-			E = bP[position - Nextline];
-			F = bP[position - Nextline + 1];
-			G = bP[position - 1];
-			H = bP[position + Nextline - 1];
-			I = bP[position + 2];
-			J = bP[position + Nextline + 2];
-			K = bP[position + Nextline + Nextline];
-			L = bP[position + Nextline + Nextline + 1];
-
-			x1 = w & 0xffff;					// fraction part of fixed point
-			x2 = 0x10000 - x1;
+			*((int32 *)dP) = product;
+			*((uint32 *)(dP + dstPitch)) = product1;
 
-			/*0 */
-			if (A == B && C == D && A == C)
-				product1 = A;
-			else
-				/*1 */
-			if (A == D && B != C) {
-				f1 = (x1 >> 1) + (0x10000 >> 2);
-				f2 = (y1 >> 1) + (0x10000 >> 2);
-				if (y1 <= f1 && A == J && A != E)	// close to B
-				{
-					a1 = f1 - y1;
-					product1 = Bilinear(A, B, a1);
-				} else if (y1 >= f1 && A == G && A != L)	// close to C
-				{
-					a1 = y1 - f1;
-					product1 = Bilinear(A, C, a1);
-				} else if (x1 >= f2 && A == E && A != J)	// close to B
-				{
-					a1 = x1 - f2;
-					product1 = Bilinear(A, B, a1);
-				} else if (x1 <= f2 && A == L && A != G)	// close to C
-				{
-					a1 = f2 - x1;
-					product1 = Bilinear(A, C, a1);
-				} else if (y1 >= x1)		// close to C
-				{
-					a1 = y1 - x1;
-					product1 = Bilinear(A, C, a1);
-				} else if (y1 <= x1)		// close to B
-				{
-					a1 = x1 - y1;
-					product1 = Bilinear(A, B, a1);
-				}
-			} else
-				/*2 */
-			if (B == C && A != D) {
-				f1 = (x1 >> 1) + (0x10000 >> 2);
-				f2 = (y1 >> 1) + (0x10000 >> 2);
-				if (y2 >= f1 && B == H && B != F)	// close to A
-				{
-					a1 = y2 - f1;
-					product1 = Bilinear(B, A, a1);
-				} else if (y2 <= f1 && B == I && B != K)	// close to D
-				{
-					a1 = f1 - y2;
-					product1 = Bilinear(B, D, a1);
-				} else if (x2 >= f2 && B == F && B != H)	// close to A
-				{
-					a1 = x2 - f2;
-					product1 = Bilinear(B, A, a1);
-				} else if (x2 <= f2 && B == K && B != I)	// close to D
-				{
-					a1 = f2 - x2;
-					product1 = Bilinear(B, D, a1);
-				} else if (y2 >= x1)		// close to A
-				{
-					a1 = y2 - x1;
-					product1 = Bilinear(B, A, a1);
-				} else if (y2 <= x1)		// close to D
-				{
-					a1 = x1 - y2;
-					product1 = Bilinear(B, D, a1);
-				}
-			}
-			/*3 */
-			else {
-				product1 = Bilinear4(A, B, C, D, x1, y1);
-			}
+			bP += inc_bP;
+			dP += sizeof(uint32);
+		}													// end of for ( finish= width etc..)
 
-//end First Pixel
-			*(uint32 *)dP = product1;
-			dP += 2;
-			w += dw;
-		}
-		dstPtr += dstPitch;
-	}
+		srcPtr += srcPitch;
+		dstPtr += dstPitch * 2;
+	}														// endof: while (height--)
 }
 
 void AdvMame2x(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr, uint32 dstPitch,

Index: scaler.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler.h,v
retrieving revision 1.7.2.1
retrieving revision 1.7.2.2
diff -u -d -r1.7.2.1 -r1.7.2.2

Index: scummsys.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scummsys.h,v
retrieving revision 1.21
retrieving revision 1.21.2.1
diff -u -d -r1.21 -r1.21.2.1
--- scummsys.h	30 Apr 2003 13:40:20 -0000	1.21
+++ scummsys.h	26 May 2003 12:51:55 -0000	1.21.2.1
@@ -23,9 +23,12 @@
 #define SCUMMSYS_H
 
 #include <stdlib.h>
+#include <stdio.h>
 
 // TODO - use config.h, generated by configure
-//#include "config.h"
+#if defined(HAVE_CONFIG_H)
+#include "config.h"
+#endif
 
 #if defined(USE_MAD) || defined(USE_VORBIS)
 #define COMPRESSED_SOUND_FILE
@@ -123,7 +126,7 @@
 	#define FORCEINLINE inline
 	#define CDECL 
 
-	#ifndef CONFIG_H
+	#ifndef HAVE_CONFIG_H
 	typedef unsigned char byte;
 	typedef unsigned char uint8;
 	typedef unsigned short uint16;
@@ -316,31 +319,31 @@
 
 	#if defined(SCUMM_NEED_ALIGNMENT)
 		FORCEINLINE uint READ_LE_UINT16(const void *ptr) {
-			return (((byte *)ptr)[1] << 8)|((byte *)ptr)[0];
+			return (((const byte *)ptr)[1] << 8)|((const byte *)ptr)[0];
 		}
 	#else
 		FORCEINLINE uint READ_LE_UINT16(const void *ptr) {
-			return *(uint16 *)(ptr);
+			return *(const uint16 *)(ptr);
 		}
 	#endif
 
 	FORCEINLINE uint READ_BE_UINT16(const void *ptr) {
-		return (((byte *)ptr)[0] << 8)|((byte *)ptr)[1];
+		return (((const byte *)ptr)[0] << 8)|((const byte *)ptr)[1];
 	}
 
 	#if defined(SCUMM_NEED_ALIGNMENT)
 		FORCEINLINE uint32 READ_LE_UINT32(const void *ptr) {
-			byte *b = (byte *)ptr;
+			const byte *b = (const byte *)ptr;
 			return (b[3] << 24) + (b[2] <<16) + (b[1] << 8) + (b[0]);
 		}
 	#else
 		FORCEINLINE uint32 READ_LE_UINT32(const void *ptr) {
-			return *(uint32 *)(ptr);
+			return *(const uint32 *)(ptr);
 		}
 	#endif
 	
 	FORCEINLINE uint32 READ_BE_UINT32(const void *ptr) {
-		byte *b = (byte *)ptr;
+		const byte *b = (const byte *)ptr;
 		return (b[0] << 24) + (b[1] << 16) + (b[2] << 8) + (b[3]);
 	}
 
@@ -357,7 +360,7 @@
 
 	#define TO_BE_32(a) SWAP_BYTES(a)
 
-	uint16 FORCEINLINE TO_BE_16(uint16 a) { return (a >> 8) | (a << 8); }
+	FORCEINLINE uint16 TO_BE_16(uint16 a) { return (a >> 8) | (a << 8); }
 
 #elif defined(SCUMM_BIG_ENDIAN)
 
@@ -365,42 +368,42 @@
 	#define MKID_BE(a) (a)
 	//#define MKID_BE(a) SWAP_BYTES(a)
 
-	uint32 FORCEINLINE FROM_LE_32(uint32 a) {
+	FORCEINLINE uint32 FROM_LE_32(uint32 a) {
 		return ((a >> 24) & 0xFF) + ((a >> 8) & 0xFF00) + (( a<< 8) & 0xFF0000) \
 						+ ((a<<24)&0xFF000000);
 	}
 
-	uint16 FORCEINLINE FROM_LE_16(uint16 a) {
+	FORCEINLINE uint16 FROM_LE_16(uint16 a) {
 		return ((a >> 8) & 0xFF) + ((a << 8) & 0xFF00);
 	}
 
 	#define TO_LE_32 FROM_LE_32
 	#define TO_LE_16 FROM_LE_16
 
-	uint32 FORCEINLINE READ_LE_UINT32(const void *ptr) {
-		byte *b = (byte *)ptr;
+	FORCEINLINE uint32 READ_LE_UINT32(const void *ptr) {
+		const byte *b = (const byte *)ptr;
 		return (b[3] << 24) + (b[2] << 16) + (b[1] << 8) + (b[0]);
 	}
 
-	uint32 FORCEINLINE READ_BE_UINT32(const void *ptr) {
-		return *(uint32 *)(ptr);
+	FORCEINLINE uint32 READ_BE_UINT32(const void *ptr) {
+		return *(const uint32 *)(ptr);
 	}
 
-	uint FORCEINLINE READ_LE_UINT16(const void *ptr) {
-		byte *b = (byte *)ptr;
+	FORCEINLINE uint READ_LE_UINT16(const void *ptr) {
+		const byte *b = (const byte *)ptr;
 		return (b[1] << 8) + b[0];
 	}
 
-	uint FORCEINLINE READ_BE_UINT16(const void *ptr) {
-		return *(uint16 *)(ptr);
+	FORCEINLINE uint READ_BE_UINT16(const void *ptr) {
+		return *(const uint16 *)(ptr);
 	}
 
-	uint FORCEINLINE READ_BE_UINT16_UNALIGNED(const void *ptr) {
-		return (((byte *)ptr)[0] << 8)|((byte *)ptr)[1];
+	FORCEINLINE uint READ_BE_UINT16_UNALIGNED(const void *ptr) {
+		return (((const byte *)ptr)[0] << 8)|((const byte *)ptr)[1];
 	}
 
-	uint32 FORCEINLINE READ_BE_UINT32_UNALIGNED(const void *ptr) {
-		byte *b = (byte*)ptr;
+	FORCEINLINE uint32 READ_BE_UINT32_UNALIGNED(const void *ptr) {
+		const byte *b = (const byte*)ptr;
 		return (b[0] << 24) + (b[1] << 16) + (b[2] << 8) + (b[3]);
 	}
 

Index: str.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/str.cpp,v
retrieving revision 1.15
retrieving revision 1.15.2.1
diff -u -d -r1.15 -r1.15.2.1
--- str.cpp	6 Mar 2003 21:45:29 -0000	1.15
+++ str.cpp	26 May 2003 12:51:55 -0000	1.15.2.1
@@ -59,7 +59,7 @@
 	}
 }
 
-String::String(const String &str) {
+String::String(const String &str) : ConstString() {
 	++(*str._refCount);
 
 	_refCount = str._refCount;

Index: str.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/str.h,v
retrieving revision 1.10
retrieving revision 1.10.2.1
diff -u -d -r1.10 -r1.10.2.1
--- str.h	6 Mar 2003 21:45:29 -0000	1.10
+++ str.h	26 May 2003 12:51:55 -0000	1.10.2.1
@@ -49,7 +49,7 @@
 
 public:
 	ConstString() : _str(0), _len(0) {}
-	ConstString(const char *str, int len = -1) : _str((char *)str) { _len = str ? (len >= 0 ? len : strlen(str)) : 0; }
+//	ConstString(const char *str, int len = -1) : _str((char *)str) { _len = str ? (len >= 0 ? len : strlen(str)) : 0; }
 	virtual ~ConstString() {}
 	
 	bool operator ==(const ConstString &x) const;

Index: util.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/util.cpp,v
retrieving revision 1.13
retrieving revision 1.13.2.1
diff -u -d -r1.13 -r1.13.2.1
--- util.cpp	4 May 2003 13:46:06 -0000	1.13
+++ util.cpp	26 May 2003 12:51:55 -0000	1.13.2.1
@@ -85,7 +85,7 @@
 //
 // Reset the blending cache
 //
-void ClearBlendCache(byte *palette, int weight) {
+void ClearBlendCache() {
 #ifndef NEWGUI_256
 	for (int i = 0; i < 256; i++)
 		for (int j = 0 ; j < 256 ; j++)

Index: util.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/util.h,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -d -r1.14 -r1.14.2.1
--- util.h	4 May 2003 13:46:06 -0000	1.14
+++ util.h	26 May 2003 12:51:55 -0000	1.14.2.1
@@ -35,12 +35,14 @@
 #define MAX(a,b) (((a) > (b)) ? (a) : (b))
 #endif
 
-static inline void SWAP(int &a, int &b) { int tmp = a; a = b; b = tmp; }
-#define ARRAYSIZE(x) (sizeof(x) / sizeof(x[0]))
+template<class T>
+static inline void SWAP(T &a, T &b) { T tmp = a; a = b; b = tmp; }
+
+#define ARRAYSIZE(x) ((int)(sizeof(x) / sizeof(x[0])))
 
 int RGBMatch(byte *palette, int r, int g, int b);
 int Blend(int src, int dst, byte *palette);
-void ClearBlendCache(byte *palette, int weight);
+void ClearBlendCache();
 
 /*
  * Print hexdump of the data passed in





More information about the Scummvm-git-logs mailing list