/*
- Copyright (C) 2016 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2016-2019 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
*/
-#include <boost/shared_ptr.hpp>
+#include "signaller.h"
+#include "player_text.h"
+#include "types.h"
+#include "dcp_text_track.h"
+#include "dcpomatic_time.h"
+#include <boost/weak_ptr.hpp>
+#include <boost/signals2.hpp>
#include <vector>
#include <string>
class Film;
-std::vector<std::string> get_hints (boost::shared_ptr<const Film> film);
+class Hints : public Signaller, public ExceptionStore
+{
+public:
+ explicit Hints (boost::weak_ptr<const Film> film);
+ ~Hints ();
+
+ void start ();
+
+ boost::signals2::signal<void (std::string)> Hint;
+ boost::signals2::signal<void (std::string)> Progress;
+ boost::signals2::signal<void (void)> Pulse;
+ boost::signals2::signal<void (void)> Finished;
+
+private:
+ void thread ();
+ void hint (std::string h);
+ void text (PlayerText text, TextType type, dcpomatic::DCPTimePeriod period);
+
+ boost::weak_ptr<const Film> _film;
+ boost::thread* _thread;
+
+ bool _long_ccap;
+ bool _overlap_ccap;
+ bool _too_many_ccap_lines;
+ boost::optional<dcpomatic::DCPTimePeriod> _last;
+
+ boost::mutex _mutex;
+ bool _stop;
+};