diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-05-14 21:06:23 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-05-14 21:06:23 +0100 |
| commit | 317222764debbaf1ac96d256df24c00af85c1b6a (patch) | |
| tree | 6612f970141b3a40387e800655a8a736f074ee77 /src/lib/image_decoder.cc | |
| parent | 21e8238484af35ac207b01defe406e73445632be (diff) | |
Add ImageProxy class.
Diffstat (limited to 'src/lib/image_decoder.cc')
| -rw-r--r-- | src/lib/image_decoder.cc | 30 |
1 files changed, 2 insertions, 28 deletions
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); } |
