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

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

#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
#include <IntTools_MapOfSurfaceSample.hxx>
#include <IntTools_DataMapOfSurfaceSampleBox.hxx>
#include <Handle_TColStd_HArray1OfReal.hxx>
#include <Handle_TColgp_HArray2OfPnt.hxx>
#include <Standard_Boolean.hxx>
class TColStd_HArray1OfReal;
class TColgp_HArray2OfPnt;
class IntTools_SurfaceRangeSample;
class Bnd_Box;
class IntTools_ListOfSurfaceRangeSample;
class gp_Pnt;



class IntTools_SurfaceRangeLocalizeData 
{
public:

  DEFINE_STANDARD_ALLOC

  
  Standard_EXPORT IntTools_SurfaceRangeLocalizeData();
  
  Standard_EXPORT IntTools_SurfaceRangeLocalizeData(const Standard_Integer theNbSampleU, const Standard_Integer theNbSampleV, const Standard_Real theMinRangeU, const Standard_Real theMinRangeV);
  
  Standard_EXPORT IntTools_SurfaceRangeLocalizeData(const IntTools_SurfaceRangeLocalizeData& Other);
  
  Standard_EXPORT   IntTools_SurfaceRangeLocalizeData& Assign (const IntTools_SurfaceRangeLocalizeData& Other) ;
  IntTools_SurfaceRangeLocalizeData& operator = (const IntTools_SurfaceRangeLocalizeData& Other) 
{
  return Assign(Other);
}
  
      Standard_Integer GetNbSampleU()  const;
  
      Standard_Integer GetNbSampleV()  const;
  
      Standard_Real GetMinRangeU()  const;
  
      Standard_Real GetMinRangeV()  const;
  
  Standard_EXPORT   void AddOutRange (const IntTools_SurfaceRangeSample& theRange) ;
  
  Standard_EXPORT   void AddBox (const IntTools_SurfaceRangeSample& theRange, const Bnd_Box& theBox) ;
  
  Standard_EXPORT   Standard_Boolean FindBox (const IntTools_SurfaceRangeSample& theRange, Bnd_Box& theBox)  const;
  
  Standard_EXPORT   Standard_Boolean IsRangeOut (const IntTools_SurfaceRangeSample& theRange)  const;
  
  Standard_EXPORT   void ListRangeOut (IntTools_ListOfSurfaceRangeSample& theList)  const;
  
  Standard_EXPORT   void RemoveRangeOutAll() ;
  
  //! Set the grid deflection.
      void SetGridDeflection (const Standard_Real theDeflection) ;
  
  //! Query the grid deflection.
      Standard_Real GetGridDeflection()  const;
  
  //! Set the range U of the grid of points.
  Standard_EXPORT   void SetRangeUGrid (const Standard_Integer theNbUGrid) ;
  
  //! Query the range U of the grid of points.
      Standard_Integer GetRangeUGrid()  const;
  
  //! Set the U parameter of the grid points at that index.
      void SetUParam (const Standard_Integer theIndex, const Standard_Real theUParam) ;
  
  //! Query the U parameter of the grid points at that index.
      Standard_Real GetUParam (const Standard_Integer theIndex)  const;
  
  //! Set the range V of the grid of points.
  Standard_EXPORT   void SetRangeVGrid (const Standard_Integer theNbVGrid) ;
  
  //! Query the range V of the grid of points.
      Standard_Integer GetRangeVGrid()  const;
  
  //! Set the V parameter of the grid points at that index.
      void SetVParam (const Standard_Integer theIndex, const Standard_Real theVParam) ;
  
  //! Query the V parameter of the grid points at that index.
      Standard_Real GetVParam (const Standard_Integer theIndex)  const;
  
  //! Set the grid point.
      void SetGridPoint (const Standard_Integer theUIndex, const Standard_Integer theVIndex, const gp_Pnt& thePoint) ;
  
  //! Set the grid point.
     const  gp_Pnt& GetGridPoint (const Standard_Integer theUIndex, const Standard_Integer theVIndex)  const;
  
  //! Sets the frame area. Used to work with grid points.
  Standard_EXPORT   void SetFrame (const Standard_Real theUMin, const Standard_Real theUMax, const Standard_Real theVMin, const Standard_Real theVMax) ;
  
  //! Returns the number of grid points on U direction in frame.
      Standard_Integer GetNBUPointsInFrame()  const;
  
  //! Returns the number of grid points on V direction in frame.
      Standard_Integer GetNBVPointsInFrame()  const;
  
  //! Returns the grid point in frame.
  Standard_EXPORT  const  gp_Pnt& GetPointInFrame (const Standard_Integer theUIndex, const Standard_Integer theVIndex)  const;
  
  //! Query the U parameter of the grid points
  //! at that index in frame.
  Standard_EXPORT   Standard_Real GetUParamInFrame (const Standard_Integer theIndex)  const;
  
  //! Query the V parameter of the grid points
  //! at that index in frame.
  Standard_EXPORT   Standard_Real GetVParamInFrame (const Standard_Integer theIndex)  const;
  
  //! Clears the grid of points.
  Standard_EXPORT   void ClearGrid() ;




protected:





private:



  Standard_Integer myNbSampleU;
  Standard_Integer myNbSampleV;
  Standard_Real myMinRangeU;
  Standard_Real myMinRangeV;
  IntTools_MapOfSurfaceSample myMapRangeOut;
  IntTools_DataMapOfSurfaceSampleBox myMapBox;
  Handle(TColStd_HArray1OfReal) myUParams;
  Handle(TColStd_HArray1OfReal) myVParams;
  Handle(TColgp_HArray2OfPnt) myGridPoints;
  Standard_Integer myUIndMin;
  Standard_Integer myUIndMax;
  Standard_Integer myVIndMin;
  Standard_Integer myVIndMax;
  Standard_Real myDeflection;


};


#include <IntTools_SurfaceRangeLocalizeData.lxx>





#endif // _IntTools_SurfaceRangeLocalizeData_HeaderFile
