Salome HOME
In SALOME mode the tool tip info defined in XML should be shown in Status tip of...
[modules/shaper.git] / src / SketcherPrs / SketcherPrs_Coincident.cpp
index e7ae5a144043c45ace700547fe039cdccc6fb8e8..26a5e682c9c4f200a339410ed107b9e9b1974bc8 100644 (file)
@@ -35,7 +35,7 @@ IMPLEMENT_STANDARD_RTTIEXT(SketcherPrs_Coincident, AIS_InteractiveObject);
 SketcherPrs_Coincident::SketcherPrs_Coincident(ModelAPI_Feature* theConstraint, 
                                                const std::shared_ptr<GeomAPI_Ax3>& thePlane) 
 : AIS_InteractiveObject(), myConstraint(theConstraint), mySketcherPlane(thePlane),
-  myPoint(gp_Pnt(0.0, 0.0, 0.0))
+  myPoint(gp_Pnt(0.0, 0.0, 0.0)), myIsConflicting(false)
 {
 }
 
@@ -82,10 +82,11 @@ void SketcherPrs_Coincident::Compute(const Handle(PrsMgr_PresentationManager3d)&
   }
   // Create the presentation as a combination of standard point markers
 
+  bool aValid = !myIsConflicting;
   // The external yellow contour
   aPtA->SetType(Aspect_TOM_RING3);
   aPtA->SetScale(2.);
-  aPtA->SetColor(Quantity_NOC_YELLOW);
+  aPtA->SetColor(aValid ? Quantity_NOC_YELLOW : myConflictingColor);
 
   Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(thePresentation);
   aGroup->SetPrimitivesAspect(aPtA);
@@ -96,7 +97,7 @@ void SketcherPrs_Coincident::Compute(const Handle(PrsMgr_PresentationManager3d)&
   // Make a black mid ring
   aPtA->SetType(Aspect_TOM_RING1);
   aPtA->SetScale(1.);
-  aPtA->SetColor(Quantity_NOC_BLACK);
+  aPtA->SetColor(aValid ? Quantity_NOC_BLACK : myConflictingColor);
   aGroup->SetPrimitivesAspect(aPtA);
   aGroup->AddPrimitiveArray (aPntArray);
 
@@ -128,3 +129,11 @@ void SketcherPrs_Coincident::SetColor(const Quantity_Color &aCol)
   hasOwnColor=Standard_True;
   myOwnColor=aCol;
 }
+
+void SketcherPrs_Coincident::SetConflictingConstraint(const bool& theConflicting,
+                                                     const std::vector<int>& theColor)
+{
+  myIsConflicting = theConflicting;
+  myConflictingColor = Quantity_Color(theColor[0] / 255., theColor[1] / 255., theColor[2] / 255.,
+                                      Quantity_TOC_RGB);
+}