diff options
author | wm4 <wm4@nowhere> | 2014-10-17 01:55:16 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-10-17 02:05:40 +0200 |
commit | 210d3ea34272330c446d2b3f59e87e633b3a7fb9 (patch) | |
tree | 83fe648bcb29d0385679fb47bc2351881c906122 /libass/ass_render.c | |
parent | 1b8e673438793b6ccfa3d386a34e7955dad53f57 (diff) | |
download | libass-210d3ea34272330c446d2b3f59e87e633b3a7fb9.tar.bz2 libass-210d3ea34272330c446d2b3f59e87e633b3a7fb9.tar.xz |
Provide slightly more fine-grained control over style overrides
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r-- | libass/ass_render.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 0cec412..8d942f6 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -773,15 +773,23 @@ static ASS_Style *handle_selective_style_overrides(ASS_Renderer *render_priv, ASS_Style *script = render_priv->track->styles + render_priv->state.event->Style; ASS_Style *new = &render_priv->state.override_style_temp_storage; - int override = !event_is_positioned(render_priv->state.event->Text); + int explicit = event_is_positioned(render_priv->state.event->Text); + int requested = render_priv->settings.selective_style_overrides; double scale; if (!rstyle) rstyle = script; render_priv->state.style = script; + render_priv->state.overrides = ASS_OVERRIDE_BIT_FONT_SIZE; // odd default - if (!override || !render_priv->settings.selective_style_overrides) + if (explicit && (requested & ASS_OVERRIDE_BIT_FONT_SIZE)) + render_priv->state.overrides &= ~(unsigned)ASS_OVERRIDE_BIT_FONT_SIZE; + + if (!explicit && (requested & ASS_OVERRIDE_BIT_STYLE)) + render_priv->state.overrides |= ASS_OVERRIDE_BIT_STYLE; + + if (!(render_priv->state.overrides & ASS_OVERRIDE_BIT_STYLE)) return rstyle; // Create a new style that contains a mix of the original style and @@ -834,9 +842,11 @@ static void init_font_scale(ASS_Renderer *render_priv) if (!settings_priv->storage_height) render_priv->blur_scale = render_priv->border_scale; - render_priv->font_scale *= settings_priv->font_size_coeff; - render_priv->border_scale *= settings_priv->font_size_coeff; - render_priv->blur_scale *= settings_priv->font_size_coeff; + if (render_priv->state.overrides & ASS_OVERRIDE_BIT_FONT_SIZE) { + render_priv->font_scale *= settings_priv->font_size_coeff; + render_priv->border_scale *= settings_priv->font_size_coeff; + render_priv->blur_scale *= settings_priv->font_size_coeff; + } } /** |