26 #ifndef MLN_CORE_INTERNAL_COMPLEX_WINDOW_BASE_HH
27 # define MLN_CORE_INTERNAL_COMPLEX_WINDOW_BASE_HH
33 # include <mln/core/concept/window.hh>
34 # include <mln/core/site_set/complex_psite.hh>
35 # include <mln/core/image/complex_window_piter.hh>
37 # include <mln/topo/centered_iter_adapter.hh>
45 template <
typename I,
typename G,
typename W>
46 class complex_window_fwd_piter;
47 template <
typename I,
typename G,
typename W>
48 class complex_window_bkd_piter;
52 template <
unsigned D,
typename G,
typename F,
typename B,
typename E>
53 class complex_window_base;
60 template <
unsigned D,
typename G,
typename F,
typename B,
typename E>
61 struct window_< mln::internal::complex_window_base<D, G, F, B, E> >
63 typedef trait::window::size::unknown size;
64 typedef trait::window::support::irregular support;
65 typedef trait::window::definition::varying definition;
82 template <
unsigned D,
typename G,
typename F,
typename B,
typename E>
83 class complex_window_base :
public Window<E>
88 typedef F complex_fwd_iter;
89 typedef B complex_bkd_iter;
98 typedef complex_psite<D, G> psite;
100 typedef mln_site(psite) site;
108 complex_window_base(
bool is_centered = false);
113 complex_window_fwd_piter<complex_fwd_iter, G, E> fwd_qiter;
118 complex_window_bkd_piter<complex_bkd_iter, G, E> bkd_qiter;
121 typedef fwd_qiter qiter;
131 bool is_empty() const;
133 bool is_centered() const;
136 bool is_valid() const;
145 # ifndef MLN_INCLUDE_ONLY
147 template <
unsigned D,
typename G,
typename F,
typename B,
typename E>
149 complex_window_base<D, G, F, B, E>::complex_window_base(
bool is_centered)
150 : is_centered_(is_centered)
155 template <
unsigned D,
typename G,
typename F,
typename B,
typename E>
158 complex_window_base<D, G, F, B, E>::is_empty()
const
163 template <
unsigned D,
typename G,
typename F,
typename B,
typename E>
166 complex_window_base<D, G, F, B, E>::is_centered()
const
171 template <
unsigned D,
typename G,
typename F,
typename B,
typename E>
174 complex_window_base<D, G, F, B, E>::is_valid()
const
179 # endif // ! MLN_INCLUDE_ONLY
185 #endif // ! MLN_CORE_INTERNAL_COMPLEX_WINDOW_BASE_HH