last-svn-commit-415-gee180d6 Add text::look_like_text_lines.

* scribo/text/look_like_text_lines.hh: New. * scribo/text/merging.hh: Make use of text::look_like_text_lines. --- scribo/ChangeLog | 42 ++++++++---- scribo/text/look_like_text_lines.hh | 116 +++++++++++++++++++++++++++++++++++ scribo/text/merging.hh | 16 +----- 3 files changed, 145 insertions(+), 29 deletions(-) create mode 100644 scribo/text/look_like_text_lines.hh diff --git a/scribo/ChangeLog b/scribo/ChangeLog index dc0ac1a..ebab20e 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,35 +1,49 @@ +2010-07-06 Guillaume Lazzara <z@lrde.epita.fr> + + Add text::look_like_text_lines. + + * scribo/text/look_like_text_lines.hh: New. + + * scribo/text/merging.hh: Make use of + text::look_like_text_lines. + 2010-06-30 Arthur Crepin-Leblond <crepin@stockholm.lrde.epita.fr> Extended XML mode support. - + * scribo/demo/viewer/Makefile.am - + * demo/viewer/image_region.cc, * viewer/image_region.hh, - * viewer/image_region.hxx: Change regions depths to have a hierarchy. - + * viewer/image_region.hxx: Change regions depths to have a + hierarchy. + * demo/viewer/image_scene.cc, * demo/viewer/image_scene.hh: Change mouse click behaviour. - + * demo/viewer/key_widget.cc, - * demo/viewer/key_widget.hh: Add new items (text line and paragraph) - + * demo/viewer/key_widget.hh: Add new items (text line and + paragraph) + * demo/viewer/viewer.cc, - * demo/viewer/viewer.hh: Chnage XML parsing to support extended format. + * demo/viewer/viewer.hh: Change XML parsing to support extended + format. - * scribo/demo/viewer/common.hh: Add new RegionId's. + * scribo/demo/viewer/common.hh: Add new RegionId's. 2010-06-30 Arthur Crepin-Leblond <crepin@stockholm.lrde.epita.fr> New features in Qt interface. - + * demo/viewer/browser_widget.hh: Improve picture browser. - * demo/viewer/step_widget.cc: Add a "step chooser" to load several XML files related to one picture. + + * demo/viewer/step_widget.cc: Add a "step chooser" to load several + XML files related to one picture. 2010-06-30 Arthur Crepin-Leblond <crepin@stockholm.lrde.epita.fr> Change XML output (replacement of html markups). - + * io/xml/save.hh: Add internal::html_markups_replace. 2010-06-29 Guillaume Lazzara <z@lrde.epita.fr> @@ -73,8 +87,8 @@ * io/xml/save_text_lines.hh: Rename as... * io/xml/save.hh: ...this. - - * src/pbm_text_in_doc.cc: Update call to io::xml::save. + + * src/pbm_text_in_doc.cc: Update call to io::xml::save. 2010-06-18 green <jacquelet@lrde.epita.fr> diff --git a/scribo/text/look_like_text_lines.hh b/scribo/text/look_like_text_lines.hh new file mode 100644 index 0000000..2ced7ce --- /dev/null +++ b/scribo/text/look_like_text_lines.hh @@ -0,0 +1,116 @@ +// 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_TEXT_LOOK_LIKE_TEXT_LINES_HH +# define SCRIBO_TEXT_LOOK_LIKE_TEXT_LINES_HH + +/// \file +/// +/// \brief Set line type to line::Text according to criterion. + +# include <scribo/core/line_info.hh> + +namespace scribo +{ + + namespace text + { + + using namespace mln; + + /// \brief Set line type to line::Text according to criterion. + // + template <typename L> + line_set<L> + look_like_text_lines(const scribo::line_set<L>& l); + + /// \overload + /// Inplace version. + // + template <typename L> + void + look_like_text_lines_inplace(scribo::line_set<L>& line); + + +# ifndef MLN_INCLUDE_ONLY + + + namespace internal + { + + template <typename L> + inline + bool looks_like_a_text_line(const scribo::line_info<L>& l) + { + return + l.card() >= 3 // at least 3 components + && l.bbox().height() > 10 // and minimal height + && l.bbox().width() > l.bbox().height(); // and more horizontal-like than vertical + // FIXME: Later on, add a criterion based on the number + // of alignments (on top and bot). + } + + } // end of namespace scribo::text::namespace + + + + // Facades + + template <typename L> + inline + void + look_like_text_lines_inplace(scribo::line_set<L>& line) + { + trace::entering("scribo::text::look_like_text_lines_inplace"); + + for_all_lines(l, line) + if (internal::looks_like_a_text_line(line(l))) + line(l).update_type(line::Text); + + trace::exiting("scribo::text::look_like_text_lines_inplace"); + } + + template <typename L> + inline + line_set<L> + look_like_text_lines(const scribo::line_set<L>& l) + { + trace::entering("scribo::text::look_like_text_lines"); + line_set<L> output = l.duplicate(); + + look_like_text_lines_inplace(output); + + trace::exiting("scribo::text::look_like_text_lines"); + return output; + } + + +# endif // ! MLN_INCLUDE_ONLY + + } // end of namespace scribo::text + +} // end of namespace scribo + +#endif // ! SCRIBO_TEXT_LOOK_LIKE_TEXT_LINES_HH diff --git a/scribo/text/merging.hh b/scribo/text/merging.hh index 8efd210..c7ad3b3 100644 --- a/scribo/text/merging.hh +++ b/scribo/text/merging.hh @@ -57,7 +57,7 @@ #include <mln/data/wrap.hh> #include <mln/util/timer.hh> - +#include <text/look_like_text_lines.hh> namespace scribo @@ -94,20 +94,6 @@ namespace scribo using value::int_u8; - - template <typename L> - inline - bool looks_like_a_text_line(const scribo::line_info<L>& l) - { - return - l.card() >= 3 // at least 3 components - && l.bbox().height() > 10 // and minimal height - && l.bbox().width() > l.bbox().height(); // and more horizontal-like than vertical - // FIXME: Later on, add a criterion based on the number - // of alignments (on top and bot). - } - - template <typename T, typename T2> void draw_box(image2d<T>& input, const box2d& b, T2 l) { -- 1.5.6.5
participants (1)
-
Guillaume Lazzara