fshake3d  0.0.1
FreeformDensity3DSurfaceEditor
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines
ui_Event.hpp
Go to the documentation of this file.
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