summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-07-23 14:39:54 +0100
committerCarl Hetherington <cth@carlh.net>2012-07-23 14:39:54 +0100
commit21b6c8b0b8b486a097bb9db41f9b02933b358f44 (patch)
treeb69a75bd37af0e6d82389b4b06fd76a2feef6de9 /src
parentd42ec544bf14dcd749287968b91ce0ae45515e48 (diff)
Try to improve path handling a bit, and add a few tests.
Diffstat (limited to 'src')
-rw-r--r--src/lib/film.cc14
-rw-r--r--src/lib/film_state.cc24
-rw-r--r--src/lib/film_state.h2
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;