Salome HOME
Merge branch 'BR_LAND_COVER_MAP' of ssh://git.salome-platform.org/modules/hydro into...
[modules/hydro.git] / src / HYDROData / HYDROData_PolylineOperator.h
index ed658ffbadb1c1c412c183022fec1add7d9b8896..eefac88bad05e67ac5c3237f353eeda87b97c04d 100644 (file)
@@ -25,6 +25,8 @@
 #include <vector>
 
 class Handle( HYDROData_Document );
+class HYDROData_TopoCurve;
+class Handle(HYDROData_Object);
 
 class HYDRODATA_EXPORT HYDROData_PolylineOperator
 {
@@ -36,7 +38,8 @@ public:
   bool Split( const Handle( HYDROData_Document )& theDoc,
               const Handle( HYDROData_PolylineXY )& thePolyline,
               const Handle( HYDROData_PolylineXY )& theTool,
-              double theTolerance ) const;
+              double theTolerance,
+              bool& theIsIntersected) const;
   bool Split( const Handle( HYDROData_Document )& theDoc,
               const HYDROData_SequenceOfObjects& thePolylines,
               double theTolerance );
@@ -50,12 +53,28 @@ public:
     const Handle( HYDROData_PolylineXY )& thePolyline,
     std::vector<TopoDS_Wire>& theWires);
 
+  //! The method is intended to approximate the B-spline edge curve
+  //! by a 'Hydro' spline section.
+  //! Inserts the knot in the middle of each such B-spline piece that
+  //! the middle deflection is more than the required deflection and
+  //! more than the half of the maximal middle deflection.
+  //! Returns the initial maximal middle deflection.
+  //! Returns a negative value in the case of any erorr.
+  static double ReduceDeflection(
+    const double theDeflection,
+    HYDROData_TopoCurve& theCurve,
+    int& thePieceCount);
+
+  bool Extract( const Handle(HYDROData_Document)& theDocument,
+                const Handle(HYDROData_Object)& theObject );
+
 protected:
   bool split( const Handle( HYDROData_Document )& theDoc,
               const Handle( HYDROData_PolylineXY )& thePolyline,
               const HYDROData_SequenceOfObjects& theTools,
               double theTolerance,
-              int theIgnoreIndex ) const;
+              int theIgnoreIndex,
+              bool& theIsIntersected) const;
 
   static void Split(
     const TopoDS_Wire& theWire,
@@ -66,7 +85,8 @@ protected:
   static bool CreatePolylines( const Handle( HYDROData_Document )& theDoc,
                                const QString& theNamePrefix,
                                const std::vector<TopoDS_Shape>& theShape,
-                               bool isUseIndices );
+                               bool isUseIndices,
+                               const QColor& theColor );
 };
 
 #endif