00001
00021 #ifndef INC_SPATMOD_IMAGEFILTERTILE_H
00022 #define INC_SPATMOD_IMAGEFILTERTILE_H
00023
00024 #ifndef INC_SPATMOD_IMAGEFILTER_H
00025 #include <spatmod/imagefilter.h>
00026 #endif
00027
00028 #ifndef INC_SPATMOD_IMAGESECTION_H
00029 #include <spatmod/imagesection.h>
00030 #endif
00031
00032 namespace SPATMOD {
00033 namespace IMAGE {
00034
00035
00036
00041 class FILTER_TILE : public FILTER {
00042 public:
00043
00045 explicit FILTER_TILE (
00046 const DIMENSIONS& Dimensions,
00047 const GEOREFERENCE *pGeoreference = 0
00048 );
00049
00050
00051 virtual ~FILTER_TILE ();
00052
00055 ERRVALUE SetTile (
00056 UINT16 TileColumn,
00057 UINT16 TileRow,
00058 STAGE *pInputStage,
00059 bool TakeOwnership
00060 );
00061
00062 private:
00063 #ifndef GENERATING_DOXYGEN_OUTPUT
00064
00065 class INPUTLIST;
00066
00067 INPUTLIST *m_pTileListLRU;
00068 DIMENSIONS *m_ZoomDimensions;
00069 SIMPLE_ARRAY<DOUBLE> m_ZoomsAllowed;
00070 SECTION_ITERATOR m_TgtIterator;
00071 int m_ZoomIndex;
00072 INT32 m_MaxListSizeLRU;
00073
00074 ERRVALUE BeginIteratorTileStage (INT32 TileColumn, INT32 TileRow, SECTION_ITERATOR& itTileStage) const;
00075 void ComputeMaxTilesPull (const SECTION_ITERATOR& TgtIterator, INT32& MaxTileColumnsPull, INT32& MaxTileRowsPull) const;
00076 ERRVALUE ComputeZoomDimensions ();
00077 ERRVALUE RemoveLastFromLRU ();
00078
00079
00080 virtual ERRVALUE v_ComputeSampleStats (STAT_UNIVARIATE *SampleStatsArray, STATSVALIDITY StatsValidity);
00081 virtual ERRVALUE v_GetDimensions (DIMENSIONS& dimensions, double zoom) const;
00082 virtual ERRVALUE v_GetGeoreference (GEOREFERENCE& georeference, double zoom) const;
00083 virtual ZOOMABILITY v_GetZoomAbility (SIMPLE_ARRAY<double>& ZoomsAllowed) const;
00084 virtual ERRVALUE v_Initialize ();
00085 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00086 virtual ERRVALUE v_PullEnd ();
00087 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00088 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00089
00090
00091 FILTER_TILE (const FILTER_TILE&);
00092 FILTER_TILE& operator= (const FILTER_TILE&);
00093 #endif // GENERATING_DOXYGEN_OUTPUT
00094
00095 };
00096
00097
00098
00099 }
00100 }
00101
00102 #endif // INC_SPATMOD_IMAGEFILTERTILE_H
00103