diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-07-23 14:39:54 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-07-23 14:39:54 +0100 |
| commit | 21b6c8b0b8b486a097bb9db41f9b02933b358f44 (patch) | |
| tree | b69a75bd37af0e6d82389b4b06fd76a2feef6de9 /src | |
| parent | d42ec544bf14dcd749287968b91ce0ae45515e48 (diff) | |
Try to improve path handling a bit, and add a few tests.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/film.cc | 14 | ||||
| -rw-r--r-- | src/lib/film_state.cc | 24 | ||||
| -rw-r--r-- | src/lib/film_state.h | 2 |
3 files changed, 26 insertions, 14 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index f11d30aba..bed973924 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -413,10 +413,11 @@ Film::j2k_dir () const { assert (format()); - stringstream s; + filesystem::path p; + /* Start with j2c */ - s << "j2c/"; + p /= "j2c"; pair<string, string> f = Filter::ffmpeg_strings (filters ()); @@ -424,19 +425,24 @@ Film::j2k_dir () const so that we don't get confused about J2K files generated using different settings. */ + stringstream s; s << _state.format->nickname() << "_" << _state.content_digest << "_" << left_crop() << "_" << right_crop() << "_" << top_crop() << "_" << bottom_crop() << "_" << f.first << "_" << f.second << "_" << _state.scaler->id(); + p /= s.str (); + /* Similarly for the A/B case */ if (dcp_ab()) { + stringstream s; pair<string, string> fa = Filter::ffmpeg_strings (Config::instance()->reference_filters()); - s << "/ab_" << Config::instance()->reference_scaler()->id() << "_" << fa.first << "_" << fa.second; + s << "ab_" << Config::instance()->reference_scaler()->id() << "_" << fa.first << "_" << fa.second; + p /= s.str (); } - return _state.dir (s.str ()); + return _state.dir (p.string ()); } /** Handle a change to the Film's metadata */ diff --git a/src/lib/film_state.cc b/src/lib/film_state.cc index 369e4c986..ae70b53bd 100644 --- a/src/lib/film_state.cc +++ b/src/lib/film_state.cc @@ -190,10 +190,14 @@ string FilmState::thumb_file_for_frame (int n) const { stringstream s; - s << dir ("thumbs") << "/"; s.width (8); s << setfill('0') << n << ".tiff"; - return s.str (); + + filesystem::path p; + p /= dir ("thumbs"); + p /= s.str (); + + return p.string (); } @@ -221,19 +225,21 @@ FilmState::cropped_size (Size s) const string FilmState::dir (string d) const { - stringstream s; - s << directory << "/" << d; - filesystem::create_directories (s.str ()); - return s.str (); + filesystem::path p; + p /= directory; + p /= d; + filesystem::create_directories (p); + return p.string (); } /** Given a file or directory name, return its full path within the Film's directory */ string FilmState::file (string f) const { - stringstream s; - s << directory << "/" << f; - return s.str (); + filesystem::path p; + p /= directory; + p /= f; + return p.string (); } string diff --git a/src/lib/film_state.h b/src/lib/film_state.h index 62ca76c41..beac5fc2c 100644 --- a/src/lib/film_state.h +++ b/src/lib/film_state.h @@ -135,7 +135,7 @@ public: /* Data which is cached to speed things up */ - /** Vector of frame indices for each of our `thumbnails */ + /** Vector of frame indices for each of our `thumbnails' */ std::vector<int> thumbs; /** Size, in pixels, of the source (ignoring cropping) */ Size size; |
