]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/imagpng.cpp
Added glcanvas.cpp, tooltip.cpp, taskbar.cpp, wave.cpp to wxUniv/MSW
[wxWidgets.git] / src / common / imagpng.cpp
index b1fea3c1fef766158cb0cdeb0d153db1d0dbb2d8..45dd9c46cae2666347ead63a522522a116725d6e 100644 (file)
@@ -57,7 +57,17 @@ IMPLEMENT_DYNAMIC_CLASS(wxPNGHandler,wxImageHandler)
 #if wxUSE_LIBPNG
 
 #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
 
 
@@ -111,8 +121,8 @@ void
 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
     {
@@ -129,8 +139,8 @@ void
 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"
@@ -188,6 +198,10 @@ bool wxPNGHandler::LoadFile( wxImage *image, wxInputStream& stream, bool verbose
     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))