[Scummvm-git-logs] scummvm master -> 4ec37c07cf01c8b7bbe204f12d32d03d89c214cc
djsrv
dservilla at gmail.com
Thu Aug 6 18:55:33 UTC 2020
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
efaf69a617 DIRECTOR: Add _isStage to Window
f5d1858da9 GRAPHICS: MACGUI: Allow border to be changed
752833ff39 GRAPHICS: MACGUI: Set _borderIsDirty on change
4ec37c07cf DIRECTOR: LINGO: Implement kTheWindowType
Commit: efaf69a61785325930bfb4743eacb691d926ad36
https://github.com/scummvm/scummvm/commit/efaf69a61785325930bfb4743eacb691d926ad36
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-06T13:50:09-04:00
Commit Message:
DIRECTOR: Add _isStage to Window
Changed paths:
engines/director/director.cpp
engines/director/lingo/lingo-builtins.cpp
engines/director/window.cpp
engines/director/window.h
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 79d62095d5..dc012285c6 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -152,7 +152,7 @@ Common::Error DirectorEngine::run() {
_wm->setEngine(this);
- _stage = new Window(_wm->getNextId(), false, false, false, _wm, this);
+ _stage = new Window(_wm->getNextId(), false, false, false, _wm, this, true);
*_stage->_refCount += 1;
if (debugChannelSet(-1, kDebugDesktop))
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 0d890e814a..7b4e211a78 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -2370,7 +2370,7 @@ void LB::b_window(int nargs) {
}
Graphics::MacWindowManager *wm = g_director->getMacWindowManager();
- Window *window = new Window(wm->getNextId(), false, false, false, wm, g_director);
+ Window *window = new Window(wm->getNextId(), false, false, false, wm, g_director, false);
window->setName(windowName);
window->setTitle(windowName);
window->resize(1, 1, true);
diff --git a/engines/director/window.cpp b/engines/director/window.cpp
index 7b43804ab0..8d748115e7 100644
--- a/engines/director/window.cpp
+++ b/engines/director/window.cpp
@@ -41,9 +41,10 @@
namespace Director {
-Window::Window(int id, bool scrollable, bool resizable, bool editable, Graphics::MacWindowManager *wm, DirectorEngine *vm)
+Window::Window(int id, bool scrollable, bool resizable, bool editable, Graphics::MacWindowManager *wm, DirectorEngine *vm, bool isStage)
: MacWindow(id, scrollable, resizable, editable, wm), Object<Window>("Window") {
_vm = vm;
+ _isStage = isStage;
_stageColor = 0;
_puppetTransition = nullptr;
diff --git a/engines/director/window.h b/engines/director/window.h
index e21a85165e..2e3804b669 100644
--- a/engines/director/window.h
+++ b/engines/director/window.h
@@ -88,7 +88,7 @@ struct TransParams {
class Window : public Graphics::MacWindow, public Object<Window> {
public:
- Window(int id, bool scrollable, bool resizable, bool editable, Graphics::MacWindowManager *wm, DirectorEngine *vm);
+ Window(int id, bool scrollable, bool resizable, bool editable, Graphics::MacWindowManager *wm, DirectorEngine *vm, bool isStage);
~Window();
bool render(bool forceRedraw = false, Graphics::ManagedSurface *blitTo = nullptr);
@@ -168,6 +168,7 @@ private:
uint _stageColor;
DirectorEngine *_vm;
+ bool _isStage;
Archive *_mainArchive;
Common::MacResManager *_macBinary;
Movie *_currentMovie;
Commit: f5d1858da93b6a0fd0885fb17481d8b0c74eee11
https://github.com/scummvm/scummvm/commit/f5d1858da93b6a0fd0885fb17481d8b0c74eee11
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-06T14:29:24-04:00
Commit Message:
GRAPHICS: MACGUI: Allow border to be changed
Changed paths:
graphics/macgui/macwindowborder.cpp
diff --git a/graphics/macgui/macwindowborder.cpp b/graphics/macgui/macwindowborder.cpp
index 9cff3a71ba..19f055cb1a 100644
--- a/graphics/macgui/macwindowborder.cpp
+++ b/graphics/macgui/macwindowborder.cpp
@@ -54,7 +54,9 @@ bool MacWindowBorder::hasBorder(bool active) {
}
void MacWindowBorder::addActiveBorder(TransparentSurface *source) {
- assert(!_activeBorder);
+ if (_activeBorder)
+ delete _activeBorder;
+
_activeBorder = new NinePatchBitmap(source, true);
_activeInitialized = true;
@@ -63,7 +65,9 @@ void MacWindowBorder::addActiveBorder(TransparentSurface *source) {
}
void MacWindowBorder::addInactiveBorder(TransparentSurface *source) {
- assert(!_inactiveBorder);
+ if (_inactiveBorder)
+ delete _inactiveBorder;
+
_inactiveBorder = new NinePatchBitmap(source, true);
_inactiveInitialized = true;
Commit: 752833ff39b7bbfad8d377d738222a7fc2cb2cac
https://github.com/scummvm/scummvm/commit/752833ff39b7bbfad8d377d738222a7fc2cb2cac
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-06T14:45:27-04:00
Commit Message:
GRAPHICS: MACGUI: Set _borderIsDirty on change
Changed paths:
graphics/macgui/macwindow.cpp
diff --git a/graphics/macgui/macwindow.cpp b/graphics/macgui/macwindow.cpp
index bbabc1373e..73a56539c4 100644
--- a/graphics/macgui/macwindow.cpp
+++ b/graphics/macgui/macwindow.cpp
@@ -242,6 +242,7 @@ void MacWindow::updateOuterDims() {
_dims = _innerDims;
_dims.grow(kBorderWidth);
}
+ _borderIsDirty = true;
}
void MacWindow::drawBorder() {
Commit: 4ec37c07cf01c8b7bbe204f12d32d03d89c214cc
https://github.com/scummvm/scummvm/commit/4ec37c07cf01c8b7bbe204f12d32d03d89c214cc
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-06T14:50:59-04:00
Commit Message:
DIRECTOR: LINGO: Implement kTheWindowType
Changed paths:
engines/director/director.cpp
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-object.cpp
engines/director/window.cpp
engines/director/window.h
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index dc012285c6..324d51f92d 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -155,9 +155,7 @@ Common::Error DirectorEngine::run() {
_stage = new Window(_wm->getNextId(), false, false, false, _wm, this, true);
*_stage->_refCount += 1;
- if (debugChannelSet(-1, kDebugDesktop))
- _stage->setBorderType(3);
- else
+ if (!debugChannelSet(-1, kDebugDesktop))
_stage->disableBorder();
_surface = new Graphics::ManagedSurface;
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 7b4e211a78..a7dab11c6e 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -2375,7 +2375,6 @@ void LB::b_window(int nargs) {
window->setTitle(windowName);
window->resize(1, 1, true);
window->setVisible(false, true);
- window->setBorderType(0);
wm->addWindowInitialized(window);
windowList->push_back(window);
g_lingo->push(window);
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index 0af98b5212..e69ca946f1 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -368,6 +368,8 @@ Datum Window::getField(int field) {
return isTitleVisible();
case kTheVisible:
return isVisible();
+ case kTheWindowType:
+ return getWindowType();
default:
warning("Window::getField: unhandled field '%s'", g_lingo->field2str(field));
return Datum();
@@ -385,6 +387,9 @@ bool Window::setField(int field, const Datum &value) {
case kTheVisible:
setVisible(value.asInt());
return true;
+ case kTheWindowType:
+ setWindowType(value.asInt());
+ return true;
default:
warning("Window::setField: unhandled field '%s'", g_lingo->field2str(field));
return false;
diff --git a/engines/director/window.cpp b/engines/director/window.cpp
index 8d748115e7..4490129226 100644
--- a/engines/director/window.cpp
+++ b/engines/director/window.cpp
@@ -56,6 +56,8 @@ Window::Window(int id, bool scrollable, bool resizable, bool editable, Graphics:
_objType = kWindowObj;
_startFrame = _vm->getStartMovie().startFrame;
+
+ setWindowType(0);
}
Window::~Window() {
@@ -392,6 +394,14 @@ bool Window::setNextMovie(Common::String &movieFilenameRaw) {
return true;
}
+void Window::updateBorderType() {
+ if (_isStage) {
+ setBorderType(3);
+ } else {
+ setBorderType(MAX(0, MIN(_windowType, 16)));
+ }
+}
+
bool Window::step() {
// finish last movie
if (_currentMovie && _currentMovie->getScore()->_playState == kPlayStopped) {
diff --git a/engines/director/window.h b/engines/director/window.h
index 2e3804b669..525912b4b9 100644
--- a/engines/director/window.h
+++ b/engines/director/window.h
@@ -122,6 +122,11 @@ class Window : public Graphics::MacWindow, public Object<Window> {
virtual void setVisible(bool visible, bool silent = false);
bool setNextMovie(Common::String &movieFilenameRaw);
+ void setWindowType(int type) { _windowType = type; updateBorderType(); }
+ int getWindowType() const { return _windowType; }
+
+ void updateBorderType();
+
bool step();
// events.cpp
@@ -176,6 +181,8 @@ private:
Common::StringArray _movieQueue;
int16 _startFrame;
+ int _windowType;
+
private:
int preprocessColor(DirectorPlotData *p, int src);
More information about the Scummvm-git-logs
mailing list