summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-01-09 20:38:47 +0000
committerCarl Hetherington <cth@carlh.net>2018-01-09 20:38:47 +0000
commit8e565d76b612f010891ee0cfc830caf88c1a8561 (patch)
tree9548794e83266ce53f68699d35f022d07633a10f /src/lib
parent81c317f71b4150f9ba6299190d5272837c548ef1 (diff)
Make overlapped fade in/out work more sensibly.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/render_subtitles.cc11
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;
}