From 8e565d76b612f010891ee0cfc830caf88c1a8561 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 9 Jan 2018 20:38:47 +0000 Subject: Make overlapped fade in/out work more sensibly. --- src/lib/render_subtitles.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lib/render_subtitles.cc b/src/lib/render_subtitles.cc index 9426427fd..9c4617ac3 100644 --- a/src/lib/render_subtitles.cc +++ b/src/lib/render_subtitles.cc @@ -244,11 +244,14 @@ render_line (list subtitles, list > fonts, dcp: DCPTime const fade_in_end = fade_in_start + DCPTime::from_seconds (subtitles.front().fade_up_time().as_seconds ()); DCPTime const fade_out_end = DCPTime::from_seconds (subtitles.front().out().as_seconds ()); DCPTime const fade_out_start = fade_out_end - DCPTime::from_seconds (subtitles.front().fade_down_time().as_seconds ()); + if (fade_in_start <= time && time <= fade_in_end && fade_in_start != fade_in_end) { - fade_factor = DCPTime(time - fade_in_start).seconds() / DCPTime(fade_in_end - fade_in_start).seconds(); - } else if (fade_out_start <= time && time <= fade_out_end && fade_out_start != fade_out_end) { - fade_factor = 1 - DCPTime(time - fade_out_start).seconds() / DCPTime(fade_out_end - fade_out_start).seconds(); - } else if (time < fade_in_start || time > fade_out_end) { + fade_factor *= DCPTime(time - fade_in_start).seconds() / DCPTime(fade_in_end - fade_in_start).seconds(); + } + if (fade_out_start <= time && time <= fade_out_end && fade_out_start != fade_out_end) { + fade_factor *= 1 - DCPTime(time - fade_out_start).seconds() / DCPTime(fade_out_end - fade_out_start).seconds(); + } + if (time < fade_in_start || time > fade_out_end) { fade_factor = 0; } -- cgit v1.2.3