00001
00048 #ifndef INC_SPATMOD_IMAGETARGETRVC_H
00049 #define INC_SPATMOD_IMAGETARGETRVC_H
00050
00051 #ifndef INC_SPATMOD_IMAGETARGET_H
00052 #include <spatmod/imagetarget.h>
00053 #endif
00054
00055 #ifndef INC_RVC_OBJITEMLIST_H
00056 #include <rvc/objitemlist.h>
00057 #endif
00058
00059 #ifndef INC_RVC_RASTER_H
00060 #include <rvc/raster.h>
00061 #endif
00062
00063 #ifndef INC_RVC_NULLMASK_H
00064 #include <rvc/nullmask.h>
00065 #endif
00066
00067 namespace SPATMOD {
00068 namespace IMAGE {
00069
00070
00071
00073 class TARGET_RVC : public TARGET {
00074 public:
00075
00077 enum HISTOGRAM {
00078 HISTOGRAM_None,
00079 HISTOGRAM_Default,
00080 HISTOGRAM_AutoSample,
00081 HISTOGRAM_Full
00082 };
00083
00087 TARGET_RVC (
00088 STAGE *pInputStage,
00089 const RVC::OBJITEM& ObjItem,
00090 const RVC::CREDENTIALS *pCredentials = 0
00091 );
00092
00096 TARGET_RVC (
00097 STAGE *pInputStage,
00098 const RVC::OBJITEMLIST& ObjItemList,
00099 const RVC::CREDENTIALS *pCredentials = 0
00100 );
00101
00103 virtual ~TARGET_RVC ();
00104
00107 const RVC::OBJITEMLIST& GetObjItemList (
00108 ) const { return (m_ObjItemList); }
00109
00112 void SetCompression (
00113 RVC::RASTER::COMPTYPE type,
00114 UINT16 quality
00115 ) { m_CompressionType = type; m_CompressionQuality = quality; }
00116
00120 void SetHistogramMode (
00121 HISTOGRAM HistogramMode
00122 ) { m_HistogramMode = HistogramMode; }
00123
00129 void SetPyramidMode (
00130 RVC::IMAGE::PYRAMID PyramidMode
00131 ) { m_PyramidMode = PyramidMode; }
00132
00134 void SetTileSizeOverride (
00135 UINT32 ColumnsPerTile,
00136 UINT32 RowsPerTile = 0
00137 );
00138
00139 private:
00140 #ifndef GENERATING_DOXYGEN_OUTPUT
00141 class OUTPUT {
00142 public:
00143
00144 OUTPUT ();
00145 ~OUTPUT ();
00146
00147 void Close (
00148 ) {
00149 m_ObjRaster.Close();
00150 m_ObjMask.Close();
00151 }
00152
00153 RVC::RASTER& GetObjRaster (
00154 ) { return (m_ObjRaster); }
00155
00156 bool IsUsed () const
00157 { return (m_ObjRaster.IsOpen()); }
00158
00159 ERRVALUE Make (
00160 RVC::OBJITEM& ObjItem,
00161 RVC::IMAGE::CELLTYPE CellType,
00162 const TARGET_RVC& target
00163 );
00164
00165 ERRVALUE SetCacheSize (
00166 const SECTION_ITERATOR& iterator
00167 );
00168
00169 ERRVALUE Write (
00170 INT32 row,
00171 INT32 col,
00172 INT32 numcols,
00173 const void *data,
00174 const UINT8 *validity
00175 );
00176
00177 private:
00178 RVC::RASTER m_ObjRaster;
00179 RVC::NULLMASK m_ObjMask;
00180 RVC::IMAGE::CONVMODE m_ConvMode;
00181 INT32 m_TilesToCache;
00182 };
00183 typedef MILIST<OUTPUT> OUTPUTLIST;
00184 friend class OUTPUT;
00185
00186 RVC::OBJITEMLIST m_ObjItemList;
00187 RVC::CREDENTIALS *m_pCredentials;
00188 OUTPUTLIST m_OutputList;
00189 RVC::RASTER::COMPTYPE m_CompressionType;
00190 UINT16 m_CompressionQuality;
00191 HISTOGRAM m_HistogramMode;
00192 RVC::IMAGE::PYRAMID m_PyramidMode;
00193 UINT32 m_ColumnsPerTile;
00194 UINT32 m_RowsPerTile;
00195 SIMPLE_ARRAY<UINT16> m_SampleIdx;
00196 DOUBLE_ARRAY<double> m_RowBuf;
00197 bool m_NeedSequential;
00198 bool m_ProcessedFullImage;
00199 UINT16 m_NumExtraValidity;
00200
00201
00202 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00203
00204
00205 virtual ERRVALUE v_Initialize ();
00206 virtual ERRVALUE v_PushBegin (const SECTION_ITERATOR& iterator);
00207 virtual ERRVALUE v_PushEnd ();
00208 virtual ERRVALUE v_PushSubSection (const SECTION& SubSection, const BUFFER& buffer);
00209
00210
00211 TARGET_RVC (const TARGET_RVC&);
00212 TARGET_RVC& operator= (const TARGET_RVC&);
00213 #endif // GENERATING_DOXYGEN_OUTPUT
00214
00215 };
00216
00217
00218
00219 }
00220 }
00221
00222 #endif // INC_SPATMOD_IMAGETARGETRVC_H
00223