[Scummvm-cvs-logs] scummvm master -> b4a3c06d911c488c8afc10ea3405b1d8ac053ef3

sev- sev at scummvm.org
Wed Apr 13 21:43:08 CEST 2016


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b4a3c06d91 WAGE: Basic stuff to MacWindowManager


Commit: b4a3c06d911c488c8afc10ea3405b1d8ac053ef3
    https://github.com/scummvm/scummvm/commit/b4a3c06d911c488c8afc10ea3405b1d8ac053ef3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-13T21:42:50+02:00

Commit Message:
WAGE: Basic stuff to MacWindowManager

Changed paths:
    engines/wage/macwindow.cpp
    engines/wage/macwindow.h
    engines/wage/macwindowmanager.cpp
    engines/wage/macwindowmanager.h



diff --git a/engines/wage/macwindow.cpp b/engines/wage/macwindow.cpp
index a745755..99d0ad0 100644
--- a/engines/wage/macwindow.cpp
+++ b/engines/wage/macwindow.cpp
@@ -49,7 +49,7 @@
 
 namespace Wage {
 
-MacWindow::MacWindow(WindowType type) : _type(type) {
+MacWindow::MacWindow(bool scrollable, int id) : _scrollable(scrollable), _id(id) {
 	_active = false;
 	_borderIsDirty = true;
 }
@@ -69,9 +69,16 @@ void MacWindow::resize(int w, int h) {
 	_surface.free();
 
 	_surface.create(w, h, Graphics::PixelFormat::createFormatCLUT8());
+
+	_dims.setWidth(w);
+	_dims.setHeight(h);
+}
+
+void MacWindow::move(int x, int y) {
+	_dims.moveTo(x, y);
 }
 
-void MacWindow::draw(Graphics::Surface *g, int x, int y) {
+void MacWindow::draw(Graphics::Surface *g) {
 	if (_borderIsDirty)
 		drawBorder();
 }
diff --git a/engines/wage/macwindow.h b/engines/wage/macwindow.h
index 4efdbd0..44f25b6 100644
--- a/engines/wage/macwindow.h
+++ b/engines/wage/macwindow.h
@@ -58,10 +58,12 @@ enum WindowType {
 };
 
 class MacWindow {
-	MacWindow(WindowType type);
+public:
+	MacWindow(bool scrollable, int id);
 	~MacWindow();
+	void move(int x, int y);
 	void resize(int w, int h);
-	void draw(Graphics::Surface *g, int x, int y);
+	void draw(Graphics::Surface *g);
 	void setActive(bool active);
 	Graphics::ManagedSurface *getSurface() { return &_surface; }
 
@@ -71,9 +73,12 @@ private:
 private:
 	Graphics::ManagedSurface _surface;
 	Graphics::ManagedSurface _borderSurface;
-	WindowType _type;
+	bool _scrollable;
+	int _id;
 	bool _active;
 	bool _borderIsDirty;
+
+	Common::Rect _dims;
 };
 
 } // End of namespace Wage
diff --git a/engines/wage/macwindowmanager.cpp b/engines/wage/macwindowmanager.cpp
index 02e47a1..5717361 100644
--- a/engines/wage/macwindowmanager.cpp
+++ b/engines/wage/macwindowmanager.cpp
@@ -45,14 +45,60 @@
  *
  */
 
+#include "common/list.h"
+#include "common/array.h"
+
+#include "graphics/surface.h"
+#include "wage/macwindow.h"
 #include "wage/macwindowmanager.h"
 
 namespace Wage {
 
 MacWindowManager::MacWindowManager() {
+    _lastId = 0;
+    _activeWindow = -1;
 }
 
 MacWindowManager::~MacWindowManager() {
+    for (uint i = 0; i < _lastId; i++)
+        delete _windows[i];
+}
+
+int MacWindowManager::add(bool scrollable) {
+    MacWindow *w = new MacWindow(scrollable, _lastId);
+
+    _windows.push_back(w);
+    _windowStack.push_back(w);
+
+    _activeWindow = _lastId;
+
+    _lastId++;
+
+    return _activeWindow;
+}
+
+void MacWindowManager::setActive(int id) {
+    if (_activeWindow == id)
+        return;
+
+    if (_activeWindow != -1)
+        _windows[_activeWindow]->setActive(false);
+
+    _windows[id]->setActive(true);
+
+    _windowStack.remove(_windows[id]);
+    _windowStack.push_back(_windows[id]);
+
+    _fullRefresh = true;
+}
+
+void MacWindowManager::draw(Graphics::Surface *g) {
+    if (_fullRefresh) {
+        for (Common::List<MacWindow *>::const_iterator it = _windowStack.begin(); it != _windowStack.end(); it++)
+            (*it)->draw(g);
+    } else {
+        _windowStack.back()->draw(g);
+    }
 }
 
 } // End of namespace Wage
diff --git a/engines/wage/macwindowmanager.h b/engines/wage/macwindowmanager.h
index eaec462..0c35356 100644
--- a/engines/wage/macwindowmanager.h
+++ b/engines/wage/macwindowmanager.h
@@ -50,9 +50,26 @@
 
 namespace Wage {
 
+class MacWindow;
+
 class MacWindowManager {
+public:
 	MacWindowManager();
 	~MacWindowManager();
+
+	int add(bool scrollable);
+	void setActive(int id);
+
+	void draw(Graphics::Surface *g);
+
+private:
+	Common::List<MacWindow *> _windowStack;
+	Common::Array<MacWindow *> _windows;
+
+	int _lastId;
+	int _activeWindow;
+
+	bool _fullRefresh;
 };
 
 } // End of namespace Wage






More information about the Scummvm-git-logs mailing list