Salome HOME
Convert to Unix format
[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     DataTag_FilePath        ///< bathymetry imported file path
37   };
38
39 public:
40
41   DEFINE_STANDARD_RTTI(HYDROData_Bathymetry);
42
43   /**
44    * Returns the kind of this object. Must be redefined in all objects of known type.
45    */
46   HYDRODATA_EXPORT virtual const ObjectKind GetKind() const { return KIND_BATHYMETRY; }
47
48
49 public:      
50   // Public methods to work with Bathymetry altitudes.
51
52   /**
53    * Returns altitude points list.
54    * \return points list
55    */
56   HYDRODATA_EXPORT static double            GetInvalidAltitude();
57
58   /**
59    * Replace current altitude points by new one.
60    * \param thePoints the altitude points list
61    */
62   HYDRODATA_EXPORT virtual void             SetAltitudePoints( const AltitudePoints& thePoints );
63
64   /**
65    * Returns altitude points list.
66    * \return points list
67    */
68   HYDRODATA_EXPORT virtual AltitudePoints   GetAltitudePoints() const;
69
70   /**
71    * Remove all altitude points.
72    */
73   HYDRODATA_EXPORT virtual void             RemoveAltitudePoints();
74
75   /**
76    * Returns altitude for given point.
77    * \param thePoint the point to examine
78    * \return altitude value
79    */
80   HYDRODATA_EXPORT virtual double           GetAltitudeForPoint( const QPointF& thePoint ) const;
81
82   /**
83    * Returns altitude for given point.
84    * \param thePoint the point to examine
85    * \return altitude value
86    */
87   HYDRODATA_EXPORT virtual double           GetAltitudeForPoint( const gp_XY& thePoint ) const;
88
89
90 public:
91   // Public methods to work with files.
92
93   /**
94    * Stores the bathymetry file path
95    * \param theFilePath image file path
96    */
97   HYDRODATA_EXPORT void                     SetFilePath( const QString& theFilePath );
98
99   /**
100    * Returns uploaded bathymetry file path
101    */
102   HYDRODATA_EXPORT QString                  GetFilePath() const;
103
104   /**
105    * Imports Bathymetry data from file. The supported file types:
106    *  - xyz
107    * \param theFileName the path to file
108    * \return \c true if file has been successfully read
109    */
110   HYDRODATA_EXPORT virtual bool             ImportFromFile( const QString& theFileName );
111
112
113 private:
114
115   /**
116    * Imports Bathymetry data from 'XYZ' file.
117    */
118   bool                                      importFromXYZFile( QFile&          theFile,
119                                                                AltitudePoints& thePoints );
120
121 protected:
122
123   friend class HYDROData_Iterator;
124
125   /**
126    * Creates new object in the internal data structure. Use higher level objects 
127    * to create objects with real content.
128    */
129   HYDROData_Bathymetry();
130
131   /**
132    * Destructs properties of the object and object itself, removes it from the document.
133    */
134   ~HYDROData_Bathymetry();
135 };
136
137 #endif