#include "wx/defs.h"
-#if wxUSE_LIBJPEG
+#if wxUSE_IMAGE && wxUSE_LIBJPEG
#include "wx/imagjpeg.h"
#include "wx/bitmap.h"
#include "wx/app.h"
extern "C"
{
-#ifdef __WATCOMC__
- #define HAVE_BOOLEAN
-#endif
#include "jpeglib.h"
}
#include "wx/filefn.h"
{
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);
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;
}
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) )
{
/* 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();
return TRUE;
}
-
-
-
-
typedef struct {
struct jpeg_destination_mgr pub;
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;
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);
}