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_WORLD_INTER_PIXEL_IS_SEPARATOR_HH
00027 # define MLN_WORLD_INTER_PIXEL_IS_SEPARATOR_HH
00028
00034
00035 # include <mln/core/concept/function.hh>
00036 # include <mln/core/image/dmorph/image_if.hh>
00037 # include <mln/core/point.hh>
00038
00039
00040 namespace mln
00041 {
00042
00043 namespace world
00044 {
00045
00046 namespace inter_pixel
00047 {
00048
00049
00052 struct is_separator : public Function_v2b< is_separator >
00053 {
00054
00055 typedef bool result;
00056
00057 template <typename P>
00058 bool operator()(const Gpoint<P>& p) const;
00059
00060 template <typename P>
00061 bool operator()(const Site_Proxy<P>& p) const;
00062
00063 };
00064
00065
00066 # ifndef MLN_INCLUDE_ONLY
00067
00068 template <typename P>
00069 inline
00070 bool
00071 is_separator::operator()(const Gpoint<P>& p_) const
00072 {
00073 const P& p = exact(p_);
00074 return p.row() % 2 + p.col() % 2 == 1;
00075 }
00076
00077 template <typename P>
00078 inline
00079 bool
00080 is_separator::operator()(const Site_Proxy<P>& p) const
00081 {
00082 mlc_is_a(mln_site(P), Gpoint)::check();
00083 return this->operator()(exact(p).to_site());
00084 }
00085
00086 # endif // ! MLN_INCLUDE_ONLY
00087
00088 }
00089
00090 }
00091
00092 }
00093
00094 #endif // ! MLN_WORLD_INTER_PIXEL_IS_SEPARATOR_HH