26 #ifndef MLN_MAKE_EDGE_IMAGE_HH
27 # define MLN_MAKE_EDGE_IMAGE_HH
33 # include <mln/core/image/edge_image.hh>
34 # include <mln/core/image/vertex_image.hh>
35 # include <mln/core/concept/function.hh>
36 # include <mln/util/internal/id2element.hh>
37 # include <mln/data/fill.hh>
54 template <
typename V,
typename G>
56 edge_image(
const Graph<G>& g,
const fun::i2v::array<V>& fv);
65 template <
typename FV,
typename G>
67 edge_image(
const Graph<G>& g,
const Function_v2v<FV>& fv);
78 template <
typename FP,
typename FV,
typename G>
81 const Function_v2v<FP>& fp,
82 const Function_v2v<FV>& fv);
95 template <
typename P,
typename V,
typename G,
typename FP,
typename FV>
98 const p_edges<G,FP> pe,
99 const Function_vv2v<FV>& fv_);
112 template <
typename P,
typename V,
typename G,
typename FV>
115 const Function_vv2v<FV>& fv_);
128 template <
typename P,
typename V,
typename G,
typename F>
131 const Function_v2b<F>& fv_);
134 # ifndef MLN_INCLUDE_ONLY
138 template <
typename V,
typename G>
143 trace::entering(
"make::edge_image");
144 mln_precondition(exact(g).is_valid());
149 trace::exiting(
"make::edge_image");
153 template <
typename FV,
typename G>
158 trace::entering(
"make::edge_image");
159 const G& g = exact(g_);
160 const FV& f = exact(fv);
161 mln_precondition(g.is_valid());
167 mln_piter(ima_t) e(ima.domain());
171 trace::exiting(
"make::edge_image");
176 template <
typename FP,
typename FV,
typename G>
183 trace::entering(
"make::edge_image");
184 const G& g = exact(g_);
185 mln_precondition(g.is_valid());
190 trace::exiting(
"make::edge_image");
196 template <
typename P,
typename V,
typename G,
typename FP,
typename FV>
203 trace::entering(
"make::edge_image");
205 const FV& fv = exact(fv_);
207 mln_precondition(v_ima.is_valid());
210 edge_ima_t ima_e(pe);
212 mln_piter(edge_ima_t) e(ima_e.domain());
214 ima_e(e) = fv(e.element().v1(), e.element().v2());
216 trace::exiting(
"make::edge_image");
222 template <
typename P,
typename V,
typename G,
typename FV>
228 trace::entering(
"make::edge_image");
230 const FV& fv = exact(fv_);
232 mln_precondition(v_ima.is_valid());
236 edge_ima_t ima_e(pe);
238 mln_piter(edge_ima_t) e(ima_e.domain());
240 ima_e(e) = fv(v_ima(e.element().v1()), v_ima(e.element().v2()));
242 trace::exiting(
"make::edge_image");
247 template <
typename P,
typename V,
typename G,
typename F>
253 trace::entering(
"make::edge_image");
255 const F& fv = exact(fv_);
257 const v_ima_t& v_ima = exact(v_ima_);
258 mln_precondition(v_ima.is_valid());
262 edge_ima_t ima_e(pe);
265 mln_piter(v_ima_t) p(v_ima.domain());
269 typename v_ima_t::edge_win_t win;
270 mln_qiter(v_ima_t::edge_win_t) q(win, p);
275 trace::exiting(
"make::edge_image");
281 # endif // ! MLN_INCLUDE_ONLY
288 #endif // ! MLN_MAKE_EDGE_IMAGE_HH