// 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 _BOPAlgo_BuilderFace_HeaderFile
#define _BOPAlgo_BuilderFace_HeaderFile

#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Macro.hxx>

#include <TopoDS_Face.hxx>
#include <TopAbs_Orientation.hxx>
#include <BOPAlgo_BuilderArea.hxx>
#include <BOPCol_BaseAllocator.hxx>
class TopoDS_Face;


//! The algorithm to build faces from set of edges
class BOPAlgo_BuilderFace  : public BOPAlgo_BuilderArea
{
public:

  DEFINE_STANDARD_ALLOC

  
  Standard_EXPORT BOPAlgo_BuilderFace();
Standard_EXPORT virtual ~BOPAlgo_BuilderFace();
  
  Standard_EXPORT BOPAlgo_BuilderFace(const BOPCol_BaseAllocator& theAllocator);
  
  //! Sets the face generatix
  Standard_EXPORT   void SetFace (const TopoDS_Face& theFace) ;
  
  //! Returns the face generatix
  Standard_EXPORT  const  TopoDS_Face& Face()  const;
  
  //! Performs the algorithm
  Standard_EXPORT virtual   void Perform() ;
  
  Standard_EXPORT   TopAbs_Orientation Orientation()  const;




protected:

  
  //! Collect the edges that
  //! a) are internal
  //! b) are the same and have different orientation
  Standard_EXPORT virtual   void PerformShapesToAvoid() ;
  
  //! Build draft wires
  //! a)myLoops - draft wires that consist of
  //! boundary edges
  //! b)myLoopsInternal - draft wires that contains
  //! inner edges
  Standard_EXPORT virtual   void PerformLoops() ;
  
  //! Build draft faces that contains boundary edges
  Standard_EXPORT virtual   void PerformAreas() ;
  
  //! Build finalized faces with internals
  Standard_EXPORT virtual   void PerformInternalShapes() ;
  
  Standard_EXPORT virtual   void CheckData() ;


  TopoDS_Face myFace;
  TopAbs_Orientation myOrientation;


private:





};







#endif // _BOPAlgo_BuilderFace_HeaderFile
