From df23a355c480441fea78470bf5dfad94aacd8add Mon Sep 17 00:00:00 2001 From: kgv Date: Tue, 25 May 2021 00:08:05 +0300 Subject: [PATCH] 0032391: Draw Harness - missing syntax validation within vseldump SelectMgr_SelectionImageFiller, SurfaceNormalFiller - pick results from SelectMgr_SortCriterion instead of calling redundant Matches(). vseldump - added missing syntax error output on incorrect -type parameter. --- .../SelectMgr_SelectionImageFiller.cxx | 19 +++++++++------ src/ViewerTest/ViewerTest_ViewerCommands.cxx | 23 +++++++++---------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/SelectMgr/SelectMgr_SelectionImageFiller.cxx b/src/SelectMgr/SelectMgr_SelectionImageFiller.cxx index 9093884dee..76177b2087 100644 --- a/src/SelectMgr/SelectMgr_SelectionImageFiller.cxx +++ b/src/SelectMgr/SelectMgr_SelectionImageFiller.cxx @@ -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); + } } } }; diff --git a/src/ViewerTest/ViewerTest_ViewerCommands.cxx b/src/ViewerTest/ViewerTest_ViewerCommands.cxx index 18c1b45054..0a37eb4eef 100644 --- a/src/ViewerTest/ViewerTest_ViewerCommands.cxx +++ b/src/ViewerTest/ViewerTest_ViewerCommands.cxx @@ -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"