X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/feabb2ebeb6a8daed74691fc23fc78f0da2a75b6..4521f6c88cbefa7f13e3733d344776b795f981e4:/src/gtk/bitmap.cpp?ds=sidebyside diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 1d8a6b5767..6ab6bcb628 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -2,7 +2,6 @@ // Name: src/gtk/bitmap.cpp // Purpose: // Author: Robert Roebling -// RCS-ID: $Id$ // Copyright: (c) 1998 Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -1048,39 +1047,54 @@ bool wxBitmap::SaveFile( const wxString &name, wxBitmapType type, const wxPalett { wxCHECK_MSG( IsOk(), false, wxT("invalid bitmap") ); -#if wxUSE_IMAGE - wxImage image = ConvertToImage(); - if (image.IsOk() && image.SaveFile(name, type)) - return true; -#endif const char* type_name = NULL; switch (type) { + case wxBITMAP_TYPE_ANI: type_name = "ani"; break; case wxBITMAP_TYPE_BMP: type_name = "bmp"; break; + case wxBITMAP_TYPE_GIF: type_name = "gif"; break; case wxBITMAP_TYPE_ICO: type_name = "ico"; break; case wxBITMAP_TYPE_JPEG: type_name = "jpeg"; break; + case wxBITMAP_TYPE_PCX: type_name = "pcx"; break; case wxBITMAP_TYPE_PNG: type_name = "png"; break; + case wxBITMAP_TYPE_PNM: type_name = "pnm"; break; + case wxBITMAP_TYPE_TGA: type_name = "tga"; break; + case wxBITMAP_TYPE_TIFF: type_name = "tiff"; break; + case wxBITMAP_TYPE_XBM: type_name = "xbm"; break; + case wxBITMAP_TYPE_XPM: type_name = "xpm"; break; default: break; } - return type_name && - gdk_pixbuf_save(GetPixbuf(), wxGTK_CONV_FN(name), type_name, NULL, NULL); + if (type_name && + gdk_pixbuf_save(GetPixbuf(), wxGTK_CONV_FN(name), type_name, NULL, NULL)) + { + return true; + } +#if wxUSE_IMAGE + return ConvertToImage().SaveFile(name, type); +#else + return false; +#endif } bool wxBitmap::LoadFile( const wxString &name, wxBitmapType type ) { + GdkPixbuf* pixbuf = gdk_pixbuf_new_from_file(wxGTK_CONV_FN(name), NULL); + if (pixbuf) + { + *this = wxBitmap(pixbuf); + return true; + } #if wxUSE_IMAGE wxImage image; if (image.LoadFile(name, type) && image.IsOk()) - *this = wxBitmap(image); - else -#endif { - wxUnusedVar(type); // The type is detected automatically by GDK. - - *this = wxBitmap(gdk_pixbuf_new_from_file(wxGTK_CONV_FN(name), NULL)); + *this = wxBitmap(image); + return true; } - - return IsOk(); +#else + wxUnusedVar(type); +#endif + return false; } #if wxUSE_PALETTE