using boost::dynamic_pointer_cast;
MagickImageProxy::MagickImageProxy (boost::filesystem::path path)
+ : _path (path)
{
/* Read the file into a Blob */
/* If we failed both an auto-detect and a forced-Targa we give the error from
the auto-detect.
*/
- throw DecodeError (String::compose (_("Could not decode image file (%1)"), error));
+ if (_path) {
+ throw DecodeError (String::compose (_("Could not decode image file %1 (%2)"), _path->string(), error));
+ } else {
+ throw DecodeError (String::compose (_("Could not decode image file (%1)"), error));
+ }
}
unsigned char const * data = static_cast<unsigned char const *>(_blob.data());
private:
Magick::Blob _blob;
+ /** Path of a file that this image came from, if applicable; stored so that
+ failed-decode errors can give more detail.
+ */
+ boost::optional<boost::filesystem::path> _path;
mutable boost::shared_ptr<Image> _image;
mutable boost::mutex _mutex;
};