00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef EVENTFILTER_H
00016 #define EVENTFILTER_H
00017
00018 #include <map>
00019 #include <cZUI/event.h>
00020 #include <cZUI/scenenode.h>
00021
00022 using namespace std;
00023
00024 class EventFilter : public SceneNode
00025 {
00026 protected:
00027 map<const char*, int> events;
00028 virtual bool filter( Event * )=0;
00029 public:
00030 void add_event( const char* );
00031 void delete_event( const char* );
00032
00033 bool handle_event( Event * );
00034 EventFilter( BaseSceneNode * );
00035 };
00036
00037
00038
00039
00040 class AllowEventFilter : public EventFilter
00041 {
00042 protected:
00043 bool filter( Event * );
00044 public:
00045 AllowEventFilter( BaseSceneNode * );
00046 };
00047
00048
00049
00050
00051 class DenyEventFilter : public EventFilter
00052 {
00053 protected:
00054 bool filter( Event * );
00055 public:
00056 DenyEventFilter( BaseSceneNode * );
00057 };
00058
00059
00060
00061
00062
00063
00064 class AreaFilter : public SceneNode
00065 {
00066 protected:
00067 double x1, y1, x2, y2;
00068 virtual bool filter( Event * );
00069 public:
00070 AreaFilter( BaseSceneNode *,
00071 double, double, double, double );
00072 bool handle_event( Event * );
00073 };
00074
00075
00076
00077
00078
00079 class AllowAreaFilter : public AllowEventFilter,
00080 public AreaFilter
00081 {
00082 protected:
00083 bool filter( Event * );
00084 public:
00085 AllowAreaFilter( BaseSceneNode* ,
00086 double, double, double, double );
00087 };
00088
00089
00090
00091
00092
00093 class DenyAreaFilter : public DenyEventFilter,
00094 public AreaFilter
00095 {
00096 protected:
00097 bool filter( Event * );
00098 public:
00099 DenyAreaFilter( BaseSceneNode* ,
00100 double, double, double, double );
00101 };
00102
00103 #endif
00104