mirror of
https://github.com/libretro/scummvm.git
synced 2025-04-02 06:41:51 +00:00
GRAPHICS: Add a version of CursorManager::replaceCursor that accepts a Graphics::Cursor
This commit is contained in:
parent
4667aae4c4
commit
fe5dddf901
@ -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);
|
||||
|
@ -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() {
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 {
|
||||
@ -99,6 +100,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
|
||||
|
Loading…
x
Reference in New Issue
Block a user