00001
00058 #ifndef INC_SPATMOD_IMAGETARGETRVCMULTIFILE_H
00059 #define INC_SPATMOD_IMAGETARGETRVCMULTIFILE_H
00060
00061 #ifndef INC_SPATMOD_IMAGETARGETRVCBASE_H
00062 #include <spatmod/imagetargetrvcbase.h>
00063 #endif
00064
00065 #ifndef INC_SPATMOD_IMAGETARGETFILE_H
00066 #include <spatmod/imagetargetfile.h>
00067 #endif
00068
00069 #ifndef INC_RVC_MULTRAST_H
00070 #include <rvc/multrast.h>
00071 #endif
00072
00073 #ifndef INC_RVC_NULLMASK_H
00074 #include <rvc/nullmask.h>
00075 #endif
00076
00077
00078 namespace SPATMOD {
00079 namespace IMAGE {
00080
00081 class TARGETPARM_ECW;
00082 class TARGETPARM_J2K;
00083 class TARGETPARM_MRSID;
00084 class TARGETPARM_TIFF;
00085
00086
00087
00089 class TARGET_RVC_MULTIFILE : public TARGET_RVC_BASE {
00090 public:
00091
00094 enum FORMAT {
00095 FORMAT_TIFF = 2,
00096 FORMAT_MrSID = 4,
00097 FORMAT_ECW = 5,
00098 FORMAT_JP2 = 6,
00099 FORMAT_PNG = 8,
00100 FORMAT_JPEG = 9,
00101 };
00102
00104 enum STRUCTURE {
00105 STRUCTURE_General_SingleFolder,
00106 STRUCTURE_General_TreeTileRow,
00107 STRUCTURE_General_TreeTileColumn,
00108
00109 STRUCTURE_OSGEO_TileMapService,
00110
00111
00112
00113
00114 };
00115
00116 enum PROFILE {
00117 PROFILE_None,
00118 PROFILE_Global_Geodetic,
00119 PROFILE_Global_Mercator,
00120
00121 };
00122
00124 typedef fastdelegate::FastDelegate<ERRVALUE(INT32, INT32, const FILEPATH&, const LRECT2D&)> DELEGATE_TILE_ADD;
00125
00128 TARGET_RVC_MULTIFILE (
00129 STAGE *pInputStage,
00130 FORMAT format,
00131 const RVC::OBJITEM& ObjItem,
00132 INT32 ResLevel,
00133 INT32 ColumnsPerTile,
00134 INT32 RowsPerTile,
00135 const RVC::CREDENTIALS *pCredentials = 0
00136 );
00137
00140 TARGET_RVC_MULTIFILE (
00141 STAGE *pInputStage,
00142 FORMAT format,
00143 const RVC::OBJITEMLIST& ObjItemList,
00144 INT32 ResLevel,
00145 INT32 ColumnsPerTile,
00146 INT32 RowsPerTile,
00147 const RVC::CREDENTIALS *pCredentials = 0
00148 );
00149
00151 virtual ~TARGET_RVC_MULTIFILE ();
00152
00156 ERRVALUE SetActualDimensions (
00157 INT32 ActualColumns,
00158 INT32 ActualRows
00159 );
00160
00164 void SetDelegateOnTileAdd (
00165 DELEGATE_TILE_ADD delegate
00166 ) { m_DelegateOnTileAdd = delegate; }
00167
00171 void SetDelegateOnTileEnd (
00172 DELEGATE_ERRVALUE_NOPARMS delegate
00173 ) { m_DelegateOnTileEnd = delegate; }
00174
00175 void SetOutputStructure (
00176 STRUCTURE structure
00177 ) { m_Structure = structure; }
00178
00181 void SetGeoFormats (
00182 TARGET_FILE::GEOFORMATS GeoFormats
00183 ) { m_GeoFormats = GeoFormats; }
00184
00186 void SetParmsJP2 (
00187 const TARGETPARM_J2K& parm
00188 );
00189
00191 void SetParmsJPEG (
00192 INT16 quality
00193 ) { m_QualityJPEG = quality; }
00194
00196 void SetParmsTIFF (
00197 const TARGETPARM_TIFF& Parm
00198 );
00199
00200 void SetProfile (
00201 PROFILE profile
00202 ) { m_Profile = profile; }
00203
00206 void SetTileFolderBasePath (
00207 const FILEPATH& filepath
00208 ) { m_BaseFilePath = filepath; }
00209
00211 void SetTileNamePrefix (
00212 const MISTRING& NamePrefix
00213 ) { m_TileNamePrefix = NamePrefix; }
00214
00215 private:
00216 #ifndef GENERATING_DOXYGEN_OUTPUT
00217
00218 typedef TARGET_RVC_BASE BASECLASS;
00219
00220 STRUCTURE m_Structure;
00221 PROFILE m_Profile;
00222 FORMAT m_format;
00223 INT32 m_ActualColumns;
00224 INT32 m_ActualRows;
00225 INT32 m_ResLevel;
00226 INT32 m_ColumnsPerTile;
00227 INT32 m_RowsPerTile;
00228 int m_ColumnFmtDigits;
00229 int m_RowFmtDigits;
00230 bool m_IsComposite;
00231 TARGET_FILE::GEOFORMATS m_GeoFormats;
00232 TARGET_FILE *m_pTargetFile;
00233 TARGETPARM_J2K *m_pSettingsJP2;
00234 TARGETPARM_TIFF *m_pParmsTIFF;
00235 UINT16 m_QualityJPEG;
00236 FILEPATH m_BaseFilePath;
00237 FILEPATH m_TileFilePath;
00238 MISTRING m_TileNamePrefix;
00239 LRECT2D m_TileExtents;
00240 RVC::MULTIRASTER *m_MultiRasters;
00241 RVC::NULLMASK m_ObjMask;
00242 DELEGATE_TILE_ADD m_DelegateOnTileAdd;
00243 DELEGATE_ERRVALUE_NOPARMS m_DelegateOnTileEnd;
00244
00245 ERRVALUE AddTileLink (
00246 UINT16 SampleIdx = 0
00247 );
00248
00249 ERRVALUE OnTileAdd (
00250 INT32 TileColumn,
00251 INT32 TileRow,
00252 FILEPATH& filepath,
00253 const LRECT2D& extents
00254 );
00255
00256 ERRVALUE OnTileEnd (
00257 );
00258
00259
00260 virtual ERRVALUE v_Initialize ();
00261 virtual ERRVALUE v_PushBegin (const SECTION_ITERATOR& iterator);
00262 virtual ERRVALUE v_PushEnd ();
00263 virtual ERRVALUE v_PushSubSection (const SECTION& SubSection, const BUFFER& buffer);
00264 virtual float v_QueryIterator ( const SECTION_ITERATOR& iterator) const;
00265
00266
00267 TARGET_RVC_MULTIFILE (const TARGET_RVC_MULTIFILE&);
00268 TARGET_RVC_MULTIFILE& operator= (const TARGET_RVC_MULTIFILE&);
00269 #endif // GENERATING_DOXYGEN_OUTPUT
00270
00271 };
00272
00273
00274
00275 }
00276 }
00277
00278 #endif // INC_SPATMOD_IMAGETARGETRVCMULTIFILE_H
00279