diff options
Diffstat (limited to 'libass')
-rw-r--r-- | libass/ass_parse.c | 1 | ||||
-rw-r--r-- | libass/ass_render.c | 17 |
2 files changed, 6 insertions, 12 deletions
diff --git a/libass/ass_parse.c b/libass/ass_parse.c index 56a02bec..8347cf28 100644 --- a/libass/ass_parse.c +++ b/libass/ass_parse.c @@ -908,6 +908,7 @@ void apply_transition_effects(ASS_Renderer *render_priv, ASS_Event *event) render_priv->state.scroll_shift = (render_priv->time - render_priv->state.event->Start) / delay; render_priv->state.evt_type = EVENT_HSCROLL; + render_priv->state.wrap_style = 2; return; } diff --git a/libass/ass_render.c b/libass/ass_render.c index fe499f11..2cec0e4a 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -2130,8 +2130,10 @@ static void align_lines(ASS_Renderer *render_priv, double max_text_width) int justify = render_priv->state.justify; double max_width = 0; - if (render_priv->state.evt_type == EVENT_HSCROLL) - return; + if (render_priv->state.evt_type == EVENT_HSCROLL) { + justify = halign; + halign = HALIGN_LEFT; + } for (i = 0; i <= text_info->length; ++i) { // (text_info->length + 1) is the end of the last line if ((i == text_info->length) || glyphs[i].linebreak) { @@ -2639,16 +2641,7 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event, x2scr_left(render_priv, MarginL); // wrap lines - if (render_priv->state.evt_type != EVENT_HSCROLL) { - // rearrange text in several lines - wrap_lines_smart(render_priv, max_text_width); - } else { - // no breaking or wrapping, everything in a single line - text_info->lines[0].offset = 0; - text_info->lines[0].len = text_info->length; - text_info->n_lines = 1; - measure_text(render_priv); - } + wrap_lines_smart(render_priv, max_text_width); reorder_text(render_priv); |