27 #ifndef MLN_TOPO_IS_SIMPLE_POINT3D_HH
28 # define MLN_TOPO_IS_SIMPLE_POINT3D_HH
35 # include <mln/core/concept/function.hh>
36 # include <mln/core/concept/image.hh>
37 # include <mln/core/concept/neighborhood.hh>
39 # include <mln/topo/connectivity_number_3d.hh>
50 template <
typename I,
typename N>
101 connectivity_number_fun_t connectivity_number_fg_;
104 connectivity_number_fun_t connectivity_number_bg_;
109 # ifndef MLN_INCLUDE_ONLY
111 template <
typename I,
typename N>
115 : nbh_fg_(
exact(nbh_fg)), nbh_bg_(
exact(nbh_bg)),
117 connectivity_number_fg_(0), connectivity_number_bg_(0)
122 template <
typename I,
typename N>
127 : nbh_fg_(
exact(nbh_fg)), nbh_bg_(
exact(nbh_bg)),
129 connectivity_number_fg_(0), connectivity_number_bg_(0)
134 template <
typename I,
typename N>
137 is_simple_point3d<I, N>::init_()
139 if (nbh_fg_ ==
c6() && nbh_bg_ ==
c26())
142 connectivity_number_fg_ = connectivity_number_3d_c6<I>;
143 connectivity_number_bg_ = connectivity_number_3d_c26<I>;
145 else if (nbh_fg_ ==
c26() && nbh_bg_ ==
c6())
148 connectivity_number_fg_ = connectivity_number_3d_c26<I>;
149 connectivity_number_bg_ = connectivity_number_3d_c6<I>;
151 else if (nbh_fg_ ==
c6() && nbh_bg_ ==
c18())
154 connectivity_number_fg_ = connectivity_number_3d_c6p<I>;
155 connectivity_number_bg_ = connectivity_number_3d_c18<I>;
157 else if (nbh_fg_ ==
c18() && nbh_bg_ ==
c6())
160 connectivity_number_fg_ = connectivity_number_3d_c18<I>;
161 connectivity_number_bg_ = connectivity_number_3d_c6p<I>;
165 template <
typename I,
typename N>
173 template <
typename I,
typename N>
178 mln_precondition(ima_);
179 const I& ima = *ima_;
182 connectivity_number_fg_(ima, p,
true) == 1 &&
183 connectivity_number_bg_(ima, p,
false) == 1;
186 # endif // MLN_INCLUDE_ONLY
192 #endif // ! MLN_TOPO_IS_SIMPLE_POINT2D_HH