X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5e5437e00bb1e42d24060e6115d2e6a042c1a93f..f51a6f6a0c11f2d5ce58bcb858f5dfa1c27299a5:/src/common/imagjpeg.cpp?ds=sidebyside diff --git a/src/common/imagjpeg.cpp b/src/common/imagjpeg.cpp index 8d64962940..1e8457fc9b 100644 --- a/src/common/imagjpeg.cpp +++ b/src/common/imagjpeg.cpp @@ -20,7 +20,7 @@ #include "wx/defs.h" -#if wxUSE_LIBJPEG +#if wxUSE_IMAGE && wxUSE_LIBJPEG #include "wx/imagjpeg.h" #include "wx/bitmap.h" @@ -29,9 +29,6 @@ #include "wx/app.h" extern "C" { -#ifdef __WATCOMC__ - #define HAVE_BOOLEAN -#endif #include "jpeglib.h" } #include "wx/filefn.h" @@ -102,7 +99,7 @@ METHODDEF(void) my_skip_input_data ( j_decompress_ptr cinfo, long num_bytes ) { my_src_ptr src = (my_src_ptr) cinfo->src; - while (num_bytes > (long)src->pub.bytes_in_buffer) + while (num_bytes > (long)src->pub.bytes_in_buffer) { num_bytes -= (long) src->pub.bytes_in_buffer; src->pub.fill_input_buffer(cinfo); @@ -117,7 +114,7 @@ METHODDEF(void) my_term_source ( j_decompress_ptr cinfo ) my_src_ptr src = (my_src_ptr) cinfo->src; if (src->pub.bytes_in_buffer > 0) - src->stream->SeekI(-src->pub.bytes_in_buffer, wxFromCurrent); + src->stream->SeekI(-(long)src->pub.bytes_in_buffer, wxFromCurrent); delete[] src->buffer; } @@ -173,7 +170,11 @@ my_error_exit (j_common_ptr cinfo) longjmp(myerr->setjmp_buffer, 1); } - +// temporarily disable the warning C4611 (interaction between '_setjmp' and +// C++ object destruction is non-portable) - I don't see any dtors here +#ifdef __VISUALC__ + #pragma warning(disable:4611) +#endif /* VC++ */ bool wxJPEGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose, int WXUNUSED(index) ) { @@ -194,7 +195,7 @@ bool wxJPEGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbos /* If we get here, the JPEG code has signaled an error. * We need to clean up the JPEG object, close the input file, and return. */ - if (verbose) + if (verbose) wxLogError(_("JPEG: Couldn't load - file is probably corrupted.")); jpeg_destroy_decompress(&cinfo); if (image->Ok()) image->Destroy(); @@ -229,10 +230,6 @@ bool wxJPEGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbos return TRUE; } - - - - typedef struct { struct jpeg_destination_mgr pub; @@ -306,12 +303,12 @@ bool wxJPEGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbo if (!verbose) cinfo.err->output_message=NULL; /* Establish the setjmp return context for my_error_exit to use. */ - if (setjmp(jerr.setjmp_buffer)) + if (setjmp(jerr.setjmp_buffer)) { /* If we get here, the JPEG code has signaled an error. * We need to clean up the JPEG object, close the input file, and return. */ - if (verbose) + if (verbose) wxLogError(_("JPEG: Couldn't save image.")); jpeg_destroy_compress(&cinfo); return FALSE; @@ -349,12 +346,15 @@ bool wxJPEGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbo return TRUE; } +#ifdef __VISUALC__ + #pragma warning(default:4611) +#endif /* VC++ */ bool wxJPEGHandler::DoCanRead( wxInputStream& stream ) { unsigned char hdr[2]; - stream.Read(&hdr, 2); + stream.Read(hdr, 2); stream.SeekI(-2, wxFromCurrent); return (hdr[0] == 0xFF && hdr[1] == 0xD8); }