[Scummvm-git-logs] scummvm master -> fe5dddf901eb40ac3c04b7d01bd078d65dafc5ab

bluegr bluegr at gmail.com
Fri Aug 9 22:58:36 CEST 2019


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:
fe5dddf901 GRAPHICS: Add a version of CursorManager::replaceCursor that accepts a Graphics::Cursor


Commit: fe5dddf901eb40ac3c04b7d01bd078d65dafc5ab
    https://github.com/scummvm/scummvm/commit/fe5dddf901eb40ac3c04b7d01bd078d65dafc5ab
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2019-08-09T23:58:32+03:00

Commit Message:
GRAPHICS: Add a version of CursorManager::replaceCursor that accepts a Graphics::Cursor

Changed paths:
    engines/composer/composer.cpp
    engines/cryomni3d/cryomni3d.cpp
    engines/gnap/gnap.cpp
    engines/mohawk/cursors.cpp
    engines/sci/graphics/cursor.cpp
    graphics/cursorman.cpp
    graphics/cursorman.h


diff --git a/engines/composer/composer.cpp b/engines/composer/composer.cpp
index bd486e8..6aafec2 100644
--- a/engines/composer/composer.cpp
+++ b/engines/composer/composer.cpp
@@ -105,9 +105,7 @@ Common::Error ComposerEngine::run() {
 	_screen.create(width, height, Graphics::PixelFormat::createFormatCLUT8());
 
 	Graphics::Cursor *cursor = Graphics::makeDefaultWinCursor();
-	CursorMan.replaceCursor(cursor->getSurface(), cursor->getWidth(), cursor->getHeight(), cursor->getHotspotX(),
-		cursor->getHotspotY(), cursor->getKeyColor());
-	CursorMan.replaceCursorPalette(cursor->getPalette(), cursor->getPaletteStartIndex(), cursor->getPaletteCount());
+	CursorMan.replaceCursor(cursor);
 	delete cursor;
 
 	_console = new Console(this);
diff --git a/engines/cryomni3d/cryomni3d.cpp b/engines/cryomni3d/cryomni3d.cpp
index 452d6b7..95da49a 100644
--- a/engines/cryomni3d/cryomni3d.cpp
+++ b/engines/cryomni3d/cryomni3d.cpp
@@ -252,14 +252,12 @@ bool CryOmni3DEngine::displayHLZ(const Common::String &filename, uint32 timeout)
 }
 
 void CryOmni3DEngine::setCursor(const Graphics::Cursor &cursor) const {
-	CursorMan.replaceCursor(cursor.getSurface(), cursor.getWidth(), cursor.getHeight(),
-	                        cursor.getHotspotX(), cursor.getHotspotY(), cursor.getKeyColor());
+	CursorMan.replaceCursor(&cursor);
 }
 
 void CryOmni3DEngine::setCursor(uint cursorId) const {
 	const Graphics::Cursor &cursor = _sprites.getCursor(cursorId);
-	CursorMan.replaceCursor(cursor.getSurface(), cursor.getWidth(), cursor.getHeight(),
-	                        cursor.getHotspotX(), cursor.getHotspotY(), cursor.getKeyColor());
+	CursorMan.replaceCursor(&cursor);
 }
 
 bool CryOmni3DEngine::pollEvents() {
diff --git a/engines/gnap/gnap.cpp b/engines/gnap/gnap.cpp
index aece4da..1d31e65 100644
--- a/engines/gnap/gnap.cpp
+++ b/engines/gnap/gnap.cpp
@@ -547,9 +547,7 @@ void GnapEngine::setCursor(int cursorIndex) {
 		Graphics::WinCursorGroup *cursorGroup = Graphics::WinCursorGroup::createCursorGroup(*_exe, Common::WinResourceID(cursorName));
 		if (cursorGroup) {
 			Graphics::Cursor *cursor = cursorGroup->cursors[0].cursor;
-			CursorMan.replaceCursor(cursor->getSurface(), cursor->getWidth(), cursor->getHeight(),
-				cursor->getHotspotX(), cursor->getHotspotY(), cursor->getKeyColor());
-			CursorMan.replaceCursorPalette(cursor->getPalette(), 0, 256);
+			CursorMan.replaceCursor(cursor);
 			delete cursorGroup;
 		}
 		_cursorIndex = cursorIndex;
diff --git a/engines/mohawk/cursors.cpp b/engines/mohawk/cursors.cpp
index 8adcbf6..2cb41be 100644
--- a/engines/mohawk/cursors.cpp
+++ b/engines/mohawk/cursors.cpp
@@ -51,9 +51,7 @@ void CursorManager::hideCursor() {
 void CursorManager::setDefaultCursor() {
 	Graphics::Cursor *cursor = Graphics::makeDefaultWinCursor();
 
-	CursorMan.replaceCursor(cursor->getSurface(), cursor->getWidth(), cursor->getHeight(), cursor->getHotspotX(),
-			cursor->getHotspotY(), cursor->getKeyColor());
-	CursorMan.replaceCursorPalette(cursor->getPalette(), cursor->getPaletteStartIndex(), cursor->getPaletteCount());
+	CursorMan.replaceCursor(cursor);
 
 	delete cursor;
 }
@@ -71,9 +69,7 @@ void CursorManager::setMacCursor(Common::SeekableReadStream *stream) {
 	if (!macCursor->readFromStream(*stream))
 		error("Could not parse Mac cursor");
 
-	CursorMan.replaceCursor(macCursor->getSurface(), macCursor->getWidth(), macCursor->getHeight(),
-			macCursor->getHotspotX(), macCursor->getHotspotY(), macCursor->getKeyColor());
-	CursorMan.replaceCursorPalette(macCursor->getPalette(), 0, 256);
+	CursorMan.replaceCursor(macCursor);
 
 	delete macCursor;
 	delete stream;
@@ -165,8 +161,7 @@ void NECursorManager::setCursor(uint16 id) {
 
 		if (cursorGroup) {
 			Graphics::Cursor *cursor = cursorGroup->cursors[0].cursor;
-			CursorMan.replaceCursor(cursor->getSurface(), cursor->getWidth(), cursor->getHeight(), cursor->getHotspotX(), cursor->getHotspotY(), cursor->getKeyColor());
-			CursorMan.replaceCursorPalette(cursor->getPalette(), 0, 256);
+			CursorMan.replaceCursor(cursor);
 			delete cursorGroup;
 			return;
 		}
@@ -272,8 +267,7 @@ void PECursorManager::setCursor(uint16 id) {
 	for (uint i = 0; i < _cursors.size(); i++) {
 		if (_cursors[i].id == id) {
 			Graphics::Cursor *cursor = _cursors[i].cursorGroup->cursors[0].cursor;
-			CursorMan.replaceCursor(cursor->getSurface(), cursor->getWidth(), cursor->getHeight(), cursor->getHotspotX(), cursor->getHotspotY(), cursor->getKeyColor());
-			CursorMan.replaceCursorPalette(cursor->getPalette(), 0, 256);
+			CursorMan.replaceCursor(cursor);
 			return;
 		}
 	}
diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp
index 56177db..bcddd16 100644
--- a/engines/sci/graphics/cursor.cpp
+++ b/engines/sci/graphics/cursor.cpp
@@ -514,9 +514,7 @@ void GfxCursor::kernelSetMacCursor(GuiResourceId viewNum, int loopNum, int celNu
 		return;
 	}
 
-	CursorMan.replaceCursor(macCursor->getSurface(), macCursor->getWidth(), macCursor->getHeight(),
-			macCursor->getHotspotX(), macCursor->getHotspotY(), macCursor->getKeyColor());
-	CursorMan.replaceCursorPalette(macCursor->getPalette(), 0, 256);
+	CursorMan.replaceCursor(macCursor);
 
 	delete macCursor;
 	kernelShow();
diff --git a/graphics/cursorman.cpp b/graphics/cursorman.cpp
index 678b074..751554f 100644
--- a/graphics/cursorman.cpp
+++ b/graphics/cursorman.cpp
@@ -147,6 +147,14 @@ void CursorManager::replaceCursor(const void *buf, uint w, uint h, int hotspotX,
 	g_system->setMouseCursor(cur->_data, w, h, hotspotX, hotspotY, keycolor, dontScale, format);
 }
 
+void CursorManager::replaceCursor(const Graphics::Cursor *cursor) {
+	replaceCursor(cursor->getSurface(), cursor->getWidth(), cursor->getHeight(), cursor->getHotspotX(),
+	              cursor->getHotspotY(), cursor->getKeyColor());
+
+	if (cursor->getPalette())
+		replaceCursorPalette(cursor->getPalette(), cursor->getPaletteStartIndex(), cursor->getPaletteCount());
+}
+
 bool CursorManager::supportsCursorPalettes() {
 	return g_system->hasFeature(OSystem::kFeatureCursorPalette);
 }
diff --git a/graphics/cursorman.h b/graphics/cursorman.h
index f4a0ebb..68f27b1 100644
--- a/graphics/cursorman.h
+++ b/graphics/cursorman.h
@@ -26,6 +26,7 @@
 #include "common/scummsys.h"
 #include "common/stack.h"
 #include "common/singleton.h"
+#include "graphics/cursor.h"
 #include "graphics/pixelformat.h"
 
 namespace Graphics {
@@ -100,6 +101,15 @@ public:
 	void replaceCursor(const void *buf, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor, bool dontScale = false, const Graphics::PixelFormat *format = NULL);
 
 	/**
+	 * Replace the current cursor on the stack. If the stack is empty, the
+	 * cursor is pushed instead. It's a slightly more optimized way of
+	 * popping the old cursor before pushing the new one.
+	 *
+	 * @param cursor	the new cursor
+	 */
+	void replaceCursor(const Graphics::Cursor *cursor);
+
+	/**
 	 * Pop all of the cursors and cursor palettes from their respective stacks.
 	 * The purpose is to ensure that all unecessary cursors are removed from the
 	 * stack when returning to the launcher from an engine.





More information about the Scummvm-git-logs mailing list