Remove glibmm dependency.
[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 load_id, boost::filesystem::path file);
51
52         std::string xml_as_string () const;
53         void write (boost::filesystem::path path) const;
54         void resolve_fonts (std::list<boost::shared_ptr<Object> > objects);
55         void add_font_assets (std::list<boost::shared_ptr<Asset> >& assets);
56
57         /** Set the reel number or sub-element identifier
58          *  of these subtitles.
59          *  @param n New reel number.
60          */
61         void set_reel_number (std::string n) {
62                 _reel_number = n;
63         }
64
65         /** Set the language tag of these subtitles.
66          *  @param l New language.
67          */
68         void set_language (std::string l) {
69                 _language = l;
70         }
71
72         /** @return title of the movie that the subtitles are for */
73         void set_movie_title (std::string m) {
74                 _movie_title = m;
75         }
76
77         /** @return reel number or sub-element of a programme that
78          *  these subtitles refer to.
79          */
80         std::string reel_number () const {
81                 return _reel_number;
82         }
83
84         /** @return language used in the subtitles */
85         std::string language () const {
86                 return _language;
87         }
88
89         /** @return movie title that these subtitles are for */
90         std::string movie_title () const {
91                 return _movie_title;
92         }
93
94 protected:
95
96         std::string pkl_type (Standard) const {
97                 return "text/xml";
98         }
99
100 private:
101         std::string _reel_number;
102         std::string _language;
103         std::string _movie_title;
104         std::list<boost::shared_ptr<InteropLoadFontNode> > _load_font_nodes;
105 };
106
107 }