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 #include <mln/core/alias/point2d.hh>
00027 #include <mln/core/image/image2d.hh>
00028 #include <mln/core/image/dmorph/sub_image.hh>
00029 #include <mln/core/alias/window2d.hh>
00030 #include <mln/core/alias/box2d.hh>
00031 #include <mln/core/alias/neighb2d.hh>
00032
00033
00034 #include <mln/data/fill.hh>
00035
00036 #include <mln/convert/to_p_set.hh>
00037 #include <mln/util/ord.hh>
00038
00039 using namespace mln;
00040
00041 void test(p_set<point2d> ref, p_set<point2d> cmp)
00042 {
00043 mln_assertion(ref.nsites() == cmp.nsites());
00044 for (unsigned i = 0; i < ref.nsites(); ++i)
00045 mln_assertion(ref[i] == cmp[i]);
00046 }
00047
00048 int main()
00049 {
00050 point2d
00051 a(1, 0),
00052 b(0, 1),
00053 c(-1,0),
00054 d(0,-1);
00055
00056 p_set<point2d> ref;
00057 ref.insert(a);
00058 ref.insert(b);
00059 ref.insert(c);
00060 ref.insert(d);
00061
00062
00063
00064 neighb2d nbh = c4();
00065 p_set<point2d> test_nbh = convert::to_p_set(nbh);
00066 test(ref, test_nbh);
00067
00068
00069 image2d<bool> ima(make::box2d(-6, -6, 6, 6));
00070 data::fill(ima, false);
00071 data::fill((ima | ref).rw(), true);
00072 p_set<point2d> test_ima = convert::to_p_set(ima);
00073 test(ref, test_ima);
00074
00075
00076 window2d win;
00077 win
00078 .insert(a - point2d::origin)
00079 .insert(b - point2d::origin)
00080 .insert(c - point2d::origin)
00081 .insert(d - point2d::origin);
00082 p_set<point2d> test_win = convert::to_p_set(win);
00083 test(ref, test_win);
00084
00085
00086 std::set<point2d, util::ord<point2d> > set;
00087
00088 set.insert(a);
00089 set.insert(b);
00090 set.insert(c);
00091 set.insert(d);
00092
00093 p_set<point2d> test_set = convert::to_p_set(set);
00094 test(ref, test_set);
00095 }