[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