#if wxUSE_IMAGE && wxUSE_LIBJPEG
#include "wx/imagjpeg.h"
+#include "wx/versioninfo.h"
#ifndef WX_PRECOMP
#include "wx/log.h"
// A hack based on one from tif_jpeg.c to overcome the problem on Windows
// of rpcndr.h defining boolean with a different type to the jpeg headers.
-//
+//
// This hack is only necessary for an external jpeg library, the builtin one
// usually used on Windows doesn't use the type boolean, so always works.
//
* We need to clean up the JPEG object, close the input file, and return.
*/
if (verbose)
+ {
wxLogError(_("JPEG: Couldn't load - file is probably corrupted."));
+ }
(cinfo.src->term_source)(&cinfo);
jpeg_destroy_decompress(&cinfo);
- if (image->Ok()) image->Destroy();
+ if (image->IsOk()) image->Destroy();
return false;
}
jpeg_start_decompress( &cinfo );
image->Create( cinfo.output_width, cinfo.output_height );
- if (!image->Ok()) {
+ if (!image->IsOk()) {
jpeg_finish_decompress( &cinfo );
jpeg_destroy_decompress( &cinfo );
return false;
image->SetOption(wxIMAGE_OPTION_RESOLUTIONUNIT, cinfo.density_unit);
}
+ if ( cinfo.image_width != cinfo.output_width || cinfo.image_height != cinfo.output_height )
+ {
+ // save the original image size
+ image->SetOption(wxIMAGE_OPTION_ORIGINAL_WIDTH, cinfo.image_width);
+ image->SetOption(wxIMAGE_OPTION_ORIGINAL_HEIGHT, cinfo.image_height);
+ }
+
jpeg_finish_decompress( &cinfo );
jpeg_destroy_decompress( &cinfo );
return true;
* We need to clean up the JPEG object, close the input file, and return.
*/
if (verbose)
+ {
wxLogError(_("JPEG: Couldn't save image."));
+ }
jpeg_destroy_compress(&cinfo);
return false;
}
{
unsigned char hdr[2];
- if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
+ if ( !stream.Read(hdr, WXSIZEOF(hdr)) ) // it's ok to modify the stream position here
return false;
return hdr[0] == 0xFF && hdr[1] == 0xD8;
#endif // wxUSE_STREAMS
+/*static*/ wxVersionInfo wxJPEGHandler::GetLibraryVersionInfo()
+{
+ return wxVersionInfo("libjpeg", JPEG_LIB_VERSION/10, JPEG_LIB_VERSION%10);
+}
+
#endif // wxUSE_LIBJPEG