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/data/fill_with_value.hh>
00027 #include <mln/data/fill_with_image.hh>
00028 #include <mln/data/compare.hh>
00029 
00030 #include <mln/core/image/image1d.hh>
00031 #include <mln/core/image/image2d.hh>
00032 #include <mln/core/image/image3d.hh>
00033 #include <mln/pw/image.hh>
00034 #include <mln/core/image/flat_image.hh>
00035 #include <mln/core/image/vmorph/cast_image.hh>
00036 #include <mln/core/image/dmorph/image_if.hh>
00037 #include <mln/core/image/dmorph/sub_image.hh>
00038 #include <mln/core/image/dmorph/extension_val.hh>
00039 
00040 #include <mln/fun/p2b/chess.hh>
00041 #include <mln/fun/p2v/iota.hh>
00042 
00043 #include <mln/debug/iota.hh>
00044 #include <mln/debug/println.hh>
00045 #include <mln/trace/all.hh>
00046 
00047 
00048 int main()
00049 {
00050   using namespace mln;
00051   const unsigned size = 100;
00052 
00053   
00054   {
00055     box2d b(point2d(1,2), point2d(2,4));
00056     image2d<int> ima(b, 2);
00057     debug::iota(ima);
00058 
00059     box2d b2(point2d(-1,-2), point2d(3,6));
00060     image2d<int> ima2(b2, 0);
00061     debug::iota(ima2);
00062 
00063     data::fill_with_image(ima, ima2); 
00064     mln_assertion(ima == (ima2 | b));
00065   }
00066 
00067 
00068   
00069   {
00070     image2d<unsigned int> ima(size, size);
00071     image2d<unsigned int> ima2(size, size);
00072     debug::iota(ima2);
00073 
00074     data::fill_with_image(ima, ima2);
00075     mln_assertion(ima == ima2);
00076   }
00077 
00078   {
00079     box2d b(point2d(1,2), point2d(2,4));
00080     image2d<int> ima(b, 2);
00081 
00082     box2d b2(point2d(-1,-2), point2d(3,6));
00083     image2d<int> ima2(b2, 0);
00084     debug::iota(ima2);
00085 
00086     data::fill_with_image(ima, ima2);
00087     mln_assertion(ima == (ima2 | b));
00088   }
00089 
00090   {
00091     typedef image2d<unsigned char> I;
00092     typedef image_if<I, fun::p2b::chess> II;
00093 
00094     I ima(size, size);
00095     I ima2(size, size);
00096     data::fill_with_value(ima, 51);
00097     data::fill_with_value(ima2, 42);
00098 
00099     II ima_if = ima | fun::p2b::chess();
00100     data::fill_with_image(ima_if, ima2);
00101 
00102     II::piter p(ima_if.domain());
00103     for_all(p)
00104       mln_assertion(ima_if(p) == 42);
00105 
00106   }
00107 
00108   
00109   {
00110     box3d b(point3d(1,2,1), point3d(2,4,3));
00111     image3d<int> ima(b, 2);
00112     debug::iota(ima);
00113 
00114     box3d b2(point3d(-1,-2,-1), point3d(3,6,3));
00115     image3d<int> ima2(b2, 2);
00116     debug::iota(ima2);
00117 
00118     image3d<int> ima3(b, 2);
00119 
00120     data::fill_with_image(ima, ima2); 
00121     mln_assertion(ima == (ima2 | b));
00122 
00123     data::fill_with_image(ima3, ima); 
00124     mln_assertion(ima == ima3);
00125   }
00126 
00127   
00128   {
00129     image1d<unsigned short> ima(size);
00130     image1d<unsigned short> out(size);
00131 
00132     debug::iota(ima);
00133     data::fill_with_image(out, ima);
00134 
00135     mln_assertion(ima == out);
00136   }
00137 
00138 
00139   
00140   {
00141     fun::p2v::iota f;
00142     const pw::image<fun::p2v::iota, mln::box2d> ima(f, make::box2d(-2,-2, 15,15));
00143     image2d<short unsigned int> out(8, 8);
00144 
00145     data::fill(out, (short unsigned int)0);
00146     data::fill_with_image(out, ima);
00147   }
00148 
00149   
00150   {
00151     flat_image<short, box2d> ima(5, mln::make::box2d(size, size));
00152     image2d<unsigned short> out(size, size);
00153 
00154     data::fill_with_value(ima, 51);
00155     data::fill_with_image(out, ima);
00156 
00157     mln_assertion(ima == out);
00158   }
00159 
00160   
00161   {
00162     typedef image2d<unsigned short> I;
00163     typedef image_if<I, fun::p2b::chess> II;
00164 
00165     I ima(size, size);
00166     I out(size, size);
00167     II ima_if = ima | fun::p2b::chess();
00168 
00169     data::fill_with_value(ima, 42);
00170     data::fill_with_value(out, 0);
00171     data::fill_with_image(ima_if, ima);
00172 
00173     mln_piter_(II) p(ima_if.domain());
00174     for_all(p)
00175       mln_assertion(ima_if(p) == ima(p));
00176   }
00177 
00178   
00179   {
00180     typedef image2d<unsigned short> I;
00181     typedef cast_image_<int, I> II;
00182 
00183     I in(size, size);
00184     II cast(in);
00185     I out(size, size);
00186 
00187     data::fill(in, (unsigned short)51);
00188     data::fill(out, (unsigned short)42);
00189 
00190     data::fill_with_image(out, cast);
00191 
00192     mln_assertion(cast == out);
00193   }
00194 
00195   
00196    {
00197      typedef image2d<int> I;
00198      typedef sub_image< image2d<int>, box2d > II;
00199 
00200      I ima(size, size);
00201      I out(size, size);
00202      II sub_ima(ima, make::box2d(4,4, 10,10));
00203 
00204 
00205      data::fill(ima, 51);
00206      data::fill(out, 0);
00207      data::fill_with_image(sub_ima, ima);
00208 
00209      II::piter p(sub_ima.domain());
00210      for_all(p)
00211        mln_assertion(sub_ima(p) == ima(p));
00212    }
00213 
00214    
00215   {
00216     typedef image2d<int> I;
00217     typedef extension_val< image2d<int> > II;
00218     typedef image2d<unsigned short> III;
00219 
00220     I ima(size, size);
00221     II extend_ima(ima, 5);
00222     III out(size, size);
00223 
00224     data::fill(ima, 51);
00225     data::fill_with_image(out, extend_ima);
00226 
00227     mln_assertion(out == extend_ima);
00228   }
00229 
00230 }