27 #ifndef MLN_CANVAS_BROWSING_DIRECTIONAL_HH
28 # define MLN_CANVAS_BROWSING_DIRECTIONAL_HH
34 # include <mln/core/concept/browsing.hh>
35 # include <mln/core/concept/image.hh>
97 void operator()(F& f)
const;
102 # ifndef MLN_INCLUDE_ONLY
104 # ifndef MLN_WO_GLOBAL_VARS
108 # endif // ! MLN_WO_GLOBAL_VARS
111 directional_t::directional_t()
115 template <
typename F>
118 directional_t::operator()(F& f)
const
120 trace::entering(
"canvas::browsing::directional");
121 mln_precondition(f.dir < f.dim);
122 typedef typename F::I I;
125 pmin = f.input.domain().pmin(),
126 pmax = f.input.domain().pmax();
137 while (f.p[f.dir] <= pmax[f.dir])
142 f.p[f.dir] = pmin[f.dir];
146 for (
int c = F::dim - 1; c >= 0; --c)
150 if (f.p[c] != pmax[c])
158 }
while (f.p != pmin);
161 trace::exiting(
"canvas::browsing::directional");
164 # endif // ! MLN_INCLUDE_ONLY
172 #endif // ! MLN_CANVAS_BROWSING_DIRECTIONAL_HH