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_CONVERT_TO_P_ARRAY_HH
00027 # define MLN_CONVERT_TO_P_ARRAY_HH
00028
00034
00035 # include <mln/core/site_set/p_array.hh>
00036 # include <mln/core/concept/image.hh>
00037 # include <mln/core/concept/window.hh>
00038
00039
00040 namespace mln
00041 {
00042
00043 namespace convert
00044 {
00045
00047 template <typename S>
00048 p_array<mln_psite(S)> to_p_array(const Site_Set<S>& pset);
00049
00050
00053 template <typename W>
00054 p_array<mln_psite(W)> to_p_array(const Window<W>& win,
00055 const mln_psite(W)& p);
00056
00058 template <typename I>
00059 p_array<mln_psite(I)>
00060 to_p_array(const Image<I>& img);
00061
00062
00063
00064 # ifndef MLN_INCLUDE_ONLY
00065
00066 template <typename S>
00067 inline
00068 p_array<mln_psite(S)> to_p_array(const Site_Set<S>& pset_)
00069 {
00070 const S& pset = exact(pset_);
00071 p_array<mln_psite(S)> v;
00072
00073
00074 mln_fwd_piter(S) p(pset);
00075 for_all(p)
00076 v.append(p);
00077 return v;
00078 }
00079
00080 template <typename W>
00081 inline
00082 p_array<mln_psite(W)> to_p_array(const Window<W>& win_,
00083 const mln_psite(W)& p)
00084 {
00085 const W& win = exact(win_);
00086 p_array<mln_psite(W)> v;
00087 v.reserve(win.size());
00088 mln_qiter(W) q(win, p);
00089 for_all(q)
00090 v.append(q);
00091 return v;
00092 }
00093
00094
00095 template <typename I>
00096 inline
00097 p_array<mln_psite(I)>
00098 to_p_array(const Image<I>& img_)
00099 {
00100 const I& img = exact(img_);
00101
00102 p_array<mln_psite(I)> a;
00103
00104 mln_piter(I) p(img.domain());
00105 for_all(p)
00106 if (img(p))
00107 a.append(p);
00108
00109 return a;
00110 }
00111
00112 # endif // ! MLN_INCLUDE_ONLY
00113
00114 }
00115
00116 }
00117
00118
00119 #endif // ! MLN_CONVERT_TO_P_ARRAY_HH