00001
00002 #ifndef INCLUDED_VisionEvent_h
00003 #define INCLUDED_VisionEvent_h
00004
00005 #include "EventBase.h"
00006
00007
00008 namespace VisionEventNS {
00009
00010 enum VisionSourceID_t {
00011 PinkBallSID=0,
00012 RedBallSID=0,
00013 HandSID,
00014 ThumbsupSID,
00015 ThingSID,
00016 MarkersSID
00017 };
00018 }
00019
00020
00021 class VisionEvent : public EventBase {
00022 public:
00023
00024 VisionEvent() : EventBase(EventBase::visionEGID,(unsigned int)-1,EventBase::statusETID,0),_cenX(0),_cenY(0),_distance(),_property(-1) {}
00025
00026 VisionEvent(EventTypeID_t tid, unsigned int sid) : EventBase(EventBase::visionEGID,sid,tid,0),_cenX(0),_cenY(0),_distance(),_property(-1) {}
00027
00028 VisionEvent(EventTypeID_t tid, unsigned int sid, float cenX, float cenY) : EventBase(EventBase::visionEGID,sid,tid,0),_cenX(cenX),_cenY(cenY),_distance(),_property(-1) {}
00029
00030 float getCenterX() const { return _cenX;}
00031 VisionEvent& setCenterX(float cenX) { _cenX=cenX; return *this;}
00032
00033 float getCenterY() const { return _cenY;}
00034 VisionEvent& setCenterY(float cenY) { _cenY=cenY; return *this;}
00035
00036 float getDistance() const { return _distance;}
00037 VisionEvent& setDistance(float dist) { _distance=dist; return *this;}
00038
00039 int getProperty() const { return _property;}
00040 VisionEvent& setProperty(int property) { _property=property; return *this;}
00041
00042 virtual unsigned int getBinSize() const {
00043 unsigned int used=EventBase::getBinSize();
00044 used+=creatorSize("EventBase::VisionEvent");
00045 used+=sizeof(_cenX);
00046 used+=sizeof(_cenY);
00047 used+=sizeof(_distance);
00048 used+=sizeof(_property);
00049 return used;
00050 }
00051
00052 virtual unsigned int LoadBuffer(const char buf[], unsigned int len) {
00053 unsigned int origlen=len;
00054 unsigned int used;
00055 if(0==(used=EventBase::LoadBuffer(buf,len))) return 0;
00056 len-=used; buf+=used;
00057 if(0==(used=checkCreator("EventBase::VisionEvent",buf,len,true))) return 0;
00058 len-=used; buf+=used;
00059 if(0==(used=decode(_cenX,buf,len))) return 0;
00060 len-=used; buf+=used;
00061 if(0==(used=decode(_cenY,buf,len))) return 0;
00062 len-=used; buf+=used;
00063 if(0==(used=decode(_distance,buf,len))) return 0;
00064 len-=used; buf+=used;
00065 if(0==(used=decode(_property,buf,len))) return 0;
00066 len-=used; buf+=used;
00067 return origlen-len;
00068 }
00069
00070 virtual unsigned int SaveBuffer(char buf[], unsigned int len) const {
00071 unsigned int origlen=len;
00072 unsigned int used;
00073 if(0==(used=EventBase::SaveBuffer(buf,len))) return 0;
00074 len-=used; buf+=used;
00075 if(0==(used=saveCreator("EventBase::VisionEvent",buf,len))) return 0;
00076 len-=used; buf+=used;
00077 if(0==(used=encode(_cenX,buf,len))) return 0;
00078 len-=used; buf+=used;
00079 if(0==(used=encode(_cenY,buf,len))) return 0;
00080 len-=used; buf+=used;
00081 if(0==(used=encode(_distance,buf,len))) return 0;
00082 len-=used; buf+=used;
00083 if(0==(used=encode(_property,buf,len))) return 0;
00084 len-=used; buf+=used;
00085 return origlen-len;
00086 }
00087
00088 protected:
00089 float _cenX;
00090 float _cenY;
00091 float _distance;
00092 int _property;
00093 };
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 #endif