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 #ifndef MLN_CORE_ROUTINE_EXTEND_HH
00027 # define MLN_CORE_ROUTINE_EXTEND_HH
00028
00036
00037 # include <mln/core/image/dmorph/extension_ima.hh>
00038 # include <mln/core/image/dmorph/extension_fun.hh>
00039 # include <mln/core/image/dmorph/extension_val.hh>
00040
00041
00042
00043 namespace mln
00044 {
00045
00046
00048
00049 template <typename I, typename F>
00050 extension_fun<const I, F>
00051 extend(const Image<I>& ima, const Function_v2v<F>& fun);
00052
00053 template <typename I, typename F>
00054 extension_fun<I, F>
00055 extend(Image<I>& ima, const Function_v2v<F>& fun);
00056
00057
00059
00060 template <typename I, typename J>
00061 extension_ima<const I, const J>
00062 extend(const Image<I>& ima, const Image<J>& ext);
00063
00064
00066
00067 template <typename I>
00068 extension_val<const I>
00069 extend(const Image<I>& ima, const mln_value(I)& val);
00070
00071 template <typename I>
00072 extension_val<I>
00073 extend(Image<I>& ima, const mln_value(I)& val);
00074
00075
00076
00077 # ifndef MLN_INCLUDE_ONLY
00078
00079
00080
00081
00082 template <typename I, typename F>
00083 inline
00084 extension_fun<const I, F>
00085 extend(const Image<I>& ima, const Function_v2v<F>& fun)
00086 {
00087 mlc_converts_to(mln_result(F), mln_value(I))::check();
00088 extension_fun<const I, F> tmp(exact(ima), exact(fun));
00089 return tmp;
00090 }
00091
00092 template <typename I, typename F>
00093 inline
00094 extension_fun<I, F>
00095 extend(Image<I>& ima, const Function_v2v<F>& fun)
00096 {
00097 mlc_converts_to(mln_result(F), mln_value(I))::check();
00098 extension_fun<I, F> tmp(exact(ima), exact(fun));
00099 return tmp;
00100 }
00101
00102
00103
00104
00105 template <typename I, typename J>
00106 extension_ima<const I, const J>
00107 extend(const Image<I>& ima, const Image<J>& ext)
00108 {
00109 mlc_converts_to(mln_value(J), mln_value(I))::check();
00110 extension_ima<const I, const J> tmp(exact(ima), exact(ext));
00111 return tmp;
00112 }
00113
00114
00115
00116
00117 template <typename I>
00118 inline
00119 extension_val<const I>
00120 extend(const Image<I>& ima, const mln_value(I)& val)
00121 {
00122 extension_val<const I> tmp(exact(ima), val);
00123 return tmp;
00124 }
00125
00126 template <typename I>
00127 inline
00128 extension_val<I>
00129 extend(Image<I>& ima, const mln_value(I)& val)
00130 {
00131 extension_val<I> tmp(exact(ima), val);
00132 return tmp;
00133 }
00134
00135
00136 # endif // ! MLN_INCLUDE_ONLY
00137
00138 }
00139
00140
00141 #endif // ! MLN_CORE_ROUTINE_EXTEND_HH