0025748: Parallel version of progress indicator
[occt.git] / src / ShapeCustom / ShapeCustom.cxx
index 0d4ab45..83188af 100644 (file)
@@ -35,8 +35,7 @@
 #include <ShapeBuild_ReShape.hxx>
 #include <Standard_ErrorHandler.hxx>
 
-#include <Message_ProgressIndicator.hxx>
-#include <Message_ProgressSentry.hxx>
+#include <Message_ProgressScope.hxx>
 
 //=======================================================================
 //function : ApplyModifier
@@ -47,7 +46,7 @@ TopoDS_Shape ShapeCustom::ApplyModifier (const TopoDS_Shape &S,
                                          const Handle(BRepTools_Modification) &M,
                                          TopTools_DataMapOfShapeShape &context,
                                          BRepTools_Modifier& MD,
-                                         const Handle(Message_ProgressIndicator) & aProgress,
+                                         const Message_ProgressRange& theProgress,
                                          const Handle(ShapeBuild_ReShape) & aReShape)
 {
   // protect against INTERNAL/EXTERNAL shapes
@@ -61,16 +60,17 @@ TopoDS_Shape ShapeCustom::ApplyModifier (const TopoDS_Shape &S,
     B.MakeCompound ( C );
 
     Standard_Integer aShapeCount = SF.NbChildren();
-    Message_ProgressSentry aPSentry(aProgress, "Applying Modifier For Solids", 0, aShapeCount, 1);
-    for ( TopoDS_Iterator it(SF); it.More() && aPSentry.More(); it.Next(), aPSentry.Next() ) {
+    Message_ProgressScope aPS(theProgress, "Applying Modifier For Solids", aShapeCount);
+    for ( TopoDS_Iterator it(SF); it.More() && aPS.More(); it.Next()) {
       TopoDS_Shape shape = it.Value();
       TopLoc_Location L = shape.Location(), nullLoc;
       shape.Location ( nullLoc );
       TopoDS_Shape res;
+      Message_ProgressRange aRange = aPS.Next();
       if ( context.IsBound ( shape ) )
         res = context.Find ( shape ).Oriented ( shape.Orientation() );
       else
-        res = ApplyModifier ( shape, M, context ,MD, aProgress);
+        res = ApplyModifier ( shape, M, context ,MD, aRange);
 
       if ( ! res.IsSame ( shape ) ) {
         context.Bind ( shape, res );
@@ -80,7 +80,7 @@ TopoDS_Shape ShapeCustom::ApplyModifier (const TopoDS_Shape &S,
       B.Add ( C, res );
     }
 
-    if ( !aPSentry.More() )
+    if ( !aPS.More() )
     {
       // Was cancelled
       return S;
@@ -91,12 +91,12 @@ TopoDS_Shape ShapeCustom::ApplyModifier (const TopoDS_Shape &S,
     return C.Oriented ( S.Orientation() );
   }
 
-  Message_ProgressSentry aPSentry(aProgress, "Modify the Shape", 0, 1, 1);
+  Message_ProgressScope aPS(theProgress, "Modify the Shape", 1);
   // Modify the shape
   MD.Init(SF);
-  MD.Perform(M, aProgress);
+  MD.Perform(M, aPS.Next());
   
-  if ( !aPSentry.More() || !MD.IsDone() ) return S;
+  if ( !aPS.More() || !MD.IsDone() ) return S;
   if ( !aReShape.IsNull() )
   {
     for(TopoDS_Iterator theIterator(SF,Standard_False);theIterator.More();theIterator.Next())