00001
00015 #ifndef INC_SPATMOD_IMAGEFILTERREDUCE2_H
00016 #define INC_SPATMOD_IMAGEFILTERREDUCE2_H
00017
00018 #ifndef INC_SPATMOD_IMAGEFILTER_H
00019 #include <spatmod/imagefilter.h>
00020 #endif
00021
00022 #ifndef INC_SPATMOD_IMAGESECTION_H
00023 #include <spatmod/imagesection.h>
00024 #endif
00025
00026 #ifndef INC_SPATMOD_IMAGERESAMPLEMETHOD_H
00027 #include <spatmod/imageresamplemethod.h>
00028 #endif
00029
00030 namespace SPATMOD {
00031 namespace IMAGE {
00032
00033 class BUFFER;
00034
00035
00036
00038 class FILTER_REDUCE2 : public FILTER {
00039 public:
00040
00042 FILTER_REDUCE2 (
00043 STAGE *pPreviousStage,
00044 bool TakeOwnership,
00045 RESAMPLEMETHOD ResampleMethod
00046 );
00047
00048
00049 virtual ~FILTER_REDUCE2 ();
00050
00051 private:
00052 #ifndef GENERATING_DOXYGEN_OUTPUT
00053 RESAMPLEMETHOD m_ResampleMethod;
00054 INT32 m_Margin;
00055 INT32 m_MarginB;
00056 INT32 m_MarginR;
00057 SECTION m_PrevSection;
00058 INT16 m_Kernel4[4][4];
00059 INT32 m_MinCount;
00060
00061 ERRVALUE BeginIteratorPrevStage (
00062 const SECTION_ITERATOR& Iterator,
00063 SECTION_ITERATOR& IteratorPrev
00064 ) const;
00065
00066 void CalcKernelBicubic (INT16 v1, INT16 v2);
00067 ERRVALUE DoAverage (BUFFER& TgtBuffer, BUFFER& SrcBuffer) const;
00068 ERRVALUE DoAverageUINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00069 ERRVALUE DoAverageSINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00070 ERRVALUE DoAverageUINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00071 ERRVALUE DoAverageSINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00072 ERRVALUE DoAverageUINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00073 ERRVALUE DoAverageSINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00074 ERRVALUE DoAverageFLOAT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00075 ERRVALUE DoAverageFLOAT64 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00076
00077 ERRVALUE DoBicubic (BUFFER& TgtBuffer, BUFFER& SrcBuffer) const;
00078 ERRVALUE DoBicubicUINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00079 ERRVALUE DoBicubicSINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00080 ERRVALUE DoBicubicUINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00081 ERRVALUE DoBicubicSINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00082 ERRVALUE DoBicubicUINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00083 ERRVALUE DoBicubicSINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00084 ERRVALUE DoBicubicFLOAT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00085 ERRVALUE DoBicubicFLOAT64 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00086
00087 ERRVALUE DoMaximum (BUFFER& TgtBuffer, BUFFER& SrcBuffer) const;
00088 ERRVALUE DoMaximumUINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00089 ERRVALUE DoMaximumSINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00090 ERRVALUE DoMaximumUINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00091 ERRVALUE DoMaximumSINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00092 ERRVALUE DoMaximumUINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00093 ERRVALUE DoMaximumSINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00094 ERRVALUE DoMaximumFLOAT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00095 ERRVALUE DoMaximumFLOAT64 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00096
00097 ERRVALUE DoMinimum (BUFFER& TgtBuffer, BUFFER& SrcBuffer) const;
00098 ERRVALUE DoMinimumUINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00099 ERRVALUE DoMinimumSINT8 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00100 ERRVALUE DoMinimumUINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00101 ERRVALUE DoMinimumSINT16 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00102 ERRVALUE DoMinimumUINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00103 ERRVALUE DoMinimumSINT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00104 ERRVALUE DoMinimumFLOAT32 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00105 ERRVALUE DoMinimumFLOAT64 (BUFFER& TgtBuffer, const BUFFER& SrcBuffer) const;
00106
00107
00108 virtual ERRVALUE v_Initialize ();
00109 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00110 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00111 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00112
00113
00114 FILTER_REDUCE2 (const FILTER_REDUCE2&);
00115 FILTER_REDUCE2& operator= (const FILTER_REDUCE2&);
00116 #endif // GENERATING_DOXYGEN_OUTPUT
00117
00118 };
00119
00120
00121
00122 }
00123 }
00124
00125 #endif // INC_SPATMOD_IMAGEFILTERREDUCE2_H
00126