• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List

extend.hh

00001 // Copyright (C) 2008, 2009 EPITA Research and Development Laboratory (LRDE)
00002 //
00003 // This file is part of Olena.
00004 //
00005 // Olena is free software: you can redistribute it and/or modify it under
00006 // the terms of the GNU General Public License as published by the Free
00007 // Software Foundation, version 2 of the License.
00008 //
00009 // Olena is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU General Public License
00015 // along with Olena.  If not, see <http://www.gnu.org/licenses/>.
00016 //
00017 // As a special exception, you may use this file as part of a free
00018 // software project without restriction.  Specifically, if other files
00019 // instantiate templates or use macros or inline functions from this
00020 // file, or you compile this file and link it with other files to produce
00021 // an executable, this file does not by itself cause the resulting
00022 // executable to be covered by the GNU General Public License.  This
00023 // exception does not however invalidate any other reasons why the
00024 // executable file might be covered by the GNU General Public License.
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   // With a function.
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   // With an image.
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   // With a value.
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 } // end of namespace mln
00139 
00140 
00141 #endif // ! MLN_CORE_ROUTINE_EXTEND_HH

Generated on Thu Sep 8 2011 18:31:49 for Milena (Olena) by  doxygen 1.7.1