// Created on: 1993-03-30
// Created by: Laurent BUCHARD
// Copyright (c) 1993-1999 Matra Datavision
// 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 TheMultiLine_hxx

#include <TColgp_Array1OfPnt.hxx>
#include <TColgp_Array1OfPnt2d.hxx>
#include <TColgp_Array1OfVec.hxx>
#include <TColgp_Array1OfVec2d.hxx>

#include <Approx_Status.hxx>

//================================================================================
inline Standard_Integer ApproxInt_MultiLineTool::NbP2d(const TheMultiLine& ML) { 
  return(ML.NbP2d());
}
//--------------------------------------------------------------------------------
inline Standard_Integer ApproxInt_MultiLineTool::NbP3d(const TheMultiLine& ML) { 
  return(ML.NbP3d()); 
}
//--------------------------------------------------------------------------------
inline Standard_Integer ApproxInt_MultiLineTool::FirstPoint(const TheMultiLine& ML) { 
  return(ML.FirstPoint());
}
//--------------------------------------------------------------------------------
inline Standard_Integer ApproxInt_MultiLineTool::LastPoint(const TheMultiLine& ML) { 
  return(ML.LastPoint());
}
//--------------------------------------------------------------------------------
inline void ApproxInt_MultiLineTool::Value( const TheMultiLine&     ML
					   ,const Standard_Integer Index
					   ,TColgp_Array1OfPnt&        TabPnt) { 
  ML.Value(Index,TabPnt);
}
//--------------------------------------------------------------------------------
inline void ApproxInt_MultiLineTool::Value( const TheMultiLine&     ML
					   ,const Standard_Integer Index
					   ,TColgp_Array1OfPnt2d&       TabPnt2d) { 
  ML.Value(Index,TabPnt2d);
}
//--------------------------------------------------------------------------------
inline void ApproxInt_MultiLineTool::Value( const TheMultiLine&     ML
					   ,const Standard_Integer Index
					   ,TColgp_Array1OfPnt&        TabPnt
					   ,TColgp_Array1OfPnt2d&      TabPnt2d) { 
  ML.Value(Index,TabPnt,TabPnt2d);
}
//--------------------------------------------------------------------------------
inline Standard_Boolean ApproxInt_MultiLineTool::Tangency( const TheMultiLine&    ML
							  ,const Standard_Integer Index
							  ,TColgp_Array1OfVec&        TabVec) { 
  return(ML.Tangency(Index,TabVec));
}
//--------------------------------------------------------------------------------
inline Standard_Boolean ApproxInt_MultiLineTool::Tangency( const TheMultiLine&     ML
							  ,const Standard_Integer Index
							  ,TColgp_Array1OfVec2d&      TabVec2d) { 
  return(ML.Tangency(Index,TabVec2d));
}
//--------------------------------------------------------------------------------
inline Standard_Boolean ApproxInt_MultiLineTool::Tangency( const TheMultiLine&     ML
							  ,const Standard_Integer Index
							  ,TColgp_Array1OfVec&        TabVec
							  ,TColgp_Array1OfVec2d&      TabVec2d) { 
  return(ML.Tangency(Index,TabVec,TabVec2d));
}

//--------------------------------------------------------------------------------
inline Standard_Boolean ApproxInt_MultiLineTool::Curvature( const TheMultiLine&     //ML
							  ,const Standard_Integer   //Index
							  ,TColgp_Array1OfVec&  ) { //TabVec 
  return Standard_False;
}
//--------------------------------------------------------------------------------
inline Standard_Boolean ApproxInt_MultiLineTool::Curvature( const TheMultiLine&      //ML
							  ,const Standard_Integer    //Index
							  ,TColgp_Array1OfVec2d& ) { //TabVec2d
  return Standard_False;
}
//--------------------------------------------------------------------------------
inline Standard_Boolean ApproxInt_MultiLineTool::Curvature( const TheMultiLine&      //ML
							  ,const Standard_Integer    //Index
							  ,TColgp_Array1OfVec&       //TabVec
							  ,TColgp_Array1OfVec2d& ) { //TabVec2d
  return Standard_False;
}
//--------------------------------------------------------------------------------
inline Approx_Status ApproxInt_MultiLineTool::WhatStatus(const TheMultiLine& ML
							 ,const Standard_Integer
							 ,const Standard_Integer) { 
  //--  PointsAdded,
  //--  NoPointsAdded,
  //--  NoApproximation
  //--  Approx_PointsAdded
  return(ML.WhatStatus());
}
//--------------------------------------------------------------------------------	
inline TheMultiLine ApproxInt_MultiLineTool::MakeMLBetween(const TheMultiLine& ML,
							   const Standard_Integer I1,
							   const Standard_Integer I2,
							   const Standard_Integer NbPMin) { 
  
  return(ML.MakeMLBetween(I1,I2,NbPMin));
}
//--------------------------------------------------------------------------------	
inline Standard_Boolean ApproxInt_MultiLineTool::MakeMLOneMorePoint(const TheMultiLine& ML,
                                                                    const Standard_Integer I1,
                                                                    const Standard_Integer I2,
                                                                    const Standard_Integer indbad,
                                                                    TheMultiLine& OtherLine)
{ 
  return (ML.MakeMLOneMorePoint(I1,I2,indbad,OtherLine));
}

inline void ApproxInt_MultiLineTool::Dump(const TheMultiLine& ML)
{ 
  ML.Dump();
}
//================================================================================
