1357   CalculateOpenModels(row_start_, row_end_);
 
 1362   for (
int i = row_start_; i < row_end_; i++) {
 
 1363     RowScratchRegisters &row = (*rows_)[i];
 
 1364     if (row.ri_->num_words == 0)
 
 1371     bool left_align_open = 
false;
 
 1372     bool right_align_open = 
false;
 
 1373     for (
int m = 0; m < OpenModels(i).
size(); m++) {
 
 1374       switch (OpenModels(i)[m]->justification()) {
 
 1377         default: left_align_open = right_align_open = 
true;
 
 1385       likely_start = 
true;
 
 1387       if ((left_align_open && right_align_open) ||
 
 1388           (!left_align_open && !right_align_open)) {
 
 1393       } 
else if (left_align_open) {
 
 1408       for (
int m = 0; m < OpenModels(i).
size(); m++) {
 
 1410           row.AddStartLine(OpenModels(i)[m]);
 
 1417         (*rows_)[i - 1].StrongHypotheses(&last_line_models);
 
 1421       for (
int m = 0; m < last_line_models.size(); m++) {
 
 1424           row.AddBodyLine(model);
 
 1433         (row.GetLineType() == 
LT_START && !row.UniqueStartHypothesis())) {
 
 1436       for (
int m = 0; m < all_models.size(); m++) {
 
 1438           row.AddStartLine(all_models[m]);
 
 1446       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)
bool LikelyParagraphStart(const RowScratchRegisters &before, const RowScratchRegisters &after)