00001
00021 #ifndef INC_SPATMOD_IMAGEFILTEROVERLAY_H
00022 #define INC_SPATMOD_IMAGEFILTEROVERLAY_H
00023
00024 #ifndef INC_SPATMOD_IMAGEFILTER_H
00025 #include <spatmod/imagefilter.h>
00026 #endif
00027
00028 namespace SPATMOD {
00029 namespace IMAGE {
00030
00031 class BUFFER;
00032 class SAMPLEITERATOR;
00033 class SAMPLEITERATOR_CONST;
00034
00035
00036
00040 class FILTER_OVERLAY : public FILTER {
00041 public:
00042 enum OVERLAPMETHOD {
00043 OVERLAPMETHOD_First,
00044 OVERLAPMETHOD_Last,
00045 OVERLAPMETHOD_Minimum,
00046 OVERLAPMETHOD_Maximum,
00047 OVERLAPMETHOD_ClosestToSpecified
00048 };
00049
00052 FILTER_OVERLAY (
00053 STAGE_ARRAY& PreviousStages,
00054 bool TakeOwnership,
00055 OVERLAPMETHOD OverlapMethod = OVERLAPMETHOD_First
00056 );
00057
00058
00059 virtual ~FILTER_OVERLAY ();
00060
00063 ERRVALUE SetPixelTestClosest (
00064 const PIXEL& PixelTestClosest
00065 );
00066
00067 private:
00068 #ifndef GENERATING_DOXYGEN_OUTPUT
00069 typedef FILTER BASECLASS;
00070
00071 OVERLAPMETHOD m_OverlapMethod;
00072 PIXEL m_PixelTestClosest;
00073 double *m_dValueTestClosest;
00074 SAMPLEITERATOR_CONST *m_itInput;
00075 SAMPLEITERATOR *m_itOutput;
00076
00077 void InitPixelTestClosest ();
00078 ERRVALUE ProcessOverlap (BUFFER& BufferOutput, const BUFFER& BufferInput, INT32 NumColumns, INT32 NumRows) const;
00079
00080
00081 virtual ERRVALUE v_Initialize ();
00082 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00083 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00084
00085
00086 FILTER_OVERLAY (const FILTER_OVERLAY&);
00087 FILTER_OVERLAY& operator= (const FILTER_OVERLAY&);
00088 #endif // GENERATING_DOXYGEN_OUTPUT
00089
00090 };
00091
00092
00093
00094 }
00095 }
00096
00097 #endif // INC_SPATMOD_IMAGEFILTEROVERLAY_H
00098