27 #ifndef SCRIBO_TEXT_EXTRACT_LINES_WO_MERGE_HH
28 # define SCRIBO_TEXT_EXTRACT_LINES_WO_MERGE_HH
35 # include <mln/core/concept/image.hh>
37 # include <scribo/core/def/lbl_type.hh>
38 # include <scribo/core/line_set.hh>
39 # include <scribo/core/document.hh>
41 # include <scribo/primitive/extract/components.hh>
43 # include <scribo/primitive/link/merge_double_link.hh>
44 # include <scribo/primitive/link/internal/dmax_width_and_height.hh>
45 # include <scribo/primitive/link/with_single_left_link_dmax_ratio.hh>
46 # include <scribo/primitive/link/with_single_right_link_dmax_ratio.hh>
48 # include <scribo/filter/objects_small.hh>
50 # include <scribo/primitive/group/apply.hh>
51 # include <scribo/primitive/group/from_single_link.hh>
53 # include <scribo/filter/object_links_bbox_h_ratio.hh>
55 # include <scribo/text/merging.hh>
76 template <
typename I,
typename N>
77 line_set<mln_ch_value(I,scribo::def::lbl_type)>
84 template <
typename I,
typename N>
85 line_set<mln_ch_value(I,scribo::def::lbl_type)>
91 template <
typename L,
typename N>
92 line_set<mln_ch_value(L,scribo::def::lbl_type)>
98 template <
typename L,
typename N>
99 line_set<mln_ch_value(L,scribo::def::lbl_type)>
103 # ifndef MLN_INCLUDE_ONLY
106 template <
typename L,
typename N>
107 line_set<mln_ch_value(L,scribo::def::lbl_type)>
110 mln_precondition(doc.is_valid());
116 template <typename L, typename N>
117 line_set<mln_ch_value(L,scribo::def::lbl_type)>
121 mln_precondition(doc.is_valid());
126 template <
typename I,
typename N>
127 line_set<mln_ch_value(I,scribo::def::lbl_type)>
135 template <typename I, typename N>
136 line_set<mln_ch_value(I,scribo::def::lbl_type)>
138 const mln_ch_value(I,
bool)& separators)
140 mln_trace(
"scribo::text::extract_lines_wo_merge");
142 const I& input =
exact(input_);
143 const N& nbh =
exact(nbh_);
145 mln_precondition(input.is_valid());
146 mln_precondition(nbh.is_valid());
150 scribo::def::lbl_type ncomps;
152 comps = scribo::primitive::extract::
components(input, nbh, ncomps);
158 if (exact(separators).is_valid())
159 comps.add_separators(separators);
163 left_link = primitive::link::with_single_left_link_dmax_ratio(
165 primitive::link::internal::dmax_default(1),
169 right_link = primitive::link::with_single_right_link_dmax_ratio(
171 primitive::link::internal::dmax_default(1),
176 merged_links = primitive::link::merge_double_link(left_link,
180 object_links<L> hratio_filtered_links
184 groups = primitive::group::from_single_link(hratio_filtered_links);
186 line_set<L> lines(groups);
191 # endif // ! MLN_INCLUDE_ONLY
197 #endif // ! SCRIBO_TEXT_EXTRACT_LINES_WO_MERGE_HH