[Scummvm-git-logs] scummvm master -> 6d3c8407346cb474576d009a8c2df30502a5d390
sev-
noreply at scummvm.org
Sun Feb 16 23:04:40 UTC 2025
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
fefa5f0de1 VIDEO: QTVR: Fixing setting pan/tilt programmatically
f07189afb7 DIRECTOR: XTRAS: Fix PassMouseDown logic in QTVR Xtra
6d3c840734 VIDEO: QTVR: Hid noisy warning
Commit: fefa5f0de1c906e2e55ed0fbc1b72eaae0169d8f
https://github.com/scummvm/scummvm/commit/fefa5f0de1c906e2e55ed0fbc1b72eaae0169d8f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-17T00:03:25+01:00
Commit Message:
VIDEO: QTVR: Fixing setting pan/tilt programmatically
Changed paths:
video/qt_decoder.h
video/qtvr_decoder.cpp
diff --git a/video/qt_decoder.h b/video/qt_decoder.h
index c06b8360e02..b1048f7537b 100644
--- a/video/qt_decoder.h
+++ b/video/qt_decoder.h
@@ -83,9 +83,9 @@ public:
void handleKey(Common::KeyState &state, bool down, bool repeat = false);
float getPanAngle() const { return _panAngle; }
- void setPanAngle(float panAngle) { _panAngle = panAngle; }
+ void setPanAngle(float panAngle);
float getTiltAngle() const { return _tiltAngle; }
- void setTiltAngle(float tiltAngle) { _tiltAngle = tiltAngle; }
+ void setTiltAngle(float tiltAngle);
float getFOV() const { return _fov; }
bool setFOV(float fov);
int getCurrentNodeID() { return _currentSample == -1 ? 0 : _panoTrack->panoSamples[_currentSample].hdr.nodeID; }
@@ -361,11 +361,6 @@ private:
int lookupHotspot(int16 x, int16 y);
- float getPanAngle() { return _curPanAngle; }
- void setPanAngle(float angle);
- float getTiltAngle() { return _curTiltAngle; }
- void setTiltAngle(float angle);
-
void setDirty() { _dirty = true; }
private:
@@ -383,9 +378,6 @@ private:
bool _isPanoConstructed;
- float _curPanAngle;
- float _curTiltAngle;
-
bool _dirty;
};
};
diff --git a/video/qtvr_decoder.cpp b/video/qtvr_decoder.cpp
index 494b432bfd3..27471529caf 100644
--- a/video/qtvr_decoder.cpp
+++ b/video/qtvr_decoder.cpp
@@ -163,6 +163,42 @@ void QuickTimeDecoder::setTargetSize(uint16 w, uint16 h) {
}
}
+void QuickTimeDecoder::setPanAngle(float angle) {
+ PanoSampleDesc *desc = (PanoSampleDesc *)_panoTrack->sampleDescs[0];
+
+ if (desc->_hPanStart != desc->_hPanStart && (desc->_hPanStart != 0.0 || desc->_hPanStart != 360.0)) {
+ if (angle < desc->_hPanStart)
+ angle = desc->_hPanStart + _hfov / 2;
+
+ if (angle > desc->_hPanEnd - _hfov / 2)
+ angle = desc->_hPanStart - _hfov / 2;
+ }
+
+ if (_panAngle != angle) {
+ _panAngle = angle;
+
+ PanoTrackHandler *track = (PanoTrackHandler *)getTrack(_panoTrack->targetTrack);
+ track->setDirty();
+ }
+}
+
+void QuickTimeDecoder::setTiltAngle(float angle) {
+ PanoSampleDesc *desc = (PanoSampleDesc *)_panoTrack->sampleDescs[0];
+
+ if (angle < desc->_vPanBottom + _fov / 2)
+ angle = desc->_vPanBottom + _fov / 2;
+
+ if (angle > desc->_vPanTop - _fov / 2)
+ angle = desc->_vPanTop - _fov / 2;
+
+ if (_tiltAngle != angle) {
+ _tiltAngle = angle;
+
+ PanoTrackHandler *track = (PanoTrackHandler *)getTrack(_panoTrack->targetTrack);
+ track->setDirty();
+ }
+}
+
bool QuickTimeDecoder::setFOV(float fov) {
PanoSampleDesc *desc = (PanoSampleDesc *)_panoTrack->sampleDescs[0];
bool success = true;
@@ -307,9 +343,6 @@ QuickTimeDecoder::PanoTrackHandler::PanoTrackHandler(QuickTimeDecoder *decoder,
_projectedPano = nullptr;
_planarProjection = nullptr;
- _curPanAngle = 0.0f;
- _curTiltAngle = 0.0f;
-
_dirty = true;
_decoder->updateQTVRCursor(0, 0); // Initialize all things for cursor
@@ -356,44 +389,6 @@ Common::Rational QuickTimeDecoder::PanoTrackHandler::getScaledHeight() const {
return Common::Rational(_parent->height) / _parent->scaleFactorY;
}
-void QuickTimeDecoder::PanoTrackHandler::setPanAngle(float angle) {
- PanoSampleDesc *desc = (PanoSampleDesc *)_parent->sampleDescs[0];
-
- if (desc->_hPanStart != desc->_hPanStart && (desc->_hPanStart != 0.0 || desc->_hPanStart != 360.0)) {
- if (angle < desc->_hPanStart + _decoder->_hfov / 2)
- angle = desc->_hPanStart + _decoder->_hfov / 2;
-
- if (angle > desc->_hPanEnd - _decoder->_hfov / 2)
- angle = desc->_hPanStart - _decoder->_hfov / 2;
- }
-
- if (_curPanAngle != angle) {
- _curPanAngle = angle;
-
- _decoder->setPanAngle(_curPanAngle);
-
- _dirty = true;
- }
-}
-
-void QuickTimeDecoder::PanoTrackHandler::setTiltAngle(float angle) {
- PanoSampleDesc *desc = (PanoSampleDesc *)_parent->sampleDescs[0];
-
- if (angle < desc->_vPanBottom + _decoder->_fov / 2)
- angle = desc->_vPanBottom + _decoder->_fov / 2;
-
- if (angle > desc->_vPanTop - _decoder->_fov / 2)
- angle = desc->_vPanTop - _decoder->_fov / 2;
-
- if (_curTiltAngle != angle) {
- _curTiltAngle = angle;
-
- _decoder->setTiltAngle(_curTiltAngle);
-
- _dirty = true;
- }
-}
-
const Graphics::Surface *QuickTimeDecoder::PanoTrackHandler::decodeNextFrame() {
if (!_isPanoConstructed)
return nullptr;
@@ -503,8 +498,8 @@ void QuickTimeDecoder::PanoTrackHandler::constructPanorama() {
_isPanoConstructed = true;
- _curPanAngle = desc->_hPanStart;
- _curTiltAngle = 0.0f;
+ _decoder->_panAngle = desc->_hPanStart;
+ _decoder->_tiltAngle = 0.0f;
}
int QuickTimeDecoder::PanoTrackHandler::lookupHotspot(int16 mx, int16 my) {
@@ -530,8 +525,8 @@ int QuickTimeDecoder::PanoTrackHandler::lookupHotspot(int16 mx, int16 my) {
topRightVector[2] = bottomRightVector[2];
// Apply pitch (tilt) rotation
- float cosTilt = cos(_curTiltAngle * M_PI / 180.0);
- float sinTilt = sin(_curTiltAngle * M_PI / 180.0);
+ float cosTilt = cos(_decoder->_tiltAngle * M_PI / 180.0);
+ float sinTilt = sin(_decoder->_tiltAngle * M_PI / 180.0);
for (int v = 0; v < 2; v++) {
float y = cornerVectors[v][1];
@@ -563,7 +558,7 @@ int QuickTimeDecoder::PanoTrackHandler::lookupHotspot(int16 mx, int16 my) {
float yawAngle = atan2(mousePixelVector[0], mousePixelVector[2]);
// panorama is turned 90 degrees, width is height
- int hotX = (1.0f - (yawAngle / (2.0 * M_PI) + _curPanAngle / 360.0f)) * (float)_constructedHotspots->h;
+ int hotX = (1.0f - (yawAngle / (2.0 * M_PI) + _decoder->_panAngle / 360.0f)) * (float)_constructedHotspots->h;
hotX = hotX % _constructedHotspots->h;
if (hotX < 0)
@@ -621,8 +616,8 @@ void QuickTimeDecoder::PanoTrackHandler::projectPanorama() {
topRightVector[2] = bottomRightVector[2];
// Apply pitch (tilt) rotation
- float cosTilt = cos(_curTiltAngle * M_PI / 180.0);
- float sinTilt = sin(_curTiltAngle * M_PI / 180.0);
+ float cosTilt = cos(_decoder->_tiltAngle * M_PI / 180.0);
+ float sinTilt = sin(_decoder->_tiltAngle * M_PI / 180.0);
for (int v = 0; v < 2; v++) {
float y = cornerVectors[v][1];
@@ -708,7 +703,7 @@ void QuickTimeDecoder::PanoTrackHandler::projectPanorama() {
cylinderAngleOffsets[x] = atan(xCoord) * 0.5f / M_PI;
}
- float angleT = fmod(_curPanAngle / 360.0, 1.0);
+ float angleT = fmod(_decoder->_panAngle / 360.0, 1.0);
if (angleT < 0.0f)
angleT += 1.0f;
@@ -951,8 +946,6 @@ void QuickTimeDecoder::handlePanoMouseButton(bool isDown, int16 x, int16 y, bool
if (!repeat)
return;
- PanoTrackHandler *track = (PanoTrackHandler *)getTrack(_panoTrack->targetTrack);
-
// HACK: FIXME: Hard coded for now
const int sensitivity = 5;
const float speedFactor = 0.1f;
@@ -964,10 +957,10 @@ void QuickTimeDecoder::handlePanoMouseButton(bool isDown, int16 x, int16 y, bool
float speedY = (float)mouseDeltaY * speedFactor;
if (ABS(mouseDeltaX) >= sensitivity)
- track->setPanAngle(track->getPanAngle() + speedX);
+ setPanAngle(getPanAngle() + speedX);
if (ABS(mouseDeltaY) >= sensitivity)
- track->setTiltAngle(track->getTiltAngle() + speedY);
+ setTiltAngle(getTiltAngle() + speedY);
}
void QuickTimeDecoder::handleKey(Common::KeyState &state, bool down, bool repeat) {
Commit: f07189afb757b3505624fc6bbc44f2ef8be90dcb
https://github.com/scummvm/scummvm/commit/f07189afb757b3505624fc6bbc44f2ef8be90dcb
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-17T00:03:25+01:00
Commit Message:
DIRECTOR: XTRAS: Fix PassMouseDown logic 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 aaa2053a37a..eb743f2e7a0 100644
--- a/engines/director/lingo/xtras/qtvrxtra.cpp
+++ b/engines/director/lingo/xtras/qtvrxtra.cpp
@@ -906,6 +906,7 @@ bool QtvrxtraWidget::processEvent(Common::Event &event) {
switch (event.type) {
case Common::EVENT_LBUTTONDOWN:
if (_xtra->_mouseDownHandler.empty()) {
+ _xtra->_passMouseDown = true;
_xtra->_video->handleMouseButton(true, event.mouse.x - _xtra->_rect.left, event.mouse.y - _xtra->_rect.top);
} else {
_xtra->_passMouseDown = false;
Commit: 6d3c8407346cb474576d009a8c2df30502a5d390
https://github.com/scummvm/scummvm/commit/6d3c8407346cb474576d009a8c2df30502a5d390
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2025-02-17T00:04:20+01:00
Commit Message:
VIDEO: QTVR: Hid noisy warning
Changed paths:
video/qtvr_decoder.cpp
diff --git a/video/qtvr_decoder.cpp b/video/qtvr_decoder.cpp
index 27471529caf..2faa7ad87a0 100644
--- a/video/qtvr_decoder.cpp
+++ b/video/qtvr_decoder.cpp
@@ -1172,7 +1172,7 @@ void QuickTimeDecoder::updateQTVRCursor(int16 x, int16 y) {
default:
if (hsType != HotSpotType::undefined)
- warning("Hotspot type: %s", tag2str((uint32)hsType));
+ debug(3, "Hotspot type: %s", tag2str((uint32)hsType));
hsOver = kCursorPanoObjOver;
hsDown = kCursorPanoObjDown;
hsUp = kCursorPanoObjUp;
More information about the Scummvm-git-logs
mailing list