[Scummvm-cvs-logs] scummvm master -> 511f833032ffa27045fbf5ab6422f1f6831afcb7

somaen einarjohants at gmail.com
Wed Feb 6 13:41:30 CET 2013


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
74e32bd332 WINTERMUTE: Privatize a few more members in BaseGame.
09303f6d1a WINTERMUTE: Get rid of BaseImage.h inclusion in BaseGame.
511f833032 WINTERMUTE: Use case-insensitive path-lookup when opening DiskFiles.


Commit: 74e32bd3329b8d7b19d97ddff140fb23b901c2d6
    https://github.com/scummvm/scummvm/commit/74e32bd3329b8d7b19d97ddff140fb23b901c2d6
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-02-06T04:40:35-08:00

Commit Message:
WINTERMUTE: Privatize a few more members in BaseGame.

Changed paths:
    engines/wintermute/ad/ad_item.cpp
    engines/wintermute/ad/ad_object.cpp
    engines/wintermute/ad/ad_response_box.cpp
    engines/wintermute/ad/ad_scene.cpp
    engines/wintermute/base/base_game.h
    engines/wintermute/ui/ui_button.cpp
    engines/wintermute/ui/ui_edit.cpp
    engines/wintermute/ui/ui_text.cpp



diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp
index 1bd7692..8534956 100644
--- a/engines/wintermute/ad/ad_item.cpp
+++ b/engines/wintermute/ad/ad_item.cpp
@@ -435,7 +435,7 @@ bool AdItem::display(int x, int y) {
 		}
 		amountX += _amountOffsetX;
 
-		BaseFont *font = _font ? _font : _gameRef->_systemFont;
+		BaseFont *font = _font ? _font : _gameRef->getSystemFont();
 		if (font) {
 			if (_amountString) {
 				font->drawText((byte *)_amountString, amountX, amountY, width, _amountAlign);
diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index 2dddc6f..a41ed9f 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -907,7 +907,7 @@ void AdObject::talk(const char *text, const char *sound, uint32 duration, const
 	_sentence->_align = Align;
 	_sentence->_startTime = _gameRef->_timer;
 	_sentence->_currentStance = -1;
-	_sentence->_font = _font == nullptr ? _gameRef->_systemFont : _font;
+	_sentence->_font = _font == nullptr ? _gameRef->getSystemFont() : _font;
 	_sentence->_freezable = _freezable;
 
 	// try to locate speech file automatically
diff --git a/engines/wintermute/ad/ad_response_box.cpp b/engines/wintermute/ad/ad_response_box.cpp
index c889f56..c891d2a 100644
--- a/engines/wintermute/ad/ad_response_box.cpp
+++ b/engines/wintermute/ad/ad_response_box.cpp
@@ -163,8 +163,8 @@ bool AdResponseBox::createButtons() {
 			// textual
 			else {
 				btn->setText(_responses[i]->_text);
-				btn->_font = (_font == nullptr) ? _gameRef->_systemFont : _font;
-				btn->_fontHover = (_fontHover == nullptr) ? _gameRef->_systemFont : _fontHover;
+				btn->_font = (_font == nullptr) ? _gameRef->getSystemFont() : _font;
+				btn->_fontHover = (_fontHover == nullptr) ? _gameRef->getSystemFont() : _fontHover;
 				btn->_fontPress = btn->_fontHover;
 				btn->_align = _align;
 
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index f0e26e7..f305c2f 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -1138,8 +1138,8 @@ bool AdScene::updateFreeObjects() {
 	}
 
 
-	if (_autoScroll && _gameRef->_mainObject != nullptr) {
-		scrollToObject(_gameRef->_mainObject);
+	if (_autoScroll && _gameRef->getMainObject() != nullptr) {
+		scrollToObject(_gameRef->getMainObject());
 	}
 
 
@@ -1285,7 +1285,7 @@ void AdScene::scrollTo(int offsetX, int offsetY) {
 	_targetOffsetTop = MIN(_targetOffsetTop, _height - viewportHeight);
 
 
-	if (_gameRef->_mainObject && _gameRef->_mainObject->_is3D) {
+	if (_gameRef->getMainObject() && _gameRef->getMainObject()->_is3D) {
 		if (abs(origOffsetLeft - _targetOffsetLeft) < 5) {
 			_targetOffsetLeft = origOffsetLeft;
 		}
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index a902727..5666fb8 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -119,14 +119,15 @@ public:
 	int _offsetX;
 	float _offsetPercentX;
 	float _offsetPercentY;
-	BaseObject *_mainObject;
+
+	inline BaseObject *getMainObject() { return _mainObject; }
+	inline BaseFont *getSystemFont() { return _systemFont; }
 
 	bool initInput();
 	bool initLoop();
 	uint32 _currentTime;
 	uint32 _deltaTime;
-	BaseFont *_systemFont;
-	BaseFont *_videoFont;
+
 	bool initialize1();
 	bool initialize2();
 	bool initialize3();
@@ -249,6 +250,9 @@ public:
 	bool _touchInterface;
 	bool _constrainedMemory;
 protected:
+	BaseFont *_systemFont;
+	BaseFont *_videoFont;
+
 	BaseSprite *_loadingIcon;
 	int _loadingIconX;
 	int _loadingIconY;
@@ -260,6 +264,8 @@ protected:
 	VideoPlayer *_videoPlayer;
 	VideoTheoraPlayer *_theoraPlayer;
 private:
+	BaseObject *_mainObject;
+
 	bool _mouseRightDown;
 	bool _mouseMidlleDown;
 	bool _settingsRequireAcceleration;
diff --git a/engines/wintermute/ui/ui_button.cpp b/engines/wintermute/ui/ui_button.cpp
index 2c356b2..6ee577f 100644
--- a/engines/wintermute/ui/ui_button.cpp
+++ b/engines/wintermute/ui/ui_button.cpp
@@ -622,15 +622,15 @@ void UIButton::correctSize() {
 	}
 
 	if (_text) {
-		int text_height;
+		int textHeight;
 		if (_font) {
-			text_height = _font->getTextHeight((byte *)_text, _width);
+			textHeight = _font->getTextHeight((byte *)_text, _width);
 		} else {
-			text_height = _gameRef->_systemFont->getTextHeight((byte *)_text, _width);
+			textHeight = _gameRef->getSystemFont()->getTextHeight((byte *)_text, _width);
 		}
 
-		if (text_height > _height) {
-			_height = text_height;
+		if (textHeight > _height) {
+			_height = textHeight;
 		}
 	}
 
@@ -717,7 +717,7 @@ bool UIButton::display(int offsetX, int offsetY) {
 		if (_font) {
 			font = _font;
 		} else {
-			font = _gameRef->_systemFont;
+			font = _gameRef->getSystemFont();
 		}
 	}
 
diff --git a/engines/wintermute/ui/ui_edit.cpp b/engines/wintermute/ui/ui_edit.cpp
index 7728272..0a2e6f1 100644
--- a/engines/wintermute/ui/ui_edit.cpp
+++ b/engines/wintermute/ui/ui_edit.cpp
@@ -589,7 +589,7 @@ bool UIEdit::display(int offsetX, int offsetY) {
 	if (_font) {
 		font = _font;
 	} else {
-		font = _gameRef->_systemFont;
+		font = _gameRef->getSystemFont();
 	}
 
 	if (_fontSelected) {
diff --git a/engines/wintermute/ui/ui_text.cpp b/engines/wintermute/ui/ui_text.cpp
index 5a1bffc..3b5adf0 100644
--- a/engines/wintermute/ui/ui_text.cpp
+++ b/engines/wintermute/ui/ui_text.cpp
@@ -69,7 +69,7 @@ bool UIText::display(int offsetX, int offsetY) {
 
 	BaseFont *font = _font;
 	if (!font) {
-		font = _gameRef->_systemFont;
+		font = _gameRef->getSystemFont();
 	}
 
 	if (_back) {


Commit: 09303f6d1a7c32916e14ee5436b7d7f146c26dc5
    https://github.com/scummvm/scummvm/commit/09303f6d1a7c32916e14ee5436b7d7f146c26dc5
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-02-06T04:40:36-08:00

Commit Message:
WINTERMUTE: Get rid of BaseImage.h inclusion in BaseGame.

Changed paths:
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/gfx/base_image.cpp
    engines/wintermute/base/gfx/base_image.h
    engines/wintermute/base/gfx/base_renderer.cpp
    engines/wintermute/base/gfx/base_renderer.h



diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index e02842a..0248c34 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -34,7 +34,6 @@
 #include "engines/wintermute/base/base_file_manager.h"
 #include "engines/wintermute/base/font/base_font.h"
 #include "engines/wintermute/base/font/base_font_storage.h"
-#include "engines/wintermute/base/gfx/base_image.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "engines/wintermute/base/base_keyboard_state.h"
 #include "engines/wintermute/base/base_parser.h"
@@ -1577,14 +1576,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 			fileNum++;
 		}
 
-		bool ret = false;
-		BaseImage *image = _gameRef->_renderer->takeScreenshot();
-		if (image) {
-			ret = DID_SUCCEED(image->saveBMPFile(filename));
-			delete image;
-		} else {
-			ret = false;
-		}
+		bool ret = _gameRef->_renderer->saveScreenShot(filename);
 
 		stack->pushBool(ret);
 		return STATUS_OK;
@@ -1599,17 +1591,7 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 		int sizeX = stack->pop()->getInt(_renderer->_width);
 		int sizeY = stack->pop()->getInt(_renderer->_height);
 
-		bool ret = false;
-		BaseImage *image = _gameRef->_renderer->takeScreenshot();
-		if (image) {
-			ret = DID_SUCCEED(image->resize(sizeX, sizeY));
-			if (ret) {
-				ret = DID_SUCCEED(image->saveBMPFile(filename));
-			}
-			delete image;
-		} else {
-			ret = false;
-		}
+		bool ret = _gameRef->_renderer->saveScreenShot(filename, sizeX, sizeY);
 
 		stack->pushBool(ret);
 		return STATUS_OK;
diff --git a/engines/wintermute/base/gfx/base_image.cpp b/engines/wintermute/base/gfx/base_image.cpp
index 05037cd..75de951 100644
--- a/engines/wintermute/base/gfx/base_image.cpp
+++ b/engines/wintermute/base/gfx/base_image.cpp
@@ -105,7 +105,7 @@ void BaseImage::copyFrom(const Graphics::Surface *surface) {
 }
 
 //////////////////////////////////////////////////////////////////////////
-bool BaseImage::saveBMPFile(const char *filename) const {
+bool BaseImage::saveBMPFile(const Common::String &filename) const {
 	warning("BaseImage::saveBMPFile - stubbed"); // TODO
 	return false;
 }
diff --git a/engines/wintermute/base/gfx/base_image.h b/engines/wintermute/base/gfx/base_image.h
index 6d01b84..017305e 100644
--- a/engines/wintermute/base/gfx/base_image.h
+++ b/engines/wintermute/base/gfx/base_image.h
@@ -55,7 +55,7 @@ public:
 	byte getAlphaAt(int x, int y) const;
 	bool writeBMPToStream(Common::WriteStream *stream) const;
 	bool resize(int newWidth, int newHeight);
-	bool saveBMPFile(const char *filename) const;
+	bool saveBMPFile(const Common::String &filename) const;
 	bool copyFrom(BaseImage *origImage, int newWidth = 0, int newHeight = 0);
 	void copyFrom(const Graphics::Surface *surface);
 private:
diff --git a/engines/wintermute/base/gfx/base_renderer.cpp b/engines/wintermute/base/gfx/base_renderer.cpp
index 6c230d2..c20881e 100644
--- a/engines/wintermute/base/gfx/base_renderer.cpp
+++ b/engines/wintermute/base/gfx/base_renderer.cpp
@@ -29,6 +29,7 @@
 #include "engines/wintermute/base/base_active_rect.h"
 #include "engines/wintermute/base/gfx/base_renderer.h"
 #include "engines/wintermute/base/gfx/base_surface.h"
+#include "engines/wintermute/base/gfx/base_image.h"
 #include "engines/wintermute/base/base_sub_frame.h"
 #include "engines/wintermute/base/base_region.h"
 #include "engines/wintermute/platform_osystem.h"
@@ -344,6 +345,22 @@ void BaseRenderer::addRectToList(BaseActiveRect *rect) {
 	_rectList.push_back(rect);
 }
 
+bool BaseRenderer::saveScreenShot(const Common::String &filename, int sizeX, int sizeY) {
+	BaseImage *image = takeScreenshot();
+	if (image) {
+		if (sizeX != 0 && sizeY != 0) {
+			if (!DID_SUCCEED(image->resize(sizeX, sizeY))) {
+				delete image;
+				return false;
+			}
+		}
+		image->saveBMPFile(filename);
+		delete image;
+		return true;
+	}
+	return false;
+}
+
 //////////////////////////////////////////////////////////////////////////
 bool BaseRenderer::displayIndicator() {
 	if (!_indicatorDisplay || !_indicatorProgress) {
diff --git a/engines/wintermute/base/gfx/base_renderer.h b/engines/wintermute/base/gfx/base_renderer.h
index 9bc195f..5a24e01 100644
--- a/engines/wintermute/base/gfx/base_renderer.h
+++ b/engines/wintermute/base/gfx/base_renderer.h
@@ -61,6 +61,7 @@ public:
 	 * @return a BaseImage containing the current screen-buffer.
 	 */
 	virtual BaseImage *takeScreenshot() = 0;
+	virtual bool saveScreenShot(const Common::String &filename, int sizeX = 0, int sizeY = 0);
 	virtual bool setViewport(int left, int top, int right, int bottom);
 	virtual bool setViewport(Rect32 *rect);
 	virtual Rect32 getViewPort() = 0;


Commit: 511f833032ffa27045fbf5ab6422f1f6831afcb7
    https://github.com/scummvm/scummvm/commit/511f833032ffa27045fbf5ab6422f1f6831afcb7
Author: Einar Johan Trøan Sømåen (einarjohants at gmail.com)
Date: 2013-02-06T04:40:36-08:00

Commit Message:
WINTERMUTE: Use case-insensitive path-lookup when opening DiskFiles.

Changed paths:
    engines/wintermute/base/file/base_disk_file.cpp



diff --git a/engines/wintermute/base/file/base_disk_file.cpp b/engines/wintermute/base/file/base_disk_file.cpp
index 796531e..3c1ecc7 100644
--- a/engines/wintermute/base/file/base_disk_file.cpp
+++ b/engines/wintermute/base/file/base_disk_file.cpp
@@ -39,10 +39,10 @@
 
 namespace Wintermute {
 
-void correctSlashes(char *fileName) {
-	for (size_t i = 0; i < strlen(fileName); i++) {
+void correctSlashes(Common::String &fileName) {
+	for (size_t i = 0; i < fileName.size(); i++) {
 		if (fileName[i] == '\\') {
-			fileName[i] = '/';
+			fileName.setChar('/', i);
 		}
 	}
 }
@@ -66,6 +66,12 @@ static Common::FSNode getNodeForRelativePath(const Common::String &filename) {
 		const Common::FSNode gameDataDir(ConfMan.get("path"));
 		Common::FSNode curNode = gameDataDir;
 
+		Common::String fixedPath = "";
+		while (!path.empty()) {
+			fixedPath += path.nextToken() + "/";
+		}
+		fixedPath.deleteLastChar();
+
 		// Parse all path-elements
 		while (!path.empty()) {
 			// Get the next path-component by slicing on '\\'
@@ -111,11 +117,12 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) {
 	uint32 prefixSize = 0;
 	Common::SeekableReadStream *file = nullptr;
 	Common::String fixedFilename = filename;
+	correctSlashes(fixedFilename);
 
 	// Absolute path: TODO: Add specific fallbacks here.
-	if (filename.contains(':')) {
-		if (filename.hasPrefix("c:\\windows\\fonts\\")) { // East Side Story refers to "c:\windows\fonts\framd.ttf"
-			fixedFilename = filename.c_str() + 17;
+	if (fixedFilename.contains(':')) {
+		if (fixedFilename.hasPrefix("c:/windows/fonts/")) { // East Side Story refers to "c:\windows\fonts\framd.ttf"
+			fixedFilename = filename.c_str() + 14;
 		} else {
 			error("openDiskFile::Absolute path or invalid filename used in %s", filename.c_str());
 		}
@@ -125,7 +132,7 @@ Common::SeekableReadStream *openDiskFile(const Common::String &filename) {
 	SearchMan.listMatchingMembers(files, fixedFilename);
 
 	for (Common::ArchiveMemberList::iterator it = files.begin(); it != files.end(); ++it) {
-		if ((*it)->getName() == filename) {
+		if ((*it)->getName().equalsIgnoreCase(lastPathComponent(fixedFilename,'/'))) {
 			file = (*it)->createReadStream();
 			break;
 		}






More information about the Scummvm-git-logs mailing list