Salome HOME
Issue #1015: The validate icon must be greyed and inactive instead of red and active
[modules/shaper.git] / src / GeomAPI / GeomAPI_Lin2d.cpp
index a59c5b4ea0fa801faa8ba7eb54ff97e3fb6afecf..2d97bd6c8747d49e9af1346e2397eef2f003a089 100644 (file)
@@ -1,9 +1,12 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 // File:        GeomAPI_Lin2d.cpp
 // Created:     29 May 2014
 // Author:      Artem ZHIDKOV
 
 #include <GeomAPI_Lin2d.h>
 #include <GeomAPI_Pnt2d.h>
+#include <GeomAPI_Dir2d.h>
 
 #include <gp_Dir2d.hxx>
 #include <gp_Lin2d.hxx>
@@ -12,7 +15,7 @@
 
 #include <IntAna2d_AnaIntersection.hxx>
 
-#define MY_LIN2D static_cast<gp_Lin2d*>(myImpl)
+#define MY_LIN2D implPtr<gp_Lin2d>()
 
 static gp_Lin2d* newLine2d(const double theStartX, const double theStartY, const double theEndX,
                            const double theEndY)
@@ -22,6 +25,7 @@ static gp_Lin2d* newLine2d(const double theStartX, const double theStartY, const
   return new gp_Lin2d(aStart, gp_Dir2d(aDir));
 }
 
+
 GeomAPI_Lin2d::GeomAPI_Lin2d(const double theStartX, const double theStartY, const double theEndX,
                              const double theEndY)
     : GeomAPI_Interface(newLine2d(theStartX, theStartY, theEndX, theEndY))
@@ -34,6 +38,26 @@ GeomAPI_Lin2d::GeomAPI_Lin2d(const std::shared_ptr<GeomAPI_Pnt2d>& theStart,
 {
 }
 
+GeomAPI_Lin2d::GeomAPI_Lin2d(const std::shared_ptr<GeomAPI_Pnt2d>& theOrigin,
+                             const std::shared_ptr<GeomAPI_Dir2d>& theDirection)
+    : GeomAPI_Interface(newLine2d(theOrigin->x(), theOrigin->y(),
+        theOrigin->x() + theDirection->x(), theOrigin->y() + theDirection->y()))
+{
+}
+
+
+std::shared_ptr<GeomAPI_Pnt2d> GeomAPI_Lin2d::location()
+{
+  gp_Pnt2d aLoc = impl<gp_Lin2d>().Location();
+  return std::shared_ptr<GeomAPI_Pnt2d>(new GeomAPI_Pnt2d(aLoc.X(), aLoc.Y()));
+}
+
+std::shared_ptr<GeomAPI_Dir2d> GeomAPI_Lin2d::direction()
+{
+  const gp_Dir2d& aDir = impl<gp_Lin2d>().Direction();
+  return std::shared_ptr<GeomAPI_Dir2d>(new GeomAPI_Dir2d(aDir.X(), aDir.Y()));
+}
+
 double GeomAPI_Lin2d::distance(const std::shared_ptr<GeomAPI_Pnt2d>& theOther) const
 {
   return MY_LIN2D->Distance(theOther->impl<gp_Pnt2d>());