IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler)
-#if wxUSE_LIBPNG
+#if wxUSE_STREAMS
#ifndef PNGLINKAGEMODE
- #define PNGLINKAGEMODE LINKAGEMODE
+ #ifdef __WATCOMC__
+ // we need an explicit cdecl for Watcom, at least according to
+ //
+ // http://sf.net/tracker/index.php?func=detail&aid=651492&group_id=9863&atid=109863
+ //
+ // more testing is needed for this however, please remove this comment
+ // if you can confirm that my fix works with Watcom 11
+ #define PNGLINKAGEMODE cdecl
+ #else
+ #define PNGLINKAGEMODE LINKAGEMODE
+ #endif
#endif
PNGLINKAGEMODE wx_png_error(png_structp png_ptr, png_const_charp message)
{
wxPNGInfoStruct *info = WX_PNG_INFO(png_ptr);
- if ( info->verbose )
- wxLogError(wxString(message));
+ if (info->verbose)
+ wxLogError( wxString::FromAscii(message) );
#ifdef USE_FAR_KEYWORD
{
PNGLINKAGEMODE wx_png_warning(png_structp png_ptr, png_const_charp message)
{
wxPNGInfoStruct *info = WX_PNG_INFO(png_ptr);
- if ( info->verbose )
- wxLogWarning(wxString(message));
+ if (info->verbose)
+ wxLogWarning( wxString::FromAscii(message) );
}
} // extern "C"
if (color_type == PNG_COLOR_TYPE_PALETTE)
png_set_expand( png_ptr );
+ // Fix for Bug [ 439207 ] Monochrome PNG images come up black
+ if (bit_depth < 8)
+ png_set_expand( png_ptr );
+
png_set_strip_16( png_ptr );
png_set_packing( png_ptr );
if (png_get_valid( png_ptr, info_ptr, PNG_INFO_tRNS))
if ( !stream.Read(hdr, WXSIZEOF(hdr)) )
return FALSE;
- stream.SeekI(-WXSIZEOF(hdr), wxFromCurrent);
-
return memcmp(hdr, "\211PNG", WXSIZEOF(hdr)) == 0;
}