diff options
author | Cameron Cawley | 2019-08-09 20:45:27 +0100 |
---|---|---|
committer | Filippos Karapetis | 2019-08-09 23:58:32 +0300 |
commit | fe5dddf901eb40ac3c04b7d01bd078d65dafc5ab (patch) | |
tree | 96dff48a310a3873fb9fc6cb48454997a26aba17 /graphics | |
parent | 4667aae4c407a3a54f44e07227897cf077f82fe2 (diff) | |
download | scummvm-rg350-fe5dddf901eb40ac3c04b7d01bd078d65dafc5ab.tar.gz scummvm-rg350-fe5dddf901eb40ac3c04b7d01bd078d65dafc5ab.tar.bz2 scummvm-rg350-fe5dddf901eb40ac3c04b7d01bd078d65dafc5ab.zip |
GRAPHICS: Add a version of CursorManager::replaceCursor that accepts a Graphics::Cursor
Diffstat (limited to 'graphics')
-rw-r--r-- | graphics/cursorman.cpp | 8 | ||||
-rw-r--r-- | graphics/cursorman.h | 10 |
2 files changed, 18 insertions, 0 deletions
diff --git a/graphics/cursorman.cpp b/graphics/cursorman.cpp index 678b074360..751554ffb7 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 f4a0ebbd82..68f27b18f5 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. |