00001
00002 #ifndef INCLUDED_LookoutEvents_h_
00003 #define INCLUDED_LookoutEvents_h_
00004
00005 #include <iostream>
00006
00007 #include "EventBase.h"
00008 #include "DualCoding/LookoutRequests.h"
00009 #include "DualCoding/Sketch.h"
00010 #include "Shared/newmat/newmat.h"
00011
00012
00013
00014 class LookoutEvent : public EventBase {
00015 public:
00016 enum LookoutEventType_t { lookAt, sketch, ir, scan };
00017 virtual LookoutEventType_t getLookoutEventType() const = 0;
00018
00019 LookoutEvent() : EventBase() {}
00020 LookoutEvent(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur=0)
00021 : EventBase(gid,sid,tid,dur) {}
00022 LookoutEvent(EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00023 : EventBase(gid,sid,tid,dur,n,mag) {}
00024
00025 };
00026
00027
00028 class LookoutPointAtEvent : public LookoutEvent {
00029 public:
00030 NEWMAT::Matrix toBaseMatrix;
00031 virtual LookoutEventType_t getLookoutEventType() const { return lookAt; }
00032 LookoutPointAtEvent(const NEWMAT::Matrix& mat) : LookoutEvent(), toBaseMatrix(mat) {}
00033 LookoutPointAtEvent(const NEWMAT::Matrix& mat, EventGeneratorID_t gid,
00034 unsigned int sid, EventTypeID_t tid, unsigned int dur=0)
00035 : LookoutEvent(gid,sid,tid,dur),toBaseMatrix(mat) {}
00036 LookoutPointAtEvent(const NEWMAT::Matrix& mat, EventGeneratorID_t gid,
00037 unsigned int sid, EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00038 : LookoutEvent(gid,sid,tid,dur,n,mag),toBaseMatrix(mat) {}
00039 virtual EventBase* clone() const { return new LookoutPointAtEvent(*this); }
00040 virtual unsigned int getClassTypeID() const { return makeClassTypeID("LOLA"); }
00041 virtual std::string getDescription(bool showTypeSpecific=true, unsigned int verbosity=0) const;
00042 virtual unsigned int getBinSize() const;
00043 virtual unsigned int loadBinaryBuffer(const char buf[], unsigned int len);
00044 virtual unsigned int saveBinaryBuffer(char buf[], unsigned int len) const;
00045 virtual void loadXML(xmlNode* node);
00046 virtual void saveXML(xmlNode * node) const;
00047 };
00048
00049
00050
00051 class LookoutSketchEvent : public LookoutPointAtEvent {
00052 protected:
00053 DualCoding::Sketch<DualCoding::uchar> *img;
00054
00055 public:
00056 virtual LookoutEventType_t getLookoutEventType() const { return sketch; }
00057 LookoutSketchEvent(DualCoding::Sketch<DualCoding::uchar>& _img, const NEWMAT::Matrix& mat)
00058 : LookoutPointAtEvent(mat), img(&_img) {}
00059 LookoutSketchEvent(DualCoding::Sketch<DualCoding::uchar>& _img, const NEWMAT::Matrix& mat,
00060 EventGeneratorID_t gid, unsigned int sid, EventTypeID_t tid, unsigned int dur=0)
00061 : LookoutPointAtEvent(mat,gid,sid,tid,dur), img(&_img) {}
00062 LookoutSketchEvent(DualCoding::Sketch<DualCoding::uchar>& _img, const NEWMAT::Matrix& mat,
00063 EventGeneratorID_t gid, unsigned int sid,
00064 EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00065 : LookoutPointAtEvent(mat,gid,sid,tid,dur,n,mag), img(&_img) {}
00066
00067 LookoutSketchEvent(const LookoutSketchEvent& lose)
00068 : LookoutPointAtEvent(lose), img(lose.img) {}
00069
00070 const DualCoding::Sketch<DualCoding::uchar>& getSketch() const { return *img; }
00071 virtual EventBase* clone() const { return new LookoutSketchEvent(*this); }
00072
00073 private:
00074 LookoutSketchEvent& operator=(const LookoutSketchEvent&);
00075 };
00076
00077 class LookoutIREvent : public LookoutPointAtEvent {
00078 public:
00079 float distance;
00080 virtual LookoutEventType_t getLookoutEventType() const { return ir; }
00081 LookoutIREvent(float dist, const NEWMAT::Matrix& mat) : LookoutPointAtEvent(mat), distance(dist) {}
00082 LookoutIREvent(float dist, const NEWMAT::Matrix& mat, EventGeneratorID_t gid,
00083 unsigned int sid, EventTypeID_t tid, unsigned int dur=0)
00084 : LookoutPointAtEvent(mat, gid,sid,tid,dur), distance(dist) {}
00085 LookoutIREvent(float dist, const NEWMAT::Matrix& mat, EventGeneratorID_t gid, unsigned int sid,
00086 EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00087 : LookoutPointAtEvent(mat,gid,sid,tid,dur,n,mag), distance(dist) {}
00088 virtual EventBase* clone() const { return new LookoutIREvent(*this); }
00089 virtual unsigned int getClassTypeID() const { return makeClassTypeID("LOIR"); }
00090 virtual std::string getDescription(bool showTypeSpecific=true, unsigned int verbosity=0) const;
00091 virtual unsigned int getBinSize() const;
00092 virtual unsigned int loadBinaryBuffer(const char buf[], unsigned int len);
00093 virtual unsigned int saveBinaryBuffer(char buf[], unsigned int len) const;
00094 virtual void loadXML(xmlNode* node);
00095 virtual void saveXML(xmlNode * node) const;
00096 };
00097
00098 class LookoutScanEvent : public LookoutEvent {
00099 protected:
00100
00101 vector<ScanRequest::Task*> *tasks;
00102 public:
00103 virtual LookoutEventType_t getLookoutEventType() const { return scan; }
00104 LookoutScanEvent(vector<ScanRequest::Task*>& _tasks) : LookoutEvent(), tasks(&_tasks) {}
00105 LookoutScanEvent(vector<ScanRequest::Task*>& _tasks, EventGeneratorID_t gid,
00106 unsigned int sid, EventTypeID_t tid, unsigned int dur=0)
00107 : LookoutEvent(gid,sid,tid,dur), tasks(&_tasks) {}
00108 LookoutScanEvent(vector<ScanRequest::Task*>& _tasks, EventGeneratorID_t gid, unsigned int sid,
00109 EventTypeID_t tid, unsigned int dur, const std::string& n, float mag)
00110 : LookoutEvent(gid,sid,tid,dur,n,mag), tasks(&_tasks) {}
00111
00112 LookoutScanEvent(const LookoutScanEvent& lose)
00113 : LookoutEvent(lose), tasks(lose.tasks) {}
00114
00115 const LookoutScanEvent& operator=(const LookoutScanEvent& lose) {
00116 if (this == &lose) return *this;
00117 LookoutEvent::operator=(lose);
00118 tasks = lose.tasks;
00119 return *this;
00120 }
00121 virtual EventBase* clone() const { return new LookoutScanEvent(*this); }
00122 const vector<ScanRequest::Task*>& getTasks() const { return *tasks; }
00123 };
00124
00125 #endif