summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Oshmyan <chortos@inbox.lv>2020-10-18 02:42:18 +0300
committerOleg Oshmyan <chortos@inbox.lv>2020-10-19 20:36:18 +0300
commitae4a6d27fbd3b8c5fec3d459b118ce820ee9042f (patch)
treeb51af0a444e997f10a1783eaaa6ab272b1ef4b62
parentfc97f85383958b6a11bbc5f9e31afaea06b04dce (diff)
downloadlibass-ae4a6d27fbd3b8c5fec3d459b118ce820ee9042f.tar.bz2
libass-ae4a6d27fbd3b8c5fec3d459b118ce820ee9042f.tar.xz
shaper: honor/reuse starts_new_run
This removes duplicated code (and a not-fully-correct comment). This also ensures shaping has breaks whenever the rest of the pipeline breaks runs (e. g. for bitmap combining). In particular, this adds missing breaks on karaoke changes, which the old code didn't actually honor despite the comment.
-rw-r--r--libass/ass_shaper.c28
1 files changed, 1 insertions, 27 deletions
diff --git a/libass/ass_shaper.c b/libass/ass_shaper.c
index d9fd590..273bfb1 100644
--- a/libass/ass_shaper.c
+++ b/libass/ass_shaper.c
@@ -786,36 +786,10 @@ void ass_shaper_find_runs(ASS_Shaper *shaper, ASS_Renderer *render_priv,
// set size and get glyph index
ass_font_get_index(render_priv->fontselect, info->font,
info->symbol, &info->face_index, &info->glyph_index);
- // 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->italic != info->italic ||
- last->bold != info->bold ||
+ info->starts_new_run ||
last->flags != info->flags))
shape_run++;
info->shape_run_id = shape_run;