From 9a113bc101be399d8e94e84d7eefe1450aabf36b Mon Sep 17 00:00:00 2001 From: Alexey Kondratyev Date: Fri, 15 Oct 2021 16:49:02 +0300 Subject: [PATCH] bos #26450 Random color (TUI part) Update "setColor" function to get an opportunity to setting color randomly from python file. Add test to check setting colors. --- src/ModelHighAPI/ModelHighAPI.i | 3 ++ src/ModelHighAPI/ModelHighAPI_Selection.cpp | 21 ++++++--- src/ModelHighAPI/ModelHighAPI_Selection.h | 2 +- src/ModelHighAPI/Test/TestSetColors.py | 48 +++++++++++++++++++++ src/ModelHighAPI/tests.set | 1 + 5 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 src/ModelHighAPI/Test/TestSetColors.py diff --git a/src/ModelHighAPI/ModelHighAPI.i b/src/ModelHighAPI/ModelHighAPI.i index 76f6c9f0a..82af134c6 100644 --- a/src/ModelHighAPI/ModelHighAPI.i +++ b/src/ModelHighAPI/ModelHighAPI.i @@ -52,6 +52,9 @@ // directors %feature("director") ModelHighAPI_Dumper; +// functions with named parameters +%feature("kwargs") setColor; + // renamed methods %rename(__print__) ModelHighAPI_Dumper::operator<<; diff --git a/src/ModelHighAPI/ModelHighAPI_Selection.cpp b/src/ModelHighAPI/ModelHighAPI_Selection.cpp index 67543eedc..3b45898cd 100644 --- a/src/ModelHighAPI/ModelHighAPI_Selection.cpp +++ b/src/ModelHighAPI/ModelHighAPI_Selection.cpp @@ -25,7 +25,7 @@ #include #include #include - +#include #include //-------------------------------------------------------------------------------------- @@ -209,7 +209,7 @@ std::wstring ModelHighAPI_Selection::name() const return std::wstring(); } -void ModelHighAPI_Selection::setColor(int theRed, int theGreen, int theBlue) +void ModelHighAPI_Selection::setColor(int theRed, int theGreen, int theBlue, bool random) { if (myVariantType != VT_ResultSubShapePair || !myResultSubShapePair.first.get()) return; @@ -217,9 +217,20 @@ void ModelHighAPI_Selection::setColor(int theRed, int theGreen, int theBlue) AttributeIntArrayPtr aColor = myResultSubShapePair.first->data()->intArray(ModelAPI_Result::COLOR_ID()); aColor->setSize(3); - aColor->setValue(0, theRed); - aColor->setValue(1, theGreen); - aColor->setValue(2, theBlue); + + if (random) + { + std::vector aValues; + ModelAPI_Tools::findRandomColor(aValues); + for (int anIndex = 0; anIndex < 3; ++anIndex) + aColor->setValue(anIndex, aValues[anIndex]); + } + else + { + aColor->setValue(0, theRed); + aColor->setValue(1, theGreen); + aColor->setValue(2, theBlue); + } } void ModelHighAPI_Selection::setDeflection(double theValue) diff --git a/src/ModelHighAPI/ModelHighAPI_Selection.h b/src/ModelHighAPI/ModelHighAPI_Selection.h index 93f6690a9..1b812ad7d 100644 --- a/src/ModelHighAPI/ModelHighAPI_Selection.h +++ b/src/ModelHighAPI/ModelHighAPI_Selection.h @@ -134,7 +134,7 @@ public: /// Change result's color MODELHIGHAPI_EXPORT - void setColor(int theRed, int theGreen, int theBlue); + void setColor(int theRed = 0, int theGreen = 0, int theBlue = 0, bool random = false); /// Change result's deflection MODELHIGHAPI_EXPORT diff --git a/src/ModelHighAPI/Test/TestSetColors.py b/src/ModelHighAPI/Test/TestSetColors.py new file mode 100644 index 000000000..c2f83bd1f --- /dev/null +++ b/src/ModelHighAPI/Test/TestSetColors.py @@ -0,0 +1,48 @@ +# Copyright (C) 2014-2021 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +from salome.shaper import model + +model.begin() +partSet = model.moduleDocument() + +### Create Part +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() + +### Create Box +Box_1 = model.addBox(Part_1_doc, 10, 10, 10) +Box_1.result().setColor(random=True) +assert(Box_1.result().resultSubShapePair()[0].data().intArray("Color").isInitialized()) + +### Create next Box +Box_2 = model.addBox(Part_1_doc, 10, 10, 10) +aRed = 60 +aGreen = 200 +aBlue = 100 +Box_2.result().setColor(aRed, aGreen, aBlue) + +assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").isInitialized()) +assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").value(0) == aRed) +assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").value(1) == aGreen) +assert(Box_2.result().resultSubShapePair()[0].data().intArray("Color").value(2) == aBlue) + +model.end() + +assert(model.checkPythonDump()) diff --git a/src/ModelHighAPI/tests.set b/src/ModelHighAPI/tests.set index 626f23807..9a97edbc1 100644 --- a/src/ModelHighAPI/tests.set +++ b/src/ModelHighAPI/tests.set @@ -30,4 +30,5 @@ SET(TEST_NAMES Test19990_1.py Test19990_2.py Test20167.py + TestSetColors.py ) -- 2.39.2