26 #ifndef MLN_DATA_SATURATE_HH
27 # define MLN_DATA_SATURATE_HH
33 # include <mln/fun/v2v/saturate.hh>
34 # include <mln/data/apply.hh>
35 # include <mln/data/transform.hh>
54 template <
typename V,
typename I>
56 saturate(V v, const Image<I>& input);
65 template <typename I, typename V>
68 const V& min, const V& max);
79 const mln_value(I)& min, const mln_value(I)& max);
82 # ifndef MLN_INCLUDE_ONLY
84 template <
typename V,
typename I>
89 trace::entering(
"data::saturate");
91 mln_precondition(exact(input).is_valid());
93 fun::v2v::saturate<V> f;
96 trace::exiting(
"data::saturate");
100 template <
typename I,
typename V>
104 const V& min, const V& max)
106 trace::entering(
"data::saturate");
108 mln_precondition(exact(input).is_valid());
110 fun::v2v::saturate<V> f(min, max);
113 trace::exiting(
"data::saturate");
117 template <
typename I>
120 const mln_value(I)& min,
const mln_value(I)& max)
122 trace::entering(
"data::saturate_inplace");
124 mln_precondition(exact(input).is_valid());
126 fun::v2v::saturate<mln_value(I)> f(min, max);
129 trace::exiting(
"data::saturate_inplace");
132 # endif // ! MLN_INCLUDE_ONLY
139 #endif // ! MLN_DATA_SATURATE_HH