Salome HOME
Merge branch 'BR_MULTI_BATHS' into HEAD
[modules/hydro.git] / src / HYDROData / HYDROData_CalculationCase.cxx
index 8c2752409ddd0044853091330e7a4f32b0bd8bd5..2b2cb691e5bee23e8a99022e5ca121c982c91734 100644 (file)
@@ -282,12 +282,15 @@ void HYDROData_CalculationCase::Update()
   HYDROData_SplitToZonesTool::SplitDataList aZonesList, anEdgesList;
 
   Handle(HYDROData_PolylineXY) aBoundaryPolyline = GetBoundaryPolyline();
+
+  HYDROData_SequenceOfObjects InterPolys = GetInterPolyObjects();
+
   HYDROData_SequenceOfObjects aGeomObjects = GetGeometryObjects();
   if ( !aGeomObjects.IsEmpty() ) {
     HYDROData_SequenceOfObjects aGeomGroups = GetGeometryGroups();
 
     HYDROData_SplitToZonesTool::SplitDataList aSplitObjects =
-      HYDROData_SplitToZonesTool::Split( aGeomObjects, aGeomGroups, aBoundaryPolyline );
+      HYDROData_SplitToZonesTool::Split( aGeomObjects, aGeomGroups, aBoundaryPolyline, InterPolys );
     if ( !aSplitObjects.isEmpty() ) {
       HYDROData_SplitToZonesTool::SplitDataListIterator anIter( aSplitObjects );
       while( anIter.hasNext() ) {
@@ -902,6 +905,20 @@ double HYDROData_CalculationCase::GetStricklerCoefficientForPoint( const gp_XY&
   return aCoeff;
 }
 
+bool HYDROData_CalculationCase::GetStricklerCoefficientForPoints(const std::vector<gp_Pnt2d>& thePoints,
+  std::vector<double>& theCoeffs, double DefValue, bool UseMax )
+{
+
+  Handle( HYDROData_LandCoverMap ) aLCM = GetLandCoverMap();
+  Handle( HYDROData_StricklerTable ) aTable = GetStricklerTable();
+  if( aLCM.IsNull() || aTable.IsNull() )
+    return false;
+
+  aLCM->ClassifyPoints(thePoints, aTable, theCoeffs, DefValue, UseMax );
+
+  return true;
+}
+
 Handle(HYDROData_Region) HYDROData_CalculationCase::GetRegionFromPoint( const gp_XY& thePoint ) const
 {
   Handle(HYDROData_Region) aResRegion;
@@ -1379,3 +1396,32 @@ bool HYDROData_CalculationCase::GetRule( int theIndex,
   return HYDROData_PriorityQueue::GetRule( aRulesLab, theIndex,
     theObject1, thePriority, theObject2, theMergeType );
 }
+
+bool HYDROData_CalculationCase::AddInterPoly( const Handle(HYDROData_PolylineXY)& theInterPolyline )
+{
+  HYDROData_CalculationCase::DataTag aDataTag = DataTag_InterPoly;
+
+  if ( HasReference( theInterPolyline, aDataTag ) )
+    return false; 
+
+  AddReferenceObject( theInterPolyline, aDataTag );
+
+  return true;
+}
+
+HYDROData_SequenceOfObjects HYDROData_CalculationCase::GetInterPolyObjects() const
+{
+  return GetReferenceObjects( DataTag_InterPoly ); 
+}
+
+void HYDROData_CalculationCase::RemoveInterPolyObject( const Handle(HYDROData_PolylineXY)& theInterPolyline ) 
+{
+  if ( theInterPolyline.IsNull() )
+    return;
+
+  RemoveReferenceObject( theInterPolyline->Label(), DataTag_InterPoly );
+
+}
+
+
+