summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Constantino <wiiaboo@gmail.com>2017-04-26 23:11:47 +0100
committerGrigori Goronzy <greg@chown.ath.cx>2017-06-01 15:03:38 +0200
commita7807b03b0d1f25f448c14e88e0d8aa6ef4d0961 (patch)
tree8051e5e0e6203eaf0a0936a087141f1667198475
parentfa01950cde285c74c68f3d07067323c7f67b5bfa (diff)
downloadlibass-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
-rw-r--r--libass/ass_render.c12
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);