00001
00035 #ifndef INC_GRE_RENDERTOTILESET_H
00036 #define INC_GRE_RENDERTOTILESET_H
00037
00038 #ifndef INC_GRE_GROUP_H
00039 #include <gre/group.h>
00040 #endif
00041
00042 #ifndef INC_SPATMOD_IMAGETILESET_H
00043 #include <spatmod/imagetileset.h>
00044 #endif
00045
00046 #ifndef INC_MI32_MIJOB_H
00047 #include <mi32/mijob.h>
00048 #endif
00049
00050 namespace GRE {
00051
00052
00054 class RENDERTOTILESET {
00055 public:
00056
00058 class PARAMETERS {
00059 public:
00060 enum TARGET {
00061 TARGET_Google_Earth = 1,
00062 TARGET_Google_Maps = 2,
00063 TARGET_NASA_WorldWind = 3,
00064 TARGET_Microsoft_BingMaps = 4,
00065 };
00066
00068 class SECTION {
00069 public:
00070 SECTION () {}
00071 ~SECTION () {}
00072
00074 ERRVALUE Create(
00075 TARGET target,
00076 INT32 level,
00077 const DRECT2D& extents,
00078 INT32 tilesize = 256,
00079 INT32 buffersize = 16
00080 );
00081
00083 ERRVALUE ReadFromJob (
00084 const MIJOB& mijob,
00085 const XMLNODE* ParentNode
00086 );
00087
00089 void WriteToJob (
00090 MIJOB& mijob
00091 );
00092
00093 const SPATMOD::IMAGE::TILESET& GetTileSet() const {return m_Tileset;}
00094 INT32 GetBufferSize() const {return m_buffersize;}
00095 INT32 GetLevel() const {return m_Tileset.GetMaxLevel();}
00096 DRECT2D GetExtents() const {return m_Tileset.GetExtentsInCRS();}
00097 double GetCellSize() const {return m_Tileset.ComputeCellSize(GetLevel());}
00098 INT32 GetTotalRows() const;
00099 INT32 GetTotalColumns() const;
00100
00101 private:
00102 #ifndef GENERATING_DOXYGEN_OUTPUT
00103 INT32 m_buffersize;
00104 SPATMOD::IMAGE::TILESET m_Tileset;
00105 #endif
00106 };
00107
00108 class SECTIONBLOCK {
00109 public:
00110 SECTIONBLOCK () {}
00111 ~SECTIONBLOCK () {}
00112
00114 ERRVALUE Create(
00115 INT32 level,
00116 const DRECT2D& blockextents,
00117 INT32 SectionSize,
00118 INT32 tilesize = 256,
00119 INT32 buffersize = 16
00120 );
00121
00123 ERRVALUE ReadFromJob (
00124 const MIJOB& mijob,
00125 const XMLNODE* ParentNode,
00126 MILIST<SECTION>& Sections
00127 );
00128
00130 void WriteToJob (
00131 MIJOB& mijob
00132 );
00133
00134 private:
00135 #ifndef GENERATING_DOXYGEN_OUTPUT
00136 INT32 m_level;
00137 DRECT2D m_blockextents;
00138 INT32 m_SectionSize;
00139 INT32 m_tilesize;
00140 INT32 m_buffersize;
00141 #endif
00142 };
00143
00144 PARAMETERS () {}
00145 ~PARAMETERS () {}
00146
00148 ERRVALUE Create(
00149 TARGET target,
00150 INT32 level,
00151 bool bDoBranchKML,
00152 const DRECT2D& extents,
00153 INT32 format,
00154 INT32 tilesize = 256,
00155 INT32 buffersize = 16
00156 );
00157
00159 ERRVALUE Create(
00160 TARGET target,
00161 bool bDoBranchKML,
00162 INT32 format
00163 );
00164
00166 ERRVALUE ReadFromJob (
00167 const MIJOB& mijob
00168 );
00169
00171 void WriteToJob (
00172 MIJOB& mijob
00173 );
00174
00175 MILIST<SECTION>& GetSections() {return m_sections;}
00176 TARGET GetTarget() const {return m_target;}
00177 INT32 GetFormat() const {return m_ImgFormat;}
00178 bool GetDoBranchKML() const {return m_bDoBranchKML;}
00179
00180 private:
00181 #ifndef GENERATING_DOXYGEN_OUTPUT
00182 MILIST<SECTION> m_sections;
00183 TARGET m_target;
00184 INT32 m_ImgFormat;
00185 bool m_bDoBranchKML;
00186 #endif
00187 };
00188
00190 static ERRVALUE DoRender (
00191 GRE::GROUP* group,
00192 PARAMETERS& parameters,
00193 const FILEPATH& TilesePath
00194 );
00195
00196 private:
00197 #ifndef GENERATING_DOXYGEN_OUTPUT
00198 #endif
00199 };
00200
00201
00202
00203
00204 }
00205
00206 #endif // INC_GRE_DLGLAYERMGR_H