1 // Created on: 1994-09-23 2 // Created by: Yves FRICAUD 3 // Copyright (c) 1994-1999 Matra Datavision 4 // Copyright (c) 1999-2014 OPEN CASCADE SAS 5 // 6 // This file is part of Open CASCADE Technology software library. 7 // 8 // This library is free software; you can redistribute it and/or modify it under 9 // the terms of the GNU Lesser General Public License version 2.1 as published 10 // by the Free Software Foundation, with special exception defined in the file 11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT 12 // distribution for complete text of the license and disclaimer of any warranty. 13 // 14 // Alternatively, this file may be used under the terms of Open CASCADE 15 // commercial license or contractual agreement. 16 17 #ifndef _MAT2d_CutCurve_HeaderFile 18 #define _MAT2d_CutCurve_HeaderFile 19 20 #include <Standard.hxx> 21 #include <Standard_DefineAlloc.hxx> 22 #include <Standard_Handle.hxx> 23 24 #include <TColGeom2d_SequenceOfCurve.hxx> 25 #include <MAT_Side.hxx> 26 #include <Standard_Boolean.hxx> 27 #include <Standard_Integer.hxx> 28 class Standard_OutOfRange; 29 class Geom2d_Curve; 30 class Geom2d_TrimmedCurve; 31 32 33 //! Cuts a curve at the extremas of curvature 34 //! and at the inflections. Constructs a trimmed 35 //! Curve for each interval. 36 class MAT2d_CutCurve 37 { 38 public: 39 40 DEFINE_STANDARD_ALLOC 41 42 43 Standard_EXPORT MAT2d_CutCurve(); 44 45 Standard_EXPORT MAT2d_CutCurve(const Handle(Geom2d_Curve)& C); 46 47 //! Cuts a curve at the extremas of curvature 48 //! and at the inflections. 49 Standard_EXPORT void Perform (const Handle(Geom2d_Curve)& C); 50 51 //! Cuts a curve at the inflections, and at the extremas 52 //! of curvature where the concavity is on <aSide>. 53 Standard_EXPORT void Perform (const Handle(Geom2d_Curve)& C, const MAT_Side aSide); 54 55 //! Cuts a curve at the inflections. 56 Standard_EXPORT void PerformInf (const Handle(Geom2d_Curve)& C); 57 58 //! Returns True if the curve is not cut. 59 Standard_EXPORT Standard_Boolean UnModified() const; 60 61 //! Returns the number of curves. 62 //! it's always greatest than 2. 63 //! 64 //! raises if the Curve is UnModified; 65 Standard_EXPORT Standard_Integer NbCurves() const; 66 67 //! Returns the Indexth curve. 68 //! raises if Index not in the range [1,NbCurves()] 69 Standard_EXPORT Handle(Geom2d_TrimmedCurve) Value (const Standard_Integer Index) const; 70 71 72 73 74 protected: 75 76 77 78 79 80 private: 81 82 83 84 TColGeom2d_SequenceOfCurve theCurves; 85 86 87 }; 88 89 90 91 92 93 94 95 #endif // _MAT2d_CutCurve_HeaderFile 96