Remove slightly strange InteropSubtitleAsset constructor; add default one for SMPTESu...
[libdcp.git] / src / interop_subtitle_asset.h
1 /*
2     Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License
15     along with this program; if not, write to the Free Software
16     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 */
19
20 /** @file  src/interop_subtitle_asset.h
21  *  @brief InteropSubtitleAsset class.
22  */
23
24 #include "subtitle_asset.h"
25 #include <boost/filesystem.hpp>
26
27 namespace dcp {
28
29 class InteropLoadFontNode;
30
31 /** @class InteropSubtitleAsset
32  *  @brief A set of subtitles to be read and/or written in the Inter-Op format.
33  *
34  *  Inter-Op subtitles are sometimes known as CineCanvas.
35  */
36 class InteropSubtitleAsset : public SubtitleAsset
37 {
38 public:
39         InteropSubtitleAsset ();
40         InteropSubtitleAsset (boost::filesystem::path file);
41
42         bool equals (
43                 boost::shared_ptr<const Asset>,
44                 EqualityOptions,
45                 NoteHandler note
46                 ) const;
47
48         std::list<boost::shared_ptr<LoadFontNode> > load_font_nodes () const;
49
50         void add_font (std::string id, std::string uri);
51         
52         Glib::ustring xml_as_string () const;
53         void write (boost::filesystem::path path) const;
54
55         /** Set the reel number or sub-element identifier
56          *  of these subtitles.
57          *  @param n New reel number.
58          */
59         void set_reel_number (std::string n) {
60                 _reel_number = n;
61         }
62
63         /** Set the language tag of these subtitles.
64          *  @param l New language.
65          */
66         void set_language (std::string l) {
67                 _language = l;
68         }
69
70         /** @return title of the movie that the subtitles are for */
71         void set_movie_title (std::string m) {
72                 _movie_title = m;
73         }
74
75         /** @return reel number or sub-element of a programme that
76          *  these subtitles refer to.
77          */
78         std::string reel_number () const {
79                 return _reel_number;
80         }
81
82         /** @return language used in the subtitles */
83         std::string language () const {
84                 return _language;
85         }
86
87         /** @return movie title that these subtitles are for */
88         std::string movie_title () const {
89                 return _movie_title;
90         }
91
92 protected:
93         
94         std::string pkl_type (Standard) const {
95                 return "text/xml";
96         }
97
98 private:
99         std::string _reel_number;
100         std::string _language;
101         std::string _movie_title;
102         std::list<boost::shared_ptr<InteropLoadFontNode> > _load_font_nodes;
103 };
104
105 }