Mercurial > mplayer.hg
comparison libass/ass_parse.c @ 34011:88eebbbbd6a0
Update included libass copy to 0.9.13 release.
Besides a license change to BSD license and other (minor?) fixes,
this fixes possible crashes with the latest (2.4.6?) freetype release.
author | reimar |
---|---|
date | Sun, 11 Sep 2011 10:33:13 +0000 |
parents | ac6e48baa03d |
children | 6e7f60f6f9d4 |
comparison
equal
deleted
inserted
replaced
34010:1930c0a745df | 34011:88eebbbbd6a0 |
---|---|
357 if (mystrtod(&p, &val)) | 357 if (mystrtod(&p, &val)) |
358 render_priv->state.hspacing = | 358 render_priv->state.hspacing = |
359 render_priv->state.hspacing * (1 - pwr) + val * pwr; | 359 render_priv->state.hspacing * (1 - pwr) + val * pwr; |
360 else | 360 else |
361 render_priv->state.hspacing = render_priv->state.style->Spacing; | 361 render_priv->state.hspacing = render_priv->state.style->Spacing; |
362 } else if (mystrcmp(&p, "fs+")) { | |
363 double val; | |
364 if (mystrtod(&p, &val)) { | |
365 val = render_priv->state.font_size + pwr * val; | |
366 } else | |
367 val = render_priv->state.style->FontSize; | |
368 if (render_priv->state.font) | |
369 change_font_size(render_priv, val); | |
370 } else if (mystrcmp(&p, "fs-")) { | |
371 double val; | |
372 if (mystrtod(&p, &val)) | |
373 val = render_priv->state.font_size - pwr * val; | |
374 else | |
375 val = render_priv->state.style->FontSize; | |
376 if (render_priv->state.font) | |
377 change_font_size(render_priv, val); | |
362 } else if (mystrcmp(&p, "fs")) { | 378 } else if (mystrcmp(&p, "fs")) { |
363 double val; | 379 double val; |
364 if (mystrtod(&p, &val)) | 380 if (mystrtod(&p, &val)) |
365 val = render_priv->state.font_size * (1 - pwr) + val * pwr; | 381 val = render_priv->state.font_size * (1 - pwr) + val * pwr; |
366 else | 382 else |
485 if (v != 0) | 501 if (v != 0) |
486 v = 3 - v; | 502 v = 3 - v; |
487 val = ((val - 1) % 3) + 1; // horizontal alignment | 503 val = ((val - 1) % 3) + 1; // horizontal alignment |
488 val += v * 4; | 504 val += v * 4; |
489 ass_msg(render_priv->library, MSGL_DBG2, "align %d", val); | 505 ass_msg(render_priv->library, MSGL_DBG2, "align %d", val); |
490 render_priv->state.alignment = val; | 506 if ((render_priv->state.parsed_tags & PARSED_A) == 0) { |
507 render_priv->state.alignment = val; | |
508 render_priv->state.parsed_tags |= PARSED_A; | |
509 } | |
491 } else | 510 } else |
492 render_priv->state.alignment = | 511 render_priv->state.alignment = |
493 render_priv->state.style->Alignment; | 512 render_priv->state.style->Alignment; |
494 } else if (mystrcmp(&p, "a")) { | 513 } else if (mystrcmp(&p, "a")) { |
495 int val; | 514 int val; |
496 if (mystrtoi(&p, &val) && val) | 515 if (mystrtoi(&p, &val) && val) { |
497 // take care of a vsfilter quirk: handle illegal \a8 like \a5 | 516 if ((render_priv->state.parsed_tags & PARSED_A) == 0) { |
498 render_priv->state.alignment = (val == 8) ? 5 : val; | 517 // take care of a vsfilter quirk: handle illegal \a8 like \a5 |
499 else | 518 render_priv->state.alignment = (val == 8) ? 5 : val; |
519 render_priv->state.parsed_tags |= PARSED_A; | |
520 } | |
521 } else | |
500 render_priv->state.alignment = | 522 render_priv->state.alignment = |
501 render_priv->state.style->Alignment; | 523 render_priv->state.style->Alignment; |
502 } else if (mystrcmp(&p, "pos")) { | 524 } else if (mystrcmp(&p, "pos")) { |
503 double v1, v2; | 525 double v1, v2; |
504 skip('('); | 526 skip('('); |
548 mystrtoll(&p, &t3); | 570 mystrtoll(&p, &t3); |
549 skip(','); | 571 skip(','); |
550 mystrtoll(&p, &t4); | 572 mystrtoll(&p, &t4); |
551 } | 573 } |
552 skip(')'); | 574 skip(')'); |
553 render_priv->state.fade = | 575 if ((render_priv->state.parsed_tags & PARSED_FADE) == 0) { |
554 interpolate_alpha(render_priv->time - | 576 render_priv->state.fade = |
555 render_priv->state.event->Start, t1, t2, | 577 interpolate_alpha(render_priv->time - |
556 t3, t4, a1, a2, a3); | 578 render_priv->state.event->Start, t1, t2, |
579 t3, t4, a1, a2, a3); | |
580 render_priv->state.parsed_tags |= PARSED_FADE; | |
581 } | |
557 } else if (mystrcmp(&p, "org")) { | 582 } else if (mystrcmp(&p, "org")) { |
558 int v1, v2; | 583 int v1, v2; |
559 skip('('); | 584 skip('('); |
560 mystrtoi(&p, &v1); | 585 mystrtoi(&p, &v1); |
561 skip(','); | 586 skip(','); |