[Scummvm-git-logs] scummvm master -> cf53fdd016ab832e71e64b58eb4e84b678c9e556
sev-
noreply at scummvm.org
Sat Feb 15 19:08:39 UTC 2025
This automated email contains information about 7 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
01a8a4ddf3 VIDEO: QTVR: Implement getCurrentNodeID() method
ac038a1198 DIRECTOR: XTRAS: Remove incorrectly implemented QTVR Xtra methods
9ee64db215 DIRECTOR: LINGO: Do not blow up during context-less execution
15a870c584 COMMON: FORMATS: Expose QTVR structures to the outer world
86f8977ed5 DIRECTOR: LINGO: Allow execution handlers with arguments
f217ece80c VIDEO: QTVR: Expose current hotspot via API
cf53fdd016 DIRECTOR: XTRAS: Partial implementation of m_QTVRMouseOver in QTVR Xtra
Commit: 01a8a4ddf3ab2b36cf2f7126cf1f018430eb10a3
https://github.com/scummvm/scummvm/commit/01a8a4ddf3ab2b36cf2f7126cf1f018430eb10a3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-15T20:08:26+01:00
Commit Message:
VIDEO: QTVR: Implement getCurrentNodeID() method
Changed paths:
video/qt_decoder.h
diff --git a/video/qt_decoder.h b/video/qt_decoder.h
index db5cfc0f1d7..ccf6101dfa7 100644
--- a/video/qt_decoder.h
+++ b/video/qt_decoder.h
@@ -88,6 +88,7 @@ public:
void setTiltAngle(float tiltAngle) { _tiltAngle = tiltAngle; }
float getFOV() const { return _fov; }
bool setFOV(float fov);
+ int getCurrentNodeID() { return _currentSample == -1 ? 0 : _panoTrack->panoSamples[_currentSample].hdr.nodeID; }
int getCurrentRow() { return _nextVideoTrack->getCurFrame() / _nav.columns; }
void setCurrentRow(int row);
Commit: ac038a1198e7fb188276ebc744d0ef8d72b4ccde
https://github.com/scummvm/scummvm/commit/ac038a1198e7fb188276ebc744d0ef8d72b4ccde
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-15T20:08:26+01:00
Commit Message:
DIRECTOR: XTRAS: Remove incorrectly implemented QTVR Xtra methods
Changed paths:
engines/director/lingo/xtras/qtvrxtra.cpp
engines/director/lingo/xtras/qtvrxtra.h
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index def5113fa5f..c4773a6bbbd 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -243,12 +243,8 @@ QtvrxtraXtraObject::QtvrxtraXtraObject(ObjectType ObjectType) :Object<QtvrxtraXt
_video = nullptr;
_visible = false;
- _quality = 0.0f;
- _transitionMode = "normal";
- _transitionSpeed = 1.0f;
-
- _updateMode = "normal";
+ _passMouseDown = false;
_widget = nullptr;
}
@@ -420,27 +416,8 @@ void QtvrxtraXtra::m_QTVRIdle(int nargs) {
);
}
-void QtvrxtraXtra::m_QTVRMouseDown(int nargs) {
- g_lingo->printSTUBWithArglist("QtvrxtraXtra::m_QTVRMouseDown", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- me->_capEventsMouseDown = true;
-
- g_lingo->push(Datum(0));
-}
-
-void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
- g_lingo->printSTUBWithArglist("QtvrxtraXtra::m_QTVRMouseOver", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- me->_capEventsMouseOver = true;
-
- g_lingo->push(Datum(0));
-}
+XOBJSTUB(QtvrxtraXtra::m_QTVRMouseDown, 0)
+XOBJSTUB(QtvrxtraXtra::m_QTVRMouseOver, 0)
void QtvrxtraXtra::m_QTVRGetPanAngle(int nargs) {
g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetPanAngle", nargs);
@@ -509,108 +486,30 @@ XOBJSTUB(QtvrxtraXtra::m_QTVRGetObjectViewAngles, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRGetObjectZoomRect, 0)
void QtvrxtraXtra::m_QTVRGetNodeID(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetNodeID", nargs);
ARGNUMCHECK(0);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
- g_lingo->push((int)me->_currentNode.nodeID);
+ g_lingo->push((int)me->_video->getCurrentNodeID());
}
void QtvrxtraXtra::m_QTVRSetNodeID(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetNodeID", nargs);
- ARGNUMCHECK(1);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- Video::QuickTimeDecoder::NodeData newNode = me->_video->getNodeData(g_lingo->pop().asInt());
-
- if (newNode.nodeID)
- me->_currentNode = newNode;
-
- me->_video->goToNode(newNode.nodeID);
-}
-
-void QtvrxtraXtra::m_QTVRGetNodeName(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetNodeName", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- g_lingo->push(me->_currentNode.name);
-}
-
-void QtvrxtraXtra::m_QTVRGetQuality(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetQuality", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- g_lingo->push(Common::String::format("%f", me->_quality));
-}
-
-void QtvrxtraXtra::m_QTVRSetQuality(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetQuality", nargs);
ARGNUMCHECK(1);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
- me->_quality = atof(g_lingo->pop().asString().c_str());
+ me->_video->goToNode(g_lingo->pop().asInt());
}
-void QtvrxtraXtra::m_QTVRGetTransitionMode(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetTransitionMode", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- me->_transitionMode = g_lingo->pop().asString();
-}
-
-void QtvrxtraXtra::m_QTVRSetTransitionMode(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetTransitionMode", nargs);
- ARGNUMCHECK(1);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- g_lingo->push(me->_transitionMode);
-}
-
-void QtvrxtraXtra::m_QTVRGetTransitionSpeed(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetTransitionSpeed", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- g_lingo->push(Common::String::format("%f", me->_transitionSpeed));
-}
-
-void QtvrxtraXtra::m_QTVRSetTransitionSpeed(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetTransitionSpeed", nargs);
- ARGNUMCHECK(1);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- me->_transitionSpeed = atof(g_lingo->pop().asString().c_str());
-}
-
-void QtvrxtraXtra::m_QTVRGetUpdateMode(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetUpdateMode", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- g_lingo->push(me->_updateMode);
-}
-
-void QtvrxtraXtra::m_QTVRSetUpdateMode(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetUpdateMode", nargs);
- ARGNUMCHECK(1);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- me->_updateMode = g_lingo->pop().asString();
-}
+XOBJSTUB(QtvrxtraXtra::m_QTVRGetNodeName, 0)
+XOBJSTUB(QtvrxtraXtra::m_QTVRGetQuality, 0)
+XOBJSTUB(QtvrxtraXtra::m_QTVRSetQuality, 1)
+XOBJSTUB(QtvrxtraXtra::m_QTVRGetTransitionMode, 0)
+XOBJSTUB(QtvrxtraXtra::m_QTVRSetTransitionMode, 1)
+XOBJSTUB(QtvrxtraXtra::m_QTVRGetTransitionSpeed, 0)
+XOBJSTUB(QtvrxtraXtra::m_QTVRSetTransitionSpeed, 1)
+XOBJSTUB(QtvrxtraXtra::m_QTVRGetUpdateMode, 0)
+XOBJSTUB(QtvrxtraXtra::m_QTVRSetUpdateMode, 1)
void QtvrxtraXtra::m_QTVRGetVisible(int nargs) {
g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetVisible", nargs);
@@ -630,24 +529,8 @@ void QtvrxtraXtra::m_QTVRSetVisible(int nargs) {
me->_visible = (bool)g_lingo->pop().asInt();
}
-void QtvrxtraXtra::m_QTVRGetWarpMode(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetWarpMode", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- g_lingo->push(me->_video->getWarpMode());
-}
-
-void QtvrxtraXtra::m_QTVRSetWarpMode(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetWarpMode", nargs);
- ARGNUMCHECK(1);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- me->_video->setWarpMode(g_lingo->pop().asInt());
-}
-
+XOBJSTUB(QtvrxtraXtra::m_QTVRGetWarpMode, 0)
+XOBJSTUB(QtvrxtraXtra::m_QTVRSetWarpMode, 1)
XOBJSTUB(QtvrxtraXtra::m_QTVRCollapseToHotSpotRgn, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRZoomOutEffect, 0)
@@ -732,18 +615,9 @@ XOBJSTUB(QtvrxtraXtra::m_QTVRGetPanZoomStartHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetPanZoomStartHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRGetRolloverHotSpotHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetRolloverHotSpotHandler, 0)
-
-void QtvrxtraXtra::m_QTVRExitMouseOver(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRExitMouseOver", nargs);
- ARGNUMCHECK(0);
-
- QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
-
- me->_capEventsMouseOver = false;
-}
+XOBJSTUB(QtvrxtraXtra::m_QTVRExitMouseOver, 0)
void QtvrxtraXtra::m_QTVRPassMouseDown(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRPassMouseDown", nargs);
ARGNUMCHECK(0);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -792,13 +666,9 @@ bool QtvrxtraWidget::processEvent(Common::Event &event) {
return true;
case Common::EVENT_LBUTTONUP:
_xtra->_video->handleMouseButton(false);
- if (_xtra->_capEventsMouseDown)
- _xtra->_capEventsMouseDown = false;
return true;
case Common::EVENT_MOUSEMOVE:
_xtra->_video->handleMouseMove(event.mouse.x - _xtra->_rect.left, event.mouse.y - _xtra->_rect.top);
- if (!_xtra->_rect.contains(event.mouse))
- _xtra->_capEventsMouseOver = false;
return true;
case Common::EVENT_KEYDOWN:
switch (event.kbd.keycode) {
diff --git a/engines/director/lingo/xtras/qtvrxtra.h b/engines/director/lingo/xtras/qtvrxtra.h
index c1cba9d20b6..e91729cbd14 100644
--- a/engines/director/lingo/xtras/qtvrxtra.h
+++ b/engines/director/lingo/xtras/qtvrxtra.h
@@ -49,17 +49,6 @@ public:
Common::Rect _rect;
bool _visible;
- float _quality;
-
- Video::QuickTimeDecoder::NodeData _currentNode;
-
- Common::String _transitionMode;
- float _transitionSpeed;
-
- Common::String _updateMode;
-
- bool _capEventsMouseOver;
- bool _capEventsMouseDown;
bool _passMouseDown;
Commit: 9ee64db2152b16613a441cae4c7b54f2fba5ef50
https://github.com/scummvm/scummvm/commit/9ee64db2152b16613a441cae4c7b54f2fba5ef50
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-15T20:08:26+01:00
Commit Message:
DIRECTOR: LINGO: Do not blow up during context-less execution
Changed paths:
engines/director/lingo/lingo.cpp
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index fea157e9316..e7e8331a1a4 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -338,7 +338,7 @@ Symbol Lingo::getHandler(const Common::String &name) {
if (_state->context && _state->context->_functionHandlers.contains(name))
return _state->context->_functionHandlers[name];
- sym = g_director->getCurrentMovie()->getHandler(name, _state->context->_castLibHint);
+ sym = g_director->getCurrentMovie()->getHandler(name, _state->context ? _state->context->_castLibHint : 0);
if (sym.type != VOIDSYM)
return sym;
Commit: 15a870c5846e8f0ac1a87c7f5c6365b8954e2e09
https://github.com/scummvm/scummvm/commit/15a870c5846e8f0ac1a87c7f5c6365b8954e2e09
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-15T20:08:26+01:00
Commit Message:
COMMON: FORMATS: Expose QTVR structures to the outer world
Changed paths:
common/formats/quicktime.h
diff --git a/common/formats/quicktime.h b/common/formats/quicktime.h
index 89bff67b100..b18455fe331 100644
--- a/common/formats/quicktime.h
+++ b/common/formats/quicktime.h
@@ -127,8 +127,10 @@ protected:
Rational mediaRate;
};
+public:
struct Track;
+protected:
class SampleDesc {
public:
SampleDesc(Track *parentTrack, uint32 codecTag);
@@ -144,6 +146,7 @@ protected:
uint32 _codecTag;
};
+public:
enum CodecType {
CODEC_TYPE_MOV_OTHER,
CODEC_TYPE_VIDEO,
@@ -376,6 +379,7 @@ protected:
float initialVPan = 1.0f;
};
+protected:
virtual SampleDesc *readSampleDesc(Track *track, uint32 format, uint32 descSize) = 0;
uint32 _timeScale; // movie time
Commit: 86f8977ed53b38f482331d74a4515f7abb176ea4
https://github.com/scummvm/scummvm/commit/86f8977ed53b38f482331d74a4515f7abb176ea4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-15T20:08:26+01:00
Commit Message:
DIRECTOR: LINGO: Allow execution handlers with arguments
Changed paths:
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index e7e8331a1a4..34d77e8281d 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -736,10 +736,10 @@ void Lingo::executeScript(ScriptType type, CastMemberID id) {
execute();
}
-void Lingo::executeHandler(const Common::String &name) {
+void Lingo::executeHandler(const Common::String &name, int numargs) {
debugC(1, kDebugLingoExec, "Executing script handler : %s", name.c_str());
Symbol sym = getHandler(name);
- LC::call(sym, 0, false);
+ LC::call(sym, numargs, false);
execute();
}
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index ffadce20d9b..7ca1637bbb1 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -361,7 +361,7 @@ public:
int getCastLibsNum();
int getMembersNum(uint16 castLibID);
- void executeHandler(const Common::String &name);
+ void executeHandler(const Common::String &name, int numargs = 0);
void executeScript(ScriptType type, CastMemberID id);
Common::String formatStack();
void printStack(const char *s, uint pc);
Commit: f217ece80c423c71f3cf08edca1c084cafc5639b
https://github.com/scummvm/scummvm/commit/f217ece80c423c71f3cf08edca1c084cafc5639b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-15T20:08:26+01:00
Commit Message:
VIDEO: QTVR: Expose current hotspot via API
Changed paths:
video/qt_decoder.h
diff --git a/video/qt_decoder.h b/video/qt_decoder.h
index ccf6101dfa7..b040be18701 100644
--- a/video/qt_decoder.h
+++ b/video/qt_decoder.h
@@ -95,6 +95,8 @@ public:
int getCurrentColumn() { return _nextVideoTrack->getCurFrame() % _nav.columns; }
void setCurrentColumn(int column);
+ const PanoHotSpot *getCurrentHotspot() { return _currentHotspot; }
+
void nudge(const Common::String &direction);
bool isVR() const { return _isVR; }
Commit: cf53fdd016ab832e71e64b58eb4e84b678c9e556
https://github.com/scummvm/scummvm/commit/cf53fdd016ab832e71e64b58eb4e84b678c9e556
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-15T20:08:26+01:00
Commit Message:
DIRECTOR: XTRAS: Partial implementation of m_QTVRMouseOver in QTVR Xtra
Changed paths:
engines/director/lingo/xtras/qtvrxtra.cpp
engines/director/lingo/xtras/qtvrxtra.h
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index c4773a6bbbd..6f4331547ca 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -22,6 +22,10 @@
#include "common/system.h"
#include "common/tokenizer.h"
+#include "common/formats/quicktime.h"
+
+#include "video/qt_decoder.h"
+
#include "director/director.h"
#include "director/images.h"
#include "director/window.h"
@@ -29,7 +33,6 @@
#include "director/lingo/lingo-object.h"
#include "director/lingo/lingo-utils.h"
#include "director/lingo/xtras/qtvrxtra.h"
-#include "video/qt_decoder.h"
/**************************************************
*
@@ -407,6 +410,10 @@ void QtvrxtraXtra::m_QTVRIdle(int nargs) {
ARGNUMCHECK(0);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ if (!me->_visible)
+ return;
+
Graphics::Surface const *frame = me->_video->decodeNextFrame();
Graphics::Surface *dither = frame->convertTo(g_director->_wm->_pixelformat, me->_video->getPalette(), 256, g_director->getPalette(), 256, Graphics::kDitherNaive);
@@ -417,7 +424,60 @@ void QtvrxtraXtra::m_QTVRIdle(int nargs) {
}
XOBJSTUB(QtvrxtraXtra::m_QTVRMouseDown, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRMouseOver, 0)
+
+void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
+ ARGNUMCHECK(0);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+ Common::Point pos = g_director->getCurrentWindow()->getMousePos();
+
+ if (!me->_visible || !me->_rect.contains(pos)) {
+ g_lingo->pushVoid();
+ return;
+ }
+
+ while (true) {
+ Graphics::Surface const *frame = me->_video->decodeNextFrame();
+
+ Graphics::Surface *dither = frame->convertTo(g_director->_wm->_pixelformat, me->_video->getPalette(), 256, g_director->getPalette(), 256, Graphics::kDitherNaive);
+
+ g_director->getCurrentWindow()->getSurface()->copyRectToSurface(
+ dither->getPixels(), dither->pitch, me->_rect.left, me->_rect.top, dither->w, dither->h
+ );
+
+ g_director->getCurrentWindow()->setDirty(true);
+
+ Common::Event event;
+
+ while (g_system->getEventManager()->pollEvent(event)) {
+ if (Common::isMouseEvent(event)) {
+ pos = g_director->getCurrentWindow()->getMousePos();
+
+ if (!me->_rect.contains(pos))
+ break;
+ }
+
+ const Common::QuickTimeParser::PanoHotSpot *hotspot = me->_video->getCurrentHotspot();
+
+ me->_widget->processEvent(event);
+
+ if (hotspot != me->_video->getCurrentHotspot()) {
+ g_lingo->push(hotspot ? hotspot->id : 0);
+
+ g_lingo->executeHandler(me->_rolloverHotSpotHandler, 1);
+ }
+ }
+
+ g_director->draw();
+
+ if (!me->_rect.contains(pos))
+ break;
+
+ g_director->delayMillis(10);
+ }
+
+ g_lingo->push(Common::String("pan ,0"));
+}
void QtvrxtraXtra::m_QTVRGetPanAngle(int nargs) {
g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetPanAngle", nargs);
@@ -512,7 +572,6 @@ XOBJSTUB(QtvrxtraXtra::m_QTVRGetUpdateMode, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetUpdateMode, 1)
void QtvrxtraXtra::m_QTVRGetVisible(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRGetVisible", nargs);
ARGNUMCHECK(0);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -521,7 +580,6 @@ void QtvrxtraXtra::m_QTVRGetVisible(int nargs) {
}
void QtvrxtraXtra::m_QTVRSetVisible(int nargs) {
- g_lingo->printArgs("QtvrxtraXtra::m_QTVRSetVisible", nargs);
ARGNUMCHECK(1);
QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
@@ -613,8 +671,23 @@ XOBJSTUB(QtvrxtraXtra::m_QTVRGetNodeLeaveHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetNodeLeaveHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRGetPanZoomStartHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetPanZoomStartHandler, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRGetRolloverHotSpotHandler, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRSetRolloverHotSpotHandler, 0)
+
+void QtvrxtraXtra::m_QTVRGetRolloverHotSpotHandler(int nargs) {
+ ARGNUMCHECK(0);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ g_lingo->push(me->_rolloverHotSpotHandler);
+}
+
+void QtvrxtraXtra::m_QTVRSetRolloverHotSpotHandler(int nargs) {
+ ARGNUMCHECK(1);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ me->_rolloverHotSpotHandler = g_lingo->pop().asString();
+}
+
XOBJSTUB(QtvrxtraXtra::m_QTVRExitMouseOver, 0)
void QtvrxtraXtra::m_QTVRPassMouseDown(int nargs) {
diff --git a/engines/director/lingo/xtras/qtvrxtra.h b/engines/director/lingo/xtras/qtvrxtra.h
index e91729cbd14..9f40ebd4612 100644
--- a/engines/director/lingo/xtras/qtvrxtra.h
+++ b/engines/director/lingo/xtras/qtvrxtra.h
@@ -52,6 +52,7 @@ public:
bool _passMouseDown;
+ Common::String _rolloverHotSpotHandler;
Common::String _mouseDownHandler;
};
More information about the Scummvm-git-logs
mailing list