[Scummvm-git-logs] scummvm master -> 381a7f3350b551c30f4b2131a3d6eb844f0fe478
sev-
noreply at scummvm.org
Sun Feb 16 22:00:31 UTC 2025
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
5c03bc713f DIRECTOR: XTRAS: Implement MouseStillDownHandler in QTVR Xtra
18a3de9401 DIRECTOR: XTRAS: Process _passMouseDown flag in QTVR Xtra
e061557428 VIDEO: QTVR: Implement Object nudging with keyboard
fa5ea18fcb VIDEO: QTVR: Expose zoom state
61ea4e1761 DIRECTOR: XTRAS: Implement PanZoomStartHandler in QTVR Xtra
381a7f3350 DIRECTOR: XTRAS: Implement NodeLeaveHandler in QTVR Xtra
Commit: 5c03bc713f6f899d300854da655753f112faf58f
https://github.com/scummvm/scummvm/commit/5c03bc713f6f899d300854da655753f112faf58f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T23:00:17+01:00
Commit Message:
DIRECTOR: XTRAS: Implement MouseStillDownHandler 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 a0b845fb7cc..a3fc3da0dac 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -240,6 +240,8 @@ static const BuiltinProto xlibBuiltins[] = {
{ nullptr, nullptr, 0, 0, 0, VOIDSYM }
};
+#define HANDLER_TICKS 500
+
QtvrxtraXtraObject::QtvrxtraXtraObject(ObjectType ObjectType) :Object<QtvrxtraXtraObject>("Qtvrxtra") {
_objType = ObjectType;
@@ -449,6 +451,8 @@ void QtvrxtraXtra::m_QTVRMouseDown(int nargs) {
return;
}
+ int nextTick = g_system->getMillis();
+
while (true) {
Graphics::Surface const *frame = me->_video->decodeNextFrame();
@@ -467,7 +471,13 @@ void QtvrxtraXtra::m_QTVRMouseDown(int nargs) {
break;
}
- // MouseStillDownHandler
+ if (g_system->getMillis() > nextTick) {
+ nextTick = g_system->getMillis() + HANDLER_TICKS;
+
+ if (!me->_mouseStillDownHandler.empty())
+ g_lingo->executeHandler(me->_mouseStillDownHandler);
+ }
+
// NodeLeaveHandler
// PanZoomStartHandler
@@ -570,7 +580,7 @@ void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
}
if (g_system->getMillis() > nextTick) {
- nextTick = g_system->getMillis() + 500;
+ nextTick = g_system->getMillis() + HANDLER_TICKS;
if (!me->_mouseOverHandler.empty())
g_lingo->executeHandler(me->_mouseOverHandler);
@@ -792,8 +802,22 @@ void QtvrxtraXtra::m_QTVRSetMouseOverHandler(int nargs) {
me->_mouseOverHandler = g_lingo->pop().asString();
}
-XOBJSTUB(QtvrxtraXtra::m_QTVRGetMouseStillDownHandler, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRSetMouseStillDownHandler, 0)
+void QtvrxtraXtra::m_QTVRGetMouseStillDownHandler(int nargs) {
+ ARGNUMCHECK(0);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ g_lingo->push(me->_mouseStillDownHandler);
+}
+
+void QtvrxtraXtra::m_QTVRSetMouseStillDownHandler(int nargs) {
+ ARGNUMCHECK(1);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ me->_mouseStillDownHandler = g_lingo->pop().asString();
+}
+
XOBJSTUB(QtvrxtraXtra::m_QTVRGetNodeLeaveHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetNodeLeaveHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRGetPanZoomStartHandler, 0)
diff --git a/engines/director/lingo/xtras/qtvrxtra.h b/engines/director/lingo/xtras/qtvrxtra.h
index 912a7edf18f..4ff320fa6bf 100644
--- a/engines/director/lingo/xtras/qtvrxtra.h
+++ b/engines/director/lingo/xtras/qtvrxtra.h
@@ -56,6 +56,7 @@ public:
Common::String _rolloverHotSpotHandler;
Common::String _mouseDownHandler;
Common::String _mouseOverHandler;
+ Common::String _mouseStillDownHandler;
};
namespace QtvrxtraXtra {
Commit: 18a3de94018e6a46d2304d8dca5eaa64ce6ea54d
https://github.com/scummvm/scummvm/commit/18a3de94018e6a46d2304d8dca5eaa64ce6ea54d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T23:00:20+01:00
Commit Message:
DIRECTOR: XTRAS: Process _passMouseDown flag in QTVR Xtra
Changed paths:
engines/director/lingo/xtras/qtvrxtra.cpp
diff --git a/engines/director/lingo/xtras/qtvrxtra.cpp b/engines/director/lingo/xtras/qtvrxtra.cpp
index a3fc3da0dac..857a8596793 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -549,19 +549,17 @@ void QtvrxtraXtra::m_QTVRMouseOver(int nargs) {
hotspot = me->_video->getRolloverHotspot();
if (event.type == Common::EVENT_LBUTTONDOWN) {
- // MouseDownHandler
- // PassMouseDown
-
- //if (!PassMouseDown) {
- // g_lingo->push(0);
- // return
- //}
-
+ // MouseDownHandler is processed inside
me->_widget->processEvent(event);
+ if (!me->_passMouseDown) {
+ g_lingo->push(0);
+ return;
+ }
+
m_QTVRMouseDown(-1337);
- return; // MouseDown will take care of the return value
+ return; // MouseDown will take care of the return value on the stack
}
me->_widget->processEvent(event);
@@ -874,11 +872,6 @@ QtvrxtraWidget::QtvrxtraWidget(QtvrxtraXtraObject *xtra, Graphics::MacWidget *pa
}
bool QtvrxtraWidget::processEvent(Common::Event &event) {
- // FIXME: This class needs to inherit from MacWidget and override this function
-
- //if (!(parent->_capEventsMouseOver && _capEventsMouseDown))
- // return false;
-
switch (event.type) {
case Common::EVENT_LBUTTONDOWN:
if (_xtra->_mouseDownHandler.empty()) {
@@ -888,10 +881,8 @@ bool QtvrxtraWidget::processEvent(Common::Event &event) {
g_lingo->executeHandler(_xtra->_mouseDownHandler);
- if (_xtra->_passMouseDown) {
+ if (_xtra->_passMouseDown)
_xtra->_video->handleMouseButton(true, event.mouse.x - _xtra->_rect.left, event.mouse.y - _xtra->_rect.top);
- _xtra->_passMouseDown = false;
- }
}
return true;
case Common::EVENT_LBUTTONUP:
Commit: e061557428f00983dfe7193b7e04d0520c91de6d
https://github.com/scummvm/scummvm/commit/e061557428f00983dfe7193b7e04d0520c91de6d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T23:00:21+01:00
Commit Message:
VIDEO: QTVR: Implement Object nudging with keyboard
Changed paths:
video/qtvr_decoder.cpp
diff --git a/video/qtvr_decoder.cpp b/video/qtvr_decoder.cpp
index ff43709b1c3..494b432bfd3 100644
--- a/video/qtvr_decoder.cpp
+++ b/video/qtvr_decoder.cpp
@@ -994,6 +994,25 @@ void QuickTimeDecoder::handleKey(Common::KeyState &state, bool down, bool repeat
}
void QuickTimeDecoder::handleObjectKey(Common::KeyState &state, bool down, bool repeat) {
+ if (!down)
+ return;
+
+ switch (state.keycode) {
+ case Common::KEYCODE_LEFT:
+ nudge("left");
+ break;
+ case Common::KEYCODE_RIGHT:
+ nudge("right");
+ break;
+ case Common::KEYCODE_UP:
+ nudge("up");
+ break;
+ case Common::KEYCODE_DOWN:
+ nudge("bottom");
+ break;
+ default:
+ break;
+ }
}
void QuickTimeDecoder::handlePanoKey(Common::KeyState &state, bool down, bool repeat) {
Commit: fa5ea18fcbfb239b4715d62eecbae2fd03334262
https://github.com/scummvm/scummvm/commit/fa5ea18fcbfb239b4715d62eecbae2fd03334262
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T23:00:21+01:00
Commit Message:
VIDEO: QTVR: Expose zoom state
Changed paths:
video/qt_decoder.h
diff --git a/video/qt_decoder.h b/video/qt_decoder.h
index 0bb5b8bf13b..c06b8360e02 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);
+ int getZoomState() { return _zoomState; }
+
const PanoHotSpot *getRolloverHotspot() { return _rolloverHotspot; }
const PanoHotSpot *getClickedHotspot() { return _clickedHotspot; }
@@ -163,6 +165,14 @@ public:
bool _isKeyDown = false;
Common::KeyState _lastKey;
+ enum {
+ kZoomNone,
+ kZoomQuestion,
+ kZoomIn,
+ kZoomOut,
+ kZoomLimit,
+ };
+
private:
Common::Rect _curBbox;
@@ -192,14 +202,6 @@ private:
bool _enableEditListBoundsCheckQuirk;
- enum {
- kZoomNone,
- kZoomQuestion,
- kZoomIn,
- kZoomOut,
- kZoomLimit,
- };
-
class VideoSampleDesc : public Common::QuickTimeParser::SampleDesc {
public:
VideoSampleDesc(Common::QuickTimeParser::Track *parentTrack, uint32 codecTag);
Commit: 61ea4e1761ea4b312fcbf6de512b8a5ad1fabc8f
https://github.com/scummvm/scummvm/commit/61ea4e1761ea4b312fcbf6de512b8a5ad1fabc8f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T23:00:21+01:00
Commit Message:
DIRECTOR: XTRAS: Implement PanZoomStartHandler 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 857a8596793..ca53d130ecb 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -818,8 +818,22 @@ void QtvrxtraXtra::m_QTVRSetMouseStillDownHandler(int nargs) {
XOBJSTUB(QtvrxtraXtra::m_QTVRGetNodeLeaveHandler, 0)
XOBJSTUB(QtvrxtraXtra::m_QTVRSetNodeLeaveHandler, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRGetPanZoomStartHandler, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRSetPanZoomStartHandler, 0)
+
+void QtvrxtraXtra::m_QTVRGetPanZoomStartHandler(int nargs) {
+ ARGNUMCHECK(0);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ g_lingo->push(me->_panZoomStartHandler);
+}
+
+void QtvrxtraXtra::m_QTVRSetPanZoomStartHandler(int nargs) {
+ ARGNUMCHECK(1);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ me->_panZoomStartHandler = g_lingo->pop().asString();
+}
void QtvrxtraXtra::m_QTVRGetRolloverHotSpotHandler(int nargs) {
ARGNUMCHECK(0);
@@ -892,22 +906,21 @@ bool QtvrxtraWidget::processEvent(Common::Event &event) {
_xtra->_video->handleMouseMove(event.mouse.x - _xtra->_rect.left, event.mouse.y - _xtra->_rect.top);
return true;
case Common::EVENT_KEYDOWN:
- switch (event.kbd.keycode) {
- case Common::KEYCODE_LEFT:
- _xtra->_video->nudge("left");
- break;
- case Common::KEYCODE_RIGHT:
- _xtra->_video->nudge("right");
- break;
- case Common::KEYCODE_UP:
- _xtra->_video->nudge("top");
- break;
- case Common::KEYCODE_DOWN:
- _xtra->_video->nudge("bottom");
- break;
- default:
- break;
+ case Common::EVENT_KEYUP: {
+ int zoomState = _xtra->_video->getZoomState();
+ _xtra->_video->handleKey(event.kbd, event.type == Common::EVENT_KEYDOWN);
+
+ int newZoomState = _xtra->_video->getZoomState();
+
+ if (zoomState == Video::QuickTimeDecoder::kZoomNone &&
+ (newZoomState == Video::QuickTimeDecoder::kZoomIn || newZoomState == Video::QuickTimeDecoder::kZoomOut)) {
+
+ if (!_xtra->_panZoomStartHandler.empty())
+ g_lingo->executeHandler(_xtra->_panZoomStartHandler);
}
+
+ }
+
return true;
default:
return false;
diff --git a/engines/director/lingo/xtras/qtvrxtra.h b/engines/director/lingo/xtras/qtvrxtra.h
index 4ff320fa6bf..1ac5f544496 100644
--- a/engines/director/lingo/xtras/qtvrxtra.h
+++ b/engines/director/lingo/xtras/qtvrxtra.h
@@ -57,6 +57,7 @@ public:
Common::String _mouseDownHandler;
Common::String _mouseOverHandler;
Common::String _mouseStillDownHandler;
+ Common::String _panZoomStartHandler;
};
namespace QtvrxtraXtra {
Commit: 381a7f3350b551c30f4b2131a3d6eb844f0fe478
https://github.com/scummvm/scummvm/commit/381a7f3350b551c30f4b2131a3d6eb844f0fe478
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-16T23:00:21+01:00
Commit Message:
DIRECTOR: XTRAS: Implement NodeLeaveHandler 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 ca53d130ecb..aaa2053a37a 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -464,6 +464,8 @@ void QtvrxtraXtra::m_QTVRMouseDown(int nargs) {
g_director->getCurrentWindow()->setDirty(true);
+ int node = me->_video->getCurrentNodeID();
+
while (g_system->getEventManager()->pollEvent(event)) {
me->_widget->processEvent(event);
@@ -471,6 +473,11 @@ void QtvrxtraXtra::m_QTVRMouseDown(int nargs) {
break;
}
+ if (node != 0 && me->_video->getCurrentNodeID() != node) {
+ if (!me->_nodeLeaveHandler.empty())
+ g_lingo->executeHandler(me->_nodeLeaveHandler);
+ }
+
if (g_system->getMillis() > nextTick) {
nextTick = g_system->getMillis() + HANDLER_TICKS;
@@ -478,9 +485,6 @@ void QtvrxtraXtra::m_QTVRMouseDown(int nargs) {
g_lingo->executeHandler(me->_mouseStillDownHandler);
}
- // NodeLeaveHandler
- // PanZoomStartHandler
-
g_director->draw();
if (event.type == Common::EVENT_QUIT) {
@@ -816,8 +820,21 @@ void QtvrxtraXtra::m_QTVRSetMouseStillDownHandler(int nargs) {
me->_mouseStillDownHandler = g_lingo->pop().asString();
}
-XOBJSTUB(QtvrxtraXtra::m_QTVRGetNodeLeaveHandler, 0)
-XOBJSTUB(QtvrxtraXtra::m_QTVRSetNodeLeaveHandler, 0)
+void QtvrxtraXtra::m_QTVRGetNodeLeaveHandler(int nargs) {
+ ARGNUMCHECK(0);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ g_lingo->push(me->_nodeLeaveHandler);
+}
+
+void QtvrxtraXtra::m_QTVRSetNodeLeaveHandler(int nargs) {
+ ARGNUMCHECK(1);
+
+ QtvrxtraXtraObject *me = (QtvrxtraXtraObject *)g_lingo->_state->me.u.obj;
+
+ me->_nodeLeaveHandler = g_lingo->pop().asString();
+}
void QtvrxtraXtra::m_QTVRGetPanZoomStartHandler(int nargs) {
ARGNUMCHECK(0);
diff --git a/engines/director/lingo/xtras/qtvrxtra.h b/engines/director/lingo/xtras/qtvrxtra.h
index 1ac5f544496..0f8457154b5 100644
--- a/engines/director/lingo/xtras/qtvrxtra.h
+++ b/engines/director/lingo/xtras/qtvrxtra.h
@@ -58,6 +58,7 @@ public:
Common::String _mouseOverHandler;
Common::String _mouseStillDownHandler;
Common::String _panZoomStartHandler;
+ Common::String _nodeLeaveHandler;
};
namespace QtvrxtraXtra {
More information about the Scummvm-git-logs
mailing list