00001
00051 #ifndef INC_SPATMOD_IMAGEFILTERZOOM_H
00052 #define INC_SPATMOD_IMAGEFILTERZOOM_H
00053
00054 #ifndef INC_SPATMOD_IMAGEFILTER_H
00055 #include <spatmod/imagefilter.h>
00056 #endif
00057
00058 #ifndef INC_SPATMOD_IMAGESECTION_H
00059 #include <spatmod/imagesection.h>
00060 #endif
00061
00062 #ifndef INC_SPATMOD_IMAGERESAMPLEMETHOD_H
00063 #include <spatmod/imageresamplemethod.h>
00064 #endif
00065
00066 namespace SPATMOD {
00067 namespace IMAGE {
00068
00069 class BUFFER;
00070
00071
00072
00074 class FILTER_ZOOM : public FILTER {
00075 public:
00076
00078 enum PREVSTAGEUSAGE {
00079 PREVSTAGEUSAGE_None,
00080 PREVSTAGEUSAGE_Exact,
00081 PREVSTAGEUSAGE_Nearest,
00082 };
00083
00086 FILTER_ZOOM (
00087 STAGE *pPreviousStage,
00088 bool TakeOwnership,
00089 double Scale,
00090 PREVSTAGEUSAGE PrevStageUsage,
00091 RESAMPLEMETHOD ResampleMethod
00092 );
00093
00098 FILTER_ZOOM (
00099 STAGE *pPreviousStage,
00100 bool TakeOwnership,
00101 const BASE& RefImage,
00102 PREVSTAGEUSAGE PrevStageUsage,
00103 RESAMPLEMETHOD ResampleMethod
00104 );
00105
00108 FILTER_ZOOM (
00109 STAGE *pPreviousStage,
00110 bool TakeOwnership,
00111 INT32 NumColumns,
00112 INT32 NumRows,
00113 PREVSTAGEUSAGE PrevStageUsage,
00114 RESAMPLEMETHOD ResampleMethod
00115 );
00116
00117
00118 virtual ~FILTER_ZOOM ();
00119
00120 private:
00121 #ifndef GENERATING_DOXYGEN_OUTPUT
00122 double m_ZoomX;
00123 double m_ZoomY;
00124 double m_PrevStageZoom;
00125 DIMENSIONS m_PrevStageDims;
00126 RESAMPLEMETHOD m_ResampleMethod;
00127 PREVSTAGEUSAGE m_PrevStageUsage;
00128 INT32 m_IntZoom;
00129 INT32 m_IntSample;
00130 INT32 m_Margin;
00131 SECTION m_PrevSection;
00132
00133 ERRVALUE BeginIteratorPrevStage (
00134 const SECTION_ITERATOR& Iterator,
00135 SECTION_ITERATOR& IteratorPrev
00136 ) const;
00137
00138 ERRVALUE DoAverage (BUFFER& TgtBuffer, const SECTION& SrcSection, BUFFER& SrcBuffer) const;
00139 ERRVALUE DoAverageUINT8 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00140 ERRVALUE DoAverageSINT8 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00141 ERRVALUE DoAverageUINT16 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00142 ERRVALUE DoAverageSINT16 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00143 ERRVALUE DoAverageUINT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00144 ERRVALUE DoAverageSINT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00145 ERRVALUE DoAverageFLOAT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00146 ERRVALUE DoAverageFLOAT64 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00147
00148 ERRVALUE DoMaximum (BUFFER& TgtBuffer, const SECTION& SrcSection, BUFFER& SrcBuffer) const;
00149 ERRVALUE DoMaximumUINT8 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00150 ERRVALUE DoMaximumSINT8 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00151 ERRVALUE DoMaximumUINT16 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00152 ERRVALUE DoMaximumSINT16 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00153 ERRVALUE DoMaximumUINT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00154 ERRVALUE DoMaximumSINT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00155 ERRVALUE DoMaximumFLOAT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00156 ERRVALUE DoMaximumFLOAT64 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00157
00158 ERRVALUE DoMinimum (BUFFER& TgtBuffer, const SECTION& SrcSection, BUFFER& SrcBuffer) const;
00159 ERRVALUE DoMinimumUINT8 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00160 ERRVALUE DoMinimumSINT8 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00161 ERRVALUE DoMinimumUINT16 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00162 ERRVALUE DoMinimumSINT16 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00163 ERRVALUE DoMinimumUINT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00164 ERRVALUE DoMinimumSINT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00165 ERRVALUE DoMinimumFLOAT32 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00166 ERRVALUE DoMinimumFLOAT64 (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00167
00168 ERRVALUE DoNearest (BUFFER& TgtBuffer, const SECTION& SrcSection, const BUFFER& SrcBuffer) const;
00169
00170
00171 virtual const char* v_GetTypeName () const;
00172 virtual ERRVALUE v_Initialize ();
00173 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00174 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00175 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00176
00177
00178 FILTER_ZOOM (const FILTER_ZOOM&);
00179 FILTER_ZOOM& operator= (const FILTER_ZOOM&);
00180 #endif // GENERATING_DOXYGEN_OUTPUT
00181
00182 };
00183
00184
00185
00186 }
00187 }
00188
00189 #endif // INC_SPATMOD_IMAGEFILTERZOOM_H
00190