1408 CalculateOpenModels(row_start_, row_end_);
1413 for (
int i = row_start_; i < row_end_; i++) {
1414 RowScratchRegisters &row = (*rows_)[i];
1415 if (row.ri_->num_words == 0) {
1423 bool left_align_open =
false;
1424 bool right_align_open =
false;
1425 for (
auto &m : OpenModels(i)) {
1426 switch (m->justification()) {
1428 left_align_open =
true;
1431 right_align_open =
true;
1434 left_align_open = right_align_open =
true;
1442 likely_start =
true;
1444 if ((left_align_open && right_align_open) || (!left_align_open && !right_align_open)) {
1447 }
else if (left_align_open) {
1460 for (
unsigned m = 0; m < OpenModels(i).size(); m++) {
1462 row.AddStartLine(OpenModels(i)[m]);
1469 (*rows_)[i - 1].StrongHypotheses(&last_line_models);
1473 for (
auto model : last_line_models) {
1475 row.AddBodyLine(model);
1485 (row.GetLineType() ==
LT_START && !row.UniqueStartHypothesis())) {
1488 for (
auto &all_model : all_models) {
1490 row.AddStartLine(all_model);
1498 CalculateOpenModels(i + 1, row_end_);
std::vector< const ParagraphModel * > SetOfModels
bool ValidBodyLine(const std::vector< RowScratchRegisters > *rows, int row, const ParagraphModel *model)
bool ValidFirstLine(const std::vector< RowScratchRegisters > *rows, int row, const ParagraphModel *model)
void NonCenteredModels(SetOfModels *models)