Commit c84b75c8 authored by Marton Balint's avatar Marton Balint Committed by Michael Niedermayer

vf_drawtext: add support for setting box border width

Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 919d13d2
...@@ -3955,6 +3955,10 @@ Used to draw a box around text using the background color. ...@@ -3955,6 +3955,10 @@ Used to draw a box around text using the background color.
The value must be either 1 (enable) or 0 (disable). The value must be either 1 (enable) or 0 (disable).
The default value of @var{box} is 0. The default value of @var{box} is 0.
@item boxborderw
Set the width of the border to be drawn around the box using @var{boxcolor}.
The default value of @var{boxborderw} is 0.
@item boxcolor @item boxcolor
The color to be used for drawing box around text. For the syntax of this The color to be used for drawing box around text. For the syntax of this
option, check the "Color" section in the ffmpeg-utils manual. option, check the "Color" section in the ffmpeg-utils manual.
......
...@@ -159,6 +159,7 @@ typedef struct DrawTextContext { ...@@ -159,6 +159,7 @@ typedef struct DrawTextContext {
unsigned int fontsize; ///< font size to use unsigned int fontsize; ///< font size to use
short int draw_box; ///< draw box around text - true or false short int draw_box; ///< draw box around text - true or false
int boxborderw; ///< box border width
int use_kerning; ///< font kerning is used - true/false int use_kerning; ///< font kerning is used - true/false
int tabsize; ///< tab size int tabsize; ///< tab size
int fix_bounds; ///< do we let it go out of frame bounds - t/f int fix_bounds; ///< do we let it go out of frame bounds - t/f
...@@ -204,6 +205,7 @@ static const AVOption drawtext_options[]= { ...@@ -204,6 +205,7 @@ static const AVOption drawtext_options[]= {
{"bordercolor", "set border color", OFFSET(bordercolor.rgba), AV_OPT_TYPE_COLOR, {.str="black"}, CHAR_MIN, CHAR_MAX, FLAGS}, {"bordercolor", "set border color", OFFSET(bordercolor.rgba), AV_OPT_TYPE_COLOR, {.str="black"}, CHAR_MIN, CHAR_MAX, FLAGS},
{"shadowcolor", "set shadow color", OFFSET(shadowcolor.rgba), AV_OPT_TYPE_COLOR, {.str="black"}, CHAR_MIN, CHAR_MAX, FLAGS}, {"shadowcolor", "set shadow color", OFFSET(shadowcolor.rgba), AV_OPT_TYPE_COLOR, {.str="black"}, CHAR_MIN, CHAR_MAX, FLAGS},
{"box", "set box", OFFSET(draw_box), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 , FLAGS}, {"box", "set box", OFFSET(draw_box), AV_OPT_TYPE_INT, {.i64=0}, 0, 1 , FLAGS},
{"boxborderw", "set box border width", OFFSET(boxborderw), AV_OPT_TYPE_INT, {.i64=0}, INT_MIN, INT_MAX , FLAGS},
{"fontsize", "set font size", OFFSET(fontsize), AV_OPT_TYPE_INT, {.i64=0}, 0, INT_MAX , FLAGS}, {"fontsize", "set font size", OFFSET(fontsize), AV_OPT_TYPE_INT, {.i64=0}, 0, INT_MAX , FLAGS},
{"x", "set x expression", OFFSET(x_expr), AV_OPT_TYPE_STRING, {.str="0"}, CHAR_MIN, CHAR_MAX, FLAGS}, {"x", "set x expression", OFFSET(x_expr), AV_OPT_TYPE_STRING, {.str="0"}, CHAR_MIN, CHAR_MAX, FLAGS},
{"y", "set y expression", OFFSET(y_expr), AV_OPT_TYPE_STRING, {.str="0"}, CHAR_MIN, CHAR_MAX, FLAGS}, {"y", "set y expression", OFFSET(y_expr), AV_OPT_TYPE_STRING, {.str="0"}, CHAR_MIN, CHAR_MAX, FLAGS},
...@@ -1245,7 +1247,8 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame, ...@@ -1245,7 +1247,8 @@ static int draw_text(AVFilterContext *ctx, AVFrame *frame,
if (s->draw_box) if (s->draw_box)
ff_blend_rectangle(&s->dc, &s->boxcolor, ff_blend_rectangle(&s->dc, &s->boxcolor,
frame->data, frame->linesize, width, height, frame->data, frame->linesize, width, height,
s->x, s->y, box_w, box_h); s->x - s->boxborderw, s->y - s->boxborderw,
box_w + s->boxborderw * 2, box_h + s->boxborderw * 2);
if (s->shadowx || s->shadowy) { if (s->shadowx || s->shadowy) {
if ((ret = draw_glyphs(s, frame, width, height, if ((ret = draw_glyphs(s, frame, width, height,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment