2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU Lesser General Public License as
4 * published by the Free Software Foundation, either version 3 of the
5 * License, or (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 * @file TrueLocalEstimatorOnPoints.ih
19 * @author David Coeurjolly (\c david.coeurjolly@liris.cnrs.fr )
20 * Laboratoire d'InfoRmatique en Image et Systèmes d'information - LIRIS (CNRS, UMR 5205), CNRS, France
24 * Implementation of inline methods defined in TrueLocalEstimatorOnPoints.h
26 * This file is part of the DGtal library.
30 //////////////////////////////////////////////////////////////////////////////
32 //////////////////////////////////////////////////////////////////////////////
34 ///////////////////////////////////////////////////////////////////////////////
35 // IMPLEMENTATION of inline methods.
36 ///////////////////////////////////////////////////////////////////////////////
38 ///////////////////////////////////////////////////////////////////////////////
39 // ----------------------- Standard services ------------------------------
42 // ------------------------------------------------------------------------
43 template <typename CIt, typename PShape, typename PShapeFunctor>
45 DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>::TrueLocalEstimatorOnPoints()
46 :myH(0.0), myBegin(), myEnd(), myFunctorPtr(0)
50 // ------------------------------------------------------------------------
51 template <typename CIt, typename PShape, typename PShapeFunctor>
54 DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>::isValid() const
56 return ( (myH > 0)&&(myFunctorPtr != 0) );
59 // ------------------------------------------------------------------------
60 template <typename CIt, typename PShape, typename PShapeFunctor>
63 DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>
64 ::init(const double h,
65 const ConstIterator& itb,
66 const ConstIterator& ite)
74 // ------------------------------------------------------------------------
75 template <typename CIt, typename PShape, typename PShapeFunctor>
78 DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>
79 ::attach(ParametricShape* aShapePtr)
81 myFunctorPtr = new ParametricShapeFunctor(aShapePtr);
84 // ------------------------------------------------------------------------
85 template <typename CIt, typename PShape, typename PShapeFunctor>
87 DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>::~TrueLocalEstimatorOnPoints()
92 // ------------------------------------------------------------------------
93 template <typename CIt, typename PShape, typename PShapeFunctor>
95 typename DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>::Quantity
96 DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>
97 ::eval(const ConstIterator& it) const
102 return myFunctorPtr->operator()(p);
105 // ------------------------------------------------------------------------
106 template <typename CIt, typename PShape, typename PShapeFunctor>
107 template <typename OutputIterator>
110 DGtal::TrueLocalEstimatorOnPoints<CIt,PShape,PShapeFunctor>
111 ::eval(const ConstIterator& itb,
112 const ConstIterator& ite,
113 OutputIterator result) const
116 // do-while loop to deal with the case of a whole circular range
117 if (isNotEmpty(itb, ite))
119 ConstIterator it = itb;
122 *result++ = eval( it );