summaryrefslogtreecommitdiffstats
path: root/libass/ass_shaper.c
diff options
context:
space:
mode:
author11rcombs <rodger.combs@gmail.com>2014-01-25 19:06:12 -0600
committer11rcombs <rodger.combs@gmail.com>2014-01-25 19:09:15 -0600
commit5dd56af2f97419ce5a72d1dab2e9c19b34c1dd57 (patch)
tree1997f519ae3d5f75a76a3cee3dd95034e513210a /libass/ass_shaper.c
parentfa3b6fa3ee1de42232f0513539af2464a3c9203a (diff)
downloadlibass-5dd56af2f97419ce5a72d1dab2e9c19b34c1dd57.tar.bz2
libass-5dd56af2f97419ce5a72d1dab2e9c19b34c1dd57.tar.xz
Combine bitmaps before applying blur and shadow
Diffstat (limited to 'libass/ass_shaper.c')
-rw-r--r--libass/ass_shaper.c29
1 files changed, 26 insertions, 3 deletions
diff --git a/libass/ass_shaper.c b/libass/ass_shaper.c
index 944603e..6aca5f5 100644
--- a/libass/ass_shaper.c
+++ b/libass/ass_shaper.c
@@ -726,14 +726,37 @@ void ass_shaper_find_runs(ASS_Shaper *shaper, ASS_Renderer *render_priv,
// set size and get glyph index
ass_font_get_index(render_priv->fontconfig_priv, info->font,
info->symbol, &info->face_index, &info->glyph_index);
- // shape runs share the same font face and size
+ // shape runs break on: xbord, ybord, xshad, yshad,
+ // all four colors, all four alphas, be, blur, fn, fs,
+ // fscx, fscy, fsp, bold, italic, underline, strikeout,
+ // frx, fry, frz, fax, fay, karaoke start, karaoke type,
+ // and on every line break
if (i > 0 && (last->font != info->font ||
+ last->face_index != info->face_index ||
+ last->script != info->script ||
last->font_size != info->font_size ||
+ last->c[0] != info->c[0] ||
+ last->c[1] != info->c[1] ||
+ last->c[2] != info->c[2] ||
+ last->c[3] != info->c[3] ||
+ last->be != info->be ||
+ last->blur != info->blur ||
+ last->shadow_x != info->shadow_x ||
+ last->shadow_y != info->shadow_y ||
+ last->frx != info->frx ||
+ last->fry != info->fry ||
+ last->frz != info->frz ||
+ last->fax != info->fax ||
+ last->fay != info->fay ||
last->scale_x != info->scale_x ||
last->scale_y != info->scale_y ||
+ last->border_style != info->border_style ||
+ last->border_x != info->border_x ||
+ last->border_y != info->border_y ||
last->hspacing != info->hspacing ||
- last->face_index != info->face_index ||
- last->script != info->script))
+ last->italic != info->italic ||
+ last->bold != info->bold ||
+ last->flags != info->flags))
shape_run++;
info->shape_run_id = shape_run;
}