diff options
author | rcombs <rcombs@rcombs.me> | 2022-11-11 15:56:14 -0600 |
---|---|---|
committer | rcombs <rcombs@rcombs.me> | 2022-11-15 21:14:37 -0600 |
commit | dc66f4ba377d9a1da86349633f3bd89b0ebd7555 (patch) | |
tree | a7a767c712666ad2fa33d89a7358d737008c4af3 /libass/ass_parse.c | |
parent | db2f527f2bc5976a439c369b219cc0f31f80d354 (diff) | |
download | libass-dc66f4ba377d9a1da86349633f3bd89b0ebd7555.tar.bz2 libass-dc66f4ba377d9a1da86349633f3bd89b0ebd7555.tar.xz |
ass_parse: take RenderContext in update_font()
Diffstat (limited to 'libass/ass_parse.c')
-rw-r--r-- | libass/ass_parse.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/libass/ass_parse.c b/libass/ass_parse.c index 78f2fcdc..1714b124 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -80,12 +80,12 @@ static inline int mystrcmp(char **p, const char *sample) /** * \brief Change current font, using setting from render_priv->state. */ -void ass_update_font(ASS_Renderer *render_priv) +void ass_update_font(RenderContext *state) { unsigned val; ASS_FontDesc desc; - desc.family = render_priv->state.family; + desc.family = state->family; if (!desc.family.str) return; if (desc.family.len && desc.family.str[0] == '@') { @@ -96,7 +96,7 @@ void ass_update_font(ASS_Renderer *render_priv) desc.vertical = 0; } - val = render_priv->state.bold; + val = state->bold; // 0 = normal, 1 = bold, >1 = exact weight if (val == 1 || val == -1) val = 700; // bold @@ -104,15 +104,15 @@ void ass_update_font(ASS_Renderer *render_priv) val = 400; // normal desc.bold = val; - val = render_priv->state.italic; + val = state->italic; if (val == 1) val = 100; // italic else if (val <= 0) val = 0; // normal desc.italic = val; - ass_cache_dec_ref(render_priv->state.font); - render_priv->state.font = ass_font_new(render_priv, &desc); + ass_cache_dec_ref(state->font); + state->font = ass_font_new(state->renderer, &desc); } /** @@ -283,6 +283,7 @@ static ASS_Style *lookup_style_strict(ASS_Track *track, char *name, size_t len) char *ass_parse_tags(ASS_Renderer *render_priv, char *p, char *end, double pwr, bool nested) { + RenderContext *state = &render_priv->state; for (char *q; p < end; p = q) { while (*p != '\\' && p != end) ++p; @@ -560,7 +561,7 @@ char *ass_parse_tags(ASS_Renderer *render_priv, char *p, char *end, double pwr, render_priv->state.family.str = render_priv->state.style->FontName; render_priv->state.family.len = strlen(render_priv->state.style->FontName); } - ass_update_font(render_priv); + ass_update_font(state); } else if (tag("alpha")) { int i; if (nargs) { @@ -824,13 +825,13 @@ char *ass_parse_tags(ASS_Renderer *render_priv, char *p, char *end, double pwr, if (!nargs || !(val == 0 || val == 1 || val >= 100)) val = render_priv->state.style->Bold; render_priv->state.bold = val; - ass_update_font(render_priv); + ass_update_font(state); } else if (tag("i")) { int32_t val = argtoi32(*args); if (!nargs || !(val == 0 || val == 1)) val = render_priv->state.style->Italic; render_priv->state.italic = val; - ass_update_font(render_priv); + ass_update_font(state); } else if (tag("kt")) { // v4++ double val = 0; |