// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.

#include "Geom_Surface.hxx"
#include "GeomAdaptor_Surface.hxx"

//=================================================================================================

inline const occ::handle<Geom_Surface>& ShapeAnalysis_Surface::Surface() const
{
  return mySurf;
}

//=================================================================================================

inline const occ::handle<GeomAdaptor_Surface>& ShapeAnalysis_Surface::TrueAdaptor3d() const
{
  return myAdSur;
}

//=================================================================================================

inline double ShapeAnalysis_Surface::Gap() const
{
  return myGap;
}

//=================================================================================================

inline gp_Pnt ShapeAnalysis_Surface::Value(const double u, const double v)
{
  return myAdSur->Value(u, v);
}

//=================================================================================================

inline gp_Pnt ShapeAnalysis_Surface::Value(const gp_Pnt2d& p2d)
{
  return myAdSur->Value(p2d.X(), p2d.Y());
}

//=================================================================================================

inline void ShapeAnalysis_Surface::Bounds(double& ufirst,
                                          double& ulast,
                                          double& vfirst,
                                          double& vlast) const
{
  ufirst = myUF;
  ulast  = myUL;
  vfirst = myVF;
  vlast  = myVL;
}

//=================================================================================================

inline double ShapeAnalysis_Surface::UCloseVal() const
{
  return myUCloseVal;
}

//=================================================================================================

inline double ShapeAnalysis_Surface::VCloseVal() const
{
  return myVCloseVal;
}
