8 "Use large space at start and end of rows");
10 "Ensure gaps not less than 2quanta wide");
38 STATS xht_stats (0, 128);
43 row_it.set_to_list (block->
get_rows ());
52 for (row_it.mark_cycle_pt (); !row_it.cycled_list (); row_it.forward ()) {
58 start_of_row = blob_it.data ()->bounding_box ().left ();
59 end_of_row = blob_it.data_relative (-1)->bounding_box ().right ();
60 if (min_left > start_of_row)
61 min_left = start_of_row;
62 if (max_right < end_of_row)
63 max_right = end_of_row;
66 if ((total_rows < 3) || (min_left >= max_right)) {
68 min_left = max_right = 0;
71 bucket_size = (
inT16) floor (xht_stats.
median () + 0.5) / 2;
72 map_max = (max_right - min_left) / bucket_size;
74 for (i = 0; i <= map_max; i++)
77 for (row_it.mark_cycle_pt (); !row_it.cycled_list (); row_it.forward ()) {
81 blob_it.mark_cycle_pt ();
83 prev_blob_box = blob_box;
86 gap_width = blob_box.
left () - min_left;
89 max_quantum = (blob_box.
left () - min_left) / bucket_size;
90 for (i = 0; i <= max_quantum; i++)
94 while (!blob_it.cycled_list ()) {
96 gap_width = blob_box.
left () - prev_blob_box.
right ();
100 (prev_blob_box.
right () - min_left) / bucket_size;
101 max_quantum = (blob_box.
left () - min_left) / bucket_size;
102 for (i = min_quantum; i <= max_quantum; i++)
105 prev_blob_box = blob_box;
109 gap_width = max_right - prev_blob_box.
right ();
113 (prev_blob_box.
right () - min_left) / bucket_size;
114 for (i = min_quantum; i <= map_max; i++)
120 for (i = 0; i <= map_max; i++) {
121 if (map[i] > total_rows / 2) {
124 (map[i + 1] <= total_rows / 2)) ||
126 (map[i - 1] <= total_rows / 2)) ||
129 (map[i - 1] <= total_rows / 2) &&
130 (map[i + 1] <= total_rows / 2)))) {
160 min_quantum = (left - min_left) / bucket_size;
161 max_quantum = (right - min_left) / bucket_size;
162 for (i = min_quantum; (!tab_found && (i <= max_quantum)); i++)
163 if (map[i] > total_rows / 2)