X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5ef37c79de6da80b8a91186312ce976a789f1a9e..4a45223c970eabf6ba66347129627775935c90b3:/src/common/imagpng.cpp diff --git a/src/common/imagpng.cpp b/src/common/imagpng.cpp index 3673027389..8272a0d383 100644 --- a/src/common/imagpng.cpp +++ b/src/common/imagpng.cpp @@ -7,10 +7,9 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -/* - We don't put pragma implement in this file because it is already present in - src/common/image.cpp -*/ +#ifdef __GNUG__ +#pragma implementation "imagpng.h" +#endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -25,7 +24,7 @@ #if wxUSE_LIBPNG -#include "wx/image.h" +#include "wx/imagpng.h" #include "wx/bitmap.h" #include "wx/debug.h" #include "wx/log.h" @@ -53,9 +52,7 @@ // wxPNGHandler //----------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler) -#endif #if wxUSE_LIBPNG @@ -96,6 +93,12 @@ LINKAGEMODE png_silent_warning(png_structp WXUNUSED(png_ptr), png_const_charp WX { } +// 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 @@ -144,18 +147,18 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose png_set_expand( png_ptr ); png_set_filler( png_ptr, 0xff, PNG_FILLER_AFTER ); - image->Create( width, height ); + image->Create( (int)width, (int)height ); if (!image->Ok()) goto error_nolines; - lines = (unsigned char **)malloc( height * sizeof(unsigned char *) ); + lines = (unsigned char **)malloc( (size_t)(height * sizeof(unsigned char *)) ); if (lines == NULL) goto error_nolines; for (i = 0; i < height; i++) { - if ((lines[i] = (unsigned char *)malloc(width * (sizeof(unsigned char) * 4))) == NULL) + if ((lines[i] = (unsigned char *)malloc( (size_t)(width * (sizeof(unsigned char) * 4)))) == NULL) { for ( unsigned int n = 0; n < i; n++ ) free( lines[n] ); @@ -270,7 +273,6 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose return FALSE; } - bool wxPNGHandler::SaveFile( wxImage *image, wxOutputStream& stream, bool verbose ) { { @@ -349,6 +351,10 @@ 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];