milena r1078: add to_vec_p(win, p_center)

URL: https://svn.lrde.epita.fr/svn/oln/trunk/milena ChangeLog: 2007-09-06 Matthieu Garrigues <garrigues.matthieu@lrde.epita.fr> add to_vec_p(win, p_center) * mln/convert/to_vec_p.hh: add the convertion function * sandbox/garrigues/TODO: . * tests/to_vec_p.cc: New. 1d and 2d test mln/convert/to_vec_p.hh | 17 ++++++++++++ sandbox/garrigues/TODO | 2 + tests/to_vec_p.cc | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) Index: trunk/milena/tests/to_vec_p.cc =================================================================== --- trunk/milena/tests/to_vec_p.cc (revision 0) +++ trunk/milena/tests/to_vec_p.cc (revision 1078) @@ -0,0 +1,64 @@ +// Copyright (C) 2007 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, 51 Franklin Street, Fifth Floor, +// 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. + +/*! \file tests/point1d.cc + * + * \brief Tests on mln::point1d. + */ + +#include <mln/core/point1d.hh> +#include <mln/core/point2d.hh> +#include <mln/core/vec_p.hh> + +#include <mln/core/win/segment1d.hh> +#include <mln/core/win/rectangle2d.hh> + +#include <mln/convert/to_vec_p.hh> + +int main() +{ + using namespace mln; + + typedef vec_p<point1d> vec1d; + point1d p1 = make::point1d(6); + win::segment1d win1d(5); + vec1d v1(convert::to_vec_p(win1d, p1)); + + for (int i=0; i < v1.npoints(); i++) + std::cout << (v1[i]); + + std::cout << "\n"; + + typedef vec_p<point2d> vec2d; + point2d p2 = make::point2d(10,10); + win::rectangle2d win2d(3, 3); + vec2d v2(convert::to_vec_p(win2d, p2)); + + for (int i=0; i < v2.npoints(); i++) + std::cout << (v2[i]); + +} Index: trunk/milena/mln/convert/to_vec_p.hh =================================================================== --- trunk/milena/mln/convert/to_vec_p.hh (revision 1077) +++ trunk/milena/mln/convert/to_vec_p.hh (revision 1078) @@ -47,6 +47,11 @@ vec_p<mln_point(S)> to_vec_p(const Point_Set<S>& pset); + /// Convert a window \p win with a point \p p into a vec_p (point set vector). + template <typename W> + vec_p<mln_point(W)> to_vec_p(const Window<W>& win, const mln_point(W) p); + + # ifndef MLN_INCLUDE_ONLY template <typename S> @@ -61,6 +66,18 @@ return v; } + template <typename W> + vec_p<mln_point(W)> to_vec_p(const Window<W>& win, const mln_point(W) p_center) + { + vec_p<mln_point(W)> v; + mln_qiter(W) dp(win, p_center); + + v.reserve(exact(win).ndpoints()); + + for_all(dp) + v.append(dp); + return v; + } # endif // ! MLN_INCLUDE_ONLY } // end of namespace mln::convert Index: trunk/milena/sandbox/garrigues/TODO =================================================================== --- trunk/milena/sandbox/garrigues/TODO (revision 1077) +++ trunk/milena/sandbox/garrigues/TODO (revision 1078) @@ -13,7 +13,9 @@ C R core/w_window1d_float.hh C R core/w_window1d_int.hh + C R geom/size1d.hh + C R make/box1d.hh C R make/dpoint1d.hh C R make/point1d.hh
participants (1)
-
Matthieu Garrigues