ec_mouseevent.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FIFE_EVENTCHANNEL_MOUSEEVENT_H
00023 #define FIFE_EVENTCHANNEL_MOUSEEVENT_H
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include "eventchannel/base/ec_inputevent.h"
00037
00038 namespace FIFE {
00039
00042 class MouseEvent: public InputEvent {
00043 public:
00047 enum MouseEventType
00048 {
00049 UNKNOWN_EVENT = -1,
00050 MOVED = 0,
00051 PRESSED,
00052 RELEASED,
00053 WHEEL_MOVED_DOWN,
00054 WHEEL_MOVED_UP,
00055 CLICKED,
00056 ENTERED,
00057 EXITED,
00058 DRAGGED
00059 };
00060
00064 enum MouseButtonType
00065 {
00066 EMPTY = 0,
00067 LEFT = 1,
00068 RIGHT = 2,
00069 MIDDLE = 4,
00070 UNKNOWN_BUTTON = 8
00071 };
00072
00073
00076 MouseEvent():
00077 InputEvent(),
00078 m_eventtype(UNKNOWN_EVENT),
00079 m_buttontype(UNKNOWN_BUTTON),
00080 m_x(-1),
00081 m_y(-1) {}
00082
00085 virtual ~MouseEvent() {}
00086
00091 MouseButtonType getButton() const { return m_buttontype; }
00092 void setButton(MouseButtonType type) { m_buttontype = type; }
00093
00098 MouseEventType getType() const { return m_eventtype; }
00099 void setType(MouseEventType type) { m_eventtype = type; }
00100
00106 int getX() const { return m_x; }
00107 void setX(int x) { m_x = x; }
00108
00114 int getY() const { return m_y; }
00115 void setY(int y) { m_y = y; }
00116
00117 virtual bool isAltPressed() const { return InputEvent::isAltPressed(); }
00118 virtual void setAltPressed(bool pressed) { InputEvent::setAltPressed(pressed); }
00119 virtual bool isControlPressed() const { return InputEvent::isControlPressed(); }
00120 virtual void setControlPressed(bool pressed) { InputEvent::setControlPressed(pressed); }
00121 virtual bool isMetaPressed() const { return InputEvent::isMetaPressed(); }
00122 virtual void setMetaPressed(bool pressed) { InputEvent::setMetaPressed(pressed); }
00123 virtual bool isShiftPressed() const { return InputEvent::isShiftPressed(); }
00124 virtual void setShiftPressed(bool pressed) { InputEvent::setShiftPressed(pressed); }
00125
00126 virtual void consume() { InputEvent::consume(); }
00127 virtual bool isConsumed() const { return InputEvent::isConsumed(); }
00128 virtual void consumedByWidgets() { InputEvent::consumedByWidgets(); }
00129 virtual bool isConsumedByWidgets() const { return InputEvent::isConsumedByWidgets(); }
00130 virtual IEventSource* getSource() { return InputEvent::getSource(); }
00131 virtual void setSource(IEventSource* source) { InputEvent::setSource(source); }
00132 virtual int getTimeStamp() const { return InputEvent::getTimeStamp(); }
00133 virtual void setTimeStamp(int timestamp ) { InputEvent::setTimeStamp(timestamp); }
00134
00135 virtual const std::string& getName() const {
00136 const static std::string eventName("MouseEvent");
00137 return eventName;
00138 }
00139 virtual std::string getDebugString() const { return InputEvent::getDebugString(); }
00140 virtual std::string getAttrStr() const {
00141 std::stringstream ss;
00142 ss << InputEvent::getAttrStr() << std::endl;
00143 ss << "event = " << mouseEventType2str(m_eventtype) << ", ";
00144 ss << "button = " << mouseButtonType2str(m_buttontype) << ", ";
00145 ss << "x = " << m_x << ", ";
00146 ss << "y = " << m_y;
00147 return ss.str();
00148 }
00149
00152 inline static std::string mouseEventType2str(MouseEventType t) {
00153 std::string s("unknown");
00154 switch (t) {
00155 case MouseEvent::MOVED:
00156 s = "moved";
00157 break;
00158 case MouseEvent::PRESSED:
00159 s = "pressed";
00160 break;
00161 case MouseEvent::RELEASED:
00162 s = "released";
00163 break;
00164 case MouseEvent::WHEEL_MOVED_DOWN:
00165 s = "wheel_moved_down";
00166 break;
00167 case MouseEvent::WHEEL_MOVED_UP:
00168 s = "wheel_moved_up";
00169 break;
00170 case MouseEvent::CLICKED:
00171 s = "clicked";
00172 break;
00173 case MouseEvent::ENTERED:
00174 s = "entered";
00175 break;
00176 case MouseEvent::EXITED:
00177 s = "excited";
00178 break;
00179 case MouseEvent::DRAGGED:
00180 s = "dragged";
00181 break;
00182 default:
00183 break;
00184 }
00185 return s;
00186 }
00187
00190 inline static std::string mouseButtonType2str(MouseButtonType t) {
00191 std::string s("unknown");
00192 switch (t) {
00193 case MouseEvent::EMPTY:
00194 s = "empty";
00195 break;
00196 case MouseEvent::LEFT:
00197 s = "left";
00198 break;
00199 case MouseEvent::RIGHT:
00200 s = "right";
00201 break;
00202 case MouseEvent::MIDDLE:
00203 s = "middle";
00204 break;
00205 default:
00206 break;
00207 }
00208 return s;
00209 }
00210
00211
00212
00213 private:
00214 MouseEventType m_eventtype;
00215 MouseButtonType m_buttontype;
00216 int m_x;
00217 int m_y;
00218
00219 };
00220
00221 }
00222
00223 #endif