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/image/image2d.hh>
00027 #include <mln/core/image/dmorph/sub_image.hh>
00028 #include <mln/core/image/dmorph/image_if.hh>
00029 #include <mln/fun/p2b/chess.hh>
00030
00031 #include <mln/border/get.hh>
00032 #include <mln/literal/origin.hh>
00033
00034
00035 struct f_box2d_t : mln::Function_v2b< f_box2d_t >
00036 {
00037 f_box2d_t(const mln::box2d& b)
00038 : b_(b)
00039 {
00040 }
00041 mln::box2d b_;
00042 bool operator()(const mln::point2d& p) const
00043 {
00044 return b_.has(p);
00045 }
00046 };
00047
00048
00049
00050 int main()
00051 {
00052 using namespace mln;
00053
00054 typedef image2d<int> I;
00055
00056 box2d b(literal::origin, point2d(1,1));
00057 f_box2d_t f_b(b);
00058
00059 I ima(3,3, 51);
00060
00061 mln_assertion(border::get(ima) == 51);
00062 mln_assertion(ima.has(point2d(2,2)) == true);
00063
00064 sub_image<I, box2d> sub(ima, b);
00065 mln_assertion(sub.has(point2d(2,2)) == false &&
00066 sub.has(point2d(2,2)) == false);
00067 mln_assertion(border::get(sub) == 0);
00068
00069 image_if<I, f_box2d_t> imaif(ima, f_b);
00070 mln_assertion(imaif.has(point2d(2,2)) == false &&
00071 ima.has(point2d(2,2)) == true);
00072 mln_assertion(border::get(imaif) == 0);
00073
00074 mln_assertion(border::get((ima | b) | f_b) == 0);
00075 }