From b75dd496d2f18fd01b4f889115bd8dec29d13a74 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Wed, 17 Nov 1999 22:33:52 +0000 Subject: [PATCH] wxBitmap::LoadFile and SaveFile now uses wxImage's methods in case there is no wxBitmap handler for given type git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/bitmap.tex | 18 +++++++++++++++--- src/gtk/bitmap.cpp | 15 ++++----------- src/gtk1/bitmap.cpp | 15 ++++----------- src/motif/bitmap.cpp | 20 +++++++++++++------- src/msw/bitmap.cpp | 20 +++++++++++++------- 5 files changed, 49 insertions(+), 39 deletions(-) diff --git a/docs/latex/wx/bitmap.tex b/docs/latex/wx/bitmap.tex index eb20bd2cef..91ff93aba1 100644 --- a/docs/latex/wx/bitmap.tex +++ b/docs/latex/wx/bitmap.tex @@ -96,7 +96,11 @@ Its meaning is determined by the {\it type} parameter.} The validity of these flags depends on the platform and wxWindows configuration. If all possible wxWindows settings are used, the Windows platform supports BMP file, BMP resource, XPM data, and XPM. Under wxGTK, the available formats are BMP file, XPM data, XPM file, and PNG file. -Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file.} +Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file. + +In addition, wxBitmap can read all formats that \helpref{wxImage}{wximage} can +(wxBITMAP\_TYPE\_JPEG, wxBITMAP\_TYPE\_PNG, wxBITMAP\_TYPE\_GIF, wxBITMAP\_TYPE\_PCX, wxBITMAP\_TYPE\_PNM). +(Of course you must have wxImage handlers loaded.) } \wxheading{Remarks} @@ -356,7 +360,11 @@ The meaning of {\it name} is determined by the {\it type} parameter.} \twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Load an XPM bitmap file.} \end{twocollist} -The validity of these flags depends on the platform and wxWindows configuration.} +The validity of these flags depends on the platform and wxWindows configuration. + +In addition, wxBitmap can read all formats that \helpref{wxImage}{wximage} can +(wxBITMAP\_TYPE\_JPEG, wxBITMAP\_TYPE\_PNG, wxBITMAP\_TYPE\_GIF, wxBITMAP\_TYPE\_PCX, wxBITMAP\_TYPE\_PNM). +(Of course you must have wxImage handlers loaded.) } \wxheading{Return value} @@ -415,7 +423,11 @@ Saves a bitmap in the named file. \twocolitem{{\bf wxBITMAP\_TYPE\_XPM}}{Save an XPM bitmap file.} \end{twocollist} -The validity of these flags depends on the platform and wxWindows configuration.} +The validity of these flags depends on the platform and wxWindows configuration. + +In addition, wxBitmap can save all formats that \helpref{wxImage}{wximage} can +(wxBITMAP\_TYPE\_JPEG, wxBITMAP\_TYPE\_PNG). +(Of course you must have wxImage handlers loaded.) } \docparam{palette}{An optional palette used for saving the bitmap.} % TODO: this parameter should diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 0918af1707..33b1a1f286 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -332,7 +332,7 @@ bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(pal { wxCHECK_MSG( Ok(), FALSE, wxT("invalid bitmap") ); - if (type == wxBITMAP_TYPE_PNG) + // Try to save the bitmap via wxImage handlers: { wxImage image( *this ); if (image.Ok()) return image.SaveFile( name, type ); @@ -365,20 +365,13 @@ bool wxBitmap::LoadFile( const wxString &name, int type ) gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; } - else if (type == wxBITMAP_TYPE_PNG) + else // try if wxImage can load it { wxImage image; - image.LoadFile( name, type ); + if (!image.LoadFile( name, type )) return FALSE; if (image.Ok()) *this = image.ConvertToBitmap(); + else return FALSE; } - else if (type == wxBITMAP_TYPE_BMP) - { - wxImage image; - image.LoadFile( name, type ); - if (image.Ok()) *this = image.ConvertToBitmap(); - } - else - return FALSE; return TRUE; } diff --git a/src/gtk1/bitmap.cpp b/src/gtk1/bitmap.cpp index 0918af1707..33b1a1f286 100644 --- a/src/gtk1/bitmap.cpp +++ b/src/gtk1/bitmap.cpp @@ -332,7 +332,7 @@ bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(pal { wxCHECK_MSG( Ok(), FALSE, wxT("invalid bitmap") ); - if (type == wxBITMAP_TYPE_PNG) + // Try to save the bitmap via wxImage handlers: { wxImage image( *this ); if (image.Ok()) return image.SaveFile( name, type ); @@ -365,20 +365,13 @@ bool wxBitmap::LoadFile( const wxString &name, int type ) gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) ); M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth; } - else if (type == wxBITMAP_TYPE_PNG) + else // try if wxImage can load it { wxImage image; - image.LoadFile( name, type ); + if (!image.LoadFile( name, type )) return FALSE; if (image.Ok()) *this = image.ConvertToBitmap(); + else return FALSE; } - else if (type == wxBITMAP_TYPE_BMP) - { - wxImage image; - image.LoadFile( name, type ); - if (image.Ok()) *this = image.ConvertToBitmap(); - } - else - return FALSE; return TRUE; } diff --git a/src/motif/bitmap.cpp b/src/motif/bitmap.cpp index 58bc1cc259..45f0cf6d0f 100644 --- a/src/motif/bitmap.cpp +++ b/src/motif/bitmap.cpp @@ -21,6 +21,7 @@ #include "wx/log.h" #include "wx/control.h" #include "wx/dcmemory.h" +#include "wx/image.h" #include @@ -197,9 +198,14 @@ bool wxBitmap::LoadFile(const wxString& filename, long type) wxBitmapHandler *handler = FindHandler(type); if ( handler == NULL ) { - wxLogWarning("%s: no bitmap handler for type %d defined.", (const char*) filename, type); - - return FALSE; + wxImage image; + if (!image.LoadFile( filename, type )) return FALSE; + if (image.Ok()) + { + *this = image.ConvertToBitmap(); + return TRUE; + } + else return FALSE; } return handler->LoadFile(this, filename, type, -1, -1); @@ -226,10 +232,10 @@ bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *pal { wxBitmapHandler *handler = FindHandler(type); - if ( handler == NULL ) { - wxLogWarning("no bitmap handler for type %d defined.", type); - - return FALSE; + if ( handler == NULL ) { // try wxImage + wxImage image( *this ); + if (image.Ok()) return image.SaveFile( filename, type ); + else return FALSE; } return handler->SaveFile(this, filename, type, palette); diff --git a/src/msw/bitmap.cpp b/src/msw/bitmap.cpp index 6cd926cc5f..ab37c081e3 100644 --- a/src/msw/bitmap.cpp +++ b/src/msw/bitmap.cpp @@ -44,6 +44,7 @@ #include "wx/log.h" #include "wx/msw/dib.h" +#include "wx/image.h" // ---------------------------------------------------------------------------- // macros @@ -278,9 +279,14 @@ bool wxBitmap::LoadFile(const wxString& filename, long type) wxBitmapHandler *handler = FindHandler(type); if ( handler == NULL ) { - wxLogWarning(wxT("no bitmap handler for type %d defined."), type); - - return FALSE; + wxImage image; + if (!image.LoadFile( filename, type )) return FALSE; + if (image.Ok()) + { + *this = image.ConvertToBitmap(); + return TRUE; + } + else return FALSE; } return handler->LoadFile(this, filename, type, -1, -1); @@ -307,10 +313,10 @@ bool wxBitmap::SaveFile(const wxString& filename, int type, const wxPalette *pal { wxBitmapHandler *handler = FindHandler(type); - if ( handler == NULL ) { - wxLogWarning(wxT("no bitmap handler for type %d defined."), type); - - return FALSE; + if ( handler == NULL ) { // try wxImage + wxImage image( *this ); + if (image.Ok()) return image.SaveFile( filename, type ); + else return FALSE; } return handler->SaveFile(this, filename, type, palette); -- 2.45.2