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