+extern bool operator== (Colour const & a, Colour const & b);
+extern bool operator!= (Colour const & a, Colour const & b);
+extern std::ostream & operator<< (std::ostream & s, Colour const & c);
+
+typedef boost::function<void (NoteType, std::string)> NoteHandler;
+
+/** Maximum absolute difference between dcp::SubtitleString::aspect_adjust values that
+ * are considered equal.
+ */
+const float ASPECT_ADJUST_EPSILON = 1e-3;
+
+/** Maximum absolute difference between dcp::SubtitleString alignment values that
+ * are considered equal.
+ */
+const float ALIGN_EPSILON = 1e-3;
+
+enum Marker {
+ FFOC, ///< first frame of composition
+ LFOC, ///< last frame of composition
+ FFTC, ///< first frame of title credits
+ LFTC, ///< last frame of title credits
+ FFOI, ///< first frame of intermission
+ LFOI, ///< last frame of intermission
+ FFEC, ///< first frame of end credits
+ LFEC, ///< last frame of end credits
+ FFMC, ///< first frame of moving credits
+ LFMC ///< last frame of moving credits
+};
+
+std::string marker_to_string (Marker);
+Marker marker_from_string (std::string);
+
+class Rating
+{
+public:
+ Rating (std::string agency_, std::string label_)
+ : agency (agency_)
+ , label (label_)
+ {}
+
+ explicit Rating (cxml::ConstNodePtr node);
+
+ void as_xml (xmlpp::Element* parent) const;
+
+ /** URI of the agency issuing the rating */
+ std::string agency;
+ /** Rating (e.g. PG, PG-13, 12A etc) */
+ std::string label;
+};