diff options
| author | Carl Hetherington <cth@carlh.net> | 2015-01-14 17:39:32 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2015-01-20 11:20:25 +0000 |
| commit | 3f630fb8334238ab8a58fbe1a0f513ae2c00de80 (patch) | |
| tree | 4b773b91029d6374bfd4f2194053d3e249d597cd /src/dcp_reader.h | |
| parent | 49cafda01b3e07c47e3b20dd5ee91e1426446aea (diff) | |
Simplify time representation; better in-tree DCP subtitle parser.
Diffstat (limited to 'src/dcp_reader.h')
| -rw-r--r-- | src/dcp_reader.h | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/src/dcp_reader.h b/src/dcp_reader.h index 09d9f6a..f749f82 100644 --- a/src/dcp_reader.h +++ b/src/dcp_reader.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2014 Carl Hetherington <cth@carlh.net> + Copyright (C) 2014-2015 Carl Hetherington <cth@carlh.net> 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 @@ -21,22 +21,41 @@ #define LIBSUB_DCP_READER_H #include "reader.h" +#include <libcxml/cxml.h> #include <boost/shared_ptr.hpp> #include <boost/filesystem.hpp> -namespace cxml { - class Node; -} - namespace sub { +namespace dcp { + class Font; + class Text; + class Subtitle; +} + /** @class DCPReader * @brief A class which reads DCP subtitles. */ class DCPReader : public Reader { -public: - DCPReader (boost::filesystem::path file, bool interop); +protected: + + struct ParseState { + std::list<boost::shared_ptr<dcp::Font> > font_nodes; + std::list<boost::shared_ptr<dcp::Text> > text_nodes; + std::list<boost::shared_ptr<dcp::Subtitle> > subtitle_nodes; + }; + + void parse_common (cxml::NodePtr root, boost::optional<int> tcr); + + std::string _id; + +private: + void parse_node (xmlpp::Node const * node, ParseState& parse_state, boost::optional<int> tcr); + void maybe_add_subtitle (std::string text, ParseState const & parse_state); + + std::string _reel_number; + std::string _language; }; } |
