1. 15 Apr, 2004 2 commits
  2. 14 Apr, 2004 2 commits
    • Damien Thivolle's avatar
      2004-04-14 Damien Thivolle <damien@lrde.epita.fr> · dd7a2723
      Damien Thivolle authored
              * config/oln.m4: Correct the message that appears when doxygen is not
              enough up to date.
              * swilena/python/tests/Makefile.am: Readd tests for swilena.
              * swilena/ruby/Makefile.am: Likewise.
              * swilena/ruby/tests/Makefile.am: Likewise.
              * swilena/python/Makefile.am: Likewise.
              * swilena/python/tests/morpho.py: Fix.
              * swilena/python/swilena_all1d.py: Adjust according to the split of
              swilena_morpho1d.
              * swilena/python/swilena_all2d.py: Likewise for swilena_morpho2d.
              * swilena/python/swilena_all3d.py: Likewise for swilena_morpho3d.
      
          prcs2git-id: 10.163
      dd7a2723
    • Damien Thivolle's avatar
      2004-04-14 Damien Thivolle <damien@lrde.epita.fr> · d8e7b8ef
      Damien Thivolle authored
         * configure.ac: Remove doxygen detection when ./configure is run
         with `--without-doc'.
      
          prcs2git-id: 10.158
      d8e7b8ef
  3. 13 Apr, 2004 2 commits
  4. 12 Apr, 2004 1 commit
    • Damien Thivolle's avatar
      2004-04-11 Damien Thivolle <damien@lrde.epita.fr> · 42f35fc4
      Damien Thivolle authored
      	* configure.ac: Check the swig version to choose between -c and
      	-noruntime flag.
      	Make the python and ruby libraries path detection more efficient.
      	* config/oln.m4: Add `AC_CHECK_SWIG_FLAGS' macros.
      	* tools/swilena/expand.sh: Use `SWIG_FLAGS' variable.
      
          prcs2git-id: 10.147
      42f35fc4
  5. 11 Apr, 2004 1 commit
    • Damien Thivolle's avatar
      2004-04-11 Damien Thivolle <damien@lrde.epita.fr> · f3637a93
      Damien Thivolle authored
      	* configure.ac: Add support for ruby-1.7, ruby-1.8.
      	* olena/oln/core/point2d.hh: Add header include.
      	* olena/oln/core/point2d.hxx: Likewise.
      	* olena/oln/core/point3d.hh: Likewise.
      	* olena/oln/core/point3d.hxx: Likewise.
      	* swilena/expand.sh: Split morpho modules to make the code compile
      	faster.
      	* swilena/generate_morpho_instantiations.py: Likewise.
      	* swilena/meta/swilena_ntg.i: Add `do_nothing' argument to empty SWIG
      	macros since the SWIG preprocessor does not support them.
      	* swilena/meta/swilena_morpho.i: Likewise.
      
          prcs2git-id: 10.142
      f3637a93
  6. 09 Apr, 2004 3 commits
    • Damien Thivolle's avatar
      2004-04-09 Damien Thivolle <damien@lrde.epita.fr> · ba50ddd9
      Damien Thivolle authored
      	* cleanup.sh: Replace `-or' by `-o' to improve portability.
      	* configure.ac: Add `DOC_CPPFLAGS' substitution.
      	* config/oln.m4: Add `DOC_CPPFLAGS' variable.
      	Improve portability.
      	* doc/ref/Makefile.am: Use `clean-local' and `distclean-local' to delete
      	files.
      	* doc/ref/out/exdoc.config.in: Add `DOC_CPPFLAGS' to the compilation
      	flags.
      
          prcs2git-id: 10.140
      ba50ddd9
    • Damien Thivolle's avatar
      2004-04-09 Damien Thivolle <damien@lrde.epita.fr> · e29f8bb0
      Damien Thivolle authored
      	* configure.ac: Add a workaround for some versions of cc1plus.
      	Add new variable `DOC_CPPFLAGS' for the documentation generation.
      	* config/oln.m4: Readd normal flags for g++-3.2
      	Add `DOC_CPPFLAGS ' affectation.
      	* doc/ref/Makefile.am: Remove MY_CPPFLAGS.
      	* doc/ref/exdoc.pl: Likewise.
      	* doc/ref/out/exdoc.config.in: Remove the use of the third argument.
      	The script directly use the `DOC_CPPFLAGS' variable.
      
          prcs2git-id: 10.139
      e29f8bb0
    • Damien Thivolle's avatar
      2004-04-09 Damien Thivolle <damien@lrde.epita.fr> · 65c7bcce
      Damien Thivolle authored
      	* doc/ref/Makefile.am: Fix files cleaning.
      	Add MY_CPPFLAGS=... when running make on out/makefile.
      	* doc/ref/exdoc.pl: Add a third argument to the generated scripts.
      	* doc/ref/out/exdoc.config.in: Add `CPPFLAGS' to the compilation line.
      	* cleanup.sh: Replace `-or' by `-o' which is more portable.
      	* config/oln.m4: Improve quoting.
      
          prcs2git-id: 10.138
      65c7bcce
  7. 07 Apr, 2004 1 commit
  8. 03 Apr, 2004 1 commit
    • Damien Thivolle's avatar
      2004-04-03 Damien Thivolle <damien@lrde.epita.fr> · 16d2c768
      Damien Thivolle authored
      	* config/oln.m4: Remove `-Werror' flag for g++-3.2.
      	* doc/ref/Makefile.am: Replace `make' by $(MAKE).
      	* doc/ref/out/exdoc.config.in: Add -DNEED_ROUND -DNEED_ROUNDF flags
      	to examples compilation.
      	* olena/oln/Makefile.am: Add files.
      	* olena/oln/morpher/generic_morpher.hh: Repair unmorph().
      	* olena/oln/morpher/color_morpher.hh: Correct comments.
      	* olena/tests/morpher/tests/color_morph: Readd a test.
      
          prcs2git-id: 10.133
      16d2c768
  9. 29 Mar, 2004 1 commit
    • Damien Thivolle's avatar
      2004-03-29 Damien Thivolle <damien@lrde.epita.fr> · 88d0dc87
      Damien Thivolle authored
      	* configure.ac: Add morphers test suite.
      	* olena/oln/morpher/generic_morpher.hh: Correct code and comments.
      	* olena/oln/morpher/subq_morpher.hh: Add file. Sub quantify morpher
      implementation.
      	* olena/oln/morpher/color_morpher.hh: Add file. Color morpher implementation.
      	* olena/tests/morpher/Makefile.am: Add file. Morphers test suite.
      	* olena/tests/morpher/tests/sq_morph_8: Add file.
      	* olena/tests/morpher/tests/sq_morph_7: Likewise.
      	* olena/tests/morpher/tests/sq_morph_6: Likewise.
      	* olena/tests/morpher/tests/sq_morph_5: Likewise.
      	* olena/tests/morpher/tests/sq_morph_4: Likewise.
      	* olena/tests/morpher/tests/sq_morph_3: Likewise.
      	* olena/tests/morpher/tests/sq_morph_2: Likewise.
      	* olena/tests/morpher/tests/sq_morph_1: Likewise.
      	* olena/tests/morpher/tests/rmorph: Likewise.
      	* olena/tests/morpher/tests/gmorph: Likewise.
      	* olena/tests/morpher/tests/color_sq_morph: Likewise.
      	* olena/tests/morpher/tests/bmorph: Likewise.
      
          prcs2git-id: 10.115
      88d0dc87
  10. 10 Feb, 2004 1 commit
    • Giovanni Palma's avatar
      Index: ChangeLog · 04ce26ec
      Giovanni Palma authored
      from  Giovanni Palma  <giovanni@lrde.epita.fr>
      
      	* NEWS: Describe behavior hierarchy.
      
      Index: olena/ChangeLog
      from  Giovanni Palma  <giovanni@lrde.epita.fr>
      
      	* oln/core/abstract/behavior.hh: Add behavior hierarchy (abstract
      	part).
      	* oln/core/behavior.hh: Add behavior hierarchy content.
      
      	* oln/morpho/attributes.hh: Correct 'ifndef' macros.
      
      	* tests/convol/tests/uniform_gauss: Improve tests.
      
      	* oln/convol/fast_gaussian.hh: Make the gaussian take care of the
      	behavior hierarchy.
      	* oln/convol/fast_gaussian.hxx: Likewise.
      
      Index: NEWS
      --- NEWS Mon, 09 Feb 2004 18:57:03 +0100 palma_g (oln/0_NEWS 1.17 640)
      +++ NEWS Tue, 10 Feb 2004 15:25:07 +0100 palma_g (oln/0_NEWS 1.17 640)
      @@ -1,11 +1,18 @@
       Olena 0.10	Not yet
      
      +	* Border behavior can be controlled with the behavior hierarchy.
      +	  If an algorithm support it, you can choose the way the image
      +          border will be seen. Three behaviors are available: mirror,
      +	  replicate or user defined value.
      +
       	* Attribute opening/closing enhancement
      -	  - Make the algothim more generic.
      -	  - Add a lot of attributes.
      +	  - Make the algorithm more generic.
      +	  - Add a lot of attributes (area, disk, square, dist,
      +            rectangle, volume, height, maxvalue, minvalue).
      
       	* Change the color conversion system
      -	  - CIE RGB is the main color system.
      +	  - CIE RGB is the main color system e.g. it can be converted
      +	    directly into any other color system.
       	  - Conversion between 2 color systems should pass by the RGB one.
      
       Olena 0.9	August 8, 2003
      Index: olena/oln/convol/fast_gaussian.hh
      --- olena/oln/convol/fast_gaussian.hh Thu, 07 Aug 2003 02:08:21 +0200 david
      (oln/26_fast_gauss 1.6.1.6.1.3 640)
      +++ olena/oln/convol/fast_gaussian.hh Tue, 10 Feb 2004 14:56:04 +0100 palma_g
      (oln/26_fast_gauss 1.6.1.6.1.3 640)
      @@ -31,7 +31,7 @@
       # include <oln/basics.hh>
       # include <oln/convert/basics.hh>
       # include <ntg/float.hh>
      -
      +# include <oln/core/behavior.hh>
       //
       // Gaussian filter implementation from
       // "Recursively implementing the gaussian and its derivatives"
      @@ -44,39 +44,66 @@
      
             // FIXME: add tests!
      
      -      template <class C, class B, class I>
      +      template <class C, class B, class I, class BE>
             typename mute<I, typename convoutput<C, B, oln_value_type(I)>::ret>::ret
             gaussian(const convert::abstract::conversion<C, B>& input_conv,
      -	       const abstract::image<I>& in, ntg::float_s sigma);
      +	       const abstract::image<I>& in, ntg::float_s sigma,
      +	       const abstract::behavior<BE> &behavior);
      
      -      template <class C, class B, class I>
      +      template <class C, class B, class I, class BE>
             typename mute<I, typename convoutput<C, B, oln_value_type(I)>::ret>::ret
             gaussian_derivative(const convert::abstract::conversion<C, B>&
      input_conv,
      -			  const abstract::image<I>& in, ntg::float_s sigma);
      -      template <class C, class B, class I>
      +			  const abstract::image<I>& in, ntg::float_s sigma,
      +			  const abstract::behavior<BE> &behavior);
      +      template <class C, class B, class I, class BE>
             typename mute<I, typename convoutput<C, B, oln_value_type(I)>::ret>::ret
             gaussian_second_derivative(const convert::abstract::conversion<C, B>&
      input_conv,
       				 const abstract::image<I>& in,
      -				 ntg::float_s sigma);
      +				 ntg::float_s sigma,
      +				 const abstract::behavior<BE> &behavior);
      
             /* Same functions, with a default conversion.  */
      
      +      template <class I, class BE> inline
      +      oln_concrete_type(I)
      +      gaussian(const abstract::image<I>& in, ntg::float_s sigma,
      +	       const abstract::behavior<BE> &behavior)
      +      { return gaussian(convert::force<oln_value_type(I)>(), in, sigma,
      +			behavior); }
      +
      +      template <class I, class BE> inline
      +      oln_concrete_type(I)
      +      gaussian_derivative(const abstract::image<I>& in, ntg::float_s sigma,
      +			  const abstract::behavior<BE> &behavior)
      +      { return gaussian_derivative(convert::force<oln_value_type(I)>(), in,
      sigma,
      +				   behavior); }
      +
      +      template <class I, class BE> inline
      +      oln_concrete_type(I)
      +      gaussian_second_derivative(const abstract::image<I>& in,
      +				 ntg::float_s sigma,
      +				 const abstract::behavior<BE> &behavior = mirror_behavior<>())
      +      { return gaussian_second_derivative(convert::force<oln_value_type(I)>(),
      +					  in, sigma, behavior); }
      +
      +      /* Same functions, with a default behavior (mirror_behavior). */
             template <class I> inline
             oln_concrete_type(I)
             gaussian(const abstract::image<I>& in, ntg::float_s sigma)
      -      { return gaussian(convert::force<oln_value_type(I)>(), in, sigma); }
      +      { return gaussian(convert::force<oln_value_type(I)>(), in, sigma,
      +			mirror_bhv()); }
      
             template <class I> inline
             oln_concrete_type(I)
             gaussian_derivative(const abstract::image<I>& in, ntg::float_s sigma)
      -      { return gaussian_derivative(convert::force<oln_value_type(I)>(), in,
      sigma); }
      +      { return gaussian_derivative(convert::force<oln_value_type(I)>(), in,
      sigma,
      +				   mirror_bhv()); }
      
             template <class I> inline
             oln_concrete_type(I)
      -      gaussian_second_derivative(const abstract::image<I>& in,
      -				 ntg::float_s sigma)
      -      { return gaussian_second_derivative(convert::force<oln_value_type(I)>(),
      -					  in, sigma); }
      +	gaussian_second_derivative(const abstract::image<I>& in, ntg::float_s sigma)
      +      { return gaussian_second_derivative(convert::force<oln_value_type(I)>(),
      in, sigma,
      +					  mirror_bhv()); }
           }
         }
       }
      Index: olena/oln/convol/fast_gaussian.hxx
      --- olena/oln/convol/fast_gaussian.hxx Wed, 28 Jan 2004 16:28:44 +0100 palma_g
      (oln/25_fast_gauss 1.7.1.8.1.5 640)
      +++ olena/oln/convol/fast_gaussian.hxx Tue, 10 Feb 2004 13:09:29 +0100 palma_g
      (oln/25_fast_gauss 1.7.1.8.1.5 640)
      @@ -230,12 +230,13 @@
       	  }
       	};
      
      -	template <class C, class B, class I, class F>
      +	template <class C, class B, class I, class F, class BE>
       	typename mute<I, typename convoutput<C,B,oln_value_type(I)>::ret>::ret
       	gaussian_common_(const convert::abstract::conversion<C,B>& c,
       			 const abstract::image<I>& in,
       			 const F& coef,
      -			 ntg::float_s sigma)
      +			 ntg::float_s sigma,
      +			 const abstract::behavior<BE> &behavior)
       	{
       	  typename mute<I, ntg::float_s>::ret work_img(in.size());
      
      @@ -247,7 +248,7 @@
       	     be linear, so when sigma is big enougth, the signal may
       	     be parasitized by the non signal values.
       	   */
      -	  work_img.border_adapt_mirror(ntg::cast::round<coord>(5 * sigma));
      +	  behavior.adapt_border(work_img, ntg::cast::round<coord>(5 * sigma));
      
       	  gaussian_<I::dim>::doit(work_img, coef);
      
      @@ -265,10 +266,11 @@
      
             } // internal
      
      -      template <class C, class B, class I>
      +      template <class C, class B, class I, class BE>
             typename mute<I, typename convoutput<C,B,oln_value_type(I)>::ret>::ret
             gaussian(const convert::abstract::conversion<C,B>& c,
      -	       const abstract::image<I>& in, ntg::float_s sigma)
      +	       const abstract::image<I>& in, ntg::float_s sigma,
      +	       const abstract::behavior<BE> &behavior)
             {
       	internal::recursivefilter_coef_<float>
       	  coef(1.68f, 3.735f,
      @@ -278,13 +280,14 @@
       	       sigma,
       	       internal::recursivefilter_coef_<float>::DericheGaussian);
      
      -	return internal::gaussian_common_(c, in, coef, sigma);
      +	return internal::gaussian_common_(c, in, coef, sigma, behavior);
             }
      
      -      template <class C, class B, class I>
      +      template <class C, class B, class I, class BE>
             typename mute<I, typename convoutput<C,B,oln_value_type(I)>::ret>::ret
             gaussian_derivative(const convert::abstract::conversion<C,B>& c,
      -			  const abstract::image<I>& in, ntg::float_s sigma)
      +			  const abstract::image<I>& in, ntg::float_s sigma,
      +			  const abstract::behavior<BE> &behavior)
             {
       	internal::recursivefilter_coef_<float>
       	  coef(-0.6472f, -4.531f,
      @@ -295,13 +298,14 @@
       	       internal::recursivefilter_coef_<float>
       	       ::DericheGaussianFirstDerivative);
      
      -	return internal::gaussian_common_(c, in, coef, sigma);
      +	return internal::gaussian_common_(c, in, coef, sigma, behavior);
             }
      
      -      template <class C, class B, class I>
      +      template <class C, class B, class I, class BE>
             typename mute<I, typename convoutput<C,B,oln_value_type(I)>::ret>::ret
             gaussian_second_derivative(const convert::abstract::conversion<C,B>& c,
      -				 const abstract::image<I>& in, ntg::float_s sigma)
      +				 const abstract::image<I>& in, ntg::float_s sigma,
      +				 const abstract::behavior<BE> &behavior)
             {
       	internal::recursivefilter_coef_<float>
       	  coef(-1.331f, 3.661f,
      @@ -312,7 +316,7 @@
       	       internal::recursivefilter_coef_<float>
       	       ::DericheGaussianSecondDerivative);
      
      -	return internal::gaussian_common_(c, in, coef, sigma);
      +	return internal::gaussian_common_(c, in, coef, sigma, behavior);
             }
      
           } // fast
      Index: olena/tests/convol/tests/uniform_gauss
      --- olena/tests/convol/tests/uniform_gauss Fri, 30 Jan 2004 10:25:13 +0100
      palma_g (oln/j/41_uniform_ga 1.1 644)
      +++ olena/tests/convol/tests/uniform_gauss Tue, 10 Feb 2004 15:17:49 +0100
      palma_g (oln/j/41_uniform_ga 1.1 644)
      @@ -23,9 +23,10 @@
         for_all(it)
           img[it] = 42;
         image2d<int_u8>		img2 = convol::fast::gaussian(img, 5);
      +  image2d<int_u8>		img3 = convol::fast::gaussian(img, 5, replicate_bhv());
      
         for_all(it)
      -    if (img[it] != img2[it])
      +    if ((img[it] != img2[it]) || (img[it] != img3[it]))
             return true;
         return false;
       }
      Index: olena/oln/morpho/attributes.hh
      --- olena/oln/morpho/attributes.hh Mon, 09 Feb 2004 18:57:03 +0100 palma_g
      (oln/j/45_attributes 1.2 644)
      +++ olena/oln/morpho/attributes.hh Tue, 10 Feb 2004 14:59:24 +0100 palma_g
      (oln/j/45_attributes 1.2 644)
      @@ -25,18 +25,11 @@
       // reasons why the executable file might be covered by the GNU General
       // Public License.
      
      -#ifndef ATTRIBUTES_HH
      -# define ATTRIBUTES_HH
      +#ifndef OLN_MORPHO_ATTRIBUTES_HH
      +# define OLN_MORPHO_ATTRIBUTES_HH
       # include <mlc/type.hh>
       # include <vector>
      
      -// some usefull macros
      -
      -// those macros should be moved into mlc
      -// # define mlc_exact_vt_type(T, Exact)	typename mlc::exact_vt<T, Exact>::ret
      -// # define oln_2_exact_vt_type(self, T, Exact)	typename mlc::exact_vt<self<T,
      Exact>, Exact>::ret
      -// # define dispatch(Fun)			return exact().Fun##_impl
      -
       // attribute dedicated macros
       # define attr_lambda_type(T)	typename attr_traits<T>::lambda_type
       # define attr_env_type(T)	typename attr_traits<T>::env_type
      @@ -859,5 +852,5 @@
       // FIXME: to be written...
      
      -#endif // ndef ATTRIBUTES_HH
      +#endif // !OLN_MORPHO_ATTRIBUTES
      
      Index: olena/oln/core/abstract/behavior.hh
      --- olena/oln/core/abstract/behavior.hh Tue, 10 Feb 2004 15:33:34 +0100 palma_g
      ()
      +++ olena/oln/core/abstract/behavior.hh Tue, 10 Feb 2004 14:54:58 +0100 palma_g
      (oln/j/46_behavior.h  644)
      @@ -0,0 +1,57 @@
      +// Copyright (C) 2004  EPITA Research and Development Laboratory
      +//
      +// This  file is  part of  the Olena  Library.  This  library  is free
      +// software; you can redistribute it  and/or modify it under the terms
      +// of the  GNU General  Public License version  2 as published  by the
      +// Free Software Foundation.
      +//
      +// This library is distributed in the hope that it will be useful, but
      +// WITHOUT  ANY  WARRANTY;  without   even  the  implied  warranty  of
      +// MERCHANTABILITY or  FITNESS FOR A PARTICULAR PURPOSE.   See the GNU
      +// General Public License for more details.
      +//
      +// You should have  received a copy of the  GNU General Public License
      +// along with  this library; see the  file COPYING.  If  not, write to
      +// the Free Software Foundation, 59  Temple Place - Suite 330, Boston,
      +// MA 02111-1307, USA.
      +//
      +// As a  special exception, you  may use this  file as part of  a free
      +// software library without restriction.  Specifically, if other files
      +// instantiate templates  or use macros or inline  functions from this
      +// file, or  you compile  this file  and link it  with other  files to
      +// produce  an executable,  this file  does  not by  itself cause  the
      +// resulting  executable  to be  covered  by  the  GNU General  Public
      +// License.   This exception  does  not however  invalidate any  other
      +// reasons why the executable file might be covered by the GNU General
      +// Public License.
      +
      +#ifndef OLENA_CORE_ABSTRACT_BEHAVIOR_HH
      +# define OLENA_CORE_ABSTRACT_BEHAVIOR_HH
      +# include <mlc/type.hh>
      +# include <oln/core/abstract/image.hh>
      +# include <oln/core/coord.hh>
      +
      +namespace oln {
      +    namespace abstract {
      +      // behavior hierarchy
      +      //the aim of this one is to describe how an algorithm should work
      +      //on borders
      +      template <class Exact>
      +      class behavior: public mlc_hierarchy::any<Exact>
      +      {
      +      public:
      +	typedef behavior<Exact>				self_type;
      +	typedef mlc_exact_vt_type(self_type, Exact)	exact_type;
      +
      +	template <class I>
      +	void adapt_border(oln::abstract::image<I> &im, coord border_size) const
      +	{
      +	  mlc_dispatch(adapt_border)(im, border_size);
      +	};
      +      protected:
      +	behavior() {};
      +      };
      +    } // !abstract
      +}
      +
      +#endif // !OLENA_CORE_ABSTRACT_BEHAVIOR_HH
      Index: olena/oln/core/behavior.hh
      --- olena/oln/core/behavior.hh Tue, 10 Feb 2004 15:33:34 +0100 palma_g ()
      +++ olena/oln/core/behavior.hh Tue, 10 Feb 2004 15:12:48 +0100 palma_g
      (oln/j/47_behavior.h  644)
      @@ -0,0 +1,108 @@
      +// Copyright (C) 2004 EPITA Research and Development Laboratory
      +//
      +// This  file is  part of  the Olena  Library.  This  library  is free
      +// software; you can redistribute it  and/or modify it under the terms
      +// of the  GNU General  Public License version  2 as published  by the
      +// Free Software Foundation.
      +//
      +// This library is distributed in the hope that it will be useful, but
      +// WITHOUT  ANY  WARRANTY;  without   even  the  implied  warranty  of
      +// MERCHANTABILITY or  FITNESS FOR A PARTICULAR PURPOSE.   See the GNU
      +// General Public License for more details.
      +//
      +// You should have  received a copy of the  GNU General Public License
      +// along with  this library; see the  file COPYING.  If  not, write to
      +// the Free Software Foundation, 59  Temple Place - Suite 330, Boston,
      +// MA 02111-1307, USA.
      +//
      +// As a  special exception, you  may use this  file as part of  a free
      +// software library without restriction.  Specifically, if other files
      +// instantiate templates  or use macros or inline  functions from this
      +// file, or  you compile  this file  and link it  with other  files to
      +// produce  an executable,  this file  does  not by  itself cause  the
      +// resulting  executable  to be  covered  by  the  GNU General  Public
      +// License.   This exception  does  not however  invalidate any  other
      +// reasons why the executable file might be covered by the GNU General
      +// Public License.
      +
      +#ifndef OLENA_CORE_BEHAVIOR_HH
      +# define OLENA_CORE_BEHAVIOR_HH
      +# include <oln/core/abstract/behavior.hh>
      +# include <mlc/type.hh>
      +
      +namespace oln {
      +  // mirror the image content into the border
      +  template <class Exact = mlc::final>
      +  class mirror_behavior:
      +    public abstract::behavior<mlc_exact_vt_type(mirror_behavior<Exact>,
      Exact)>
      +  {
      +  public:
      +    typedef mirror_behavior<Exact>			self_type;
      +    typedef mlc_exact_vt_type(self_type, Exact)	exact_type;
      +
      +    template <class I>
      +      void adapt_border_impl(oln::abstract::image<I> &im, coord border_size)
      const
      +      {
      +	im.border_adapt_mirror(border_size);
      +      };
      +  };
      +
      +  // set the border to a specific value
      +  template <class T, class Exact = mlc::final>
      +  class value_behavior:
      +    public abstract::behavior<mlc_2_exact_vt_type(value_behavior, T, Exact)>
      +  {
      +  public:
      +    typedef value_behavior<T, Exact>		self_type;
      +    typedef mlc_exact_vt_type(self_type, Exact)	exact_type;
      +    typedef T					value_type;
      +
      +    explicit value_behavior(value_type value): value_(value)
      +      {
      +      };
      +
      +    template <class I>
      +      void adapt_border_impl(abstract::image<I> &im, coord border_size) const
      +      {
      +	im.border_adapt_assign(border_size,
      ntg::cast::force<oln_value_type(I)>(value_));
      +      };
      +
      +  protected:
      +    value_type	value_;
      +  };
      +
      +  // replicate the border
      +  template <class Exact = mlc::final>
      +  class replicate_behavior:
      +    public abstract::behavior<mlc_exact_vt_type(replicate_behavior<Exact>,
      Exact)>
      +  {
      +  public:
      +    typedef replicate_behavior<Exact>		self_type;
      +    typedef mlc_exact_vt_type(self_type, Exact)	exact_type;
      +
      +    template <class I>
      +      void adapt_border_impl(abstract::image<I> &im, coord border_size) const
      +      {
      +	im.border_adapt_copy(border_size);
      +      };
      +  };
      +
      +  // tools to call ctors with type inference
      +  inline mirror_behavior<> mirror_bhv()
      +  {
      +    return mirror_behavior<>();
      +  }
      +
      +  template <class T>
      +  inline value_behavior<T> value_bhv(const T &value)
      +  {
      +    return value_behavior<T>(value);
      +  }
      +
      +  inline replicate_behavior<> replicate_bhv()
      +  {
      +    return replicate_behavior<>();
      +  }
      +} // !oln
      +
      +#endif // !OLN_CORE_BEHAVIOR_HH
      
          prcs2git-id: 10.63
      04ce26ec
  11. 09 Feb, 2004 1 commit
    • Giovanni Palma's avatar
      Index: ChangeLog · f4a29507
      Giovanni Palma authored
      from  Giovanni Palma  <giovanni@lrde.epita.fr>
      
      	* NEWS: Describe color and attributes improvement.
      
      Index: integre/ChangeLog
      from  Giovanni Palma  <giovanni@lrde.epita.fr>
      
      	* ntg/vect/vec.hh: Add sup() function to vec traits.
      
      Index: metalic/ChangeLog
      from  Giovanni Palma  <giovanni@lrde.epita.fr>
      
      	* mlc/type.hh: Add some useful macros.
      
      Index: olena/ChangeLog
      from  Giovanni Palma  <giovanni@lrde.epita.fr>
      
      	* oln/morpho/attributes.hh: Add new attributes. Correct the olders.
      
      	* oln/morpho/attribute_union_find.hh: Change lambda type from ref
      	to pointer.
      	* oln/morpho/attribute_closing_opening.hh: Fix some argument
      	types. Add new declarations.
      
      Index: NEWS
      --- NEWS Fri, 08 Aug 2003 16:27:13 +0200 david (oln/0_NEWS 1.16 640)
      +++ NEWS Mon, 09 Feb 2004 18:44:40 +0100 palma_g (oln/0_NEWS 1.16 640)
      @@ -1,3 +1,13 @@
      +Olena 0.10	Not yet
      +
      +	* Attribute opening/closing enhancement
      +	  - Make the algothim more generic.
      +	  - Add a lot of attributes.
      +
      +	* Change the color conversion system
      +	  - CIE RGB is the main color system.
      +	  - Conversion between 2 color systems should pass by the RGB one.
      +
       Olena 0.9	August 8, 2003
      
               * New static hierarchy paradigm
      Index: metalic/mlc/type.hh
      --- metalic/mlc/type.hh Fri, 07 Nov 2003 17:19:10 +0100 burrus_n
      (oln/c/21_type.hh 1.27 640)
      +++ metalic/mlc/type.hh Mon, 09 Feb 2004 18:14:34 +0100 palma_g
      (oln/c/21_type.hh 1.27 640)
      @@ -237,6 +237,13 @@
       # define mlc_exact_type(T) typename mlc::exact< T >::ret
       # define mlc_exact_type_(T) mlc::exact< T >::ret
      
      +// Return the exact virtual type of two given types (inheritance
      determination).
      +
      +# define mlc_exact_vt_type(T, Exact)		typename mlc::exact_vt<T, Exact>::ret
      +# define mlc_2_exact_vt_type(self, T, Exact)	typename mlc::exact_vt<self<T,
      Exact>, Exact>::ret
      +# define mlc_exact_vt_type_(T, Exact)		mlc::exact_vt<T, Exact>::ret
      +# define mlc_2_exact_vt_type_(self, T, Exact)	mlc::exact_vt<self<T, Exact>,
      Exact>::ret
      +
       namespace mlc
       {
      
      @@ -299,4 +306,10 @@
      
       # define mlc_init_static_hierarchy(Exact)
      
      +/*---------.
      +| dispatch |
      +`---------*/
      +
      +# define mlc_dispatch(Fun)			return exact().Fun##_impl
      +
       #endif // ! METALIC_TYPE_HH
      Index: olena/oln/morpho/attribute_closing_opening.hh
      --- olena/oln/morpho/attribute_closing_opening.hh Fri, 06 Feb 2004 16:02:37
      +0100 palma_g (oln/q/49_attribute_ 1.11 640)
      +++ olena/oln/morpho/attribute_closing_opening.hh Fri, 06 Feb 2004 17:44:37
      +0100 palma_g (oln/q/49_attribute_ 1.11 640)
      @@ -41,7 +41,7 @@
       	oln_concrete_type(I)
       	  attr_closing_(const abstract::non_vectorial_image<I>& input,
       			const abstract::neighborhood<N>& Ng,
      -			const attr_lambda_type(A) lambda)
      +			const attr_lambda_type(A) &lambda)
       	{
       	  typedef tarjan::tarjan_set<oln_concrete_type(I), A > tarjan_set_type;
       	  tarjan_set_type area_closing(input.exact(), attr_env_type(A)());
      @@ -53,7 +53,7 @@
       	oln_concrete_type(I)
       	  attr_opening_(const abstract::non_vectorial_image<I>& input,
       			const abstract::neighborhood<N>& Ng,
      -			const attr_lambda_type(A) lambda)
      +			const attr_lambda_type(A) &lambda)
       	{
       	  typedef tarjan::tarjan_set<oln_concrete_type(I), A > tarjan_set_type;
       	  tarjan_set_type area_opening(input.exact(), attr_env_type(A)());
      @@ -68,7 +68,7 @@
             oln_concrete_type(I) \
       	T##_opening(const abstract::non_vectorial_image<I>& input, \
       		       const abstract::neighborhood<N>& Ng, \
      -		       const attr_lambda_type(T##_type<unsigned>) lambda) \
      +		       const attr_lambda_type(T##_type<unsigned>) &lambda) \
             { \
       	return internal::attr_opening_<I, N, T##_type<unsigned> >(input, Ng, lambda);
      \
             }
      @@ -78,7 +78,7 @@
             oln_concrete_type(I) \
       	T##_closing(const abstract::non_vectorial_image<I>& input, \
       		       const abstract::neighborhood<N>& Ng, \
      -		       const attr_lambda_type(T##_type<unsigned>) lambda) \
      +		       const attr_lambda_type(T##_type<unsigned>) &lambda) \
             { \
       	return internal::attr_closing_<I, N, T##_type<unsigned> >(input, Ng, lambda);
      \
             }
      @@ -90,7 +90,7 @@
             oln_concrete_type(I) \
       	T##_opening(const abstract::non_vectorial_image<I>& input, \
       		       const abstract::neighborhood<N>& Ng, \
      -		       const attr_lambda_type(T##_type<I>) lambda) \
      +		       const attr_lambda_type(T##_type<I>) &lambda) \
             { \
       	return internal::attr_opening_<I, N, T##_type<I> >(input, Ng, lambda); \
             }
      @@ -100,7 +100,7 @@
             oln_concrete_type(I) \
       	T##_closing(const abstract::non_vectorial_image<I>& input, \
       		       const abstract::neighborhood<N>& Ng, \
      -		       const attr_lambda_type(T##_type<I>) lambda) \
      +		       const attr_lambda_type(T##_type<I>) &lambda) \
             { \
       	return internal::attr_closing_<I, N, T##_type<I> >(input, Ng, lambda); \
             }
      @@ -159,6 +159,9 @@
       	xxx_closing_im_decl(dist)
       	xxx_closing_im_decl(square)
       	xxx_opening_im_decl(square)
      +	xxx_closing_im_decl(rectangle)
      +	xxx_opening_im_decl(rectangle)
      +
           }
         }
       }
      Index: olena/oln/morpho/attribute_union_find.hh
      --- olena/oln/morpho/attribute_union_find.hh Fri, 06 Feb 2004 16:02:37 +0100
      palma_g (oln/q/50_attribute_ 1.9 640)
      +++ olena/oln/morpho/attribute_union_find.hh Fri, 06 Feb 2004 17:55:37 +0100
      palma_g (oln/q/50_attribute_ 1.9 640)
      @@ -150,7 +150,7 @@
       	{
       	  precondition((parent_[x] == ACTIVE()) || (parent_[x] == INACTIVE()));
       	  precondition((parent_[y] == ACTIVE()) || (parent_[y] == INACTIVE()));
      -	  return ( (input_[x] == input_[y]) || (aux_data_[x] < lambda_));
      +	  return ( (input_[x] == input_[y]) || (aux_data_[x] < *lambda_));
       	}
      
       	void
      @@ -165,7 +165,7 @@
       	      }
       	    else
       	      {
      -		aux_data_[p] = lambda_;
      +		aux_data_[p] = *lambda_;
       	      }
       	}
      
      @@ -177,7 +177,7 @@
       		     const abstract::neighborhood<N>& Ng,
       		     const bool closing)
       	{
      -	  lambda_ = lambda;
      +	  lambda_ = &lambda;
      
       	  std::vector<point_type>	I(input_.npoints());
      
      @@ -232,7 +232,7 @@
       	const image_type & input_;
       	typename mute<T, point_type>::ret parent_;
       	typename mute<T, ATTRIBUTE>::ret aux_data_;
      -	lambda_type lambda_;
      +	const lambda_type *lambda_;
       	const env_type	env_;
             };
           }
      Index: integre/ntg/vect/vec.hh
      --- integre/ntg/vect/vec.hh Thu, 27 Nov 2003 11:26:27 +0100 burrus_n
      (oln/t/18_vec.hh 1.7.1.1 640)
      +++ integre/ntg/vect/vec.hh Mon, 09 Feb 2004 18:32:07 +0100 palma_g
      (oln/t/18_vec.hh 1.7.1.1 640)
      @@ -105,6 +105,23 @@
             typedef self				 base_type;
             typedef T					 storage_type[N];
             typedef typename typetraits<T>::cumul_type cumul_type[N];
      +
      +      static const self &sup()
      +      {
      +	static self tmp = mkSup();
      +
      +	return tmp;
      +      };
      +
      +    protected:
      +      static self mkSup()
      +      {
      +	self tmp;
      +
      +	for (unsigned i = 0; i < N; ++i)
      +	  tmp[i] = ntg_sup_val(T);
      +	return tmp;
      +      };
           };
      
         } // end of internal.
      Index: olena/oln/morpho/attributes.hh
      --- olena/oln/morpho/attributes.hh Fri, 06 Feb 2004 16:02:37 +0100 palma_g
      (oln/j/45_attributes 1.1 644)
      +++ olena/oln/morpho/attributes.hh Mon, 09 Feb 2004 18:37:42 +0100 palma_g
      (oln/j/45_attributes 1.1 644)
      @@ -27,12 +27,15 @@
      
       #ifndef ATTRIBUTES_HH
       # define ATTRIBUTES_HH
      +# include <mlc/type.hh>
      +# include <vector>
      +
       // some usefull macros
      
       // those macros should be moved into mlc
      -# define oln_exact_vt_type(T, Exact)	typename mlc::exact_vt<T, Exact>::ret
      -# define oln_2_exact_vt_type(self, T, Exact)	typename mlc::exact_vt<self<T,
      Exact>, Exact>::ret
      -# define dispatch(Fun)			return exact().Fun##_impl
      +// # define mlc_exact_vt_type(T, Exact)	typename mlc::exact_vt<T, Exact>::ret
      +// # define oln_2_exact_vt_type(self, T, Exact)	typename mlc::exact_vt<self<T,
      Exact>, Exact>::ret
      +// # define dispatch(Fun)			return exact().Fun##_impl
      
       // attribute dedicated macros
       # define attr_lambda_type(T)	typename attr_traits<T>::lambda_type
      @@ -40,38 +43,23 @@
       # define attr_value_type(T)	typename attr_traits<T>::value_type
      
       # define attr_type_decl(slef_type) \
      -      typedef oln_exact_vt_type(self_type, Exact)	exact_type; \
      +      typedef mlc_exact_vt_type(self_type, Exact)	exact_type; \
             typedef attr_value_type(exact_type)		value_type; \
             typedef attr_env_type(exact_type)			env_type; \
             typedef attr_lambda_type(exact_type)		lambda_type
      
      -
      -
      -// misc
      -namespace my {
      -
      -  int diffabs(int v1, int v2)
      +namespace oln {
      +  namespace morpho {
      +    namespace tarjan {
      +      namespace tools {
      +	// should be moved elsewhere
      +	template <class T>
      +	T diffabs(const T &v1, const T &v2)
         {
           return v1 > v2 ? v1 - v2 : v2 - v1;
         }
      
      -  template <class T>
      -  T max(T v1, T v2)
      -  {
      -    return v1 > v2 ? v1 : v2;
         }
      -
      -  template <class T>
      -  T min(T v1, T v2)
      -  {
      -    return v1 < v2 ? v1 : v2;
      -  }
      -
      -} // end of namespace my
      -
      -namespace oln {
      -  namespace morpho {
      -    namespace tarjan {
             // environment herarchy
             // not used yet
             template <class Exact>
      @@ -104,22 +92,28 @@
      
       	void operator+=(const exact_type& rhs)
       	{
      -	  dispatch(pe)(rhs);
      +	  mlc_dispatch(pe)(rhs);
       	};
      
      -	void operator=(lambda_type lambda)
      +	bool operator>=(const lambda_type &lambda) const
       	{
      -	  dispatch(equal)(lambda);
      +	  mlc_dispatch(ge)(lambda);
       	};
      
       	bool operator<(const lambda_type& lambda) const
       	{
      -	  dispatch(less)(lambda);
      +	  mlc_dispatch(less)(lambda);
       	};
      
       	bool operator!=(const lambda_type& lambda) const
       	{
      -	  dispatch(ne)(lambda);
      +	  mlc_dispatch(ne)(lambda);
      +	};
      +
      +	// impl
      +	bool ge_impl(const lambda_type &lambda) const
      +	{
      +	  return !(*this < lambda);
       	};
      
             protected:
      @@ -131,9 +125,9 @@
       	|   area    |
       	*-----------*/
      
      -      template <class T, class Exact = mlc::final>
      +      template <class T = unsigned, class Exact = mlc::final>
             class area_type:
      -	public attribute<oln_2_exact_vt_type(area_type, T, Exact)>
      +	public attribute<mlc_2_exact_vt_type(area_type, T, Exact)>
             {
             public:
       	typedef area_type<T, Exact>			self_type;
      @@ -160,11 +154,6 @@
       	    value_ += rhs.value_;
       	  };
      
      -	void equal_impl(lambda_type lambda)
      -	  {
      -	    value_ = lambda;
      -	  };
      -
       	bool less_impl(const lambda_type& lambda) const
       	  {
       	    return value_ < lambda;
      @@ -186,9 +175,9 @@
       	|  volume   |
       	*-----------*/
      
      -      template <class T, class Exact = mlc::final>
      +      template <class T = unsigned, class Exact = mlc::final>
             class volume_type:
      -	public attribute<oln_2_exact_vt_type(volume_type, T, Exact)>
      +	public attribute<mlc_2_exact_vt_type(volume_type, T, Exact)>
             {
             public:
       	typedef volume_type<T, Exact>			self_type;
      @@ -216,17 +205,17 @@
       	// interface part
       	const value_type &getValue() const
       	  {
      -	    dispatch(getValue)();
      +	    mlc_dispatch(getValue)();
       	  };
      
       	const value_type &getReflevel() const
       	  {
      -	    dispatch(getReflevel)();
      +	    mlc_dispatch(getReflevel)();
       	  };
      
       	const value_type &getArea() const
       	  {
      -	    dispatch(getArea)();
      +	    mlc_dispatch(getArea)();
       	  };
      
       	// impl part
      @@ -245,14 +234,9 @@
       	    return area_;
       	  };
      
      -	void equal_impl(lambda_type lambda)
      -	  {
      -	    value_ = lambda;
      -	  };
      -
       	void pe_impl(const volume_type& rhs)
       	  {
      -	    value_ += rhs.getValue() + area_ * my::diffabs(reflevel_,
      rhs.getReflevel());
      +	    value_ += rhs.getValue() + area_ * tools::diffabs(reflevel_,
      rhs.getReflevel());
       	    area_ += rhs.getArea();
       	  };
      
      @@ -276,9 +260,9 @@
       	|  height   |
       	*-----------*/
      
      -      template <class T, class Exact = mlc::final>
      +      template <class T = unsigned, class Exact = mlc::final>
             class height_type:
      -	public attribute<oln_2_exact_vt_type(height_type, T, Exact)>
      +	public attribute<mlc_2_exact_vt_type(height_type, T, Exact)>
             {
             public:
       	typedef height_type<T, Exact>			self_type;
      @@ -297,13 +281,13 @@
       		      const oln_point_type(I)& p,
       		      const env_type&):
       	  reflevel_(input[p]),
      -	  value_(0)
      +	  value_(ntg_zero_val(value_type))
       	  {
       	  };
      
       	const value_type &getReflevel() const
       	  {
      -	    dispatch(getReflevel)();
      +	    mlc_dispatch(getReflevel)();
       	  };
      
       	// impl part
      @@ -312,14 +296,9 @@
       	    return reflevel_;
       	  };
      
      -	void equal_impl(lambda_type lambda)
      -	  {
      -	    value_ = lambda;
      -	  };
      -
       	void pe_impl(const height_type& rhs)
       	  {
      -	    value_ = my::diffabs(reflevel_, rhs.getReflevel());
      +	    value_ = tools::diffabs(reflevel_, rhs.getReflevel());
       	  };
      
       	bool less_impl(const lambda_type& lambda) const
      @@ -342,9 +321,9 @@
             | maxvalue  |
             *-----------*/
      
      -    template <class T, class Exact = mlc::final>
      +    template <class T = unsigned, class Exact = mlc::final>
           class maxvalue_type:
      -      public attribute<oln_2_exact_vt_type(maxvalue_type, T, Exact)>
      +      public attribute<mlc_2_exact_vt_type(maxvalue_type, T, Exact)>
           {
           public:
             typedef maxvalue_type<T, Exact>			self_type;
      @@ -368,7 +347,7 @@
      
             const value_type &getValue() const
       	{
      -	  dispatch(getValue)();
      +	  mlc_dispatch(getValue)();
       	};
      
             const value_type &getValue_impl() const
      @@ -378,7 +357,7 @@
      
             void pe_impl(const maxvalue_type& rhs)
       	{
      -	  value_ = my::max(value_, rhs.getValue());
      +	  value_ = ntg::max(value_, rhs.getValue());
       	};
      
             bool less_impl(const lambda_type& lambda) const
      @@ -400,9 +379,9 @@
             | minvalue  |
             *-----------*/
      
      -    template <class T, class Exact = mlc::final>
      +    template <class T = unsigned, class Exact = mlc::final>
           class minvalue_type:
      -      public attribute<oln_2_exact_vt_type(minvalue_type, T, Exact)>
      +      public attribute<mlc_2_exact_vt_type(minvalue_type, T, Exact)>
           {
           public:
             typedef minvalue_type<T, Exact>			self_type;
      @@ -426,7 +405,7 @@
      
             const value_type &getValue() const
       	{
      -	  dispatch(getValue)();
      +	  mlc_dispatch(getValue)();
       	};
      
             const value_type &getValue_impl() const
      @@ -436,7 +415,7 @@
      
             void pe_impl(const minvalue_type& rhs)
       	{
      -	  value_ = my::min(value_, rhs.getValue());
      +	  value_ = ntg::min(value_, rhs.getValue());
       	};
      
             bool less_impl(const lambda_type& lambda) const
      @@ -460,7 +439,7 @@
      
             template <class I, class Exact = mlc::final>
             class disk_type:
      -	public attribute<oln_2_exact_vt_type(disk_type, I, Exact)>
      +	public attribute<mlc_2_exact_vt_type(disk_type, I, Exact)>
             {
             public:
       	typedef disk_type<I, Exact>			self_type;
      @@ -487,7 +466,7 @@
      
       	const pts_type &getPts() const
       	  {
      -	    dispatch(getPts)();
      +	    mlc_dispatch(getPts)();
       	  };
      
       	// impl
      @@ -500,7 +479,7 @@
       	void pe_impl(const disk_type& rhs)
       	{
       	  std::copy(rhs.getPts().begin(), rhs.getPts().end(),
      std::back_inserter(pts_));
      -	  value_ = 0;
      +	  value_ = ntg_zero_val(value_type);
       	  for (cst_iter_type p1 = pts_.begin(); p1 != pts_.end(); ++p1)
       	    for (cst_iter_type p2 = pts_.begin(); p2 != pts_.end(); ++p2)
       	      {
      @@ -537,7 +516,7 @@
      
             template <class I, class Exact = mlc::final>
             class dist_type:
      -	public attribute<oln_2_exact_vt_type(dist_type, I, Exact)>
      +	public attribute<mlc_2_exact_vt_type(dist_type, I, Exact)>
             {
             public:
       	typedef dist_type<I, Exact>			self_type;
      @@ -546,9 +525,6 @@
       	typedef oln_point_type(im_type)			point_type;
       	typedef oln_dpoint_type(im_type)		dpoint_type;
      
      -// 	typedef float value_type;
      -// 	typedef value_type lambda_type;
      -
       	dist_type()
       	{
       	};
      @@ -556,7 +532,7 @@
       	dist_type(const im_type&,
       		  const point_type& p,
       		  const env_type &) :
      -	  value_(0),
      +	  value_(ntg_zero_val(value_type)),
       	  center_(p)
       	{
       	};
      @@ -567,7 +543,7 @@
      
       	const point_type &getCenter() const
       	  {
      -	    dispatch(getCenter)();
      +	    mlc_dispatch(getCenter)();
       	  };
      
       	// impl
      @@ -580,7 +556,7 @@
       	{
       	  dpoint_type	p = center_ - rhs.getCenter();
      
      -	  value_ = 0;
      +	  value_ = ntg_zero_val(value_type);
       	  for (int i = 0; i < point_traits<point_type>::dim; ++i)
       	    value_ += p.nth(i) * p.nth(i);
       	  value_ = sqrt(value_);
      @@ -610,7 +586,7 @@
      
             template <class I, class Exact = mlc::final>
             class square_type:
      -	public attribute<oln_2_exact_vt_type(square_type, I, Exact)>
      +	public attribute<mlc_2_exact_vt_type(square_type, I, Exact)>
             {
             public:
       	typedef square_type<I, Exact>			self_type;
      @@ -619,139 +595,177 @@
       	typedef oln_point_type(im_type)			point_type;
       	typedef oln_dpoint_type(im_type)		dpoint_type;
      
      -// 	typedef unsigned value_type;
      -// 	typedef value_type lambda_type;
      +	enum {dim = point_traits<point_type>::dim};
      
       	square_type()
       	{
       	}
      
      -	square_type(const lambda_type &lambda) : value_(lambda)
      +	square_type(const lambda_type &lambda):
      +	  mins_(dim),
      +	  maxs_(dim),
      +	  value_(lambda)
      +	  {
      +	    for (int i = 0; i < point_traits<point_type>::dim; ++i)
       	  {
      +		maxs_[i] = lambda;
      +		mins_[i] = ntg_zero_val(coord);
      +	      }
       	  };
      
       	square_type(const im_type&,
       		    const point_type& p,
       		    const env_type &) :
      -	  value_(0)
      +	  mins_(dim), maxs_(dim), value_(ntg_zero_val(value_type))
       	{
      -	  min_row_ = max_row_ = p.row();
      -	  min_col_ = max_col_ = p.col();
      +	  for (int i = 0; i < dim; ++i)
      +	    mins_[i] = maxs_[i] = p.nth(i);
       	}
      
      -	int getMinRow() const
      +	int getMin(int i) const
       	  {
      -	    dispatch(getMinRow)();
      +	    mlc_dispatch(getMin)(i);
       	  };
      
      -	int getMaxRow() const
      +	int getMax(int i) const
       	  {
      -	    dispatch(getMaxRow)();
      +	    mlc_dispatch(getMax)(i);
       	  };
      
      -	int getMaxCol() const
      +	// impl
      +	int getMin_impl(int i) const
       	  {
      -	    dispatch(getMaxCol)();
      +	    precondition(i < dim);
      +	    return mins_[i];
       	  };
      
      -	int getMinCol() const
      +	int getMax_impl(int i) const
       	  {
      -	    dispatch(getMinCol)();
      +	    precondition(i < dim);
      +	    return maxs_[i];
       	  };
      
      -	// impl
      -	int getMinRow_impl() const
      +	void pe_impl(const square_type &rhs)
      +	{
      +	  for (int i = 0; i < dim; ++i)
      +	    {
      +	      mins_[i] = ntg::min(mins_[i], rhs.getMin(i));
      +	      maxs_[i] = ntg::max(maxs_[i], rhs.getMax(i));
      +	    }
      +	  value_ = maxs_[0] - mins_[0];
      +	  for (int i = 1; i < dim; ++i)
      +	    if (value_ < value_type(maxs_[i] - mins_[i]))
      +	      value_ = maxs_[i] - mins_[i];
      +	}
      +
      +	bool less_impl(const lambda_type &lambda) const
      +	{
      +	  return value_ < lambda;
      +	}
      +
      +	bool ne_impl(const lambda_type &lambda) const
       	  {
      -	    return min_row_;
      +	    return value_ != lambda;
       	  };
      
      -	int getMaxRow_impl() const
      +      protected:
      +	std::vector<coord>	mins_;
      +	std::vector<coord>	maxs_;
      +	value_type		value_;
      +      };
      +
      +
      +
      +      /*-----------*
      +	| rectangle |
      +	*-----------*/
      +      template <class I, class Exact = mlc::final>
      +      class rectangle_type:
      +	public attribute<mlc_2_exact_vt_type(rectangle_type, I, Exact)>
       	  {
      -	    return max_row_;
      +      public:
      +	typedef rectangle_type<I, Exact>		self_type;
      +	attr_type_decl(self_type);
      +	typedef abstract::image<mlc_exact_type(I)>	im_type;
      +	typedef oln_point_type(im_type)			point_type;
      +	typedef oln_dpoint_type(im_type)		dpoint_type;
      +	enum {dim = point_traits<point_type>::dim };
      +
      +	rectangle_type(const lambda_type &lambda): maxs_(dim), mins_(dim)
      +	  {
      +	    for (int i = 0; i < dim; ++i)
      +	      {
      +		mins_[i] = ntg_zero_val(value_type);
      +		maxs_[i] = lambda[i];
      +	      }
       	  };
      
      -	int getMaxCol_impl() const
      +	rectangle_type()
      +	{
      +	}
      +
      +	rectangle_type(const im_type&, const point_type &p, const env_type &):
      maxs_(dim), mins_(dim)
      +	{
      +	  for (int i = 0; i < dim; ++i)
      +	    mins_[i] = maxs_[i] = p.nth(i);
      +	}
      +
      +	value_type getMin(int i) const
       	  {
      -	    return max_col_;
      +	    mlc_dispatch(getMin)(i);
       	  };
      
      -	int getMinCol_impl() const
      +	value_type getMax(int i) const
       	  {
      -	    return min_col_;
      +	    mlc_dispatch(getMax)(i);
       	  };
      
      -	void pe_impl(const square_type& rhs)
      +	// impl
      +	value_type getMin_impl(int i) const
      +	  {
      +	    precondition(i < point_traits<point_type>::dim);
      +	    return mins_[i];
      +	  };
      +
      +	value_type getMax_impl(int i) const
      +	  {
      +	    precondition(i < point_traits<point_type>::dim);
      +	    return maxs_[i];
      +	  };
      +
      +	void pe_impl(const rectangle_type &rhs)
      +	{
      +	  for (int i = 0; i < dim; ++i)
       	{
      -	  min_row_ = my::min(min_row_, rhs.getMinRow());
      -	  min_col_ = my::min(min_col_, rhs.getMinCol());
      -	  max_row_ = my::max(max_row_, rhs.getMaxRow());
      -	  max_col_ = my::max(max_col_, rhs.getMaxCol());
      -	  value_ = my::max(max_row_ - min_row_, max_col_ - min_col_);
      +	      mins_[i] = ntg::min(mins_[i], rhs.getMin(i));
      +	      maxs_[i] = ntg::max(maxs_[i], rhs.getMax(i));
      +	    }
       	}
      
       	bool less_impl(const lambda_type& lambda) const
       	{
      -	  return value_ < lambda;
      +	  for (int i = 0; i < dim; ++i)
      +	    if ((maxs_[i] - mins_[i]) >= lambda[i])
      +	      return false;
      +	  return true;
       	}
      
       	bool ne_impl(const lambda_type &lambda) const
       	  {
      -	    return value_ != lambda;
      +	    for (int i = 0; i < dim; ++i)
      +	      if ((maxs_[i] - mins_[i]) == lambda[i])
      +		return false;
      +	    return true;
       	  };
      
             protected:
      -	value_type	value_;
      -	int		min_row_;
      -	int		max_row_;
      -	int		min_col_;
      -	int		max_col_;
      +	std::vector<value_type>	maxs_;
      +	std::vector<value_type>	mins_;
             };
      
      -
      -
      -//       /*-----------*
      -// 	| rectangle |
      -// 	*-----------*/
      -//       template <class I, class Exact = mlc::final>
      -//       struct rectangle_type
      -//       {
      -// 	typedef unsigned value_type;
      -// 	typedef std::pair<value_type,value_type> lambda_type;
      -
      -// 	value_type drow, dcol;
      -// 	int min_row, max_row, min_col, max_col;
      -
      -// 	rectangle_type()
      -// 	{
      -// 	}
      -
      -// 	template <class T>
      -// 	rectangle_type(const image2d<T>&, const point2d& p) :
      -// 	  drow(0),
      -// 	  dcol(0)
      -// 	{
      -// 	  min_row = max_row = p.row();
      -// 	  min_col = max_col = p.col();
      -// 	}
      -
      -// 	void operator+=(const rectangle_type& rhs)
      -// 	{
      -// 	  min_row = my::min(min_row, rhs.min_row);
      -// 	  min_col = my::min(min_col, rhs.min_col);
      -// 	  max_row = my::max(max_row, rhs.max_row);
      -// 	  max_col = my::max(max_col, rhs.max_col);
      -// 	  drow = max_row - min_row;
      -// 	  dcol = max_col - min_col;
      -// 	}
      -
      -// 	bool operator>=(const lambda_type& lambda) const
      -// 	{
      -// 	  return drow >= lambda.first || dcol >= lambda.second;
      -// 	}
      -//       };
      -
      -
      -// traits specialisations
      +      /*-------------------------
      +	| traits specialisations |
      +	\------------------------*/
      
             // volume traits
      @@ -826,16 +840,18 @@
       	typedef NullEnv		env_type;
             };
      
      -//       // rectangle traits
      -//       tempalte <class Exact>
      -// 	typedef unsigned value_type;
      -// 	typedef std::pair<value_type,value_type> lambda_type;
      -
      +      // rectangle traits
      +      template <class I, class Exact>
      +      struct attr_traits<rectangle_type<I, Exact> >
      +      {
      +	typedef unsigned					value_type;
      +	typedef ntg::vec<I::dim, value_type, mlc::final>	lambda_type;
      +	typedef NullEnv						env_type;
      +      };
           }
         }
       }
      
      -
       /*-----------*
         |  diamond  |
         *-----------*/
      
          prcs2git-id: 10.62
      f4a29507
  12. 06 Feb, 2004 1 commit
    • Niels van Vliet's avatar
      2004-02-05 Niels Van Vliet <niels@lrde.epita.fr> · f864c2aa
      Niels van Vliet authored
              * oln/utils/histogram.hh: Inherit from mlc_hierarchy::any.
              * value_to_point.hh: Inherit from conversion_from_type_to_type.
              * tests/utils/tests/histogram: Add namespace.
              * tests/morpho/tests/area: Add file.
      
          prcs2git-id: 10.60
      f864c2aa
  13. 29 Sep, 2003 1 commit
    • Astrid Wang's avatar
      Index: ChangeLog · 960bc371
      Astrid Wang authored
      from  Astrid Wang  <astrid@lrde.epita.fr>
      
              * configure.ac: Check for doxygen.
      
      Index: doc/ChangeLog
      from  Astrid Wang  <astrid@lrde.epita.fr>
      
              * ref/exdoc.pl,
              * ref/exdoc.config,
              * ref/exdoc.mk: New.
              * ref/doxygen.config.in: New.
      
      +2003-09-16  Astrid Wang  <astrid@lrde.epita.fr>
      +
      +       * ref/doxygen.config.in: New file.
      +
      
          prcs2git-id: doc.2
      960bc371
  14. 21 Sep, 2003 3 commits
    • Nicolas Burrus's avatar
      Index: ChangeLog · de4c2849
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
              * config/oln-local.m4: Fix swig detection.
              * configure.ac: Stop if ruby is not found. Stop if swig is not
              found.
      
          prcs2git-id: 10.21
      de4c2849
    • Nicolas Burrus's avatar
      Index: ChangeLog · 1705317f
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
              * configure.ac: Generate makefiles for swilena tests.
      
      Index: tools/swilena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
              * expand.sh: Generate makefile.swig files instead of Makefile.am.
      
              * python/Makefile: New file.
              * python/tests/Makefile.am: New file.
              * python/tests/simple1.py: New test.
      
              * ruby/Makefile: New file.
              * ruby/tests/Makefile.am: New file.
              * ruby/tests/simple1.rb: New test.
      
          prcs2git-id: 10.20
      1705317f
    • Nicolas Burrus's avatar
      Index: ChangeLog · bab24384
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
              * configure.ac: Add ruby support.
      
      Index: tools/swilena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
              * meta/swilena_ntg.i: Adjust for ruby.
              * meta/swilena_describe.i: Tweak for ruby.
      
              * expand.sh: Generate ruby source files.
      
      +2003-09-21  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +       * meta/swilena_describe.i: Add __str__ function for python.
      +
      
          prcs2git-id: 10.18
      bab24384
  15. 15 Sep, 2003 1 commit
    • Nicolas Burrus's avatar
      Index: ChangeLog · 8af85740
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* configure.ac: Improve python headers lookup.
      
      Index: tools/swilena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* meta/swilena_image.i: Copy constructor parameter is not const.
      
      +2003-09-15  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +	* expand.sh (AM_LDFLAGS): Add ZLIB_LDFLAGS.
      +	(INCLUDES): Use PYTHON_CPPFLAGS.
      
          prcs2git-id: 10.16
      8af85740
  16. 09 Sep, 2003 2 commits
    • Giovanni Palma's avatar
      Index: ChangeLog · 8c84bd83
      Giovanni Palma authored
      from  Giovanni Palma  <giovanni@lrde.epita.fr>
      
              * threshold.hh: correct the threshold construtor.
      
      Index: olena/oln/level/threshold.hh
      --- olena/oln/level/threshold.hh Thu, 07 Aug 2003 02:37:23 +0200 burrus_n
      (oln/f/15_threshold. 1.11 640)
      +++ olena/oln/level/threshold.hh Tue, 09 Sep 2003 13:45:59 +0200 palma_g
      (oln/f/15_threshold. 1.11 640)
      @@ -42,7 +42,7 @@
           public:
             threshold(const Input& threshold,
                      const Output& min = ntg_min_val(Output),
      -               const Output& max = ntg_min_val(Output)) :
      +               const Output& max = ntg_max_val(Output)) :
               m_threshold(threshold), m_min(min), m_max(max)
             {}
      
          prcs2git-id: 10.15
      8c84bd83
    • Giovanni Palma's avatar
      2003-09-09 Giovanni Palma <giovanni@lrde.epita.fr> · a6b4cd9d
      Giovanni Palma authored
      	* threshold.hh: correct the threshold construtor..
      
          prcs2git-id: 10.14
      a6b4cd9d
  17. 25 Aug, 2003 1 commit
    • Raphal Poss's avatar
      Index: ChangeLog · 4cb68774
      Raphal Poss authored
      from  Raphal Poss  <raph@lrde.epita.fr>
      
         * configure.ac: Comment out dysfunctional stuff.
      
      Index: olena/ChangeLog
      from  Raphal Poss  <raph@lrde.epita.fr>
      
         * conf/README: Add.
         * Makefile.am: Comment out dysfunctional stuff.
      
          prcs2git-id: 10.10
      4cb68774
  18. 22 Aug, 2003 1 commit
  19. 06 Aug, 2003 1 commit
    • Nicolas Burrus's avatar
      Index: ChangeLog · f44d6eb1
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
              * config/oln.m4: Remove -W for gnu compilers since they have
              painful bugs.
      
      Index: olena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
              * oln/core/image.hh: Use exact_type instead of Exact for accessing
              to traits.
      
              * tests/core/tests/image2: New test.
      
          prcs2git-id: 2003paradigm.105
      f44d6eb1
  20. 04 Aug, 2003 2 commits
    • Nicolas Burrus's avatar
      Index: ChangeLog · 8188b190
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
              * config/oln-local.m4: Fail when swig is not detected and swilena
              is enabled.
      
          prcs2git-id: 2003paradigm.101
      8188b190
    • Nicolas Burrus's avatar
      Index: ChangeLog · efa201ad
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
              * contrib/runtests: Handle new flag (COMPILE_ONLY).
      
      Index: olena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
              * oln/topo/dmap.hxx: Fix compilation with g++-3.4.
              * oln/transforms/dwt.hh: Likewise.
              * oln/transforms/wavelet_coeffs.hh: Likewise.
              * oln/transforms/fft.hh: Likewise.
              * oln/topo/combinatorial-map/internal/cmap-functor.hh: Likewise.
              * oln/topo/combinatorial-map/cmap.hh: Likewise.
              * oln/topo/inter-pixel/fwd-dir-iter.hh: Likewise.
              * oln/topo/inter-pixel/bkd-dir-iter.hh: Likewise.
              * oln/core/abstract/image_with_type.hh: Likewise.
              * oln/convert/abstract/conversion.hh: Likewise.
              * oln/core/winiter.hh: Likewise.
      
              * oln/core/abstract/window_base.hh: Fix compilation with icc.
      
          prcs2git-id: 2003paradigm.98
      efa201ad
  21. 01 Aug, 2003 3 commits
    • Sylvain Berlemont's avatar
      * configure.ac: New math test. · 0b71515d
      Sylvain Berlemont authored
              * olena/tests/math/tests/macros: New test.
      
              * olena/tests/math/Makefile.am: Adjust.
      
              * olena/oln/math/macros.hh: Fix bugs.
      
              * olena/tests/utils/tests/timer: Fix extra include files.
      
          prcs2git-id: 2003paradigm.89
      0b71515d
    • Nicolas Burrus's avatar
      Index: ChangeLog · b7436961
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
              * contrib/runtests: Check if the current test is present. Fix
              the TESTS variable handling.
      
      Index: olena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
              * tests/morpho/tests/test-reconstruction(main): Use rdata.
      
      Index: integre/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
              * tests/types/runtests: Handle the TESTS variable.
      
          prcs2git-id: 2003paradigm.87
      b7436961
    • Nicolas Burrus's avatar
      Index: ChangeLog · 88ff7d7a
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* contrib/runtests: New.
      	* Makefile.am (EXTRA_DIST): Adjust.
      
      Index: olena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      	Reorganize the testsuite.
      
      	* tests/check/Makefile.runtests: New.
      	* tests/check/Makefile.am: Adjust.
      	* tests/check/Makefile.flags: Likewise.
      	* tests/check/Makefile.check: Likewise.
      
      	* tests/arith/runtests: Remove.
      	* tests/arith/Makefile.am: Adjust.
      
      	* tests/core/runtests: Remove.
      	* tests/core/Makefile.am: Likewise.
      
      	* tests/convert/Makefile.am: Adjust.
      
      	* tests/convol/Makefile.am: Use runtests.
      	* tests/convol/slow_sum_2d_1.cc: Rename as
      	tests/convol/tests/slow_sum_2d_1.
      	* tests/convol/slow_sum_2d_2.cc: Rename as
      	tests/convol/tests/slow_sum_2d_2.
      	* tests/convol/sobel_gradient.cc: Rename as
      	tests/convol/tests/sobel_gradient.
      
      	* tests/io/Makefile.am: Use runtests.
      	* tests/io/2d.cc: Rename as...
      	* tests/io/tests/2d: ...this.
      	* tests/io/se_pass.cc: Rename as...
      	* tests/io/tests/se_pass: ...this.
      	* tests/io/se_fail.cc: Rename as...
      	* tests/io/tests/se_fail: ...this.
      	* tests/io/pretty.cc: Rename as...
      	* tests/io/tests/pretty: ...this.
      
      	* tests/level/Makefile.am: Use runtests.
      	* tests/level/cc.cc: Rename as...
      	* tests/level/tests/cc: ...this.
      	* tests/level/bin.cc: Rename as...
      	* tests/level/tests/bin: ...this.
      	* tests/level/connected.cc: Rename as...
      	* tests/level/tests/connected: ...this.
      	* tests/level/invert.cc: Rename as...
      	* tests/level/tests/invert: ...this.
      	* tests/level/set_level.cc: Rename as...
      	* tests/level/tests/set_level: ...this.
      	* tests/level/threshold.cc: Rename as...
      	* tests/level/tests/threshold: ...this.
      
      	* tests/morpho/Makefile.am: Use runtests.
      	* tests/morpho/edoc.cc: Rename as...
      	* tests/morpho/tests/edoc: ...this.
      	* tests/morpho/extrkiller.cc: Rename as...
      	* tests/morpho/tests/extrkiller: ...this.
      	* tests/morpho/reconstruction.cc: Rename as...
      	* tests/morpho/tests/reconstruction: ...this.
      
      	* tests/topo/Makefile.am: Use runtests.
      	* tests/topo/test-cmap.cc: Rename as...
      	* tests/topo/tests/test-cmap: ...this.
      	* tests/topo/test-dmap.cc: Rename as...
      	* tests/topo/tests/test-dcmap: ...this.
      	* tests/topo/test-inter-pixel.cc: Rename as...
      	* tests/topo/tests/test-inter-pixel: ...this.
      	* tests/topo/test-tarjan.cc: Rename as...
      	* tests/topo/tests/test-tarjan: ...this.
      
      	* tests/transforms/Makefile.am: Use runtests.
      	* tests/transforms/dwt.cc: Rename as...
      	* tests/transforms/tests/dwt: ...this.
      	* tests/transforms/fft.cc: Rename as...
      	* tests/transforms/tests/fft: ...this.
      
      	* tests/utils/Makefile.am: Use runtests.
      	* tests/utils/histogram.cc: Rename as...
      	* tests/utils/tests/histogram: ...this.
      	* tests/utils/stat.cc: Rename as...
      	* tests/utils/tests/stat: ...this.
      	* tests/utils/timer.cc: Rename as...
      	* tests/utils/tests/timer: ...this.
      
      +2003-08-01  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
       	* tests/check/Makefile.flags: Add new flags.
       	* tests/arith/Makefile.am: Adjust.
       	* tests/core/Makefile.am: Likewise.
      Index: integre/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* tests/check/Makefile.runtests: New.
      	* tests/check/Makefile.flags: New.
      	* tests/Makefile.am: Adjust.
      	* tests/utils/runtests: Remove.
      	* tests/utils/Makefile.am: Adjust.
      
      Index: metalic/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* tests/check/Makefile.runtests: New.
      	* tests/main/Makefile.am: Use runtests.
      	* tests/main/runtests: Remove.
      
      Index: doc/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* demo/test-reconstruction.cc: Move into
      	top_srcdir/olena/tests/morpho/tests/test-reconstruction.
      	* demo/Makefile.am: Adjust.
      
          prcs2git-id: 2003paradigm.85
      88ff7d7a
  22. 30 Jul, 2003 1 commit
    • Sylvain Berlemont's avatar
      * configure.ac: Add utils tests. · 272f5185
      Sylvain Berlemont authored
              * tests/utils/timer.cc, olena/tests/utils/stat.cc,
              olena/tests/utils/histogram.cc, olena/tests/utils/Makefile.am: Add
              new tests.
      
          prcs2git-id: 2003paradigm.69
      272f5185
  23. 25 Jul, 2003 1 commit
    • Sylvain Berlemont's avatar
      * tests/topo/test-inter-pixel.cc, tests/topo/test-cmap.cc, : Fix tests suite. · 52640ec1
      Sylvain Berlemont authored
      	* oln/basics2d.hh: Uncomment io files includes.
      
      	* oln/arith/internal/opdecls.hh, oln/level/cc.hh,
      	oln/level/compare.hh, oln/level/connected.hh, oln/level/fill.hh,
      	oln/level/invert.hh, oln/level/set_level.hh,
      	oln/level/threshold.hh, oln/topo/tarjan/union.hh,
      	oln/topo/inter-pixel/inter-pixel.hh, oln/topo/tarjan/flat-zone.hh,
      	oln/topo/combinatorial-map/cmap.hh, : Fix files to match new paradigm.
      
          prcs2git-id: 2003paradigm.24
      52640ec1
  24. 17 Jul, 2003 1 commit
    • Nicolas Burrus's avatar
      Index: ChangeLog · d4998092
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* config/oln.m4: Remove -W for gnu compilers.
      
      Index: olena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* oln/basics1d.hh, oln/basics2d.hh, oln/basics3d.hh,
      	oln/basics.hh, oln/core/apply.hh, oln/core/bkd_iter1d.hh,
      	oln/core/bkd_iter2d.hh, oln/core/bkd_iter3d.hh,
      	oln/core/traverse.hh, oln/core/fold.hh,
      	oln/core/generate.hh: Adjust.
      
      	* tests/core/tests/image1: New test.
      
      +2003-02-25  David Lesage  <david@lrde.epita.fr>
      +
      +	Major changes, redesign the image hierarchy.
      +
      +	* oln/core/image1d.hh, oln/core/image1d_size.hh,
      +	oln/core/image2d.hh, oln/core/image2d_size.hh,
      +	oln/core/image3d.hh, oln/core/image3d_size.hh,
      +	oln/core/image.hh, oln/core/imagend_size.hh: Rewrite using the
      +	new design.
      +
      +	* oln/core/pred_image.hh: Rename as...
      +	* oln/core/abstract/binary_image.hh: ...this. Rewrite
      +	using the new design.
      +
      +	* oln/core/abstract/image.hh,
      +	oln/core/abstract/image_with_dim.hh,
      +	oln/core/abstract/image_with_impl.hh,
      +	oln/core/abstract/image_with_type.hh,
      +	oln/core/impl/image_impl.hh,
      +	oln/core/impl/image_array.hh: New.
      +
      +	* oln/core/internal/image1d_data.hh,
      +	oln/core/internal/image1d.hh,
      +	oln/core/internal/image2d_data.hh,
      +	oln/core/internal/image2d.hh,
      +	oln/core/internal/image3d_data.hh,
      +	oln/core/internal/image3d.hh,
      +	oln/core/internal/real_image1d.hh,
      +	oln/core/internal/real_image2d.hh,
      +	oln/core/internal/real_image3d.hh,
      +	oln/core/regular_image.hh: Remove.
      
          prcs2git-id: 2003paradigm.8
      d4998092
  25. 12 Jul, 2003 1 commit
  26. 02 Jun, 2003 1 commit
    • Nicolas Burrus's avatar
      Index: ChangeLog · fb470b03
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
              * configure.ac: Clean CXXFLAGS detection.
      
          prcs2git-id: integre.28
      fb470b03
  27. 13 May, 2003 2 commits
    • Nicolas Burrus's avatar
      2003-05-13 Nicolas Burrus <burrus_n@lrde.epita.fr> · 5577c690
      Nicolas Burrus authored
      	* config/oln.m4: Bump version.
      	* doc/dev/build.texi: Likewise.
      
          prcs2git-id: 9.1
      5577c690
    • Nicolas Burrus's avatar
      Index: ChangeLog · f8701a19
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* configure.ac: Add a test entry for integre/tests/sanity.
      	* configure.ac: Add a test entry for metalic/tests/sanity.
      	* config/oln.m4: Add local macros for integre and metalic.
      
      Index: integre/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* ntg/all.hh, ntg/basics.hh, ntg/bin.hh, ntg/color.hh,
      	ntg/color/color.hh, ntg/color/hsi.hh, ntg/color/hsl.hh,
      	ntg/color/hsv.hh, ntg/color/nrgb.hh, ntg/color/rgb.hh,
      	ntg/color/xyz.hh, ntg/color/yiq.hh, ntg/color/yuv.hh,
      	ntg/config/math.hh, ntg/config/system.hh,
      	ntg/core/abstract_hierarchy.hh, ntg/core/behavior.hh,
      	ntg/core/contract.hh,
      	ntg/core/internal/builtins_properties.hh,
      	ntg/core/internal/global_ops.hh,
      	ntg/core/internal/global_ops_defs.hh,
      	ntg/core/internal/global_ops_traits.hh,
      	ntg/core/internal/macros.hh,
      	ntg/core/internal/optraits_builtins.hh,
      	ntg/core/internal/traits.hh,
      	ntg/core/internal/typetraits_builtins.hh,
      	ntg/core/interval.hh, ntg/core/macros.hh,
      	ntg/core/predecls.hh, ntg/core/type.hh,
      	ntg/core/type_traits.hh, ntg/core/value.hh, ntg/cplx.hh,
      	ntg/cycle.hh, ntg/enum/bin.hh, ntg/enum/builtin_bool.hh,
      	ntg/enum/optraits_builtins_bool.hh,
      	ntg/enum/typetraits_builtins_bool.hh, ntg/float.hh,
      	ntg/int.hh, ntg/range.hh, ntg/real/builtin_float.hh,
      	ntg/real/builtin_int.hh, ntg/real/builtin_properties.hh,
      	ntg/real/cycle.hh, ntg/real/int_s.hh, ntg/real/int_u.hh,
      	ntg/real/optraits_builtin_int.hh,
      	ntg/real/optraits_builtins_float.hh,
      	ntg/real/optraits_builtins_int_defs.hh, ntg/real/range.hh,
      	ntg/real/typetraits_builtin_int.hh,
      	ntg/real/typetraits_builtins_float.hh, ntg/utils/cast.hh,
      	ntg/utils/debug.hh, ntg/vect/cplx.hh,
      	ntg/vect/cplx_representation.hh, ntg/vect/vec.hh: Important
      	cleanup: adapt to Olena coding style, add comments, fix
      	headers guards, rename minor things, use new macros when
      	possible.
      
      +2003-05-13  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +	* ntg/core/internal/macros.hh: Many new macros.
      +
      +	* ntg/color/color.hh: Move name() into optraits.
      +
      +	* ntg/real/builtin_int.hh: New file.
      +	* ntg/color.hh: New file.
      +
      +	* ntg/core/internal/builtins_properties.hh: Rename as ...
      +	* ntg/real/builtin_properties.hh: ... this.
      +
      +	* ntg/real/optraits_builtins_float.hh,
      +	ntg/real/typetraits_builtins_float.hh: Merge into
      +	ntg/real/builtin_float.hh.
      +
      +	* ntg/enum/optraits_builtins_bool.hh,
      +	ntg/enum/typetraits_builtins_bool.hh: Merge into
      +	ntg/enum/builtin_bool.hh.
      +
      +	* ntg/core/internal/optraits_builtins.hh,
      +	ntg/core/internal/typetraits_builtins.hh: Remove.
      +
      +	* ntg/Makefile.am: Update consequently.
      +
      +2003-05-13  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +	* ntg/config/system.hh: Remove g++-2.95 specific directives.
      +
      +	* ntg/utils/cast.hh: Remove wrong behaviors. Don't cast into
      +	storage_type before returning values.
      +
      +	* ntg/core/internal/global_ops_traits.hh: Important changes.
      +
      +2003-05-13  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +	* tests/sanity/Makefile.am,
      +	tests/sanity/includes.test: New files.
      +
      +2003-05-10  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +	* ntg/core/behavior.hh: Rename apply methods as check.
      +
      +2003-05-09  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +	* ntg/config/system.hh: Remove g++-2.95 related code.
      +
      +2003-05-08  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      +
      +	* ntg/all.hh: Remove useless includes.
      +
      +	* ntg/color.hh: New file.
      +
       2003-05-08  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
       	* ntg/basics.hh: Add new includes.
      Index: metalic/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* tests/sanity/Makefile.am,
      	tests/sanity/includes.test: New files.
      
      Index: olena/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* oln/convol/fast_gaussian.hh, oln/convol/fast_gaussian.hxx: Fix
      	includes and namespaces.
      
      	* oln/convert/stretch.hh, oln/convert/conversion.hh,
      	oln/convert/bound.hh, oln/convert/force.hh, oln/core/dpointnd.hh,
      	oln/core/imagend_size.hh, oln/core/pointnd.hh,
      	oln/level/threshold.hh: Adapt to integre's changes.
      
      	* oln/io/pnm_write_common.hxx, oln/convert/nrgbhsi.hh: Update
      	includes.
      
      	* oln/convert/nrgbhsv.hh, oln/convert/nrgbhsl.hh: Add FIXME.
      
          prcs2git-id: integre.20
      f8701a19
  28. 08 May, 2003 1 commit
    • Nicolas Burrus's avatar
      Index: ChangeLog · ecc36b1d
      Nicolas Burrus authored
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* configure.ac: Add a test entry for integre/tests/utils.
      
      Index: doc/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      
      	* ref/ref-types.tex: Rename as ...
      	* ref/integre-ref.tex: ... this.
      	* ref/integre-ref.tex: Update.
      
      	* ref/oln-ref.tex: Minor changes.
      
      	* ref/Makefile.am: Fix html generation.
      
      Index: integre/ChangeLog
      from  Nicolas Burrus  <burrus_n@lrde.epita.fr>
      	* ntg/basics.hh: Add new includes.
      
      	* ntg/real/optraits_builtins_float.hh: Add name() methods.
      	* ntg/core/internal/traits.hh: Remove default name() method.
      	* ntg/core/interval.hh: Make name() methods public.
      
      	* ntg/real/typetraits_builtins_float.hh,
      	ntg/real/typetraits_builtins_int.hh: Remove useless typedefs.
      
      	* all.hh: Remove useless includes.
      	* ntg/real/int_s.hh, ntg/real/int_u.hh: Update includes.
      
      	* ntg/core/contract.hh: New file.
      	* ntg/Makefile.am: Update consequently.
      	* ntg/utils/debug.hh: New utilities.
      	* ntg/core/behavior.hh: Use ntg_assert.
      	* ntg/core/internal/global_ops.hh Update includes.
      	* ntg/core/internal/global_ops_defs.hh: Add an example of use
      	of the new utilities of debug.
      
      	* tests/utils/runtests, tests/utils/Makefile.am: New files.
      	* tests/utils/tests/debug1: New test.
      
          prcs2git-id: integre.19
      ecc36b1d