00001
00088 #ifndef INC_RVC_MULTRAST_H
00089 #define INC_RVC_MULTRAST_H
00090
00091 #ifndef INC_RVC_RASTER_H
00092 #include <rvc/raster.h>
00093 #endif
00094
00095 #include <vector>
00096
00097 #define RVC_DEFAULT_CREDENTIALS = 0
00098
00099 namespace RVC {
00100
00101 class CREDENTIALS;
00102
00103 class MULTIRASTER : public RASTER {
00104 public:
00105
00106 enum TYPE {
00107 TYPE_None = 0,
00108 TYPE_DirectLink,
00109 TYPE_ObjectPath,
00110 TYPE_LegacyInode
00111 };
00112
00113 class MAKEPARMS {
00114 public:
00115
00117 MAKEPARMS (
00118 INT32 TotalLins,
00119 INT32 TotalCols,
00120 INT32 LinsPerTile,
00121 INT32 ColsPerTile,
00122 RVC::IMAGE::CELLTYPE CellType,
00123 TYPE Type,
00124 RASTER::LINKTYPE m_LinkType = RASTER::LINKTYPE_NoLink
00125 );
00126
00127 ~MAKEPARMS () { }
00128
00130 void SetBandNum (
00131 INT32 BandNum
00132 ) { m_Band = BandNum; }
00133
00134 void SetUsage (
00135 RASTER::USAGE usage
00136 ) { m_Usage = usage; }
00137
00138 private:
00139 #ifndef GENERATING_DOXYGEN_OUTPUT
00140 friend class MULTIRASTER;
00141
00142 INT32 m_TotalLins;
00143 INT32 m_TotalCols;
00144 INT32 m_LinsPerTile;
00145 INT32 m_ColsPerTile;
00146 IMAGE::CELLTYPE m_CellType;
00147 MULTIRASTER::TYPE m_Type;
00148 RASTER::LINKTYPE m_LinkType;
00149 RASTER::USAGE m_Usage;
00150 INT32 m_Band;
00151 #endif
00152 };
00153
00154 MULTIRASTER (
00155 );
00156
00157 MULTIRASTER (
00158 const MULTIRASTER& rhs
00159 );
00160
00161 virtual ~MULTIRASTER (
00162 );
00163
00165 ERRVALUE AddLink (
00166 const OBJITEM& LinkRastObj,
00167 const LRECT2D& DestRect,
00168 bool RebuildPyramids
00169 );
00170
00173 ERRVALUE AddLink (
00174 const RASTER::LINKPARMS& parms,
00175 const LRECT2D& DestRect
00176 );
00177
00179 ERRVALUE ClearTile (
00180 const LPOINT2D& TilePos
00181 );
00182
00183 ERRVALUE GetGridLinkFile (
00184 FILEPATH& linkfile,
00185 INT32 GridLine,
00186 INT32 GridCol
00187 );
00188
00190 ERRVALUE GetGridLinkItem (
00191 OBJITEM& obj,
00192 INT32 GridLine,
00193 INT32 GridCol
00194 );
00195
00196 INT32 GetGridTileLines (
00197 ) const;
00198
00199 INT32 GetGridTileColumns (
00200 ) const;
00201
00202 ERRVALUE GetLinkCommonPath (
00203 FILEPATH& filepath
00204 );
00205
00206 ERRVALUE GetTileLinkPaths (
00207 std::vector<FILEPATH>& LinkFiles,
00208 const LPOINT2D& TilePos
00209 );
00210
00212 ERRVALUE Make (
00213 const OBJECT& parent,
00214 const DESCRIPTOR& desc,
00215 MAKEPARMS& parms,
00216 const CREDENTIALS* Credentials = 0
00217 );
00218
00220 ERRVALUE Make (
00221 OBJITEM& objitem,
00222 MAKEPARMS& parms,
00223 const CREDENTIALS* Credentials = 0
00224 );
00225
00228 ERRVALUE MakeNullMask (
00229 const CREDENTIALS* Credentials = 0
00230 );
00231
00242 ERRVALUE MakePyramidSet (
00243 RASTER::COMPTYPE comptype,
00244 UINT16 compquality,
00245 const SIMPLE_ARRAY<INT32>& samplerates,
00246 IMAGE::PYRAMID flags = IMAGE::PYRAMID_Default,
00247 const CREDENTIALS* Credentials = 0
00248 );
00249
00252 static ERRVALUE MakePyramidSetNextTiers (
00253 const RVC::OBJITEM& ObjItemPrevTier,
00254 RASTER::COMPTYPE CompressType,
00255 UINT16 CompressRatio,
00256 const CREDENTIALS* Credentials
00257 );
00258
00259 private:
00260 #ifndef GENERATING_DOXYGEN_OUTPUT
00261
00262 virtual ERRVALUE v_OpenObject (OPENMODE OpenMode, MDLGPARENT parent, const CREDENTIALS* Credentials);
00263
00264 MAKEPARMS m_MakeParmsMult;
00265 OBJECT m_TempFile;
00266 #endif
00267 };
00268 }
00269
00270 #endif
00271