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
00027 #ifndef MLN_DRAW_LINE_HH
00028 # define MLN_DRAW_LINE_HH
00029
00034
00035 # include <mln/core/concept/image.hh>
00036 # include <mln/core/site_set/p_line2d.hh>
00037 # include <mln/core/image/imorph/safe.hh>
00038 # include <mln/data/paste.hh>
00039 # include <mln/pw/image.hh>
00040 # include <mln/pw/cst.hh>
00041
00042
00043 namespace mln
00044 {
00045
00046 namespace draw
00047 {
00048
00062 template <typename I>
00063 void line(Image<I>& ima,
00064 const mln_psite(I)& beg, const mln_psite(I)& end,
00065 const mln_value(I)& v);
00066
00067
00068 # ifndef MLN_INCLUDE_ONLY
00069
00070 template <typename I>
00071 inline
00072 void line(Image<I>& ima_,
00073 const mln_psite(I)& beg, const mln_psite(I)& end,
00074 const mln_value(I)& v)
00075 {
00076 I& ima = exact(ima_);
00077 mln_precondition(ima.is_valid());
00078 if (! ima.has(beg))
00079 trace::warning("Begin site is not part of the given image.");
00080 if (! ima.has(end))
00081 trace::warning("End site is not part of the given image.");
00082 data::paste(pw::cst(v) | p_line2d(beg, end),
00083 safe(ima).rw());
00084 }
00085
00086 # endif // ! MLN_INCLUDE_ONLY
00087
00088 }
00089
00090 }
00091
00092
00093 #endif // ! MLN_DRAW_LINE_HH