last-svn-commit-418-g2ae99ff Add new debug routines.

* debug/char_space_image.hh, * debug/line_info_image.hh: New. --- scribo/ChangeLog | 7 ++ scribo/debug/char_space_image.hh | 113 ++++++++++++++++++++++++++++++++++ scribo/debug/line_info_image.hh | 123 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 243 insertions(+), 0 deletions(-) create mode 100644 scribo/debug/char_space_image.hh create mode 100644 scribo/debug/line_info_image.hh diff --git a/scribo/ChangeLog b/scribo/ChangeLog index b48eaff..0f88d85 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,5 +1,12 @@ 2010-07-06 Guillaume Lazzara <z@lrde.epita.fr> + Add new debug routines. + + * debug/char_space_image.hh, + * debug/line_info_image.hh: New. + +2010-07-06 Guillaume Lazzara <z@lrde.epita.fr> + Disable some debug output. * text/clean_inplace.hh, diff --git a/scribo/debug/char_space_image.hh b/scribo/debug/char_space_image.hh new file mode 100644 index 0000000..6dc6f8f --- /dev/null +++ b/scribo/debug/char_space_image.hh @@ -0,0 +1,113 @@ +// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE) +// +// This file is part of Olena. +// +// Olena is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation, version 2 of the License. +// +// Olena 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 Olena. If not, see <http://www.gnu.org/licenses/>. +// +// As a special exception, you may use this file as part of a free +// software project 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 SCRIBO_DEBUG_CHAR_SPACE_IMAGE_HH +# define SCRIBO_DEBUG_CHAR_SPACE_IMAGE_HH + +/// \file +/// +/// \brief Draw inter character space. + +# include <mln/core/concept/image.hh> +# include <mln/core/alias/point2d.hh> +# include <mln/value/rgb8.hh> +# include <mln/data/convert.hh> + +# include <mln/draw/box.hh> +# include <mln/draw/line.hh> + +# include <mln/literal/colors.hh> + +# include <scribo/core/line_set.hh> + + +namespace scribo +{ + + namespace debug + { + + using namespace mln; + + + /// \brief Draw inter character space. + // + template <typename I, typename L> + mln_ch_value(I,value::rgb8) + char_space_image(const Image<I>& input, const line_set<L>& line, + const value::rgb8& v = literal::cyan); + + +# ifndef MLN_INCLUDE_ONLY + + + template <typename I, typename L> + mln_ch_value(I,value::rgb8) + char_space_image(const Image<I>& input, const line_set<L>& line, + const value::rgb8& v) + { + trace::entering("scribo::debug::char_space_image"); + + mln_ch_value(I,value::rgb8) output = data::convert(value::rgb8(), input); + + const component_set<L>& comps = line.components(); + for_all_lines(l, line) + { + if (! line(l).is_valid() || line(l).is_hidden() + || line(l).components().size() < 2) + continue; + + + for_all_elements(i, line(l).components()) + { + if (i == line(l).components().nelements() - 1) + continue; + + unsigned c = line(l).components()[i]; + + point2d + beg = comps(c).bbox().pmax(), + end = beg; + beg.row() = comps(c).bbox().pmin().row(); + mln::draw::line(output, beg, end, v); + beg.col() += line(l).char_space(); + end.col() += line(l).char_space(); + mln::draw::line(output, beg, end, v); + } + + } + + trace::exiting("scribo::debug::char_space_image"); + return output; + } + + +# endif // ! MLN_INCLUDE_ONLY + + } // end of namespace scribo::debug + +} // end of namespace scribo + +#endif // ! SCRIBO_DEBUG_CHAR_SPACE_IMAGE_HH diff --git a/scribo/debug/line_info_image.hh b/scribo/debug/line_info_image.hh new file mode 100644 index 0000000..1b6532b --- /dev/null +++ b/scribo/debug/line_info_image.hh @@ -0,0 +1,123 @@ +// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE) +// +// This file is part of Olena. +// +// Olena is free software: you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation, version 2 of the License. +// +// Olena 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 Olena. If not, see <http://www.gnu.org/licenses/>. +// +// As a special exception, you may use this file as part of a free +// software project 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 SCRIBO_DEBUG_LINE_INFO_IMAGE_HH +# define SCRIBO_DEBUG_LINE_INFO_IMAGE_HH + +/// \file +/// +/// Draw typographic information from lines. + +# include <mln/core/concept/image.hh> +# include <mln/core/alias/point2d.hh> +# include <mln/value/rgb8.hh> +# include <mln/data/convert.hh> + +# include <mln/draw/box.hh> +# include <mln/draw/line.hh> + +# include <mln/literal/colors.hh> + +# include <scribo/core/line_set.hh> + + +namespace scribo +{ + + namespace debug + { + + using namespace mln; + + + template <typename I, typename L> + mln_ch_value(I,value::rgb8) + line_info_image(const Image<I>& input, const line_set<L>& line); + + +# ifndef MLN_INCLUDE_ONLY + + + template <typename I, typename L> + mln_ch_value(I,value::rgb8) + line_info_image(const Image<I>& input, const line_set<L>& line) + { + trace::entering("scribo::debug::line_info_image"); + + mln_ch_value(I,value::rgb8) output = data::convert(value::rgb8(), input); + + for_all_lines(l, line) + { + if (! line(l).is_valid() || line(l).is_hidden()) + continue; + + // Bounding box. + mln::draw::box(output, line(l).bbox(), literal::green); + + // baseline + mln::draw::line(output, + point2d(line(l).baseline(), + line(l).bbox().pmin().col()), + point2d(line(l).baseline(), + line(l).bbox().pmax().col()), + literal::red); + + // baseline + mln::draw::line(output, + point2d(line(l).meanline(), + line(l).bbox().pmin().col()), + point2d(line(l).meanline(), + line(l).bbox().pmax().col()), + literal::cyan); + + // Ascent + mln::draw::line(output, + point2d(line(l).baseline() - line(l).a_height() + 1, + line(l).bbox().pmin().col()), + point2d(line(l).baseline() - line(l).a_height() + 1, + line(l).bbox().pmax().col()), + literal::violet); + + // Descent + mln::draw::line(output, + point2d(line(l).baseline() - line(l).d_height() + 1, + line(l).bbox().pmin().col()), + point2d(line(l).baseline() - line(l).d_height() + 1, + line(l).bbox().pmax().col()), + literal::orange); + } + + trace::exiting("scribo::debug::line_info_image"); + return output; + } + + +# endif // ! MLN_INCLUDE_ONLY + + } // end of namespace scribo::debug + +} // end of namespace scribo + +#endif // ! SCRIBO_DEBUG_LINE_INFO_IMAGE_HH -- 1.5.6.5
participants (1)
-
Guillaume Lazzara