Salome HOME
Access to 'Invalid value' of altitude from Bathymetry is added.
[modules/hydro.git] / src / HYDROData / HYDROData_Bathymetry.h
1
2 #ifndef HYDROData_Bathymetry_HeaderFile
3 #define HYDROData_Bathymetry_HeaderFile
4
5 #include <HYDROData_Object.h>
6
7 class gp_XY;
8 class gp_XYZ;
9 class QPointF;
10 class QFile;
11
12 DEFINE_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_Object)
13
14
15 /**\class HYDROData_Bathymetry
16  * \brief Class that stores/retreives information about the Bathymetry.
17  *
18  * The Bathymetry represents measurement of the altitude of points on the terrain.
19  */
20 class HYDROData_Bathymetry : public HYDROData_Object
21 {
22 public:
23
24   typedef gp_XYZ               AltitudePoint;
25   typedef QList<AltitudePoint> AltitudePoints;
26
27 protected:
28
29   /**
30    * Enumeration of tags corresponding to the persistent object parameters.
31    */
32   enum DataTag
33   {
34     DataTag_First = HYDROData_Object::DataTag_First + 100, ///< first tag, to reserve
35     DataTag_AltitudePoints ///< altitude points, array of reals
36   };
37
38 public:
39
40   DEFINE_STANDARD_RTTI(HYDROData_Bathymetry);
41
42   /**
43    * Returns the kind of this object. Must be redefined in all objects of known type.
44    */
45   HYDRODATA_EXPORT virtual const ObjectKind GetKind() const { return KIND_BATHYMETRY; }
46
47
48 public:      
49   // Public methods to work with Bathymetry altitudes.
50
51   /**
52    * Returns altitude points list.
53    * \return points list
54    */
55   HYDRODATA_EXPORT static double            GetInvalidAltitude();
56
57   /**
58    * Replace current altitude points by new one.
59    * \param thePoints the altitude points list
60    */
61   HYDRODATA_EXPORT virtual void             SetAltitudePoints( const AltitudePoints& thePoints );
62
63   /**
64    * Returns altitude points list.
65    * \return points list
66    */
67   HYDRODATA_EXPORT virtual AltitudePoints   GetAltitudePoints() const;
68
69   /**
70    * Remove all altitude points.
71    */
72   HYDRODATA_EXPORT virtual void             RemoveAltitudePoints();
73
74   /**
75    * Returns altitude for given point.
76    * \param thePoint the point to examine
77    * \return altitude value
78    */
79   HYDRODATA_EXPORT virtual double           GetAltitudeForPoint( const QPointF& thePoint ) const;
80
81   /**
82    * Returns altitude for given point.
83    * \param thePoint the point to examine
84    * \return altitude value
85    */
86   HYDRODATA_EXPORT virtual double           GetAltitudeForPoint( const gp_XY& thePoint ) const;
87
88
89 public:
90   // Public methods to work with files.
91
92   /**
93    * Imports Bathymetry data from file. The supported file types:
94    *  - xyz
95    * \param theFileName the path to file
96    * \return \c true if file has been successfully read
97    */
98   HYDRODATA_EXPORT virtual bool             ImportFromFile( const QString& theFileName );
99
100
101 private:
102
103   /**
104    * Imports Bathymetry data from 'XYZ' file.
105    */
106   bool                                      importFromXYZFile( QFile&          theFile,
107                                                                AltitudePoints& thePoints );
108
109 protected:
110
111   friend class HYDROData_Iterator;
112
113   /**
114    * Creates new object in the internal data structure. Use higher level objects 
115    * to create objects with real content.
116    */
117   HYDROData_Bathymetry();
118
119   /**
120    * Destructs properties of the object and object itself, removes it from the document.
121    */
122   ~HYDROData_Bathymetry();
123 };
124
125 #endif