Hand-apply 2ee558ec90623b570360e8e55c918b5bb37f9aac from master; various snapping...
[dcpomatic.git] / src / lib / image_content.cc
index b8d2a6921c3df204e161a07835273b50a913c8fd..a9cb148c2447920a1db51a8964937fc12d8cffa0 100644 (file)
@@ -29,6 +29,8 @@
 
 #include "i18n.h"
 
+#include "image_filename_sorter.cc"
+
 using std::string;
 using std::cout;
 using boost::shared_ptr;
@@ -37,12 +39,19 @@ ImageContent::ImageContent (shared_ptr<const Film> f, boost::filesystem::path p)
        : Content (f)
        , VideoContent (f)
 {
+       bool have_j2k = false;
        if (boost::filesystem::is_regular_file (p)) {
                _paths.push_back (p);
+               if (valid_j2k_file (p)) {
+                       have_j2k = true;
+               }
        } else {
                for (boost::filesystem::directory_iterator i(p); i != boost::filesystem::directory_iterator(); ++i) {
                        if (boost::filesystem::is_regular_file (i->path()) && valid_image_file (i->path())) {
                                _paths.push_back (i->path ());
+                               if (valid_j2k_file (i->path ())) {
+                                       have_j2k = true;
+                               }
                        }
                }
 
@@ -50,7 +59,12 @@ ImageContent::ImageContent (shared_ptr<const Film> f, boost::filesystem::path p)
                        throw FileError (_("No valid image files were found in the folder."), p);
                }
                                
-               sort (_paths.begin(), _paths.end());
+               sort (_paths.begin(), _paths.end(), ImageFilenameSorter ());
+       }
+
+       if (have_j2k) {
+               /* We default to no colour conversion if we have JPEG2000 files */
+               unset_colour_conversion (false);
        }
 }
 
@@ -100,9 +114,9 @@ ImageContent::as_xml (xmlpp::Node* node) const
 }
 
 void
-ImageContent::examine (shared_ptr<Job> job, bool calculate_digest)
+ImageContent::examine (shared_ptr<Job> job)
 {
-       Content::examine (job, calculate_digest);
+       Content::examine (job);
 
        shared_ptr<const Film> film = _film.lock ();
        DCPOMATIC_ASSERT (film);