// File generated by CPPExt (Transient)
//
//                     Copyright (C) 1991,1995 by
//  
//                      MATRA DATAVISION, FRANCE
//  
// This software is furnished in accordance with the terms and conditions
// of the contract and with the inclusion of the above copyright notice.
// This software or any other copy thereof may not be provided or otherwise
// be made available to any other person. No title to an ownership of the
// software is hereby transferred.
//  
// At the termination of the contract, the software and all copies of this
// software must be deleted.
//
#ifndef _ISession2D_SensitiveCurve_HeaderFile
#define _ISession2D_SensitiveCurve_HeaderFile
#include <Standard_Macro.hxx>
#include <Standard_DefineHandle.hxx>


#include <Standard_Integer.hxx>
#include <gp_Pnt2d.hxx>
#include <Select2D_SensitiveEntity.hxx>
#include <Handle_SelectBasics_EntityOwner.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Real.hxx>
class SelectBasics_EntityOwner;
class gp_Pnt2d;
#include <SelectBasics_ListOfBox2d.hxx>
#include "TColgp_HArray1OfPnt2d.hxx"
#include <Geom2d_Curve.hxx>


DEFINE_STANDARD_HANDLE(ISession2D_SensitiveCurve,Select2D_SensitiveEntity)
class ISession2D_SensitiveCurve : public Select2D_SensitiveEntity {

public:

 // Methods PUBLIC
 // 
Standard_EXPORT ISession2D_SensitiveCurve(const Handle(SelectBasics_EntityOwner)& OwnerId,
                                        const Handle(Geom2d_Curve)& C,
                                        const Standard_Real CDeflect,
                                        const Standard_Integer      MaxRect  = 3);
inline   void SetMaxBoxes(const Standard_Integer MaxRect) ;
inline virtual  Standard_Integer MaxBoxes() const;

inline   void SetCurve(const Handle(Geom2d_Curve) aCurve) ;
inline   Handle(Geom2d_Curve) GetCurve() ;

void     Compute();


Standard_EXPORT   void Areas(SelectBasics_ListOfBox2d& aSeq) ;

Standard_EXPORT   Standard_Boolean Matches(const Standard_Real XMin,const Standard_Real YMin,const Standard_Real XMax,const Standard_Real YMax,const Standard_Real aTol) ;
Standard_EXPORT   Standard_Boolean Matches(const Standard_Real X,const Standard_Real Y,const Standard_Real aTol,Standard_Real& DMin) ;

Handle(TColgp_HArray1OfPnt2d) SensitivePolygon();

DEFINE_STANDARD_RTTI(ISession2D_SensitiveCurve)

protected:

 // Methods PROTECTED
 // 


 // Fields PROTECTED
 //


private: 

 // Methods PRIVATE
 // 


 // Fields PRIVATE
 //
Standard_Real myCDeflect;
Standard_Integer     myMaxRect;
Handle(Geom2d_Curve) myCurve;

Handle(TColgp_HArray1OfPnt2d) myPolyP2d;

};

inline Standard_Integer ISession2D_SensitiveCurve::
MaxBoxes() const {return myMaxRect;}

inline void ISession2D_SensitiveCurve::
SetMaxBoxes(const Standard_Integer nbrect)
{myMaxRect = nbrect;}

inline void ISession2D_SensitiveCurve::
SetCurve(const Handle(Geom2d_Curve) aCurve) 
{myCurve = aCurve;} 

inline Handle(Geom2d_Curve) ISession2D_SensitiveCurve::
GetCurve() 
{return myCurve;} 

// other inline functions and methods (like "C++: function call" methods)
//


#endif
