00001
00002 #ifndef INCLUDED_SegmentedColorFilterBankEvent_h_
00003 #define INCLUDED_SegmentedColorFilterBankEvent_h_
00004
00005 #include "Events/FilterBankEvent.h"
00006 #include "Vision/cmvision.h"
00007 #include <ext/hash_map>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 class SegmentedColorFilterBankEvent : public FilterBankEvent {
00019 public:
00020 typedef CMVision::color_class_state color_class_state;
00021 typedef __gnu_cxx::hash_map<const char*, unsigned int, __gnu_cxx::hash<const char*>, hashcmp_eqstr> hashmap;
00022
00023
00024 SegmentedColorFilterBankEvent(FilterBankGenerator* creator,EventBase::EventGeneratorID_t gid,size_t sid,EventBase::EventTypeID_t tid, FilterBankGenerator* segColorSrc, unsigned int nColors, color_class_state * colorInfos, const hashmap * clrNames)
00025 : FilterBankEvent(creator,gid,sid,tid), segsrc(segColorSrc), numColors(nColors), colors(colorInfos), colorNames(clrNames)
00026 {}
00027
00028
00029 SegmentedColorFilterBankEvent(FilterBankGenerator* creator,EventBase::EventGeneratorID_t gid,size_t sid,EventBase::EventTypeID_t tid, const SegmentedColorFilterBankEvent& segevt )
00030 : FilterBankEvent(creator,gid,sid,tid), segsrc(segevt.segsrc), numColors(segevt.numColors), colors(segevt.colors), colorNames(segevt.colorNames)
00031 {}
00032
00033
00034 SegmentedColorFilterBankEvent(const SegmentedColorFilterBankEvent& fbk)
00035 : FilterBankEvent(fbk), segsrc(fbk.segsrc), numColors(fbk.numColors),
00036 colors(fbk.colors), colorNames(fbk.colorNames)
00037 {}
00038
00039
00040 const SegmentedColorFilterBankEvent& operator=(const SegmentedColorFilterBankEvent& fbk) {
00041 EventBase::operator=(fbk);
00042 segsrc=fbk.segsrc; numColors=fbk.numColors;
00043 colors=fbk.colors; colorNames=fbk.colorNames;
00044 return *this;
00045 }
00046
00047 virtual EventBase* clone() const { return new SegmentedColorFilterBankEvent(*this); }
00048
00049
00050
00051
00052
00053 inline FilterBankGenerator* getSegmentedColorSource() const { return segsrc; }
00054
00055
00056 inline unsigned int getNumColors() const { return numColors; }
00057
00058
00059 inline const color_class_state * getColors() const { return colors; }
00060
00061
00062 inline const color_class_state& getColor(unsigned int i) const { return colors[i]; }
00063
00064
00065 inline unsigned int getColorIndex(const char * name) const {
00066 hashmap::const_iterator i;
00067 i=colorNames->find(name);
00068 return (i==colorNames->end())?-1U:i->second;
00069 }
00070
00071
00072 inline unsigned int getColorIndex(const std::string& name) const { return getColorIndex(name.c_str()); }
00073
00074 virtual classTypeID_t getClassTypeID() const { return autoRegisterSegmentedColorFilterBankEvent; }
00075
00076 protected:
00077
00078 FilterBankGenerator* segsrc;
00079 unsigned int numColors;
00080 const color_class_state * colors;
00081 const hashmap * colorNames;
00082
00083
00084
00085 static const EventBase::classTypeID_t autoRegisterSegmentedColorFilterBankEvent;
00086
00087
00088 SegmentedColorFilterBankEvent() : FilterBankEvent(), segsrc(NULL), numColors(), colors(), colorNames() {}
00089 friend struct Factory0Arg<EventBase>::Factory<SegmentedColorFilterBankEvent>;
00090 };
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 #endif