X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fsubtitle_content.h;h=5982cc52c0e36aa7eed6b6c39ba90785f4b2f0cf;hb=775ae0e37bbec115d742feade0adc614a9a2301c;hp=c00ec6f900e07b41e386451f5c43e12246ab544f;hpb=e60bb3e51bd1508b149e6b8f6608f09b5196ae26;p=dcpomatic.git diff --git a/src/lib/subtitle_content.h b/src/lib/subtitle_content.h index c00ec6f90..5982cc52c 100644 --- a/src/lib/subtitle_content.h +++ b/src/lib/subtitle_content.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2013-2014 Carl Hetherington + Copyright (C) 2013-2016 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +20,10 @@ #ifndef DCPOMATIC_SUBTITLE_CONTENT_H #define DCPOMATIC_SUBTITLE_CONTENT_H -#include "content.h" +#include "content_part.h" +#include +#include +#include class Font; @@ -32,32 +35,34 @@ public: static int const SUBTITLE_X_SCALE; static int const SUBTITLE_Y_SCALE; static int const USE_SUBTITLES; + static int const BURN_SUBTITLES; static int const SUBTITLE_LANGUAGE; static int const FONTS; + static int const SUBTITLE_VIDEO_FRAME_RATE; + static int const SUBTITLE_COLOUR; + static int const SUBTITLE_OUTLINE; + static int const SUBTITLE_OUTLINE_COLOUR; }; -/** @class SubtitleContent - * @brief Parent for content which has the potential to include subtitles. - * - * Although inheriting from this class indicates that the content could - * have subtitles, it may not. ::has_subtitles() will tell you. - */ -class SubtitleContent : public virtual Content +class SubtitleContent : public ContentPart { public: - SubtitleContent (boost::shared_ptr); - SubtitleContent (boost::shared_ptr, boost::filesystem::path); - SubtitleContent (boost::shared_ptr, cxml::ConstNodePtr, int version); - SubtitleContent (boost::shared_ptr, std::vector >); + SubtitleContent (Content* parent, boost::shared_ptr); + SubtitleContent (Content* parent, boost::shared_ptr, cxml::ConstNodePtr, int version); + SubtitleContent (Content* parent, boost::shared_ptr, std::vector >); void as_xml (xmlpp::Node *) const; std::string identifier () const; - virtual bool has_subtitles () const = 0; + bool has_image_subtitles () const { + /* XXX */ + return true; + } void add_font (boost::shared_ptr font); void set_use_subtitles (bool); + void set_burn_subtitles (bool); void set_subtitle_x_offset (double); void set_subtitle_y_offset (double); void set_subtitle_x_scale (double); @@ -69,6 +74,11 @@ public: return _use_subtitles; } + bool burn_subtitles () const { + boost::mutex::scoped_lock lm (_mutex); + return _burn_subtitles; + } + double subtitle_x_offset () const { boost::mutex::scoped_lock lm (_mutex); return _subtitle_x_offset; @@ -99,6 +109,27 @@ public: return _subtitle_language; } + void set_colour (dcp::Colour); + + dcp::Colour colour () const { + boost::mutex::scoped_lock lm (_mutex); + return _colour; + } + + void set_outline (bool); + + bool outline () const { + boost::mutex::scoped_lock lm (_mutex); + return _outline; + } + + void set_outline_colour (dcp::Colour); + + dcp::Colour outline_colour () const { + boost::mutex::scoped_lock lm (_mutex); + return _outline_colour; + } + protected: /** subtitle language (e.g. "German") or empty if it is not known */ std::string _subtitle_language; @@ -109,6 +140,7 @@ private: void connect_to_fonts (); bool _use_subtitles; + bool _burn_subtitles; /** x offset for placing subtitles, as a proportion of the container width; * +ve is further right, -ve is further left. */ @@ -122,6 +154,9 @@ private: /** y scale factor to apply to subtitles */ double _subtitle_y_scale; std::list > _fonts; + dcp::Colour _colour; + bool _outline; + dcp::Colour _outline_colour; std::list _font_connections; };