26 #ifndef MLN_DATA_FILL_WITH_IMAGE_HH
27 # define MLN_DATA_FILL_WITH_IMAGE_HH
35 # include <mln/core/concept/image.hh>
39 # include <mln/data/fill_with_image.spe.hh>
58 template <
typename I,
typename J>
63 # ifndef MLN_INCLUDE_ONLY
68 template <
typename I,
typename J>
70 void fill_with_image_tests(Image<I>& ima,
const Image<J>&
data)
77 mlc_is(mln_trait_image_pw_io(I),
78 mln::trait::image::pw_io::read_write)::check();
79 mlc_converts_to(mln_value(J), mln_value(I))::check();
80 mln_precondition(exact(ima).is_valid());
81 mln_precondition(exact(data).is_valid());
82 mln_precondition(exact(ima).domain() <= exact(data).domain());
99 template <
typename I,
typename J>
102 trace::entering(
"data::impl::generic::fill_with_image");
103 I& ima = exact(ima_);
104 const J& data = exact(data_);
106 data::internal::fill_with_image_tests(ima, data);
108 mln_piter(I) p(ima.domain());
110 ima(p) =
static_cast<mln_value(I)
>(data(p));
112 trace::exiting(
"data::impl::generic::fill_with_image");
122 template <
typename I,
typename J>
126 trace::entering(
"data::fill_with_image");
128 internal::fill_with_image_(ima, data);
130 trace::exiting(
"data::fill_with_image");
133 # endif // ! MLN_INCLUDE_ONLY
140 #endif // ! MLN_DATA_FILL_WITH_IMAGE_HH