Salome HOME
Fix for solids color changing after sketch modification
[modules/shaper.git] / src / SketchSolver / SketchSolver_ConstraintDistance.h
index ff594c10cfc7c13577b6ae9feebcb8feb947f780..5c1569f9a4f160f78b06f7ec81571f359dd36d47 100644 (file)
 class SketchSolver_ConstraintDistance : public SketchSolver_Constraint
 {
 public:
+  /// Constructor based on SketchPlugin constraint
   SketchSolver_ConstraintDistance(ConstraintPtr theConstraint) :
-      SketchSolver_Constraint(theConstraint), myType(SLVS_C_UNKNOWN)
+      SketchSolver_Constraint(theConstraint),
+      myType(SLVS_C_UNKNOWN),
+      myIsNegative(false)
   {}
 
+  /// \brief Update constraint
+  virtual void update(ConstraintPtr theConstraint = ConstraintPtr());
+
   virtual int getType() const
   {return myType; }
 
@@ -28,8 +34,14 @@ protected:
   /// \brief Converts SketchPlugin constraint to a list of SolveSpace constraints
   virtual void process();
 
+  /// \brief This method is used in derived objects to check consistence of constraint.
+  ///        E.g. the distance between line and point may be signed.
+  virtual void adjustConstraint();
+
 private:
   int myType; ///< type of constraint (applicable: SLVS_C_PT_PT_DISTANCE, SLVS_C_PT_LINE_DISTANCE)
+  double myPrevValue; ///< previous value of distance (for correct calculation of a distance sign)
+  bool myIsNegative;  ///< \c true, if the point if placed rightside of line direction (SLVS_C_PT_LINE_DISTANCE only)
 };
 
 #endif