[Scummvm-cvs-logs] scummvm master -> b8fcb449c40f742a96aa45bcb01044611bfbf8fa
sev-
sev at scummvm.org
Mon Apr 25 17:18:26 CEST 2016
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
438ddd586f WAGE: Splitout BaseMacWindow class
b8fcb449c4 WAGE: Virtualized MacWindow class
Commit: 438ddd586fff6d6a0755aaf83b2d714942cbb9a8
https://github.com/scummvm/scummvm/commit/438ddd586fff6d6a0755aaf83b2d714942cbb9a8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-25T10:41:58+02:00
Commit Message:
WAGE: Splitout BaseMacWindow class
Changed paths:
engines/wage/macwindow.cpp
engines/wage/macwindow.h
diff --git a/engines/wage/macwindow.cpp b/engines/wage/macwindow.cpp
index 076584c..012574a 100644
--- a/engines/wage/macwindow.cpp
+++ b/engines/wage/macwindow.cpp
@@ -55,7 +55,7 @@
namespace Wage {
MacWindow::MacWindow(int id, bool scrollable, bool resizable) :
- _scrollable(scrollable), _id(id), _resizable(resizable) {
+ BaseMacWindow(id), _scrollable(scrollable), _resizable(resizable) {
_active = false;
_borderIsDirty = true;
_contentIsDirty = true;
diff --git a/engines/wage/macwindow.h b/engines/wage/macwindow.h
index 315203b..c90fee8 100644
--- a/engines/wage/macwindow.h
+++ b/engines/wage/macwindow.h
@@ -71,25 +71,48 @@ enum WindowClick {
kBorderResizeButton
};
-class MacWindow {
+class BaseMacWindow {
+public:
+ BaseMacWindow(int id) : _id(id) {}
+ ~BaseMacWindow() {}
+
+ const Common::Rect &getDimensions() { return _dims; }
+ int getId() { return _id; }
+ Graphics::ManagedSurface *getSurface() { return &_surface; }
+
+ bool draw(Graphics::ManagedSurface *g, bool forceRedraw = false) { return false; }
+ bool processEvent(Common::Event &event) { return false; }
+
+ void setCallback(bool (*callback)(WindowClick, Common::Event &, void *), void *data) { _callback = callback; _dataPtr = data; }
+
+protected:
+ int _id;
+
+ Graphics::ManagedSurface _surface;
+
+ Common::Rect _dims;
+
+ bool (*_callback)(WindowClick, Common::Event &, void *);
+ void *_dataPtr;
+};
+
+class MacWindow : public BaseMacWindow {
public:
MacWindow(int id, bool scrollable, bool resizable);
~MacWindow();
void move(int x, int y);
void resize(int w, int h);
void setDimensions(const Common::Rect &r);
- const Common::Rect &getDimensions() { return _dims; }
const Common::Rect &getInnerDimensions() { return _innerDims; }
+
bool draw(Graphics::ManagedSurface *g, bool forceRedraw = false);
+
void setActive(bool active);
- Graphics::ManagedSurface *getSurface() { return &_surface; }
void setTitle(Common::String &title) { _title = title; }
void setHighlight(WindowClick highlightedPart);
void setScroll(float scrollPos, float scrollSize);
void setDirty(bool dirty) { _contentIsDirty = dirty; }
- int getId() { return _id; }
bool processEvent(Common::Event &event);
- void setCallback(bool (*callback)(WindowClick, Common::Event &, void *), void *data) { _callback = callback; _dataPtr = data; }
bool beingDragged() { return _beingDragged; }
bool beingResized() { return _beingResized; }
@@ -103,7 +126,6 @@ private:
WindowClick isInBorder(int x, int y);
private:
- Graphics::ManagedSurface _surface;
Graphics::ManagedSurface _borderSurface;
Graphics::ManagedSurface _composeSurface;
bool _scrollable;
@@ -111,7 +133,6 @@ private:
bool _active;
bool _borderIsDirty;
bool _contentIsDirty;
- int _id;
bool _beingDragged, _beingResized;
int _draggedX, _draggedY;
@@ -119,13 +140,9 @@ private:
WindowClick _highlightedPart;
float _scrollPos, _scrollSize;
- Common::Rect _dims;
Common::Rect _innerDims;
Common::String _title;
-
- bool (*_callback)(WindowClick, Common::Event &, void *);
- void *_dataPtr;
};
} // End of namespace Wage
Commit: b8fcb449c40f742a96aa45bcb01044611bfbf8fa
https://github.com/scummvm/scummvm/commit/b8fcb449c40f742a96aa45bcb01044611bfbf8fa
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-04-25T10:59:16+02:00
Commit Message:
WAGE: Virtualized MacWindow class
Changed paths:
engines/wage/gui.cpp
engines/wage/macwindow.cpp
engines/wage/macwindow.h
engines/wage/macwindowmanager.cpp
engines/wage/macwindowmanager.h
diff --git a/engines/wage/gui.cpp b/engines/wage/gui.cpp
index 50dadc8..2841013 100644
--- a/engines/wage/gui.cpp
+++ b/engines/wage/gui.cpp
@@ -189,10 +189,10 @@ Gui::Gui(WageEngine *engine) {
_menu = new Menu(this);
- _sceneWindow = _wm.add(false, false);
+ _sceneWindow = _wm.addWindow(false, false);
_sceneWindow->setCallback(sceneWindowCallback, this);
- _consoleWindow = _wm.add(true, true);
+ _consoleWindow = _wm.addWindow(true, true);
_consoleWindow->setCallback(consoleWindowCallback, this);
}
diff --git a/engines/wage/macwindow.cpp b/engines/wage/macwindow.cpp
index 012574a..36b27a3 100644
--- a/engines/wage/macwindow.cpp
+++ b/engines/wage/macwindow.cpp
@@ -54,21 +54,28 @@
namespace Wage {
+BaseMacWindow::BaseMacWindow(int id) : _id(id) {
+ _callback = 0;
+ _dataPtr = 0;
+
+ _contentIsDirty = true;
+
+ _type = kWindowUnknown;
+}
+
MacWindow::MacWindow(int id, bool scrollable, bool resizable) :
BaseMacWindow(id), _scrollable(scrollable), _resizable(resizable) {
_active = false;
_borderIsDirty = true;
- _contentIsDirty = true;
_highlightedPart = kBorderNone;
_scrollPos = _scrollSize = 0.0;
- _callback = 0;
- _dataPtr = 0;
-
_beingDragged = false;
_beingResized = false;
+
+ _type = kWindowWindow;
}
MacWindow::~MacWindow() {
diff --git a/engines/wage/macwindow.h b/engines/wage/macwindow.h
index c90fee8..797e2f9 100644
--- a/engines/wage/macwindow.h
+++ b/engines/wage/macwindow.h
@@ -53,8 +53,9 @@
namespace Wage {
enum WindowType {
- kWindowScene,
- kWindowConsole
+ kWindowUnknown,
+ kWindowWindow,
+ kWindowMenu
};
enum {
@@ -73,22 +74,29 @@ enum WindowClick {
class BaseMacWindow {
public:
- BaseMacWindow(int id) : _id(id) {}
- ~BaseMacWindow() {}
+ BaseMacWindow(int id);
+ virtual ~BaseMacWindow() {}
const Common::Rect &getDimensions() { return _dims; }
int getId() { return _id; }
+ WindowType getType() { return _type; }
Graphics::ManagedSurface *getSurface() { return &_surface; }
+ virtual void setActive(bool active) = 0;
+ void setDirty(bool dirty) { _contentIsDirty = dirty; }
+
+ virtual bool draw(Graphics::ManagedSurface *g, bool forceRedraw = false) = 0;
+ virtual bool processEvent(Common::Event &event) = 0;
- bool draw(Graphics::ManagedSurface *g, bool forceRedraw = false) { return false; }
- bool processEvent(Common::Event &event) { return false; }
+ virtual bool hasAllFocus() = 0;
void setCallback(bool (*callback)(WindowClick, Common::Event &, void *), void *data) { _callback = callback; _dataPtr = data; }
protected:
int _id;
+ WindowType _type;
Graphics::ManagedSurface _surface;
+ bool _contentIsDirty;
Common::Rect _dims;
@@ -99,7 +107,7 @@ protected:
class MacWindow : public BaseMacWindow {
public:
MacWindow(int id, bool scrollable, bool resizable);
- ~MacWindow();
+ virtual ~MacWindow();
void move(int x, int y);
void resize(int w, int h);
void setDimensions(const Common::Rect &r);
@@ -111,10 +119,8 @@ public:
void setTitle(Common::String &title) { _title = title; }
void setHighlight(WindowClick highlightedPart);
void setScroll(float scrollPos, float scrollSize);
- void setDirty(bool dirty) { _contentIsDirty = dirty; }
bool processEvent(Common::Event &event);
- bool beingDragged() { return _beingDragged; }
- bool beingResized() { return _beingResized; }
+ bool hasAllFocus() { return _beingDragged || _beingResized; }
private:
void drawBorder();
@@ -132,7 +138,6 @@ private:
bool _resizable;
bool _active;
bool _borderIsDirty;
- bool _contentIsDirty;
bool _beingDragged, _beingResized;
int _draggedX, _draggedY;
diff --git a/engines/wage/macwindowmanager.cpp b/engines/wage/macwindowmanager.cpp
index 7985f5b..a86b16a 100644
--- a/engines/wage/macwindowmanager.cpp
+++ b/engines/wage/macwindowmanager.cpp
@@ -84,7 +84,7 @@ MacWindowManager::~MacWindowManager() {
delete _windows[i];
}
-MacWindow *MacWindowManager::add(bool scrollable, bool resizable) {
+MacWindow *MacWindowManager::addWindow(bool scrollable, bool resizable) {
MacWindow *w = new MacWindow(_lastId, scrollable, resizable);
_windows.push_back(w);
@@ -120,8 +120,8 @@ void MacWindowManager::draw() {
if (_fullRefresh)
drawDesktop();
- for (Common::List<MacWindow *>::const_iterator it = _windowStack.begin(); it != _windowStack.end(); it++) {
- MacWindow *w = *it;
+ for (Common::List<BaseMacWindow *>::const_iterator it = _windowStack.begin(); it != _windowStack.end(); it++) {
+ BaseMacWindow *w = *it;
if (w->draw(_screen, _fullRefresh)) {
w->setDirty(false);
@@ -147,11 +147,11 @@ bool MacWindowManager::processEvent(Common::Event &event) {
event.type != Common::EVENT_LBUTTONUP)
return false;
- for (Common::List<MacWindow *>::const_iterator it = _windowStack.end(); it != _windowStack.begin();) {
+ for (Common::List<BaseMacWindow *>::const_iterator it = _windowStack.end(); it != _windowStack.begin();) {
it--;
- MacWindow *w = *it;
+ BaseMacWindow *w = *it;
- if (w->beingDragged() || w->beingResized() || w->getDimensions().contains(event.mouse.x, event.mouse.y)) {
+ if (w->hasAllFocus() || w->getDimensions().contains(event.mouse.x, event.mouse.y)) {
if (event.type == Common::EVENT_LBUTTONDOWN || event.type == Common::EVENT_LBUTTONUP)
setActive(w->getId());
diff --git a/engines/wage/macwindowmanager.h b/engines/wage/macwindowmanager.h
index 5efd0f4..06b7689 100644
--- a/engines/wage/macwindowmanager.h
+++ b/engines/wage/macwindowmanager.h
@@ -59,7 +59,7 @@ public:
void setScreen(Graphics::ManagedSurface *screen) { _screen = screen; }
- MacWindow *add(bool scrollable, bool resizable);
+ MacWindow *addWindow(bool scrollable, bool resizable);
void setActive(int id);
void setFullRefresh(bool redraw) { _fullRefresh = true; }
@@ -68,7 +68,7 @@ public:
bool processEvent(Common::Event &event);
- MacWindow *getWindow(int id) { return _windows[id]; }
+ BaseMacWindow *getWindow(int id) { return _windows[id]; }
private:
void drawDesktop();
@@ -76,8 +76,8 @@ private:
private:
Graphics::ManagedSurface *_screen;
- Common::List<MacWindow *> _windowStack;
- Common::Array<MacWindow *> _windows;
+ Common::List<BaseMacWindow *> _windowStack;
+ Common::Array<BaseMacWindow *> _windows;
int _lastId;
int _activeWindow;
More information about the Scummvm-git-logs
mailing list