26 #ifndef MLN_UTIL_TREE_TO_IMAGE_HH
27 # define MLN_UTIL_TREE_TO_IMAGE_HH
34 # include <mln/core/concept/image.hh>
35 # include <mln/core/image/image2d.hh>
36 # include <mln/util/tree.hh>
37 # include <mln/core/site_set/p_set.hh>
38 # include <mln/data/fill.hh>
45 template <
typename I,
typename D>
46 void fill(Image<I>& ima,
const D&
data);
58 template <
typename T,
typename I>
67 template <
typename I,
typename J>
77 template <
typename I,
typename J>
81 # ifndef MLN_INCLUDE_ONLY
86 template <
typename T,
typename I>
89 tree_to_image_rec(tree_node<T>* tree_node, Image<I>& output_)
91 mln_trace(
"util::impl::tree_to_image_rec");
93 I& output =
exact(output_);
95 mln_piter(p_set<point2d>)
p(tree_node->elt().points);
98 output(
p) = tree_node->elt().
value;
100 typename std::vector< util::tree_node<
T>* >::const_iterator it = tree_node->children().begin();
103 it != tree_node->children().end();
107 tree_to_image_rec((*it), output);
111 template <
typename T,
typename J>
114 display_tree_rec(
const Image<J>& ima_, tree_node<T>* tree_node,
int level)
116 mln_trace(
"util::impl::display_tree_rec");
118 const J& ima =
exact(ima_);
119 display_set(ima, tree_node->elt().points);
122 it != tree_node->children().end(); ++it)
123 display_tree_rec(ima, (*it), level + 1);
128 template <
typename T,
typename J,
typename K>
131 display_branch_rec(
const Image<J>& ima_, tree_node<T>* tree_node, Image<K>& output_)
133 mln_trace(
"util::impl::display_branch_rec");
135 K& output =
exact(output_);
136 const J& ima =
exact(ima_);
138 mln_piter(p_set<point2d>)
p(tree_node->elt().points);
141 typename mln::util::tree_node<
T>::children_t::iterator it = tree_node->children().begin();
143 it != tree_node->children().end(); ++it)
144 display_branch_rec(ima, (*it), output);
149 template <typename P, typename J>
152 display_set(const Image<J>& ima_, p_set<P>& s)
154 mln_trace(
"util::impl::display_set");
156 const J& ima =
exact(ima_);
157 image2d<bool> out(ima.bbox());
160 mln_piter(p_set<P>)
p(s);
171 template <typename
T, typename I>
176 mln_trace(
"util::tree_to_image");
178 I& output =
exact(output_);
179 impl::tree_to_image_rec(tree.root(), output);
184 template <
typename I,
typename J>
189 mln_trace(
"util::display_tree");
191 mln_precondition(tree.root());
193 const J& ima =
exact(ima_);
196 impl::display_tree_rec(ima, tree.root(), level);
201 template <
typename I,
typename J>
206 mln_trace(
"util::display_branch");
208 mln_assertion(tree_node);
210 const J& ima =
exact(ima_);
212 image2d<bool> output(ima.domain());
214 impl::display_branch_rec(ima, tree_node, output);
219 # endif // ! MLN_INCLUDE_ONLY
225 #endif // ! MLN_UTIL_TREE_TO_IMAGE_HH