0025748: Parallel version of progress indicator
[occt.git] / src / GeomPlate / GeomPlate_BuildPlateSurface.cxx
index 507db23..75a3f5c 100644 (file)
@@ -66,7 +66,7 @@
 #include <TColgp_SequenceOfVec.hxx>
 #include <TColStd_HArray1OfReal.hxx>
 #include <TColStd_SequenceOfInteger.hxx>
-#include <Message_ProgressIndicator.hxx>
+#include <Message_ProgressScope.hxx>
 
 #include <stdio.h>
 
@@ -448,7 +448,7 @@ void GeomPlate_BuildPlateSurface::
 // Function : Perform
 // Calculates the surface filled with loaded constraints
 //---------------------------------------------------------
-void GeomPlate_BuildPlateSurface::Perform(const Handle(Message_ProgressIndicator) & aProgress)
+void GeomPlate_BuildPlateSurface::Perform(const Message_ProgressRange& theProgress)
 { 
 #ifdef OCCT_DEBUG
   // Timing
@@ -479,8 +479,13 @@ void GeomPlate_BuildPlateSurface::Perform(const Handle(Message_ProgressIndicator
   //======================================================================   
   // Initial Surface 
   //======================================================================
+  Message_ProgressScope aPS(theProgress, NULL, 100, Standard_True);
   if (!mySurfInitIsGive)
-    ComputeSurfInit(aProgress);
+  {
+    ComputeSurfInit (aPS.Next(10));
+    if (aPS.UserBreak())
+      return;
+  }
 
   else {
    if (NTLinCont>=2)
@@ -651,9 +656,9 @@ void GeomPlate_BuildPlateSurface::Perform(const Handle(Message_ProgressIndicator
          // Construction of the surface
          //====================================================================
 
-         myPlate.SolveTI(myDegree, ComputeAnisotropie(), aProgress);
+         myPlate.SolveTI(myDegree, ComputeAnisotropie(), aPS.Next(90));
 
-         if (!aProgress.IsNull() && aProgress->UserBreak())
+         if (aPS.UserBreak())
          {
            return;
          }
@@ -690,9 +695,9 @@ void GeomPlate_BuildPlateSurface::Perform(const Handle(Message_ProgressIndicator
          //====================================================================
          //Construction of the surface
          //====================================================================
-         myPlate.SolveTI(myDegree, ComputeAnisotropie(), aProgress);
+         myPlate.SolveTI(myDegree, ComputeAnisotropie(), aPS.Next(90));
 
-         if (!aProgress.IsNull() && aProgress->UserBreak())
+         if (aPS.UserBreak())
          {
            return;
          }
@@ -1358,7 +1363,7 @@ Standard_Boolean GeomPlate_BuildPlateSurface::
 // there are point constraints.
 //-------------------------------------------------------------------------
 
-void GeomPlate_BuildPlateSurface::ComputeSurfInit(const Handle(Message_ProgressIndicator) & aProgress)
+void GeomPlate_BuildPlateSurface::ComputeSurfInit(const Message_ProgressRange& theProgress)
 {
   Standard_Integer nopt=2, popt=2, Np=1;
   Standard_Boolean isHalfSpace = Standard_True;
@@ -1723,8 +1728,8 @@ void GeomPlate_BuildPlateSurface::ComputeSurfInit(const Handle(Message_ProgressI
       //====================================================================
       // Construction of the surface
       //====================================================================
-      myPlate.SolveTI(2, ComputeAnisotropie(), aProgress);
-      if (!aProgress.IsNull() && aProgress->UserBreak())
+      myPlate.SolveTI(2, ComputeAnisotropie(), theProgress);
+      if (theProgress.UserBreak())
       {
           return;
       }