00001
00066 #ifndef INC_SPATMOD_IMAGEFILTER_H
00067 #define INC_SPATMOD_IMAGEFILTER_H
00068
00069 #ifndef INC_SPATMOD_IMAGESTAGE_H
00070 #include <spatmod/imagestage.h>
00071 #endif
00072
00073 #ifndef INC_SPATMOD_IMAGESTAGEARRAY_H
00074 #include <spatmod/imagestagearray.h>
00075 #endif
00076
00077 #ifndef INC_SPATMOD_IMAGESTAGEAUTOPTR_H
00078 #include <spatmod/imagestageautoptr.h>
00079 #endif
00080
00081 namespace SPATMOD {
00082 namespace IMAGE {
00083
00084
00085
00087 class FILTER : public STAGE {
00088 public:
00089
00090
00091 virtual ~FILTER ();
00092
00093 protected:
00094
00097 FILTER (
00098 STAGE *pPreviousStage,
00099 bool TakeOwnership
00100 );
00101
00104 FILTER (
00105 STAGE_ARRAY& PreviousStages,
00106 bool TakeOwnership
00107 );
00108
00114 FILTER (
00115 unsigned NumPreviousStages
00116 );
00117
00119 ERRVALUE CreateWorkBuffer (
00120 UINT32 NumColumns,
00121 UINT32 NumRows,
00122 unsigned index = 0
00123 );
00124
00126 ERRVALUE CreateWorkBuffers (
00127 UINT32 NumColumns,
00128 UINT32 NumRows
00129 );
00130
00132 void DestroyWorkBuffer (
00133 unsigned index = 0
00134 );
00135
00137 void DestroyWorkBuffers (
00138 );
00139
00141 unsigned GetNumPreviousStages (
00142 ) const { return (m_PrevStagePtrs.GetNumItems()); }
00143
00145 STAGE* GetPreviousStage (
00146 unsigned index = 0
00147 ) const { return (m_PrevStagePtrs[index]); }
00148
00150 bool GetPreviousStageOwnership (
00151 unsigned index = 0
00152 ) const { return (m_PrevStagePtrs[index].IsOwner()); }
00153
00156 BUFFER& GetWorkBuffer (
00157 unsigned index = 0
00158 ) const { return (*m_pWorkBuffers[index]); }
00159
00161 bool IsAutoCreateWorkBuffers (
00162 ) const { return (m_AutoCreateWorkBuffers); }
00163
00167 void SetAutoCreateWorkBuffers (
00168 bool AutoCreateWorkBuffers = true
00169 ) { m_AutoCreateWorkBuffers = AutoCreateWorkBuffers; }
00170
00173 void SetAutoDestroyWorkBuffers (
00174 bool AutoDestroyWorkBuffers
00175 ) { m_AutoDestroyWorkBuffers = AutoDestroyWorkBuffers; }
00176
00178 void SetPreviousStage (
00179 unsigned index,
00180 STAGE *pPreviousStage,
00181 bool TakeOwnership
00182 );
00183
00184
00185
00188 virtual ERRVALUE v_GetDimensions (
00189 DIMENSIONS& dimensions,
00190 double zoom
00191 ) const;
00192
00195 virtual ERRVALUE v_GetGeoreference (
00196 GEOREFERENCE& georeference,
00197 double zoom
00198 ) const;
00199
00202 virtual const PIXELTABLE* v_GetPixelLookupTable (
00203 ) const;
00204
00208 virtual ZOOMABILITY v_GetZoomAbility (
00209 SIMPLE_ARRAY<double>& ZoomsAllowed
00210 ) const;
00211
00218 virtual float v_QueryIterator (
00219 const SECTION_ITERATOR& iterator
00220 ) const;
00221
00222
00223
00230 virtual ERRVALUE v_PullBegin (
00231 const SECTION_ITERATOR& iterator
00232 );
00233
00239 virtual ERRVALUE v_PullEnd (
00240 );
00241
00242 private:
00243 #ifndef GENERATING_DOXYGEN_OUTPUT
00244 STAGE_ARRAY m_PrevStagePtrs;
00245 BUFFER **m_pWorkBuffers;
00246 bool m_AutoCreateWorkBuffers;
00247 bool m_AutoDestroyWorkBuffers;
00248
00249 void v_GetMetadata (MISTRING& result, METADATACONTENT content, METADATAFORMAT format) const;
00250 virtual const char* v_GetTypeName () const;
00251 virtual ERRVALUE v_LogCreate (const char *label, bool OnlyEnds, MILOG::MODE mode);
00252
00253
00254 FILTER (const FILTER&);
00255 FILTER& operator= (const FILTER&);
00256 #endif // GENERATING_DOXYGEN_OUTPUT
00257
00258 };
00259
00260
00261
00262 }
00263 }
00264
00265 #endif // INC_SPATMOD_IMAGEFILTER_H
00266