Merge remote-tracking branch 'origin/master' into 2.0
[dcpomatic.git] / src / lib / magick_image_proxy.cc
index 4adf8047f6ae8af8200375b21e79f5cd88ef461a..e5265187f57e3a67458d72a3a9f66e0133366f4b 100644 (file)
@@ -31,7 +31,9 @@
 #define LOG_TIMING(...) _log->microsecond_log (String::compose (__VA_ARGS__), Log::TYPE_TIMING);
 
 using std::string;
+using std::cout;
 using boost::shared_ptr;
+using boost::dynamic_pointer_cast;
 
 MagickImageProxy::MagickImageProxy (boost::filesystem::path path, shared_ptr<Log> log)
        : ImageProxy (log)
@@ -117,7 +119,7 @@ MagickImageProxy::image () const
        delete magick_image;
 
        LOG_TIMING ("[%1] MagickImageProxy completes decode and convert of %2 bytes", boost::this_thread::get_id(), _blob.length());
-
+       
        return _image;
 }
 
@@ -133,3 +135,18 @@ MagickImageProxy::send_binary (shared_ptr<Socket> socket) const
        socket->write (_blob.length ());
        socket->write ((uint8_t *) _blob.data (), _blob.length ());
 }
+
+bool
+MagickImageProxy::same (shared_ptr<const ImageProxy> other) const
+{
+       shared_ptr<const MagickImageProxy> mp = dynamic_pointer_cast<const MagickImageProxy> (other);
+       if (!mp) {
+               return false;
+       }
+
+       if (_blob.length() != mp->_blob.length()) {
+               return false;
+       }
+       
+       return memcmp (_blob.data(), mp->_blob.data(), _blob.length()) == 0;
+}