summaryrefslogtreecommitdiff
path: root/src/dcp_reader.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-01-14 17:39:32 +0000
committerCarl Hetherington <cth@carlh.net>2015-01-20 11:20:25 +0000
commit3f630fb8334238ab8a58fbe1a0f513ae2c00de80 (patch)
tree4b773b91029d6374bfd4f2194053d3e249d597cd /src/dcp_reader.h
parent49cafda01b3e07c47e3b20dd5ee91e1426446aea (diff)
Simplify time representation; better in-tree DCP subtitle parser.
Diffstat (limited to 'src/dcp_reader.h')
-rw-r--r--src/dcp_reader.h33
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;
};
}