27 #ifndef MLN_LABELING_VALUE_HH
28 # define MLN_LABELING_VALUE_HH
34 # include <mln/core/concept/image.hh>
35 # include <mln/core/concept/neighborhood.hh>
36 # include <mln/canvas/labeling/video.hh>
37 # include <mln/data/fill.hh>
58 template <
typename I,
typename N,
typename L>
60 value(const Image<I>& input, const mln_value(I)& val,
61 const Neighborhood<N>& nbh, L& nlabels);
64 # ifndef MLN_INCLUDE_ONLY
72 template <
typename I,
typename N,
typename L>
74 value_tests(
const Image<I>& input,
const mln_value(I)& val,
const Neighborhood<N>& nbh,
77 mln_precondition(
exact(input).is_valid());
78 mln_precondition(
exact(nbh).is_valid());
95 template <
typename I,
typename L>
98 typedef mln_psite(I) P;
101 const mln_value(I)& val;
105 typedef mln_domain(I) S;
110 bool handles(
const P&
p)
const {
return input(p) == val; }
111 bool equiv(
const P& n,
const P&)
const {
return input(n) == val; }
112 bool labels(
const P&)
const {
return true; }
113 void do_no_union(
const P&,
const P&) {}
114 void init_attr(
const P&) {}
115 void merge_attr(
const P&,
const P&) {}
116 void set_new_label(
const P&,
const L&) {}
117 void set_label(
const P&,
const L&) {}
123 bool handles_(
unsigned p)
const {
return input.element(p) == val; }
124 bool equiv_(
unsigned n,
unsigned)
const {
return input.element(n) == val; }
125 bool labels_(
unsigned)
const {
return true; }
126 void do_no_union_(
unsigned,
unsigned) {}
127 void init_attr_(
unsigned) {}
128 void merge_attr_(
unsigned,
unsigned) {}
129 void set_new_label_(
unsigned,
const L&) {}
130 void set_label_(
unsigned,
const L&) {}
135 value_functor(
const Image<I>& input_,
const mln_value(I)& val)
136 : input(
exact(input_)),
149 template <
typename I,
typename N,
typename L>
151 value(const Image<I>& input, const mln_value(I)& val,
152 const Neighborhood<N>& nbh, L& nlabels)
154 mln_trace(
"labeling::value");
156 internal::value_tests(input, val, nbh, nlabels);
158 mln_ch_value(I, L) output;
159 impl::value_functor<I,L> f(input, val);
165 # endif // ! MLN_INCLUDE_ONLY
172 #endif // ! MLN_LABELING_VALUE_HH