diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-02-20 20:30:04 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-02-20 20:30:04 +0000 |
| commit | f6b38ba26dbcce6210c8b9474c36b965d1f8a957 (patch) | |
| tree | b38179709a0f9a77bd935c2b86d1c864825af950 /src/lib | |
| parent | c2b2ab9718ec0b1b301b10036fc1bc9994c16920 (diff) | |
Improve dcpomatic_create somewhat.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/film.cc | 35 | ||||
| -rw-r--r-- | src/lib/film.h | 3 |
2 files changed, 22 insertions, 16 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index f77273001..fb5014b3a 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -93,7 +93,7 @@ int const Film::state_version = 7; * @param dir Film directory. */ -Film::Film (boost::filesystem::path dir) +Film::Film (boost::filesystem::path dir, bool log) : _playlist (new Playlist) , _use_dci_name (true) , _dcp_content_type (Config::instance()->default_dcp_content_type ()) @@ -136,7 +136,11 @@ Film::Film (boost::filesystem::path dir) } set_directory (result); - _log.reset (new FileLog (file ("log"))); + if (log) { + _log.reset (new FileLog (file ("log"))); + } else { + _log.reset (new NullLog); + } _playlist->set_sequence_video (_sequence_video); } @@ -327,20 +331,13 @@ Film::encoded_frames () const return N; } -/** Write state to our `metadata' file */ -void -Film::write_metadata () const +shared_ptr<xmlpp::Document> +Film::metadata () const { - if (!boost::filesystem::exists (directory ())) { - boost::filesystem::create_directory (directory ()); - } - LocaleGuard lg; - boost::filesystem::create_directories (directory ()); - - xmlpp::Document doc; - xmlpp::Element* root = doc.create_root_node ("Metadata"); + shared_ptr<xmlpp::Document> doc (new xmlpp::Document); + xmlpp::Element* root = doc->create_root_node ("Metadata"); root->add_child("Version")->add_child_text (lexical_cast<string> (state_version)); root->add_child("Name")->add_child_text (_name); @@ -370,8 +367,16 @@ Film::write_metadata () const root->add_child("Key")->add_child_text (_key.hex ()); _playlist->as_xml (root->add_child ("Playlist")); - doc.write_to_file_formatted (file("metadata.xml").string ()); - + return doc; +} + +/** Write state to our `metadata' file */ +void +Film::write_metadata () const +{ + boost::filesystem::create_directories (directory ()); + shared_ptr<xmlpp::Document> doc = metadata (); + doc->write_to_file_formatted (file("metadata.xml").string ()); _dirty = false; } diff --git a/src/lib/film.h b/src/lib/film.h index 0a747193e..06d19e67e 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -56,7 +56,7 @@ class Screen; class Film : public boost::enable_shared_from_this<Film>, public boost::noncopyable { public: - Film (boost::filesystem::path); + Film (boost::filesystem::path, bool log = true); boost::filesystem::path info_dir () const; boost::filesystem::path j2c_path (int, Eyes, bool) const; @@ -85,6 +85,7 @@ public: void read_metadata (); void write_metadata () const; + boost::shared_ptr<xmlpp::Document> metadata () const; std::string dci_name (bool if_created_now) const; std::string dcp_name (bool if_created_now = false) const; |
