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>
91 trace::entering(
"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);
109 trace::exiting(
"util::impl::tree_to_image_rec");
112 template <
typename T,
typename J>
115 display_tree_rec(
const Image<J>& ima_,
tree_node<T>* tree_node,
int level)
117 trace::entering(
"util::impl::display_tree_rec");
119 const J& ima = exact(ima_);
120 display_set(ima, tree_node->elt().points);
123 it != tree_node->children().end(); ++it)
124 display_tree_rec(ima, (*it), level + 1);
126 trace::exiting(
"util::impl::display_tree_rec");
130 template <
typename T,
typename J,
typename K>
133 display_branch_rec(
const Image<J>& ima_,
tree_node<T>* tree_node, Image<K>& output_)
135 trace::entering(
"util::impl::display_branch_rec");
137 K& output = exact(output_);
138 const J& ima = exact(ima_);
140 mln_piter(p_set<point2d>) p(tree_node->elt().points);
143 typename mln::util::tree_node<T>::children_t::iterator it = tree_node->children().begin();
145 it != tree_node->children().end(); ++it)
146 display_branch_rec(ima, (*it), output);
148 trace::exiting("util::impl::display_branch_rec");
152 template <typename P, typename J>
155 display_set(const Image<J>& ima_, p_set<P>& s)
157 trace::entering(
"util::impl::display_set");
159 const J& ima = exact(ima_);
160 image2d<bool> out(ima.bbox());
163 mln_piter(p_set<P>) p(s);
167 trace::exiting("util::impl::display_set");
175 template <typename T, typename I>
180 trace::entering(
"util::tree_to_image");
182 I& output = exact(output_);
183 impl::tree_to_image_rec(tree.root(), output);
185 trace::exiting(
"util::tree_to_image");
189 template <
typename I,
typename J>
194 trace::entering(
"util::display_tree");
196 mln_precondition(tree.
root());
198 const J& ima = exact(ima_);
201 impl::display_tree_rec(ima, tree.
root(), level);
203 trace::exiting(
"util::display_tree");
207 template <
typename I,
typename J>
212 trace::entering(
"util::display_branch");
214 mln_assertion(tree_node);
216 const J& ima = exact(ima_);
220 impl::display_branch_rec(ima, tree_node, output);
222 trace::exiting(
"util::display_branch");
226 # endif // ! MLN_INCLUDE_ONLY
232 #endif // ! MLN_UTIL_TREE_TO_IMAGE_HH