[Scummvm-git-logs] scummvm master -> 0ca34f6e926b71130e81fd92d4ffcadb3048290a
sev-
sev at scummvm.org
Mon Jun 1 17:00:36 UTC 2020
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:
2bd118086b DIRECTOR: Relocate shape copy ink check
d82a37ab0d DIRECTOR: Fix setCast member condition
31f008b772 DIRECTOR: Fix segfault in MacWindowManager::pauseEngine
6cb1c92e23 GRAPHICS: MACGUI: Add fullscreen menu-on-demand mode
3e5c119639 DIRECTOR: Use WM menu-on-demand fullscreen mode
84cb2c9955 DIRECTOR: Do not clip drawRect to maskSurface
0ca34f6e92 DIRECTOR: Account for null cast in drawReverseSprite
Commit: 2bd118086b886eb2b063bfbb7c9fb637aeff393a
https://github.com/scummvm/scummvm/commit/2bd118086b886eb2b063bfbb7c9fb637aeff393a
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00
Commit Message:
DIRECTOR: Relocate shape copy ink check
Changed paths:
engines/director/score.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 6b43e6c3d6..0bac00cba2 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1833,10 +1833,6 @@ void Score::renderShape(uint16 spriteId) {
lineSize = sc->_lineThickness;
ink = sc->_ink;
}
- // shapes should be rendered with transparency by default
- if (ink == kInkTypeCopy) {
- ink = kInkTypeTransparent;
- }
}
break;
default:
@@ -1845,6 +1841,11 @@ void Score::renderShape(uint16 spriteId) {
}
}
+ // shapes should be rendered with transparency by default
+ if (ink == kInkTypeCopy) {
+ ink = kInkTypeTransparent;
+ }
+
// for outlined shapes, line thickness of 1 means invisible.
lineSize -= 1;
Commit: d82a37ab0d1ae2c17a00137fb701370591a01cd1
https://github.com/scummvm/scummvm/commit/d82a37ab0d1ae2c17a00137fb701370591a01cd1
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00
Commit Message:
DIRECTOR: Fix setCast member condition
Changed paths:
engines/director/score.cpp
engines/director/sprite.cpp
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 0bac00cba2..cbde468928 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1759,7 +1759,7 @@ void Score::unrenderSprite(uint16 spriteId) {
void Score::renderSprite(uint16 id) {
Sprite *sprite = _sprites[id];
- if (!sprite)
+ if (!sprite || !sprite->_enabled)
return;
CastType castType = sprite->_castType;
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 5ec801e90b..9e59f869f0 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -120,54 +120,64 @@ void Sprite::setPattern(uint16 pattern) {
void Sprite::setCast(uint16 castId) {
Cast *member = g_director->getCastMember(castId);
- if (member) {
+ _castType = kCastTypeNull;
+ _castId = castId;
+
+ if (castId == 0)
+ return;
+
+ if (member)
_cast = member;
- _castId = castId;
- _castType = kCastTypeNull;
+ else
+ warning("Sprite::setCast: Cast id %d has null member", castId);
- if (g_director->getVersion() < 4) {
- switch (_spriteType) {
- case kBitmapSprite:
- _castType = kCastBitmap;
- break;
- case kRectangleSprite:
- case kRoundedRectangleSprite:
- case kOvalSprite:
- case kLineTopBottomSprite:
- case kLineBottomTopSprite:
- case kOutlinedRectangleSprite:
- case kOutlinedRoundedRectangleSprite:
- case kOutlinedOvalSprite:
- case kCastMemberSprite:
- if (_cast != nullptr) {
- switch (_cast->_type) {
- case kCastButton:
- _castType = kCastButton;
- break;
- default:
- _castType = kCastShape;
- break;
- }
- } else {
+ if (g_director->getVersion() < 4) {
+ switch (_spriteType) {
+ case kBitmapSprite:
+ _castType = kCastBitmap;
+ break;
+ case kRectangleSprite:
+ case kRoundedRectangleSprite:
+ case kOvalSprite:
+ case kLineTopBottomSprite:
+ case kLineBottomTopSprite:
+ case kOutlinedRectangleSprite:
+ case kOutlinedRoundedRectangleSprite:
+ case kOutlinedOvalSprite:
+ case kCastMemberSprite:
+ if (_cast != nullptr) {
+ switch (_cast->_type) {
+ case kCastButton:
+ _castType = kCastButton;
+ break;
+ default:
_castType = kCastShape;
+ break;
}
- break;
- case kTextSprite:
- _castType = kCastText;
- break;
- case kButtonSprite:
- case kCheckboxSprite:
- case kRadioButtonSprite:
- _castType = kCastButton;
- break;
- default:
- warning("Sprite::setCast(): Unhandled sprite type %d", _spriteType);
- break;
+ } else {
+ _castType = kCastShape;
}
+ break;
+ case kTextSprite:
+ _castType = kCastText;
+ break;
+ case kButtonSprite:
+ case kCheckboxSprite:
+ case kRadioButtonSprite:
+ _castType = kCastButton;
+ break;
+ default:
+ warning("Sprite::setCast(): Unhandled sprite type %d", _spriteType);
+ break;
+ }
+ } else {
+ if (!member) {
+ debugC(1, kDebugImages, "Sprite::setCast(): Cast id %d not found", _castId);
} else {
_castType = member->_type;
}
}
+
_dirty = true;
}
@@ -186,6 +196,9 @@ Common::Rect Sprite::getBbox() {
break;
case kCastRTE:
case kCastText: {
+ if (!_cast)
+ return result;
+
TextCast *textCast = (TextCast*)_cast;
int x = _currentPoint.x; // +rectLeft;
int y = _currentPoint.y; // +rectTop;
@@ -210,6 +223,9 @@ Common::Rect Sprite::getBbox() {
case kCastButton: {
// This may not be a button cast. It could be a textcast with the
// channel forcing it to be a checkbox or radio button!
+ if (!_cast)
+ return result;
+
ButtonCast *button = (ButtonCast *)_cast;
// Sometimes, at least in the D3 Workshop Examples, these buttons are
@@ -263,6 +279,9 @@ Common::Rect Sprite::getBbox() {
break;
}
case kCastBitmap: {
+ if (!_cast)
+ return result;
+
BitmapCast *bc = (BitmapCast *)_cast;
int32 regX = bc->_regX;
@@ -283,7 +302,7 @@ Common::Rect Sprite::getBbox() {
break;
}
default:
- warning("Sprite::getBbox(): Unhandled cast type: %d", _castType);
+ warning("Sprite::getBbox(): Unhandled cast type: %d : castId: %d", _castType, _castId);
}
return result;
}
Commit: 31f008b772c567f0702c30402a9120580b422e7a
https://github.com/scummvm/scummvm/commit/31f008b772c567f0702c30402a9120580b422e7a
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00
Commit Message:
DIRECTOR: Fix segfault in MacWindowManager::pauseEngine
Changed paths:
engines/director/director.cpp
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 5f1004d519..2ef78e897b 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -136,6 +136,7 @@ Common::Error DirectorEngine::run() {
_wm = new Graphics::MacWindowManager(Graphics::kWMModalMenuMode | Graphics::kWMModeNoDesktop
| Graphics::kWMModeManualDrawWidgets);
+ _wm->setEngine(this);
_lingo = new Lingo(this);
_soundManager = new DirectorSound();
Commit: 6cb1c92e23c62430c08862bc0edcc289825f8c2c
https://github.com/scummvm/scummvm/commit/6cb1c92e23c62430c08862bc0edcc289825f8c2c
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00
Commit Message:
GRAPHICS: MACGUI: Add fullscreen menu-on-demand mode
Changed paths:
graphics/macgui/macwindowmanager.cpp
graphics/macgui/macwindowmanager.h
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index bc5643a16c..c9662e315b 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -397,7 +397,7 @@ void MacWindowManager::draw() {
}
// Menu is drawn on top of everything and always
- if (_menu)
+ if (_menu && !(_mode & kWMModeFullscreen))
_menu->draw(_screen, _fullRefresh);
_fullRefresh = false;
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 31c4137b73..70cd0de4aa 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -65,7 +65,8 @@ enum {
kWMModalMenuMode = (1 << 2),
kWMModeForceBuiltinFonts= (1 << 3),
kWMModeUnicode = (1 << 4),
- kWMModeManualDrawWidgets= (1 << 5)
+ kWMModeManualDrawWidgets= (1 << 5),
+ kWMModeFullscreen = (1 << 6)
};
}
Commit: 3e5c119639b2becafb73426082fa99c8d6a77260
https://github.com/scummvm/scummvm/commit/3e5c119639b2becafb73426082fa99c8d6a77260
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00
Commit Message:
DIRECTOR: Use WM menu-on-demand fullscreen mode
Changed paths:
engines/director/director.cpp
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 2ef78e897b..d765e4555f 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -135,7 +135,7 @@ Common::Error DirectorEngine::run() {
_soundManager = nullptr;
_wm = new Graphics::MacWindowManager(Graphics::kWMModalMenuMode | Graphics::kWMModeNoDesktop
- | Graphics::kWMModeManualDrawWidgets);
+ | Graphics::kWMModeManualDrawWidgets | Graphics::kWMModeFullscreen);
_wm->setEngine(this);
_lingo = new Lingo(this);
Commit: 84cb2c995558326b633811f63dc980f884088334
https://github.com/scummvm/scummvm/commit/84cb2c995558326b633811f63dc980f884088334
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00
Commit Message:
DIRECTOR: Do not clip drawRect to maskSurface
Changed paths:
engines/director/ink.cpp
diff --git a/engines/director/ink.cpp b/engines/director/ink.cpp
index 8fb195541b..117229bf76 100644
--- a/engines/director/ink.cpp
+++ b/engines/director/ink.cpp
@@ -41,9 +41,6 @@ void Score::inkBasedBlit(Graphics::ManagedSurface *maskSurface, const Graphics::
maskSurface->clear(0);
}
- drawRect.clip(Common::Rect(_maskSurface->w, _maskSurface->h));
-
-
if (drawRect.isEmpty()) {
warning("Score::inkBasedBlit(): empty drawRect");
return;
Commit: 0ca34f6e926b71130e81fd92d4ffcadb3048290a
https://github.com/scummvm/scummvm/commit/0ca34f6e926b71130e81fd92d4ffcadb3048290a
Author: Nathanael Gentry (nathanael.gentrydb8 at gmail.com)
Date: 2020-06-01T19:00:27+02:00
Commit Message:
DIRECTOR: Account for null cast in drawReverseSprite
Changed paths:
engines/director/ink.cpp
diff --git a/engines/director/ink.cpp b/engines/director/ink.cpp
index 117229bf76..80a1d5b575 100644
--- a/engines/director/ink.cpp
+++ b/engines/director/ink.cpp
@@ -138,7 +138,7 @@ void Score::drawReverseSprite(const Graphics::Surface &sprite, Common::Rect &dra
byte srcColor = *src;
for (int j = 0; j < drawRect.width(); j++) {
- if (_sprites[spriteId]->_cast->_type == kCastShape)
+ if (!_sprites[spriteId]->_cast || _sprites[spriteId]->_cast->_type == kCastShape)
srcColor = 0x0;
else
srcColor = *src;
@@ -147,7 +147,7 @@ void Score::drawReverseSprite(const Graphics::Surface &sprite, Common::Rect &dra
// TODO: This entire reverse colour attempt needs a lot more testing on
// a lot more colour depths.
if (srcColor != skipColor) {
- if (_sprites[targetSprite]->_cast->_type != kCastBitmap) {
+ if (!_sprites[targetSprite]->_cast || _sprites[targetSprite]->_cast->_type != kCastBitmap) {
if (*dst == 0 || *dst == 255) {
*dst = _vm->transformColor(*dst);
} else if (srcColor == 255 || srcColor == 0) {
More information about the Scummvm-git-logs
mailing list