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 #ifndef INC_RVC_OPACITYMASK_H
00039 #define INC_RVC_OPACITYMASK_H
00040
00041 #ifndef INC_RVC_NULLMASK_H
00042 #include <rvc/nullmask.h>
00043 #endif
00044
00045
00046 namespace RVC {
00047
00057 class OPACITYMASK : public RVC::IMAGE {
00058 public:
00059
00060 #ifndef GENERATING_DOXYGEN_OUTPUT
00061 class GETOBJFILTER_ISVALIDOPACITYMASK;
00062 class MAKEPARMS;
00063 class OBJECT_FILTER;
00064 #endif // GENERATING_DOXYGEN_OUTPUT
00065
00067 OPACITYMASK (
00068 );
00069
00071 OPACITYMASK (
00072 const RVC::OPACITYMASK& rhs
00073 );
00074
00076 virtual ~OPACITYMASK (
00077 );
00078
00080 RVC::OPACITYMASK& operator= (
00081 const RVC::OPACITYMASK& rhs
00082 );
00083
00086 INT32 GetNumTileColumns (
00087 ) const;
00088
00091 INT32 GetNumTileLines (
00092 ) const;
00093
00096 INT32 GetNumXTiles (
00097 ) const;
00098
00101 INT32 GetNumYTiles (
00102 ) const;
00103
00106 ERRVALUE GetPyramidList (
00107 SIMPLE_ARRAY<INT32>& SampleList,
00108 RVC::OBJITEMLIST& PyramidList
00109 );
00110
00113 INT32 GetTileSizeBytes (
00114 ) const;
00115
00118 bool HasOpacityValues (
00119 ) const;
00120
00125 ERRVALUE Make (
00126 const RVC::IMAGE& parent,
00127 const RVC::DESCRIPTOR& Descriptor,
00128 const MAKEPARMS& MakeParms,
00129 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00130 );
00131
00137 ERRVALUE Make (
00138 RVC::OBJITEM& OpacityItem,
00139 const MAKEPARMS& MakeParms,
00140 const char* Source = 0,
00141 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00142 );
00143
00145 ERRVALUE MakePyramidSet (
00146 IMAGE::PYRAMID flags = IMAGE::PYRAMID_Default,
00147 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00148 );
00149
00153 ERRVALUE Open (
00154 const RVC::IMAGE& parent,
00155 OBJECT::OPENMODE OpenMode = OBJECT::OPENMODE_Read,
00156 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00157 );
00158
00160 ERRVALUE Open (
00161 const RVC::IMAGE& parent,
00162 const RVC::OBJITEM& OpacityMaskItem,
00163 OBJECT::OPENMODE OpenMode = OBJECT::OPENMODE_Read,
00164 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00165 );
00166
00171 int Read (
00172 INT32 Line,
00173 INT32 StartColumn,
00174 UINT8 *data,
00175 INT32 Length = 1
00176 ) const;
00177
00182 int ReadColumn (
00183 INT32 StartLine,
00184 INT32 Column,
00185 UINT8 *data,
00186 INT32 Length = 1
00187 ) const;
00188
00189
00190 ERRVALUE SetColorMap (
00191 const COLOR_ARRAY& ColorMap
00192 );
00193
00198 ERRVALUE Write (
00199 INT32 Line,
00200 INT32 StartColumn,
00201 const UINT8* data,
00202 INT32 Length = 1
00203 );
00204
00205 private:
00206 #ifndef GENERATING_DOXYGEN_OUTPUT
00207
00208 IMAGE* m_Image;
00209 RASTER m_OpacityObj;
00210 NULLMASK m_NullObj;
00211 IMAGE::CELLTYPE m_CellType;
00212 IMAGE::CELLTYPE m_ParentCellType;
00213 mutable SIMPLE_ARRAY<UINT8> m_Buffer;
00214 SIMPLE_ARRAY<UINT8> m_OpacityMap;
00215 OBJITEM m_ParentObjItem;
00216
00218 virtual ERRVALUE v_CloseObject ();
00219 virtual ERRVALUE v_CopyObject (RVC::OBJECT& DestParentObj, RVC::OBJECT& DestObj, FILTER* filter, COPYFLAGS CopyFlags, const CREDENTIALS* Credentials) const;
00220 virtual RVC::OBJTYPE v_GetDftObjectType () const;
00221 virtual FILTER* v_GetObjectFilter () const;
00222 virtual bool v_IsObjectOpen () const;
00223 virtual ERRVALUE v_OpenObject (OPENMODE OpenFlags, MDLGPARENT parent, const CREDENTIALS* Credentials);
00224
00226 virtual void v_GetExtents (DRECT3D &extents) const;
00227 virtual void v_GetScale (double& xscale, double& yscale) const;
00228 virtual double v_GetZScale () const;
00229 virtual double v_GetZOffset () const;
00230 virtual bool v_HasCapability (int Capability) const;
00231 virtual void v_SetScale (double xscale, double yscale);
00232 virtual void v_SetZScale (double zscale);
00233 virtual void v_SetZOffset (double zoffset);
00234
00236 virtual ERRVALUE v_GetBandParms (INT32 BandNum, BANDPARMS& BandParms) const;
00237 virtual CELLTYPE v_GetCellType () const;
00238 virtual double v_GetColumnScale () const;
00239 virtual double v_GetLineScale () const;
00240 virtual ERRVALUE v_GetNullValue (INT32 BandNum, NULLVALUE& NullValue) const;
00241 virtual INT32 v_GetNumBands () const;
00242 virtual INT32 v_GetNumColumns () const;
00243 virtual INT32 v_GetNumLines () const;
00244 virtual bool v_HasNullValue (INT32 BandNum) const;
00245 virtual ERRVALUE v_ReadBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const;
00246 virtual ERRVALUE v_ReadColumnBand (INT32 Band, INT32 Line, INT32 StartColumn, void *data, INT32 Length, CONVMODE Convert) const;
00247 virtual ERRVALUE v_SetCacheRect (const LRECT2D& Rect);
00248 virtual ERRVALUE v_SetCacheSize (INT32 NumTiles);
00249 virtual ERRVALUE v_SetCacheSize (CACHEMODE CacheFlags);
00250 virtual ERRVALUE v_SetNullValue (INT32 BandNum, const NULLVALUE* NullValue);
00251 virtual ERRVALUE v_WriteBand (INT32 Band, INT32 Line, INT32 StartColumn, const void *data, INT32 Length, CONVMODE Convert);
00252 #endif // GENERATING_DOXYGEN_OUTPUT
00253
00254 };
00255
00256
00259 class OPACITYMASK::GETOBJFILTER_ISVALIDOPACITYMASK : public GETOBJFILTER {
00260 public:
00261 explicit GETOBJFILTER_ISVALIDOPACITYMASK (
00262 const RASTER& RastObj
00263 );
00264
00265 explicit GETOBJFILTER_ISVALIDOPACITYMASK (
00266 const RASTER::MAKEPARMS& MakeParms
00267 );
00268
00269 GETOBJFILTER_ISVALIDOPACITYMASK (
00270 INT32 NumLines,
00271 INT32 NumColumns
00272 );
00273
00274 private:
00275 INT32 m_NumLines;
00276 INT32 m_NumColumns;
00277
00278 virtual bool v_HasSelectableSubObjects (const RVC::OBJITEM& objitem);
00279 virtual bool v_IsSelectable (const RVC::OBJITEM& objitem, int position = -1);
00280 };
00281
00283 class OPACITYMASK::MAKEPARMS {
00284 public:
00285
00287 MAKEPARMS (
00288 IMAGE::CELLTYPE CellType = IMAGE::CELLTYPE_Unsigned_8,
00289 RASTER::COMPTYPE CompType = RASTER::COMPTYPE_None,
00290 UINT8 InitialValue = 255
00291 );
00292
00295 IMAGE::CELLTYPE GetCellType (
00296 ) const { return (m_CellType); }
00297
00300 RASTER::COMPTYPE GetCompressionType (
00301 ) const { return (m_CompType); }
00302
00304 UINT8 GetInitialValue (
00305 ) const { return (m_InitValue); }
00306
00308 void SetCompression (
00309 RASTER::COMPTYPE CompType
00310 );
00311
00315 void SetCellType (
00316 CELLTYPE CellType
00317 );
00318
00321 void SetInitialValue (
00322 UINT8 InitValue
00323 ) { m_InitValue = InitValue; }
00324
00325 private:
00326 #ifndef GENERATING_DOXYGEN_OUTPUT
00327 CELLTYPE m_CellType;
00328 RASTER::COMPTYPE m_CompType;
00329 UINT8 m_InitValue;
00330 #endif // GENERATING_DOXYGEN_OUTPUT
00331 };
00332
00333
00335 class OPACITYMASK::OBJECT_FILTER : public OBJECT::FILTER {
00336 public:
00337 OBJECT_FILTER () {}
00338 private:
00339 #ifndef GENERATING_DOXYGEN_OUTPUT
00340 virtual bool Filter (const RVC::OBJECT& obj);
00341 #endif // GENERATING_DOXYGEN_OUTPUT
00342 };
00343
00344 }
00345
00346 #endif // INC_RVC_OPACITYMASK_H
00347