00001 #ifndef FCAM_EVENT_H
00002 #define FCAM_EVENT_H
00003
00006
00007 #include "Time.h"
00008 #include <pthread.h>
00009 #include <queue>
00010 #include <string>
00011
00012 namespace FCam {
00013
00014 class EventGenerator;
00015
00018 class Event {
00019 public:
00020 EventGenerator *creator;
00021 int type;
00022 union {
00025 int iData;
00026
00029 float fData;
00030 };
00031 Time time;
00032
00034 std::string description() const;
00035
00044 enum {Error = 0,
00045 Warning,
00046 FocusPressed,
00047 FocusReleased,
00048 ShutterPressed,
00049 ShutterReleased,
00050 N900LensClosed = 10000,
00051 N900LensOpened,
00052 N900SlideOpened,
00053 N900SlideClosed,
00054 F2LensRemoved = 20000,
00055 F2LensInstalled,
00056 F2ZoomChanged,
00057 F2FocusChanged
00058 };
00059 };
00060
00068 class EventGenerator {
00069 public:
00072 virtual std::string getEventString(const Event &) const;
00073
00074 protected:
00075
00078 void postEvent(Event);
00079
00080 private:
00081
00082
00083 static std::queue<Event> _eventQueue;
00084 static pthread_mutex_t _eventQueueMutex;
00085
00086
00087 friend bool getNextEvent(Event *);
00088 };
00089
00090
00115 bool getNextEvent(Event *);
00116
00117 }
00118
00119 #endif