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 #include <mln/value/int_u8.hh>
00034 #include <mln/value/rgb8.hh>
00035
00036
00037 struct f_box2d_t : mln::Function_v2b< f_box2d_t >
00038 {
00039 f_box2d_t(const mln::box2d& b)
00040 : b_(b)
00041 {
00042 }
00043 mln::box2d b_;
00044 bool operator()(const mln::point2d& p) const
00045 {
00046 return b_.has(p);
00047 }
00048 };
00049
00050
00051
00052 int main()
00053 {
00054 using namespace mln;
00055
00056 box2d b(literal::origin, point2d(1,1));
00057 f_box2d_t f_b(b);
00058 mln::fun::p2b::chess c_b;
00059
00060 {
00061 typedef image2d<int> I;
00062 (std::cerr << "Tests border::get on int ... ").flush ();
00063 I ima(3,3, 51);
00064
00065 mln_assertion(border::get(ima) == 51);
00066 sub_image<I, box2d> sub(ima, b);
00067 mln_assertion(border::get(sub) == 0);
00068
00069 image_if<I, f_box2d_t> imaif(ima, f_b);
00070 mln_assertion(border::get(imaif) == 51);
00071 mln_assertion(border::get( (ima | b) ) == 0);
00072 mln_assertion(border::get( (ima | b) | f_b ) == 0);
00073 std::cerr << "OK" << std::endl;
00074 }
00075
00076
00077 {
00078 typedef image2d<value::int_u8> I;
00079 (std::cerr << "Tests border::get on int_u8 ... ").flush ();
00080 I ima(10, 10, 42);
00081 mln_assertion(border::get(ima) == 42);
00082 mln_assertion( ima.has(point2d(2,2)) == true );
00083 sub_image<I, box2d> sub(ima, b);
00084 mln_assertion(border::get(sub) == 0);
00085
00086 image_if<I, mln::fun::p2b::chess > imaif(ima, c_b);
00087 mln_assertion(border::get(imaif) == 42);
00088 mln_assertion(border::get( (ima | b) ) == 0);
00089 mln_assertion(border::get( (ima | b) | c_b ) == 0);
00090 std::cerr << "OK" << std::endl;
00091 }
00092
00093 {
00094 typedef image2d<value::rgb8> I;
00095 (std::cerr << "Tests border::get on rgb8 ... ").flush ();
00096 I ima(10, 10, 36);
00097 mln_assertion(border::get(ima) == 36);
00098 mln_assertion( ima.has(point2d(2,2)) == true );
00099 sub_image<I, box2d> sub(ima, b);
00100 mln_assertion(border::get(sub) == 0);
00101
00102 image_if<I, mln::fun::p2b::chess > imaif(ima, c_b);
00103 mln_assertion(border::get(imaif) == 36);
00104 mln_assertion(border::get( (ima | b) ) == 0);
00105 mln_assertion(border::get( (ima | b) | c_b ) == 0);
00106 std::cerr << "OK" << std::endl;
00107 }
00108
00109 }