00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00087
00088 #ifndef INC_RVC_NULLMASK_H
00089 #define INC_RVC_NULLMASK_H
00090
00091 #ifndef INC_RVC_RASTER_H
00092 #include <rvc/raster.h>
00093 #endif
00094
00095 #ifndef GENERATING_DOXYGEN_OUTPUT
00096 class BITSET_UNOWNED;
00097 #endif // GENERATING_DOXYGEN_OUTPUT
00098
00099 namespace RVC {
00100
00101 class NULLMASK : public RVC::IMAGE {
00102 public:
00103
00104 #ifndef GENERATING_DOXYGEN_OUTPUT
00105 class GETOBJFILTER_ISVALIDNULLMASK;
00106 class OBJECT_FILTER;
00107 #endif // GENERATING_DOXYGEN_OUTPUT
00108
00110 NULLMASK (
00111 );
00112
00114 NULLMASK (
00115 const RVC::NULLMASK& rhs
00116 );
00117
00119 virtual ~NULLMASK (
00120 );
00121
00123 RVC::NULLMASK& operator= (
00124 const RVC::NULLMASK& rhs
00125 );
00126
00131 ERRVALUE CopyMaskTo (
00132 const RASTER& TgtParentRastObj,
00133 const RASTER& SrcBinaryRastObj,
00134 #ifdef RVC_CREDENTIALS_MANDATORY
00135 const CREDENTIALS* Credentials
00136 #else
00137 const CREDENTIALS* Credentials = 0
00138 #endif
00139 );
00140
00143 INT32 GetNumTileColumns (
00144 ) const;
00145
00148 INT32 GetNumTileLines (
00149 ) const;
00150
00153 INT32 GetNumXTiles (
00154 ) const;
00155
00158 INT32 GetNumYTiles (
00159 ) const;
00160
00163 ERRVALUE GetPyramidList (
00164 SIMPLE_ARRAY<INT32>& SampleList,
00165 RVC::OBJITEMLIST& PyramidList
00166 );
00167
00170 INT32 GetTileSizeBytes (
00171 ) const;
00172
00175 bool HasNullValues (
00176 ) const;
00177
00180 static bool IsNullMask (
00181 const OBJITEM& ObjItem,
00182 #ifdef RVC_CREDENTIALS_MANDATORY
00183 const CREDENTIALS* Credentials
00184 #else
00185 const CREDENTIALS* Credentials = 0
00186 #endif
00187 );
00188
00197 ERRVALUE Make (
00198 const RVC::IMAGE& parent,
00199 bool initvalid,
00200 #ifdef RVC_CREDENTIALS_MANDATORY
00201 const char* Source,
00202 const CREDENTIALS* Credentials
00203 #else
00204 const char* Source = 0,
00205 const CREDENTIALS* Credentials = 0
00206 #endif
00207 );
00208
00217 ERRVALUE Make (
00218 RVC::OBJITEM& ObjItem,
00219 bool initvalid,
00220 #ifdef RVC_CREDENTIALS_MANDATORY
00221 const char* Source,
00222 const CREDENTIALS* Credentials
00223 #else
00224 const char* Source = 0,
00225 const CREDENTIALS* Credentials = 0
00226 #endif
00227 );
00228
00230 ERRVALUE MakePyramidSet (
00231 #ifdef RVC_CREDENTIALS_MANDATORY
00232 IMAGE::PYRAMID flags,
00233 const CREDENTIALS* Credentials
00234 #else
00235 IMAGE::PYRAMID flags = IMAGE::PYRAMID_Default,
00236 const CREDENTIALS* Credentials = 0
00237 #endif
00238 );
00239
00243 ERRVALUE Open (
00244 const RVC::IMAGE& parent,
00245 #ifdef RVC_CREDENTIALS_MANDATORY
00246 OBJECT::OPENMODE OpenMode,
00247 const CREDENTIALS* Credentials
00248 #else
00249 OBJECT::OPENMODE OpenMode = OBJECT::OPENMODE_Read,
00250 const CREDENTIALS* Credentials = 0
00251 #endif
00252 );
00253
00257 int Read (
00258 INT32 Line,
00259 INT32 StartColumn,
00260 BITSET_UNOWNED& data,
00261 INT32 Length = 1
00262 ) const;
00263
00267 int Read (
00268 INT32 Line,
00269 INT32 StartColumn,
00270 UINT8 *data,
00271 INT32 Length = 1
00272 ) const;
00273
00277 int ReadColumn (
00278 INT32 StartLine,
00279 INT32 Column,
00280 BITSET_UNOWNED& data,
00281 INT32 Length = 1
00282 ) const;
00283
00287 int ReadColumn (
00288 INT32 StartLine,
00289 INT32 Column,
00290 UINT8 *data,
00291 INT32 Length = 1
00292 ) const;
00293
00298 ERRVALUE Write (
00299 INT32 Line,
00300 INT32 StartColumn,
00301 const BITSET_UNOWNED& data,
00302 INT32 Length = 1
00303 );
00304
00309 ERRVALUE Write (
00310 INT32 Line,
00311 INT32 StartColumn,
00312 const UINT8 *data,
00313 INT32 Length = 1
00314 );
00315
00320 ERRVALUE Write (
00321 INT32 Line,
00322 INT32 StartColumn,
00323 bool valid,
00324 INT32 Length = 1
00325 );
00326
00327 private:
00328 #ifndef GENERATING_DOXYGEN_OUTPUT
00329
00330 IMAGE* m_Image;
00331 RASTER m_MaskObj;
00332 NULLVALUE m_NullValue;
00333 bool m_HasNullValue;
00334 IMAGE::CELLTYPE m_ParentCellType;
00335 mutable SIMPLE_ARRAY<UINT8> m_Buffer;
00336 class NULLOBSERVER;
00337 friend class NULLOBSERVER;
00338 NULLOBSERVER* m_Observer;
00339 SIMPLE_ARRAY<UINT8> m_TrueBuffer;
00340 SIMPLE_ARRAY<UINT8> m_FalseBuffer;
00341
00343 virtual ERRVALUE v_CloseObject ();
00344 virtual ERRVALUE v_CopyObject (RVC::OBJECT& DestParentObj, RVC::OBJECT& DestObj, FILTER* filter, COPYFLAGS CopyFlags, const CREDENTIALS* Credentials) const;
00345 virtual RVC::OBJTYPE v_GetDftObjectType () const;
00346 virtual bool v_IsObjectOpen () const;
00347 virtual ERRVALUE v_OpenObject (OPENMODE OpenMode, MDLGPARENT parent, const CREDENTIALS* Credentials);
00348
00350 virtual void v_GetExtents (DRECT3D &extents) const;
00351 virtual void v_GetScale (double& xscale, double& yscale) const;
00352 virtual double v_GetZScale () const;
00353 virtual double v_GetZOffset () const;
00354 virtual bool v_HasCapability (int Capability) const;
00355 virtual void v_SetScale (double xscale, double yscale);
00356 virtual void v_SetZScale (double zscale);
00357 virtual void v_SetZOffset (double zoffset);
00358
00360 virtual ERRVALUE v_GetBandParms (INT32 BandNum, BANDPARMS& BandParms) const;
00361 virtual CELLTYPE v_GetCellType () const;
00362 virtual double v_GetColumnScale () const;
00363 virtual double v_GetLineScale () const;
00364 virtual ERRVALUE v_GetNullValue (INT32 BandNum, NULLVALUE& NullValue) const;
00365 virtual INT32 v_GetNumBands () const;
00366 virtual INT32 v_GetNumColumns () const;
00367 virtual INT32 v_GetNumLines () const;
00368 virtual bool v_HasNullValue (INT32 BandNum) const;
00369 virtual ERRVALUE v_ReadBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const;
00370 virtual ERRVALUE v_ReadColumnBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const;
00371 virtual ERRVALUE v_SetCacheRect (const LRECT2D& Rect);
00372 virtual ERRVALUE v_SetCacheSize (INT32 NumTiles);
00373 virtual ERRVALUE v_SetCacheSize (CACHEMODE CacheFlags);
00374 virtual ERRVALUE v_SetNullValue (INT32 BandNum, const NULLVALUE* NullValue);
00375 virtual ERRVALUE v_WriteBand (INT32 Band, INT32 Line, INT32 StartColumn, const void *data, INT32 Length, CONVMODE Convert);
00376 #endif // GENERATING_DOXYGEN_OUTPUT
00377
00378 };
00379
00380
00383 class NULLMASK::GETOBJFILTER_ISVALIDNULLMASK : public GETOBJFILTER {
00384 public:
00385 explicit GETOBJFILTER_ISVALIDNULLMASK (
00386 const RASTER& RastObj
00387 );
00388
00389 explicit GETOBJFILTER_ISVALIDNULLMASK (
00390 const RASTER::MAKEPARMS& MakeParms
00391 );
00392
00393 GETOBJFILTER_ISVALIDNULLMASK (
00394 INT32 NumLines,
00395 INT32 NumColumns
00396 );
00397
00398 private:
00399 INT32 m_NumLines;
00400 INT32 m_NumColumns;
00401
00402 virtual bool v_HasSelectableSubObjects (const RVC::OBJITEM& objitem);
00403 virtual bool v_IsSelectable (const RVC::OBJITEM& objitem, int position = -1);
00404 };
00405
00406
00408 class NULLMASK::OBJECT_FILTER : public OBJECT::FILTER {
00409 public:
00410 OBJECT_FILTER () {}
00411 private:
00412 #ifndef GENERATING_DOXYGEN_OUTPUT
00413 virtual bool Filter (const RVC::OBJECT& obj);
00414 #endif // GENERATING_DOXYGEN_OUTPUT
00415 };
00416
00417 }
00418
00419 #endif
00420