0020716: Eliminate usage of "config.h" header file
[occt.git] / src / ViewerTest / ViewerTest.cxx
index 5fed471..1edd03e 100644 (file)
 #include <Prs3d_IsoAspect.hxx>
 #include <TopTools_MapOfShape.hxx>
 
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
 #include <stdio.h>
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
 
 #include <Draw_Interpretor.hxx>
 #include <TCollection_AsciiString.hxx>
@@ -2028,6 +2022,7 @@ int VRemove (Draw_Interpretor& theDI,
   ViewerTest_RedrawMode aToUpdate     = ViewerTest_RM_Auto;
   Standard_Boolean      isContextOnly = Standard_False;
   Standard_Boolean      toRemoveAll   = Standard_False;
+  Standard_Boolean      toPrintInfo   = Standard_True;
 
   Standard_Integer anArgIter = 1;
   for (; anArgIter < theArgNb; ++anArgIter)
@@ -2042,6 +2037,10 @@ int VRemove (Draw_Interpretor& theDI,
     {
       toRemoveAll = Standard_True;
     }
+    else if (anArg == "-noinfo")
+    {
+      toPrintInfo = Standard_False;
+    }
     else if (!parseRedrawMode (anArg, aToUpdate))
     {
       break;
@@ -2133,11 +2132,13 @@ int VRemove (Draw_Interpretor& theDI,
        anIter.More(); anIter.Next())
   {
     const Handle(AIS_InteractiveObject) anIO  = Handle(AIS_InteractiveObject)::DownCast (GetMapOfAIS().Find2 (anIter.Value()));
-
     if (!anIO.IsNull())
     {
       TheAISContext()->Remove (anIO, Standard_False);
-      theDI << anIter.Value().ToCString() << " was removed\n";
+      if (toPrintInfo)
+      {
+        theDI << anIter.Value().ToCString() << " was removed\n";
+      }
     }
     else
     {
@@ -2145,10 +2146,12 @@ int VRemove (Draw_Interpretor& theDI,
       if (!aNisIO.IsNull())
       {
         TheNISContext()->Remove (aNisIO);
-        theDI << anIter.Value().ToCString() << " was removed\n";
+        if (toPrintInfo)
+        {
+          theDI << anIter.Value().ToCString() << " was removed\n";
+        }
       }
     }
-      
     if (!isContextOnly)
     {
       GetMapOfAIS().UnBind2 (anIter.Value());
@@ -2854,19 +2857,31 @@ static int VDisplay2 (Draw_Interpretor& theDI,
   }
 
   ViewerTest_RedrawMode aToUpdate = ViewerTest_RM_Auto;
+  Standard_Integer      isMutable = -1;
   for (Standard_Integer anArgIter = 1; anArgIter < theArgNb; ++anArgIter)
   {
-    const TCollection_AsciiString aName = theArgVec[anArgIter];
+    const TCollection_AsciiString aName     = theArgVec[anArgIter];
+    TCollection_AsciiString       aNameCase = aName;
+    aNameCase.LowerCase();
     if (parseRedrawMode (aName, aToUpdate))
     {
       continue;
     }
+    else if (aNameCase == "-mutable")
+    {
+      isMutable = 1;
+      continue;
+    }
     else if (!GetMapOfAIS().IsBound2 (aName))
     {
       // create the AIS_Shape from a name
       const Handle(AIS_InteractiveObject) aShape = GetAISShapeFromName (aName.ToCString());
       if (!aShape.IsNull())
       {
+        if (isMutable != -1)
+        {
+          aShape->SetMutable (isMutable == 1);
+        }
         GetMapOfAIS().Bind (aShape, aName);
         aCtx->Display (aShape, Standard_False);
       }
@@ -2877,6 +2892,11 @@ static int VDisplay2 (Draw_Interpretor& theDI,
     if (anObj->IsKind (STANDARD_TYPE (AIS_InteractiveObject)))
     {
       Handle(AIS_InteractiveObject) aShape = Handle(AIS_InteractiveObject)::DownCast (anObj);
+      if (isMutable != -1)
+      {
+        aShape->SetMutable (isMutable == 1);
+      }
+
       if (aShape->Type() == AIS_KOI_Datum)
       {
         aCtx->Display (aShape, Standard_False);
@@ -2896,7 +2916,6 @@ static int VDisplay2 (Draw_Interpretor& theDI,
         aCtx->Redisplay (aShape, Standard_False);
         aCtx->Display   (aShape, Standard_False);
       }
-      aShape.Nullify();
     }
     else if (anObj->IsKind (STANDARD_TYPE (NIS_InteractiveObject)))
     {
@@ -3088,14 +3107,19 @@ static int VAnimation (Draw_Interpretor& di, Standard_Integer argc, const char**
   GetMapOfAIS().Bind(myAisCrankArm,"c");
   GetMapOfAIS().Bind(myAisPropeller,"d");
 
-  TheAISContext()->SetColor(myAisCylinderHead, Quantity_NOC_INDIANRED);
-  TheAISContext()->SetColor(myAisEngineBlock , Quantity_NOC_RED);
-  TheAISContext()->SetColor(myAisPropeller   , Quantity_NOC_GREEN);
+  myAisCylinderHead->SetMutable (Standard_True);
+  myAisEngineBlock ->SetMutable (Standard_True);
+  myAisCrankArm    ->SetMutable (Standard_True);
+  myAisPropeller   ->SetMutable (Standard_True);
 
-  TheAISContext()->Display(myAisCylinderHead,Standard_False);
-  TheAISContext()->Display(myAisEngineBlock,Standard_False );
-  TheAISContext()->Display(myAisCrankArm,Standard_False    );
-  TheAISContext()->Display(myAisPropeller,Standard_False);
+  TheAISContext()->SetColor (myAisCylinderHead, Quantity_NOC_INDIANRED);
+  TheAISContext()->SetColor (myAisEngineBlock,  Quantity_NOC_RED);
+  TheAISContext()->SetColor (myAisPropeller,    Quantity_NOC_GREEN);
+
+  TheAISContext()->Display (myAisCylinderHead, Standard_False);
+  TheAISContext()->Display (myAisEngineBlock,  Standard_False);
+  TheAISContext()->Display (myAisCrankArm,     Standard_False);
+  TheAISContext()->Display (myAisPropeller,    Standard_False);
 
   TheAISContext()->Deactivate(myAisCylinderHead);
   TheAISContext()->Deactivate(myAisEngineBlock );
@@ -3124,11 +3148,11 @@ static int VAnimation (Draw_Interpretor& di, Standard_Integer argc, const char**
     TheAISContext()->UpdateCurrentViewer();
   }
 
-  TopoDS_Shape myNewCrankArm  =myAisCrankArm ->Shape().Located( myAisCrankArm ->Location() );
-  TopoDS_Shape myNewPropeller =myAisPropeller->Shape().Located( myAisPropeller->Location() );
+  TopoDS_Shape myNewCrankArm  =myAisCrankArm ->Shape().Located( myAisCrankArm ->Transformation() );
+  TopoDS_Shape myNewPropeller =myAisPropeller->Shape().Located( myAisPropeller->Transformation() );
 
-  myAisCrankArm ->ResetLocation();
-  myAisPropeller->ResetLocation();
+  myAisCrankArm ->ResetTransformation();
+  myAisPropeller->ResetTransformation();
 
   myAisCrankArm  -> Set(myNewCrankArm );
   myAisPropeller -> Set(myNewPropeller);
@@ -4215,9 +4239,10 @@ void ViewerTest::Commands(Draw_Interpretor& theCommands)
                  __FILE__, visos, group);
 
   theCommands.Add("vdisplay",
-                 "vdisplay [-noupdate|-update] name1 [name2] ... [name n]"
+                 "vdisplay [-noupdate|-update] [-mutable] name1 [name2] ... [name n]"
       "\n\t\t: Displays named objects."
       "\n\t\t: Option -noupdate suppresses viewer redraw call."
+      "\n\t\t: Option -mutable enables optimizations for mutable objects."
                  __FILE__,VDisplay2,group);
 
   theCommands.Add ("vupdate",
@@ -4232,12 +4257,13 @@ void ViewerTest::Commands(Draw_Interpretor& theCommands)
                  __FILE__, VErase, group);
 
   theCommands.Add("vremove",
-    "vremove [-noupdate|-update] [-context] [-all] [name1] ...  [name n]"
+    "vremove [-noupdate|-update] [-context] [-all] [-noinfo] [name1] ...  [name n]"
     "or vremove [-context] -all to remove all objects"
       "\n\t\t: Removes selected or named objects."
       "\n\t\t  If -context is in arguments, the objects are not deleted"
       "\n\t\t  from the map of objects and names."
-      "\n\t\t: Option -noupdate suppresses viewer redraw call.",
+      "\n\t\t: Option -noupdate suppresses viewer redraw call."
+      "\n\t\t: Option -noinfo suppresses displaying the list of removed objects.",
       __FILE__, VRemove, group);
 
   theCommands.Add("vdonly",