X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/479cd5de40ca8029c79e780170fa7c0af7ec0297..88594d02eb59a55ac85d3210a49d02918124617b:/src/common/imagpng.cpp?ds=sidebyside diff --git a/src/common/imagpng.cpp b/src/common/imagpng.cpp index f869ffedee..c8054c25e4 100644 --- a/src/common/imagpng.cpp +++ b/src/common/imagpng.cpp @@ -22,7 +22,7 @@ #include "wx/defs.h" #endif -#if wxUSE_LIBPNG +#if wxUSE_IMAGE && wxUSE_LIBPNG #include "wx/imagpng.h" #include "wx/bitmap.h" @@ -56,18 +56,16 @@ IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler) #if wxUSE_LIBPNG -#if defined(__VISAGECPP__) -#define LINKAGEMODE _Optlink -#else -#define LINKAGEMODE +#ifndef PNGLINKAGEMODE + #define PNGLINKAGEMODE LINKAGEMODE #endif -static void LINKAGEMODE _PNG_stream_reader( png_structp png_ptr, png_bytep data, png_size_t length ) +static void PNGLINKAGEMODE _PNG_stream_reader( png_structp png_ptr, png_bytep data, png_size_t length ) { ((wxInputStream*) png_get_io_ptr( png_ptr )) -> Read(data, length); } -static void LINKAGEMODE _PNG_stream_writer( png_structp png_ptr, png_bytep data, png_size_t length ) +static void PNGLINKAGEMODE _PNG_stream_writer( png_structp png_ptr, png_bytep data, png_size_t length ) { ((wxOutputStream*) png_get_io_ptr( png_ptr )) -> Write(data, length); } @@ -75,7 +73,7 @@ static void LINKAGEMODE _PNG_stream_writer( png_structp png_ptr, png_bytep data, // from pngerror.c // so that the libpng doesn't send anything on stderr void -LINKAGEMODE png_silent_error(png_structp png_ptr, png_const_charp WXUNUSED(message)) +PNGLINKAGEMODE png_silent_error(png_structp png_ptr, png_const_charp WXUNUSED(message)) { #ifdef USE_FAR_KEYWORD { @@ -89,10 +87,16 @@ LINKAGEMODE png_silent_error(png_structp png_ptr, png_const_charp WXUNUSED(messa } void -LINKAGEMODE png_silent_warning(png_structp WXUNUSED(png_ptr), png_const_charp WXUNUSED(message)) +PNGLINKAGEMODE png_silent_warning(png_structp WXUNUSED(png_ptr), png_const_charp WXUNUSED(message)) { } +// 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 wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose, int WXUNUSED(index) ) { // VZ: as this function uses setjmp() the only fool proof error handling @@ -267,7 +271,6 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose return FALSE; } - bool wxPNGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbose ) { { @@ -346,11 +349,15 @@ bool wxPNGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbos return TRUE; } +#ifdef __VISUALC__ + #pragma warning(default:4611) +#endif /* VC++ */ + bool wxPNGHandler::DoCanRead( wxInputStream& stream ) { unsigned char hdr[4]; - stream.Read(&hdr, 4); + stream.Read(hdr, 4); stream.SeekI(-4, wxFromCurrent); return (hdr[0] == 0x89 && hdr[1] == 'P' && hdr[2] == 'N' && hdr[3] == 'G'); }