diff options
| author | Carl Hetherington <cth@carlh.net> | 2018-01-09 20:38:47 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2018-01-09 20:38:47 +0000 |
| commit | 8e565d76b612f010891ee0cfc830caf88c1a8561 (patch) | |
| tree | 9548794e83266ce53f68699d35f022d07633a10f /src/lib | |
| parent | 81c317f71b4150f9ba6299190d5272837c548ef1 (diff) | |
Make overlapped fade in/out work more sensibly.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/render_subtitles.cc | 11 |
1 files 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<SubtitleString> subtitles, list<shared_ptr<Font> > 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; } |
