399 {
400 WERD_RES_IT word_it(&words);
401 WERD_RES_IT prev_word_it(&words);
406 int16_t prev_right = -INT16_MAX;
408 int16_t gap;
409 int16_t min_gap = INT16_MAX;
410
411 for (word_it.mark_cycle_pt(); !word_it.cycled_list(); word_it.forward()) {
412 word = word_it.data();
415 if (prev_right > -INT16_MAX) {
416 gap = box.
left() - prev_right;
417 if (gap < min_gap)
418 min_gap = gap;
419 }
420 prev_right = box.
right();
421 }
422 }
423 if (min_gap < INT16_MAX) {
424 prev_right = -INT16_MAX;
425 word_it.set_to_list(&words);
426
427 for (; (prev_right == -INT16_MAX) || !word_it.at_first();
428 word_it.forward()) {
429 word = word_it.data();
432 if (prev_right > -INT16_MAX) {
433 gap = box.
left() - prev_right;
434 if (gap <= min_gap) {
435 prev_word = prev_word_it.data();
437 combo = prev_word;
438 } else {
439
440
441 copy_word =
new WERD;
442 *copy_word = *(prev_word->
word);
443
448 prev_word_it.add_before_then_move(combo);
449 }
453
454
455 delete word_it.extract();
456 } else {
457
460 }
463 } else {
464 prev_word_it = word_it;
465 }
466 }
467 prev_right = box.
right();
468 }
469 }
470 } else {
471 words.clear();
472 }
473}
void copy_on(WERD_RES *word_res)
void set_flag(WERD_FLAGS mask, bool value)
void join_on(WERD *other)
bool flag(WERD_FLAGS mask) const