#ifndef DCPOMATIC_CONTENT_H
#define DCPOMATIC_CONTENT_H
-#include "types.h"
-#include "signaller.h"
-#include "dcpomatic_time.h"
+
#include "change_signaller.h"
+#include "dcpomatic_time.h"
+#include "signaller.h"
+#include "types.h"
#include "user_property.h"
#include <libcxml/cxml.h>
#include <boost/filesystem.hpp>
std::string calculate_digest () const;
- /* CHANGE_TYPE_PENDING and CHANGE_TYPE_CANCELLED may be emitted from any thread; CHANGE_TYPE_DONE always from GUI thread */
+ virtual bool can_be_played () const {
+ return true;
+ }
+
+ /* ChangeType::PENDING and ChangeType::CANCELLED may be emitted from any thread; ChangeType::DONE always from GUI thread */
boost::signals2::signal<void (ChangeType, std::weak_ptr<Content>, int, bool)> Change;
std::shared_ptr<VideoContent> video;
std::shared_ptr<TextContent> only_text () const;
std::shared_ptr<TextContent> text_of_original_type (TextType type) const;
+ /** @return true if this content has changed since it was last examined */
+ bool changed () const;
+
protected:
virtual void add_properties (std::shared_ptr<const Film> film, std::list<UserProperty> &) const;
friend struct best_dcp_frame_rate_test_single;
friend struct best_dcp_frame_rate_test_double;
friend struct audio_sampling_rate_test;
+ friend struct subtitle_font_id_change_test2;
template<class, class> friend class ChangeSignaller;
void signal_change (ChangeType, int);