00001
00045 #ifndef INC_SPATMOD_IMAGETARGETTILESET_H
00046 #define INC_SPATMOD_IMAGETARGETTILESET_H
00047
00048 #ifndef INC_SPATMOD_IMAGETARGET_H
00049 #include <spatmod/imagetarget.h>
00050 #endif
00051
00052 #ifndef INC_SPATMOD_IMAGEBUFFER_H
00053 #include <spatmod/imagebuffer.h>
00054 #endif
00055
00056 #ifndef INC_SPATMOD_IMAGETILESET_H
00057 #include <spatmod/imagetileset.h>
00058 #endif
00059
00060 #ifndef INC_SPATMOD_IMAGERESAMPLEMETHOD_H
00061 #include <spatmod/imageresamplemethod.h>
00062 #endif
00063
00064 namespace SPATMOD {
00065 namespace IMAGE {
00066
00067 class SOURCE_MEMORY;
00068
00069
00070
00072 class TARGET_TILESET : public TARGET {
00073 public:
00076 typedef fastdelegate::FastDelegate<ERRVALUE(INT32, INT32)> DELEGATE_COLUMN_ROW;
00077
00079 virtual ~TARGET_TILESET ();
00080
00082 TILESET::IMGFORMAT GetImgFormat (
00083 ) const { return (m_format); }
00084
00086 SPATMOD::IMAGE::RESAMPLEMETHOD GetResampleMethod (
00087 ) const { return (m_ResampleMethod); }
00088
00090 bool IsTerrain (
00091 ) const {return m_bIsTerrain;}
00092
00096 void SetDelegateOnTileAdded (
00097 DELEGATE_COLUMN_ROW delegate
00098 ) { m_DelegateOnTileAdded = delegate; }
00099
00101 void SetImgFormat (
00102 TILESET::IMGFORMAT ImgFormat
00103 ) { m_format = ImgFormat; }
00104
00107 ERRVALUE SetLevelRange (
00108 INT32 MinLevel,
00109 INT32 MaxLevel
00110 );
00111
00114 ERRVALUE SetLevelRange (
00115 const DRECT2D& ExtentsInCRS,
00116 INT32 MinLevel,
00117 INT32 MaxLevel,
00118 bool IsOnBorder = false
00119 );
00120
00122 ERRVALUE SetMaxTileRange (
00123 const TILESET::RANGE& TileRange
00124 );
00125
00127 void SetMetadata (
00128 const MISTRING& metadata
00129 ) { m_tileset.SetMetadata(metadata); }
00130
00132 void SetResampleMethod (
00133 SPATMOD::IMAGE::RESAMPLEMETHOD ResampleMethod
00134 ) { m_ResampleMethod = ResampleMethod; }
00135
00137 void SetIsTerrain (
00138 bool bIsTerrain
00139 ) { m_bIsTerrain = bIsTerrain; }
00140
00141 protected:
00142
00144 TARGET_TILESET (
00145 STAGE *pInputStage,
00146 const IMAGE::TILESET& tileset
00147 );
00148
00150 TARGET_TILESET (
00151 STAGE *pInputStage,
00152 INT32 TileSize,
00153 IMAGE::TILESET::PROFILE profile,
00154 const IMAGE::FORMAT format
00155 );
00156
00158 TARGET_TILESET (
00159 STAGE *pInputStage,
00160 INT32 TileSize,
00161 IMAGE::TILESET::PROFILE profile
00162 );
00163
00165 const TILESET& GetTileset (
00166 ) const { return (m_tileset); }
00167
00169 TILESET& GetTileset (
00170 ) { return (m_tileset); }
00171
00173 virtual ERRVALUE v_Initialize ();
00174
00175 private:
00176 #ifndef GENERATING_DOXYGEN_OUTPUT
00177
00178 IMAGE::TILESET m_tileset;
00179 IMAGE::TILESET::IMGFORMAT m_format;
00180 LRECT2D m_CurTileExtents;
00181 bool m_bIsTerrain;
00182 bool m_DidTileBegin;
00183 BUFFER m_TileBuffer;
00184 IMAGE::RESAMPLEMETHOD m_ResampleMethod;
00185 DELEGATE_COLUMN_ROW m_DelegateOnTileAdded;
00186
00187 void Construct (IMAGE::TILESET::PROFILE profile, INT32 TileSize);
00188
00189
00190 virtual ERRVALUE v_PushSubSection (const SECTION& SubSection, const BUFFER& buffer);
00191 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00192
00193
00194 TARGET_TILESET (const TARGET_TILESET&);
00195 TARGET_TILESET& operator= (const TARGET_TILESET&);
00196 #endif // GENERATING_DOXYGEN_OUTPUT
00197
00198
00199
00201 virtual ERRVALUE v_WriteTile (
00202 SOURCE_MEMORY& SourceTile,
00203 const LPOINT3D& TileIdx,
00204 bool HasNullCells
00205 ) = 0;
00206 };
00207
00208
00209
00210 }
00211 }
00212
00213 #endif // INC_SPATMOD_IMAGETARGETTILESET_H
00214