// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _IntPatch_TheIWLineOfTheIWalking_HeaderFile
#define _IntPatch_TheIWLineOfTheIWalking_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineHandle.hxx>
#include <Handle_IntPatch_TheIWLineOfTheIWalking.hxx>

#include <Handle_IntSurf_LineOn2S.hxx>
#include <IntSurf_SequenceOfCouple.hxx>
#include <Standard_Boolean.hxx>
#include <Standard_Integer.hxx>
#include <IntSurf_PathPoint.hxx>
#include <gp_Vec.hxx>
#include <MMgt_TShared.hxx>
#include <IntSurf_Allocator.hxx>
class IntSurf_LineOn2S;
class Standard_OutOfRange;
class Standard_DomainError;
class IntSurf_PathPoint;
class IntSurf_PntOn2S;
class gp_Vec;



class IntPatch_TheIWLineOfTheIWalking : public MMgt_TShared
{

public:

  
  Standard_EXPORT IntPatch_TheIWLineOfTheIWalking(const IntSurf_Allocator& theAllocator = 0);
  
  Standard_EXPORT   void Reverse() ;
  
      void Cut (const Standard_Integer Index) ;
  
      void AddPoint (const IntSurf_PntOn2S& P) ;
  
      void AddStatusFirst (const Standard_Boolean Closed, const Standard_Boolean HasFirst) ;
  
      void AddStatusFirst (const Standard_Boolean Closed, const Standard_Boolean HasLast, const Standard_Integer Index, const IntSurf_PathPoint& P) ;
  
      void AddStatusFirstLast (const Standard_Boolean Closed, const Standard_Boolean HasFirst, const Standard_Boolean HasLast) ;
  
      void AddStatusLast (const Standard_Boolean HasLast) ;
  
      void AddStatusLast (const Standard_Boolean HasLast, const Standard_Integer Index, const IntSurf_PathPoint& P) ;
  
      void AddIndexPassing (const Standard_Integer Index) ;
  
      void SetTangentVector (const gp_Vec& V, const Standard_Integer Index) ;
  
      void SetTangencyAtBegining (const Standard_Boolean IsTangent) ;
  
      void SetTangencyAtEnd (const Standard_Boolean IsTangent) ;
  
      Standard_Integer NbPoints()  const;
  
     const  IntSurf_PntOn2S& Value (const Standard_Integer Index)  const;
  
     const  Handle(IntSurf_LineOn2S)& Line()  const;
  
      Standard_Boolean IsClosed()  const;
  
      Standard_Boolean HasFirstPoint()  const;
  
      Standard_Boolean HasLastPoint()  const;
  
     const  IntSurf_PathPoint& FirstPoint()  const;
  
      Standard_Integer FirstPointIndex()  const;
  
     const  IntSurf_PathPoint& LastPoint()  const;
  
      Standard_Integer LastPointIndex()  const;
  
      Standard_Integer NbPassingPoint()  const;
  
      void PassingPoint (const Standard_Integer Index, Standard_Integer& IndexLine, Standard_Integer& IndexPnts)  const;
  
     const  gp_Vec& TangentVector (Standard_Integer& Index)  const;
  
      Standard_Boolean IsTangentAtBegining()  const;
  
      Standard_Boolean IsTangentAtEnd()  const;




  DEFINE_STANDARD_RTTI(IntPatch_TheIWLineOfTheIWalking)

protected:




private: 


  Handle(IntSurf_LineOn2S) line;
  IntSurf_SequenceOfCouple couple;
  Standard_Boolean closed;
  Standard_Boolean hasFirst;
  Standard_Boolean hasLast;
  Standard_Integer firstIndex;
  Standard_Integer lastIndex;
  IntSurf_PathPoint theFirstPoint;
  IntSurf_PathPoint theLastPoint;
  Standard_Integer indextg;
  gp_Vec vcttg;
  Standard_Boolean istgtbeg;
  Standard_Boolean istgtend;


};

#define TheStartPoint IntSurf_PathPoint
#define TheStartPoint_hxx <IntSurf_PathPoint.hxx>
#define IntWalk_IWLine IntPatch_TheIWLineOfTheIWalking
#define IntWalk_IWLine_hxx <IntPatch_TheIWLineOfTheIWalking.hxx>
#define Handle_IntWalk_IWLine Handle_IntPatch_TheIWLineOfTheIWalking
#define IntWalk_IWLine_Type_() IntPatch_TheIWLineOfTheIWalking_Type_()

#include <IntWalk_IWLine.lxx>

#undef TheStartPoint
#undef TheStartPoint_hxx
#undef IntWalk_IWLine
#undef IntWalk_IWLine_hxx
#undef Handle_IntWalk_IWLine
#undef IntWalk_IWLine_Type_




#endif // _IntPatch_TheIWLineOfTheIWalking_HeaderFile
