aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/messages/mouse_messages.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/messages/mouse_messages.h')
-rw-r--r--engines/titanic/messages/mouse_messages.h198
1 files changed, 198 insertions, 0 deletions
diff --git a/engines/titanic/messages/mouse_messages.h b/engines/titanic/messages/mouse_messages.h
new file mode 100644
index 0000000000..84d7b8f61c
--- /dev/null
+++ b/engines/titanic/messages/mouse_messages.h
@@ -0,0 +1,198 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef TITANIC_MOUSE_MESSAGES_H
+#define TITANIC_MOUSE_MESSAGES_H
+
+#include "common/rect.h"
+#include "titanic/messages/messages.h"
+
+namespace Titanic {
+
+enum MouseButton { MB_LEFT = 1, MB_MIDDLE = 2, MB_RIGHT = 4 };
+
+class CMouseMsg : public CMessage {
+public:
+ int _buttons;
+ Common::Point _mousePos;
+public:
+ CLASSDEF
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseMsg *>(item) != nullptr;
+ }
+ CMouseMsg() : _buttons(0) {}
+ CMouseMsg(const Common::Point &pt, int buttons) :
+ _mousePos(pt), _buttons(buttons) {}
+};
+
+MSGTARGET(CMouseMoveMsg);
+class CMouseMoveMsg : public CMouseMsg {
+public:
+ CLASSDEF
+ CMouseMoveMsg() : CMouseMsg() {}
+ CMouseMoveMsg(const Common::Point &pt, int buttons) : CMouseMsg(pt, buttons) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseMoveMsg *>(item) != nullptr;
+ }
+ virtual bool handleMessage(const CMouseMoveMsg &msg) { return false; }
+ virtual bool perform(CTreeItem *treeItem) {
+ CMouseMoveMsg *dest = dynamic_cast<CMouseMoveMsg *>(treeItem);
+ return dest != nullptr && dest->handleMessage(*this);
+ }
+};
+
+class CMouseButtonMsg : public CMouseMsg {
+public:
+ int _field10;
+public:
+ CLASSDEF
+ CMouseButtonMsg() : CMouseMsg(), _field10(0) {}
+ CMouseButtonMsg(const Common::Point &pt, int buttons) : CMouseMsg(pt, buttons) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseButtonMsg *>(item) != nullptr;
+ }
+};
+
+MSGTARGET(CMouseButtonDownMsg);
+class CMouseButtonDownMsg : public CMouseButtonMsg {
+public:
+ CLASSDEF
+ CMouseButtonDownMsg() : CMouseButtonMsg() {}
+ CMouseButtonDownMsg(const Common::Point &pt, int buttons) : CMouseButtonMsg(pt, buttons) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseButtonDownMsg *>(item) != nullptr;
+ }
+ virtual bool handleMessage(const CMouseButtonDownMsg &msg) { return false; }
+ virtual bool perform(CTreeItem *treeItem) {
+ CMouseButtonDownMsg *dest = dynamic_cast<CMouseButtonDownMsg *>(treeItem);
+ return dest != nullptr && dest->handleMessage(*this);
+ }
+};
+
+MSGTARGET(CMouseButtonUpMsg);
+class CMouseButtonUpMsg : public CMouseButtonMsg {
+public:
+ CLASSDEF
+ CMouseButtonUpMsg() : CMouseButtonMsg() {}
+ CMouseButtonUpMsg(const Common::Point &pt, int buttons) : CMouseButtonMsg(pt, buttons) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseButtonUpMsg *>(item) != nullptr;
+ }
+ virtual bool handleMessage(const CMouseButtonUpMsg &msg) { return false; }
+ virtual bool perform(CTreeItem *treeItem) {
+ CMouseButtonUpMsg *dest = dynamic_cast<CMouseButtonUpMsg *>(treeItem);
+ return dest != nullptr && dest->handleMessage(*this);
+ }
+};
+
+MSGTARGET(CMouseButtonDoubleClickMsg);
+class CMouseButtonDoubleClickMsg : public CMouseButtonMsg {
+public:
+ CLASSDEF
+ CMouseButtonDoubleClickMsg() : CMouseButtonMsg() {}
+ CMouseButtonDoubleClickMsg(const Common::Point &pt, int buttons) : CMouseButtonMsg(pt, buttons) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseButtonDoubleClickMsg *>(item) != nullptr;
+ }
+ virtual bool handleMessage(const CMouseButtonDoubleClickMsg &msg) { return false; }
+ virtual bool perform(CTreeItem *treeItem) {
+ CMouseButtonDoubleClickMsg *dest = dynamic_cast<CMouseButtonDoubleClickMsg *>(treeItem);
+ return dest != nullptr && dest->handleMessage(*this);
+ }
+};
+
+class CMouseDragMsg : public CMouseMsg {
+public:
+ CLASSDEF
+ CMouseDragMsg() : CMouseMsg() {}
+ CMouseDragMsg(const Common::Point &pt) : CMouseMsg(pt, 0) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseDragMsg *>(item) != nullptr;
+ }
+};
+
+class CMouseDragMoveMsg : public CMouseDragMsg {
+public:
+ CLASSDEF
+ CMouseDragMoveMsg() : CMouseDragMsg() {}
+ CMouseDragMoveMsg(const Common::Point &pt) : CMouseDragMsg(pt) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseDragMoveMsg *>(item) != nullptr;
+ }
+ virtual bool handleMessage(const CMouseDragMoveMsg &msg) { return false; }
+ virtual bool perform(CTreeItem *treeItem) {
+ CMouseDragMoveMsg *dest = dynamic_cast<CMouseDragMoveMsg *>(treeItem);
+ return dest != nullptr && dest->handleMessage(*this);
+ }
+};
+
+MSGTARGET(CMouseDragStartMsg);
+class CMouseDragStartMsg : public CMouseDragMsg {
+public:
+ CTreeItem *_dragItem;
+ int _field14;
+public:
+ CLASSDEF
+ CMouseDragStartMsg() : CMouseDragMsg(), _dragItem(nullptr), _field14(0) {}
+ CMouseDragStartMsg(const Common::Point &pt) : CMouseDragMsg(pt),
+ _dragItem(nullptr), _field14(0) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseDragStartMsg *>(item) != nullptr;
+ }
+ virtual bool handleMessage(const CMouseDragStartMsg &msg) { return false; }
+ virtual bool perform(CTreeItem *treeItem) {
+ CMouseDragStartMsg *dest = dynamic_cast<CMouseDragStartMsg *>(treeItem);
+ return dest != nullptr && dest->handleMessage(*this);
+ }
+};
+
+MSGTARGET(CMouseDragEndMsg);
+class CMouseDragEndMsg : public CMouseDragMsg {
+public:
+ CTreeItem *_dragItem;
+public:
+ CLASSDEF
+ CMouseDragEndMsg() : CMouseDragMsg(), _dragItem(nullptr) {}
+ CMouseDragEndMsg(const Common::Point &pt, CTreeItem *dragItem = nullptr) :
+ CMouseDragMsg(pt), _dragItem(dragItem) {}
+
+ static bool isSupportedBy(const CTreeItem *item) {
+ return dynamic_cast<const CMouseDragEndMsg *>(item) != nullptr;
+ }
+ virtual bool handleMessage(const CMouseDragEndMsg &msg) { return false; }
+ virtual bool perform(CTreeItem *treeItem) {
+ CMouseDragEndMsg *dest = dynamic_cast<CMouseDragEndMsg *>(treeItem);
+ return dest != nullptr && dest->handleMessage(*this);
+ }
+};
+
+} // End of namespace Titanic
+
+#endif /* TITANIC_MOUSE_MESSAGES_H */