00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 #ifndef MLN_CORE_IMAGE_COMPLEX_NEIGHBORHOODS_HH
00027 # define MLN_CORE_IMAGE_COMPLEX_NEIGHBORHOODS_HH
00028 
00031 
00032 # include <mln/core/internal/complex_neighborhood_base.hh>
00033 # include <mln/core/image/complex_windows.hh>
00034 
00035 # include <mln/topo/complex_iterators.hh>
00036 
00047 # define mln_gen_complex_neighborhood(Nbh, Win)                         \
00048   template <unsigned D, typename G>                                     \
00049   struct Nbh                                                            \
00050     : internal::complex_neighborhood_base< Win <D, G>, Nbh <D, G> >     \
00051   {                                                                     \
00052   }
00053 
00054 
00055 namespace mln
00056 {
00057 
00060   mln_gen_complex_neighborhood(complex_lower_neighborhood,
00061                                complex_lower_window);
00062 
00065   mln_gen_complex_neighborhood(complex_higher_neighborhood,
00066                                complex_higher_window);
00067 
00070   mln_gen_complex_neighborhood(complex_lower_higher_neighborhood,
00071                                complex_lower_higher_window);
00072 
00075   mln_gen_complex_neighborhood(complex_lower_dim_connected_n_face_neighborhood,
00076                                complex_lower_dim_connected_n_face_window);
00077 
00080   mln_gen_complex_neighborhood(complex_higher_dim_connected_n_face_neighborhood,
00081                                complex_higher_dim_connected_n_face_window);
00082 
00085   mln_gen_complex_neighborhood(complex_m_face_neighborhood,
00086                                complex_m_face_window);
00087 
00088 } 
00089 
00090 # undef mln_gen_complex_neighborhood
00091 
00092 #endif // ! MLN_CORE_IMAGE_COMPLEX_NEIGHBORHOODS_HH