0032450: Modeling Algorithms - change BRepLib_CheckCurveOnSurface & GeomLib_CheckCurv...
[occt.git] / src / BRepLib / BRepLib_CheckCurveOnSurface.hxx
1 // Created by: Eugeny MALTCHIKOV
2 // Copyright (c) 2014 OPEN CASCADE SAS
3 //
4 // This file is part of Open CASCADE Technology software library.
5 //
6 // This library is free software; you can redistribute it and/or modify it under
7 // the terms of the GNU Lesser General Public License version 2.1 as published
8 // by the Free Software Foundation, with special exception defined in the file
9 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10 // distribution for complete text of the license and disclaimer of any warranty.
11 //
12 // Alternatively, this file may be used under the terms of Open CASCADE
13 // commercial license or contractual agreement.
14
15 #ifndef _BRepLib_CheckCurveOnSurface_HeaderFile
16 #define _BRepLib_CheckCurveOnSurface_HeaderFile
17
18 #include <GeomLib_CheckCurveOnSurface.hxx>
19
20 //! Computes the max distance between edge and its 2d representation on the face.
21 //! This class is not intended to process non-sameparameter edges.
22
23 class BRepLib_CheckCurveOnSurface 
24 {
25 public:
26
27   DEFINE_STANDARD_ALLOC
28
29   //! Default constructor
30   BRepLib_CheckCurveOnSurface() {}
31   
32   //! Constructor
33   Standard_EXPORT BRepLib_CheckCurveOnSurface(const TopoDS_Edge& theEdge,
34                                               const TopoDS_Face& theFace);
35   
36   //! Sets the data for the algorithm
37   Standard_EXPORT void Init (const TopoDS_Edge& theEdge, const TopoDS_Face& theFace);
38
39   //! Performs the calculation
40   //! If isMultiThread == Standard_True then computation will be performed in parallel.
41   Standard_EXPORT void Perform(const Standard_Boolean isMultiThread = Standard_False);
42   
43   //! Returns true if the max distance has been found
44   Standard_Boolean IsDone() const
45   {
46     return myCOnSurfGeom.ErrorStatus() == 0;
47   }
48   
49   //! Returns error status
50   //! The possible values are:
51   //! 0 - OK;
52   //! 1 - null curve or surface or 2d curve;
53   //! 2 - invalid parametric range;
54   //! 3 - error in calculations.
55   Standard_Integer ErrorStatus() const
56   {
57     return myCOnSurfGeom.ErrorStatus();
58   }
59   
60   //! Returns max distance
61   Standard_Real MaxDistance() const
62   {
63     return myCOnSurfGeom.MaxDistance();
64   }
65   
66   //! Returns parameter in which the distance is maximal
67   Standard_Real MaxParameter() const
68   {
69     return myCOnSurfGeom.MaxParameter();
70   }
71
72 protected:
73
74   //! Computes the max distance for the 3d curve of <myCOnSurfGeom>
75   //! and 2d curve <theCurveOnSurface>
76   //! If isMultiThread == Standard_True then computation will be performed in parallel.
77   Standard_EXPORT void Compute (const Handle(Adaptor3d_CurveOnSurface)& theCurveOnSurface,
78                                 const Standard_Boolean isMultiThread);
79
80 private:
81
82   GeomLib_CheckCurveOnSurface myCOnSurfGeom;
83   Handle(Adaptor3d_CurveOnSurface) myAdaptorCurveOnSurface;
84   Handle(Adaptor3d_CurveOnSurface) myAdaptorCurveOnSurface2;
85 };
86
87 #endif // _BRepLib_CheckCurveOnSurface_HeaderFile