Mercurial > mplayer.hg
diff libass/ass_parse.c @ 31853:e64df5862cea
Import libass 0.9.10
| author | greg |
|---|---|
| date | Fri, 06 Aug 2010 21:13:41 +0000 |
| parents | 48d020c5ceca |
| children | ac6e48baa03d |
line wrap: on
line diff
--- a/libass/ass_parse.c Fri Aug 06 10:48:16 2010 +0000 +++ b/libass/ass_parse.c Fri Aug 06 21:13:41 2010 +0000 @@ -68,9 +68,15 @@ { unsigned val; ASS_FontDesc desc; - desc.family = strdup(render_priv->state.family); - desc.treat_family_as_pattern = - render_priv->state.treat_family_as_pattern; + desc.treat_family_as_pattern = render_priv->state.treat_family_as_pattern; + + if (render_priv->state.family[0] == '@') { + desc.vertical = 1; + desc.family = strdup(render_priv->state.family + 1); + } else { + desc.vertical = 0; + desc.family = strdup(render_priv->state.family); + } val = render_priv->state.bold; // 0 = normal, 1 = bold, >1 = exact weight @@ -210,6 +216,7 @@ int res = 0; ASS_Drawing *drawing; + ass_drawing_free(render_priv->state.clip_drawing); render_priv->state.clip_drawing = ass_drawing_new( render_priv->fontconfig_priv, render_priv->state.font, @@ -227,20 +234,6 @@ while (*p != ')' && *p != '}' && p != 0) ass_drawing_add_char(drawing, *p++); skipopt(')'); - if (ass_drawing_parse(drawing, 1)) { - // We need to translate the clip according to screen borders - if (render_priv->settings.left_margin != 0 || - render_priv->settings.top_margin != 0) { - FT_Vector trans = { - .x = int_to_d6(render_priv->settings.left_margin), - .y = -int_to_d6(render_priv->settings.top_margin), - }; - FT_Outline_Translate(&drawing->glyph->outline, trans.x, trans.y); - } - ass_msg(render_priv->library, MSGL_DBG2, - "Parsed vector clip: scale %d, scales (%f, %f) string [%s]\n", - scale, drawing->scale_x, drawing->scale_y, drawing->text); - } return p; } @@ -586,7 +579,7 @@ for (cnt = 0; cnt < 3; ++cnt) { if (*p == '\\') break; - v[cnt] = strtod(p, &p); + mystrtod(&p, &v[cnt]); skip(','); } if (cnt == 3) { @@ -836,7 +829,7 @@ } else if (strncmp(event->Effect, "Scroll down;", 12) == 0) { render_priv->state.scroll_direction = SCROLL_TB; } else { - ass_msg(render_priv->library, MSGL_V, + ass_msg(render_priv->library, MSGL_DBG2, "Unknown transition effect: '%s'", event->Effect); return; } @@ -894,7 +887,7 @@ break; } else if (*p != '\\') ass_msg(render_priv->library, MSGL_V, - "Unable to parse: '%s'", p); + "Unable to parse: '%.30s'", p); if (*p == 0) break; } @@ -918,6 +911,14 @@ p += 2; *str = p; return NBSP; + } else if (p[1] == '{') { + p += 2; + *str = p; + return '{'; + } else if (p[1] == '}') { + p += 2; + *str = p; + return '}'; } } chr = ass_utf8_get_char((char **) &p);
