diff options
author | Ricardo Constantino <wiiaboo@gmail.com> | 2017-04-26 23:11:47 +0100 |
---|---|---|
committer | Grigori Goronzy <greg@chown.ath.cx> | 2017-06-01 15:03:38 +0200 |
commit | a7807b03b0d1f25f448c14e88e0d8aa6ef4d0961 (patch) | |
tree | 8051e5e0e6203eaf0a0936a087141f1667198475 /libass | |
parent | fa01950cde285c74c68f3d07067323c7f67b5bfa (diff) | |
download | libass-a7807b03b0d1f25f448c14e88e0d8aa6ef4d0961.tar.bz2 libass-a7807b03b0d1f25f448c14e88e0d8aa6ef4d0961.tar.xz |
Allow using shadow offset to adjust size of text background
Text background refers to the libass-only BorderStyle 4, which is
similar to 3, but isn't affected by outline/border size and doesn't
render shadow, so shadow offset can be used.
You can override the horizontal and vertical box size separately
with override tags, just like you can override the color with
shadow color.
Closes #270
Diffstat (limited to 'libass')
-rw-r--r-- | libass/ass_render.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index 046ab57..93fc6e2 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -2402,10 +2402,14 @@ static void render_and_combine_glyphs(ASS_Renderer *render_priv, static void add_background(ASS_Renderer *render_priv, EventImages *event_images) { - int left = event_images->left; - int top = event_images->top; - int right = event_images->left + event_images->width; - int bottom = event_images->top + event_images->height; + double size_x = render_priv->state.shadow_x > 0 ? + render_priv->state.shadow_x * render_priv->border_scale : 0; + double size_y = render_priv->state.shadow_y > 0 ? + render_priv->state.shadow_y * render_priv->border_scale : 0; + int left = event_images->left - size_x; + int top = event_images->top - size_y; + int right = event_images->left + event_images->width + size_x; + int bottom = event_images->top + event_images->height + size_y; left = FFMINMAX(left, 0, render_priv->width); top = FFMINMAX(top, 0, render_priv->height); right = FFMINMAX(right, 0, render_priv->width); |