Salome HOME
refs #1330: basic implementation of the not zoomable polyline arrows
[modules/hydro.git] / src / HYDROData / HYDROData_Bathymetry.h
index 6a555afdf39052c92054c6762d3db8803fcb7110..67a5868c816d078bd57fb859e85108e8fd1f9b8b 100644 (file)
 #define HYDROData_Bathymetry_HeaderFile
 
 #include "HYDROData_IAltitudeObject.h"
-#include "HYDROData_QuadtreeNode.hxx"
-#include <vtkPolyData.h>
-#include <vtkIdList.h>
+#include <vector>
 
 class QFile;
 class gp_XYZ;
 class gp_XY;
-class Handle_HYDROData_PolylineXY;
-
-
-DEFINE_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject)
+class HYDROData_PolylineXY;
+class HYDROData_QuadtreeNode;
+class vtkPolyData;
+class vtkIdList;
 
 
 /**\class HYDROData_Bathymetry
@@ -41,9 +39,16 @@ DEFINE_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject)
 class HYDROData_Bathymetry : public HYDROData_IAltitudeObject
 {
 public:
+  struct HYDRODATA_EXPORT AltitudePoint
+  {
+    AltitudePoint( double x=0, double y=0, double z=0 );
+    double X;
+    double Y;
+    double Z;
 
-  typedef gp_XYZ                              AltitudePoint;
-  typedef NCollection_Sequence<AltitudePoint> AltitudePoints;
+    double SquareDistance( const AltitudePoint& ) const;
+  };
+  typedef std::vector<AltitudePoint> AltitudePoints;
 
 protected:
 
@@ -55,12 +60,14 @@ protected:
     DataTag_First = HYDROData_IAltitudeObject::DataTag_First + 100, ///< first tag, to reserve
     DataTag_AltitudePoints,    ///< altitude points, array of reals
     DataTag_FilePath,          ///< bathymetry imported file path
+    DataTag_FilePaths,         ///< bathymetry imported file paths
     DataTag_AltitudesInverted, ///< flag to invert z values
+    DataTag_Quadtree,          ///< quadtree associated to the zone
+    DataTag_Delaunay,          ///< Delaunay 2D associated to the zone
   };
 
 public:
-
-  DEFINE_STANDARD_RTTI(HYDROData_Bathymetry);
+  DEFINE_STANDARD_RTTIEXT(HYDROData_Bathymetry, HYDROData_IAltitudeObject);
 
   /**
    * Returns the kind of this object. Must be redefined in all objects of known type.
@@ -89,9 +96,12 @@ public:
    */
   HYDRODATA_EXPORT virtual AltitudePoints   GetAltitudePoints(bool IsConvertToGlobal = false) const;
   HYDRODATA_EXPORT virtual HYDROData_QuadtreeNode* GetQuadtreeNodes() const;
+  HYDRODATA_EXPORT virtual HYDROData_QuadtreeNode* ComputeQuadtreeNodes( int key) const;
 
+#ifndef LIGHT_MODE
   HYDRODATA_EXPORT virtual vtkPolyData* GetVtkDelaunay2D() const;
-  //HYDRODATA_EXPORT bool interpolZtriangle(const gp_XY& point, vtkIdList* triangle, double* z);
+  HYDRODATA_EXPORT virtual vtkPolyData* ComputeVtkDelaunay2D(int key) const;
+#endif
 
   /**
    * Remove all altitude points.
@@ -115,11 +125,15 @@ public:
    */
   HYDRODATA_EXPORT void                     SetFilePath( const TCollection_AsciiString& theFilePath );
 
+  HYDRODATA_EXPORT void                     SetFilePaths( const QStringList& theFilePaths );
+
   /**
    * Returns uploaded bathymetry file path
    */
   HYDRODATA_EXPORT TCollection_AsciiString  GetFilePath() const;
 
+  HYDRODATA_EXPORT QStringList GetFilePaths() const;
+
   /**
    * Set flag indicating needs to invert altitude values
    * \param theIsInverted new invert value
@@ -139,9 +153,11 @@ public:
    * \param theFileName the path to file
    * \return \c true if file has been successfully read
    */
-  HYDRODATA_EXPORT virtual bool             ImportFromFile( const TCollection_AsciiString& theFileName );
+  HYDRODATA_EXPORT virtual bool             ImportFromFiles( const QStringList& theFileNames );
+
+  HYDRODATA_EXPORT virtual bool             ImportFromFile( const QString& theFileName );
 
-  HYDRODATA_EXPORT Handle_HYDROData_PolylineXY CreateBoundaryPolyline() const;
+  HYDRODATA_EXPORT Handle(HYDROData_PolylineXY) CreateBoundaryPolyline() const;
 
   HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
 
@@ -152,9 +168,12 @@ private:
    */
   bool                                      importFromXYZFile( QFile&          theFile,
                                                                AltitudePoints& thePoints ) const;
+  //static int myQuadTreeNumber;
   static std::map<int, HYDROData_QuadtreeNode*> myQuadtrees;
+#ifndef LIGHT_MODE
+  //static int myDelaunayNumber;
   static std::map<int, vtkPolyData*> myDelaunay2D;
-
+#endif
   bool                                      importFromASCFile( QFile&          theFile,
                                                                AltitudePoints& thePoints ) const;