fshake3d
0.0.1
FreeformDensity3DSurfaceEditor
|
00001 #ifndef UI_EVENT_HPP 00002 #define UI_EVENT_HPP 00003 00004 #include "math.hpp" 00005 00006 class Event; 00007 class EventSource; 00008 class EventTarget; 00009 00010 class EventSource 00011 { 00012 public: 00013 EventSource() : mpEventTarget(0) { } 00014 void setEventTarget(EventTarget* aEventTarget) { mpEventTarget = aEventTarget; } 00015 EventTarget* getEventTarget() { return mpEventTarget; } 00016 private: 00017 EventTarget* mpEventTarget; 00018 }; 00019 00020 class EventTarget 00021 { 00022 public: 00023 virtual void onEvent(Event& e) = 0; 00024 }; 00025 00026 enum EventType 00027 { 00028 EVENT_NONE = 0 00029 , EVENT_BUTTONDOWN 00030 , EVENT_BUTTONUP 00031 , EVENT_MOUSEMOTION 00032 , EVENT_PICKRAY 00033 , EVENT_KEYDOWN 00034 , EVENT_KEYUP 00035 , EVENT_WINDOWDISPLAY 00036 , EVENT_WINDOWRESHAPE 00037 , EVENT_WINDOWDESTROY 00038 , EVENT_RAY 00039 , EVENT_RAYCAPTUREUPDATE 00040 , EVENT_RAYRELEASE 00041 }; 00042 00043 enum ButtonID 00044 { 00045 BUTTON_LEFT = 0 00046 , BUTTON_RIGHT = 1 00047 , BUTTON_MIDDLE = 2 00048 }; 00049 00050 class Event 00051 { 00052 public: 00053 Event() 00054 : mType(EVENT_NONE) 00055 , mpSource(0) 00056 , mpTarget(0) 00057 , mButton(-1) 00058 , mMouseX(-1) 00059 , mMouseY(-1) 00060 , mKeyCode(0) 00061 { 00062 mDoubleData[0] = 0; 00063 mDoubleData[1] = 0; 00064 mDoubleData[2] = 0; 00065 mDoubleData[3] = 0; 00066 mDoubleData[4] = 0; 00067 mDoubleData[5] = 0; 00068 } 00069 EventType getType() const 00070 { 00071 return mType; 00072 } 00073 void setType(EventType et) 00074 { 00075 mType = et; 00076 } 00077 EventSource* getEventSource() const 00078 { 00079 return mpSource; 00080 } 00081 void setEventSource(EventSource* pSource) 00082 { 00083 mpSource = pSource; 00084 } 00085 EventTarget* getEventTarget() const 00086 { 00087 return mpTarget; 00088 } 00089 void setEventTarget(EventTarget* pTarget) 00090 { 00091 mpTarget = pTarget; 00092 } 00093 int getButton() const 00094 { 00095 return mButton; 00096 } 00097 void setButton(int button) 00098 { 00099 mButton = button; 00100 } 00101 int getMouseX() const 00102 { 00103 return mMouseX; 00104 } 00105 void setMouseX(int x) 00106 { 00107 mMouseX = x; 00108 } 00109 int getMouseY() const 00110 { 00111 return mMouseY; 00112 } 00113 void setMouseY(int y) 00114 { 00115 mMouseY = y; 00116 } 00117 unsigned char getKeyCode() const 00118 { 00119 return mKeyCode; 00120 } 00121 void setKeyCode(unsigned char keycode) 00122 { 00123 mKeyCode = keycode; 00124 } 00125 void setRay(const Rayd& ray) { mRay = ray; } 00126 const Rayd& getRay() { return mRay; } 00127 double getDouble(int index) { return mDoubleData[index]; } 00128 void setDouble(int index, double v) { mDoubleData[index] = v; } 00129 private: 00130 EventSource* mpSource; 00131 EventTarget* mpTarget; 00132 EventType mType; 00133 int mButton; 00134 int mMouseX; 00135 int mMouseY; 00136 unsigned char mKeyCode; 00137 double mDoubleData[6]; 00138 Rayd mRay; 00139 // TODO: use union 00140 }; 00141 00142 #endif // UI_EVENT_HPP