From 317222764debbaf1ac96d256df24c00af85c1b6a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Wed, 14 May 2014 21:06:23 +0100 Subject: Add ImageProxy class. --- src/lib/image_decoder.cc | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) (limited to 'src/lib/image_decoder.cc') diff --git a/src/lib/image_decoder.cc b/src/lib/image_decoder.cc index a7999c02a..d33b64cd4 100644 --- a/src/lib/image_decoder.cc +++ b/src/lib/image_decoder.cc @@ -23,6 +23,7 @@ #include "image_content.h" #include "image_decoder.h" #include "image.h" +#include "image_proxy.h" #include "film.h" #include "exceptions.h" @@ -52,34 +53,7 @@ ImageDecoder::pass () return; } - Magick::Image* magick_image = 0; - boost::filesystem::path const path = _image_content->path (_image_content->still() ? 0 : _video_position); - try { - magick_image = new Magick::Image (path.string ()); - } catch (...) { - throw OpenFileError (path); - } - - libdcp::Size size (magick_image->columns(), magick_image->rows()); - - _image.reset (new Image (PIX_FMT_RGB24, size, true)); - - using namespace MagickCore; - - uint8_t* p = _image->data()[0]; - for (int y = 0; y < size.height; ++y) { - uint8_t* q = p; - for (int x = 0; x < size.width; ++x) { - Magick::Color c = magick_image->pixelColor (x, y); - *q++ = c.redQuantum() * 255 / QuantumRange; - *q++ = c.greenQuantum() * 255 / QuantumRange; - *q++ = c.blueQuantum() * 255 / QuantumRange; - } - p += _image->stride()[0]; - } - - delete magick_image; - + _image.reset (new MagickImageProxy (_image_content->path (_image_content->still() ? 0 : _video_position))); video (_image, false, _video_position); } -- cgit v1.2.3