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_WINDOWS_HH
00027 # define MLN_CORE_IMAGE_COMPLEX_WINDOWS_HH
00028
00031
00032 # include <mln/core/internal/complex_window_p_base.hh>
00033
00034 # include <mln/topo/adj_lower_face_iter.hh>
00035 # include <mln/topo/adj_higher_face_iter.hh>
00036 # include <mln/topo/adj_lower_higher_face_iter.hh>
00037
00052 # define mln_gen_complex_window(Win, Fwd_Complex_Iter, Bkd_Complex_Iter) \
00053 \
00054 template <unsigned D, typename G> struct Win; \
00055 \
00056 \
00057 namespace trait \
00058 { \
00059 template <unsigned D, typename G> \
00060 struct window_< Win <D, G> > \
00061 : window_< mln::internal::complex_window_p_base< D, G, \
00062 Fwd_Complex_Iter<D>, \
00063 Bkd_Complex_Iter <D>, \
00064 Win <D, G> > > \
00065 { \
00066 }; \
00067 } \
00068 \
00069 \
00070 template <unsigned D, typename G> \
00071 struct Win \
00072 : internal::complex_window_p_base< D, G, \
00073 Fwd_Complex_Iter <D>, \
00074 Bkd_Complex_Iter <D>, \
00075 Win <D, G> > \
00076 { \
00077 }
00078
00079
00080 namespace mln
00081 {
00082
00085 mln_gen_complex_window(complex_lower_window_p,
00086 topo::adj_lower_face_fwd_iter,
00087 topo::adj_lower_face_bkd_iter);
00088
00091 mln_gen_complex_window(complex_higher_window_p,
00092 topo::adj_higher_face_fwd_iter,
00093 topo::adj_higher_face_bkd_iter);
00094
00098 mln_gen_complex_window(complex_lower_higher_window_p,
00099 topo::adj_lower_higher_face_fwd_iter,
00100 topo::adj_lower_higher_face_bkd_iter);
00101
00105 mln_gen_complex_window(complex_lower_dim_connected_n_face_window_p,
00106 topo::adj_lower_dim_connected_n_face_fwd_iter,
00107 topo::adj_lower_dim_connected_n_face_bkd_iter);
00108
00112 mln_gen_complex_window(complex_higher_dim_connected_n_face_window_p,
00113 topo::adj_higher_dim_connected_n_face_fwd_iter,
00114 topo::adj_higher_dim_connected_n_face_bkd_iter);
00115
00118 mln_gen_complex_window(complex_m_face_window,
00119 topo::adj_m_face_fwd_iter,
00120 topo::adj_m_face_bkd_iter);
00121
00122 }
00123
00124 # undef mln_gen_complex_window
00125
00126 #endif // ! MLN_CORE_IMAGE_COMPLEX_WINDOWS_HH