X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROCurveCreator%2FCurveCreator_Utils.h;h=28b6bb50c73756f0f0ff04b4f852d547b2ba6892;hb=1e9be94cc5ff4ad886099c507462d5b70f6d71f9;hp=7d901d11574e93d62551a61acb67b6da7b8f0a13;hpb=5ab983d4b8b4d9d77dd3da5069659afc8c338b80;p=modules%2Fhydro.git diff --git a/src/HYDROCurveCreator/CurveCreator_Utils.h b/src/HYDROCurveCreator/CurveCreator_Utils.h index 7d901d11..28b6bb50 100644 --- a/src/HYDROCurveCreator/CurveCreator_Utils.h +++ b/src/HYDROCurveCreator/CurveCreator_Utils.h @@ -22,8 +22,12 @@ #include "CurveCreator_Macro.hxx" -#include +#include #include +#include +#include + +#include class CurveCreator_Utils { @@ -49,7 +53,69 @@ public: * \param theView View where the given point takes place. * \retval gp_Pnt Returns the point clicked in 3D view */ - CURVECREATOR_EXPORT static gp_Pnt ConvertClickToPoint( int x, int y, Handle(V3d_View) theView ); + CURVECREATOR_EXPORT static gp_Pnt ConvertClickToPoint( int x, int y, + Handle(V3d_View) theView ); + + /** + * Find selected points in the context + * \param theContext the viewer context + */ + CURVECREATOR_EXPORT static std::list getSelectedPoints( + Handle(AIS_InteractiveContext) theContext ); + + /*! + * \brief Sets the local point context for the 3D viewer. + * \param theOpen The flag to open or close the local context. + */ + CURVECREATOR_EXPORT static void setLocalPointContext( + Handle(AIS_InteractiveContext) theContext, + const bool theOpen ); + + /** + * Find the neighbour points by the clicked coordinates + * \param theContext the viewer context. + * \param theContext the V3D view. + * \param theX the X coordinate in the view. + * \param theY the Y coordinate in the view. + * \param thePoint the output point to be append to the model curve + * \param thePoint1 the output point to bound the line where a new point should be inserted + * \param thePoint2 the output point to bound the line where a new point should be inserted + */ + CURVECREATOR_EXPORT static bool getNeighbourPoints( + Handle(AIS_InteractiveContext) theContext, + Handle(V3d_View) theView, + const int theX, const int theY, + gp_Pnt& thePoint, gp_Pnt& thePoint1, + gp_Pnt& thePoint2 ); + +protected: + /** + * Checks whether the point belongs to the OCC object + * \param theObject a line or shape with a bspline inside + * \param theX the X coordinate in the view. + * \param theY the Y coordinate in the view. + * \param thePoint the output point to be append to the model curve + * \param thePoint1 the output point to bound the line where a new point should be inserted + * \param thePoint2 the output point to bound the line where a new point should be inserted + */ + CURVECREATOR_EXPORT static bool pointOnObject( Handle(V3d_View) theView, + Handle(AIS_InteractiveObject) theObject, + const int theX, const int theY, + gp_Pnt& thePoint, gp_Pnt& thePoint1, + gp_Pnt& thePoint2 ); + + /* + * Returns whether the clicked point belong to the curve or has a very near projection + * \param theX the X coordinate of a point clicked in the OCC viewer + * \param theY the Y coordinate of a point clicked in the OCC viewer + * \param theCurve a geometry curve + * \param theOutPoint a found projected point on the curve + */ + CURVECREATOR_EXPORT static bool hasProjectPointOnCurve( + Handle(V3d_View) theView, + const int theX, const int theY, + const Handle(Geom_Curve)& theCurve, + Standard_Real& theParameter ); };