0032450: Modeling Algorithms - change BRepLib_CheckCurveOnSurface & GeomLib_CheckCurv...
[occt.git] / src / GeomLib / GeomLib_CheckCurveOnSurface.hxx
1 // Created by: Nikolai BUKHALOV
2 // Copyright (c) 2015 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 _GeomLib_CheckCurveOnSurface_HeaderFile
16 #define _GeomLib_CheckCurveOnSurface_HeaderFile
17
18 #include <Adaptor3d_Curve.hxx>
19 #include <Precision.hxx>
20 #include <Standard.hxx>
21
22 class Adaptor3d_CurveOnSurface;
23
24 //! Computes the max distance between 3D-curve and 2D-curve
25 //! in some surface.
26 class GeomLib_CheckCurveOnSurface 
27 {
28 public:
29
30   DEFINE_STANDARD_ALLOC
31
32   //! Default constructor
33   Standard_EXPORT GeomLib_CheckCurveOnSurface(void);
34   
35   //! Constructor
36   Standard_EXPORT
37     GeomLib_CheckCurveOnSurface(const Handle(Adaptor3d_Curve)& theCurve,
38                                 const Standard_Real theTolRange = 
39                                                       Precision::PConfusion());
40   
41   //! Sets the data for the algorithm
42   Standard_EXPORT void Init (const Handle(Adaptor3d_Curve)& theCurve,
43                              const Standard_Real theTolRange = Precision::PConfusion());
44
45   //! Initializes all members by default values
46   Standard_EXPORT void Init();
47
48   //! Computes the max distance for the 3d curve <myCurve>
49   //! and 2d curve <theCurveOnSurface>
50   //! If isMultiThread == Standard_True then computation will be performed in parallel.
51   Standard_EXPORT void Perform(const Handle(Adaptor3d_CurveOnSurface)& theCurveOnSurface,
52                                const Standard_Boolean isMultiThread = Standard_False);
53
54   //! Returns true if the max distance has been found
55   Standard_Boolean IsDone() const
56   {
57     return (myErrorStatus == 0);
58   }
59   
60   //! Returns error status
61   //! The possible values are:
62   //! 0 - OK;
63   //! 1 - null curve or surface or 2d curve;
64   //! 2 - invalid parametric range;
65   //! 3 - error in calculations.
66   Standard_Integer ErrorStatus() const
67   {
68     return myErrorStatus;
69   }
70   
71   //! Returns max distance
72   Standard_Real MaxDistance() const
73   {
74     return myMaxDistance;
75   }
76   
77   //! Returns parameter in which the distance is maximal
78   Standard_Real MaxParameter() const
79   {
80     return myMaxParameter;
81   }
82
83 private:
84
85   Handle(Adaptor3d_Curve) myCurve;
86   Standard_Integer myErrorStatus;
87   Standard_Real myMaxDistance;
88   Standard_Real myMaxParameter;
89   Standard_Real myTolRange;
90 };
91
92 #endif // _BRepLib_CheckCurveOnSurface_HeaderFile