checks text format options
| 1354 | } |
| 1355 | /// checks text format options |
| 1356 | void detectFormatFlags() |
| 1357 | { |
| 1358 | //CRLog::debug("detectFormatFlags() enter"); |
| 1359 | formatFlags = tftParaPerLine | tftEmptyLineDelimHeaders; // default format |
| 1360 | if ( length()<10 ) |
| 1361 | return; |
| 1362 | formatFlags = 0; |
| 1363 | avg_center = 0; |
| 1364 | int empty_lines = 0; |
| 1365 | int ident_lines = 0; |
| 1366 | int center_lines = 0; |
| 1367 | min_left = -1; |
| 1368 | max_right = -1; |
| 1369 | avg_left = 0; |
| 1370 | avg_right = 0; |
| 1371 | int pmlTagCount = 0; |
| 1372 | int i; |
| 1373 | #define MAX_PRE_STATS 1000 |
| 1374 | int left_stats[MAX_PRE_STATS]; |
| 1375 | int right_stats[MAX_PRE_STATS]; |
| 1376 | for ( i=0; i<MAX_PRE_STATS; i++ ) |
| 1377 | left_stats[i] = right_stats[i] = 0; |
| 1378 | for ( i=0; i<length(); i++ ) { |
| 1379 | LVTextFileLine * line = get(i); |
| 1380 | //CRLog::debug(" LINE: %d .. %d", line->lpos, line->rpos); |
| 1381 | if ( line->lpos == line->rpos ) { |
| 1382 | empty_lines++; |
| 1383 | } else { |
| 1384 | if ( line->lpos < MAX_PRE_STATS ) |
| 1385 | left_stats[line->lpos]++; |
| 1386 | if ( line->rpos < MAX_PRE_STATS ) |
| 1387 | right_stats[line->rpos]++; |
| 1388 | if ( min_left==-1 || line->lpos<min_left ) |
| 1389 | min_left = line->lpos; |
| 1390 | if ( max_right==-1 || line->rpos>max_right ) |
| 1391 | max_right = line->rpos; |
| 1392 | avg_left += line->lpos; |
| 1393 | avg_right += line->rpos; |
| 1394 | for (int j=line->lpos; j<line->rpos-1; j++ ) { |
| 1395 | lChar16 ch = line->text[j]; |
| 1396 | lChar16 ch2 = line->text[j+1]; |
| 1397 | if ( ch=='\\' ) { |
| 1398 | switch ( ch2 ) { |
| 1399 | case 'p': |
| 1400 | case 'x': |
| 1401 | case 'X': |
| 1402 | case 'C': |
| 1403 | case 'c': |
| 1404 | case 'r': |
| 1405 | case 'u': |
| 1406 | case 'o': |
| 1407 | case 'v': |
| 1408 | case 't': |
| 1409 | case 'n': |
| 1410 | case 's': |
| 1411 | case 'b': |
| 1412 | case 'l': |
| 1413 | case 'a': |