CrystalSpace

Public API Reference

csutil/event.h

Go to the documentation of this file.
00001 /*
00002     Event system related helpers
00003     Copyright (C) 2003 by Jorrit Tyberghein
00004               (C) 2003 by Frank Richter
00005               (C) 2005 by Adam D. Bradley <[email protected]>
00006 
00007     This library is free software; you can redistribute it and/or
00008     modify it under the terms of the GNU Library General Public
00009     License as published by the Free Software Foundation; either
00010     version 2 of the License, or (at your option) any later version.
00011   
00012     This library is distributed in the hope that it will be useful,
00013     but WITHOUT ANY WARRANTY; without even the implied warranty of
00014     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00015     Library General Public License for more details.
00016   
00017     You should have received a copy of the GNU Library General Public
00018     License along with this library; if not, write to the Free
00019     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00020 */
00021 
00022 #ifndef __CS_CSUTIL_EVENT_H__
00023 #define __CS_CSUTIL_EVENT_H__
00024 
00025 #include "csextern.h"
00026 #include "iutil/event.h"
00027 #include "iutil/eventhandlers.h"
00028 
00041 class CS_CRYSTALSPACE_EXPORT csKeyEventHelper
00042 {
00043 public:
00045   CS_PURE_METHOD static utf32_char GetRawCode (const iEvent* event);
00047   CS_PURE_METHOD static utf32_char GetCookedCode (const iEvent* event);
00049   static void GetModifiers (const iEvent* event, csKeyModifiers& modifiers);
00051   CS_PURE_METHOD static csKeyEventType GetEventType (const iEvent* event);
00056   CS_PURE_METHOD static bool GetAutoRepeat (const iEvent* event);
00058   CS_PURE_METHOD static csKeyCharType GetCharacterType (const iEvent* event);
00060   static bool GetEventData (const iEvent* event, csKeyEventData& data);
00066   CS_CONST_METHOD static uint32 GetModifiersBits (
00067     const csKeyModifiers& modifiers);
00072   CS_PURE_METHOD static uint32 GetModifiersBits (const iEvent* event);
00080   static void GetModifiers (uint32 mask, csKeyModifiers& modifiers);
00081 };
00084 /* forward declaration */
00085 class csEvent;
00086 
00092 class CS_CRYSTALSPACE_EXPORT csMouseEventHelper
00093 {
00094 public:
00096 
00097   static csEvent *NewEvent (csRef<iEventNameRegistry> &reg, 
00098     csTicks, csEventID name, csMouseEventType etype, int x, int y, 
00099     uint32 AxesChanged, uint button, bool buttonstate, uint32 buttonMask, 
00100     uint32 modifiers);
00101   static csEvent *NewEvent (csRef<iEventNameRegistry> &reg, csTicks, 
00102     csEventID name, uint8 n, csMouseEventType etype, int x, int y, 
00103     uint32 axesChanged, uint button, bool buttonstate, uint32 buttonMask, 
00104     uint32 modifiers);
00105   static csEvent *NewEvent (csRef<iEventNameRegistry> &reg, csTicks, 
00106     csEventID name, uint8 n, csMouseEventType etype, const int32 *axes, 
00107     uint8 numAxes, uint32 axesChanged, uint button, bool buttonstate, 
00108     uint32 buttonMask, uint32 modifiers);
00110 
00112   CS_PURE_METHOD static csMouseEventType GetEventType (const iEvent* event);
00114   CS_PURE_METHOD static uint GetNumber(const iEvent *event);
00116   CS_PURE_METHOD static int GetX(const iEvent *event)
00117   { return csMouseEventHelper::GetAxis(event, 0); }
00119   CS_PURE_METHOD static int GetY(const iEvent *event)
00120   { return csMouseEventHelper::GetAxis(event, 1); }
00122   CS_PURE_METHOD static int GetAxis(const iEvent *event, uint axis);
00124   CS_PURE_METHOD static uint GetNumAxes(const iEvent *event);
00126   CS_PURE_METHOD static uint GetButton(const iEvent *event);
00128   CS_PURE_METHOD static bool GetButtonState(const iEvent *event);
00130   CS_PURE_METHOD static uint32 GetButtonMask(const iEvent *event);
00132   CS_PURE_METHOD static void GetModifiers(const iEvent *event, 
00133     csKeyModifiers& modifiers) 
00134   { csKeyEventHelper::GetModifiers(event, modifiers); }
00136   CS_PURE_METHOD static uint32 GetModifiers(const iEvent *event) 
00137   { 
00138     csKeyModifiers modifiers; 
00139     csKeyEventHelper::GetModifiers(event, modifiers); 
00140     return csKeyEventHelper::GetModifiersBits(modifiers); 
00141   }
00143   static bool GetEventData (const iEvent* event, 
00144     csMouseEventData& data);
00145 };
00146 
00154 class CS_CRYSTALSPACE_EXPORT csJoystickEventHelper
00155 {
00156 public:
00158 
00159   static csEvent *NewEvent (csRef<iEventNameRegistry> &reg, csTicks, 
00160     csEventID name, int n, int x, int y, uint32 axesChanged, uint button, 
00161     bool buttonState, uint32 buttonMask, uint32 modifiers);
00162   static csEvent *NewEvent (csRef<iEventNameRegistry> &reg, csTicks, 
00163     csEventID name, int n, const int32* axes, uint8 numAxes, uint32 axesChanged, 
00164     uint button, bool buttonState, uint32 buttonMask, uint32 modifiers);
00166 
00168   CS_PURE_METHOD static uint GetNumber(const iEvent *event);
00170   CS_PURE_METHOD CS_DEPRECATED_METHOD static int GetX(const iEvent *event) 
00171   { return csJoystickEventHelper::GetAxis(event, 0); }
00173   CS_PURE_METHOD CS_DEPRECATED_METHOD static int GetY(const iEvent *event) 
00174   { return csJoystickEventHelper::GetAxis(event, 1); }
00176   CS_PURE_METHOD static int GetAxis(const iEvent *event, uint);
00178   CS_PURE_METHOD static uint GetNumAxes(const iEvent *);
00180   CS_PURE_METHOD static uint GetButton(const iEvent *event);
00182   CS_PURE_METHOD static bool GetButtonState(const iEvent *event);
00184   CS_PURE_METHOD static uint32 GetButtonMask(const iEvent *event);
00186   static void GetModifiers(const iEvent *event, csKeyModifiers& modifiers) 
00187   { csKeyEventHelper::GetModifiers(event, modifiers); }
00189   CS_PURE_METHOD static uint32 GetModifiers(const iEvent *event) 
00190   { 
00191     csKeyModifiers modifiers; 
00192     csKeyEventHelper::GetModifiers(event, modifiers); 
00193     return csKeyEventHelper::GetModifiersBits(modifiers); 
00194   }
00196   static bool GetEventData (const iEvent* event, csJoystickEventData& data);
00197 };
00198 
00206 class CS_CRYSTALSPACE_EXPORT csInputEventHelper
00207 {
00208 public:
00210   CS_PURE_METHOD static uint GetButton (iEventNameRegistry *,
00211         const iEvent *event);
00213   CS_PURE_METHOD static bool GetButtonState (iEventNameRegistry *,
00214         const iEvent *event);
00215 };
00216 
00224 class CS_CRYSTALSPACE_EXPORT csCommandEventHelper
00225 {
00226 public:
00228   static csEvent *NewEvent (csTicks, csEventID name, bool Broadcast, 
00229     intptr_t info = 0);
00230 
00232   CS_PURE_METHOD static uint GetCode(const iEvent *event);
00234   CS_PURE_METHOD static intptr_t GetInfo(const iEvent *event);
00236   static bool GetEventData (const iEvent* event, csCommandEventData& data);
00237 };
00238 
00241 struct iEventQueue;
00242 struct iObjectRegistry;
00243 
00244 namespace CS
00245 {
00246 
00252 csHandlerID CS_CRYSTALSPACE_EXPORT RegisterWeakListener (iEventQueue *q, 
00253   iEventHandler *listener, csRef<iEventHandler> &handler);
00254 csHandlerID CS_CRYSTALSPACE_EXPORT RegisterWeakListener (iEventQueue *q, 
00255   iEventHandler *listener, const csEventID &ename, csRef<iEventHandler> &handler);
00256 csHandlerID CS_CRYSTALSPACE_EXPORT RegisterWeakListener (iEventQueue *q, 
00257   iEventHandler *listener, const csEventID ename[], csRef<iEventHandler> &handler);
00258 
00263 void CS_CRYSTALSPACE_EXPORT RemoveWeakListener (iEventQueue *q, 
00264   csRef<iEventHandler> &handler);
00265 
00266 } // namespace CS
00267   
00270 #endif // __CS_CSUTIL_EVENT_H__

Generated for Crystal Space by doxygen 1.4.7