00001
00034 #ifndef INC_SPATMOD_IMAGETARGETTIFF_H
00035 #define INC_SPATMOD_IMAGETARGETTIFF_H
00036
00037 #ifndef INC_SPATMOD_IMAGETARGETFILE_H
00038 #include <spatmod/imagetargetfile.h>
00039 #endif
00040
00041 #ifndef INC_MI32_TIFFEXT_H
00042 #include <mi32/tiffext.h>
00043 #endif
00044
00045 class TIFFEXT;
00046
00047 namespace SPATMOD {
00048 namespace IMAGE {
00049
00050
00051
00053 class TARGETPARM_TIFF {
00054 public:
00055
00057 enum GEOTAG {
00058 GEOTAG_None,
00059 GEOTAG_Automatic,
00060 GEOTAG_Affine,
00061 GEOTAG_CtrlPoint
00062 };
00063
00065 TARGETPARM_TIFF (
00066 );
00067
00070 void SetCompression (
00071 TIFFEXT::COMPRESSION compression
00072 ) { m_Compression = compression; }
00073
00076 void SetDescription (
00077 const MISTRING& desc
00078 ) { m_Description = desc; }
00079
00082 void SetGeoTag (
00083 GEOTAG GeoTag
00084 ) { m_GeoTag = GeoTag; }
00085
00088 void SetPlanarConfig (
00089 TIFFEXT::PLANARCONFIG PlanarConfig
00090 ) { m_PlanarConfig = PlanarConfig; }
00091
00095 void SetSegmentSize (
00096 INT32 SegmentColumns,
00097 INT32 SegmentRows
00098 ) { m_SegmentColumns = SegmentColumns; m_SegmentRows = SegmentRows; }
00099
00100 private:
00101 #ifndef GENERATING_DOXYGEN_OUTPUT
00102 MISTRING m_Description;
00103 TIFFEXT::COMPRESSION m_Compression;
00104 TIFFEXT::PLANARCONFIG m_PlanarConfig;
00105 INT32 m_SegmentColumns;
00106 INT32 m_SegmentRows;
00107 GEOTAG m_GeoTag;
00108 friend class TARGET_TIFF;
00109 #endif // GENERATING_DOXYGEN_OUTPUT
00110 };
00111
00112
00113
00115 class TARGET_TIFF : public TARGET_FILE {
00116 public:
00117
00119 class FACTORY : public FACTORY_TARGET_FILE {
00120 public:
00121
00123 FACTORY ();
00124
00126 explicit FACTORY (
00127 const TARGETPARM_TIFF& parm
00128 );
00129
00131 FACTORY (const FACTORY& rhs);
00132
00134 virtual ~FACTORY ();
00135
00136 private:
00137 #ifndef GENERATING_DOXYGEN_OUTPUT
00138 TARGETPARM_TIFF m_Parm;
00139
00140
00141 virtual FACTORY_TARGET_FILE * v_Clone () const;
00142 virtual TARGET_FILE * v_ConstructTarget (STAGE *pInputStage, const FILEPATH& filepath, GEOFORMATS GeoFormats) const;
00143
00144
00145 FACTORY& operator= (const FACTORY& rhs);
00146 #endif
00147 };
00148
00152 TARGET_TIFF (
00153 STAGE *pInputStage,
00154 const FILEPATH& filepath,
00155 GEOFORMATS GeoFormats = GEOFORMAT_None
00156 );
00157
00159 virtual ~TARGET_TIFF ();
00160
00163 void SetParms (
00164 const TARGETPARM_TIFF& parms
00165 );
00166
00167 private:
00168 #ifndef GENERATING_DOXYGEN_OUTPUT
00169 TARGETPARM_TIFF m_Parm;
00170 TIFFEXT_FILE *m_pFile;
00171 SIMPLE_ARRAY<UINT8> m_RowBuf;
00172
00173
00174 ERRVALUE MakeFile ( const FILEPATH& Filepath, const LRECT2D& Extents);
00175
00176
00177 virtual ERRVALUE v_FillTileRows ( INT32 NumColumns, INT32 NumRows);
00178 virtual ERRVALUE v_Initialize ();
00179 virtual ERRVALUE v_PushBegin (const SECTION_ITERATOR& iterator);
00180 virtual ERRVALUE v_PushEnd ();
00181 virtual ERRVALUE v_TileBegin (const FILEPATH& filepath,const LRECT2D& extents);
00182 virtual ERRVALUE v_TileEnd ();
00183 virtual ERRVALUE v_WriteSubSection (const SECTION& SubSection, const BUFFER& buffer);
00184
00185
00186 TARGET_TIFF (const TARGET_TIFF&);
00187 TARGET_TIFF& operator= (const TARGET_TIFF&);
00188 #endif // GENERATING_DOXYGEN_OUTPUT
00189
00190 };
00191
00192
00193
00194 }
00195 }
00196
00197 #endif // INC_SPATMOD_IMAGETARGETTIFF_H
00198