Mercurial > mplayer.hg
comparison subreader.c @ 10916:c36db88bfbc4
Subtitle alignment & smart splitting by Salvatore Falco
author | henry |
---|---|
date | Sun, 21 Sep 2003 13:20:06 +0000 |
parents | 6c56b4aff706 |
children | fc2cfb994784 |
comparison
equal
deleted
inserted
replaced
10915:230d73616bbc | 10916:c36db88bfbc4 |
---|---|
809 || (strstr(directive, "RDC") != NULL) | 809 || (strstr(directive, "RDC") != NULL) |
810 || (strstr(directive, "RLB") != NULL) | 810 || (strstr(directive, "RLB") != NULL) |
811 || (strstr(directive, "RLG") != NULL)) { | 811 || (strstr(directive, "RLG") != NULL)) { |
812 continue; | 812 continue; |
813 } | 813 } |
814 if (strstr(directive, "JL") != NULL) { | |
815 current->alignment = SUB_ALIGNMENT_HLEFT; | |
816 } else if (strstr(directive, "JR") != NULL) { | |
817 current->alignment = SUB_ALIGNMENT_HRIGHT; | |
818 } else { | |
819 current->alignment = SUB_ALIGNMENT_HCENTER; | |
820 } | |
814 strcpy(line2, line1); | 821 strcpy(line2, line1); |
815 p = line2; | 822 p = line2; |
816 } | 823 } |
817 for (q = line1; (!eol(*p)) && (current->lines + 1 < SUB_MAX_TEXT); | 824 for (q = line1; (!eol(*p)) && (current->lines < SUB_MAX_TEXT); ++p) { |
818 ++p) { | |
819 switch (*p) { | 825 switch (*p) { |
820 case '{': | 826 case '{': |
821 comment++; | 827 comment++; |
822 break; | 828 break; |
823 case '}': | 829 case '}': |
1264 #ifdef USE_SORTSUB | 1270 #ifdef USE_SORTSUB |
1265 if(!sub_num || (first[sub_num - 1].start <= sub->start)){ | 1271 if(!sub_num || (first[sub_num - 1].start <= sub->start)){ |
1266 first[sub_num].start = sub->start; | 1272 first[sub_num].start = sub->start; |
1267 first[sub_num].end = sub->end; | 1273 first[sub_num].end = sub->end; |
1268 first[sub_num].lines = sub->lines; | 1274 first[sub_num].lines = sub->lines; |
1275 first[sub_num].alignment = sub->alignment; | |
1269 for(i = 0; i < sub->lines; ++i){ | 1276 for(i = 0; i < sub->lines; ++i){ |
1270 first[sub_num].text[i] = sub->text[i]; | 1277 first[sub_num].text[i] = sub->text[i]; |
1271 } | 1278 } |
1272 if (previous_sub_end){ | 1279 if (previous_sub_end){ |
1273 first[sub_num - 1].end = previous_sub_end; | 1280 first[sub_num - 1].end = previous_sub_end; |
1276 } else { | 1283 } else { |
1277 for(j = sub_num - 1; j >= 0; --j){ | 1284 for(j = sub_num - 1; j >= 0; --j){ |
1278 first[j + 1].start = first[j].start; | 1285 first[j + 1].start = first[j].start; |
1279 first[j + 1].end = first[j].end; | 1286 first[j + 1].end = first[j].end; |
1280 first[j + 1].lines = first[j].lines; | 1287 first[j + 1].lines = first[j].lines; |
1288 first[j + 1].alignment = first[j].alignment; | |
1281 for(i = 0; i < first[j].lines; ++i){ | 1289 for(i = 0; i < first[j].lines; ++i){ |
1282 first[j + 1].text[i] = first[j].text[i]; | 1290 first[j + 1].text[i] = first[j].text[i]; |
1283 } | 1291 } |
1284 if(!j || (first[j - 1].start <= sub->start)){ | 1292 if(!j || (first[j - 1].start <= sub->start)){ |
1285 first[j].start = sub->start; | 1293 first[j].start = sub->start; |
1286 first[j].end = sub->end; | 1294 first[j].end = sub->end; |
1287 first[j].lines = sub->lines; | 1295 first[j].lines = sub->lines; |
1296 first[j].alignment = sub->alignment; | |
1288 for(i = 0; i < SUB_MAX_TEXT; ++i){ | 1297 for(i = 0; i < SUB_MAX_TEXT; ++i){ |
1289 first[j].text[i] = sub->text[i]; | 1298 first[j].text[i] = sub->text[i]; |
1290 } | 1299 } |
1291 if (previous_sub_end){ | 1300 if (previous_sub_end){ |
1292 first[j].end = first[j - 1].end; | 1301 first[j].end = first[j - 1].end; |
1469 int ls; | 1478 int ls; |
1470 memset(&second[sub_num + j], '\0', sizeof(subtitle)); | 1479 memset(&second[sub_num + j], '\0', sizeof(subtitle)); |
1471 second[sub_num + j].start = first[sub_first + j].start; | 1480 second[sub_num + j].start = first[sub_first + j].start; |
1472 second[sub_num + j].end = first[sub_first + j].end; | 1481 second[sub_num + j].end = first[sub_first + j].end; |
1473 second[sub_num + j].lines = first[sub_first + j].lines; | 1482 second[sub_num + j].lines = first[sub_first + j].lines; |
1483 second[sub_num + j].alignment = first[sub_first + j].alignment; | |
1474 for (ls = 0; ls < second[sub_num + j].lines; ls++) { | 1484 for (ls = 0; ls < second[sub_num + j].lines; ls++) { |
1475 second[sub_num + j].text[ls] = strdup(first[sub_first + j].text[ls]); | 1485 second[sub_num + j].text[ls] = strdup(first[sub_first + j].text[ls]); |
1476 } | 1486 } |
1477 } | 1487 } |
1478 sub_num += sub_to_add + 1; | 1488 sub_num += sub_to_add + 1; |
1485 // subs. | 1495 // subs. |
1486 second = (subtitle *) realloc(second, (sub_num + 1) * sizeof(subtitle)); | 1496 second = (subtitle *) realloc(second, (sub_num + 1) * sizeof(subtitle)); |
1487 memset(&second[sub_num], '\0', sizeof(subtitle)); | 1497 memset(&second[sub_num], '\0', sizeof(subtitle)); |
1488 second[sub_num].start = local_start; | 1498 second[sub_num].start = local_start; |
1489 second[sub_num].end = local_end; | 1499 second[sub_num].end = local_end; |
1500 second[sub_num].alignment = SUB_ALIGNMENT_HCENTER; | |
1490 n_max = (lines_to_add < SUB_MAX_TEXT) ? lines_to_add : SUB_MAX_TEXT; | 1501 n_max = (lines_to_add < SUB_MAX_TEXT) ? lines_to_add : SUB_MAX_TEXT; |
1491 for (i = 0, j = 0; j < n_max; ++j) { | 1502 for (i = 0, j = 0; j < n_max; ++j) { |
1492 if (placeholder[counter][j] != -1) { | 1503 if (placeholder[counter][j] != -1) { |
1493 int lines = first[placeholder[counter][j]].lines; | 1504 int lines = first[placeholder[counter][j]].lines; |
1494 for (ls = 0; ls < lines; ++ls) { | 1505 for (ls = 0; ls < lines; ++ls) { |