27 #ifndef MLN_CORE_IMAGE_IMORPH_INTERPOLATED_HH
28 # define MLN_CORE_IMAGE_IMORPH_INTERPOLATED_HH
40 # include <mln/core/internal/image_identity.hh>
41 # include <mln/algebra/vec.hh>
42 # include <mln/value/set.hh>
48 template <
typename I,
template <
class>
class F>
struct interpolated;
54 template <
typename I,
template <
class>
class F>
55 struct data< interpolated<I,F> >
68 template <
typename I,
template <
class>
class F>
69 struct image_< interpolated<I,F> >
73 typedef trait::image::value_io::read_only value_io;
83 template <
typename I,
template <
class>
class F>
85 public mln::internal::image_identity< I, mln_domain(I), interpolated<I,F> >
88 typedef mln::internal::image_identity< I, mln_domain(I),
123 template <typename C>
124 bool has(const mln::algebra::vec<I::psite::dim, C>& v) const;
128 using super_::operator();
130 mln_value(I) operator()(const mln::algebra::vec<psite::dim,
float>& v) const;
131 mln_value(I) operator()(const mln::algebra::vec<psite::dim,
float>& v);
138 # ifndef MLN_INCLUDE_ONLY
145 template <
typename I,
template <
class>
class F>
154 template <
typename I,
template <
class>
class F>
159 mln_precondition(ima.is_valid());
163 template <
typename I,
template <
class>
class F>
169 template <
typename I,
template <
class>
class F>
172 interpolated<I, F >::init_(I& ima)
174 mln_precondition(ima.is_valid());
175 this->data_ =
new internal::data< interpolated<I,F> >(ima);
178 template <
typename I,
template <
class>
class F>
182 mln_invariant(this->data_->ima_.is_valid());
186 template <
typename I,
template <
class>
class F>
187 template <
typename C>
192 for (
unsigned i = 0; i < I::psite::dim; ++i)
193 p[i] = static_cast<int>(round(v[i]));
194 return this->data_->ima_.has(p);
198 template <
typename I,
template <
class>
class F>
201 interpolated<I,F>::operator()(const mln::algebra::vec<psite::dim,
float>& v)
const
206 template <
typename I,
template <
class>
class F>
209 interpolated<I,F>::operator()(const mln::algebra::vec<psite::dim,
float>& v)
215 # endif // ! MLN_INCLUDE_ONLY
220 #endif // ! MLN_CORE_IMAGE_IMORPH_INTERPOLATED_HH