00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef HxExportExtraIdentMaskMedian_h
00012 #define HxExportExtraIdentMaskMedian_h
00013
00014 #include "HxClassName.h"
00015 #include "HxSizes.h"
00016 #include "HxCategories.h"
00017 #include "HxTagList.h"
00018
00019
00023 template<class ResultT, class ImValT, class ExtraValT>
00024 class HxExportExtraIdentMaskMedian
00025 {
00026 public:
00028 typedef HxTagTransInVar TransVarianceCategory;
00029
00031 typedef HxTag1Phase PhaseCategory;
00032
00033
00035 HxExportExtraIdentMaskMedian(HxTagList& tags);
00036
00038 ~HxExportExtraIdentMaskMedian();
00039
00041 void doIt(const ImValT& imV, const ExtraValT& extraV);
00042
00044 static HxString className();
00045
00046 private:
00047 HxTagList& _tags;
00048 ExtraValT _maskVal;
00049 ResultT _result;
00050 ImValT _minVal;
00051 ImValT _maxVal;
00052 int _dim;
00053 };
00054
00055 template<class ResultT, class ImValT, class ExtraValT>
00056
00057 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::HxExportExtraIdentMaskMedian(HxTagList& tags) : _tags(tags)
00058 {
00059 _maskVal = HxGetTag<int>(tags, "maskVal");
00060 _result = HxScalarInt(0);
00061 _minVal = ImValT::LARGE_VAL;
00062 _maxVal = ImValT::SMALL_VAL;
00063 }
00064
00065 template<class ResultT, class ImValT, class ExtraValT>
00066 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::~HxExportExtraIdentMaskMedian()
00067 {
00068 _result = ResultT(_minVal) + ResultT(_maxVal);
00069 _result /= HxScalarInt(2);
00070 HxAddTag(_tags, "result", HxValue(_result));
00071 }
00072
00073 template<class ResultT, class ImValT, class ExtraValT>
00074 inline void
00075 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::doIt(const ImValT& imV,
00076 const ExtraValT& extraV)
00077 {
00078 if (extraV == _maskVal) {
00079 if(imV < _minVal)
00080 _minVal=imV;
00081 if(imV > _maxVal)
00082 _maxVal=imV;
00083 }
00084 }
00085
00086 template<class ResultT, class ImValT, class ExtraValT>
00087 inline HxString
00088 HxExportExtraIdentMaskMedian<ResultT,ImValT,ExtraValT>::className()
00089 {
00090 return HxString("identMaskMedian");
00091 }
00092
00093
00094 #endif