X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Ffont.h;h=24d8ed2bb93103027795c838a3b800ad1668b5c0;hb=HEAD;hp=ed3ecc38f3075498d2051545a38df5ab4c2382fb;hpb=39fb8198febde1937019db1c300ec363aab5aa56;p=dcpomatic.git diff --git a/src/lib/font.h b/src/lib/font.h index ed3ecc38f..12a14aba4 100644 --- a/src/lib/font.h +++ b/src/lib/font.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2014-2021 Carl Hetherington + Copyright (C) 2014-2023 Carl Hetherington This file is part of DCP-o-matic. @@ -23,6 +23,7 @@ #define DCPOMATIC_FONT_H +#include #include #include #include @@ -41,27 +42,64 @@ public: explicit Font (cxml::NodePtr node); + Font (std::string id, boost::filesystem::path file) + : _id (id) + { + _content.file = file; + } + + Font (std::string id, dcp::ArrayData data) + : _id (id) + { + _content.data = data; + } + + Font(Font const& other); + Font& operator=(Font const& other); + void as_xml (xmlpp::Node* node); std::string id () const { return _id; } + void set_id (std::string id) { + _id = id; + } + boost::optional file () const { - return _file; + return _content.file; } void set_file (boost::filesystem::path file) { - _file = file; + _content.file = file; Changed (); } + /** @return the data set passed to the dcp::ArrayData constructor, + * otherwise the contents of _file, otherwise boost::none. + */ + boost::optional data() const; + + /** The actual TTF/OTF font data, as either a filename or the raw data itself */ + struct Content + { + boost::optional data; + boost::optional file; + }; + + Content content() const { + return _content; + } + boost::signals2::signal Changed; private: - /** Font ID, used to describe it in the subtitle content */ + /** Font ID, used to describe it in the subtitle content; could be either a + * font family name or an ID from some DCP font XML. + */ std::string _id; - boost::optional _file; + Content _content; };