0032391: Draw Harness - missing syntax validation within vseldump
authorkgv <kgv@opencascade.com>
Mon, 24 May 2021 21:08:05 +0000 (00:08 +0300)
committerbugmaster <bugmaster@opencascade.com>
Wed, 26 May 2021 16:26:12 +0000 (19:26 +0300)
SelectMgr_SelectionImageFiller, SurfaceNormalFiller - pick results from SelectMgr_SortCriterion
instead of calling redundant Matches().
vseldump - added missing syntax error output on incorrect -type parameter.

src/SelectMgr/SelectMgr_SelectionImageFiller.cxx
src/ViewerTest/ViewerTest_ViewerCommands.cxx

index 9093884..76177b2 100644 (file)
@@ -339,14 +339,19 @@ namespace
       }
       else
       {
-        const Handle(Select3D_SensitiveEntity)& aPickedEntity = myMainSel->PickedEntity (thePicked);
-        SelectBasics_PickResult aPickResult;
-        aPickedEntity->Matches (myMainSel->GetManager(), aPickResult);
-        Graphic3d_Vec3 aNormal = aPickResult.SurfaceNormal();
+        const SelectMgr_SortCriterion& aPickedData = myMainSel->PickedData (thePicked);
+        Graphic3d_Vec3 aNormal = aPickedData.Normal;
         aNormal.Normalize();
-        myImage->SetPixelColor (theCol, theRow, Quantity_ColorRGBA (aNormal.x() * 0.5f + 0.5f, 
-                                                                    aNormal.y() * 0.5f + 0.5f,
-                                                                    aNormal.z() * 0.5f + 0.5f, 1.0f));
+        if (aNormal.Modulus() > 0.0f)
+        {
+          myImage->SetPixelColor (theCol, theRow, Quantity_ColorRGBA (aNormal.x() * 0.5f + 0.5f,
+                                                                      aNormal.y() * 0.5f + 0.5f,
+                                                                      aNormal.z() * 0.5f + 0.5f, 1.0f));
+        }
+        else
+        {
+          myImage->SetPixelColor (theCol, theRow, Quantity_NOC_BLACK);
+        }
       }
     }
   };
index 18c1b45..0a37eb4 100644 (file)
@@ -13673,12 +13673,6 @@ static int VDumpSelectionImage (Draw_Interpretor& /*theDi*/,
                                 Standard_Integer  theArgsNb,
                                 const char**      theArgVec)
 {
-  if (theArgsNb < 2)
-  {
-    Message::SendFail() << "Syntax error: wrong number arguments for '" << theArgVec[0] << "'";
-    return 1;
-  }
-
   const Handle(AIS_InteractiveContext)& aContext = ViewerTest::GetAISContext();
   const Handle(V3d_View)& aView = ViewerTest::CurrentView();
   if (aContext.IsNull())
@@ -13700,7 +13694,7 @@ static int VDumpSelectionImage (Draw_Interpretor& /*theDi*/,
     {
       if (++anArgIter >= theArgsNb)
       {
-        Message::SendFail ("Syntax error: wrong number parameters of flag '-depth'");
+        Message::SendFail ("Syntax error: wrong number parameters of flag '-type'");
         return 1;
       }
 
@@ -13713,10 +13707,10 @@ static int VDumpSelectionImage (Draw_Interpretor& /*theDi*/,
         aType       = StdSelect_TypeOfSelectionImage_NormalizedDepth;
         anImgFormat = Image_Format_GrayF;
       }
-      if (aValue == "depthinverted"
-       || aValue == "normdepthinverted"
-       || aValue == "normalizeddepthinverted"
-       || aValue == "inverted")
+      else if (aValue == "depthinverted"
+            || aValue == "normdepthinverted"
+            || aValue == "normalizeddepthinverted"
+            || aValue == "inverted")
       {
         aType       = StdSelect_TypeOfSelectionImage_NormalizedDepthInverted;
         anImgFormat = Image_Format_GrayF;
@@ -13756,6 +13750,11 @@ static int VDumpSelectionImage (Draw_Interpretor& /*theDi*/,
       {
         aType = StdSelect_TypeOfSelectionImage_SurfaceNormal;
       }
+      else
+      {
+        Message::SendFail() << "Syntax error: unknown type '" << aValue << "'";
+        return 1;
+      }
     }
     else if (aParam == "-picked"
           || aParam == "-pickeddepth"
@@ -15151,7 +15150,7 @@ void ViewerTest::ViewerCommands(Draw_Interpretor& theCommands)
                    __FILE__, VSelectionProperties, group);
 
   theCommands.Add ("vseldump",
-                   "vseldump file -type {depth|unnormDepth|object|owner|selMode|entity}=depth -pickedIndex Index=1"
+                   "vseldump file -type {depth|unnormDepth|object|owner|selMode|entity|surfNormal}=depth -pickedIndex Index=1"
                    "\n\t\t:       [-xrPose base|head=base]"
                    "\n\t\t: Generate an image based on detection results:"
                    "\n\t\t:   depth       normalized depth values"