Salome HOME
refs #1330: basic implementation of the not zoomable polyline arrows
[modules/hydro.git] / src / HYDROData / HYDROData_Bathymetry.h
index 4c8a23e64e694ade5e421e9cdb37c8645eddce37..67a5868c816d078bd57fb859e85108e8fd1f9b8b 100644 (file)
 class QFile;
 class gp_XYZ;
 class gp_XY;
-class Handle_HYDROData_PolylineXY;
+class HYDROData_PolylineXY;
 class HYDROData_QuadtreeNode;
 class vtkPolyData;
 class vtkIdList;
 
-DEFINE_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject)
-
 
 /**\class HYDROData_Bathymetry
  * \brief Class that stores/retreives information about the Bathymetry.
@@ -41,12 +39,14 @@ DEFINE_STANDARD_HANDLE(HYDROData_Bathymetry, HYDROData_IAltitudeObject)
 class HYDROData_Bathymetry : public HYDROData_IAltitudeObject
 {
 public:
-  struct AltitudePoint
+  struct HYDRODATA_EXPORT AltitudePoint
   {
-    AltitudePoint( double x=0, double y=0, double z=0 ) { X=x; Y=y; Z=z; }
+    AltitudePoint( double x=0, double y=0, double z=0 );
     double X;
     double Y;
     double Z;
+
+    double SquareDistance( const AltitudePoint& ) const;
   };
   typedef std::vector<AltitudePoint> AltitudePoints;
 
@@ -62,11 +62,12 @@ protected:
     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.
@@ -95,10 +96,11 @@ 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
 
   /**
@@ -153,7 +155,9 @@ public:
    */
   HYDRODATA_EXPORT virtual bool             ImportFromFiles( const QStringList& theFileNames );
 
-  HYDRODATA_EXPORT Handle_HYDROData_PolylineXY CreateBoundaryPolyline() const;
+  HYDRODATA_EXPORT virtual bool             ImportFromFile( const QString& theFileName );
+
+  HYDRODATA_EXPORT Handle(HYDROData_PolylineXY) CreateBoundaryPolyline() const;
 
   HYDRODATA_EXPORT virtual void UpdateLocalCS( double theDx, double theDy );
 
@@ -164,8 +168,10 @@ 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,