1370 CalculateOpenModels(row_start_, row_end_);
1375 for (
int i = row_start_; i < row_end_; i++) {
1376 RowScratchRegisters &row = (*rows_)[i];
1377 if (row.ri_->num_words == 0)
1384 bool left_align_open =
false;
1385 bool right_align_open =
false;
1386 for (
int m = 0; m < OpenModels(i).
size(); m++) {
1387 switch (OpenModels(i)[m]->justification()) {
1390 default: left_align_open = right_align_open =
true;
1398 likely_start =
true;
1400 if ((left_align_open && right_align_open) ||
1401 (!left_align_open && !right_align_open)) {
1402 likely_start = LikelyParagraphStart((*rows_)[i - 1], row,
1404 LikelyParagraphStart((*rows_)[i - 1], row,
1406 }
else if (left_align_open) {
1407 likely_start = LikelyParagraphStart((*rows_)[i - 1], row,
1410 likely_start = LikelyParagraphStart((*rows_)[i - 1], row,
1421 for (
int m = 0; m < OpenModels(i).
size(); m++) {
1423 row.AddStartLine(OpenModels(i)[m]);
1430 (*rows_)[i - 1].StrongHypotheses(&last_line_models);
1434 for (
int m = 0; m < last_line_models.size(); m++) {
1437 row.AddBodyLine(model);
1446 (row.GetLineType() ==
LT_START && !row.UniqueStartHypothesis())) {
1449 for (
int m = 0; m < all_models.size(); m++) {
1451 row.AddStartLine(all_models[m]);
1459 CalculateOpenModels(i + 1, row_end_);
bool ValidFirstLine(const GenericVector< RowScratchRegisters > *rows, int row, const ParagraphModel *model)
void NonCenteredModels(SetOfModels *models)
GenericVectorEqEq< const ParagraphModel * > SetOfModels
bool ValidBodyLine(const GenericVector< RowScratchRegisters > *rows, int row, const ParagraphModel *model)