milena r1196: Add mesh.hh in mln/draw

URL: https://svn.lrde.epita.fr/svn/oln/trunk/milena ChangeLog: 2007-09-28 Guillaume Duhamel <guillaume.duhamel@lrde.epita.fr> Add mesh.hh in mln/draw. * mesh.hh: Draw a mesh_image into an image. --- mesh.hh | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) Index: trunk/milena/mln/draw/mesh.hh =================================================================== --- trunk/milena/mln/draw/mesh.hh (revision 0) +++ trunk/milena/mln/draw/mesh.hh (revision 1196) @@ -0,0 +1,100 @@ +// 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. + +#ifndef MLN_DRAW_MESH_HH +# define MLN_DRAW_MESH_HH + +/*! \file mln/draw/mesh.hh + * + * \brief Draw an image of type mesh_image into anothor kind of image. + * + */ + +# include <mln/pw/image.hh> +# include <mln/level/fill.hh> +# include <mln/draw/line.hh> +# include <mln/core/mesh_p.hh> +# include <mln/core/mesh_image.hh> + +namespace mln +{ + namespace draw + { + + template <typename I, typename P> + void + mesh(Image<I>& ima, const mesh_p<P>& m, + mln_value(I) node_v, + mln_value(I) link_v); + + template <typename I, typename P, typename V> + void + mesh(Image<I>& ima, const mesh_image<P, V>& mesh); + +# ifndef MLN_INCLUDE_ONLY + + template <typename I, typename P> + void + mesh(Image<I>& ima, const mesh_p<P>& m, + mln_value(I) node_v, + mln_value(I) link_v) + { + level::fill(ima, 0); + + for (unsigned i = 0; i < m.gr_.nb_link_; ++i) + line (exact(ima), + m.loc_[m.gr_.links_[i]->node1], + m.loc_[m.gr_.links_[i]->node2], + link_v); + + for (unsigned i = 0; i < m.gr_.nb_node_; ++i) + exact(ima)(m.loc_[i]) = node_v; + } + + template <typename I, typename P, typename V> + void + mesh(Image<I>& ima, const mesh_image<P, V>& mesh) + { + level::fill(ima, 0); + + for (unsigned i = 0; i < mesh.domain().gr_.nb_link_; ++i) + line (exact(ima), + mesh.access_location_link_node1 (i), + mesh.access_location_link_node2 (i), + 1); + + for (unsigned i = 0; i < mesh.domain().gr_.nb_node_; ++i) + exact(ima)(mesh.domain().loc_[i]) = mesh.data_values ()[i]; + } + +# endif // ! MLN_INCLUDE_ONLY + + } // end of draw + +} // end of mln + +#endif // MLN_MESH_PSITE_HH
participants (1)
-
Guillaume Duhamel