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) {